Prepares the 0.1.13 release and fixes the defects found while verifying its claims. The pieces interlock — the documented counts are the code's surface — so they land together rather than as commits that fail their own tests. Code: - attribution and impact carried no __all__, and quantlib_call dispatches on __all__ alone, so the tool listed ZERO functions for both while the package docstring advertised them. Both now export; exposed callables 184 -> 195. - Six read-only analytics tools reach MCP for the first time (64 -> 70): quantlib_call, cashflow_performance, orderbook_depth, sentiment, technical_indicators, get_fundamentals. They use the existing mirrored path, which refuses any class whose is_readonly is not True, so order-placing tools remain structurally unreachable over MCP. Tests that measured a proxy instead of the truth: - The manifest tool count was derived from @mcp.tool decorators, which ignores every mirrored tool. Four institutional-research tools were live over MCP and absent from the published SKILL.md, and the contract test asserted that absence was correct. Both now measure mcp.list_tools(). - test_every_allowlisted_module_actually_imports only asserted ok is True, which can never catch an empty listing. A new guard fails when any allowlisted module exposes no callables; removing an __all__ names exactly the two offenders. - The README count tests only proved the five files agreed with each other and with a pinned constant, so a uniform error was invisible — that is how the broker count sat at 12 after eToro shipped as the 13th. The pin is now anchored to the profile registry, every connector must appear in the table, and the quantlib export count joins the verified badges. Docs, corrected against measurement rather than the previous text: - merged PRs since 0.1.12: 42 -> 162 (42 counted merge commits only; squash merges leave none) - auto-discovered agent tools in the project tree: 68 -> 94 - broker connectors: 12 -> 13, with eToro added to the table in all five READMEs - quantlib: 249 across 17 modules -> 265 across 19, now exactly the allowlist - SKILL.md: skills 88 -> 89, MCP tools 60 -> 70, python ">=3.11" -> ">=3.11,<3.14" to match pyproject - zh/ja/ko/ar gain the eToro connector section and the CONTENT_FILTER_WARNING_THRESHOLD row that only English carried - v0.1.13 news entry and contributor credits across all five READMEs Full suite 10147 passed / 54 skipped / 0 failed (baseline on a clean tree was 10140 / 54 / 0; the +7 are the new guards). CI grep gates pass.
222 KiB
English | 中文 | 日本語 | 한국어 | العربية
Vibe-Trading: 당신의 개인 트레이딩 에이전트
한 번의 명령으로 에이전트에 종합적인 트레이딩 역량을 더하세요
웹사이트 · 문서 · 뉴스 · 기능 · 섀도우 계정 · 데모 · 빠른 시작 · 예제 · API / MCP · 로드맵 · 기여하기
📰 뉴스
⚠️ 보안 경고: X 계정
VibeTrading_HKU, Virtuals 프로젝트101845, 토큰 컨트랙트0x640BDBF77b6447E8b7DB7894cED84BD1c40571f4는 모두 Vibe-Trading 공식과 무관합니다. Vibe-Trading은 어떠한 토큰이나 밈코인도 발행하거나 공식적으로 지지한 적이 없습니다. 해당 토큰을 구매하거나 지갑을 연결하거나 어떠한 서명도 하지 마세요. 자세히 보기.
- 2026-08-10 🚀 v0.1.13 릴리스(릴리스 노트,
pip install -U vibe-trading-ai): 0.1.12 이후 408개 커밋, 162개 병합 PR로 지금까지 가장 큰 릴리스입니다. 주인공은 새 기능이 아니라 수정입니다: identity 게이트가 이미 증거를 확보한 답변을 더 이상 거부하지 않습니다. 이전에는 형식이 온전한 질문도 실제 도구 호출에 몇 분을 쓴 뒤 *"종목 동일성 또는 가격 근거를 안전하게 확인할 수 없습니다"*를 반환했습니다. 원인은.SS와.SH를 서로 다른 종목으로 취급해 모든 상하이 티커가 영구적으로 ambiguous였던 점, 실패한 보조 조회가 이미 잠긴 identity를 강등시킬 수 있었던 점, 모든 CJK 질의에 대한 Yahoo의 HTTP 400을 "여기에 상장되지 않음"이 아니라 데이터 소스 실패로 기록한 점, 도구별 하드코딩 허용 목록이 문서화된 17가지 인자 표기 중 11가지를 막은 점, 한중일 답변이 ASCII 로더 이름 대신雅虎·元을 썼다는 이유로 거부된 점, 그리고 천 단위 구분자가¥1,309.22를 잘라1이 관측 구간과 비교된 점입니다. 개념적 질문과 비교 리포트도 더 이상 막다른 길에 빠지지 않습니다. 기록된 OHLC 근거를 벗어난 호가는 여전히 거부됩니다. 신규:src/quantlib— 17개 모듈 249개 테스트된 함수(옵션, 채권, 신용, 계량경제, VaR/CVaR/EVT, 성과요인 분해, 이벤트 스터디, purged CV)를 읽기 전용quantlib_call로 CLI·Web UI·REST API·MCP에서 호출할 수 있어, skill이 markdown에 수식을 품는 대신 import합니다. 밸류에이션 엔진(run_dcf/run_comps/ 3-표 연동)의 유일한 규칙은 입력이 빠지면 조용히 기본값을 채우는 대신 모델을 실행 불가로 만든다는 것입니다. 엔티티 + 불규칙 현금흐름 축(XIRR / MOIC / DPI / TVPI,cashflow_performance를 통한 TWR / Modified Dietz)은 바 엔진과 의도적으로 평행하게 유지됩니다. 모든 실행에 거버넌스가 들어갔습니다 — 프롬프트·skill·도구 레지스트리·패키지 버전에 대한 해시 manifest와, 자기 해시를 다시 계산한 수정조차 다음 레코드에서 잡히는 해시 체인 + fsync 감사 원장입니다. 무료 공개 소스 기반 읽기 전용 데이터 도구 4종(분기 대비 포지션 차이를 담은 SEC 13F, CSI300 추종 ETF가 분기 상위 10개가 아니라 순자산의 98.66%에 해당하는 342개 종목으로 해석되는 ETF 룩스루, 라벨이 붙은 내재확률로 제공되는 예측시장, 출처에 고정된 주장만 뽑는 arXiv/OpenAlex)도 추가됐습니다. 여기에 6개 기관 리서치 커맨드(/comps/dcf/attrib/memo/earnings/screen), 독립 skill이 된 investor lenses, 바로 예약 가능한 리서치 playbook 5종, 체크섬 고정 Windows 패키징과safeStorage를 갖춘 데스크톱 Electron 셸, 13번째 브로커 커넥터 eToro, 9번째 백테스트 엔진 한국(KRX), OpenBB Workspace 브리지, 캐나다 주식 엔드투엔드 지원, 그리고sentiment·technical_indicators·options_payoff·orderbook_depth·ModelScope·vibe-trading update가 포함됩니다. 정확성: SEC 보고 기간을(start, end)구간으로 식별합니다 — 연간 조회가 단일 분기를 반환해 4.2배 과소평가였습니다. tushare A주 가격은 수정주가로 바뀌었고, 배당락을 가로지르는 원시 수익률은 최대 47%p 어긋났습니다.bar_returns는 거래정지를 0% 변동으로 기록하지 않으며, 연율화는 24개 데이터 소스를 모두 포괄합니다. 생성된 코드가 브로커 계층을 import하거나 이름을 바꾼 바인딩으로socket/subprocess에 닿을 수 있던 샌드박스 구멍도 막았습니다. 통화가 섞인 크로스마켓 컴포지트 백테스트는 하나의 자산곡선으로 합산하지 않고 거부합니다. @santhreal, @shadowinlife, @Robin1987China, @he-yufeng, @QCYTSN, @Shizoqua, @honginp, @cgycorey, @wiliao, @ngoanpv, @x-lambda, @ofeksh-tr, @00EVA, @zwrong, @yrk111222, @su322, @hhj123123, @dineeshd, @sambazhu, @ddy4633, @tyj147454413-cmd, @y85998607, @JungHoonGhae, @shugaoye, @TSENGCHIENFENG, @darkknight4563, @MuggleJinx, @klmtseng, @ebujinovch, @g0rdonL, @AmirF194, @Echoandelementwebsites, @yagnikpipaliya, @dvirarad, @1anter 님께 감사드립니다. - 2026-08-09 🪟 안전한 Windows 패키징, 캐나다 시장, ModelScope, MCP의 Alpha Zoo: Windows 데스크톱 패키징은 checksum으로 고정한 임베디드 Python 3.12 runtime과 x64 NSIS review/signing 경로를 조립하고, 허용 목록의 credential을 Electron
safeStorage에 보관합니다. renderer는 비밀값을 설정하거나 지울 수 있지만 읽을 수 없고, 평문 설정은 한 번만 이전되며, 복호화 값은 소유 backend에만 전달됩니다. 서명되지 않은 review build와 서명 build는 잘못된 서명 상태에서 fail closed하고, 이 PR에서는 installer artifact를 배포하지 않았습니다(#1015). 캐나다 주식은 이제 end-to-end로 동작합니다..TO/.Vsymbol을 CAD로 분류하고 Yahoo → yfinance → local fallback으로 가져오며, 캐나다 전용 GlobalEquity rule로 체결하고XIC.TO를 benchmark로 사용하며, 혼합 통화 합산을 거부합니다. strict USD-M 과거 backtest도position_adjustment=rebalance를 opt-in해 증감 포지션 전반에서 collateral, funding, fee, 실현 P&L, 청산 동작, 불변 체결 증거를 일관되게 유지합니다(#1024, #1019, #952 종료). ModelScope는 공식 OpenAI-compatible hosted-inference endpoint를 통해 내장 provider에 합류하고 기본값은Qwen/Qwen3.5-27B입니다(#1011). 새vibe-trading update는 wheel install과 editable/source checkout을 구분하고, 확인한 정확한 release를 설치한 뒤 새 process의 metadata로 검증하며 downgrade하지 않습니다(#1020).alpha_zoo와 제한된alpha_bench도 MCP(총 64 tools)에 노출되어 기간·결과 수·출력 경로를 제한하고 report를 안전하게 생성합니다(#979). 검증된 Python/frontend lock 갱신으로 grouped dependencies,postcss,akshare도 업데이트했습니다(#1021, #1023, #1026, #1027). 기여해 주신 @QCYTSN, @wiliao, @honginp, @yrk111222, @zwrong, @cgycorey에게 감사드립니다. - 2026-08-08 🧱 데스크톱 셸, eToro, 원자적 리밸런싱, 신뢰성 강화: 소스 기반 Electron 호스트가 기존 백엔드 수명주기를 관리하며 무작위 loopback 포트, 실행별 비밀값, 5개 언어의 시작 복구, 소유 프로세스 정리를 제공합니다. eToro는 demo/real 경로가 분리된 커넥터로 합류하고, 실계좌에서 위험을 늘리는 작업은 계속 mandate와 감사 게이트를 통과하며, API 기능 엔드포인트에는 인증과 CSP가 적용됩니다(#923, #989, #961). 백테스트에는 불변 체결 증거를 남기는 opt-in 동일 방향 원자적 리밸런싱이 추가됐습니다. Shadow는 임의의 FX 합산 없이 결제 통화별로 시장을 나누고 설정된 runtime root를 따르며, 지표는 샘플링하지 않은 연속 이력을 사용하고, 음수 equity의 drawdown과 포지션 없이 파산한 cross account의 청산 경계도 바로잡았습니다(#951, #997, #1017, #1005, #958, #959). OpenAI Codex OAuth는 독립된 동기화 credential store와 1회 401 복구를 사용하고, proxy 비활성화는 동기·비동기 client 모두에 적용됩니다. sandbox run은 정규 run root를 유지하고, 예약 리서치는 손상 record를 격리하며 interval timezone 검증을 수정했고, 소문자
4h요청은 실제 4시간 봉을 반환합니다(#1014, #995, #1012, #1003, #1004, #1013). QQ 답장은 원본 message ID를 유지하고, 긴 model slug는 온전히 읽히며, agent는 증거가 충분하면 조사를 멈춥니다(#1008, #1006, #1010). 기여해 주신 @QCYTSN, @Shizoqua, @ngoanpv, @hhj123123, @su322, @Robin1987China, @shadowinlife, @dineeshd, @honginp, @santhreal, @00EVA, @x-lambda, @ofeksh-tr에게 감사드립니다.
이전 뉴스
-
2026-08-07 🛡️ 오탐 거부 감소, 샌드박스 구멍 차단, QVeris의 MCP 노출: 그라운딩 게이트가 애초에 가격이 아닌 숫자 때문에 형식이 온전한 답변을 거부하지 않습니다 — 확신도 점수, 지표 값, 이동평균 기간,
8/5같은 연도 없는 날짜, 백분율 구간, 그리고 매매 계획 자체의 트리거 수준(종가 ≥6.45는 조건이지 호가가 아닙니다). 반면 기록된 OHLC 증거를 벗어난 호가는 여전히 거부되며,08-05로 적힌 가격표도 이제 자신의 증거와 매칭됩니다(#1001, #983). 샌드박스: 생성된 전략 코드는 브로커 계층을 import할 수 없고, 이름을 바꾼 바인딩으로socket/subprocess/os.system/ctypes에 도달할 수도 없습니다. 둘 다 이전에는 통과했습니다. 전략이 써야 할src.quantlib는 그대로 import됩니다. QVeris discovery/inspect/execute가 MCP 표면에 합류했고(62개 도구), 비용 견적은 호출자의 신고가 아니라 마켓플레이스에서 조회합니다(#976, closes #964, thanks @shadowinlife). 그 밖에 홍콩 시세 폴백 라우팅 수정과 Tencent 홍콩 소스 추가, yfinance 암호화폐를 크립토 엔진으로 라우팅, 메모리 항목의 기록과 복구에.md확장자 부여, MCP의 list/dict 인자가 JSON 문자열 클라이언트를 허용, 실행 상세에 Portfolio Studio 산출물 표시(#1000, #970, #984, #993, #980, #982, #966, #973, thanks @he-yufeng, @ngoanpv, @sambazhu). -
2026-08-06 🧮 테스트된 금융수학 레이어 + 밸류에이션 엔진 + 비정기 현금흐름 + 연결된 거버넌스:
src/quantlib는 skills의 markdown에 흩어져 있던 수식을 각각 하나의 테스트된 구현으로 교체했습니다 — 옵션, 채권, 크레딧, 계량경제, VaR/CVaR/EVT, 성과 요인분석, 이벤트 스터디, 다중검정 제어, purged 교차검증 — 약 250개 함수를 새 읽기 전용 도구quantlib_call을 통해 CLI·Web UI·REST API·MCP에서 모두 사용할 수 있습니다. 밸류에이션 엔진(run_dcf/run_comps/3대 재무제표 연동)은 입력이 빠지면 기본값으로 채우는 대신 실행 불가로 판정합니다. 새 엔티티 + 현금흐름 기반은 NAV, 캐피털 콜, 쿠폰을 받아들이며(cashflow_performance가 XIRR/MOIC/DPI/TVPI와 TWR/Modified Dietz를,orderbook_depth가 암호화폐 L2 임팩트 비용을 제공), 매 실행은 해시 manifest를 기록하고 감사 원장은 해시 체인으로 변조를 탐지합니다. 30개 swarm 프리셋 전부를 도구가 실제 계산할 수 있는 범위와 대조해 재점검했고, 계산할 수 없는 산출물은 숫자를 지어내는 대신 그 사실을 명시합니다. -
2026-08-05 🔭 기관 보유, ETF 룩스루, 예측 시장, 논문 검색: 무료 공개 데이터만 쓰는 읽기 전용 도구 4개 — SEC 13F 보유(분기 대비 증감 포함), 시장을 가로지르는 ETF 구성종목(CSI300 추종 ETF는 분기 공시 상위 10개가 아니라 342개 종목·순자산의 98.7%를 반환), 이벤트 계약을 단위가 표시된 내재확률로 제공, arXiv/OpenAlex 검색은 원문에 없는 값을 추론하지 않고 출처에 없음으로 표시합니다. 여기에 예약 리서치 템플릿 5개, 기관 리서치 명령 6개(
/comps/dcf/attrib/memo/earnings/screen), 독립 skill이 된 investor lenses, 그리고 모든 숫자를 만들어낸 도구까지 추적하는 agent core가 더해집니다. -
2026-08-04 🔧 정확성 수정: 펀더멘털, A주 가격, 과대한 도구 결과: SEC 보고 기간을 이제
(start, end)구간으로 식별합니다. 10-Q는 동일한 종료일과 동일한 회계 분기 아래에 실제 분기와 연초 이후 프레임을 함께 제출하므로,period="annual"은 AAPL FY2018~2020에 대해 단일 분기를 반환했고(4.2배 과소 계상), 분기 시계열의 회계 4분기 자리에는 모두 연간 수치가 들어 있었습니다.get_fundamentals("AAPL.US")도 더 이상ok:true와 전부 null인 패널을 반환하지 않습니다. Tushare A주 가격은 팩터 벤치와 백테스트 양쪽에서 기업 행위 조정이 적용되며(배당락일을 가로지르는 원시 종가 수익률은 최대 47%p 어긋났습니다. 300750.SZ, 2023-04-26), CSI300 벤치는 각 날짜를 그 시점의 지수 구성 종목으로 마스킹합니다. 교차 시장 컴포지트 백테스트는 CNY, USD, KRW를 하나의 자산 곡선에 합산하는 대신 통화가 섞인 종목 집합을 거부합니다. 옵션 레그는 진입 시점의 변동성으로 평가되어 프리미엄 대비 최대 +93%에 이르던 첫날 허위 손익이 사라졌습니다. 과대한 도구 결과는 JSON 중간에서 잘리는 대신 총 개수를 명시하며 레코드 단위로 페이징됩니다.calc_metrics는 추적 오차와 벤치마크 베타를 보고합니다. -
2026-08-03 ⏰ 타임존 인식 예약 리서치 + 종목 스크리닝 교착 해소: 예약 작업에 선택적 IANA
timezone을 지정할 수 있고 cron이 해당 존의 벽시계 기준으로 평가되므로 서머타임 전환에도 주기가 유지됩니다. 봄철 건너뛰는 시각은 생략되고 가을철 중복되는 시각은 첫 번째 발생에만 실행됩니다. cron 필드는 쉼표 목록과 범위(1,3-5)를 지원하며, 타임존이 없는 작업은 기존 UTC 의미를 유지하고, 웹 UI에는 5개 언어를 갖춘 Scheduled 페이지가 추가되었습니다(이전에는 프런트엔드에 예약 화면이 전혀 없었습니다) (#954, closes #953, @ngoanpv에게 감사). 스크리닝 요청이 더 이상 막다른 길로 가지 않습니다. 후보가 여럿인 1차 선별 결과는 미해결 상태가 아니라 답변으로 취급되고, 개별 종목이 확정되면 역할을 마칩니다. 가격 검증은 종목 코드 숫자, 현지화된 날짜, 주식 수, 포지션 원가를 호가로 읽지 않지만, 기록된 OHLC 범위를 벗어난 호가는 여전히 거부합니다 (closes #955). 에이전트 메모리의 인덱스 앵커 정확 일치와 결과 상한 처리도 함께 수정되었습니다 (#956, #957, @santhreal에게 감사). -
2026-08-02 🧠 실시간 모델 탐색, 정확한 런타임 신원, 검증된 의존성 갱신: Settings에서 설정된 provider별 모델을 필요할 때 탐색하고 안정적인 경고 코드와 5개 언어 UI로 표시합니다. 각 답변에는 실제 요청을 처리한 provider/model/reasoning 신원이 불변 스냅샷으로 기록·복원되며, 세션 전환 시 안전하게 초기화됩니다 (#924, @QCYTSN에게 감사). hash-lock된 Python 의존성 9개와
jsdom/postcss도 갱신했고, 정확한 버전 import, 집중 테스트 330개, 프로덕션 빌드, 프런트엔드 테스트 373개,main전체 CI, Dependency Graph가 통과했습니다 (#949, #948). 호환성이 깨지는 MCP 2.0은 전체 lock/runtime 마이그레이션이 준비될 때까지 병합하지 않았습니다 (#950). -
2026-08-01 🧮 옵션 전략 분석 + 시장 심리 + 감사 가능한 USD-M 리서치: 새 옵션 손익 워크플로는 만기 손익 극값, 연속 손익 0 구간을 포함한 정확한 손익분기점, 기존 엔진과 일치하는 진입 수수료, 현물 가격 × IV 시나리오를 해석적으로 계산하며 Agent와 MCP에서 사용할 수 있습니다(#946, #883에서 깨끗한 이력으로 재구현, thanks @he-yufeng). 읽기 전용
sentiment도구는 임의의 텍스트를 로컬에서 점수화하고 API 키 없이 암호화폐 Fear & Greed Index를 가져옵니다(#939, thanks @Robin1987China). 엄격한 USD-M 백테스트는 체결, 펀딩, 리스크, 청산 이벤트를 순서대로 영속화하고 충실도 요약을 생성하며, 100× 엄격 모드에서 지원하지 않는 시간 간격은 거부합니다(#936, thanks @honginp). 신뢰성 개선으로 심볼과 거래소를 먼저 확인한 뒤 시장 데이터를 호출하고, 최종 제시 가격을 기록된 OHLC 근거와 대조합니다. 예약 리서치는 일시적 실패를 재시도하며 중첩된 MCP 결과도 안정적으로 직렬화됩니다. -
2026-07-31 🔧 USD-M 청산 생명주기 + 기술적 지표 도구 + 상태 디렉터리의 사용자 루트 이전: 옵트인
perpetual_strict모드가 체결 전에 과거 펀딩비를 정산하고 격리/교차 증거금 위반을 실제 청산으로 실행합니다(#903, thanks @honginp). 읽기 전용technical_indicators도구가 기존 로더를 통해 RSI/MACD/볼린저/SMA/EMA를 계산합니다(#921, #920 참조, thanks @Robin1987China). 세션, 실행 산출물, 스웜 실행, 업로드가~/.vibe-trading아래로 통합되고(VIBE_TRADING_HOME으로 재배치 가능) 첫 실행 시 자동 마이그레이션됩니다(#925, #904 종료, thanks @MuggleJinx). 여기에 10건의 정합성 수정 — Yahoo.SS를 A주로 분류, 접두/접미 형식 A주 코드, 슬래시 구분 암호화폐 페어,nan/inf가드 등(#919, #926–#935, thanks @santhreal). -
2026-07-30 🎨 새로워진 WebUI + 한국(KRX) 시장 + OpenBB Workspace 브리지: 웹 UI의 guided-minimalism 개편이 반영됐습니다 — 첫 프레임 깜빡임 제거, 턴마다 하나의 지속 활동 객체(실시간 추론 위스퍼 + 새로고침해도 복원되는 도구 트레일), LLM이 쓰는 세션 제목, 5개 로케일 완전 정합. **한국 주식(KRX: KOSPI/KOSDAQ)**이 9번째 백테스트 엔진이 됩니다 — ±30% 가격제한폭을 체결 시점에 판정, 롱 온리, 2026년 0.20% 증권거래세, 선택적
pykrx로더(#693, thanks @JungHoonGhae). 또한 OpenBB Workspace 브리지(#817, thanks @shugaoye)와 읽기 전용 대만 주식 스냅샷 도구(#848, thanks @TSENGCHIENFENG). 정합성: 일일 가격제한폭은 판단 봉의 종가가 아니라 체결 시점에 판정하며, 한 세션은 한 번에 하나의 실행만 수행하고(HTTP 409) 사용자 중단은 독립된 종료 상태입니다(#676, thanks @tyj147454413-cmd). 여기에 트레이스 내구성(#662), 도구 결과 비밀정보 스크럽(#675), 잘못된 도구 인자 페일 클로즈(#913/#911, thanks @santhreal), OpenAI 직접 연결의reasoning_effort(#755, thanks @1anter), 리스크 엑스레이 / 엣지 밀도 / 옵션 엔진 수치 가드(#909/#908/#907)가 더해졌습니다. -
2026-07-29 🔧 갭 안전 수익률 + 청산 리스크 모델링 + 모든 실행에 리스크 엑스레이:
bar_returns가 포워드필 윈도우를 넘는 거래정지 구간의 실제 가격 변동을 더 이상 지우지 않습니다 — 재개 봉의 움직임이 조용히 0으로 기록되어 변동성 과소평가와 샤프 과대평가를 일으켰습니다.inf직전 가격이 깔끔한 −100%로 읽히는 문제도 수정(#895, thanks @darkknight4563). 연율화 테이블이 24개 데이터 소스 전체를 모든 주기에서 커버하며, 누락 시 CI가 실패하는 커버리지 테스트 추가(#891, closes #884, thanks @Robin1987China). USD-M 무기한 리서치에 결정론적 격리/교차 마진 청산 평가가 추가되고(#889, thanks @honginp), 모든 포트폴리오 백테스트가 리스크 엑스레이 아티팩트(risk_xray.json/.md)를 생성합니다(#900, thanks @he-yufeng).connectorCLI가~/.vibe-trading/.env를 로드하여 환경변수 기반 브로커 자격증명이 복구(#902, closes #901, thanks @MuggleJinx). 채널 메시지 분할 들여쓰기 보존과 스킬 frontmatter EOF 파싱 수정도 포함(#867/#861, thanks @santhreal). -
2026-07-28 🔧 차세대 Claude 모델 해제 + 부호 안전 수익률:
temperature필드를 폐기한 Claude 모델(opus-4-7, opus-5, sonnet-5)을 이제 사용할 수 있습니다 — API가 해당 필드를 거부하면 어댑터가 필드를 제거하고 한 번 재시도한 뒤 그 모델을 기억하므로, 모델 릴리스마다 패치할 필요가 없습니다(#890, #856 종료, @yagnikpipaliya 감사합니다). 비대화형vibe-trading run이 호스트 세션 ID를 주입합니다: 기존에는 리서치 목표 도구가 매 호출마다 실패하는데도 실행은 성공으로 보고됐습니다(#885). 매수 후 보유 수익률이 부호 안전해졌습니다 — 직전 종가가 0에 가까울 때 복리 벤치마크가 폭주하거나, 종가가 정확히 0일 때inf/nan이 나오지 않습니다(#872, @darkknight4563 감사합니다). 프런트엔드를 Node 22 + React Router 8로 이전해 심각도 '높음' 보안 권고를 해소했습니다. -
2026-07-27 🔧 상관행렬 정합성 수정 + vn.py 4.0 내보내기 복구 + 인코딩 수정 배치: 롤링 상관행렬이 더 이상 누락된 종가를 전방 채움하지 않습니다 — 기존에는 거래정지 세션이 가상의 0% 수익률로 계산되어 상대 종목의 실제 등락과 짝지어지면서 행렬을 왜곡했습니다(#873, @ddy4633 감사합니다). vn.py 내보내기 스킬을 vn.py 4.x 구조에 맞게 복구했습니다 — 업스트림에서
vnpy.app.cta_strategy가 사라져 템플릿이 이제vnpy_ctastrategy에서 임포트합니다(#869, @y85998607 감사합니다). 여기에 6건의 수정: 문서 리더와 매매 일지 CSV의 UTF-16 BOM 디코딩, 숫자 변환 전 통화 기호 제거,BTCUSDT형식 심볼의 암호화폐 인식, 소문자1h/1d인터벌의 연율화 수정, 스킬 디렉터리 이름의 CJK 문자 보존(#862, #863, #864, #865, #866, #868, @santhreal 감사합니다). -
2026-07-26 🔒 의존성 잠금 복구 + 벤치마크 유니버스 투명성: Docker 해시 잠금 설치가 다시 정상화되고 CI에 잠금 검사가 추가됐습니다(#858, #847 종료).
alpha bench가 이제 CSI300/SP500의 출처, 구성 종목 수, 축소 폴백, 생존자 편향을 공개합니다(#859, #845 종료). Actions와 프런트엔드 의존성 5건도 업데이트했습니다(#850–#852). -
2026-07-25 🔧 퍼페추얼 리얼리즘 + MCP 크래시 수정 + 정확성 배치: USD-M 퍼페추얼에 마진 상태 계약이 추가되고(#798, @honginp 감사합니다), 엔진이 이제 가져오기만 하고 무시하던 과거 펀딩 비율을 실제로 소비합니다(#819, @g0rdonL 감사합니다). MCP dataclass 결과가 잘못 감지된
Circular reference detected로 더 이상 크래시하지 않으며(#849, @Echoandelementwebsites 감사합니다),alpha benchCLI/HTML이_meta생존자 편향 공시를 전달합니다(#841, #797 닫힘, @AmirF194 감사합니다). 또한 저널, 커넥터, 채널 전반의 12개 정확성 수정(#799–#810, @santhreal 감사합니다)과 CLI 잔액 보기의 실제 계정 레이블(#843, #846 닫힘, @Robin1987China 감사합니다). -
2026-07-24 🔀 메모리 Tier 2, 합성 가능한 옵티마이저 제약 + 인터벌 처리 점검: 퍼시스턴트 메모리에 Tier 2 구조적 조직화가 추가됩니다(#815, @shadowinlife 감사합니다). 백테스트 옵티마이저가 합성 가능한 가중치 제약을 받아들입니다(#818, @he-yufeng 감사합니다). 정확성: 일봉 검증기가 비양수 가격을 옵트인할 수 있습니다 — 음수 가격 봉에서는 시가를 취하면서 0은 계속 거부합니다(#816, #571 종료, @darkknight4563 감사합니다). 여기에 19건의 PR로 이뤄진 로더 인터벌 정규화 점검: 소문자
1h/4h/1d/1w별칭을 전반적으로 허용하고, 지원하지 않는 인터벌은 조용히 일봉을 반환하는 대신 즉시 실패하며, Yahoo4H는1h로 매핑되고 MT5는1W/1M을 허용합니다(#812–#838, @santhreal 감사합니다). 또한 매매 일지의 Eastmoney Excel 시리얼 날짜 수정(#811, @santhreal 감사합니다)과 README 네비게이션 앵커 수정(#840, @dvirarad 감사합니다)이 포함됩니다. -
2026-07-23 🔧 신뢰성 점검 + strict alpha-bench 진입점 노출 + 옷트인 메모리 라이프사이클: 22개 기여자 PR 배치. 광범위한 신뢰성 점검이 타임프레임 처리를 엔드투엔드로 수정합니다 — yfinance
1M→월봉(분 아님), CCXT1W/1M, akshare/india-broker가 지원하지 않는 간격을 조용히 일봉으로 만들지 않고 거부, Tiger/Alpaca/OKX/Shoonya/Longbridge 커넥터가1H/4H를 시간봉으로 유지 — 여기에 거래 저널 Excel 날짜 정규화(eastmoney 부동소수YYYYMMDD, Futu/Tonghuashun 시리얼 날짜),report_audit유한 수치 JSON, 빈holding_days검증, Feishu/CLI markdown 테이블 가장자리 열(#778–#794, @santhreal 감사합니다). MT5trading_history는 이제 numpy 스칼라를 네이티브 Python 타입으로 변환하여 JSON 직렬화가int64에서 실패하지 않습니다(#776, #774 종료, @shadowinlife 감사합니다). PIT 펀더멘털은 정정된 행을 중복 제거하고, 늦게 도착한 정정 공시로 스냅샷이 더 오래된 회계 기간으로 후퇴하지 않도록 합니다(#772, #771 종료, @klmtseng 감사합니다). 신규: **alpha bench --strict**가 0.1.9부터 존재했지만 진입점이 없던 strict 동일 유니버스 랜덤 대조 + OOS 게이트를 마침내 연결(#796, #773 종료, @he-yufeng 감사합니다), 옷트인 메모리 라이프사이클(품질 점수, 에빙하우스 감쇠, 아카이브 전용 GC — 모두 기본 비활성화)(#733, #732 종료, @shadowinlife 감사합니다), 백테스트 리밸런스 노트 아티팩트 + 회전율 지표(#795, @he-yufeng 감사합니다). -
2026-07-22 🚀 v0.1.12 릴리스(릴리스 노트,
pip install -U vibe-trading-ai): correlation regime 타임라인이GET /correlation/regime엔드포인트 + 옵트인 Correlation 탭 스트립을 추가합니다 — 엣지 밀도를 인과적 히스테리시스 상태 머신에 통과시켜 FUSED 시장 국면을 표시하며, 시그널이 아니라 서술적 리스크 컨텍스트입니다(#756, #719 종료, @ebujinovch 감사합니다). 프로바이더 엔드포인트 해석이 이제 각 프로바이더의 canonical base URL로 폴백하고 non-SSE 엔드포인트를 우아하게 처리하여, glm-5.1의 네이티브 zai 프로바이더를 수정합니다(#758). 여기에 metrics, factors, pattern, session, journal 전반의 strict-JSON / 유한 수치 신뢰성 점검(#761–#770, @santhreal 감사합니다)과-PERP백테스트를 자격 증명 없이 유지하는 Binance 유지보수 브래킷 분리(#757, @honginp 감사합니다)가 더해집니다. 0.1.11 이후 ~90건의 수정을 롤업합니다. -
2026-07-21 🔧 데이터 로더 완전성 + 신뢰성 수정 점검: 부분 시장 데이터는 이제 fallback 체인을 통해 누락된 심볼을 채우고, 채우지 못하면 페일클로즈하여 백테스트 유니버스를 조용히 축소하지 않습니다(#689, #681 종료, @xkam7ar 감사합니다). 또한 OKX 바는 깊은 이력 백필을 위해 레이트리밋 재시도와 함께
history-candles엔드포인트를 사용합니다(#644, @tyj147454413-cmd 감사합니다). 여기에 수정 점검: MCP 네트워크 가드가 IPv6 / 대소문자가 다른 호스트를 허용하고(#750, @Robin1987China 감사합니다), 거래 저널 파서가 공백/NaN 심볼 행을 건너뛰며(#749, @Robin1987China 감사합니다), Shadow Account가 일봉에서는 채굴된 진입 시간 게이트를 건너뛰고(#748, @Robin1987China 감사합니다), MiniMax 지역 API 엔드포인트를 선택할 수 있습니다(#731, @octo-patch 감사합니다). -
2026-07-20 🔀 프로바이더, MetaTrader 5, 견고성 점검: 네이티브 Anthropic Messages API(선택적
[anthropic]extra, #695, @jelech 감사합니다), SiliconFlow(#565, @UNHNQ 감사합니다), iFlytek Spark(#537, @FenjuFu 감사합니다)가 프로바이더에 추가되고, MetaTrader 5(Exness) 브로커 커넥터 +mt5외환/귀금속 데이터 소스가 도입되었습니다(브로커 커넥터 → 12, #481, @StaniellG 감사합니다). 여기에 프로바이더 독립적인llm-visionOCR 엔진(#548, @shadowinlife 감사합니다), 80× 시그널 정렬 벡터화(#698, @shadowinlife 감사합니다), Binance USD-M 펀딩/브래킷 이력 데이터(#716, @honginp 감사합니다), swarm MCP 디스커버리 캐시(#704), 그리고 13개의 SSE/세션/CLI/swarm/스케줄러 이슈를 닫는 신뢰성 통합(#584, @xkam7ar 감사합니다)이 더해졌습니다. 정확성 수정: 옵션 부분 청산이 이제 전체 랏을 청산하지 않고 요청 수량만 청산하며(#577), 프로바이더 자격 증명 해석 일원화(#563), 대기 중 취소 처리(#641), 프런트엔드 스트리밍 DOM 경합(#717, @Marnie0415 감사합니다), 커넥터 CLI 렌더러(#726, @nareshkps 감사합니다). -
2026-07-19 🔧 미국/홍콩 주식 실제 뉴스 기사 + MCP factor-analysis 수정 + 견고성 점검: 주식 뉴스 도구가 이제 미국 및 홍콩 티커에 대해 관련 종목 매치가 아니라 실제 Yahoo Finance 기사(title/url/source/published/snippet)를 반환하며, 여전히 고정된 IP 스로틀링 클라이언트를 통해 라우팅됩니다(#730, @yxhuang 감사합니다). MCP
factor_analysis도구가 등록된 도구의 실제 CSV 계약에 맞춰져, 호출이 실행 전에KeyError로 실패하지 않습니다(#715, #635 종료, @Robin1987China 감사합니다). 여기에 견고성 점검도 더해졌습니다: 전체 Kimi K 시리즈(k2/k3/…/for-coding)가 이제 API 요구대로temperature=1을 자동으로 강제하고(#701, @sambazhu 감사합니다),split_message, PDF 페이지 범위, 트레이드 저널 날짜 필터가 퇴화되거나 뒤집힌 입력에 대해 멈추거나 조용히 빈 결과를 반환하는 대신 즉시 실패합니다(#727–#729, @santhreal 감사합니다). -
2026-07-18 🔧 Binance 암호화폐 fallback + 병렬 실행 및 정확성 수정: Binance loader가 암호화폐 과거 시세 fallback 체인에 추가되었고(#643, @tyj147454413-cmd 감사합니다), IBKR 커넥터는 스레드 로컬 연결 풀과 스냅샷 시세로 전환되어 병렬 agent 실행 시의 멈춤을 수정했습니다(#636, @MikeCer 감사합니다). 여기에 정확성 점검도 더해졌습니다: factor analysis는 0 이하의
n_groups를 거부하고, 뒤집힌 기간 범위와 0 이하의 감지 윈도우는 즉시 실패하며, correlation matrix의 이름 없는DatetimeIndex를 올바르게 처리하고,equity.csv의 nav/value 열 별칭을 허용하며, 빈 A주 코드를 더 이상000000.SZ로 강제 변환하지 않습니다(#709–#714, @santhreal 감사합니다). correlation-rewiring 안정성 팩터가 academic zoo에 추가되고(#705, @ebujinovch 감사합니다), fundamental zoo가 factor analysis 화이트리스트에 포함되었으며(#707, @sambazhu 감사합니다), 영속화된 실행 상태가 이제 fsync로 보장되고(#645, @tyj147454413-cmd 감사합니다), dev extra가 문서에 명시된 Black/Ruff 툴체인을 설치합니다(#634, @xkam7ar 감사합니다). -
2026-07-17 🧩 correlation-regime skill + 백테스트 / 데이터 / 라이브 안전성 전반의 정확성 점검: 새로운 correlation-regime 감지 skill(번들 skills → 88, #557, @ebujinovch 감사합니다), Longbridge 런타임 연결 카드(#569, @fanfpy 감사합니다), 그리고
~/.vibe-trading에서 로드되는 사용자 정의 swarm presets(#570, @darkknight4563 감사합니다). 여기에 스택 전반의 강화도 더해졌습니다: Futu / Tencent / CCXT / mootdx loader의 조용한 데이터 손상 수정, factor bench와 Shadow Account의 선행 편향 및 strict-OOS 가드, 라이브 트레이딩 안전성(부호 있는 익스포저 상한, 원자적 일일 주문 한도, 동의 우선 mandate 커밋, fail-closed 라이브 상태), 그리고 journal / QVeris 예산 / swarm / CI 게이트 개선(#552, @xor-xe 감사합니다; 정확성 작업의 상당 부분은 @xkam7ar이 맡았습니다). -
2026-07-16 🔧 의존성 잠금 복구 + Windows 설정 저장 수정: 해시 검증 런타임 잠금을 재생성해 Docker의
pip install --require-hashes가 다시 정상적으로 해석되도록 하고,caio/pydantic-core/websockets의 비호환 핀을 수정했습니다(#564, #558 종료, @tianrking 감사합니다). Web UI에서 Agent LLM 설정을 저장할 때 Windows에서 더 이상 HTTP 500이 발생하지 않습니다 — POSIX 전용os.fchmod강화를 플랫폼별로 가드하고,fchmod가 없는 플랫폼용 회귀 테스트를 추가했습니다(#561, @CRui5in 감사합니다). -
2026-07-15 🧮 백테스트 정확성 + Portfolio Studio 핵심 완성: 10개 PR을 정리한 이번 배치에서 리밸런싱의 인과성과 순서 독립성을 확보하고, 최종 청산 비용과 실제 체결 기반 회전율을 반영했으며, 익스포저 상한과 유한하고 엄격한 검증 출력을 추가했습니다(#530/#531/#532/#540). 과거 차트는 실제 실행 데이터 소스를 재사용하고, 반복 가능한 시장 쿼리는 더 이상 조용히 누락되지 않으며,
.env로드 후 캐시된 설정을 갱신합니다(#535/#544/#554). Portfolio Studio #456과 설정 버그 #541을 닫았고, provider 수정 #528/#529도 종료했습니다. @YZY0108, @santhreal, @Robin1987China, @xkam7ar, @Marnie0415, @marichu99 님께 감사드립니다. -
2026-07-14 🌉 Longbridge 시장 데이터 + 현대식 MCP transport + provider reliability: Longbridge가 키로 활성화되는 자격 증명, 날짜 구간 분할, 엄격한 완전성 검사, 옵트인 SDK 의존성과 함께 과거 데이터 fallback 계층에 합류했습니다. 중국 시장 자금 흐름 도구 4개에는 검증된 Tushare fallback이 추가되었고, 최종 순자산이 음수여도 백테스트 지표가 더 이상 충돌하지 않습니다. MCP server는 Streamable HTTP를 지원하고,
write_file은 별칭 또는 누락된 path 인수를 안전하게 복구하며, hypothesis 업데이트는 지원하지 않는 필드를 거부하고, Correlation 요청은 인증을 거칩니다. NVIDIA NIM은 Web Settings와 두 CLI onboarding 경로의 first-class provider가 되었으며, 보고된 403에 대응하도록 버전이 포함된 호환 User-Agent를 전송합니다. Web Settings는 canonical~/.vibe-trading/.env에 기록하고 legacy 설정을 이전하며 권한 오류를 명확히 보고해 DeepSeek 저장 시 500을 수정했습니다(#534, #516/#524 종료; #528/#529). 코드, 보고서, 진단에 기여한 @fanfpy, @asahikiko, @santhreal, @sTunnaSu, @abhishekjaisinghani, @huangcheng, @ShiroKSH, @Meru143, @DIEGOD79, @not-knope 님께 감사드립니다. -
2026-07-13 🔒 보안 강화: 외부 감사 10건 전부 종료 + contributor batch: 2026-07-10 외부 보안 감사(issue #476, discussion #468)의 10건 발견 사항이 모두
main에서 해결되었습니다 — digest로 고정된 베이스 이미지의 Docker 멀티스테이지 재구성, 네트워크/서브프로세스/eval/os.environ/안전하지 않은 open을 (중첩된 함수 본문 내부까지) 차단하는 AST 강화 백테스트 샌드박스, 단명·1회용 SSE 인증 티켓, 강화된 Compose(read-only rootfs, capabilities 제거, 리소스 제한),/correlation인증 + 레이트 리밋, 보안 헤더, 해시 고정 의존성 등. 함께 병합: Alpaca 키 격리를 위한 옵트인 TAP 모드(#377, @0xZKnw 감사합니다), 백테스트 지표에 실현 포트폴리오 회전율 반영(#478, @Robin1987China 감사합니다), Frazzini-Pedersen 저베타 프리미엄 학술 팩터(Alpha Zoo → 461, #480, @YogeshModi24 감사합니다), 5개 포트폴리오 최적화기 전체의 선행 편향 수정(#487, @YZY0108 감사합니다), 그리고 preflight/provider 설정 수정 2건(#479/#484, #477/#482 종료, @ananaymital/@Bortlesboat 감사합니다). -
2026-07-12 🧪 Strategy Development Manager + contributor fix batch: 새
strategy-dev-managerskill(87번째)은 학술 논문과 브로커 리서치를 등록된 팩터/전략으로 변환하며, 영속 artifact store와 자동 IC/Sharpe decay 모니터링을 제공합니다 —sdm_register/sdm_status/sdm_decay_scan이~/.vibe-trading/위에서 active → monitoring → decayed → disabled 라이프사이클을 구동합니다(#457, #455 닫힘, @shadowinlife 님 감사합니다). 함께 병합: Correlation 탭이 bare ticker(AAPL,SPY)를 받아 loader fallback chain을 끝까지 순회하고(#472, #471 닫힘, @yxhuang 님 감사합니다),localloader가 OHLCV 리샘플링으로 요청 interval을 준수하며(#467, @Shizoqua 님 감사합니다), Binance USD-M 무기한 히스토리가 명시적BTC-USDT-PERP라우팅 + 체결/마크 가격 분리와 함께 #462의 첫 슬라이스로 들어왔고(#470, @honginp 님 감사합니다), FastMCP transport imports가 두 모듈 레이아웃 모두에서 동작합니다(#469, @roberttidball 님 감사합니다), Requesty가 OpenAI 호환 LLM 게이트웨이 provider로 추가되었습니다(#474, @Thibaultjaigu 님 감사합니다). -
2026-07-11 🚀 v0.1.11 릴리스(
pip install -U vibe-trading-ai): 0.1.10 이후 3주간의 업데이트를 모았습니다 — first-class 인도 주식(NSE/BSE) 백테스팅, PIT-safe 펀더멘털 팩터 레이어(Alpha Zoo → 460), 16개 어댑터 IM 채널 런타임, 엔드투엔드 예약 리서치, 선택형 QVeris 프리미엄 데이터, 그리고 오늘의 contributor batch: turnover-aware optimizer(#466, @Robin1987China 감사합니다),analyze_image비전 도구 + NapCat DM pairing + IM-media 읽기 수정(#464/#463/#465, @fei-moss 감사합니다), Longbridge Decimal 직렬화(#459, @fanfpy 감사합니다), packaged-manifest count guards(#461, @asahikiko 감사합니다). 자세한 내용: CHANGELOG · release notes. -
2026-07-10 🇮🇳 인도 주식(NSE/BSE) 지원 + 환경 변수 중앙화: 전용
IndiaEquityEngine추가 — T+1 결제, 가격제한 밴드, config 기반 STT/인지세/거래소/SEBI/GST 비용 스택 —.NS/.BO심볼 라우팅과 읽기 전용 Shoonya/Dhan 데이터 브리지(옵트인)를 갖추고, alpha101/qlib158의 255개 팩터가 새equity_in유니버스에 편입(#305, @muku314115 감사합니다). 환경 변수는 단일 PydanticEnvConfig스키마로 통합되고 AST 기반 CI 게이트가 향후os.getenv난립을 방지합니다(#440, #438 종료, @shadowinlife 감사합니다). 또한: 실거래 mandate 커밋 전 확인 다이얼로그와 통일된 오류 토스트(#453, @wison1717-maker 감사합니다), scheduled-research 라우트 테스트(#452, @Robin1987China 감사합니다), zhipu 프로바이더에서 GLM 추론 모델의 reasoning 스트림이 유실되던 문제 수정(#458). -
2026-07-09 🧯 Docker 시작 차단 해소 + provider/CLI contributor batch: FastAPI route 순회 중
path가 없는 included-router-like 항목을 만나도 Docker/server startup이 더 이상 crash하지 않습니다(#450, @Penn-Live 님 감사합니다). 대기 중이던 quick-win contributor fixes도 함께 반영했습니다: OKX / Tushare / yfinance loaderfetch()signature가 protocol과 맞춰졌고(#437, @shadowinlife 님 감사합니다), CLI resume prompt는 첫 사용자 메시지를 보존합니다(#448, #447 닫힘, @morluto 님 감사합니다). Codex OAuth default는openai-codex/gpt-5.4로 업데이트됐고(#446, @morluto 님 감사합니다), Kimi for Coding은 별도 provider로 사용할 수 있으며(#435, @yxhuang 님 감사합니다), opencode provider mappings도 연결됐습니다(#444, @imsankz 님 감사합니다). Tushare reference code fence도pyhton에서python으로 고쳤습니다(#449, @flash1234pku 님 감사합니다). 검증에는 focused server/CLI/provider/loader tests, Docker build,/healthsmoke가 포함됩니다. -
2026-07-08 💎 펀더멘털 팩터 레이어(Phase 1) + 선택형 QVeris 유료 데이터 + 메인터넌스 데이: PIT-safe SEC 재무 데이터가 이제 일별 팩터 panel로 바로 흘러듭니다 ——
fund:*panel 컬럼, filed 날짜 앵커링(재작성·YTD 프레임 보호), 신규 퀄리티/밸류 팩터 4종(zoo는 이제 460 alphas). 데이터 라우팅에 선택형 유료 트랙 추가: 18개 무료 소스가 여전히 기본값이며, QVeris는 Settings → QVeris 또는vibe-trading data mode paid로 63+ providers를 엽니다(아래 QVeris 섹션 참조). 또한:api_server모듈화 완료(1,103 → 371줄, #424가 #331을 닫음, @shadowinlife 님 감사합니다), 백테스트validation.json이 artifacts 디렉터리 사전 존재를 요구하지 않게 되었고(#429, @isaveall 님 감사합니다),--swarm-run오류 메시지가 명확해졌으며(#428, @isaveall 님 감사합니다), 세션 채팅을 망가뜨린 governance stack을 revert했습니다(#433, 정확한 진단을 해준 @yxhuang 님 감사합니다). -
2026-07-07 ✅ Contributor PR batch: 대기 중이던 contributor 작업을 merge했습니다. IM channel timeout configuration(#413, @SyntaxSawdust 님 감사합니다), Alpha Library social previews 및 beginner tutorial(#396, #393, @kadaliao 님 감사합니다), value-investing skills / tools / committee presets(#407, @sambazhu 님 감사합니다),
trading_place_order의 zero-sized order-field handling(#417, @irfanallana-oss 님 감사합니다), session/API paths의 timezone-aware UTC timestamps(#397, @mustafakamal88 님 감사합니다))입니다. -
2026-07-06 🧭 Preflight hardening, API slices, and CN search fallback: provider preflight는 이제 redirect를 따라가지 않고(#404, #402 닫힘, @SyntaxSawdust 님 감사합니다), 남은 API routes는 focused modules로 이동했습니다(#387, #383-#386 supersede, @shadowinlife 님 감사합니다). CN web-search fallback은 Alibaba Cloud IQS를 포함합니다(#408, @sambazhu 님 감사합니다). Maintainer cleanup으로 no-network fallback tests와 EOF whitespace cleanup도 추가했습니다(fbac74f); main CI는 green입니다(run 28780619018).
-
2026-07-05 ✅ Contributor PR queue closed + Windows baseline green: 오늘 선택한 non-draft PR 4개를 merge했습니다. A-share mootdx batch pull은 더 이상 bare
except로KeyboardInterrupt/SystemExit를 삼키지 않아 긴 데이터 수집을Ctrl+C로 정상 중단할 수 있습니다(#399, #398 닫힘, @shadowinlife 님 감사합니다). Settings route slice와 patched dependency floors도 원 contributor PR로 merge되어 credit이 유지됩니다(#382, #390, @shadowinlife 님과 @aeonframework 님 감사합니다). Windows baseline compatibility는 loader cache isolation, platform-aware OAuth cache assertions, Windows에서 fork-only mock test skip, MCP loopback fixtures proxy bypass를 포함합니다(#401, @Elfsa-Miranda 님 감사합니다). Validation:4701 passed, 47 skipped. -
2026-07-04 🧩 API route slices, 중국어 입문 튜토리얼, 안전한 dependency floors: IM channel 및 Settings routes가
api_server.py에서src/api/channels_routes.py/src/api/settings_routes.py로 이동해 #331의 좁은 modularization path를 이어갑니다(#379, #382, @shadowinlife 님 감사합니다). Wiki에는 비금융 독자를 위한 중국어 입문 튜토리얼이 추가됐고(#393, @kadaliao 님 감사합니다), Pillow / LangChain / LangGraph dependency floors도 설치 가능한 patched track으로 업데이트됐습니다(#390, @aeonframework 님 감사합니다). -
2026-07-04 🧹 세션·API 경로의 UTC 타임스탬프 정리: #395 타임스탬프 수정을 보강해 session, goal, channel, API 타임스탬프가 명시적 ISO 형식의 타임존 인지 UTC 값을 출력합니다.
-
2026-07-03 🛡️ Robinhood MCP refresh + API modularization + SSRF guard: Robinhood Agentic Trading은 이제 generic reads, live-runner plumbing, default read-only seeds, mandate-gate tests 전반에서 현재 MCP tool names를 사용합니다. Interactive startup도 provider loader와 같은
.env검색 순서(~/.vibe-trading/.env→agent/.env→$CWD/.env)를 따릅니다(#391, #381 및 #380 닫힘). System routes(/health,/correlation,/system/shutdown,/skills,/api)는 다음 API modularization narrow slice로src/api/system_routes.py에 이동했습니다(#378, @shadowinlife 님 감사합니다). Channel media SSRF defenses는 fetch 전에 CGNAT/mesh/non-global targets와 QQ media redirect-to-internal을 거부합니다(#389, @hobostay 님 감사합니다). -
2026-07-02 ⚡ Factor acceleration + safer runtime boundaries: rolling factor 핫패스가
bottleneck/NumPy fast path 를 사용하고, alpha bench 병렬 실행은 큰 panel payload 를 worker마다 반복 전달하지 않으며, base equity 계산에는 regression coverage 가 추가되었습니다(#376, #339 닫힘, 원 작업은 @shadowinlife 님의 #342). Upload 및 Shadow report routes 는 거대한api_server.py에서 분리되어 API modularization 의 첫 번째 좁은 slice 로 들어갔고, #331 은 계속 open 상태입니다(#375, #358 기반, @shadowinlife 님 감사합니다). Generated backtest subprocess 는 이제 parent secrets surface 전체가 아니라 allowlist 된 환경만 상속합니다(#374, #332 닫힘). IM channels 에는/newsession reset 과 대소문자 구분 없는 pairing commands 도 추가되었습니다(#372, #371 닫힘, @shadowinlife 님 감사합니다). -
2026-07-01 🧹 Security polish + tracker cleanup: API/Docker/frontend dev defaults를 조정하고, Settings channel과
zh-CNedges를 안정화했으며, frontend dependency/CSP alerts를 해결하고 오래된 WhatsApp + paper-trading tracker items를 정리했습니다(#338, #351, #349, #365, #367, #350, #335, #283). -
2026-06-30 💬 리서치 전달을 위한 IM 채널 런타임: Vibe-Trading은 이제 같은 agent session runtime을 16개 내장 메시지 어댑터에 연결할 수 있습니다 — WebSocket, Telegram, Slack, Discord, Matrix, WhatsApp, Signal, QQ/NapCat, WeChat/WeCom, Feishu/Lark, DingTalk, Teams, email, Mochat. CLI(
vibe-trading channels status/start/stop/login/pairing), REST(/channels/status,/channels/start,/channels/stop,/channels/pairing/command), Web UI Settings 패널이 상태, 복구 힌트, 시작/중지, sender pairing을 제공하며, SDK 기반 어댑터는vibe-trading-ai[telegram]또는vibe-trading-ai[channels]같은 extras 뒤에 둡니다(#341). -
2026-06-29 🛡️ Live advisory safety + Trading 212 read-only connector + Windows/Gemini fixes: live order guards now have an opt-in, broker-agnostic
PreTradeAdvisoryInterfacethat records advisory reviews without bypassing the mandate gate, kill switch, or audit trail (#328, closes #317, thanks @shadowinlife). Trading 212 joins the connector layer with read-only account, positions, orders, history, and instrument-metadata support;place_order/cancel_orderstill hard-refuse until a structural paper/live boundary exists (#321, closes #309, thanks @mvanhorn). Windows startup avoids the pandas 3.0Timestampcrash via the<3.0.0constraint (#329, closes #324, thanks @hannibal-lee); Geminithought_signaturedict-history replay was verified/fixed onmain(#318);.USfinancial statements now route to SEC EDGAR instead of Eastmoney (#325); and the Alpha Library landing page got cache/date/selector/noscript/DNS-prefetch hardening while heavier CSP and social-card follow-ups stay tracked (#323). -
2026-06-28 🧰 크로스 플랫폼 setup/dev + 런타임 및 파일 도구 강화:
vibe-trading setup과vibe-trading dev가 Windows TypeScript build, 올바른 cwd 에서의 backend 실행, Vite 5899 포트, 종료 시 child process 정리를 제대로 처리합니다(#292, @digger-yu 님 감사합니다). Runtime status polling 은 이제 crash 대신 graceful 하게 degrade 하고(#322), MCP OAuth cache key 는 sanitize 되며(#313), OpenAI default 와 Robinhoodagent.jsonvalidation 도 더 엄격해졌습니다(#319, #320, @mvanhorn 님 감사합니다). File tools 는 독립 read/write roots 와 확장된 sandbox tests 를 갖췄습니다(#299, @skloxo 님 감사합니다). -
2026-06-27 🧯 콘텐츠 필터 복원력 + Shadow Account feature contract 정리: event-driven / swarm 실행은 이제 개별 LLM content-moderation hit 를 건너뛰고, filter rate 가 높으면 run card 에 경고하며, Gemini safety finish reason 을 인식해 전체 analysis 를 abort 하지 않습니다(#308, #307 종료, @shadowinlife 님 감사합니다). Shadow Account extraction/codegen 은 하나의
PRICE_FEATUREScontract 를 공유하고 네 자리 소수 return bounds 를 유지해 rule/codegen drift 와prior_5d_return정밀도 손실을 막습니다(#316, @Robin1987China 님 감사합니다). -
2026-06-26 🎯 Shadow Account 조건부 진입 + tushare ETF/지수/HK 라우팅: 추출된 Shadow Account 규칙이 이제 RSI / prior-return 범위를 담아, 생성된 SignalEngine 이 보유 주기를 맹목적으로 반복하지 않고 실제 조건(RSI 가 범위 내, prior-return 이 범위 내)에서 진입합니다(#314, #302 follow-up, @Robin1987China 님 감사합니다). tushare loader 도 ETF/LOF 를
fund_daily(), 지수를index_daily(), 홍콩 주식을hk_daily()로 라우팅하며, 비주식에 대해 조용히 빈 값을 반환하는daily()를 항상 호출하던 동작을 멈추고, 심볼별 빈 결과 + 부분 수집 경고를 추가했습니다(#315, #310 종료, @shadowinlife 님 감사합니다). -
2026-06-25 🧪 엄격한 validation JSON + 더 안정적인 agent context: 독립 backtest validation 이
artifacts/validation.json또는 CLI stdout 을 쓰기 전에 중첩된NaN/Infinity값을 정규화해, strict JSON parser 가 validation payload 에서 막히지 않습니다(#306, @gyx09212214-prog 님 감사합니다). Agent prompt 도 loader registry 에서 현재 data-source 수를 동적으로 계산하고,_microcompact()는 실제 token pressure 가 있을 때만 실행되어 짧은 실행에서 오래된 tool result 를 너무 일찍 비우지 않습니다(#296, #282 종료, @MarkfuGod 님 감사합니다). -
2026-06-24 🎯 Shadow Account 가격 context + 반응형 중국어 UI + LAN auth 수정: Shadow Account 규칙 추출은 이제
buy_dt기준 point-in-time-safe entry context 인entry_rsi14와prior_5d_return을 loader registry 로 가져오며, offline / no-data 상황에서는 기존처럼 graceful 하게 feature 를 제외합니다(#302, #295 follow-up, @Robin1987China 님 감사합니다). 주요 Web UI 패널은 charts, chat, Alpha Library, Correlation, Run Detail 까지 반응형 English / zh-CN translation 을 사용합니다(#301, @skloxo 님 감사합니다). CSRF hardening 이후에도API_AUTH_KEY가 설정된 remote same-origin Web UI deployment 는 POST / upload 가 다시 통과하고, mismatch 된 cross-site origin 은 계속 차단됩니다(#304, @Hinotoi-agent 님 감사합니다). -
2026-06-23 🛡️ 로컬 API CSRF 강화: 악성 웹 페이지가 루프백 API에 안전하지 않은 크로스 사이트 요청(POST/PUT/DELETE)을 보낼 수 없게 했습니다 — CORS는 응답 읽기는 막아도 부작용은 막지 못하므로, 루프백 dev-mode 신뢰를 허용하기 전에 안전하지 않은 메서드에 기존 크로스 사이트 가드를 적용합니다. 안전한 메서드와 로컬 CLI / 비브라우저 업로드에는 영향이 없습니다(#293, @Hinotoi-agent 님 감사합니다).
-
2026-06-22 🔧 라이브 인가 OAuth 수정 + Alpha Zoo 헤드라인 수정:
connector authorize가 몇 분이 걸리는 브로커 로그인 동안 OAuth 핸드셰이크를 유지하고(VIBE_LIVE_AUTHORIZE_TIMEOUT_SECONDS로 조정 가능), 재시도 시 경쟁하는 콜백 서버를 더 이상 띄우지 않아 토큰이 실제로 저장됩니다(#281, #259 종료, @Robin1987China 님 감사합니다). Alpha Zoo 페이지가 alpha 개수를 두 번 표시하지 않습니다(#287, #286 종료, @digger-yu 님 감사합니다). 예약 리서치에도 엔드투엔드 사용 문서가 추가됐습니다(#288). -
2026-06-21 ⏰ 예약 리서치 실행기 + 리포트 라이브러리 + 백테스트 사후 기여도 분석: 예약 리서치가 이제 엔드투엔드로 동작합니다 — 기본 비활성화된 백그라운드 실행기(
VIBE_TRADING_ENABLE_SCHEDULER)가 interval/cron 으로 도래한 작업을 세션 런타임을 통해 실행합니다(#278, @mvanhorn 님 감사합니다, #254 종료). 새/reports실행 라이브러리 페이지는 리포트를 생성한 실행을 나열·검색·필터링하고 Run Detail + Compare 로 연결됩니다(#224, @LemonCANDY42 님 감사합니다). 또한 백테스트가 끝날 때마다 에이전트가 계층형 기여도 분석 — 거래 단위 손익 Top, 베타 회귀, 시장 레짐 분석, 몬테카를로 순열 검정 — 을 데이터 가용성과 라우팅 조건에 따라 자동으로 수행합니다(#280, @shadowinlife 님 감사합니다). -
2026-06-20 🔬 Research Autopilot 루프 완성(3단계) + 로더 OHLC 무결성 가드 + 학술 알파 4종: Research Autopilot 이 가설 → 시그널 엔진 → 백테스트 를 엔드투엔드로 실행합니다 —
scaffold_signal_engine이 runner 계약에 맞는 엔진을 생성하고,link_autopilot_backtest가 백테스트 지표를 가설로 자동 회신합니다(68개 도구)(#267). 구조적 OHLC 정합성 검사가 로더 경계에서 잘못된 bar(high < low, 음수 가격, high/low가 open/close를 감싸지 못함)를 일괄 제거해 모든 데이터 소스를 보호합니다(#274, @Shizoqua 님 감사합니다). 그리고 academic 알파 패밀리가 6 → 10으로 확장됩니다 — Jegadeesh 반전, George-Hwang 52주 고점, Amihud 비유동성, Harvey-Siddique 왜도(456개 팩터)(#277, @Robin1987China 님 감사합니다). -
2026-06-19 🚀 v0.1.10 — 글로벌 데이터 계층: 시장 데이터 소스가 10 → 18개로 확대(무료 Eastmoney / Sina / Stooq / Yahoo + 키 기반 Finnhub / Alpha Vantage / Tiingo / FMP, IP 차단 위험 순 fallback). 여기에 읽기 전용 데이터 도구 18종(자금 흐름, 용호방, 북향, 신용거래, 대종거래, SEC EDGAR + XBRL, 재무, 옵션 체인, 전체 시장 스크리닝…)을 A주 / 미국 / 홍콩 전반에 걸쳐 모두 MCP로 노출. 이번 릴리스는 0.1.9 이후의 모든 업데이트도 함께 포함합니다 — 브로커 커넥터 10종,
alpha compare, 프로바이더 신뢰성 대개편, 옵션형 데이터 캐시.pip install -U vibe-trading-ai -
2026-06-18 🔬 Research Autopilot 1단계 + 로컬 Data Bridge 로더, 그리고 Discord 보안 공지: 새
run_research_autopilot+generate_backtest_config가 Hypothesis → Research Goal → backtest를 끝까지 연결하고(이제 50개 도구), 새local로더가 사용자 본인의 CSV / Parquet / DuckDB 파일에서 직접 OHLCV를 읽습니다(#260, #252, @Robin1987China 님 감사합니다). 또한 DeepSeekDSMLtool call 파싱과 식별자 봉쇄 강화가 들어왔습니다. ⚠️ 보안 공지: 이전 커뮤니티 Discord 초대는 이제 우리가 관리하지 않는 서버(가짜 Collab.Land 지갑 "인증" 피싱)로 연결됩니다 — 모두 제거됐고, 유일한 공식 Discord는 HKUDS 서버(discord.gg/6TdQnT5xcF)입니다. 지갑 연결을 요구하는 일은 결코 없습니다. -
2026-06-17 🧩 설치 호환성 + Opus/Kimi 프로바이더 수정: 기본
pip install vibe-trading-ai는 더 이상 선택 기능인pyharmonics/ta의존성 체인을 끌어오지 않습니다. harmonic detection은vibe-trading-ai[harmonic]extra 뒤로 이동했고, 내장 fallback detector는 그대로 사용할 수 있습니다(#250, #249 종료). Agent loop는 Opus 4.8+가 거부하는 assistant-prefill handoff message를 보내지 않으며, Kimi/Moonshot은MOONSHOT_USER_AGENT로 clientUser-Agent를 덮어쓸 수 있습니다(#248, #246 및 #204 종료). 후속 테스트는 background-result와 auto-compact handoff 경로를 직접 커버합니다(#251). -
2026-06-16 🛡️ 보안/API 강화 + GLM/Zhipu alias: Settings 쓰기는 인증 설정 시 auth가 필요합니다(#245); API session의 shell-capable tools는 명시적인
VIBE_TRADING_ENABLE_SHELL_TOOLS=1opt-in이 필요합니다(#243); API key가 설정된 local shutdown도 auth가 필요합니다(#241); loopback처럼 보이지만 신뢰할 수 없는 Host는 local로 취급하지 않고 거부합니다(#242). 런타임 세부도 다듬었습니다: Web chat은 완료된 attempts와 동기화되고(#236), run card는 유한하지 않은 metric을 strict JSON으로 출력하며(#238), 잘못된RSSHUB_TIMEOUT_S/RSSHUB_FETCH_BUDGET_S는 안전하게 fallback합니다(#240). ddgs retry fallback도 regression coverage가 추가됐습니다(#239). GLM/Zhipu는 first-class provider alias가 되었고 model-name inference도 추가됐습니다(#247, #237 종료). -
2026-06-15 🧭 웹 검색 견고성 + Web UI 실행 연속성 수정:
web_search는 단일 엔진이 레이트리밋되어도 더 이상 실패하지 않습니다——이제 여러 무료·키 불필요 엔진(DuckDuckGo, Google, Bing, Brave, Mojeek, Yahoo)을 순서대로 조회하고 재시도/백오프를 적용하며, "결과 없음"을 오류가 아닌 빈 답변으로 처리하고, 모든 엔진이 제한될 때는 무미건조한 ❌ 대신 실행 가능한 메시지를 반환합니다(엔진 목록은VIBE_TRADING_SEARCH_BACKENDS로 재정의 가능)(#232, #231 종료, @Ethan-sun01 님 감사합니다). Web UI에서는 실행 중 페이지를 전환해도 더 이상 멈추지 않습니다——채팅이 돌아올 때 라이브 스트림에 다시 구독하고 놓친 진행을 재생합니다(#234)——그리고 중지 버튼이 이터레이션 경계뿐 아니라 스트리밍 중과 도구 사이에서도 즉시 적용됩니다(#235). 이로써 #229의 두 증상이 모두 해결됩니다(@kalkinj 님 감사합니다). baostock loader도 tushare 스타일601398.SH와 함께 네이티브sh.601398/sz.000001코드를 받아들입니다(#230, @bhlt 님 감사합니다). -
2026-06-14 📊 실행 단위 토큰 사용량 + Run Detail 차트 지연 로딩: 이제 모든 agent 실행은 프로바이더가 보고한 토큰 사용량을 실행 범위의
llm_usage.json으로 영속화합니다——프로바이더/모델, 누적 합계, 이터레이션별 카운트——/runs/{id}에 추가로 노출되어, 실행이 끝나고 라이브 스트림이 사라진 뒤에도 토큰 비용을 감사할 수 있습니다(프로바이더 보고값만; prompt/내용 캡처나 가격 추정 없음)(#223, @LemonCANDY42 님 감사합니다). Run Detail 페이지는 더 이상 모든 심볼의 캔들을 처음부터 불러오지 않습니다: 기본/runs/{id}응답은 그대로 유지되지만, UI는 먼저 실행 요약을 렌더링한 뒤 옵트인?chart_payload=summary/?chart_symbol=모드로 각 심볼의 차트를 필요할 때 불러옵니다. 심볼별 로딩 상태와 "전체 로드 + 진행률" 컨트롤이 함께 제공됩니다(#225, @LemonCANDY42 님 감사합니다). 두 가지 loader 수정으로 마무리: yfinance의 배타적end경계가 요청 범위의 마지막 거래일을 더 이상 누락하지 않습니다——다운로드 호출은end + 1일을 전달하고 캐시 키는 원래 범위를 유지합니다(#226, @gyx09212214-prog 님 감사합니다)——그리고 잘못된CCXT_TIMEOUT_MS/OKX_TIMEOUT_S값은 import 시 예외를 던져 시작을 막는 대신 경고하고 기본값으로 폴백합니다(#227, @gyx09212214-prog 님 감사합니다). -
2026-06-13 ↩️ CLI에서 ID로 과거 세션 재개: 인터랙티브 CLI가 이제 종료 시 session-id를 출력하고, 복사해 붙여넣을 수 있는
vibe-trading resume <session-id>힌트도 함께 보여줍니다——끝난 실행의 trace를 찾으려고agent/sessions/아래 어느 폴더가 타임스탬프상 가장 최신인지 추측할 필요가 더는 없습니다. 새vibe-trading resume <session-id>서브커맨드는 바로 그 세션을 다시 열고 최근 턴들을 loop에 재생합니다; 존재하지 않는 id는 빈 세션을 조용히 시작하는 대신 즉시 오류로 종료합니다(#218, @zwrong 님 감사합니다). -
2026-06-12 🩺 프로바이더 신뢰성 전면 강화——DeepSeek 행, Kimi 접속, 스트리밍 라이브니스: 일련의 프로바이더 리포트——DeepSeek 실행이 "Agent is working…"에서 멈춤(#208, @XYWOX 님 감사합니다),
reached max iterations가 모델의 빈 응답을 가림(#203, @mojianliang 님 감사합니다), 멈춘 뒤 UI가 복구되지 않음(#195, @mafia23 님 감사합니다), Kimi가 클라이언트를 거부(#204, @liao497 님 감사합니다)——의 근본 원인은 하나였습니다: 모든 OpenAI 호환 프로바이더가 단일 shim을 공유하며 DeepSeek/Kimi/Gemini 고유 동작을 전역으로 적용하고 스트림 실패를 조용히 삼켰습니다. 이제 프로바이더별 동작은 명시적인 케이퍼빌리티 계층으로 이동——reasoning 캡처/재전송, Gemini thought signature, KimiUser-Agent, OpenRouter reasoning body가 각자의 프로바이더에만 적용되어 상호 오염이 없습니다. reasoning 전용 스트림은 실시간 "Reasoning…" 표시를 보여주고; 스트림 실패는 컨텍스트가 담긴provider_stream_error를 발생시키며 일시적 끊김은 한 번 자동 재시도(결정적 4xx는 즉시 실패), 느린 비스트리밍 호출로의 조용한 폴백은 제거; 모델의 빈 응답은empty_model_response로 정확히 진단; SSE 하트비트가 재연결 리플레이를 깨뜨리지 않으며; 멈춘 읽기 전용 도구는 타임아웃됩니다. 새 명령 **vibe-trading provider doctor**는 마스킹된 provider/모델/패키지/프록시 스냅샷을 출력해 환경 쪽 행을 한 번에 분류합니다. DeepSeek은pip install "vibe-trading-ai[deepseek]"로 공식 네이티브 어댑터를 선택할 수 있고, kimi-k2.x의temperature=1요구는 자동 적용——Kimi 경로는 실제 API로 엔드투엔드 검증되었습니다(kimi-k2.6도구 호출 + 엄격한 멀티턴 reasoning 재전송). -
2026-06-11 🐝 swarm worker가 loader 계층을 통해 시장 데이터를 가져옵니다: NVDA 투자위원회 실행에서 일련의 공백이 드러났습니다——worker가 임시 yfinance 스크립트를 직접 작성하고, 손상된 최신 봉(거래량은 있지만 OHLC가 빈)을 신뢰했으며,
NaN이 비엄격 JSON으로 새고, 컨텍스트를 잃은 이어가기 프롬프트가 잘못된 preset으로 라우팅됐습니다(#198, 탁월한 진단과 두 수정 PR을 보내준 @BillDin 님 감사합니다). 이제 swarm worker는 MCP와 동일한 정규화 loader 레지스트리가 뒷받침하는 로컬get_market_data도구를 갖습니다——엄격한 JSON, 비유한 부동소수는null로 직렬화——모든 시장 데이터 preset(13개 preset, 21개 worker)에 연결되고, 프롬프트 정책이 OHLCV 작업을 도구 우선으로 유도합니다(#199).run_swarm은 명시적preset_name을 받으며, 모호한 이어가기 조각은equity_research_team으로 조용히 폴백하는 대신 거부됩니다(#200). 그라운딩도 더 똑똑해졌습니다: swarm 프롬프트의 맨 미국 티커(예:NVDA)는NVDA.US로 승격되어(불용어 가드) worker가 처음부터 신뢰할 수 있는 사전 조회 가격을 갖고 시작합니다. 이 도구는 메인 agent 레지스트리에도 합류——이제 48개 도구입니다. 또한: Docker 데이터가 업데이트 후에도 유지됩니다——영구 메모리, 세션 검색 인덱스, 사용자 생성 스킬, shadow account, broker 설정이 명명된 볼륨에 저장되어docker compose up --build로 더 이상 지워지지 않습니다(#197, @FlyerJ 님 감사합니다). -
2026-06-10 🐳 Docker가 호스트 측 Ollama에 기본으로 연결됩니다: 컨테이너 안의
localhost는 컨테이너 자신을 가리키므로 기본OLLAMA_BASE_URL=http://localhost:11434로는 Docker + Ollama 조합의 LLM 사전 점검이 항상 실패했습니다.docker-compose.yml이 이제 기본으로http://host.docker.internal:11434를 가리키며(OLLAMA_BASE_URL내보내기로 재정의 가능),host-gateway의extra_hosts매핑이 추가되어 Docker Desktop뿐 아니라 Linux에서도 같은 파일이 그대로 동작합니다(#196, @ShahNewazKhan 님 감사합니다). -
2026-06-09 🔑 다른 컴퓨터에서 Web UI를 열 때의 오류 메시지 개선:
API_AUTH_KEY를 설정하지 않은 채 비루프백 클라이언트(다른 컴퓨터, VM 호스트, LAN의 휴대폰)에서 채팅에 접속하면 메시지 전송·세션 목록·live 상태 등 모든 민감한 엔드포인트가403을 반환했지만, 채팅에는 일반적인 “Failed to send message, please retry.”만 표시됐습니다. 이제 전송 경로가 실제 이유——“Remote API access requires an API key. Add it in Settings, or run the backend on localhost for local-only use.”——를 보여주며, README의 Web UI 설정 설명도 localhost와 LAN의 차이 및 세 가지 해결책(같은 컴퓨터에서localhost로 접속 /API_AUTH_KEY설정 후 Settings에 한 번 입력 / Docker Desktop 호스트 게이트웨이는VIBE_TRADING_TRUST_DOCKER_LOOPBACK=1)을 명시했습니다(#191, @mafia23 님 감사합니다). -
2026-06-08 🔧 Gemini 3.x 멀티턴 도구 호출 수정: Gemini 3.x 사고 모델 수정을 완성했습니다. 6/05의 왕복(#176)은 인메모리 히스토리만 다뤘지만, 실제 agent loop는 히스토리를 OpenAI 형식 dict로 재생하며 LangChain이 요청 구성 전에 도구 호출별
thought_signature를 버렸기 때문에 멀티턴 도구 호출이 여전히missing thought_signature로 400을 냈습니다. 이제invoke와stream이 공유하는 단일 길목_convert_input에서 다시 부착됩니다(병렬 호출——N개 중 첫 번째만 서명됨——도 포함)(#184, @ngoanpv 님 감사합니다). -
2026-06-07 🐝 채팅 타임라인의 실시간 swarm 상태: agent가 멀티에이전트 swarm(투자위원회, 퀀트 데스크, 리스크 위원회……)을 시작하면 채팅에 각 worker의 상태——대기 / 실행 / 완료 / 실패 / 차단 / 재시도——를 실시간 스트리밍하는 인라인 상태 카드가 표시됩니다. 독립 swarm 대시보드와 동일한 에이전트별 가시성입니다. 런타임 이벤트는 기존
/swarm/runsAPI를 바꾸지 않고 세션 SSE 스트림으로 브리지되며, 재연결이나 히스토리 재생 시 완료된 카드가 최종run_swarm결과에서 복원됩니다(#188, @BillDin 님 감사합니다). preset 라우팅도 더 정밀해졌습니다: 명시적으로 지정한 preset(예:investment_committee, 밑줄 유무 무관)이 키워드 점수보다 우선하고, 맨IV파생상품 키워드가 “given” 같은 일반 단어에 더 이상 오매칭되지 않습니다(#189, @BillDin 님 감사합니다). -
2026-06-06 ⚖️ Alpha 비교 — CLI / Web UI / REST / agent 전 영역 지원: 새
alpha compare는 직접 고른 Alpha Zoo 팩터들을 같은 universe·기간에서 상호 비교하고 IC 평균/표준편차, IR, IC>0 비율, 샘플 수로 순위를 매기며 각 팩터와 선두의 격차를 보여줍니다. 전체 zoo bench와 달리 지정한 팩터만 평가합니다(새run_bench(only=…)부분집합 필터). 그래서 3개를 비교해도 zoo의 191개를 모두 돌리지 않습니다. 하나의 공유 코어가 모든 영역을 구동합니다:vibe-trading alpha compare <id1> <id2> … --sort ir(CLI), Alpha Zoo Web UI의 Compare 뷰(카탈로그에서 팩터 체크 → 원클릭 비교 + 스트리밍 순위표),POST /alpha/compare+ SSE(REST), 읽기 전용alpha_compareagent 도구(이제 47개 도구). -
2026-06-05 🇮🇳 Dhan + Shoonya connector(인도) — 브로커 총 10곳: connector-first 거래 레이어에 인도 시장용 Dhan과 Shoonya(NSE/BSE 주식 + F&O)가 추가되어 브로커가 총 10곳이 되었습니다. 둘 다 페이퍼 + 읽기 전용입니다 — Longbridge와 마찬가지로 API가 런타임 paper/live 구분자를 노출하지 않으므로
place_order/cancel_order가 첫 줄에서 비페이퍼 설정을 강하게 거부합니다(규칙: 런타임 paper/live 가드가 없는 브로커는 페이퍼 + 읽기 전용으로 제한)(#181, #174 종료). 이번 주기에는 Gemini 2.5 / 3.x 사고 모델도 수정했습니다: 도구 호출별thoughtSignature가 OpenAI 호환 경로를 왕복하여 멀티턴 function calling이INVALID_ARGUMENT로 실패하지 않습니다(#176, #170 종료, @mvanhorn & @jliu6789 님 감사합니다). 452개 전체 Alpha Zoo 팩터에 중국어 docstring(中文名称/说明/用途)이 추가되었고(#180, @LeeCQiang 님 감사합니다), **프런트엔드 테스트 스위트(vitest 197개)**와 백엔드 인증 / 경로 탐색 / CORS 보안 테스트가 CI에 들어왔습니다(#175, @sambazhu 님 감사합니다). -
2026-06-04 🗃️ 전체 7개 데이터 소스 대상 옵트인 로컬 캐시: 새
VIBE_TRADING_DATA_CACHE스위치로 각 백테스트 loader——tushare, okx, ccxt, akshare, mootdx, yfinance, futu——가 확정된 과거 bar를~/.vibe-trading/cache(사용자 홈, 저장소에는 절대 기록하지 않음)에 캐시하여, 반복 및 장기 / 크로스마켓 백테스트가 네트워크를 건너뛰고 제공자 레이트 제한을 피합니다. 기본값은 꺼짐. 배치 / 연결형 loader(yfinance, futu)는 캐시가 전부 적중하면 대량 다운로드 / FutuOpenD 연결을 완전히 건너뛰며, staleness 가드는 오늘로 끝나는 구간(마지막 bar가 아직 형성 중)을 절대 캐시하지 않고, 캐시된 프레임은 새로 가져온 것과 바이트 단위로 동일합니다(#177, @mvanhorn 님 감사합니다). AI / 자동화 지원 PR을 위한 기여자 가이드도 추가되어 안전한 로컬 점검과 고위험 broker/MCP/자격 증명 영역을 정리했습니다(#173). -
2026-06-03 🧹 커뮤니티 트리아지 + 트레이스 상관관계: 도구 호출 트레이스 항목에 원본
call_id가 포함되어, run 트레이스를 재생할 때tool_result를 해당tool_call에 다시 매칭할 수 있습니다 — 인자 미리보기는 트레이스 파일을 작게 유지하기 위해 계속 잘린 상태로 둡니다(#168, @zwrong 님 감사합니다). 소스 주석은 외부 기여자가 찾을 수 없는 내부 전용 문서 경로를 더 이상 가리키지 않습니다(#166, @jaleelpersonal 님 감사합니다). 또한 설치 시 나타나는langchain-community의존성 해결 경고가 실패가 아니라 잔여 패키지로 인한 무해한 알림임을 명확히 했고(#167), Gemini 2.5/3.0 함수 호출의thoughtSignature왕복 처리를 완전한 수정 계획이 포함된help wanted작업으로 정리했습니다(#170, @jliu6789 님 감사합니다). -
2026-06-02 🔌 새 브로커 connector 6종(Tiger / Longbridge / Alpaca / OKX / Binance / Futu): connector-first 거래 레이어에 IBKR(로컬)·Robinhood(MCP)와 나란히 direct-SDK transport가 추가되었습니다. 각 connector는 읽기 전용 account / positions / orders / quote / history에 더해 페이퍼 계좌 주문 제출을 노출하므로, 이 브로커 페이퍼 계좌들에서 전략을 검증할 수 있습니다. 그중 5종(Tiger, Alpaca, OKX, Binance, Futu)은 Robinhood와 동일한 안전 모델 뒤에서 mandate로 게이트되는 bounded 주문 제출도 지원합니다 — 사용자가 커밋한 mandate(종목 universe / 주문 규모 / 익스포저 / 레버리지 / 일일 한도), 파일 수준 kill switch, fail-closed 사전 거래 게이트, 완전한 감사 원장. Longbridge는 페이퍼 + 읽기 전용 전용입니다(API가 런타임 paper/live 구분자를 노출하지 않음). 모든 paper/live 구분은 브로커별 구조적 가드입니다. 새
trading_place_order/trading_cancel_order도구가 추가되었고, HK·A주 asset class가 mandate universe에 들어왔습니다. 실험적 / 사용에 따른 책임은 본인에게 있습니다. -
2026-06-01 🚀 v0.1.9 출시(
pip install -U vibe-trading-ai): 0.1.8 이후 모든 것을 롤업했습니다. Connector-first 브로커 profile(IBKR 로컬 읽기 전용 TWS / IB Gateway + OAuth·커밋된 mandate·order guard·audit ledger·instant halt 뒤의 Robinhood Agentic Trading). CLI / REST / MCP / Web을 아우르는 Research Goal 런타임. swarm 패스 — live reconcile + MCP keepalive, operator가 설정한 worker MCP 도구, 엄격 alpha-bench 랜덤 컨트롤, 실패/오래된 run을 다시 실행하는 새retry_run(이제 36개 MCP tools).agent/cli/패키지 리팩토링 + 새 터미널 UI,mootdx무토큰 A주 loader, backtest / agent loop / session 견고성 패스.--version은 이제 항상 설치된 패키지와 일치하여 0.1.8 드리프트를 수정합니다(#156). -
2026-05-31 🔌 Connector-first 브로커 아키텍처(IBKR + Robinhood): 거래 접근은 이제 별도의 브로커/live 진입점이 아니라 선택 가능한 connector profile에서 시작합니다.
vibe-trading connector list/use/check/account/positions/orders/quote/history와 MCPtrading_*도구는 동일한 선택 profile을 공유하며, paper/live는 connector의 속성으로 다룹니다. IBKR은 로컬 읽기 전용 TWS / IB Gateway profile로 즉시 사용할 수 있고, 공식 IBKR 원격 MCP 경로는 안정적인 read tool 이름이 제공될 때까지 OAuthmcp.readprobe로 seed되어 있습니다. Robinhood Agentic Trading은 계속 OAuth, 커밋된 mandate, order guard, audit ledger, instant halt 뒤에 있는 bounded live MCP connector입니다. -
2026-05-30 🧰 견고성 패스 — backtest, agent loop, session: LLM이 생성한 signal engine은 이제 인스턴스화 전에 인터페이스 사전 검증을 거칩니다. 순환 self-import, 누락된
generate(), 기본값 없는__init__인자, 잘못된 반환 타입 같은 흔한 실수를 조기에 잡아 원시 traceback 대신 실행 가능한 JSON 오류로 반환합니다 (#149). 후속 작업으로 소스 수준 AST 검증 오류도 동일한 깔끔한 JSON 봉투에 실었습니다. agent loop는 더 이상 50회 반복을 모두 소진하고 출력 없는failed상태로 끝나지 않습니다 — swarm worker의 검증된 방식을 따라 반복 예산의 80%에서 wrap-up nudge를 주입하고 마지막 반복에서 tool 정의를 제거해 텍스트 답변을 강제합니다 (#148). 중간에만 발동하도록 가드되어 research-goal 컨텍스트를 밀어내지 않습니다. session 메시지 쓰기는 이제 append마다flush + fsync하여 비싼 AI 응답이 쓰기 도중 크래시에도 살아남고, 읽기 경로는 손상된 JSONL 줄을 건너뛰며(복구용으로 앞 200자 로깅)/messages엔드포인트 전체를 500으로 만들지 않습니다 (#147). Web 입력창은 IME Enter 처리도 수정해 조합 확정 Enter가 단어 도중에 전송되지 않도록 했습니다 (#146). -
2026-05-29 🔐 Robinhood Agentic Trading 지원(옵트인, 제한된 자율성): Robinhood Agentic Trading을 지원합니다(원격 MCP, OAuth). 기본적으로 비활성·읽기 전용이며, 에이전트는 사용자가 커밋한 mandate(종목/주문 규모/익스포저/레버리지/일일 한도) 범위 안에서만 자율 거래합니다. 파일 수준의 즉시 kill switch, 선제적 포지션 청산, mandate 자동 만료, 완전한 감사 원장, 영속 자율 runner를 갖췄습니다. 수탁 없음·거래소 없음 — 자금 보유와 체결은 브로커가 하고, 우리는 의도만 중계합니다. 실험적 / 사용에 따른 책임은 본인에게 있습니다.
-
2026-05-28 🧪 Swarm 안전성 + 엄격 alpha 게이트 + worker MCP: Swarm DAG가 상위 태스크 실패 시 하위 태스크를 차단합니다 (#145). 새
run_bench_strict()는 IC 게이트 위에 동일 universe 랜덤 컨트롤 + 학습/테스트 OOS 분할을 추가해 시장 beta만 따라가는 가짜 factor를 잡아냅니다 (#143, @Soli22de 감사). Swarm worker는 이제 operator가 설정한 외부 MCP server를 호출할 수 있으며 신뢰 경계는 전용 테스트로 고정되어 있습니다 (#142, @shadowinlife 감사). -
2026-05-27 📊 mootdx A주 데이터 소스 + 출력 정리: 새
mootdxloader는 네이티브 通达信 TCP 프로토콜로 A주 OHLCV를 가져옵니다(인증 불필요, IP 속도 제한 없음, 일봉 + 분봉의 25 페이지 walk-back 페이지네이션). fallback chain에서 tushare와 akshare 사이에 위치합니다 (#107). CCXT loader는 이제HTTP_PROXY/HTTPS_PROXY/ALL_PROXY를 읽어 제한된 네트워크에서 Binance/OKX 공개 데이터를 가져올 수 있습니다 (#126, @ruok808 감사). 최종 답변 렌더링에서도 CLI와 Web의 보기 흉한 전체 너비---구분자를 제거했습니다: system prompt는 markdown 테이블과##헤딩 사용을 유도하고, CLI 렌더러는 독립 HR을 defense-in-depth로 제거하며, 채팅 버블은 빠져나온<hr>을 숨깁니다 (#139, @sdwxm188 감사). -
2026-05-26 ✅ Research Goal lifecycle 폐쇄 루프: Goal mode가 실제 task runner처럼 동작합니다. Web UI에서 goal을 만들면 session을 생성하거나 바인딩하고 즉시 kickoff turn을 보냅니다. active goal은 Web/API/CLI/MCP에서 continue/edit/cancel/complete할 수 있으며, agent loop는 최초 prompt만이 아니라 현재 goal snapshot(criteria, evidence, claims, open items)을 기준으로 진행합니다. criteria가 covered였지만 goal이 active로 남아 있으면 조용히 멈추지 않고 audit/status update로 들어가며, backend, CLI, MCP, frontend events 회귀로 고정했습니다.
-
2026-05-25 🧼 더 깔끔한 Chat UI + composer 워크플로: Web UI는 이제 다음 입력에 집중하도록 정리되었습니다. upload, swarm, research-goal 모드는 composer의
+메뉴 뒤로 모이고, floating panel로 채팅을 방해하지 않습니다. 현재 context는 입력창 위 compact chip으로 표시되며, goal 세부 정보는 chip을 클릭할 때만 inline으로 펼쳐집니다. 기존 custom i18n layer도 제거하고 직접 English copy로 통일했습니다. Full Report card는 report-worthy run에만 표시되며, 로컬 dev startup/status reporting도 브라우저 smoke test에 맞게 안정화했습니다. -
2026-05-24 🎯 Research Goal runtime: backend, CLI, API/MCP, SSE, Web UI 전반에 session-scoped Research Goal layer를 추가했습니다. Goal은 claim, acceptance criteria, evidence row, budget, completion policy를 영속화합니다. agent tool은 goal 생성과 evidence 추가를 지원하고,
/goal은 CLI 진입점이 되었으며, REST/MCP는 goal snapshot과 evidence write를 노출하고, SSE는 chat client 상태를 최신으로 유지합니다. 후속 audit fixes에서는 verified evidence 경계를 잠그고, agent tool의 live-trading risk tier 입력을 차단하며, CLI-created goal을 이후 turn에 연결하고, session 삭제 시 goal ledger를 정리하고, replay-all을 연결하고, frontend cross-session snapshot race를 수정했습니다. -
2026-05-23 🖥️ 대화형 CLI 새 단장: 터미널 진입점은 더 큰 Vibe-Trading 배너, 더 깔끔한 prompt 구분선, 이전 턴 요약, 실행 후 소요 시간, Claude Code 스타일 activity rail로 live agent 작업을 보여줍니다. 도구 호출, 웹/데이터 fetch, shell 스타일 동작, Markdown 답변, pipe table은 더 읽기 쉬운 transcript로 렌더링되며, pipe 또는 non-TTY 실행은 자동화에 적합한 plain-text 출력을 유지합니다. 생성된 CLI 스크린샷은 커밋되는 docs 파일이 아니라 local artifact로 처리되어 저장소를 가볍게 유지합니다.
-
2026-05-22 🧭 Swarm 복구 + MCP keepalive: Swarm 상태는 이제 읽을 때마다 live task 파일에서 reconcile되므로 API/MCP/SSE/list 뷰가 크래시되었거나 오래된 run을 복구하고 영구
running스냅샷을 보여주지 않습니다.run_swarm는 polling 중 MCP progress heartbeat를 보내며, transport drop 이후 재연결한 클라이언트가 handle을 회수할 수 있도록 첫 프레임을swarm_started run_id=<id>로 고정했습니다. worker도 LLM streaming, grounding fetch, tool execution 전 과정에서 heartbeat를 냅니다. stale-run reaper는 run별 임계값을 사용하고 task 상태에서 최종 상태를 도출합니다.SwarmTool은 wait budget이 끝났다는 이유만으로 진행 중인 team을 취소하지 않으며, MCP 클라이언트는reap_stale_runs()로 명시적 cleanup을 실행할 수 있습니다. 오늘의 DX pass에서는 provider 기본 모델도 갱신하고 CI syntax check를 새agent/cli/패키지에 맞췄습니다. 22개의 새 회귀 테스트가 hydrate, 최종 상태 복구, stale reap, keepalive cadence, env parsing, heartbeat wiring을 다루며, 전체 swarm/MCP 스위트는 169 passed, 4 skipped입니다. -
2026-05-21 🧱 CLI 패키지 리팩토링:
agent/cli.py(3216 LOC)를agent/cli/패키지로 분할 — 대화형 진입점, 슬래시 라우터, Rich 컴포넌트, 그리고 모든 서브커맨드를 보존하고cli.cmd_*/cli._INIT_ENV_PATH/cli.Confirm등 공개 심볼을 재내보내는_legacy.pyshim. 새 FastAPI 미들웨어는 브라우저가/runs/{id}또는/correlation에 직접 접근할 때 SPA 셸을 반환하며, 동일한 좁힘을 Vite dev 프록시에도 반영했습니다. 버전 문자열은cli/_version.py단일 소스로 통합(--version과 배너 드리프트 해결),python -m cli는__main__.py로 복원, chat 게이트를 좁혀chat --help/chat extra가 REPL에 삼켜지지 않고 레거시 argparse에 도달합니다. -
2026-05-20 🔬 Hypothesis Registry CLI: 2026-05-16에 백엔드만 출시된 Hypothesis Registry의 CLI 측을 완성했습니다.
vibe-trading hypothesis list는 Rich 테이블 또는 JSON을 출력합니다(--status필터,--limit지원).show <id>는 링크된 run card를 포함한 상세 패널을 렌더링합니다.invalidate <id> --note "..."는 상태를rejected로 전환하며,--note를 생략하면 기존 invalidation notes를 유지합니다. 기존VIBE_TRADING_HYPOTHESES_PATH환경변수 오버라이드와 호출별--path를 모두 지원합니다. 22개의 새 테스트가 와이어링, JSON 출력, 상태 필터, limit, ID 누락 오류, 노트 영속성을 다룹니다. -
2026-05-19 ✨ 도구 라이브 피드백 + 우아한 취소: 오래 걸리는 도구(백테스트, 큰 PDF, swarm worker)가 멈춘 것처럼 보이지 않게 되었습니다. 모든 도구 호출은 이제 3초 간격의 하트비트와 구조화된 단계별 진행 상황을 발행합니다 —
run_backtest는 단계 마커(validate/simulate/finalize),read_document는 PDF에서는 페이지 단위, Excel에서는 시트 단위,read_url은fetch/parse를 표시합니다. CLI의 Rich Live 대시보드는 유니코드 스피너, ASCII 진행 표시줄, ETA를 렌더링하고 도구 이름으로 키된 최대 3개의 병렬 도구를 스택 표시합니다. 프런트엔드 채팅에는 새로운ToolProgressIndicator를 추가했으며, rAF 코얼레싱, ARIArole="status"+ 스크린 리더용 숨겨진 네이티브<progress>, 총량을 알 때 결정적ProgressRingSVG로 전환합니다. CLI 실행 중 첫 번째Ctrl+C는 이제agent.cancel()을 호출해 우아하게 종료(현재 단계가 끝나고 trace가 깨끗하게 닫힘)하고, 2초 이내 두 번째는 강제 종료합니다. 재사용 가능한 기본 요소도 추출했습니다:ProgressBar.tsx와lib/tools.ts(공유 도구 이름 i18n). -
2026-05-18 🧹 정리 + 3개의 잠재 버그 수정:
CompositeEngine이 거래소 접미사가 없는 중국 선물 코드(RB2410등)를GlobalFuturesEngine으로 잘못 라우팅하던 문제를 수정했습니다._is_china_futures를 공유_market_hooks모듈로 옮기고, 상품 코드 테이블에 대소문자 정규화 + 비중국 거래소 가드를 추가했으며, 회귀 케이스 9개를 새로 작성했습니다. session FTS5 인덱스가 타임스탬프를 영구 저장하게 되어 크로스 세션 검색에서 날짜 정렬이 가능해졌으며, 동일 변경으로 re-upsert 경로가started_at을 wall-clock으로 덮어쓰던 부수 버그도 해결했습니다. Vite 개발 프록시에 누락되었던/alpha를 추가하여 AlphaZoo 페이지가npm run dev에서 정상 해석됩니다.tests/test_e2e_harness_v2.py(실 LLM e2e 스위트)는VIBE_TRADING_RUN_LIVE_E2E=1로 게이트하여 CI가 환경변수 유무에 따라 형태를 바꾸지 않도록 했습니다. ruff에 factor zoo용per-file-ignores를 추가(F401 잡음 3783 → 0)하고, 프런트엔드 tsconfig에noUnusedLocals/noUnusedParameters를 활성화해 회귀 가드로 두었으며,gtja191alpha 파일들의 사용되지 않는vw = vwap(...)보일러플레이트 76개도 삭제했습니다. 순 -918줄. -
2026-05-17 🧬 Alpha Zoo v1 (0.1.8): 4개 zoo에 걸친 452개의 사전 빌드된 quant alpha를 번들로 제공 —
qlib158(Microsoft Qlib의 Alpha158 특성, Apache-2.0 출처 표기),alpha101(Kakushadze의 "101 Formulaic Alphas"를 arXiv:1601.00991 논문 부록에서 재구현),gtja191(국태군안 2014 단기 거래형 alpha 리서치 보고서),academic(Fama-French 5 + Carhart 모멘텀의 가격 기반 proxy 구현). 한 줄 CLI로 임의 universe에서 벤치:vibe-trading alpha bench --zoo gtja191 --universe csi300 --period 2018-2025. AST 순수 함수 게이트, look-ahead 가드 테스트,pytest-socket네트워크 차단, zoo별 LICENSE.md, 커뮤니티 PR용 DCO 서명 워크플로우 포함. Alpha Library 자동 렌더링: vibetrading.wiki/alpha-library/, Research Lab 글: Which of the 191 GTJA alphas still work in 2026?. -
2026-05-16 🧪 리서치 기반 업데이트: backend Hypothesis Registry를 추가해
create_hypothesis,update_hypothesis,link_backtest,search_hypotheses를 제공합니다. 외부 콘텐츠 reader는 warning-onlysecurity_warnings를 붙이고, Shadow Account scanner는 기존 calendar-phase stub 대신 deterministic OHLCV feature evaluation을 사용합니다. -
2026-05-15 🪪 Run 상세 페이지에서 metrics와 artifacts 옆에 Trust Layer run card를 렌더링해, 2026-05-12에 들어간
run_card.json작업의 UI 측을 마무리합니다.PersistentMemory.add()도 #108/#109/#110 triage에 따라 길이, 빈 문자열 또는 공백만으로 이루어진 name, C0/C1 제어 바이트 경로에서 강화되었습니다(#112, @Teerapat-Vatpitak 감사합니다). -
2026-05-14 🌐 공개 Wiki가 vibetrading.wiki에 열렸고, docs, tutorials, Research Lab, Alpha Library 섹션을 Cloudflare Pages로 배포합니다. 영구 메모리도 이제
vibe-trading memory list/show/search/forget으로 CLI에서 확인할 수 있으며(#102, @Teerapat-Vatpitak 감사합니다), memory tokenization/slug는 태국어, 아랍어, 히브리어, 키릴 문자도 지원합니다(#104). -
2026-05-13 🧭 Swarm 실행은 이제 가져온 시장 데이터로 worker를 grounding하고, 더 깔끔한 영구 리포트를 남깁니다(#93, #84).
-
2026-05-12 🧾 백테스트는 이제 재현 가능한 리서치 실행을 위해 artifacts와 함께
run_card.json및run_card.md를 생성합니다. -
2026-05-11 🧭 Memory slug, swarm 집계, CLI 프리플라이트: 영구 메모리는 파일 slug를 생성할 때 CJK 문자를 보존하여 중국어/일본어/한국어 노트에서 조용한 파일명 충돌이 발생하지 않도록 합니다(#95, @voidborne-d 감사합니다). Swarm 실행 합계는 이제 provider가 보고한 token usage를 우선 사용하고 기존 추정 fallback도 유지합니다(#94, @Teerapat-Vatpitak 감사합니다). CLI 실행 UI에는 일반적인 환경 문제를 확인하는 시작 프리플라이트 체크도 추가되었습니다(#96, @ykykj 감사합니다).
-
2026-05-10 🧱 회귀 가드레일 + run 메타데이터: Memory recall은 이제 밑줄을 token 경계로 취급하므로
mcp_wiring_test같은 snake_case 저장 메모리가 "mcp wiring" 같은 자연어 쿼리와 매칭됩니다(#87, @hp083625 감사합니다). MCP server에는 initialize →tools/list→tools/call경로를 실제 subprocess로 검증하는 smoke test가 추가되어 첫 호출 deadlock 경로를 방지합니다(#86). Windows 경로 민감 테스트, API best-effort 예외 처리, backtestrun_dir허용 루트 검증, SwarmRun provider/model 메타데이터에 대한 저위험 강화도 반영되었습니다(#88, #90, #91, #92, @Teerapat-Vatpitak 감사합니다). -
2026-05-09 🛡️ API 경로 강화 + MCP server 안정성: API run/session 라우트는 조회 전에 path ID를 검증하여 개행이 포함된 잘못된 파라미터를 거부하고, 이 동작을 auth/security 회귀 테스트에 고정했습니다(#80, @SJoon99 감사합니다). MCP server는
tools/call을 제공하기 전에 메인 스레드에서 도구 레지스트리를 미리 워밍업하여 lazy tool discovery의 첫 호출 deadlock을 피합니다(#85, @Teerapat-Vatpitak 감사합니다). Vite dev proxy도 기본값이 아닌 백엔드 타깃을 위해VITE_API_URL을 존중합니다(#82, @voidborne-d 감사합니다). -
2026-05-08 🧾 Tushare 재무제표 필드를 필터에 연결: A주 일간 백테스트에서
fundamental_fields를 통해 PIT-safe 재무제표 필드를 요청할 수 있으므로 signal engine은 공시/공개일 이후income_total_revenue,income_n_income,balancesheet_total_hldr_eqy_exc_min_int,fina_indicator_roe등 테이블 접두사 컬럼으로 선별할 수 있습니다(#76, @mrbob-git 감사합니다). 후속 강화로 명시적 재무제표 필드 요청 시 Tushare enrichment가 실행되지 않으면 원시 가격 bar로 조용히 fallback하지 않고 즉시 실패합니다(#77). -
2026-05-07 📈 Tushare fundamentals + 커뮤니티 정리: 펀더멘털 리서치 워크플로를 위해 point-in-time
TushareFundamentalProvider계약을 추가하고, 프로젝트TUSHARE_TOKEN환경 경로를 회귀 테스트로 고정했습니다(#74). 커뮤니티 정리에서는 Vibe-Trading이 당분간 빠른 반복을 위해 하나의 UI 언어에 집중하고, DuckDuckGo 기반web_search가 이미 번들되어 있으므로 중복 검색 의존성을 추가하지 않으며, 비공식 호스팅 배포를 API 키나 데이터 소스 토큰을 입력할 수 있는 신뢰 지점으로 보지 않는다는 점도 명확히 했습니다. -
2026-05-06 🚀 v0.1.7 릴리스(Release notes,
pip install -U vibe-trading-ai): 보안 경계 강화가 PyPI와 ClawHub에 게시되었습니다. API/read/upload/file/URL/generated-code/shell-tool/Docker 기본값을 더 안전하게 하면서 localhost CLI/Web UI 워크플로는 낮은 마찰을 유지합니다. 이번 사이클에는 Web UI Settings, 상관관계 히트맵, OpenAI Codex OAuth, A주 pre-ST 필터, 대화형 CLI UX, swarm preset inspection, 배당 분석, 개발 워크플로 개선, 감사된 frontend build dependency 하한도 포함됩니다. 0.1.7 기여자들과 조율된 보안 검증을 도와준 lemi9090 (S2W)에게 감사드립니다. -
2026-05-05 🛡️ 보안 경계 후속 조치: 명시적 CORS origin, Settings credential indicator, web URL reading, Shadow Account code generation 주변의 남은 보안 경계 강화를 완료하고 각 경로에 회귀 테스트를 추가했습니다. 일반적인 localhost CLI/Web UI 워크플로는 그대로 유지되며, 원격 배포는 계속
API_AUTH_KEY와 명시적인 trusted origin을 사용해야 합니다. -
2026-05-04 🖥️ 대화형 CLI UX + CI 정리: 대화형 모드에 provider/model, 세션 시간, 직전 실행 latency, 누적 tool-call 통계를 보여주는 live bottom status bar가 추가되었고,
prompt_toolkit을 통해 방향키 기반 prompt history 탐색과 cursor editing을 지원합니다(#69).prompt_toolkit또는 TTY를 사용할 수 없으면 CLI는 여전히 Rich prompt로 fallback합니다. 강화된 file-import sandbox와 cross-platform/tmp해석에 맞춰 CI path expectation도 정렬되어 main이 다시 green 상태가 되었습니다(bb67dc7). -
2026-05-03 🛡️ 보안 강화 패치: 비로컬 배포의 기본 API 인증을 강화하고, 민감한 run/session/swarm read를 보호하며, upload와 local file-reading 경계를 제한하고, shell-capable tool을 entry point별로 제어하며, 생성 전략을 import 전에 검증하고, Docker image를 기본적으로 non-root 사용자와 localhost-only published port로 실행합니다. Local CLI와 localhost Web UI 워크플로는 낮은 마찰을 유지하며, 원격 API/Web 배포는
API_AUTH_KEY를 설정해야 합니다. -
2026-05-02 🧭 배당 분석 + 더 선명한 로드맵: income stock, payout sustainability, dividend growth, shareholder yield, ex-dividend mechanics, yield-trap check를 위한
dividend-analysis스킬을 추가하고 bundled-skill 회귀 테스트로 고정했습니다. 공개 로드맵은 Research Autopilot, Data Bridge, Options Lab, Portfolio Studio, Alpha Zoo, Research Delivery, Trust Layer, Community sharing에 집중하도록 정리되었습니다. -
2026-05-01 🔥 상관관계 히트맵 + OpenAI Codex OAuth + A주 pre-ST 필터: 새 correlation dashboard/API가 rolling return correlation을 계산하고 포트폴리오 및 종목 분석용 ECharts heatmap을 렌더링합니다(#64). OpenAI Codex provider support는 이제
vibe-trading provider login openai-codex를 통해 ChatGPT OAuth를 사용하며, Settings metadata와 adapter regression test가 포함됩니다(#65). A주 ST/*ST 리스크 스크리닝용ashare-pre-st-filter스킬도 추가 및 강화되었고, Sina penalty relevance filtering으로 securities-account 언급이 E2 count를 부풀리지 않도록 했습니다(#63). -
2026-04-30 ⚙️ Web UI Settings + validation CLI 강화: LLM provider/model, base URL, reasoning effort, data source credential을 위한 새 Settings page가 추가되었고, local/auth-protected settings API와 data-driven provider metadata가 이를 뒷받침합니다(#57). 또한
python -m backtest.validation <run_dir>가 missing, blank, malformed, non-existent, non-directory input을 validation 시작 전에 operator-facing message로 명확히 실패하도록 강화했습니다(#60). -
2026-04-28 🚀 v0.1.6 릴리스(
pip install -U vibe-trading-ai):pip install/uv tool install이후vibe-trading --swarm-presets가 비어 있던 문제를 수정했습니다(#55). preset YAML은 이제src.swarm패키지 내부에 번들되며 6개 테스트 회귀 suite로 고정됩니다. AKShare loader도 ETF(510300.SH)와 forex(USDCNH)를 올바른 endpoint로 routing하고 registry fallback을 강화했습니다. v0.1.5 이후의 benchmark comparison panel,/uploadstreaming + size limit, Futu loader(HK + A주), vnpy export skill, security hardening, frontend lazy loading(688KB → 262KB)을 모두 포함합니다. -
2026-04-27 📊 벤치마크 패널 + 업로드 안전성: 백테스트 출력에 yfinance 기반 SPY, CSI 300 등 resolution을 사용하는 benchmark comparison panel(ticker / benchmark return / excess return / information ratio)이 포함됩니다(#48). 또한
/upload는 request body를 1MB chunk로 streaming하고MAX_UPLOAD_SIZE초과 시 중단하여 oversized/malformed client에서도 메모리를 제한합니다(#53). 4-case regression suite로 고정되었습니다. -
2026-04-22 🛡️ 하드닝 + 신규 통합:
safe_path와 journal/shadow tool sandbox에서 path containment를 강제하고,MANIFEST.in이 sdist에.env.example/ tests / Docker files를 포함하며, route-level lazy loading으로 frontend initial bundle을 688KB → 262KB로 줄였습니다. Futu data loader for HK & A-share equities(#47)와 vnpy CtaTemplate export skill(#46)도 추가되었습니다. -
2026-04-21 🛡️ 워크스페이스 + 문서: 상대
run_dir이 active run dir로 정규화되었습니다(#43). README usage example도 추가되었습니다(#45). -
2026-04-20 🔌 Reasoning + Swarm: 모든
ChatOpenAI경로에서reasoning_content가 보존되어 Kimi / DeepSeek / Qwen thinking이 end-to-end로 작동합니다(#39). Swarm streaming과 깔끔한 Ctrl+C 처리도 반영되었습니다(#42). -
2026-04-19 📦 v0.1.5: PyPI와 ClawHub에 게시되었습니다.
python-multipartCVE floor bump, 신규 MCP tools 5개 연결(analyze_trade_journal+ 4 shadow-account tools),pattern_recognition→patternregistry fix, Docker dependency parity, SKILL manifest sync(22 MCP tools / 71 skills)가 포함됩니다. -
2026-04-18 👥 Shadow Account: broker journal에서 전략 규칙 추출 → 여러 시장에서 shadow backtest → 규칙 위반, 조기 청산, 놓친 signal, counterfactual trade를 통해 정확히 얼마를 놓치는지 보여주는 8-section HTML/PDF report. 신규 tools 4개, skill 1개, 총 tools 32개. Trade Journal + Shadow Account sample은 이제 web UI welcome screen에 있습니다.
-
2026-04-17 📊 Trade Journal Analyzer + Universal File Reader: broker export(同花顺/东财/富途/generic CSV) 업로드 → auto trading profile(holding days, win rate, PnL ratio, drawdown) + 4가지 bias diagnostics(disposition effect, overtrading, chasing momentum, anchoring).
read_document는 이제 PDF, Word, Excel, PowerPoint, image(OCR), 40+ text format을 하나의 unified call로 dispatch합니다. -
2026-04-16 🧠 Agent Harness: persistent cross-session memory, FTS5 session search, self-evolving skills(full CRUD), 5-layer context compression, read/write tool batching. tools 27개, 신규 tests 107개.
-
2026-04-15 🤖 Z.ai + MiniMax: Z.ai provider(#35), MiniMax temperature fix + model update(#33). providers 13개.
-
2026-04-14 🔧 MCP 안정성: stdio transport에서 backtest tool
Connection closederror를 수정했습니다(#32). -
2026-04-13 🌐 Cross-Market Composite Backtest: 새
CompositeEngine이 A주 + crypto 같은 mixed-market portfolio를 shared capital pool과 per-market rule로 backtest합니다. swarm template variable fallback과 frontend timeout도 수정되었습니다. -
2026-04-12 🌍 Multi-Platform Export:
/pine은 TradingView(Pine Script v6), TDX(通达信/同花顺/东方财富), MetaTrader 5(MQL5)로 전략을 한 번에 내보냅니다. -
2026-04-11 🛡️ Reliability & DX:
vibe-trading init.env bootstrap(#19), preflight checks, runtime data-source fallback, hardened backtest engine. Multi-language README(#21). -
2026-04-10 📦 v0.1.4: Docker fix(#8),
web_searchMCP tool, LLM providers 12개,akshare/ccxtdependencies. PyPI와 ClawHub에 게시되었습니다. -
2026-04-09 📊 Backtest Wave 2: ChinaFutures, GlobalFutures, Forex, Options v2 engines. Monte Carlo, Bootstrap CI, Walk-Forward validation.
-
2026-04-08 🔧 Multi-market backtest with per-market rules, Pine Script v6 export, 5 data sources with auto-fallback.
✨ 주요 기능
💡 Vibe-Trading이란?
Vibe-Trading은 금융 질문을 실행 가능한 분석으로 바꾸는 오픈소스 리서치 워크스페이스입니다. 자연어 프롬프트를 시장 데이터 로더, 전략 생성, 백테스트 엔진, 리포트, 내보내기, 영구 리서치 메모리와 연결합니다.
리서치, 시뮬레이션, 백테스팅을 위해 설계되었습니다 — 그리고 원하신다면, 사용자가 직접 인가한 브로커(예: Robinhood Agentic Trading)를 통한 자율 거래도 가능합니다. 자금을 일절 보유하지 않고, 사용자가 설정한 한도를 결코 넘지 않으며, 언제든 즉시 중단할 수 있습니다.
✨ 무엇을 할 수 있나요?
| 작업 | 출력 |
|---|---|
| 트레이딩 질문하기 | 도구, 데이터, 문서, 재사용 가능한 세션 컨텍스트를 활용한 시장 리서치. |
| 전략 아이디어 백테스트 | 전략 코드, 지표, 벤치마크 컨텍스트, 검증 artifacts, run cards. |
| 내 거래 검토하기 | 브로커 일지 파싱, 행동 진단, 규칙 추출, Shadow Account 비교. |
| 문서와 차트 읽기 | 플러그형 OCR로 PDF / DOCX / XLSX / PPTX / 이미지를 파싱하고(read_document), 비전 모델로 차트 스크린샷을 의미 단위로 읽습니다(analyze_image). |
| 기관 보고서와 펀드 편입종목 읽기 | SEC 13F 보유(분기 대비 증감 포함), 시장을 가로지르는 ETF 구성종목, 이벤트 계약 내재확률, arXiv / OpenAlex 팩터 추출 — 모두 읽기 전용, 무료 공개 데이터. |
| 반복 리서치 개선하기 | 영구 메모리와 편집 가능한 스킬로 유용한 루틴을 재사용 가능한 워크플로로 전환. |
| 애널리스트 팀 실행하기 | 투자, 퀀트, 크립토, 매크로, 리스크 워크플로를 위한 멀티 에이전트 리서치 리뷰. |
| 리서치를 IM 채널에 연결하기 | WebSocket, Telegram, Slack, Discord, Matrix, WhatsApp, Signal, QQ/NapCat, WeChat/WeCom, Feishu/Lark, DingTalk, Teams, email, Mochat에서 같은 session runtime을 CLI, REST, Web UI로 관리. |
| 사용 가능한 artifacts 만들기 | 리포트, TradingView Pine Script, TDX, MetaTrader 5, MCP tools, 이후 리서치 세션. |
| 사전 빌드된 alpha zoo 벤치 | 462개의 alpha 인자(Qlib 158 + Kakushadze 101 + GTJA 191 + academic + PIT-safe fundamental)에 대해 한 줄 CLI로 IC + IR + alive/reversed/dead 분류 수행 |
| 상관관계 국면 포착하기 | /correlation 화면의 엣지 밀도 + 히스테리시스 타임라인으로 시장이 한 덩어리로 움직이기 시작하는 시점을 보여줍니다 — 시그널이 아니라 서술적 리스크 컨텍스트입니다. |
⚡ 빠른 예제
pip install vibe-trading-ai
# 자연어 리서치
vibe-trading run -p "Backtest a BTC-USDT 20/50 moving-average strategy for 2024, summarize return and drawdown, then export the report"
# 한 줄로 사전 빌드된 alpha zoo 벤치
vibe-trading alpha bench --zoo gtja191 --universe csi300 --period 2018-2025 --top 20
vibe-trading --upload trades_export.csv
vibe-trading run -p "Analyze my trading behavior, extract my shadow strategy, and compare it with my actual trades"
👥 섀도우 계정
Shadow Account는 일반적인 전략 템플릿이 아니라 사용자의 실제 거래 기록에서 시작합니다.
브로커 export를 업로드하고 에이전트가 행동을 요약하게 한 뒤, 실제 거래 경로를 규칙 기반 shadow strategy와 비교합니다.
| 단계 | 에이전트 출력 |
|---|---|
| 1. 일지 읽기 | 同花顺, 东方财富, 富途, generic CSV 형식의 브로커 export를 파싱합니다. |
| 2. 행동 프로파일링 | 보유 일수, 승률, 손익비, drawdown, disposition effect, overtrading, momentum chasing, anchoring 점검. |
| 3. 규칙 추출 | 반복되는 진입/청산을 모호한 요약이 아닌 명시적인 strategy profile로 변환합니다. |
| 4. Shadow 실행 | 추출된 규칙을 백테스트하고 규칙 위반, 조기 청산, 놓친 signal, 대안 거래 경로를 강조합니다. |
| 5. 리포트 제공 | 나중에 점검, 보관, 개선할 수 있는 HTML/PDF 리포트를 생성합니다. |
vibe-trading --upload trades_export.csv
vibe-trading run -p "Analyze my trading behavior, extract my shadow strategy, and compare it with my actual trades"
🧪 리서치 워크플로
대부분의 실행은 같은 evidence path를 따릅니다. 요청을 라우팅하고, 적절한 시장 컨텍스트를 로드하고, 도구를 실행하고, 출력을 검증하며, artifacts를 점검 가능한 상태로 유지합니다.
| 계층 | 수행 내용 |
|---|---|
| Plan | 유용한 경우 관련 finance skills, tools, data sources, swarm preset을 선택합니다. |
| Ground | 사용 가능한 loader로 A주, HK/US/캐나다 주식, 크립토, 선물, 외환, 문서, 웹 컨텍스트를 가져옵니다. |
| Execute | 테스트 가능한 전략 코드를 생성하고, 도구를 실행하며, 적절한 backtest engine 또는 analysis workflow를 사용합니다. |
| Validate | 지표, benchmark comparison, Monte Carlo, Bootstrap, Walk-Forward, run cards, 관련 warning을 추가합니다. |
| Deliver | TradingView, TDX, MetaTrader 5, MCP client, 이후 세션을 위한 리포트, artifacts, tool traces, exports를 반환합니다. |
📡 데이터 소스 & 스마트 폴백
get_market_data 한 번의 호출, 23개 무료 시장 데이터 소스(선택형 유료 마켓플레이스 QVeris 별도). source: "auto"로 설정하면 로더가 심볼에 따라 소스를 고르고, 시장별 체인을 IP 차단 위험 순으로 따라갑니다: 절대 차단되지 않는 공개 소스를 먼저, 속도 제한 / 키 기반 소스를 마지막에 둡니다. 설정 불필요, 단일 장애 지점 없음.
| Source | Markets | Auth | Role |
|---|---|---|---|
tencent · mootdx |
A-share + HK | none | never IP-banned (mootdx = 通达信 TCP) |
eastmoney |
A / US / HK | none | OHLCV + deep fundamentals & flow tools (throttled) |
baostock · akshare |
A (+ US/HK/futures/macro/fx) | none | free fallbacks |
tushare |
A / HK / futures / fund / macro | token | richest A-share |
yahoo |
US / HK / 캐나다 | none | direct chart/quotes/options; TSX .TO / TSXV .V |
sina · stooq |
US | none | K-line to 1984 · EOD CSV |
yfinance |
US / HK / 캐나다 | none | wrapper; TSX .TO / TSXV .V 그대로 사용 |
longbridge |
US / HK | App Key + App Secret + Access Token | optional historical OHLCV source; install the optional SDK |
finnhub · alphavantage · tiingo · fmp |
US | key | optional providers |
qveris |
글로벌 멀티에셋 | key · credits | 프리미엄 마켓플레이스 — key 하나로 63+ providers (명시 지정 전용, auto 폴백 제외) |
okx · ccxt · binance |
crypto | none | OKX + 100+ exchanges + Binance historical / USD-M perps |
futu |
HK / A | OpenD | optional local FutuOpenD |
mt5 |
forex / metals | MT5 terminal | MetaTrader 5 (Exness-style) forex / metal bars, 1m–1D |
pykrx |
한국 (KRX: KOSPI/KOSDAQ) | 없음 | .KS / .KQ용 KOSPI / KOSDAQ 일봉 (선택적 krx extra) |
india_broker |
인도 (NSE/BSE) | 브로커 로그인 | .NS / .BO용 읽기 전용 Shoonya / Dhan 봉 (폴백 체인 말단) |
local |
any | none | your own CSV / Parquet / DuckDB via local: prefix |
폴백 체인 (IP 차단 위험 순):
- A주 →
tencent·mootdx·eastmoney·baostock·akshare·tushare·local - 미국 →
yahoo·stooq·sina·eastmoney·yfinance·tiingo·fmp·finnhub·alphavantage·longbridge·akshare·local - 홍콩 →
tencent·eastmoney·yahoo·futu·akshare·yfinance·tushare·longbridge·local - 인도 (NSE/BSE) →
yahoo·yfinance·india_broker·local - 한국 (KOSPI/KOSDAQ) →
pykrx·yahoo·yfinance·local - 크립토 →
okx·ccxt·binance·yfinance·local - 외환/귀금속 →
mt5·yfinance·akshare·local· (선물 / 펀드 / 매크로 →tushare/akshare→local)
Longbridge를 명시적으로 사용하기
Longbridge는 미국/홍콩 주식의 과거 OHLCV를 제공하는 선택적 loader입니다. SDK 설치:
pip install "vibe-trading-ai[longbridge]"
.env에 자격 증명 3개를 설정하세요:
LONGBRIDGE_APP_KEY=...
LONGBRIDGE_APP_SECRET=...
LONGBRIDGE_ACCESS_TOKEN=...
백테스트에서는 config.json의 source를 지정합니다:
{
"codes": ["QQQ.US"],
"start_date": "2025-01-01",
"end_date": "2025-01-10",
"interval": "1D",
"source": "longbridge"
}
Agent 대화에서는 명시적으로 요청하세요: "Longbridge로 QQQ.US 과거 데이터를 가져와줘." 이 명시적 소스 지정은 source: "auto"와 별개이며, auto는 시장별 기본 폴백 체인을 그대로 사용합니다.
OHLCV를 넘어 22개 읽기 전용 데이터 도구가 펀더멘털과 자금 흐름까지 닿습니다 — 자금 흐름, 용호방(dragon-tiger), 북향(northbound), 신용거래, 대종거래, 주주 수, 보호예수, 섹터, 리서치 리포트, 뉴스, SEC 공시, 재무제표, 옵션 체인, 종목 프로필, 시장 스크리닝, 심볼 검색, 매크로, 원차이(iwencai), 기관 보유(13F), ETF 룩스루, 예측 시장, 논문 검색 — 모두 MCP로 노출됩니다. 명시적인 local: 심볼은 절대 조용히 네트워크 소스로 폴백하지 않습니다.
💎 선택형 프리미엄 데이터 — QVeris
데이터는 기본 무료 라우팅, 필요할 때만 프리미엄. 기본값은 23개 내장 소스와 차단 위험 기반 폴백이며 key도 비용도 없습니다. QVeris를 켜면 63+ providers와 10,000+ capabilities(per QVeris)로 옵션 Greeks, 고급 펀더멘털, 중국/홍콩/글로벌 데이터, 매크로, 크립토, 뉴스, filings를 보강할 수 있고 실패한 호출은 과금되지 않습니다. Settings → QVeris 또는 vibe-trading data mode paid에서 활성화하세요.
QVeris disclosure: Vibe-Trading 추천 링크로 가입하면 +1,000 크레딧을 추가로 받고 프로젝트를 후원하게 됩니다.
🔩 상세 기능
메인 README를 읽기 쉽게 유지하기 위해 상세 목록은 아래에 접어 두었습니다. 사용 가능한 구성 요소를 확인하고 싶을 때 열어보세요.
금융 스킬 라이브러리 9개 카테고리 89개 스킬
- 📊 9개 카테고리로 구성된 89개 전문 금융 스킬
- 🌐 전통 시장부터 크립토 & DeFi까지 완전한 커버리지
- 🔬 데이터 sourcing부터 정량 리서치까지 포괄하는 기능
| 카테고리 | 스킬 | 예시 |
|---|---|---|
| Data Source | 10 | data-routing, tushare, yfinance, okx-market, akshare, mootdx, ccxt, eastmoney, sec-edgar, qveris |
| Strategy | 19 | strategy-generate, cross-market-strategy, technical-basic, candlestick, ichimoku, elliott-wave, smc, multi-factor, ml-strategy |
| Analysis | 23 | factor-research, correlation-regime, macro-analysis, global-macro, valuation-model, investor-lenses, credit-analysis, dividend-analysis |
| Asset Class | 9 | options-strategy, options-advanced, convertible-bond, etf-analysis, asset-allocation, sector-rotation |
| Crypto | 7 | perp-funding-basis, liquidation-heatmap, stablecoin-flow, defi-yield, onchain-analysis |
| Flow | 8 | hk-connect-flow, us-etf-flow, edgar-sec-filings, financial-statement, adr-hshare |
| Tool | 10 | backtest-diagnose, report-generate, pine-script, doc-reader, web-reader, vnpy-export, trade-journal |
| Research | 2 | alpha-zoo, strategy-dev-manager |
| Risk Analysis | 1 | ashare-pre-st-filter |
커스텀 데이터 소스 직접 만든 과거 OHLCV loader 등록
loader를 기본 제공하지 않는 시장이나 벤더가 필요하신가요? 직접 과거 봉 loader를
추가하고 source="<name>"으로 선택하세요. 아래 단계는 패키지 소스를 수정하므로
clone에서 실행하세요(pip install -e .).
-
loader 작성 ——
agent/backtest/loaders/<name>_loader.py를 만들고DataLoaderProtocol을 만족하는 클래스(duck-typed, 기반 클래스 불필요)를 정의한 뒤@register를 붙입니다:import pandas as pd from backtest.loaders.registry import register @register class DataLoader: name = "mysource" # the value you pass as source= markets = {"us_equity"} # a_share/us_equity/hk_equity/crypto/futures/fund/macro/forex requires_auth = False def is_available(self) -> bool: return True # token present? network reachable? def fetch(self, codes, start_date, end_date, *, interval="1D", fields=None): # return {symbol: DataFrame indexed by trade_date, # columns: open, high, low, close, volume} ... -
모듈 등록 으로
@register가 실행되게 ——agent/backtest/loaders/registry.py의_loader_modules에"backtest.loaders.<name>_loader"를 추가합니다. -
이름 허용 으로 설정 검증 통과 ——
agent/backtest/runner.py의_VALID_SOURCES에"mysource"를 추가합니다. -
(선택)
registry.py의 특정 시장FALLBACK_CHAINS에 넣으면source="auto"로도 도달할 수 있습니다. -
사용 —— 백테스트 설정에서
source="mysource", 또는 CLI / agent를 통해.
실시간 ticks / 호가창 depth는 loader 범위 밖입니다 —— loader 계층은 point-in-time 과거 봉만 다룹니다. 실시간 시장 데이터는 broker connector를 통합니다: 암호화폐는
okx/binance/ccxt, 주식은futu/tiger.
브로커 커넥터 13개 브로커 — read + paper, 지원 시 bounded-live
connector-first 프로필. 대부분의 브로커가 read + 페이퍼 계정 주문 실행을 지원하지만 IBKR은 읽기 전용이고, Robinhood는 페이퍼 계정 없이 실거래 전용이며, Trading 212는 페이퍼를 포함해 주문 실행을 모두 거부하고, 실거래 주문 실행은 사용자 정의 mandate(심볼 허용목록, 주문 크기 / 익스포저 상한, 일일 거래 한도, 즉시 kill switch)로 제한되고 자금을 보관하지 않습니다 — 실행은 브로커가 합니다. 주문 실행 도구는 MCP에 노출되지 않습니다(agent + CLI 전용). 리서치 / 백테스트 경로는 구조적으로 모든 실거래 엔드포인트에서 차단됩니다.
| Broker | Markets | Capabilities |
|---|---|---|
| IBKR | global | local TWS / Gateway, read-only |
| Robinhood | US | Agentic MCP (desktop OAuth) — read + bounded live |
| Tiger | US / HK / A | read + paper + bounded live |
| Alpaca | US | read + paper + bounded live (+ TAP credential-isolation mode) |
| OKX · Binance | crypto | read + paper + bounded live |
| Futu | HK / US / A | read + paper + bounded live |
| eToro | global | read + paper + bounded live (Public API; demo 키는 구조적으로 /demo 경로에만 도달하며, 카피 트레이딩 워크플로도 지원) |
| MetaTrader 5 | forex / CFD | read + paper + bounded live (Exness-style; demo ⇔ paper identity guard) |
| Longbridge · Dhan · Shoonya | US / HK · India (NSE/BSE) | read + paper only — no runtime paper/live discriminator, so live order placement is hard-refused |
| Trading 212 | UK / EU | fully read-only — place_order / cancel_order hard-refuse even paper |
Paper-vs-live는 구조적 브로커별 런타임 가드(account-id 형식, 호스트 분리, demo 플래그, 또는 trade environment)이며, agent가 뒤집을 수 있는 config 플래그가 아닙니다. 그런 구분자를 노출하지 않는 브로커는 페이퍼 + 읽기 전용으로 제한됩니다.
프리셋 트레이딩 팀 30개 swarm preset
- 🏢 바로 사용할 수 있는 30개 에이전트 팀
- ⚡ 사전 구성된 금융 워크플로
- 🎯 투자, 트레이딩, 리스크 관리 preset
| 프리셋 | 워크플로 |
|---|---|
investment_committee |
bull/bear 토론 → 리스크 리뷰 → PM 최종 판단 |
global_equities_desk |
A주 + HK/US + 크립토 리서처 → 글로벌 전략가 |
crypto_trading_desk |
funding/basis + liquidation + flow → 리스크 매니저 |
earnings_research_desk |
펀더멘털 + revision + options → 실적 전략가 |
macro_rates_fx_desk |
rates + FX + commodity → macro PM |
quant_strategy_desk |
screening + factor research → backtest → risk audit |
technical_analysis_panel |
classic TA + Ichimoku + harmonic + Elliott + SMC → consensus |
risk_committee |
drawdown + tail risk + regime review → sign-off |
global_allocation_committee |
A주 + 크립토 + HK/US → cross-market allocation |
추가로 20개 이상의 전문 preset이 있습니다. 전체 목록은 vibe-trading --swarm-presets로 확인하세요.
Alpha Zoo 5개 패밀리에 걸친 462개 사전 빌드된 quant alpha
- 🧬 operator 계층에서 lookahead가 금지된 462개 cross-sectional alpha
- 📈 한 줄 CLI로 IC + IR + alive/reversed/dead 분류 수행
- 🔬 AST 순수성 게이트 + 300-row lookahead sentinel 테스트 +
pytest-socket네트워크 kill-switch - 📦 Qlib에 대한 Apache-2 출처 표기, zoo별
LICENSE.md에서 수식을 수학적 콘텐츠로 명시 - 🤝 커뮤니티 PR을 위한 Developer Certificate of Origin (DCO) 서명 워크플로
| Zoo | Count | Source | License |
|---|---|---|---|
| qlib158 | 154 | Microsoft Qlib Alpha158 (Apache-2.0, 커밋 고정) |
Apache-2.0 |
| alpha101 | 101 | Kakushadze (2015), "101 Formulaic Alphas", arXiv:1601.00991 | 수식은 수학적 콘텐츠 |
| gtja191 | 191 | 국태군안 (2014), "191 Short-period Trading Alpha Factors" | 수식은 수학적 콘텐츠 |
| academic | 12 | Fama-French 5 + Carhart 모멘텀 (가격 기반 proxy) + Jegadeesh reversal + George-Hwang 52-week-high + Amihud illiquidity + Harvey-Siddique skew + Frazzini-Pedersen betting-against-beta + correlation-rewiring stability | 공개 학술 문헌 |
| fundamental | 4 | PIT-safe SEC company facts — earnings yield, ROE, gross profitability, asset growth (filed-date 기준) | 공개 재무 데이터 |
vibe-trading alpha list로 카탈로그를 탐색하고, vibe-trading alpha show <id>로 수식과 소스 코드를 확인하며, vibe-trading alpha bench --zoo X --universe Y --period Z로 zoo 전체를 점수화하고, vibe-trading alpha compare --all로 zoo들을 나란히 순위화하세요.
백테스트 엔진 9개 엔진 + 옵션 포트폴리오, 크로스마켓 composite
| Engine | Market | Notes |
|---|---|---|
| ChinaA | A-share | T+1, price limits, pre-ST filter |
| GlobalEquity | US / HK / 캐나다 | 동일 세션 거래, 시장별 주문 단위·호가·비용 |
| IndiaEquity | India (NSE/BSE) | T+1, circuit bands, config-driven STT / stamp / SEBI / GST cost stack |
| KoreaEquity | 한국 (KRX: KOSPI/KOSDAQ) | 롱 온리, 통합 호가 단위에서 ±30% 가격제한폭을 체결 시점에 판정, 2026년 0.20% 증권거래세 |
| Crypto | crypto spot / USD-M perps | funding settlements, execution/mark split |
| ChinaFutures · GlobalFutures | futures | margin, contract multipliers |
| Forex | FX / metals | via the mt5 loader |
| Composite | cross-market | one shared capital pool across markets (source="auto") |
| options_portfolio | options | multi-leg, Greeks, payoff/scenario |
Intraday bars: 1m / 5m / 15m / 30m / 1H / 4H / 1D. 15 metrics + benchmark comparison, 5 portfolio optimizers (equal-volatility / risk-parity / mean-variance / max-diversification / turnover-aware), and 3 validation tools (Monte Carlo / Bootstrap / Walk-Forward).
Quant Library 19개 모듈 265개의 테스트된 함수, 모든 경로에서 호출 가능
src/quantlib는 agent가 필요로 하는 각 금융 수학에 대해 테스트된 구현을 하나씩만
보유합니다. skill은 이제 이 함수들을 import하며, markdown 코드 블록 안에 수식을
품고 있지 않습니다 — SKILL.md 안에 가격 산식이 살고 있다면 그것은 패턴이 아니라
버그입니다.
| 모듈 | 다루는 범위 |
|---|---|
options |
Black-Scholes 가격 + greeks, 내재변동성 역산 |
fixedincome |
채권 수학, Nelson-Siegel / Svensson 커브 피팅 |
credit |
Altman Z-score, Merton / KMV 부도거리 |
timeseries |
정상성, 공적분, GARCH, bootstrap |
risk · var_backtest |
VaR / CVaR / EVT 및 그 백테스트 |
attribution |
Brinson-Fachler 성과요인 분해 |
performance · fundmath |
TWR / MWR / Modified Dietz; XIRR / MOIC / DPI / TVPI |
factormodel · eventstudy |
팩터 회귀, 이벤트 스터디 |
multipletesting · crossvalidation |
다중검정 보정, purged CV |
impact |
시장충격 모델 |
읽기 전용 quantlib_call 도구가 하나의 계약으로 전체에 도달하므로, bash가 차단된
CLI·Web UI·REST API·MCP에서도 금융 수학이 동작합니다. 구조적으로 shell이 아닙니다 —
모듈 허용 목록, __all__ 전용 디스패치, export_* 거부. 계량경제 함수는 stats
엑스트라(pip install "vibe-trading-ai[stats]")가 필요하며, 지연 임포트하면서 무엇이
빠졌는지 알려줍니다.
밸류에이션 & 기관 리서치 DCF, 컴프스, 재무제표 연동, 그리고 여섯 개의 리서치 커맨드
입력을 스스로 지어내기를 거부하는 밸류에이션 엔진입니다. contracts.py의 유일한
규칙: 입력이 빠지면 모델은 실행 불가(NOT RUNNABLE)이며, 조용히 기본값으로 채우지
않는다 — 밸류에이션 모델의 모든 기본값은 상수의 옷을 입은 견해이기 때문입니다.
| 모델 | 알아둘 동작 |
|---|---|
run_dcf |
FCFF 브리지, WACC 구성, 기중 할인, 순부채 브리지, WACC×g 민감도 그리드. 이중 터미널 밸류: 각 방식을 상대 방식의 내재 배수와 내재 g로 교차 검증 |
run_comps |
EV 브리지, LTM + 역년 캘린더화, 배수 행렬. 분모가 양수가 아닌 피어는 제외하고 보고하며, 음수 배수로 평균에 섞지 않습니다 |
threestatement |
연동 추정. 강제 밸런스 단언, 명시적 리볼버 플러그, 수렴하지 않으면 raise하는 이자↔부채 순환 반복 |
산출물은 입력 해시 기반으로 버전 관리되며 xlsx / pptx로 내보낼 수 있습니다.
6개의 슬래시 커맨드가 워크플로를 구동합니다 — /comps /dcf /attrib /memo
/earnings /screen — 각각 단계 골격과 산술적으로 정합한 예시를 갖고 있습니다
(Brinson 분해는 액티브 리턴에 정확히 합산되고, 실적 브리지는 EPS 변화에 정확히
합산됩니다). investor-lenses skill은 유명 투자자의 사고 프레임워크를 분석 오버레이로
쌓습니다: 각 렌즈는 우선 신호·탈락 조건·전형적 오용으로 이루어진 운영 절차이며,
인물 전기가 아니고 어떤 도구도 지목하지 않습니다.
바 외에도 src/entities가 불규칙 일자의 현금흐름(NAV, 캐피털 콜, 쿠폰)을 수집하고,
cashflow_performance가 그 위에서 XIRR / MOIC / DPI / TVPI / TWR / Modified Dietz /
MWR를 산출합니다. 이 경로는 바 엔진과 의도적으로 평행하게 설계되어, nav 컬럼이
바 엔진에 도달해 종가로 가격이 매겨지는 일이 결코 없습니다.
거버넌스 & 감사 추적 "그 숫자는 어떤 방법론이 만들었나?"에 답하기
모든 실행은 프롬프트, skill 내용, 도구 레지스트리, 패키지 버전을 해시한 manifest를 기록합니다. 한 달 전에 나온 숫자도 그것을 만든 정확한 방법론까지 추적할 수 있습니다.
감사 원장은 각 레코드를 직전 레코드의 해시에 연결하고 fsync하므로, 레코드의 수정이나
삭제를 탐지할 수 있습니다 — 자신의 해시까지 다시 계산한 수정이라도 바로 다음 레코드에서
prev_hash_mismatch로 잡힙니다. 타임스탬프는 항상 호출자가 제공하며, 이 모듈은
datetime.now()를 호출하지 않습니다.
트레이스 마스킹은 sink 단위입니다: 도구 호출 인자와 실시간 감사 원장은 fail-closed
sink를 사용해 content를 마스킹된 상태로 두고, 도구 결과 sink만 content를 해제하며
그 문자열 리프를 패턴 세척합니다. env는 어느 쪽에서도 해제되지 않습니다.
🎬 데모
|
https://github.com/user-attachments/assets/4e4dcb80-7358-4b9a-92f0-1e29612e6e86 |
https://github.com/user-attachments/assets/3754a414-c3ee-464f-b1e8-78e1a74fbd30 |
| ☝️ 자연어 백테스트 & 멀티 에이전트 swarm 토론 — Web UI + CLI | |
🚀 빠른 시작
한 줄 설치 (PyPI)
pip install vibe-trading-ai
첫 리서치 작업을 실행하세요:
vibe-trading init
vibe-trading run -p "Backtest a BTC-USDT 20/50 moving-average strategy for 2024 and summarize return and drawdown"
이전 버전에서 업그레이드하시나요? 0.1.10은 LangChain 1.x로 이전했습니다. 0.1.10 이전 설치 위에서
pip install -U vibe-trading-ai를 실행한 후 임포트가 깨지면(예: langgraph 임포트 실패) venv를 다시 만들거나pip install --force-reinstall vibe-trading-ai를 실행하세요. 새로 설치한 경우에는 영향이 없습니다.
패키지 이름 vs 명령: PyPI 패키지는
vibe-trading-ai입니다. 설치하면 세 가지 명령을 사용할 수 있습니다:
Command Purpose vibe-trading대화형 CLI / TUI vibe-trading serveFastAPI 웹 서버 실행 vibe-trading-mcpMCP 서버 시작(Claude Desktop, OpenClaw, Cursor 등)
vibe-trading init # interactive .env setup
vibe-trading # launch CLI
vibe-trading serve --port 8899 # launch web UI
vibe-trading-mcp # start MCP server (stdio)
또는 경로 선택
| 경로 | 적합한 용도 | 시간 |
|---|---|---|
| A. Docker | 즉시 체험, 로컬 설정 없음 | 2분 |
| B. Local install | 개발, 전체 CLI 접근 | 5분 |
| C. MCP plugin | 기존 에이전트에 연결 | 3분 |
| D. ClawHub | 한 번의 명령, clone 불필요 | 1분 |
사전 요구사항
- 지원 provider 중 하나의 LLM API key 또는 Ollama 로컬 실행(key 불필요)
- 경로 B용 Python 3.11+
- 경로 A용 Docker
- OpenAI Codex도 ChatGPT OAuth로 사용할 수 있습니다.
LANGCHAIN_PROVIDER=openai-codex를 설정한 뒤vibe-trading provider login openai-codex를 실행하세요. 이 방식은OPENAI_API_KEY를 사용하지 않습니다.
지원 LLM provider: OpenRouter, Requesty, OpenAI, Anthropic (native Messages API), DeepSeek, Gemini, Groq, DashScope/Qwen, Zhipu, Moonshot/Kimi, MiniMax, SiliconFlow (CN + Global), Xiaomi MIMO, iFlytek Spark, Z.ai, NVIDIA NIM, ModelScope, Ollama(local).
*_BASE_URL이 설정되지 않으면 각 provider는 canonical endpoint로 폴백하므로 key만 있으면 충분합니다. 설정은.env.example을 참고하세요.
팁: 자동 fallback 덕분에 모든 시장은 API key 없이도 작동합니다. yfinance/Yahoo(HK/US/캐나다), OKX(crypto), mootdx(A주, TCP 직결, IP 제한 없음), AKShare(A주, US, HK, futures, forex)는 모두 무료입니다. Tushare token은 선택 사항이며, mootdx가 권장 no-token A주 fallback이고 AKShare는 더 넓은 커버리지의 백업입니다.
경로 A: Docker (설정 불필요)
git clone https://github.com/HKUDS/Vibe-Trading.git
cd Vibe-Trading
cp agent/.env.example agent/.env
# Edit agent/.env — uncomment your LLM provider and set API key
docker compose up --build
http://localhost:8899를 여세요. Backend + frontend가 하나의 container에 들어 있습니다.
Docker는 기본적으로 backend를 127.0.0.1:8899에 게시하고 앱을 non-root container user로 실행합니다. API를 자신의 머신 밖으로 의도적으로 노출하는 경우 강력한 API_AUTH_KEY를 설정하고 client에서 Authorization: Bearer <key>를 보내세요.
경로 B: Local install
git clone https://github.com/HKUDS/Vibe-Trading.git
cd Vibe-Trading
python -m venv .venv
# Activate
source .venv/bin/activate # Linux / macOS
# .venv\Scripts\activate.bat # Windows CMD
# .venv\Scripts\Activate.ps1 # Windows PowerShell
pip install -e .
cp agent/.env.example agent/.env # Edit — set your LLM provider API key
vibe-trading # Launch interactive TUI
Note
Windows의 경우:
cp는 PowerShell에서Copy-Item의 별칭이므로 위 명령은 PowerShell에서 그대로 동작합니다. CMD에는cp가 없으므로 대신copy agent\.env.example agent\.env를 사용하세요(위의 Docker 명령도 마찬가지입니다). PowerShell이Activate.ps1실행을 거부하면 먼저Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned를 실행하세요. 이 설정은 현재 셸 세션에만 적용됩니다.
웹 UI 시작(선택 사항)
# Terminal 1: API server
vibe-trading serve --port 8899
# Terminal 2: Frontend dev server
cd frontend && npm install && npm run dev # Node >= 22.22 필요
http://localhost:5899를 여세요. Frontend는 API 호출을 localhost:8899로 proxy합니다.
Production mode(single server):
cd frontend && npm run build && cd ..
vibe-trading serve --port 8899 # FastAPI serves dist/ as static files
Note
vibe-trading serve는0.0.0.0에 바인딩되지만 기본적으로 루프백만 신뢰합니다. 같은 컴퓨터에서 UI를 열면(http://localhost:8899) 설정 없이 작동합니다. 다른 컴퓨터, VM 호스트, LAN의 휴대폰에서 접속하면 민감한 엔드포인트가403을 반환하고 채팅에 “Remote API access requires an API key” 가 표시됩니다.agent/.env에 강력한API_AUTH_KEY를 설정하고 재시작한 뒤 Settings 에서 같은 키를 입력하세요. (Docker Desktop 호스트 게이트웨이의 경우: 기본127.0.0.1포트 바인딩을 유지한 채VIBE_TRADING_TRUST_DOCKER_LOOPBACK=1설정.)
경로 C: MCP plugin
아래 MCP Plugin 섹션을 참고하세요.
경로 D: ClawHub (한 번의 명령)
npx clawhub@latest install vibe-trading --force
skill + MCP config가 agent의 skills directory에 다운로드됩니다. 자세한 내용은 ClawHub install을 참고하세요.
🧠 환경 변수
agent/.env.example을 agent/.env로 복사하고 사용할 provider block의 주석을 해제하세요. 각 provider에는 3~4개의 변수가 필요합니다:
| 변수 | 필수 | 설명 |
|---|---|---|
LANGCHAIN_PROVIDER |
Yes | Provider name(openrouter, deepseek, groq, ollama 등) |
<PROVIDER>_API_KEY |
Yes* | API key(OPENROUTER_API_KEY, DEEPSEEK_API_KEY 등) |
<PROVIDER>_BASE_URL |
Yes | API endpoint URL |
LANGCHAIN_MODEL_NAME |
Yes | Model name(예: deepseek-v4-pro) |
TUSHARE_TOKEN |
No | A주 data용 Tushare Pro token(AKShare로 fallback) |
TIMEOUT_SECONDS |
No | LLM call timeout, 기본 120s |
API_AUTH_KEY |
네트워크 배포 권장 | API가 non-local client에서 접근 가능할 때 필요한 Bearer token |
VIBE_TRADING_ENABLE_SHELL_TOOLS |
No | remote API/MCP-SSE 형태 배포에서 shell-capable tools 명시적 opt-in |
VIBE_TRADING_ALLOWED_FILE_ROOTS |
No | document와 broker-journal import용 추가 comma-separated roots |
VIBE_TRADING_ALLOWED_RUN_ROOTS |
No | generated-code run directory용 추가 comma-separated roots |
VIBE_TW_STOCK_DB |
No | 대만 시장 SQLite 스냅샷 경로. 읽기 전용 taiwan_stock_data 도구는 스키마가 유효할 때만 등록됩니다 |
VIBE_TRADING_EXTRA_CORS_ORIGINS |
No | 루프백 CORS 기본값에 추가되는 오리진(쉼표 구분). CORS_ORIGINS는 대체 |
CONTENT_FILTER_WARNING_THRESHOLD |
No | 콘텐츠 필터 경고 비율 임계값(기본 0.05 = 5%). 콘텐츠 검열로 차단된 LLM 응답 비율이 이를 넘으면 run card가 프로바이더 변경을 권고합니다. |
* Ollama는 API key가 필요 없습니다. OpenAI Codex는 ChatGPT OAuth를 사용하며 token을 agent/.env가 아니라 oauth-cli-kit을 통해 저장합니다.
무료 데이터(key 불필요): AKShare를 통한 A주, yfinance를 통한 HK/US equities, OKX를 통한 crypto, CCXT를 통한 100개 이상 crypto exchanges. 시스템은 시장별로 가장 적합한 source를 자동 선택합니다.
🎯 권장 모델
Vibe-Trading은 tool-heavy agent입니다. skills, backtests, memory, swarms가 모두 tool call을 통해 흐릅니다. 모델 선택은 에이전트가 실제로 도구를 사용하는지, 아니면 학습 데이터에서 답을 만들어내는지를 직접 결정합니다.
| 등급 | 예시 | 사용 시점 |
|---|---|---|
| Best | anthropic/claude-opus-4.7, anthropic/claude-sonnet-4.6, openai/gpt-5.5-pro, google/gemini-3.5-flash |
복잡한 swarms(3+ agents), 긴 리서치 세션, 논문급 분석 |
| Sweet spot(기본값) | deepseek-v4-pro, deepseek/deepseek-v4-pro, x-ai/grok-4.20, z-ai/glm-5.1, moonshotai/kimi-k2.6, qwen/qwen3-max-thinking |
Daily driver — 약 1/10 비용으로 안정적인 tool-calling |
| Agent 사용 시 피할 것 | *-nano, *-flash-lite, *-coder-next, small / distilled variants |
tool-calling이 불안정합니다. agent가 skills를 로드하거나 backtest를 실행하는 대신 "기억에서 답하는" 것처럼 보일 수 있습니다. |
기본 agent/.env.example은 DeepSeek official API + deepseek-v4-pro를 포함합니다. OpenRouter 사용자는 deepseek/deepseek-v4-pro를 사용할 수 있습니다.
🖥 CLI 참조
vibe-trading # interactive TUI
vibe-trading run -p "..." # single run
vibe-trading serve # API server
vibe-trading alpha list # 사전 빌드된 462개 alpha 탐색; show / bench / compare / export-manifest 서브커맨드 사용 가능
vibe-trading playbook list # 예약 리서치 템플릿 5개; show / create 서브커맨드 사용 가능
vibe-trading channels status --local # IM 채널 설정과 설치 힌트 확인
vibe-trading provider doctor # 마스킹된 provider/proxy/패키지 진단 출력
TUI 내 slash commands
| Command | Description |
|---|---|
/help |
단축키와 명령 목록 표시 |
/model |
LLM 제공자와 모델 전환 |
/memory |
영속 메모리 보기 / 관리 |
/history |
이전 세션 탐색 및 재개 |
/goal |
금융 리서치 goal 시작 / 확인 |
/search |
모든 세션 전문 검색 |
/swarm |
멀티 에이전트 preset(위원회 / 퀀트 / 리스크) |
/skill |
skills 목록 / 로드 / 해제 |
/show |
이전 run을 id로 표시 |
/clear |
현재 대화 비우기 |
/pine |
현재 전략을 Pine Script로 내보내기 |
/journal |
매매일지 CSV 분석 |
/shadow |
섀도 계좌 학습 / 조회 |
/export |
현재 세션 내보내기(md / json) |
/debug |
디버그 패널 전환(토큰 사용량 / 지연) |
/comps |
유사기업 분석(피어 멀티플 → 내재 범위) |
/dcf |
현금흐름할인 밸류에이션 + 민감도 그리드 |
/attrib |
Brinson-Fachler 성과기여 분석(자산배분 vs 종목선택) |
/memo |
투자 메모 — 논지, 차별적 관점, 시나리오, 철회 기준 |
/earnings |
실적 리뷰 — 매출에서 EPS까지 서프라이즈 브리지 |
/screen |
체계적 아이디어 스크리닝 — 가설, 퍼널, 생존 큐 |
/playbook |
예약 리서치 템플릿(목록 / 실행 / 예약) |
/connector |
트레이딩 커넥터 프로필(상태 / 시작 / 중지) |
/halt |
킬 스위치 — 모든 실거래 즉시 중단 |
/resume |
킬 스위치 해제(실거래 재개) |
/data |
데이터 라우팅 모드 |
/quit |
종료(q, exit, :q 도 가능) |
Single run & flags
vibe-trading run -p "Backtest BTC-USDT MACD strategy, last 30 days"
vibe-trading run -p "Analyze AAPL momentum" --json
vibe-trading run -f strategy.txt
echo "Backtest 000001.SZ RSI" | vibe-trading run
vibe-trading -p "your prompt"
vibe-trading --skills
vibe-trading --swarm-presets
vibe-trading --swarm-run investment_committee '{"topic":"BTC outlook"}'
vibe-trading --list
vibe-trading --show <run_id>
vibe-trading --code <run_id>
vibe-trading --pine <run_id> # Export indicators (TradingView + TDX + MT5)
vibe-trading --trace <run_id>
vibe-trading --continue <run_id> "refine the strategy"
vibe-trading --upload report.pdf
vibe-trading alpha list --zoo gtja191 --limit 10
vibe-trading alpha show gtja191_171
vibe-trading alpha bench --zoo gtja191 --universe csi300 --period 2018-2025 --top 20
IM 채널
IM channel adapter는 외부 채팅 앱을 Web UI와 CLI가 쓰는 같은 session runtime에 연결합니다. 활성화할 어댑터는 ~/.vibe-trading/agent.json의 channels 아래에 설정합니다. SDK 기반 어댑터는 optional extras이며, SDK가 없으면 런타임을 중단하지 않고 recovery hints를 표시합니다.
vibe-trading channels status --local # API 없이 config와 missing SDK hints 확인
vibe-trading channels status # 실행 중인 API runtime 조회
vibe-trading channels start # API를 통해 enabled adapters 시작
vibe-trading channels stop # API를 통해 enabled adapters 중지
vibe-trading channels login weixin # 필요한 adapter login hook 실행
vibe-trading channels pairing --channel telegram list
Built-in adapters는 websocket, telegram, slack, discord, matrix, whatsapp, signal, qq, napcat, weixin, wecom, feishu, dingtalk, msteams, email, mochat입니다. 개별 플랫폼은 pip install "vibe-trading-ai[telegram]"처럼 설치하거나, 전체 채널 세트는 pip install "vibe-trading-ai[channels]"로 설치할 수 있습니다.
채팅 내 슬래시 명령어 (채널 무관, 16개 어댑터 모두 공통):
| 명령어 | 설명 |
|---|---|
/new |
현재 세션 초기화 — 다음 메시지에서 새 대화 시작 |
/reset |
/new의 별칭 |
/newsession |
/new의 별칭 |
/pairing list |
대기 중인 sender pairing 요청 표시 |
명령어는 대소문자를 구분하지 않으며, 전체 메시지로 전송해야 합니다 (예: hello /new은 초기화가 아닌 일반 메시지로 처리됩니다).
💡 예제
전략 & 백테스팅
# Moving average crossover on US equities
vibe-trading run -p "Backtest a 20/50-day moving average crossover on AAPL for the past year, show Sharpe ratio and max drawdown"
# RSI mean-reversion on crypto
vibe-trading run -p "Test RSI(14) mean-reversion on BTC-USDT: buy below 30, sell above 70, last 6 months"
# Multi-factor strategy on A-shares
vibe-trading run -p "Backtest a momentum + value + quality multi-factor strategy on CSI 300 constituents over 2 years"
# After backtesting, export to TradingView / TDX / MetaTrader 5
vibe-trading --pine <run_id>
한 줄로 사전 빌드된 alpha zoo 벤치하기:
vibe-trading alpha bench --zoo gtja191 --universe csi300 --period 2018-2025 --top 20
카탈로그 탐색 후 단일 alpha 확인:
vibe-trading alpha list --zoo gtja191 --theme reversal --limit 10
vibe-trading alpha show gtja191_171
zoo 인자들로 다인자 신호 구성(Python):
from src.skills.multi_factor.zoo_signal_engine import ZooSignalEngine
engine = ZooSignalEngine.from_zoo(["gtja191_171", "gtja191_111", "gtja191_163"])
panel = ... # your wide OHLCV panel
signal = engine.compute_signal(panel)
시장 리서치
# Equity deep-dive
vibe-trading run -p "Research NVDA: earnings trend, analyst consensus, option flow, and key risks for next quarter"
# Macro analysis
vibe-trading run -p "Analyze the current Fed rate path, USD strength, and impact on EM equities and gold"
# Crypto on-chain
vibe-trading run -p "Deep dive BTC on-chain: whale flows, exchange balances, miner activity, and funding rates"
Swarm 워크플로
# Bull/bear debate on a stock
vibe-trading --swarm-run investment_committee '{"topic": "Is TSLA a buy at current levels?"}'
# Quant strategy from screening to backtest
vibe-trading --swarm-run quant_strategy_desk '{"universe": "S&P 500", "horizon": "3 months"}'
# Crypto desk: funding + liquidation + flow → risk manager
vibe-trading --swarm-run crypto_trading_desk '{"asset": "ETH-USDT", "timeframe": "1w"}'
# Global macro portfolio allocation
vibe-trading --swarm-run macro_rates_fx_desk '{"focus": "Fed pivot impact on EM bonds"}'
크로스세션 메모리
# Save your preferences once
vibe-trading run -p "Remember: I prefer RSI-based strategies, max 10% drawdown, hold period 5–20 days"
# The agent recalls them in future sessions automatically
vibe-trading run -p "Build a crypto strategy that fits my risk profile"
문서 업로드 & 분석
# Analyze a broker export or earnings report
vibe-trading --upload trades_export.csv
vibe-trading run -p "Profile my trading behavior and identify any biases"
vibe-trading --upload NVDA_Q1_earnings.pdf
vibe-trading run -p "Summarize the key risks and beats/misses from this earnings report"
🌐 API 서버
vibe-trading serve --port 8899
| Method | Endpoint | Description |
|---|---|---|
GET |
/runs |
runs 목록 |
GET |
/runs/{run_id} |
run details |
GET |
/runs/{run_id}/pine |
multi-platform indicator export |
POST |
/sessions |
session 생성 |
POST |
/sessions/{id}/messages |
message 전송 |
GET |
/sessions/{id}/events |
SSE event stream |
POST |
/upload |
PDF/file 업로드 |
GET |
/swarm/presets |
swarm presets 목록 |
POST |
/swarm/runs |
swarm run 시작 |
GET |
/swarm/runs/{id}/events |
Swarm SSE stream |
GET |
/alpha/list |
zoo/theme/universe로 alpha 목록 필터링 |
GET |
/alpha/{alpha_id} |
Alpha 메타데이터 + 소스 코드 |
POST |
/alpha/bench |
Bench 작업 시작 (job_id 반환) |
GET |
/alpha/bench/{job_id}/stream |
SSE 진행 스트림 |
GET |
/settings/llm |
Web UI LLM settings 읽기 |
PUT |
/settings/llm |
local LLM settings 업데이트 |
GET |
/settings/data-sources |
local data source settings 읽기 |
PUT |
/settings/data-sources |
local data source settings 업데이트 |
GET |
/channels/status |
IM channel runtime과 adapter status 읽기 |
POST |
/channels/start |
설정된 IM channel adapters 시작 |
POST |
/channels/stop |
설정된 IM channel adapters 중지 |
POST |
/channels/pairing/command |
shared store에 sender-pairing command 실행 |
POST |
/scheduled-runs |
예약 리서치 작업 생성 (interval-ms 또는 cron) |
GET |
/scheduled-runs |
예약된 작업 목록 |
DELETE |
/scheduled-runs/{job_id} |
예약 작업 취소 |
GET |
/scheduled-runs/playbooks |
리서치 템플릿 목록 |
GET |
/scheduled-runs/playbooks/{slug} |
템플릿 1개와 선언된 변수 표시 |
POST |
/scheduled-runs/playbooks/{slug} |
템플릿으로 작업 예약 |
POST |
/sessions/{id}/cancel |
진행 중인 실행 중지(실패가 아니라 취소로 기록) |
POST |
/sessions/{id}/title/auto |
첫 대화로 세션 제목 생성(수동 이름 변경은 덮어쓰지 않음) |
GET |
/correlation/regime |
상관 엣지 밀도 레짐 타임라인 |
GET |
/agents.json · POST /v1/query |
OpenBB Workspace 브리지 — 선택적 openbb extra 설치 시에만 등록, /v1/query는 인증 필요 |
Interactive docs: http://localhost:8899/docs
보안 기본값
localhost 개발에서 vibe-trading serve는 browser workflow를 단순하게 유지합니다. non-local client에서는 민감한 API endpoint에 API_AUTH_KEY가 필요합니다. JSON/upload request에는 Authorization: Bearer <key>를 사용하세요. Browser EventSource stream은 Web UI Settings에 같은 key를 한 번 입력하면 Web UI가 처리합니다.
Shell-capable process tools(bash / background_run / cancel_background)는 대화형 local CLI에서만 활성화됩니다. 그 외 모든 표면 — HTTP/SSE API와 MCP server의 모든 transport(stdio 포함) — 는 VIBE_TRADING_ENABLE_SHELL_TOOLS=1을 명시적으로 설정하지 않는 한(또는 vibe-trading-mcp에 --enable-shell-tools를 전달하지 않는 한) 비활성 상태로 유지됩니다. transport 종류가 암묵적으로 shell 접근을 부여하는 일은 없습니다. Document와 journal reader는 기본적으로 upload/import roots로 제한됩니다. 파일은 ~/.vibe-trading/uploads, ~/.vibe-trading/runs, ./uploads, ./data(또는 레거시 agent/uploads / agent/runs) 아래에 두거나, VIBE_TRADING_ALLOWED_FILE_ROOTS로 전용 directory를 추가하세요. 세션, 실행 산출물, swarm 실행, 업로드, sessions.db 인덱스는 ~/.vibe-trading 아래로 통합되며(shell 환경 변수 VIBE_TRADING_HOME으로 전체 이동 가능), 기존 위치의 이력은 첫 실행 시 자동으로 이전됩니다.
Web UI Settings
Web UI Settings page에서는 local user가 LLM provider/model, base URL, generation parameters, reasoning effort, Tushare token 같은 선택적 market data credentials를 업데이트할 수 있습니다. Settings는 agent/.env에 저장되며 provider defaults는 agent/src/providers/llm_providers.json에서 로드됩니다.
Settings read는 side effect가 없습니다. GET /settings/llm과 GET /settings/data-sources는 agent/.env를 만들지 않으며 project-relative path만 반환합니다. Settings read/write는 credential state를 노출하거나 credential/runtime environment를 업데이트할 수 있으므로 API_AUTH_KEY가 설정되어 있으면 인증이 필요합니다. dev mode에서 API_AUTH_KEY가 설정되지 않은 경우 settings access는 loopback client에서만 허용됩니다.
같은 Settings page에는 local operator용 IM 채널 패널도 있습니다. /channels/status를 polling하고 configured/enabled/available/loaded/running 상태와 adapter recovery hints를 표시하며, 터미널로 돌아가지 않고 configured channel runtime을 시작하거나 중지할 수 있습니다.
Scheduled research (예약 리서치)
리서치 prompt나 backtest를 반복 일정으로 실행합니다 — Web UI의 예약 페이지에서도, REST로도 관리할 수 있습니다. 백그라운드 executor는 기본적으로 꺼져 있습니다 — VIBE_TRADING_ENABLE_SCHEDULER=1로 server를 시작하면 활성화됩니다:
VIBE_TRADING_ENABLE_SCHEDULER=1 vibe-trading serve --port 8899
그런 다음 REST로 작업을 생성합니다. schedule은 단순 정수(간격, 단위 밀리초)이거나 5필드 cron 표현식(분 시 일 월 요일; 각 필드는 *, */n, 숫자, 쉼표 목록, 1-5 같은 범위 지원)입니다. cron은 작업의 선택적 timezone(IANA 키)의 벽시계 기준으로 평가되어 서머타임 전환 후에도 주기가 유지됩니다 — 봄에 존재하지 않는 시각은 건너뛰고, 가을에 중복되는 시각은 첫 번째 발생 시 한 번만 실행됩니다. timezone이 없는 작업은 기존 UTC 의미를 유지합니다:
# 6시간마다 (cron)
curl -X POST http://localhost:8899/scheduled-runs \
-H "Content-Type: application/json" \
-d '{"prompt":"Scan CSI300 for momentum breakouts and backtest the top 5","schedule":"0 */6 * * *"}'
# 평일 23:30 (오클랜드 현지 시각, 서머타임에도 안 밀림)
curl -X POST http://localhost:8899/scheduled-runs \
-H "Content-Type: application/json" \
-d '{"prompt":"Pre-open scan of NZX names","schedule":"30 23 * * 1-5","timezone":"Pacific/Auckland"}'
# 목록 / 취소
curl http://localhost:8899/scheduled-runs
curl -X DELETE http://localhost:8899/scheduled-runs/<job_id>
각 실행은 새 agent session에서 prompt를 실행하며(선택적 backtest 파라미터는 config에 넣습니다), 작업은 ~/.vibe-trading/에 저장되어 재시작 후에도 유지됩니다. 이 플래그가 없으면 /scheduled-runs endpoint는 작업을 기록하지만 실행되지는 않습니다. API_AUTH_KEY가 설정된 경우 각 호출에 -H "Authorization: Bearer <key>"를 추가하세요.
스케줄러에는 바로 예약할 수 있는 리서치 템플릿 5개가 들어 있습니다 — premarket-brief, earnings-season-tracker, portfolio-checkup, a-share-money-flow, institutional-holdings-diff. 각 템플릿은 도구 이름을 지목하지 않고 필요한 데이터를 자연어로 선언하므로 도구 표면이 늘어나도 그대로 동작하며, 빠진 입력은 기억으로 채우지 말고 밝히도록 요구합니다. CLI, REST, TUI의 /playbook 어디서든 쓸 수 있습니다:
vibe-trading playbook list # 템플릿 5개
vibe-trading playbook show premarket-brief # 본문, 선언된 변수, 권장 주기
vibe-trading playbook create premarket-brief \
--var home_market="US equities" --var watchlist="AAPL, MSFT, NVDA" \
--timezone America/New_York
curl http://localhost:8899/scheduled-runs/playbooks
curl http://localhost:8899/scheduled-runs/playbooks/premarket-brief
curl -X POST http://localhost:8899/scheduled-runs/playbooks/premarket-brief \
-H "Content-Type: application/json" \
-d '{"variables":{"home_market":"US equities","watchlist":"AAPL, MSFT, NVDA"}}'
{} 를 POST하면 템플릿 자체의 권장 주기와 기본 변수로 예약됩니다. 렌더링된 본문이 그대로 작업 prompt가 되며, 선언되지 않은 변수는 조용히 무시되지 않고 거부됩니다.
🔌 MCP Plugin
Vibe-Trading은 모든 MCP-compatible client를 위해 70개 MCP tools를 제공합니다. stdio subprocess로 실행되므로 server setup이 필요 없습니다. 핵심 research tools는 HK/US/crypto에서 API key 없이 작동하고, trading connector tools는 선택된 connector profile을 사용하며, run_swarm만 LLM key가 필요합니다.
환경 변수: server는 client가 직접 spawn하므로 shell의 export는 전달되지 않습니다 —— client의 env block에 설정하세요. 생성된 backtest code는 allowed run roots 안으로 제한되므로, 결과를 자신의 작업 directory에 쓰려면 VIBE_TRADING_ALLOWED_RUN_ROOTS가 필요합니다:
{
"mcpServers": {
"vibe-trading": {
"command": "vibe-trading-mcp",
"env": { "VIBE_TRADING_ALLOWED_RUN_ROOTS": "C:\\Users\\me\\research" }
}
}
}
Claude Desktop
claude_desktop_config.json에 추가:
{
"mcpServers": {
"vibe-trading": {
"command": "vibe-trading-mcp"
}
}
}
OpenClaw
~/.openclaw/config.yaml에 추가:
skills:
- name: vibe-trading
command: vibe-trading-mcp
Cursor / Windsurf / 기타 MCP clients
vibe-trading-mcp # stdio (default)
vibe-trading-mcp --transport http # Streamable HTTP (spec default) at /mcp
vibe-trading-mcp --transport sse # legacy SSE (deprecated)
노출되는 MCP tools(70): list_skills, load_skill, start_research_goal, get_research_goal, add_goal_evidence, update_research_goal_status, backtest, factor_analysis, alpha_zoo, alpha_bench, analyze_options, analyze_options_payoff, pattern_recognition, read_url, read_document, web_search, write_file, read_file, trading_connections, trading_select_connection, trading_check, trading_account, trading_positions, trading_orders, trading_quote, trading_history, list_swarm_presets, run_swarm, get_market_data, get_fund_flow, get_dragon_tiger, get_northbound_flow, get_margin_trading, get_block_trades, get_shareholder_count, get_lockup_expiry, get_sector_info, get_research_reports, get_stock_news, get_sec_filings, get_financial_statements, get_options_chain, get_stock_profile, screen_market, search_symbol, get_macro_series, iwencai_search, qveris_search, qveris_inspect, qveris_execute, get_institutional_holdings, etf_holdings, prediction_market, research_papers, get_swarm_status, get_run_result, list_runs, reap_stale_runs, retry_run, analyze_trade_journal, extract_shadow_strategy, run_shadow_backtest, render_shadow_report, scan_shadow_signals, quantlib_call, cashflow_performance, orderbook_depth, sentiment, technical_indicators, get_fundamentals.
SWARM 외부 MCP tools
run_swarm worker는 운영자가 승인한 외부 MCP 서버의 도구를 호출할 수 있습니다. 서버 측 allowlist는 VIBE_TRADING_SWARM_AGENT_CONFIG, ~/.vibe-trading/swarm-agent.json, 또는 폴백인 ~/.vibe-trading/agent.json에 설정하고, swarm preset에서는 로컬 MCP 래퍼 이름(예: mcp_internal_kb_search)으로 원격 도구를 나열합니다. 호출자가 전달한 variables는 템플릿 데이터로만 남으며 MCP URL, 명령, 환경 변수, allowlist 재정의를 주입할 수 없습니다.
ClawHub에서 설치(한 번의 명령)
npx clawhub@latest install vibe-trading --force
skill이 외부 API를 참조하여 VirusTotal 자동 스캔이 트리거되므로
--force가 필요합니다. 코드는 완전한 오픈소스이며 검토할 수 있습니다.
이 명령은 skill + MCP config를 agent의 skills directory에 다운로드합니다. clone은 필요 없습니다.
ClawHub에서 보기: clawhub.ai/skills/vibe-trading
OpenSpace — 자가 진화 스킬
89개 finance skills는 모두 open-space.cloud에 게시되어 있으며 OpenSpace의 self-evolution engine을 통해 자율적으로 발전합니다.
OpenSpace와 함께 사용하려면 두 MCP server를 agent config에 추가하세요:
{
"mcpServers": {
"openspace": {
"command": "openspace-mcp",
"toolTimeout": 600,
"env": {
"OPENSPACE_HOST_SKILL_DIRS": "/path/to/vibe-trading/agent/src/skills",
"OPENSPACE_WORKSPACE": "/path/to/OpenSpace"
}
},
"vibe-trading": {
"command": "vibe-trading-mcp"
}
}
}
OpenSpace는 89개 skills를 모두 자동 발견하여 auto-fix, auto-improve, community sharing을 활성화합니다. OpenSpace-connected agent에서 search_skills("finance backtest")로 Vibe-Trading skills를 검색하세요.
MetaTrader 5 (Exness 및 기타 MT5 브로커)
공식 MetaTrader5 패키지를 통해 로컬에서 실행 중인 MT5 터미널에 연결합니다(Windows 전용):
pip install "vibe-trading-ai[mt5]"
~/.vibe-trading/mt5.json을 설정하세요(직접 생성, 지원되는 환경에서는 chmod 600):
{
"login": 12345678,
"password": "...",
"server": "Exness-MT5Trial8",
"symbol_suffix": "m",
"max_order_volume": 1.0,
"max_order_notional_usd": 10000
}
그다음:
vibe-trading connector use mt5-paper-sdk
vibe-trading connector check
vibe-trading connector account
vibe-trading connector quote EURUSD
vibe-trading connector history EURUSD
| 프로파일 | 계정 | 주문 |
|---|---|---|
mt5-paper-sdk |
데모 | 읽기 전용 |
mt5-live-sdk-readonly |
실계좌 | 읽기 전용 |
mt5-paper-trade |
데모 | 직접 주문(connector 크기 가드 적용) |
mt5-live-trade |
실계좌 | mandate + kill-switch 게이트 |
안전 경계: "paper"는 브로커의 데모 계정이며 모든 호출마다 검증됩니다 — 터미널이 account_info().trade_mode와 로그인 정보를 그대로 되돌려주므로, 실계좌에 붙은 paper 프로파일(또는 그 반대)은 강제 거부됩니다. MT5는 주문 크기를 lot 단위로 계산합니다(EURUSD 1 lot = 100,000 EUR); live mandate 게이트는 connector의 USD 사이징 훅으로 lot 가격을 환산하고, connector 자체의 max_order_volume / max_order_notional_usd 가드는 데모와 실계좌 모두에 적용되며, 명목 금액을 가격으로 환산할 수 없으면 fail-closed 처리됩니다. 헤징 계정(Exness 기본값) 참고: 반대 방향 주문은 헤지를 새로 엽니다 — 포지션은 티켓으로 종료하세요(포지션 티켓을 넘긴 trading_cancel_order). 이렇게 하면 체결이 해당 포지션에 고정되어 익스포저를 줄이는 방향으로만 작동합니다. 롤백/중단 경로: kill switch는 신규 live 주문을 차단하며, 취소는 계속 사용할 수 있고 감사 로그에 기록됩니다. Mandate 한도는 USD 기준이며, USD가 아닌 계정 통화는 브로커 측에서 계정 통화 기준 마진으로 강제됩니다.
mt5 시장 데이터 로더(외환 폴백 체인의 선두)는 같은 mt5.json을 공유합니다 — 파일이 없으면 마지막으로 사용된, 로그인된 터미널에 읽기 전용으로 연결됩니다.
🔌 eToro Public API 커넥터
API 키 쌍(x-api-key + x-user-key)으로 eToro Public API의 데모·실계좌에 연결합니다. 데모와 실계좌는 구조적으로 분리되어 있으며, 데모 키는 /demo API 경로에만 도달합니다.
~/.vibe-trading/etoro.json을 설정하세요(직접 생성; 지원되는 환경에서는 chmod 600):
{
"api_key": "YOUR_PUBLIC_API_KEY",
"user_key": "YOUR_USER_KEY",
"profile": "paper"
}
또는 ~/.vibe-trading/.env에 ETORO_API_KEY와 ETORO_USER_KEY를 설정해도 됩니다.
그다음:
vibe-trading connector use etoro-paper-sdk
vibe-trading connector check
vibe-trading connector account
vibe-trading connector positions
vibe-trading connector quote BTC
| 프로파일 | 계좌 | 주문 |
|---|---|---|
etoro-paper-sdk |
데모 | 읽기 전용 |
etoro-live-sdk-readonly |
실계좌 | 읽기 전용 |
etoro-paper-trade |
데모 | 데모 경로에 직접 주문 |
etoro-live-trade |
실계좌 | mandate + kill switch 게이트 |
심볼 조회는 eToro의 internalSymbolFull 검색을 사용합니다(예: BTC → instrument id 100000). 거래 전에 etoro_search_instruments 에이전트 도구로 티커를 해석하세요.
안전 경계: 데모와 실계좌는 경로 분리 + 키 바인딩입니다(paper_guard: path_separated_key_bound). 실계좌에서 리스크를 늘리는 동작(신규 진입, 카피 시작/증액)에는 인가된 mandate, 중단되지 않은 명확한 상태, 그리고 카피 명목금액 제한을 위한 검증된 USD 계좌가 필요합니다. 검증된 전량·부분 청산, 미체결 주문 취소, 카피 종료는 중단 상태에서도 사용할 수 있으며 모두 감사 로그에 남습니다. 대기 중인 청산의 취소와 포지션 스톱 수정은 데모 전용입니다. 두 동작은 익스포저를 늘리거나 추가 증거금을 이전할 수 있는데 증분 USD 리스크를 정량화할 만큼의 API 데이터가 없어, 실계좌 경로는 fail-closed됩니다. 카피 금액은 eToro 계좌 통화로 표시되며, 카피 시작·조정마다 호출자가 1~35자 URL-safe 참조 id를 제공해야 폴링할 수 있습니다. eToro 전용 쓰기 도구(etoro_close_position, etoro_copy_* 등)는 에이전트 도구 전용으로 MCP나 CLI에 노출되지 않습니다. 롤백: 해당 커넥터 커밋을 revert하거나 프로파일을 비활성화하세요. halt는 새로운 실계좌 리스크 증가 동작을 차단합니다.
🔌 외부 MCP 서버에서 도구 불러오기 (MCP Client 모드)
위의 MCP Plugin과는 반대 방향입니다. MCP Plugin은 다른 agent가 Vibe-Trading의 도구를 호출하게 합니다. 이 절은 내장 Vibe-Trading agent가 당신의 외부 MCP 서버에 있는 도구를 호출하게 합니다.
빠른 시작
~/.vibe-trading/agent.json을 만듭니다:
{
"mcpServers": {
"my-server": {
"command": "uvx",
"args": ["my-mcp-server"]
}
}
}
그런 다음 아무 CLI 명령이나 실행하면 됩니다 — 일반 외부 서버의 도구는 로컬 도구 뒤에 agent 레지스트리로 자동 주입됩니다:
vibe-trading run "use my-server to do X"
IBKR 공식 MCP 읽기 전용 프로브
Vibe-Trading은 Interactive Brokers의 공식 원격 MCP endpoint에 읽기 전용으로 직접 연결할 수 있습니다.
~/.vibe-trading/agent.json에 다음을 추가하세요:
{
"mcpServers": {
"ibkr": {
"type": "streamableHttp",
"url": "https://api.ibkr.com/v1/api/mcp",
"auth": {
"type": "oauth",
"scopes": ["mcp.read"],
"clientName": "Vibe-Trading",
"cacheDir": "~/.vibe-trading/live/ibkr/oauth"
},
"enabledTools": ["*"]
}
}
}
이어서 브라우저 OAuth 플로우를 시작합니다:
vibe-trading connector authorize ibkr-live-official-mcp-readonly
와일드카드는 IBKR의 mcp.read 프로브에만 허용됩니다. 이 profile을 승인해도 확인되는 것은 IBKR 공식
읽기 scope 접근까지이며, IBKR이 안전하게 매핑할 수 있는 안정적인 읽기 도구 이름을 공개하기 전까지
범용 trading_account와 trading_positions 호출은 계속 비활성 상태입니다. mcp.write를 추가하는
설정은 도구 allowlist를 명시적으로 고정해야 하며, 그래도 실거래 order guard를 통과합니다.
IBKR이 사전 등록된 OAuth client를 발급했다면 auth 안에 clientId와 clientSecret을 추가하세요.
트레이딩 커넥터: 가장 빠른 경로
IBKR의 OAuth client 승인을 기다릴 수 없다면 로컬 TWS 또는 IB Gateway 세션에 연결하세요. 자격 증명은
IBKR 데스크톱 앱 안에 남고, Vibe-Trading은 127.0.0.1에만 접속해 이를 커넥터 profile로 노출합니다.
선택적 SDK를 설치합니다:
pip install "vibe-trading-ai[ibkr]"
TWS 페이퍼 트레이딩 또는 IB Gateway 페이퍼를 열고 API socket clients를 활성화한 뒤 실행합니다:
vibe-trading connector list
vibe-trading connector use ibkr-paper-local
vibe-trading connector configure ibkr-paper-local --yes
vibe-trading connector check
vibe-trading connector account
vibe-trading connector positions
vibe-trading connector orders
vibe-trading connector quote AAPL
vibe-trading connector history AAPL --duration "30 D" --bar-size "1 day"
로컬 기본 포트:
| 앱 | 페이퍼 | 실거래 읽기 전용 |
|---|---|---|
| TWS | 7497 |
7496 |
| IB Gateway | 4002 |
4001 |
agent가 노출하는 커넥터 범위 도구는 trading_connections, trading_select_connection,
trading_check, trading_account, trading_positions, trading_orders, trading_quote,
trading_history입니다. 실거래 브로커의 원시 MCP 도구는 mcp_<broker>_* 형태로 직접 등록되지
않습니다. IBKR 주문 실행 도구는 하나도 등록되지 않습니다.
🔐 TAP 모드 — 자격 증명 완전 격리와 사람 승인 기반 쓰기
옵트인이며 기본은 꺼져 있습니다. 아래 TAP_* 변수가 설정되지 않으면 커넥터는 이전과 똑같이
(브로커 SDK 직결) 동작하며 달라지는 것이 없습니다.
TAP(Tool Authorization Protocol)은 자격 증명 프록시입니다. agent는 브로커
API의 원본 시크릿을 결코 보유하지 않고, 결과가 있는 쓰기는 사람의 승인으로 게이트됩니다. TAP 모드를
켜면 모든 Alpaca 호출 — 주문 실행, 취소, 그리고 읽기(account/positions/orders/quote/bars) — 가
브로커 SDK 대신 TAP 프록시의 /forward endpoint로 전송되고, TAP가 서버 측에서 실제 키를 주입한 뒤
상류로 전달합니다.
- agent 프로세스는 Alpaca 키를 전혀 보유하지 않으며
alpaca-py조차 필요 없습니다. 전체 egress가 TAP를 지나가기 때문이며, 시크릿은 이름(<CREDENTIAL:alpaca.key_id>)으로만 참조되고 TAP가 치환합니다. - 쓰기는 사람 승인에서 차단됩니다. 주문이나 취소는 사람이 승인하지 않으면 브로커에 도달하지 못합니다.
프롬프트 인젝션으로 들어온 "지금 사라"도 보류되며, 거부하면 Alpaca에 절대 도달하지 않습니다. 주문에는
결정적
client_order_id가 붙으므로 승인 경쟁 상황의 재시도는 중복 주문이 아니라 중복 제거됩니다. - 읽기는 자동 승인됩니다. account/positions/orders/quote/bars는 GET이며 TAP가 사람 단계 없이 전달합니다. 이는 게이트가 아니라 자격 증명 격리(프로세스 안에 키가 없음)이므로 추가 마찰이 거의 없습니다.
- TAP 자격 증명의
allowed_hosts가 키를 보낼 수 있는 대상을 고정하므로, 변조된 대상은 주입 전에 거부됩니다(403).
활성화 방법:
- TAP 대시보드에서
alpaca라는 이름의 멀티 시크릿 자격 증명을 만들고 Alpaca 키 쌍을key_id와secret_key필드에 담아 agent에 할당한 뒤, allowed hosts에paper-api.alpaca.markets(또는 실거래 호스트api.alpaca.markets) 그리고data.alpaca.markets(quote/bars가 쓰는 시장 데이터 호스트)를 지정하세요. 페이퍼와 실거래에는 서로 다른 TAP 자격 증명을 쓰세요(예:alpaca-paper/alpaca-live,TAP_ALPACA_CREDENTIAL로 선택). 각각allowed_hosts를 자기 API 호스트로 고정하면 TAP가 구조적으로 페이퍼 키를 실거래 호스트로 보내는 것을 거부하고 그 반대도 마찬가지여서, 페이퍼와 실거래의 분리가 끝까지 명확하게 유지됩니다. agent/.env에 추가합니다:
| 변수 | 필수 | 설명 |
|---|---|---|
TAP_PROXY_URL |
예 | TAP 프록시 기본 URL (예: https://proxy.tap.human.tech) |
TAP_AGENT_KEY |
예 | 당신의 TAP agent API 키(시크릿) |
TAP_ALPACA_CREDENTIAL |
아니오 | Alpaca용 TAP 자격 증명 이름(기본 alpaca) |
TAP_APPROVAL_TIMEOUT |
아니오 | 사람의 결정을 기다리는 초(기본 300) |
쓰기가 발생하면 TAP 채널(Telegram / 대시보드)에서 승인하거나 거부하세요. 승인된 주문·취소는 Alpaca로 전달되고, 거부되거나 시간이 초과된 것은 오류를 반환하며 절대 전송되지 않습니다.
알려진 한계 — 승인 경쟁. 사람이 정확히
TAP_APPROVAL_TIMEOUT경계에서 승인하면, 폴링 쪽은 이미 포기했는데 TAP가 주문을 전달할 수 있습니다. 이때 주문은 브로커에 도달했는데도 게이트는 오류를 보고하고max_trades_per_day카운터는 하나 적게 셉니다. 결정적client_order_id덕분에 재시도가 그 주문을 이중으로 내지는 않지만, 일일 거래 한도를 빡빡하게 운용한다면 TAP 타임아웃 오류 뒤 재시도하기 전에 미체결 주문을 확인하세요.
범위: Alpaca의 주문 실행, 취소, 다섯 가지 읽기 전부 — 즉 커넥터 egress 전체를 덮으므로 어떤 경로에서도 프로세스가 키를 보유하지 않습니다. HMAC 서명 방식 브로커(Binance/OKX)는 후속 과제입니다 (클라이언트 측 서명은 순수 egress 주입과 맞지 않습니다). 이 훅들은 추가적이며 Alpaca 커넥터 내부에만 있고 실거래 mandate 게이트는 그대로 둡니다.
설정 레퍼런스
| 필드 | 타입 | 기본값 | 설명 |
|---|---|---|---|
type |
string | stdio는 추론, HTTP는 필수 | stdio에서는 생략하고, URL 기반 서버에는 sse / streamableHttp를 지정합니다. |
command |
string | stdio 필수 | stdio 서버에서 실행할 실행 파일. sse / streamableHttp에는 무효입니다. |
args |
array | [] |
stdio 서버 전용 커맨드라인 인자. |
env |
object | {} |
stdio 서버 전용. 서브프로세스 환경에 병합되는 추가 환경 변수. |
url |
string | sse / streamableHttp 필수 |
원격 SSE / streamable HTTP endpoint URL. stdio에서는 쓰지 않습니다. |
headers |
object | {} |
sse / streamableHttp 서버 전용 추가 HTTP 헤더. |
toolTimeout |
number | 30 |
도구 호출 1회 타임아웃(초) |
initTimeout |
number | 미설정(max(toolTimeout, 30)) |
MCP initialize / OAuth 인가 타임아웃(초). 일반 도구 호출을 넓히지 않고 느린 브라우저 인가를 처리할 때 씁니다. |
enabledTools |
array | ["*"] |
도구 allowlist. ["*"]로 해당 서버의 모든 도구를 노출 |
설정 파일 위치: ~/.vibe-trading/agent.json (JSON 또는 YAML).
URL 기반 transport에는 type이 필수입니다. agent는 더 이상 URL 접미사로 SSE와 streamable HTTP를
추측하지 않습니다.
세션별 재정의 (API)
API로 session을 만들 때 session.config 안에 mcpServers를 넘기면 그 세션에 한해 전역 설정을
확장하거나 덮어쓸 수 있습니다:
{
"config": {
"mcpServers": {
"research-server": {
"command": "uvx",
"args": ["research-mcp"],
"enabledTools": ["search", "fetch"]
}
}
}
}
도구 이름 규칙
일반 원격 도구는 안정적인 이름 mcp_<server>_<tool>로 노출됩니다.
실거래 브로커의 MCP 서버는 trading_* 커넥터 표면 뒤에 남습니다.
두 서버 이름이 로컬 이름 정규화 후 같은 ASCII 안전 접두사가 되는 경우(예: foo-bar와 foo_bar가 모두
foo_bar가 되는 경우), 이름의 유일성을 지키기 위해 서버 세그먼트에 결정적 해시 접미사가 붙고 운영자에게
경고가 표시됩니다:
WARNING: Configured MCP server 'foo-bar' collides with another server after local name
normalization. Using local tool prefix 'mcp_foo_bar_<hash>_<tool>' to keep generated
tool names unique. Rename the server in agent config if you want a different prefix.
v1 제한
| 제한 | 상세 |
|---|---|
| Transport | stdio, SSE, streamable HTTP |
| 실행 | 직렬만 — MCP 도구는 병렬 readonly 경로에 들어가지 않습니다 |
| 대상 | tools만(v1에서는 resources와 prompts 제외) |
| 핫 리로드 | 미지원 — 설정 변경을 반영하려면 프로세스를 재시작해야 합니다 |
| Swarm 경로 | v1에서는 Swarm worker 레지스트리에 MCP 도구가 없습니다 |
📁 프로젝트 구조
펼쳐 보기
Vibe-Trading/
├── agent/ # Backend (Python)
│ ├── cli/ # CLI package — interactive TUI + subcommands
│ ├── api_server.py # FastAPI server — runs, sessions, upload, swarm, SSE
│ ├── mcp_server.py # MCP server — 70 tools for OpenClaw / Claude Desktop
│ │
│ ├── src/
│ │ ├── agent/ # ReAct agent core
│ │ │ ├── loop.py # 5-layer compression + read/write tool batching
│ │ │ ├── context.py # system prompt + auto-recall from persistent memory
│ │ │ ├── skills.py # skill loader (89 bundled + user-created via CRUD)
│ │ │ ├── tools.py # tool base class + registry
│ │ │ ├── memory.py # lightweight workspace state per run
│ │ │ ├── frontmatter.py # shared YAML frontmatter parser
│ │ │ └── trace.py # execution trace writer
│ │ │
│ │ ├── memory/ # Cross-session persistent memory
│ │ │ └── persistent.py # file-based memory (~/.vibe-trading/memory/)
│ │ │
│ │ ├── tools/ # 94 auto-discovered agent tools
│ │ │ ├── backtest_tool.py # run backtests
│ │ │ ├── remember_tool.py # cross-session memory (save/recall/forget)
│ │ │ ├── skill_writer_tool.py # skill CRUD (save/patch/delete/file)
│ │ │ ├── session_search_tool.py # FTS5 cross-session search
│ │ │ ├── swarm_tool.py # launch swarm teams
│ │ │ ├── web_search_tool.py # DuckDuckGo web search
│ │ │ └── ... # bash, file I/O, factor analysis, options, alpha browser + bench, etc.
│ │ │
│ │ ├── factors/ # Alpha Zoo — 5개 패밀리에 걸친 462개 alpha
│ │ │ ├── base.py # 19개 operator (rank/scale/ts_*/delta/decay_linear/safe_div/vwap)
│ │ │ ├── registry.py # AST-only 메타데이터 로딩 + lazy compute + sanity gate
│ │ │ ├── bench_runner.py # IC + alive/reversed/dead 분류
│ │ │ └── zoo/ # qlib158 (154) + alpha101 (101) + gtja191 (191) + academic (12) + fundamental (4)
│ │ │
│ │ ├── api/ # FastAPI 라우트 모듈
│ │ │ └── alpha_routes.py # /alpha/list, /alpha/{id}, /alpha/bench, SSE stream
│ │ │
│ │ ├── skills/ # 89 finance skills in 9 categories (SKILL.md each)
│ │ ├── swarm/ # Swarm DAG execution engine
│ │ │ └── presets/ # 30 swarm preset YAML definitions
│ │ ├── session/ # Multi-turn chat + FTS5 session search
│ │ └── providers/ # LLM provider abstraction
│ │
│ └── backtest/ # Backtest engines
│ ├── engines/ # 8 engines + composite cross-market engine + options_portfolio
│ ├── loaders/ # 24 sources: tushare, okx, binance, yfinance, akshare, baostock, tencent, mootdx, ccxt, futu, pykrx, local, eastmoney, sina, stooq, yahoo, finnhub, alphavantage, tiingo, fmp, longbridge, mt5, qveris, india_broker
│ │ ├── base.py # DataLoader Protocol
│ │ └── registry.py # Registry + auto-fallback chains
│ └── optimizers/ # MVO, equal vol, max div, risk parity
│
├── frontend/ # Web UI (React 19 + Vite + TypeScript)
│ └── src/
│ ├── pages/ # Home, Agent, AlphaZoo, RunDetail, Compare, Correlation, Settings
│ ├── components/ # chat, charts, layout
│ └── stores/ # Zustand state management
│
├── Dockerfile # Multi-stage build
├── docker-compose.yml # One-command deploy
├── pyproject.toml # Package config + CLI entrypoint
├── tools/ # 레포 단위 CI helper
│ └── ci_grep_gates.sh # yaml.load / 트레이드마크 / 종목별 데이터 누출 차단
└── LICENSE # MIT
🏛 생태계
Vibe-Trading은 HKUDS agent ecosystem의 일부입니다:
|
NanoBot 초경량 개인 AI 어시스턴트 |
AI-Trader Agent-Native Signal & Copy Trading Platform |
CLI-Anything 모든 소프트웨어를 agent-native로 |
OpenSpace 자가 진화 AI agent skills |
ClawTeam Agent Swarm Intelligence |
🗺 로드맵
단계적으로 배포합니다. 작업이 시작되면 항목은 Issues로 이동합니다.
| Phase | Feature | Status |
|---|---|---|
| Trust Layer | 재현 가능한 run cards는 생성 및 Run Detail 표시까지 완료. v1은 tool traces와 citations 추가 | v0 출시 |
| Hypothesis Registry | lifecycle status, data sources, skills, run-card links, invalidation notes를 가진 durable research hypotheses | Backend MVP 출시 |
| Research Autopilot | 수동 실행 우선 research loop: hypothesis → deterministic backtest → evidence report | 1–3단계 출시 |
| Data Bridge | Bring-your-own data: local CSV/Parquet/SQL connectors with schema mapping | 로컬 로더 출시 |
| Options Lab | Vol surface, Greeks dashboard, payoff/scenario explorer | Planned |
| Portfolio Studio | Risk x-ray, constraints, turnover-aware optimizer, rebalance notes | Turnover-aware optimizer 0.1.11 출시 완료; 나머지 Planned |
| Alpha Zoo | 5개 패밀리에 걸친 462개의 사전 빌드된 alpha 인자(Qlib 158 + Kakushadze 101 + GTJA 191 + academic + fundamental), 한 줄 CLI 벤치, agent 통합, Web UI | 0.1.8 출시 완료, 0.1.12까지 확장 |
| Strategy Development Manager | 논문 / 브로커 리서치를 영속 store + 자동 IC/Sharpe decay 라이프사이클과 함께 팩터 & 전략으로 등록 | 0.1.11 출시 완료 |
| Correlation Regime | /correlation 위에 얹은 엣지 밀도 + 히스테리시스 레짐 타임라인 — 시장이 하나의 블록으로 융합되는 시점 포착 |
0.1.12 출시 완료 |
| Research Delivery | Slack / Telegram / email-style IM channels를 통한 예약 brief와 live research sessions | 스케줄러 + IM Runtime 출시 |
| Community | 공유 가능한 skills, presets, strategy cards | Exploring |
기여하기
기여를 환영합니다! 가이드는 CONTRIBUTING.md를 참고하세요.
Good first issues는 good first issue 라벨이 붙어 있습니다. 하나를 골라 시작해 보세요.
더 큰 기여를 하고 싶나요? 위 로드맵을 확인하고 시작 전에 issue를 열어 논의해 주세요.
기여자
Vibe-Trading에 기여해 주신 모든 분께 감사드립니다!
최근 v0.1.13 사이클 기여자 및 크레딧:
- @santhreal — a 17-PR correctness and resource-leak sweep: the HTTP throttle now sweeps stale buckets interval-aware so rate-limit spacing survives (#1047), the rate limiter stops growing without bound on unique client IPs (#1039), the event bus notifies and removes subscribers on clear (#1046),
_json_loadsis guarded against corrupted JSON in database columns (#1045), NaN/inf volume and close no longer crashformat_grounding_block(#1043),inffrompct_changeon zero equity is replaced (#1041), Shoonya tolerates empty-string numerics (#1038), drawdown is computed from the absolute peak on negative equity (#958) and insolvent empty cross accounts are marked liquidated (#959), plus exact memory index anchors (#956/#957) and an A-share code / trade-journal parsing batch (#919, #926–#935) - @shadowinlife — HK market-data fallback routing repaired with a new Tencent HK source (#1000), Shadow multi-market backtests split per settlement currency (#997), bare US tickers routed to
us_equity(#994), MCP list/dict arguments tolerating JSON-string clients (#993), generated signal engines passing the backtest sandbox validator (#992), and the memory GC dry-run fix (#973) - @honginp — the USD-M perpetual lifecycle end to end: funding and liquidation execution (#903), isolated & cross margin liquidation modelling (#889), ordered fidelity evidence persistence (#936), atomic position rebalancing (#951), and strict historical position rebalancing that preserves collateral, funding, fees and fill evidence (#1019)
- @QCYTSN — the desktop Electron shell lifecycle (#923), Windows packaging with a checksum-pinned embedded runtime and
safeStoragecredential handling (#1015), and Settings model discovery + runtime identity UX (#924) - @Robin1987China — the
technical_indicators(#921) andsentiment(#939) tools, annualisation entries for 15 data sources with a CI coverage gate (#891), indicator inputs read without sampling (#1005), and thequant_strategy_deskfinal report aggregator (#1048) - @Shizoqua — MCP specs cache keyed on remote server identity (#1049), memory FTS5 ranking with importance decay (#1032), swarm detection of
ok/success:falsetool failures (#1028), and lowercase4hresampling in the yfinance loader (#1013) - @ngoanpv — timezone-aware scheduled research (#954, closes #953), one malformed record no longer breaking the whole store (#1003), interval creates without a resolvable zone (#1004), and delete-route job id validation (#980)
- @he-yufeng — risk x-ray artifacts in portfolio runs (#900), Portfolio Studio artifacts surfaced in run detail (#966), yfinance crypto routed to the crypto engine (#970), and hierarchy-routed memory entries keeping their
.mdextension (#984) - @wiliao — Canadian markets end to end: TSX/TSXV market data (#1024) and symbol support through search fail-fast and CSV grounding (#1037)
- @MuggleJinx — session and run history stored under the user runtime root (#925, closes #904) and
~/.vibe-trading/.envloaded on the connector command path (#902, closes #901) - @cgycorey — Alpha Zoo tools reaching MCP (#979) and mapping-shaped Responses stream events accepted (#1034)
- @ofeksh-tr — the eToro Public API connector with path-separated demo/real profiles (#989) — broker connectors 12 → 13
- @su322 — source message ids threaded into IM outbound so QQ replies stay passive (#1008), and the output principle that stops the agent once evidence is sufficient (#1010)
- @zwrong — the
vibe-trading updateself-upgrade command (#1020) - @yrk111222 — ModelScope as an OpenAI-compatible provider (#1011)
- @x-lambda — agent proxy opt-out covering sync and async clients (#995)
- @dineeshd — authenticated API capability surfaces under enforced CSP (#961)
- @hhj123123 — the canonical run root preserved after HOME isolation (#1012)
- @00EVA — the Settings model dropdown auto-resizing so long provider/model slugs stay readable (#1006)
- @darkknight4563 —
bar_returnskept bit-identical for gapped positive series (#895) - @sambazhu — mootdx config pre-seeded in the sandbox home (#982)
- @yagnikpipaliya — self-healing for Claude models that deprecate the
temperaturefield (#890, closes #856) - @JungHoonGhae — the Korea equity (KRX) market engine (#693)
- @shugaoye — the OpenBB Workspace bridge (#817)
- @TSENGCHIENFENG — the read-only Taiwan snapshot tool (#848)
- @ddy4633, @tyj147454413-cmd, @y85998607, @klmtseng, @ebujinovch, @g0rdonL, @AmirF194, @Echoandelementwebsites, @dvirarad, @1anter — correlation, loader, vn.py-export, PIT-fundamentals and alpha-bench fixes carried into this cycle
- @warren618 / Haozhe Wu — the finance-math layer and valuation engine, the entity + cash-flow spine, run manifests and the hash-chained audit ledger, the four read-only data tools, the institutional commands and investor lenses, the grounding-gate repair, the analytic options payoff tool (#946), Codex OAuth recovery (#1014), the Shadow runtime root fix (#1017), release integration and open-PR/issue triage
v0.1.12 사이클 기여자
- @santhreal — a 30-PR correctness sweep: strict-JSON / finite-number hardening across metrics, factors, pattern, and options (#764/#765/#766/#767/#739/#740/#744), loader correctness (#761 yahoo 1m bars), and session / journal robustness (#762/#763/#768/#769/#770)
- @xkam7ar — broad reliability across packaging, web, scheduler, swarm, and CLI (#584), cancellation before the first AgentLoop iteration (#641, closes #638), QVeris session budget + atomic credit accounting (#685/#686), CI / OOS gates (#630/#632), and journal month-filter / side-parse fixes (#626/#628)
- @shadowinlife — the Strategy Development Manager skill (#457, closes #455), pluggable OCR + LLM-vision extraction (#548), centralized provider credentials (#563), the 80× signal-alignment vectorization (#698), and swarm MCP-discovery caching (#704)
- @ebujinovch — the correlation regime timeline endpoint + UI (#756, closes #719) and its
correlation-regimeskill (#557), plus theacademic_corr_rewirefactor (#705) - @honginp — Binance USD-M routing with execution/mark separation (#470/#716) and the maintenance-bracket decouple that keeps
-PERPbacktests zero-credential (#757) - @StaniellG — the MetaTrader 5 (Exness) broker connector +
mt5data source (#481) - @tyj147454413-cmd — the Binance fallback loader (#643), bounded OKX history with rate-limit handling (#644), and codex stream-failure classification (#663)
- @Marnie0415 — composite sub-engine fallback for unknown symbols (#734) and the frontend
insertBeforestreaming DOM-race fix (#717) - @YZY0108 — the look-ahead-bias fix across all five portfolio optimizers (#487)
- @UNHNQ — the SiliconFlow CN + Global providers (#565)
- @FenjuFu — the iFlytek Spark provider (#537)
- @jelech — the native Anthropic Messages API adapter (#695)
- @octo-patch — MiniMax regional API endpoints (#731)
- @Thibaultjaigu — the Requesty OpenAI-compatible gateway provider (#474)
- @Robin1987China — realized portfolio turnover metrics for every optimizer (#478)
- @YogeshModi24 — the Frazzini-Pedersen betting-against-beta academic factor (#480)
- @0xZKnw — opt-in TAP mode for Alpaca (#377)
- @sambazhu — the fundamental zoo
_VALID_ZOOSwhitelist (#707) - @nareshkps — Robinhood connector
account_numberwiring (#726) - @darkknight4563 — user swarm-presets directory discovery (#570)
- @MikeCer — IBKR thread-local connection pool + snapshot quotes (#636)
- @Shizoqua —
localloader interval resampling (#467) - @roberttidball — FastMCP transport import compatibility (#469)
- @yxhuang — bare-ticker resolution in the correlation matrix (#472, closes #471)
- @Bortlesboat — stale
OPENAI_BASE_URLprovider-switch fix (#484, closes #482) - @ananaymital — preflight
EnvConfigstale-cache fix (#479, closes #477) - @GabbaTauchi — reported the native zai streaming / base-URL bug (#758)
- @warren618 / Haozhe Wu — the correlation regime backend integration, the zai provider streaming + base-URL resolution fix (#758), release integration, and open-PR/issue triage
v0.1.11 사이클 기여자
- @shadowinlife — the
api_servermodularization capstone (1,103 → 371 lines, #424 closing #331), centralized env config with the AST CI gate (#440), loaderfetch()protocol conformance (#437), and the Strategy Development Manager RFC in review (#455/#457) — 12 merged PRs this cycle - @Robin1987China — Research Autopilot Phase 3 loop closure (#267), 4 canonical academic alphas (#277), Shadow Account PIT-safe entry conditions (#302/#314/#316), the turnover-aware portfolio optimizer (#466), scheduled-research route tests (#452), and test-coverage batches for trade-journal / pattern / loader layers (#268/#269/#276)
- @muku314115 — first-class Indian equity (NSE/BSE) support: the
IndiaEquityEngine, cost stack,.NS/.BOrouting, and theindia_brokerbridge (#305) - @mvanhorn — the end-to-end scheduled-research executor (#278), the Trading 212 read-only connector (#321), OpenAI default-model resolution (#319), and Robinhood config validation (#320)
- @fei-moss — the
analyze_imagevision tool (#464), NapCat DM pairing (#463), and the IM-media allowed-roots report (#465) - @sambazhu — the value-investing toolkit: financial-rigor + report-audit tools, 4 skills, and the
value_investing_committeepreset (#407/#408) - @Elfsa-Miranda — the evidence-bound alpha research pipeline exploration (#405/#416, since re-scoped into #442)
- @Hinotoi-agent — loopback CSRF rejection (#293) and authenticated remote same-origin UI requests (#304)
- @dpersek — configurable IM reply timeout (#413) and the provider-preflight redirect fix (#404)
- @digger-yu — cross-platform
setup/devcommands (#292) and dev-dependency pre-checks (#349) - @skloxo — tilde expansion + file-roots safety fallback (#299) and reactive zh-CN localization (#301)
- @kadaliao — the beginner tutorial (#393) and Alpha Library social cards (#396)
- @morluto — CLI resume first-message preservation (#448) and the Codex OAuth default model (#446)
- @yxhuang — the Kimi for Coding provider (#435) and the precise #433 diagnosis behind the governance-stack revert
- @isaveall — the
validation.jsonartifacts-dir fix (#429) and clearer--swarm-runerrors (#428) - @mustafakamal88 — timezone-aware UTC timestamps (#397)
- @irfanallana-oss — the zero-size order guard in
trading_place_order(#417) - @Shizoqua — the central OHLC-invariant loader guard (#274)
- @hobostay — SSRF-guard hardening for CGNAT/mesh ranges + the QQ media redirect fix (#389)
- @aeonframework — Pillow / langchain CVE floor bumps (#390)
- @hannibal-lee — the pandas version-constraint fix (#329)
- @MarkfuGod — dynamic data-source counts + token-gated microcompaction (#296)
- @gyx09212214-prog — strict JSON validation outputs (#306)
- @LemonCANDY42 — the backtest report library (#224)
- @fanfpy — Longbridge Decimal→float serialization (#459)
- @asahikiko — packaged SKILL.md capability-count sync + the manifest guard test (#461)
- @wison1717-maker — the mandate second-confirmation dialog + unified error toasts (#453)
- @imsankz — opencode provider mappings (#444)
- @flash1234pku — the tushare reference code-fence fix (#449)
- @Penn-Live — the Docker startup route-iteration crash report (#450)
- @warren618 / Haozhe Wu — the fundamental factor layer (PIT-safe SEC panels), the QVeris premium track, the IM channel runtime, India-equity integration review, CN search fallbacks, and release integration
v0.1.10 사이클 기여자
- @Hinotoi-agent — a security-hardening wave: local-shutdown auth (#241), loopback-host rebinding rejection (#242), agent shell-tool opt-in (#243), settings-write auth (#245), mandate proposal-id containment (#256), persistent-memory type validation (#257), and MCP swarm run-id containment (#258)
- @mvanhorn — the opt-in local data cache (#177), Gemini thoughtSignature round-trip over OpenAI-compat tool calls (#176), the custom data loader guide (#194), and the glm/zhipu provider alias + model-name inference (#247)
- @gyx09212214-prog — loader robustness for malformed crypto/RSSHub timeout env vars (#227, #240), requested yfinance end-date inclusion (#226), strict run-card JSON for non-finite metrics (#238), and ddgs retry-fallback coverage (#239)
- @BillDin — swarm agent status in the chat UI (#188), explicit preset-name handling (#189), the loader-backed market-data tool for swarm workers (#199), and preset-context continuations (#200)
- @Robin1987China — the Research Autopilot goal-hypothesis bridge (#260), the local CSV/Parquet/DuckDB data loader (#252), and an assistant-prefill fix + configurable Kimi User-Agent (#248)
- @LemonCANDY42 — the read-only runtime status dashboard (#210), persisted AgentLoop usage artifacts (#223), and opt-in Run Detail chart payloads (#225)
- @zwrong — the trace.jsonl overhaul with zero truncation + offload (#206) and session-id on exit +
resume <session-id>(#218) - @forge-builder — the AI contributor guide (#173) and the OpenClaw MCP research-only smoke-test docs (#165)
- @skloxo — Chinese (zh-CN) frontend localization (adopted from #217)
- @LeeCQiang — Chinese docstrings across all 452 Alpha Zoo factors (#180)
- @KaiLuettmann — GHCR pre-built image publishing on release (#187)
- @ngoanpv — Gemini thought_signature preservation through the AgentLoop dict path (#184)
- @ShahNewazKhan — Docker host-Ollama reachability via host.docker.internal (#196)
- @sambazhu — frontend sync of completed chat attempts (#236)
- @bhlt — baostock-native code format support (#230)
- @octo-patch — MiniMax M3 default model upgrade (#162)
- @warren618 / Haozhe Wu — the global data layer (8 sources + 18 read-only data tools), the 10 broker SDK connectors, the alpha-compare full stack, the provider-reliability overhaul, multi-engine web_search fallback, responsive Stop + SSE reconnect, and release integration
면책조항
Vibe-Trading은 리서치 및 거래 소프트웨어입니다. 투자 조언이 아니며, 자금을 보유하지 않고, 거래소를 운영하지 않습니다. 거래는 사용자가 명시적으로 인가한 브로커 채널(예: Robinhood Agentic Trading)을 통해서만, 사용자가 설정한 한도 내에서 이루어지며 언제든 중단할 수 있습니다. 이 브로커 거래 기능은 실험적이며 당사가 실제 브로커 계정으로 검증하지 않았습니다 — 사용에 따른 책임은 본인에게 있습니다. 과거 성과가 미래 수익을 보장하지 않습니다.
라이선스
MIT License — LICENSE 참조
⭐ Vibe-Trading이 연구에 도움이 되었다면, Star를 눌러 더 많은 분들이 찾을 수 있도록 도와주세요.
Vibe-Trading에 방문해 주셔서 감사합니다 ✨



