Skip to content

Latest commit

ย 

History

History
1890 lines (1478 loc) ยท 262 KB

File metadata and controls

1890 lines (1478 loc) ยท 262 KB

English | ไธญๆ–‡ | ๆ—ฅๆœฌ่ชž | ํ•œ๊ตญ์–ด | ุงู„ุนุฑุจูŠุฉ | Espaรฑol

Vibe-Trading ๋กœ๊ณ 

Vibe-Trading: ๋‹น์‹ ์˜ ๊ฐœ์ธ ํŠธ๋ ˆ์ด๋”ฉ ์—์ด์ „ํŠธ

ํ•œ ๋ฒˆ์˜ ๋ช…๋ น์œผ๋กœ ์—์ด์ „ํŠธ์— ์ข…ํ•ฉ์ ์ธ ํŠธ๋ ˆ์ด๋”ฉ ์—ญ๋Ÿ‰์„ ๋”ํ•˜์„ธ์š”

HKUDS%2FVibe-Trading | Trendshift

Python FastAPI React PyPI License
Feishu WeChat Discord

์›น์‚ฌ์ดํŠธ ย ยทย  ๋ฌธ์„œ ย ยทย  ๋‰ด์Šค ย ยทย  ๊ธฐ๋Šฅ ย ยทย  ์„€๋„์šฐ ๊ณ„์ • ย ยทย  ๋ฐ๋ชจ ย ยทย  ๋น ๋ฅธ ์‹œ์ž‘ ย ยทย  ์˜ˆ์ œ ย ยทย  API / MCP ย ยทย  ๋กœ๋“œ๋งต ย ยทย  ๊ธฐ์—ฌํ•˜๊ธฐ

pip install vibe-trading-ai


๐Ÿ“ฐ ๋‰ด์Šค

โš ๏ธ ๋ณด์•ˆ ๊ฒฝ๊ณ : X ๊ณ„์ • VibeTrading_HKU, Virtuals ํ”„๋กœ์ ํŠธ 101845, ํ† ํฐ ์ปจํŠธ๋ž™ํŠธ 0x640BDBF77b6447E8b7DB7894cED84BD1c40571f4๋Š” ๋ชจ๋‘ Vibe-Trading ๊ณต์‹๊ณผ ๋ฌด๊ด€ํ•ฉ๋‹ˆ๋‹ค. Vibe-Trading์€ ์–ด๋– ํ•œ ํ† ํฐ์ด๋‚˜ ๋ฐˆ์ฝ”์ธ๋„ ๋ฐœํ–‰ํ•˜๊ฑฐ๋‚˜ ๊ณต์‹์ ์œผ๋กœ ์ง€์ง€ํ•œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ํ† ํฐ์„ ๊ตฌ๋งคํ•˜๊ฑฐ๋‚˜ ์ง€๊ฐ‘์„ ์—ฐ๊ฒฐํ•˜๊ฑฐ๋‚˜ ์–ด๋– ํ•œ ์„œ๋ช…๋„ ํ•˜์ง€ ๋งˆ์„ธ์š”. ์ž์„ธํžˆ ๋ณด๊ธฐ.

  • 2026-08-25 ๐Ÿ›ก๏ธ ๋ผ์ด๋ธŒ ๊ฒŒ์ดํŠธ์˜ fail-open ๋‘ ๊ฑด ์ฐจ๋‹จ; purged CV๊ฐ€ ํ…Œ์ŠคํŠธ ๋ธ”๋ก ์‚ฌ์ด ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์šฐ๋˜ ๋ฌธ์ œ ์ˆ˜์ •: Alpaca ์ˆ์ด ์–‘์ˆ˜ ์ต์Šคํฌ์ €๋กœ ๊ธฐ๋ก๋˜์–ด(qty๋Š” ์ ˆ๋Œ“๊ฐ’, ๋ฐฉํ–ฅ์€ side) ํŒ”์ˆ˜๋ก max_total_exposure_usd๊ฐ€ ๋А์Šจํ•ด์กŒ๋‹ค โ€” ์ด์ œ TAP JSON๊ณผ ์ง์ ‘ SDK ๋‘ ๊ฒฝ๋กœ ๋ชจ๋‘ ์ˆ˜๋Ÿ‰์— ๋ถ€ํ˜ธ๊ฐ€ ๋ถ™๋Š”๋‹ค (#1209); OKX/Futu๋Š” ๊ฑฐ๋ถ€๋œ API ํ˜ธ์ถœ์„ "๋นˆ ์žฅ๋ถ€, status: ok"๋กœ ๋ญ‰๊ฐœ ์œ„์ž„ ๊ฒŒ์ดํŠธ๊ฐ€ ๋นˆ ์žฅ๋ถ€์— ๋Œ€๊ณ  ํ•œ๋„๋ฅผ ํ‰๊ฐ€ํ–ˆ๋‹ค โ€” ์ด์ œ ๋ช…์‹œ์  ์˜ค๋ฅ˜ ๋ด‰ํˆฌ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๊ฒŒ์ดํŠธ๋Š” fail-closed ํ•œ๋‹ค (#1212). ๋‘˜ ๋‹ค #1207 ๊ฐ์‚ฌ ๋กœ๋“œ๋งต์˜ Phase 0. ์ˆ˜์ •: ์กฐํ•ฉํ˜• purged CV๊ฐ€ ๋น„์—ฐ์† ํ…Œ์ŠคํŠธ ๋ธ”๋ก์„ ํ•œ ๊ตฌ๊ฐ„์œผ๋กœ ์ทจ๊ธ‰ํ•ด ๊ทธ ์‚ฌ์ด ํ›ˆ๋ จ ๊ด€์ธก์น˜๋ฅผ ์ „๋ถ€ purgeํ–ˆ๋‹ค; ์ด์ œ ์„ธ๊ทธ๋จผํŠธ๋ณ„๋กœ purgeํ•˜๊ณ  ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ๊ฐ€ ๋นˆ fold๋Š” ์˜ˆ์™ธ๋ฅผ ๋˜์ง„๋‹ค (#1204); ์‹ ์šฉ๋ฆฌ์Šคํฌ ํ•จ์ˆ˜๋Š” NaN/inf ์ž…๋ ฅ์„ ๊ฑฐ๋ถ€ํ•˜๋ฉฐ NaN ์ ์ˆ˜๋‚˜ "ํšŒ์ƒ‰ ์ง€๋Œ€" ํŒ์ •์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š”๋‹ค (#1215, #1214 ๋‹ซ์Œ). ์‹ ๊ทœ: swarm ์›Œ์ปค ์žฌ์‹œ๋„๊ฐ€ ์ƒํ•œ ์žˆ๋Š” equal-jitter ๋ฐฑ์˜คํ”„๋กœ ๋ฐ”๋€Œ์—ˆ๋‹ค (#1210, #1208์„ ํ–ฅํ•ด); vibe-trading --swarm-retry <run_id> / /swarm retry๋กœ ์‹คํŒจํ•œ ์‹คํ–‰์„ ๋‹ค์‹œ ๋Œ๋ฆฌ๊ณ  --resume์œผ๋กœ ์™„๋ฃŒ๋œ ํƒœ์Šคํฌ๋ฅผ ์œ ์ง€ํ•œ๋‹ค (#1194). @he-yufengใ€@santhrealใ€@Robin1987Chinaใ€@pengpengyi92ใ€@SiMinus ๋‹˜๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!
  • 2026-08-24 ๐Ÿ”— IBKR ๊ณต์‹ MCP๊ฐ€ "๋„๊ตฌ ๋ชฉ๋ก๋งŒ ๋ณด์ด๋˜" ์ƒํƒœ์—์„œ ์‹ค์ œ๋กœ ์“ฐ์ด๋Š” ์ฝ๊ธฐ ์ „์šฉ ํฌํŠธํด๋ฆฌ์˜ค ์†Œ์Šค๋กœ; ์Šค์ผ€์ค„๋ง์—๋Š” ํ˜ผ์ž์„œ๋Š” ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋Š” ์—์ด์ „ํŠธ ๋„๊ตฌ ์ถ”๊ฐ€: #1178์ด URL์„ ๊ณ ์ณค์ง€๋งŒ IBKR ๊ฒŒ์ดํŠธ์›จ์ด๋Š” ๋กœ๊ทธ์ธ ์ „์— FastMCP ๊ธฐ๋ณธ OAuth ํด๋ผ์ด์–ธํŠธ ๋“ฑ๋ก์„ ๊ฑฐ๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค. IBKR ์ „์šฉ OAuth ํ”„๋กœ๋ฐ”์ด๋” โ€” ๋ธŒ๋ผ์šฐ์ €ํ˜• ํ—ค๋”, token_endpoint_auth_method: none, ๊ณ ์ • ์ฝœ๋ฐฑ ํฌํŠธ, ๋งŒ๋ฃŒ ๋“ฑ๋ก ๋ณต๊ตฌ๋ฅผ MCP ํ˜ธ์ŠคํŠธ๊ฐ€ api.ibkr.com์ผ ๋•Œ๋งŒ ์ ์šฉ โ€” ๊ฐ€ ์ธ์ฆ์„ ์™„๋ฃŒํ•˜๊ณ (#1186), ์‹ค๊ณ„์ขŒ๋กœ ๊ฒ€์ฆ๋œ get_account_summary / get_account_positions ๋„๊ตฌ๊ฐ€ ๋ฒ”์šฉ ๊ณ„์ขŒ/ํฌ์ง€์…˜ ์ฝ๊ธฐ๋ฅผ ์ง€์›ํ•˜๊ฒŒ ๋˜์–ด ibkr-live-official-mcp-readonly๊ฐ€ /portfolio์˜ ์œ ํšจํ•œ ์†Œ์Šค๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(#1190, #1126 ์ข…๋ฃŒ). ์‹ ๊ทœ: ์—์ด์ „ํŠธ์—๊ฒŒ ๋ณด์ด๋Š” ์Šค์ผ€์ค„๋ง ๋„๊ตฌ๋Š” scheduled_research ํ•˜๋‚˜๋ฟ โ€” propose_create/propose_cancel์€ ํ˜„์žฌ ์‚ฌ์šฉ ์ค‘์ธ ํ™”๋ฉด์—์„œ ํ™•์ธํ•˜๊ธฐ ์ „๊นŒ์ง€ ์ž‘์—… ์ €์žฅ์†Œ๋ฅผ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค(Web ํ™•์ธ ์นด๋“œ, CLI y/N, IM์—์„œ๋Š” ์ •ํ™•ํžˆ confirm/็กฎ่ฎค์œผ๋กœ ๋‹ต์žฅ). ์ „๋‹ฌ ๋Œ€์ƒ์€ ์šด์˜์ž๊ฐ€ ๊ตฌ์„ฑํ•œ ๋ถˆํˆฌ๋ช… ์ฐธ์กฐ๋กœ ์›์‹œ chat/user id๋ฅผ ์ ˆ๋Œ€ ๋…ธ์ถœํ•˜์ง€ ์•Š์œผ๋ฉฐ, end_at์ด ์ง€๋‚œ ์ž‘์—…์€ ๋งŒ๋ฃŒ๋˜์–ด ๋‹ค์‹œ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(#1187). ์ˆ˜์ •: comps์™€ 3๋Œ€ ์žฌ๋ฌด์ œํ‘œ ๋ชจ๋ธ์ด ์‚ฐ์ˆ ์— ๋“ค์–ด๊ฐ€๋Š” ๋ชจ๋“  ์ž…๊ตฌ์—์„œ ๋น„์œ ํ•œ ์ž…๋ ฅ์„ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค โ€” ์ด์ „์—๋Š” NaN ๋™์ข…์—…์ฒด ์ง€ํ‘œ๊ฐ€ ๋ฐฐ์ˆ˜ ๋ถ„ํฌ์— ํฌํ•จ๋˜์–ด ์ค‘์•™๊ฐ’์„ NaN์œผ๋กœ ๋Œ๊ณ  ๊ฐ”๊ณ , abs(nan) > tolerance๋Š” False๋ผ์„œ NaN ๋Œ€์ฐจ๋Œ€์กฐํ‘œ๊ฐ€ ํ•˜๋“œ ๊ฒ€์‚ฌ๋ฅผ ํ†ต๊ณผํ–ˆ์Šต๋‹ˆ๋‹ค(#1184, #1183 ์ข…๋ฃŒ); get_market_data๋Š” ์ž˜๋ชป๋œ ํ˜ธ์ถœ๋กœ ๋กœ๋” ํด๋ฐฑ ์ฒด์ธ์„ ์†Œ๋ชจํ•˜๊ธฐ ์ „์— codes/๋‚ ์งœ/source/interval์„ ๊ฒ€์ฆํ•˜๊ณ , source ์—ด๊ฑฐํ˜•์ด ๋“ฑ๋ก๋œ 6๊ฐœ ๋กœ๋”๋ฅผ ์กฐ์šฉํžˆ ๊ฑฐ๋ถ€ํ•˜๋˜ ๋ฌธ์ œ๋„ ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค(#1185); Feishu QR ๋กœ๊ทธ์ธ์€ ๋”ฑ ํ•œ ๋ฒˆ๋งŒ ๋‚ด๋ ค์˜ค๋Š” ์•ฑ ์ž๊ฒฉ ์ฆ๋ช…์„ ์›์ž์ ์œผ๋กœ, ์†Œ์œ ์ž ์ „์šฉ ๊ถŒํ•œ์œผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค(#1188); risk-analysis ์Šคํ‚ฌ ๋ฌธ์„œ์˜ ์—ญ์‚ฌ์  VaR ์ˆœ์„œํ†ต๊ณ„๋Ÿ‰ ๊ณต์‹์ด ์ฝ”๋“œ์™€ ์ผ์น˜ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(#1189). @sykuangใ€@goatyycใ€@AirHua-byteใ€@Robin1987Chinaใ€@cgycoreyใ€@youngjincho02-arch ๋‹˜๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!
  • 2026-08-23 ๐Ÿ”Œ IBKR MCP ์‹œ๋“œ๊ฐ€ ์ž˜๋ชป๋œ URL์„ ๊ฐ€๋ฆฌํ‚ค๋˜ ๋ฌธ์ œ์™€, LLM ์–ด๋Œ‘ํ„ฐ ํ•˜๋‚˜๋ฅผ ๋‹ซ์œผ๋ฉด ์ „๋ถ€ ๋‹ซํžˆ๋˜ ๋ฌธ์ œ: ๊ณต์‹ IBKR ์ฝ๊ธฐ ์ „์šฉ MCP ํ”„๋กœํ•„ ์‹œ๋“œ, README, SKILL.md ๋ชจ๋‘ https://api.ibkr.com/v1/api/mcp๋ฅผ ๊ฐ€๋ฆฌ์ผฐ์ง€๋งŒ, IBKR ์ž์ฒด AI ์—ฐ๋™ ํŽ˜์ด์ง€๊ฐ€ ๊ณต๊ฐœํ•œ ์—”๋“œํฌ์ธํŠธ๋Š” https://api.ibkr.com/v1/api/mcp-public์ž…๋‹ˆ๋‹ค. ์‹œ๋“œ, README 6์ข…, SKILL.md๊ฐ€ ์ด์ œ ๋ชจ๋‘ ์ด ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค. agent.json์— ์˜ˆ์ „ URL์ด ๋‚จ์•„ ์žˆ๋‹ค๋ฉด vibe-trading connector configure ibkr-live-official-mcp-readonly --yes๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜์„ธ์š”. IBKR ๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ OAuth ํด๋ผ์ด์–ธํŠธ ๋“ฑ๋ก์„ ๊ฑฐ๋ถ€ํ•˜๋Š” ๋‹จ๊ณ„๋Š” #1126์—์„œ ๊ณ„์† ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค (#1178). ์ˆ˜์ •: ChatLLM.close()๊ฐ€ LangChain์˜ ํ”„๋กœ์„ธ์Šค ์ „์—ญ ์บ์‹œ HTTPX ํด๋ผ์ด์–ธํŠธ๊นŒ์ง€ ๋‹ซ์•„, ์ œ๋ชฉ ์ƒ์„ฑ์ด๋‚˜ ์ด๋ฏธ์ง€ ์ธ์‹ ํ˜ธ์ถœ์ด ํ•œ ๋ฒˆ ๋๋‚˜๋ฉด ์ดํ›„ ๋ชจ๋“  ์š”์ฒญ์ด ์žฌ์‹œ์ž‘ ์ „๊นŒ์ง€ "client has been closed"๋กœ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ Vibe-Trading์ด ์ง์ ‘ ๋งŒ๋“  ์ „์†ก ๊ณ„์ธต๋งŒ ๋‹ซ์Šต๋‹ˆ๋‹ค (#1182); ์‘๋‹ต ์ŠคํŠธ๋ฆฌ๋ฐ ๋„์ค‘ ์„œ๋น„์Šค๊ฐ€ ์žฌ์‹œ์ž‘๋˜๋ฉด ์ถœ๋ ฅ๋œ ํ…์ŠคํŠธ๊ฐ€ ์‚ฌ๋ผ์ง€๊ณ  attempt๊ฐ€ ์˜์›ํžˆ running ์ƒํƒœ๋กœ ๋‚จ์•˜์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋ถ€๋ถ„ ์‘๋‹ต์„ ์ฒดํฌํฌ์ธํŠธ๋กœ ์ €์žฅํ•˜๊ณ  ๋‹ค์Œ ์‹œ์ž‘ ์‹œ ๋ช…์‹œ์ ์ธ interrupted ๋Œ€ํ™” ๊ธฐ๋ก์œผ๋กœ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค (#1180). ์‹ ๊ทœ: ์›น ์ฑ„ํŒ…์—์„œ ํŒŒ์ผ ์„ ํƒ, ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ, ํด๋ฆฝ๋ณด๋“œ ๋ถ™์—ฌ๋„ฃ๊ธฐ๋กœ ํ•œ ํ„ด์— ์ตœ๋Œ€ 5๊ฐœ ํŒŒ์ผ์„ ์ฒจ๋ถ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (#1179). @c020627, @AirHua-byte ๋‹˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!
์ด์ „ ๋‰ด์Šค
  • 2026-08-22 ๐Ÿ’ผ ํฌํŠธํด๋ฆฌ์˜ค ํŽ˜์ด์ง€: ์—ฌ๋Ÿฌ ๋ธŒ๋กœ์ปค์˜ ๋ณด์œ  ์ข…๋ชฉ์„ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ํ•œ๋ˆˆ์—: ์ฝ๊ธฐ ์ „์šฉ ์ปค๋„ฅํ„ฐ ํ”„๋กœํ•„(account.read + positions.read๋ฅผ ๊ฐ€์ง„ ์—ฐ๊ฒฐ ์ธ์Šคํ„ด์Šค; IBKR ๊ณต์‹ MCP ํ”„๋กœํ•„์€ ์•„์ง ๋Œ€์ƒ ์•„๋‹˜)์„ ๊ณ ๋ฅด๋ฉด ์ƒˆ /portfolio ํŽ˜์ด์ง€๊ฐ€ ์ด๋ฅผ ๋ถˆ๋ณ€ ์Šค๋ƒ…์ƒท์œผ๋กœ ์ง‘๊ณ„ํ•ฉ๋‹ˆ๋‹ค โ€” ๋ณด์œ  ์ข…๋ชฉ๋งˆ๋‹ค ์ถœ์ฒ˜ ํ‘œ๊ธฐ, USD/CNY ํ‰๊ฐ€, CSV ๋‚ด๋ณด๋‚ด๊ธฐ, ํžˆ์Šคํ† ๋ฆฌ ์ฐจํŠธ ํฌํ•จ. ์ƒˆ๋กœ ๊ณ ์นจ์— ์‹คํŒจํ•œ ์†Œ์Šค๋Š” ์˜ค๋ฅ˜๋กœ ๋ณด๊ณ ๋˜๊ณ  ํ•ฉ๊ณ„์—์„œ ์ œ์™ธ๋˜๋ฉฐ โ€” ์ง€๋‚œ ์บ์‹œ๋กœ ๋Œ€์ฒดํ•˜์ง€ ์•Š๊ณ  โ€” ์Šค๋ƒ…์ƒท์€ ๋ถˆ์™„์ „์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. portfolio_summary ๋„๊ตฌ๋Š” ๊ธฐ์กด portfolio_risk_xray์— ๊ทธ๋Œ€๋กœ ๋„˜๊ธธ ์ˆ˜ ์žˆ๋Š” risk_xray_args๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , vibe-trading portfolio show|refresh|sources๋Š” ๊ฐ™์€ ์Šค๋ƒ…์ƒท์„ ํ„ฐ๋ฏธ๋„์— ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ง์ ‘ ์ž‘์„ฑํ•œ ์ฝ๊ธฐ ์ „์šฉ ์ปค๋„ฅํ„ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ~/.vibe-trading/connectors/์— ๋‘ก๋‹ˆ๋‹ค(์“ฐ๊ธฐ ๋Šฅ๋ ฅ์„ ์„ ์–ธํ•œ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋Š” ๊ฑฐ๋ถ€, ๋น„๋ฐ€๊ฐ’์€ [keyring] extra๋ฅผ ํ†ตํ•ด OS ํ‚ค์ฒด์ธ์œผ๋กœ). ์ด ๊ฒฝ๋กœ์—์„œ๋Š” ์–ด๋–ค ๊ฒƒ๋„ ์ฃผ๋ฌธ์„ ๋‚ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(#1072, #1171์„ ํ–ฅํ•ด). ์ˆ˜์ •: Alpha Zoo ํŒฉํ„ฐ 13๊ฐœ๊ฐ€ ์ˆ˜์ต๋ฅ  ๊ณ„์‚ฐ ์ „์— ๊ฒฐ์ธก ์ข…๊ฐ€๋ฅผ ์•ž์œผ๋กœ ์ฑ„์›Œ ๋ฐ์ดํ„ฐ ๊ฒฐ์ธก์„ ์œ ํ•œํ•œ "0% ์ˆ˜์ต๋ฅ "๋กœ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค โ€” ์ด์ œ ๊ฒฐ์ธก์€ NaN์œผ๋กœ ๋‚จ์Šต๋‹ˆ๋‹ค(#1172). ๊ฐ™์€ http/sse ์„œ๋ฒ„์˜ ์„œ๋กœ ๋ฌด๊ด€ํ•œ MCP ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•˜๋‚˜์˜ ํด๋ฐฑ ์—ฐ๊ตฌ ๋ชฉํ‘œ ์„ธ์…˜์„ ๊ณต์œ ํ–ˆ์Šต๋‹ˆ๋‹ค(#1173). ๋ฉ”๋ชจ๋ฆฌ GC์™€ ์••์ถ•์ด ์˜ค๋ž˜๋œ FTS ํ–‰๊ณผ ๊ณ ์•„ relation ์‚ฌ์ด๋“œ์นด๋ฅผ ๋‚จ๊ฒผ์Šต๋‹ˆ๋‹ค(#1174). cancel_run()์ด ์ŠคํŠธ๋ฆฌ๋ฐ ์ค‘์ธ swarm worker์— ๋‹ฟ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค โ€” ์ด์ œ ์ŠคํŠธ๋ฆผ์„ ์ค‘๋‹จํ•˜๊ณ  ๊ทธ ํ„ด์˜ ๋„๊ตฌ ํ˜ธ์ถœ์„ ๊ฑด๋„ˆ๋›ฐ๋ฉฐ ์ทจ์†Œ๋จ ํƒœ์Šคํฌ๋กœ ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค(#1175). MCP get_research_reports๊ฐ€ beginTime/endTime์„ ๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค(#1176). get_options_chain์ด ๋‹ค๋ฅธ ์ฃผ๊ธฐ์˜ ๋งŒ๊ธฐ์— ok: true์™€ ๋‹ค๋ฅธ ๋‚ ์งœ์˜ ๊ณ„์•ฝ์„ ๋Œ๋ ค์คฌ์Šต๋‹ˆ๋‹ค(#1177). ๊ธฐ์—ฌํ•ด ์ฃผ์‹  @goatyyc, @Shizoqua, @cgycorey์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

  • 2026-08-21 โฑ๏ธ ์˜์›ํžˆ ๋ฉˆ์ถฐ ์žˆ๋˜ ์‹คํ–‰: bash ํƒ€์ž„์•„์›ƒ์ด shell๋งŒ ์ข…๋ฃŒํ•˜๊ณ  ํŒŒ์ดํ”„ ํ•ธ๋“ค์„ ์ฅ” ์†์ž ํ”„๋กœ์„ธ์Šค๋Š” ์‚ด์•„๋‚จ์•„, ์‹คํ–‰์€ 20๋ถ„ ๋„˜๊ฒŒ "์‹คํ–‰ ์ค‘"์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ „์šฉ ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน์—์„œ ์‹œ์ž‘ํ•ด ํŠธ๋ฆฌ ์ „์ฒด๋ฅผ ์ข…๋ฃŒํ•˜๊ณ , ์ •์ฒด ๊ฐ์‹œ์ž๊ฐ€ ์ง„์ „ ์—†๋Š” ์‹คํ–‰์„ ๋๋‚ด๋ฉฐ, ์••์ถ•๋„ ๋ชจ๋ธ ์ž์‹ ์˜ ๊ฒ€์ฆ ๊ธฐ๋ก์„ ๋ฒ„๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค(#1169). ์ˆ˜์ •: Tencent์˜ ๋‹ค๋…„ ํžˆ์Šคํ† ๋ฆฌ๊ฐ€ 500๋ด‰์—์„œ ์กฐ์šฉํžˆ ์ž˜๋ ธ์Šต๋‹ˆ๋‹ค(#1154). ์‹ ๊ทœ: swarm ์‹คํ–‰์€ ์‹คํŒจํ•œ ํ•˜์œ„ ๊ทธ๋ž˜ํ”„๋งŒ ์žฌ์ƒํ•ฉ๋‹ˆ๋‹ค(#1158, #1157 ์ข…๋ฃŒ). Market Watch๋Š” ๊ฐ ๋ชจ๋‹ˆํ„ฐ์˜ ์ตœ์‹  ํŒ์ •์„ ๋ชฉ๋ก์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค(#1156, #943 ์ข…๋ฃŒ). quantlib๋Š” ํ…Œ์ŠคํŠธ๋œ 286๊ฐœ ํ•จ์ˆ˜์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค(#1159โ€“#1168). ๊ธฐ์—ฌํ•ด ์ฃผ์‹  @wiliao, @cgycorey, @he-yufeng, @BigFishEmily, @santhreal, @SiMinus, @alinv0์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

  • 2026-08-20 ๐Ÿš€ v0.1.14 ๋ฆด๋ฆฌ์Šค๏ผˆ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ, pip install -U vibe-trading-ai): 0.1.13 ์ดํ›„ 272๊ฐœ ์ปค๋ฐ‹, 74๊ฐœ ๋ณ‘ํ•ฉ PR. ์ฃผ์ธ๊ณต์€ ๋๋‚œ ๋ฐฑํ…Œ์ŠคํŠธ๊ฐ€ CSV ๋”๋ฏธ๊ฐ€ ์•„๋‹ˆ๋ผ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฐ๊ณผ๋ฌผ์ด ๋˜์—ˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. Run Detail์— ํƒญ ๋„ค ๊ฐœ๊ฐ€ ์ถ”๊ฐ€๋์Šต๋‹ˆ๋‹ค โ€” ํŒฉํ„ฐ ๋ฆฌ์„œ์น˜(ํ‰๊ท ์„ ์ด ์žˆ๋Š” ์ผ๋ณ„ IC ์‹œ๊ณ„์—ด, IC ํ†ต๊ณ„, ๋ถ„์œ„ ๊ทธ๋ฃน ์ž์‚ฐ๊ณก์„ , ๊ทธ๋ฆฌ๊ณ  ์ง€๊ธˆ๊นŒ์ง€ ์–ด๋””์—๋„ ์—†๋˜ IC ์ƒ๊ด€ํ–‰๋ ฌ), ํฌ์ง€์…˜ ๊ตฌ์กฐ(๋‚ ์งœ ์Šฌ๋ผ์ด๋”๊ฐ€ ๋‹ฌ๋ฆฐ ๋น„์ค‘ ํŒŒ์ด/ํŠธ๋ฆฌ๋งต, ์—…์ข…๋ณ„ ์ˆœ์ต์Šคํฌ์ € ๋ง‰๋Œ€, ๋น„์ค‘ ๋ณ€ํ™” ์˜์—ญ ์ฐจํŠธ โ€” ํŒŒ์ด๋Š” ์ด์•ก ๊ตฌ์„ฑ์ด๊ณ  ๋ง‰๋Œ€๋Š” ์ˆœ์•ก์ด๋ผ, ๊ฐ™์€ ์—…์ข…์˜ ๋กฑ/์ˆ ์Œ์€ ๋ง‰๋Œ€์—์„œ 0์œผ๋กœ ์ƒ์‡„๋˜์ง€๋งŒ ํŒŒ์ด์—์„œ๋Š” ๋‘ ๋‹ค๋ฆฌ๊ฐ€ ๋ชจ๋‘ ๋ณด์ž…๋‹ˆ๋‹ค), ํ‹ฐ์–ด์‹œํŠธ(์›”๋ณ„ ์ˆ˜์ต๋ฅ  ํžˆํŠธ๋งต, ์—ฐ๊ฐ„ ๋ง‰๋Œ€, ์ž์‚ฐ๊ณก์„  ์œ„์— ํ‘œ์‹œํ•œ ์ƒ์œ„ 5๊ฐœ ๋‚™ํญ), ๊ทธ๋ฆฌ๊ณ  KPIยท๋ฒค์น˜๋งˆํฌ ๋Œ€๋น„ ์ž์‚ฐ์ถ”์ดยท๋กค๋ง ์ƒคํ”„ยท์ „์ฒด ์ฒด๊ฒฐ ์›์žฅ์„ ๋‹ด์€ ๋Œ€ํ™”ํ˜• ๋ฆฌ์„œ์น˜ ๋Œ€์‹œ๋ณด๋“œ. ๋„ค ๊ฐ€์ง€ ๋ชจ๋‘ ์‹คํ–‰์ด ์ด๋ฏธ ๊ธฐ๋กํ•˜๋Š” artifact๋ฅผ ์ฝ์„ ๋ฟ, ์ƒˆ ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ์€ ์—†์Šต๋‹ˆ๋‹ค. ์ƒˆ Options Lab ํŽ˜์ด์ง€๋Š” ๋งŒ๊ธฐ ์†์ต๋„, ํ˜„๋ฌผร—IV ์‹œ๋‚˜๋ฆฌ์˜ค ํ–‰๋ ฌ, ํฌํŠธํด๋ฆฌ์˜ค ๊ทธ๋ฆญ์Šค, ์‹ค์‹œ๊ฐ„ ์˜ต์…˜ ์ฒด์ธ์„ MCP ๋„๊ตฌ์™€ ๋™์ผํ•œ, ํ…Œ์ŠคํŠธ๋กœ ๊ณ ์ •๋œ ์—”์ง„์œผ๋กœ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜: Intel Mac์—์„œ ๋‹ค์‹œ pip install vibe-trading-ai๊ฐ€ ๋ฉ๋‹ˆ๋‹ค โ€” smartmoneyconcepts๊ฐ€ llvmlite๋ฅผ ๋Œ์–ด์˜ค๋Š”๋ฐ, ํ›„์ž๋Š” 0.46๋ถ€ํ„ฐ macOS x86_64 wheel์„ ๋‚ด์ง€ ์•Š์•„ Intel ์„ค์น˜๊ฐ€ ๋งค๋ฒˆ CMake๊ฐ€ ํ•„์š”ํ•œ ์†Œ์Šค ๋นŒ๋“œ๋กœ ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์„ ํƒํ˜• [smc] extra๋กœ ์˜ฎ๊ฒผ๊ณ  ๋‚ก์€ <3.14 ์ƒํ•œ๋„ ์—†์•ด์Šต๋‹ˆ๋‹ค(#1035). ์‹ ๊ทœ: Alpha Zoo์™€ SDM ์ €์žฅ์†Œ๋ฅผ ์•„์šฐ๋ฅด๋Š” ๊ทผ๊ฑฐ ๊ฒŒ์ดํŠธ ์ „๋žต ํƒ์ƒ‰(์ ์žฌ ๊ฒฝ๋กœ, ์ฝ๋Š” ์‹œ์ ์— ๊ณ„์‚ฐ๋˜๋Š” ์‹ ์„ ๋„ fresh/aging/stale, ์˜ค๋ž˜๋œ ํ–‰์€ ๊ธฐ๋ณธ ์ถ”์ฒœ์—์„œ fail-closed๋กœ ์ œ์™ธ), ๋ฆฌ์Šค๊ฐ€ ๊ฑธ๋ฆฐ outbox๋กœ ์Šค์Šค๋กœ ์ „๋‹ฌํ•˜๋Š” ์˜ˆ์•ฝ ๋ฆฌ์„œ์น˜์™€ Market Watch ๋ชฉ๋ก์šฉ์œผ๋กœ ์ €์žฅ๋˜๋Š” ํŒ์ •, ์ฝ๊ธฐ ์ „์šฉ Futu ์—”๋“œํฌ์ธํŠธ 7์ข…, ๋ฐฑํ…Œ์ŠคํŠธ ์‹œ์žฅ์œผ๋กœ์„œ์˜ ๋ฒ ํŠธ๋‚จ(HOSE), ์˜คํ”„๋ผ์ธ USD-M ๊ณ„์ขŒ ๋Œ€์‚ฌ, Novita AIยทGitHub Copilot ํ”„๋กœ๋ฐ”์ด๋”, ํ˜ธ์ŠคํŒ…ํ˜• MetaTrader 5 ๋ฐ์ดํ„ฐ ์†Œ์Šค, ์ŠคํŽ˜์ธ์–ดยท๋…์ผ์–ด ๋กœ์ผ€์ผ, ๊ทธ๋ฆฌ๊ณ  74๊ฐœ๋กœ ๋Š˜์–ด๋‚œ MCP ๋„๊ตฌ. ์ •ํ™•์„ฑ: ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ๊ฐ€ ์ƒŒ๋“œ๋ฐ•์Šค๋ฅผ ๋ฒ—์–ด๋‚˜ ์‹ค์ œ ์„ค์ • ๋ฃจํŠธ์— ์“ฐ๋Š” ์ผ์ด ์—†์–ด์กŒ์Šต๋‹ˆ๋‹ค โ€” ์ด์ „์—๋Š” ์ „์ฒด ์‹คํ–‰ ๋•Œ๋งˆ๋‹ค ํ•ด์‹œ ์ฒด์ธ ์‹ค๊ณ„์ขŒ ๊ฐ์‚ฌ ์›์žฅ์— ๊ฐ€์งœ order_rejected๊ฐ€ ๋ง๋ถ™์—ˆ์Šต๋‹ˆ๋‹ค. build_registry()๋Š” ๋น ์ง„ ๋„๊ตฌ ๋ชฉ๋ก์„ ์กฐ์šฉํžˆ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. xirr๋Š” ์žฅ๊ธฐ ํ• ์ธ ์–ธ๋”ํ”Œ๋กœ๋ฅผ ๊ฒฌ๋””๊ณ , DCF๋Š” ๋น„์œ ํ•œ ์ž…๋ ฅ์— ์Œ์ˆ˜ ์ฃผ๊ฐ€ ๋Œ€์‹  ๊ฑฐ๋ถ€๋กœ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค. .VN ์ข…๋ชฉ์ด A์ฃผ ๊ทœ์น™์œผ๋กœ ์ฒด๊ฒฐ๋˜์ง€ ์•Š์œผ๋ฉฐ, ๋ฐฑํ…Œ์ŠคํŠธ ์•„์นด์ด๋ธŒ๊ฐ€ ๋‘ ์‹คํ–‰์˜ ์‚ฐ์ถœ๋ฌผ์„ ์„ž์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ผ๋ จ์˜ grounding ์ˆ˜์ •์œผ๋กœ ๋‚ ์งœ, ์ˆœ์„œ ๋ชฉ๋ก, ์š”์œจ ์ˆ˜์‹ ์† ํ•ญ๋“ฑ ์ƒ์ˆ˜, ํ˜ธ๊ฐ€๋กœ ์˜ค๋…๋œ ์ฃผ๋ฌธ ๋ผ์ธ์—์„œ ๋น„๋กฏ๋œ ์˜ค๊ฑฐ๋ถ€๊ฐ€ ์ •๋ฆฌ๋์Šต๋‹ˆ๋‹ค. @Shizoqua, @shadowinlife, @pengpengyi92, @cgycorey, @ofeksh-tr, @lorenzozanee, @AndyLongest, @zzz607, @wiliao, @jay79-boop, @Robin1987China, @Echoandelementwebsites, @zhiwuyazhe-fjr, @x-lambda, @sykuang, @straun-repo, @nstavros, @ngoanpv, @miguelangelo78, @lukiod, @jax-novita, @honginp, @he-yufeng, @fixXxerTech, @er-s-an, @daviddaco1, @birdxs, @QCYTSN, @549236606-oss, @1psconstructor ๋‹˜๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

  • 2026-08-19 ๐Ÿ”Œ ๋ฉˆ์ถ˜ ์‹คํ–‰, ์ž‘์—…๋งˆ๋‹ค ์ƒˆ๋Š” ์—ฐ๊ฒฐ, ์„ค์น˜๋˜์ง€ ์•Š๋˜ Intel Mac: provider๊ฐ€ ์กฐ์šฉํ•ด์ง€๋ฉด ์‹คํ–‰์ด ๋ฌดํ•œ์ • ๋ฉˆ์ท„์Šต๋‹ˆ๋‹ค. ์ƒˆ VIBE_TRADING_LLM_TIMEOUT_SECONDS(๊ธฐ๋ณธ 300s)๊ฐ€ ํ˜ธ์ถœ์„ ์ œํ•œํ•˜๊ณ , tool-call ๋งˆํฌ์—…์ด ์ตœ์ข… ๋‹ต๋ณ€์œผ๋กœ ๋‚˜๊ฐ€๋Š” ์ผ๋„ ์—†์Šต๋‹ˆ๋‹ค(#1105). swarm์€ ์ž‘์—…๋งˆ๋‹ค ํ’€๋ง๋œ HTTP ์—ฐ๊ฒฐ์„ ํ•˜๋‚˜์”ฉ ๋ˆ„์ˆ˜ํ–ˆ์Šต๋‹ˆ๋‹ค(#1145, #1141 ์ข…๋ฃŒ). ๊ทธ ๋ฐ–์˜ ์ˆ˜์ •: vibe-trading show <run_id> ํฌ๋ž˜์‹œ(#1147, #1146 ์ข…๋ฃŒ), ์ง„ํ–‰ ์ค‘์ธ ์ „๋‹ฌ ๋ฎ์–ด์“ฐ๊ธฐ(#1140), ๋ฐฑํ…Œ์ŠคํŠธ ๊ฒ€์ฆ ์ฆ๊ฑฐ ์œ ์‹ค(#1139), MCP ํŽ˜์ด์ง•(#1137, #1138), ์˜ˆ์ธก ์‹œ์žฅ ๋น„์œ ํ•œ๊ฐ’(#1136). ์‹ ๊ทœ: ํ‘ธํˆฌ ์ฝ๊ธฐ ์ „์šฉ ์—”๋“œํฌ์ธํŠธ 7๊ฐœ(#1135), ์ถ”๋ก ๋œ ์ „๋žต ์ด๋ฆ„์— ๋ช…์‹œ์  Inferred ์นฉ(#1134). ์„ค์น˜: smartmoneyconcepts๊ฐ€ [smc] extra๋กœ ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค โ€” ํ•จ๊ป˜ ๋”ธ๋ ค์˜ค๋˜ llvmlite๋Š” macOS x86_64 wheel์„ ์ œ๊ณตํ•˜์ง€ ์•Š์•„ Intel Mac ์„ค์น˜๊ฐ€ ๋งค๋ฒˆ cmake ์†Œ์Šค ๋นŒ๋“œ๊ฐ€ ๋์Šต๋‹ˆ๋‹ค(#1035). <3.14 ์ƒํ•œ๋„ ํ•จ๊ป˜ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ๊ธฐ์—ฌํ•ด ์ฃผ์‹  @wiliao, @cgycorey, @Shizoqua, @Echoandelementwebsites, @549236606-oss, @fixXxerTech์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

  • 2026-08-18 ๐Ÿˆถ ์ •ํ™•ํ•œ ๋ฆฌํฌํŠธ๊ฐ€ ๋” ์ด์ƒ ๊ฑฐ๋ถ€๋˜์ง€ ์•Š๊ณ , ๋ฐฑํ…Œ์ŠคํŠธ๊ฐ€ ๋…ธ์ด์ฆˆ๋ฅผ ๋งค๋งคํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค: \b๋Š” ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์ธ์‹ํ•˜๋ฏ€๋กœ ๆœ€๋„ ๋‹จ์–ด ๋ฌธ์ž๋กœ ์ทจ๊ธ‰๋˜๊ณ , ๋”ฐ๋ผ์„œ (2026-07-14ๆœ€ไฝŽ)์—๋Š” '์ผ' ๋’ค์— ๊ฒฝ๊ณ„๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋‚ ์งœ๊ฐ€ ๋งˆ์Šคํ‚น์„ ๋น ์ ธ๋‚˜๊ฐ€ 2026, 7, 14๊ฐ€ ๊ฐ€๊ฒฉ์œผ๋กœ OHLC ๊ฒ€์ฆ์— ๋“ค์–ด๊ฐ”๊ณ , ๊ด€์ธก๋œ ์–ด๋–ค ๋ฒ”์œ„๋„ ์ด ๊ฐ’๋“ค์„ ๋‹ด์„ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค(#1132, #1122 ์ข…๋ฃŒ). ๊ฐ™์€ ๊ณ„์—ด์˜ ๊ฑฐ๋ถ€ ๋„ค ๊ฐ€์ง€๋„ ํ•จ๊ป˜ ๊ณ ์ณค์Šต๋‹ˆ๋‹ค: ํ•˜์ดํ”ˆ ํ˜•์‹ ๊ฑฐ๋ž˜์ผ(08-10(ไธ€)), ๋ฒ”์œ„๋กœ ์ ์€ ๊ฐ€๊ฒฉ๋Œ€์—์„œ ํ•˜ํ•œ๋งŒ ๋งˆ์Šคํ‚น๋˜์–ด -20์ด ๋‚จ๋˜ ๋ฌธ์ œ, GTC ์ฃผ๋ฌธ ์ค„(100 @ $3.50)์ด ๊ด€์ธก ํ˜ธ๊ฐ€ ๋‘ ๊ฐœ๋กœ ์ฝํžˆ๋˜ ๋ฌธ์ œ, ๋ฆฌํฌํŠธ ํ˜•์‹ ๋‚ ์งœ ์…€์ด ์–ด๋–ค ์ฆ๊ฑฐ ํ–‰๊ณผ๋„ ์ผ์น˜ํ•˜์ง€ ์•Š๋˜ ๋ฌธ์ œ. ๋ฐฑํ…Œ์ŠคํŠธ: position_adjustment="hold"๋Š” ์š”์ฒญ๋œ ๋น„์ค‘ ๋ณ€๊ฒฝ์„ ์กฐ์šฉํžˆ ๋ฒ„๋ ธ๊ณ , "rebalance"์—๋Š” ๋“œ๋ฆฌํ”„ํŠธ ํ—ˆ์šฉ ๋ฒ”์œ„๊ฐ€ ์•„์˜ˆ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ธก ๊ฒฐ๊ณผ ์ผ๊ฐ„ 0.01% ๋ณ€๋™๋งŒ์œผ๋กœ 30๊ฐœ ๋ด‰ ์ค‘ 19๊ฐœ์—์„œ ํฌ์ง€์…˜์„ ๋‹ค์‹œ ๋งž์ท„๊ณ , ์ž์ฒด rebalance_freq๋ฅผ ๊ฐ€์ง„ ์ „๋žต๋„ ๋งค ๋ด‰ ๊ฑฐ๋ž˜ํ•œ ์…ˆ์ž…๋‹ˆ๋‹ค. ๋ฒ„๋ ค์ง„ ์š”์ฒญ์€ ์ด์ œ ๋ณด๊ณ ๋˜๋ฉฐ, ์ƒˆ rebalance_tolerance๋Š” ์‹ค๋ฌด์ž๋“ค์ด ๋งํ•˜๋Š” "๋น„์ค‘์ด X ์ด์ƒ ์›€์ง์ด๋ฉด ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ"์˜ ํ—ˆ์šฉ ๋ฒ”์œ„์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’ 0.0์ด๋ผ ๊ธฐ์กด ์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” ๊ทธ๋Œ€๋กœ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ์‚ฐ์—… ์ค‘๋ฆฝ alpha101 ์•ŒํŒŒ 19๊ฐœ๊ฐ€ SP500 ๋ฒค์น˜๋งˆ๋‹ค ๊ฑด๋„ˆ๋›ฐ์–ด์กŒ๋Š”๋ฐ, ํŒจ๋„์— ์„นํ„ฐ ํƒœ๊ทธ๊ฐ€ ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋ฉฐ ๊ทธ ์ •๋ณด๋Š” ๊ตฌ์„ฑ์ข…๋ชฉ์„ ๊ฐ€์ ธ์˜ค๋Š” ํ‘œ์— ์ด๋ฏธ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ๊ธฐ๋Šฅ: Market Watch ๋ชจ๋‹ˆํ„ฐ๋Š” ์‹คํ–‰์ด ๋๋‚˜๋ฉด ๋ธŒ๋ฆฌํ•‘์„ IM ์ฑ„๋„๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜์† ์•„์›ƒ๋ฐ•์Šค๋ฅผ ๊ฑฐ์น˜๋ฏ€๋กœ ์žฌ์‹œ์ž‘์œผ๋กœ ์œ ์‹ค๋˜์ง€ ์•Š๊ณ , ๋™์‹œ ์Šค์œ•์œผ๋กœ ์ค‘๋ณต ๋ฐœ์†ก๋˜์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค(#942). ๋…์ผ์–ด๊ฐ€ 7๋ฒˆ์งธ UI ์–ธ์–ด๊ฐ€ ๋์Šต๋‹ˆ๋‹ค(#1117). run_dcf๋Š” ๋น„์œ ํ•œ ์ž…๋ ฅ์— ๋Œ€ํ•ด ๊ทธ๋Ÿด๋“ฏํ•œ ์Œ์ˆ˜ ์ฃผ๊ฐ€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋Œ€์‹  ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค(#1121, #1120 ์ข…๋ฃŒ). MCP get_market_data ์‘๋‹ต์€ ์ž์ฒด docstring์ด ์•ฝ์†ํ•œ _provenance๋ฅผ ๋‹ด์Šต๋‹ˆ๋‹ค(#1131). ์ž„ํฌํŠธ์— ์‹คํŒจํ•œ ๋„๊ตฌ ๋ชจ๋“ˆ์€ ์ด๋ฆ„์ด ๋“œ๋Ÿฌ๋‚˜๋ฉฐ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๊ฐ€ ์กฐ์šฉํžˆ ์ค„์–ด๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค(#1129, #1124 ์ข…๋ฃŒ). ์˜คํ”„๋ผ์ธ USD-M ๊ณ„์ • ๋Œ€์‚ฌ๋„ ์ถ”๊ฐ€๋˜์–ด ์—ฐ๊ฒฐ์„ ์—ด์ง€ ์•Š๊ณ  ๋กœ์ปฌ ๋ฆฌ์Šคํฌ ์ƒํƒœ์™€ ๊ฑฐ๋ž˜์†Œ ๊ด€์ธก์น˜๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค(#1106). ๊ทธ ๋ฐ–์—: backtest.runner๋ฅผ ์ž„ํฌํŠธํ•ด๋„ ๋” ์ด์ƒ .env๊ฐ€ ํ”„๋กœ์„ธ์Šค์— ๋กœ๋“œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. agent/.env๊ฐ€ ์žˆ๋Š” ๋จธ์‹ ์—์„œ๋Š” ์ด๊ฒƒ ๋•Œ๋ฌธ์— ๋กœ์ปฌ ์ „์ฒด ํ…Œ์ŠคํŠธ๋ฅผ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค(#1123). @Robin1987China, @newgo, @er-s-an, @Shizoqua, @1psconstructor, @honginp, @cgycorey, @alinv0, @jelech ๋‹˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

  • 2026-08-17 ๐Ÿ”’ ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ๊ฐ€ ์‹ค์ œ ์„ค์ • ๋ฃจํŠธ(๋ผ์ด๋ธŒ ๊ฐ์‚ฌ ์›์žฅ ํฌํ•จ)์— ์“ฐ์ง€ ์•Š๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค: ํ”„๋กœ์ ํŠธ ์ž์ฒด ์Šค์œ„ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ~/.vibe-trading/live/audit.jsonl์— ์กฐ์ž‘๋œ order_rejected ๋ ˆ์ฝ”๋“œ๊ฐ€ ์ถ”๊ฐ€๋์Šต๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ ์ถ”๊ฐ€ ์ „์šฉ ํ•ด์‹œ ์ฒด์ธ ์›์žฅ์ด๋ฉฐ, ํ•ญ๋ชฉ์„ ๋งŒ๋“ค์–ด๋‚ผ ์ˆ˜ ์—†๋‹ค๋Š” ์ ์ด ๊ทธ ๊ฐ€์น˜์˜ ์ „๋ถ€์ž…๋‹ˆ๋‹ค. Windows์—์„œ๋Š” ์†์ƒ๋œ ์ฒด์ธ ํŒŒ์ผ๊นŒ์ง€ ๋‚จ์•˜์Šต๋‹ˆ๋‹ค. conftest.py์—๋Š” ์„ค์ • ๋ฃจํŠธ ์ƒŒ๋“œ๋ฐ•์Šค๊ฐ€ ์ „ํ˜€ ์—†์–ด์„œ, ์ž„ํฌํŠธ ์‹œ์ ์— Path.home() / ".vibe-trading"๋ฅผ ๊ณ ์ •ํ•˜๋Š” ๋ชจ๋“  ๋ชจ๋“ˆ์ด ์–ด๋А ํ”Œ๋žซํผ์—์„œ๋“  ์‹ค์ œ ํ™ˆ์„ ํ•ด์„ํ–ˆ์Šต๋‹ˆ๋‹ค. Windows๊ฐ€ ๋” ๋‚˜๋นด๋˜ ์ด์œ ๋Š” ๊ฑฐ๊ธฐ์„œ Path.home()์ด %USERPROFILE%๋ฅผ ์ฝ๊ณ  $HOME์„ ๋ฌด์‹œํ•ด, ์Šค์œ„ํŠธ๊ฐ€ ์จ์˜จ ๊ฒฉ๋ฆฌ ๋ฐฉ์‹์ด ๋ฌดํšจ์˜€๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด์ œ ํ™ˆ์€ ์ˆ˜์ง‘ ์ „์— ๋ฆฌ๋””๋ ‰์…˜๋˜๊ณ , ์ƒŒ๋“œ๋ฐ•์Šค๋Š” ๋…ธ๋ธŒ๋ฅผ ํ•˜๋‚˜๋งŒ ์†Œ์œ ํ•ด ํ…Œ์ŠคํŠธ๋ณ„ ๊ฒฉ๋ฆฌ๊ฐ€ ๊ณ„์† ์šฐ์„ ํ•˜๋ฉฐ, ์„ธ์…˜ ์ข…๋ฃŒ ์‹œ ๋ฆฌ๋””๋ ‰์…˜ ์„ค์น˜ ์—ฌ๋ถ€๊ฐ€ ์•„๋‹ˆ๋ผ ์‹ค์ œ ์›์žฅ์ด ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ๋™์ผํ•œ์ง€ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค (#1118, #1116 ์ข…๋ฃŒ). ๊ทธ ๋ฐ–์—๋„: xirr์™€ money_weighted_return์ด ์•ฝ 51๋…„์„ ๋„˜๋Š” ๊ธฐ๊ฐ„์—์„œ ZeroDivisionError๋ฅผ ๋˜์กŒ์Šต๋‹ˆ๋‹ค โ€” ํ• ์ธ ๊ณ„์ˆ˜๊ฐ€ 0์œผ๋กœ ์–ธ๋”ํ”Œ๋กœํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋ฉฐ, ์ด๋Š” ๋ฐ”๋กœ XIRR์ด ์กด์žฌํ•˜๋Š” ์ด์œ ์ธ ์žฅ๊ธฐยท๋ถˆ๊ทœ์น™ ํ˜„๊ธˆํ๋ฆ„์ž…๋‹ˆ๋‹ค (#1119); ํ™œ์„ฑ ์‹คํ–‰์œผ๋กœ ์•„์นด์ด๋ธŒ๋œ ๋ฐฑํ…Œ์ŠคํŠธ๊ฐ€ ์ด์ „ ์‹คํ–‰์˜ ์‚ฐ์ถœ๋ฌผ๊ณผ ๋ณ‘ํ•ฉ๋ผ ํ•œ ๋ฆฌํฌํŠธ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๋ฐฑํ…Œ์ŠคํŠธ๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , /runs/{id}๋Š” ๋‚จ์€ ํŒŒ์ผ์„ ์ž๊ธฐ ์‚ฐ์ถœ๋ฌผ๋กœ ๋‚˜์—ดํ–ˆ์Šต๋‹ˆ๋‹ค (#1094). @lorenzozanee, @straun-repo, @pengpengyi92 ๋‹˜๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

  • 2026-08-16 ๐Ÿ”ง Anthropic ์‹คํ–‰์ด ๋ณต๊ตฌ ๊ฒฝ๋กœ์—์„œ ์ฃฝ์ง€ ์•Š๊ฒŒ ๋˜๊ณ , ์‹ฌ๋ณผ ๊ฒ€์ƒ‰์ด ๋นˆ ๊ฒฐ๊ณผ๋ฅผ ์ •์ƒ์œผ๋กœ ๋ณด๊ณ ํ•˜์ง€ ์•Š๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค: ๋ณต๊ตฌ ๊ฒฝ๋กœ๊ฐ€ ์ค‘๊ฐ„์— ์ถ”๊ฐ€ํ•œ system ๋ฉ”์‹œ์ง€๋Š” Anthropic API๊ฐ€ ๊ฑฐ๋ถ€ํ•ด ์‹คํ–‰ ์ „์ฒด๊ฐ€ ์ค‘๋‹จ๋์ง€๋งŒ, ์ด์ œ ๋ณต๊ตฌ ์ง€์‹œ๋Š” ์ธ๋ผ์ธ <system> ํƒœ๊ทธ๊ฐ€ ๋ถ™์€ ์‚ฌ์šฉ์ž ๋ฉ”์‹œ์ง€๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค (#1112, #1109 ์ข…๋ฃŒ). search_symbol์€ ํ‹ฐ์ปค+์ด๋ฆ„ ์ฟผ๋ฆฌ์— ํ›„๋ณด 0๊ฐœ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด์„œ ๋‘ ์†Œ์Šค ๋ชจ๋‘ ok๋ฅผ ๋ณด๊ณ ํ•ด identity๊ฐ€ ์ž ๊ธฐ์ง€ ์•Š๊ณ  ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๋„๊ตฌ๊ฐ€ ๊ฑฐ๋ถ€๋์Šต๋‹ˆ๋‹ค. Yahoo ๊ฒฝ๋กœ๋Š” ์ด์ œ ์ด ์ฟผ๋ฆฌ ํ˜•ํƒœ๋ฅผ skipped๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค (#1114, #1108 ์ข…๋ฃŒ). ๊ทธ ๋ฐ–์—๋„: LANGCHAIN_REASONING_EFFORT๊ฐ€ ๋ชจ๋ธ ํ—ˆ์šฉ ๋ชฉ๋ก์„ ํ†ตํ•ด Anthropic ๋ธŒ๋žœ์น˜์— ๋ฐ˜์˜๋˜๊ณ  (#1115), Tencent ๋กœ๋”๋Š” certifi CA ๋ฒˆ๋“ค๋กœ CERTIFICATE_VERIFY_FAILED์—์„œ ๋ณต๊ตฌํ•˜๋ฉฐ (#1113), revenue - cogs ์ด์ด์ต ํด๋ฐฑ์ด ์ฃฝ์€ ์ฝ”๋“œ์—์„œ ๋ฒ—์–ด๋‚˜๊ณ  (#1111), swarm worker๊ฐ€ ๊ณต์œ  ํ—ฌํผ๋กœ ์ž˜๋ผ๋‚ด์–ด ํ•˜์œ„ ์—์ด์ „ํŠธ๊ฐ€ ํ•ญ์ƒ ์ž˜๋ฆผ ํ‘œ์‹œ๋ฅผ ๋ณด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค (#1110). @lorenzozanee, @straun-repo, @x-lambda, @cgycorey, @Shizoqua ๋‹˜๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

  • 2026-08-15 ๐Ÿ›ก๏ธ ๋” ์•ˆ์ „ํ•œ ๋ฐ์Šคํฌํ†ฑ ์—…๋ฐ์ดํŠธ, ์•ˆ์ •์ ์ธ Windows ํŒจํ‚ค์ง•, Run Detail ํŒฉํ„ฐ ๋ฆฌ์„œ์น˜: ํœด๋ฉด updater ๊ฒฝ๊ณ„๋Š” ์žฌ์‹œ๋„ ๊ฐ€๋Šฅํ•œ ์ •๋ฆฌ๋ฅผ ์œ„ํ•ด ์†Œ์œ  ํ”„๋กœ์„ธ์Šค ์ฆ๊ฑฐ๋ฅผ ๋ณด์กดํ•˜๊ณ , HTTP health ๋Œ€์‹  TCP listener๋กœ ํฌํŠธ ์ƒ์กด์„ ํ™•์ธํ•˜๋ฉฐ, recovery journal์„ ์›์ž์ ์œผ๋กœ ์˜ˆ์•ฝํ•˜๊ณ , Authenticode์™€ ํ•ด์‹œ๋ฅผ ๋™์ผํ•œ staged bytes์— ๋ฌถ์–ด ์‹คํ–‰ ์ง์ „์— ๋‹ค์‹œ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค(#1101). Windows ํŒจํ‚ค์ง•์€ ์ œํ•œ๊ณผ ์ฒดํฌ์„ฌ ๊ฒ€์ฆ์ด ์ ์šฉ๋œ Electron ๋‹ค์šด๋กœ๋“œ๋ฅผ ์ง์ ‘ ์ˆ˜ํ–‰ํ•˜๊ณ , ๋ถˆ์•ˆ์ •ํ•œ ๊ธฐ์กด installer๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ๊ณ ์ •๋œ GTK asset์„ 7-Zip์œผ๋กœ ๋ฐ์ดํ„ฐ์ฒ˜๋Ÿผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ Windows CI๋Š” ์ข…๋ฃŒ ์ฝ”๋“œ, timeout, runtime ์กฐ๋ฆฝ, NSIS, ํŒจํ‚ค์ง• ํ›„ ์‹œ์ž‘์„ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค(#1104, #1093 ํ•ด๊ฒฐ). Run Detail์—๋Š” IC ์‹œ๊ณ„์—ดยทํ†ต๊ณ„, quantile equity, IC ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  artifact ํƒ์ƒ‰๊ณผ JSON ์ˆ˜์น˜๋ฅผ ๊ฒฝ๊ณ„ ์•ˆ์— ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค(#1099, #1100 ํ•ด๊ฒฐ). ๋ฒ”์šฉ hash lock๋„ Linux, macOS ARM64, Windows์—์„œ ๋„ค์ดํ‹ฐ๋ธŒ ๊ฒ€์ฆ์„ ๋งˆ์ณค์Šต๋‹ˆ๋‹ค(#1102, #1089 ํ•ด๊ฒฐ). @QCYTSN ๋‹˜๊ณผ @shadowinlife ๋‹˜๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

  • 2026-08-14 โš™๏ธ ์•„๋ฌด ์ผ๋„ ํ•˜์ง€ ์•Š๋˜ ์ถ”๋ก  ์„ค์ •, ๊ทธ๋ฆฌ๊ณ  ์•„์ง ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ๋ฉˆ์ถ”๋˜ ์‹คํ–‰: LANGCHAIN_REASONING_EFFORT๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ํ”„๋กœ๋ฐ”์ด๋”์—์„œ ์กฐ์šฉํžˆ ๋ฌดํšจ์˜€์Šต๋‹ˆ๋‹ค โ€” ์ง์ ‘ ์—ฐ๊ฒฐ๋œ OpenAI๋งŒ ์ด ๊ฐ’์„ ๋ฐ›์•˜๊ธฐ์— DeepSeek์— high๋ฅผ ์„ค์ •ํ•ด๋„ ์•„๋ฌด๊ฒƒ๋„ ๋ฐ”๋€Œ์ง€ ์•Š์•˜๊ณ , ๊ทธ ์‚ฌ์‹ค์ด ์–ด๋””์—๋„ ํ‘œ์‹œ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ด ๊ฐ’์€ ๊ฐ ์–ด๋Œ‘ํ„ฐ ๊ณ ์œ  ํ•„๋“œ๋ฅผ ํ†ตํ•ด ๋‘ ์ „์†ก ๊ฒฝ๋กœ ๋ชจ๋‘์— ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค: ๊ธฐ๋ณธ์€ Chat Completions, LANGCHAIN_USE_RESPONSES_API=true์ด๋ฉด Responses API์ž…๋‹ˆ๋‹ค. ์ตœ์ƒ์œ„ reasoning_effort๋ฅผ ๋ฐ›๋Š” ํ”„๋กœ๋ฐ”์ด๋”๋Š” "OpenAI ํ˜•์‹์„ ๋งํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ"์ด ์•„๋‹ˆ๋ผ ๊ฒ€์ฆ๋œ ํ—ˆ์šฉ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค โ€” ์š”์ฒญ ๋ณธ๋ฌธ์„ ์—„๊ฒฉํžˆ ๊ฒ€์ฆํ•˜๋Š” ์—”๋“œํฌ์ธํŠธ๋Š” ์•Œ ์ˆ˜ ์—†๋Š” ํ‚ค๋ฅผ ๊ฑฐ๋ถ€ํ•˜๊ณ  ํ˜ธ์ถœ ์ž์ฒด๋ฅผ ์‹คํŒจ์‹œํ‚ค๋ฏ€๋กœ, ์ž˜๋ชป ์ถ”์ธกํ•œ ๋Œ€๊ฐ€๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์„ค์ •์ด ์•„๋‹ˆ๋ผ ๋ชจ๋“  ์š”์ฒญ์ž…๋‹ˆ๋‹ค (#1025). grounding ๊ฒŒ์ดํŠธ๋„ ๊ฒฐ์ •๋ก ์  ์ฝ๊ธฐ ์ „์šฉ ๋ณต๊ตฌ๊ฐ€ ์•„์ง ๊ฐ€๋Šฅํ•œ ์ƒํƒœ์—์„œ "ํ™•์ธ ํ›„ ๊ณ„์†"์„ ๋Œ๋ ค์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค: ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ์ข…๋ชฉ์€ ์ž์ฒด ์ œํ•œ ์˜ˆ์‚ฐ์œผ๋กœ search_symbol โ†’ get_market_data๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ, ๋ฐ˜๋ณต ์˜ˆ์‚ฐ์„ ์†Œ์ง„ํ•œ ๋’ค fail-closed ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (#1092, #1081 ์ข…๋ฃŒ). ์‹ ๊ทœ: Options Lab ํŽ˜์ด์ง€ โ€” ๋ฉ€ํ‹ฐ๋ ˆ๊ทธ ๋งŒ๊ธฐ ์†์ต ๋‹ค์ด์–ด๊ทธ๋žจ, ํ˜„๋ฌผ ร— IV ์‹œ๋‚˜๋ฆฌ์˜ค ๋งคํŠธ๋ฆญ์Šค, ํฌํŠธํด๋ฆฌ์˜ค ๊ทธ๋ฆญ์Šค, ๋ผ์ด๋ธŒ ์˜ต์…˜ ์ฒด์ธ. ๊ณ„์‚ฐ์€ ๊ธฐ์กด payoff ๋„๊ตฌ์™€ quantlib์ด ๋‹ด๋‹นํ•˜๋ฉฐ ์ˆ˜์‹์„ ๋‹ค์‹œ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค (#1096). ๋ฐฑํ…Œ์ŠคํŠธ tearsheet ํƒญ โ€” ์›”๋ณ„ ์ˆ˜์ต๋ฅ  ํžˆํŠธ๋งต, ์—ฐ๋„๋ณ„ ์ˆ˜์ต๋ฅ , ์ƒ์œ„ N๊ฐœ ๋“œ๋กœ๋‹ค์šด ๊ตฌ๊ฐ„ (#1091). tickerall์ด 25๋ฒˆ์งธ ๋งˆ์ผ“ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋กœ โ€” ํ˜ธ์ŠคํŒ…ํ˜• MetaTrader 5 ์™ธํ™˜/๊ท€๊ธˆ์† ๋ฐ”๋ฅผ ์–ด๋–ค OS์—์„œ๋„ ๋กœ์ปฌ ํ„ฐ๋ฏธ๋„ ์—†์ด ์‚ฌ์šฉํ•˜๋ฉฐ, ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•  ๋•Œ๋งŒ ๋™์ž‘ํ•˜๋ฏ€๋กœ ๋ธŒ๋กœ์ปค ํ‚ค๊ฐ€ ์กฐ์šฉํ•œ ํด๋ฐฑ ๋Œ€์ƒ์ด ๋˜๋Š” ์ผ์ด ์—†๊ณ , ์ž˜๋ฆฐ ํžˆ์Šคํ† ๋ฆฌ ๊ตฌ๊ฐ„์€ ์งง์€ ์‹œ๋ฆฌ์ฆˆ๋ฅผ ์กฐ์šฉํžˆ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋Œ€์‹  ์˜ค๋ฅ˜๊ฐ€ ๋ฉ๋‹ˆ๋‹ค (#968, #897 ์ข…๋ฃŒ). ๊ทธ๋ฆฌ๊ณ  Novita AI์™€ GitHub Copilot์ด ๋‚ด์žฅ ํ”„๋กœ๋ฐ”์ด๋”๋กœ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค (#1059, #990). eToro๋Š” ์ƒํ’ˆ ์œ ํ˜•๋ณ„ ์ž์‚ฐ๊ตฐ ํƒ์ƒ‰์„ ์ง€์›ํ•˜๊ณ , ์นดํ”ผ ํŠธ๋ ˆ์ด๋”ฉ์€ ๋ฐ๋ชจ ๊ณ„์ •์„ ๋ช…ํ™•ํ•œ ์ด์œ ์™€ ํ•จ๊ป˜ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค (#1070). Thanks @cgycorey, @Shizoqua, @shadowinlife, @miguelangelo78, @jax-novita, @sykuang, ๋ฐ @ofeksh-tr.

  • 2026-08-13 ๐ŸŽฏ ๋ฐฑํ…Œ์ŠคํŠธ ๋ฆฌํฌํŠธ๊ฐ€ ์‹ค์ œ ์ฒด๊ฒฐ๋œ ํฌ์ง€์…˜์„ ํ‘œ์‹œ: positions.csv์—๋Š” ์˜ตํ‹ฐ๋งˆ์ด์ €์˜ ๋ชฉํ‘œ ๋น„์ค‘์ด ๋‹ด๊ฒจ ์žˆ์–ด, ๋‹จ์ฃผ ๋ฐ˜์˜ฌ๋ฆผยท์ˆ˜์ˆ˜๋ฃŒยท์ฃผ๋ฌธ ์ฐจ๋‹จ์œผ๋กœ ํฌํŠธํด๋ฆฌ์˜ค๊ฐ€ 20% ๊ทผ์ฒ˜์ธ๋ฐ๋„ ๋ฆฌํฌํŠธ๋Š” 80% ์ต์Šคํฌ์ €๋ฅผ ์ฃผ์žฅํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ ๋ชฉํ‘œ๊ฐ’์ด ํˆฌ์ž ๋น„์ค‘ ์ง€ํ‘œ์™€ ๋ฆฌ์Šคํฌ X-๋ ˆ์ด์—๋„ ์ „๋‹ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ฒด๊ฒฐ ์‹ค์ ์€ positions.csv, ์š”์ฒญ๊ฐ’์€ target_positions.csv์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค(#1082). Run Detail์— ๋ฆฌ์„œ์น˜ ๋Œ€์‹œ๋ณด๋“œ(?view=dashboard)๊ฐ€ ์ถ”๊ฐ€๋˜๊ณ (#1084), ์ŠคํŽ˜์ธ์–ด๊ฐ€ ์—ฌ์„ฏ ๋ฒˆ์งธ UI ์–ธ์–ด๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(#1087). ๊ทธ ์™ธ: get_research_reports๊ฐ€ ๋ชจ๋“  A์ฃผ ์ข…๋ชฉ์— HTTP 400์„ ๋ฐ˜ํ™˜ํ•˜๋˜ ๋ฌธ์ œ(#1077), IBKR ์‹œ์„ธ์—์„œ ์š”์ฒญํ•œ ๋“ฑ๊ธ‰๊ณผ ์‹ค์ œ ์ ์šฉ๋œ ๋“ฑ๊ธ‰์„ ๋ถ„๋ฆฌ(#1075), .env.partial ์›์ž์  ๊ธฐ๋ก(#1086), Docker ์›Œํฌํ”Œ๋กœ์˜ action์„ ์ปค๋ฐ‹์œผ๋กœ ๊ณ ์ •ํ•˜๊ณ  ์ฑ„๋„ SDK๋ฅผ ํ•ด์‹œ ๋ฝ์œผ๋กœ ์„ค์น˜(#1088), grounding ๊ฒŒ์ดํŠธ๊ฐ€ ์ง€์ง€/์ €ํ•ญ ๊ตฌ๊ฐ„๊ณผ ์‚ฌ์ƒ ์ตœ๊ณ ๊ฐ€๋ฅผ ๊ด€์ธก ๊ฐ€๊ฒฉ์œผ๋กœ ์ฝ์ง€ ์•Š๋„๋ก ์ˆ˜์ •(#1060). Thanks @AndyLongest, @daviddaco1, @zzz607, @jay79-boop, @lukiod, @birdxs, @wiliao.

  • 2026-08-12 ๐Ÿ“ ํด๋ฐฑ ์†Œ์Šค๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ A์ฃผ ๊ฑฐ๋ž˜๋Ÿ‰์ด ์กฐ์šฉํžˆ 100๋ฐฐ ํŠ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค: A์ฃผ ํด๋ฐฑ ์ฒด์ธ์˜ ๋‹ค์„ฏ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋Š” ๊ฑฐ๋ž˜๋Ÿ‰์„ board lot(ๆ‰‹) ๋‹จ์œ„๋กœ ๋ฐ˜ํ™˜ํ–ˆ์ง€๋งŒ BaoStock๋งŒ ์ฃผ์‹ ์ˆ˜๋กœ ๋ฐ˜ํ™˜ํ–ˆ๊ณ , ์‹ค์ œ ์‘๋‹ตํ•œ ์†Œ์Šค์˜ provenance์—๋Š” ๋‹จ์œ„๊ฐ€ ์—†์–ด์„œ ํ•œ ๋ฒˆ์˜ ํด๋ฐฑ์ด ๋ชจ๋“  ๊ฑฐ๋ž˜๋Ÿ‰ ๊ธฐ๋ฐ˜ ์‹ ํ˜ธ๋ฅผ 100๋ฐฐ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ loader๋Š” ์‹œ์žฅ๋ณ„ ๊ฑฐ๋ž˜๋Ÿ‰ ๋‹จ์œ„๋ฅผ ์„ ์–ธํ•˜๊ณ  provenance๋Š” ์ข…๋ชฉ๋ณ„ ์‹ค์ œ ์ œ๊ณต ์†Œ์Šค์˜ ๋‹จ์œ„๋ฅผ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค. BaoStock์€ loader ๊ฒฝ๊ณ„์—์„œ ์ฃผ์‹ ์ˆ˜๋ฅผ board lot์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋ฉฐ, cache v4๊ฐ€ ์ˆ˜์ • ์ „ ์บ์‹œ์˜ ์žฌ์‚ฌ์šฉ์„ ๋ง‰๊ณ , ์‹ค๋ฐ์ดํ„ฐ ๊ต์ฐจ ์†Œ์Šค ํšŒ๊ท€ ํ…Œ์ŠคํŠธ๋Š” ๋™์ผํ•œ ํ™•์ • ๊ฑฐ๋ž˜์ผ ๊ฐ’์ด 1% ์ด๋‚ด๋กœ ์ผ์น˜ํ•˜๋„๋ก ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค(#1065, #1067, #1062 ์ข…๋ฃŒ). ์ด๋ฒˆ 10 PR ์ •ํ™•์„ฑ ํŒจ์Šค์—๋Š” eToro์˜ ์™„์ „ํ•œ runtime status์™€ 5๊ฐœ ์–ธ์–ด SDK ์—ฐ๊ฒฐ UI(#1051), scheduled-run DELETE์˜ ์‹ค์ œ๋กœ ๋นˆ 204 ์‘๋‹ต(#1068), CLI์˜ Alpaca direct-SDK account payload ๋ Œ๋”๋ง(#1073), ์‹ค์ œ ๋ชจ๋ธ ์ƒ์„ฑ์ž๊ฐ€ ๊ณต์œ ํ•˜๋Š” credential ๊ฒฝ๊ณ„์—์„œ์˜ Ollama /v1 ์ •๊ทœํ™”(#1074), Docker Codex OAuth stdin EOF์— ๋Œ€ํ•œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ TTY ์•ˆ๋‚ด(#1054, #1050 ์ข…๋ฃŒ), Markdown ์ˆœ์„œ ๋ชฉ๋ก์˜ 1.์„ ๊ทผ๊ฑฐ ์—†๋Š” ์ˆซ์ž ์ฃผ์žฅ์œผ๋กœ ์ฝ์ง€ ์•Š๋Š” ์ˆ˜์ •(#1063), GE ๊ฐ™์€ ๋‘ ๊ธ€์ž ๋ฉ”๋ชจ๋ฆฌ ๊ฒ€์ƒ‰์„ FTS5 ์‚ฌ์šฉ ์—ฌ๋ถ€์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ์ผ์น˜์‹œํ‚ค๋Š” ์ˆ˜์ •(#1071), ๊ทธ๋ฆฌ๊ณ  ์ œ๋กœ ๋ณ€๋™์„ฑ ์œ ๋Ÿฝํ˜• ์˜ต์…˜์„ ํ• ์ธ๋œ ์„ ๋„ ๋‚ด์žฌ๊ฐ€์น˜๋กœ ํ‰๊ฐ€ํ•ด ํ–‰์‚ฌ ๋ฐฉํ–ฅ๊ณผ ํ’‹-์ฝœ ํŒจ๋ฆฌํ‹ฐ๋ฅผ ๋ณต์›ํ•˜๋Š” ์ˆ˜์ •(#1066)๋„ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. @shadowinlife, @ofeksh-tr, @zhiwuyazhe-fjr, @zzz607, @pengpengyi92, @Shizoqua์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

  • 2026-08-11 ๐Ÿง  ์ปดํŒฉ์…˜์ด ๋Œ€ํ™” ๋‚ด์šฉ์„ ๋ฒ„๋ฆฌ์ง€ ์•Š๊ณ , swarm ์žฌ์‹œ๋„๊ฐ€ ์ž์‹ ์˜ run์„ ๋” ์ด์ƒ ์‚ญ์ œํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค: ์ž๋™ ์ปดํŒฉ์…˜์€ ์š”์•ฝ ์ „์— ์ง๋ ฌํ™”๋œ ์ด๋ ฅ์„ 80,000์ž์—์„œ ๊ฐ•์ œ๋กœ ์ž˜๋ž๊ณ , ๊ทธ ์ง€์  ๋’ค์˜ ๋‚ด์šฉ์€ ์š”์•ฝ ํ˜ธ์ถœ์—๋„ ๋ณด์กด๋œ ๊ผฌ๋ฆฌ์—๋„ ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•œ ์ฑ„ ์˜ค๋ฅ˜ ์—†์ด ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ•จ์ˆ˜ ์ž์ฒด๊ฐ€ ์•ฝ์†ํ•œ ใ€Œ์ •๋ณด ์†์‹ค 0ใ€์„ ์–ด๊ฒผ๊ณ , ์ ˆ๋‹จ ์ง€์ ์ด ๊ฐ์ฒด ์ค‘๊ฐ„์— ๋†“์—ฌ ์š”์•ฝ๊ธฐ์—๋Š” ์ž˜๋ชป๋œ JSON์ด ์ „๋‹ฌ๋˜๊ธฐ๋„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ด๋ ฅ์€ ๋ฉ”์‹œ์ง€ ๊ฒฝ๊ณ„์—์„œ ๋ฌถ๊ณ  ๊ธฐ์กด ๋ฐ˜๋ณต ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์ฒญํฌ๋ณ„ ์ ‘๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ๋ฉ”์‹œ์ง€๊ฐ€ ํ•œ ์ฒญํฌ์— ๋“ค์–ด๊ฐ€์ง€ ์•Š์„ ๋งŒํผ ํฌ๋ฉด ์ž˜๋ผ๋‚ด๋Š” ๋Œ€์‹  ๋ผ๋ฒจ์ด ๋ถ™์€ ์กฐ๊ฐ์œผ๋กœ ๋‚˜๋‰˜๋ฉฐ, ๋ชจ๋ธ์ด ๋นˆ ์‘๋‹ต์„ ๋ณด๋‚ด๋„ ๊ทธ๋•Œ๊นŒ์ง€ ์Œ“์ธ ์š”์•ฝ์„ ์ง€์šฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค(#1055 ์ข…๋ฃŒ). ์ƒˆ ์žฌ์‹œ๋„ ์‹œ ์‚ฐ์ถœ๋ฌผ ์ •๋ฆฌ๋Š” run_dir/artifacts/<agent_id>์— shutil.rmtree๋ฅผ ์‹คํ–‰ํ–ˆ๋Š”๋ฐ, agent_id๋Š” ๊ฒ€์ฆ๋˜์ง€ ์•Š์€ preset์—์„œ ์˜ค๊ณ  ์‚ฌ์šฉ์ž preset์€ ~/.vibe-trading/swarm/presets/์—์„œ ๋กœ๋“œ๋˜๋ฏ€๋กœ id๊ฐ€ ..์ด๋ฉด ์‹คํ–‰ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ž์ฒด๋กœ ํ•ด์„๋์Šต๋‹ˆ๋‹ค. ์ด์ œ๋Š” ์•ˆ์ „ํ•œ ๋‹จ์ผ ์„ธ๊ทธ๋จผํŠธ์ด๋ฉฐ ํ•ด์„ ๊ฒฐ๊ณผ๊ฐ€ ํ•ด๋‹น ์‹คํ–‰์˜ artifacts ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ˆ์— ์žˆ์„ ๋•Œ๋งŒ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ technical_indicators RSI๋Š” docstring์ด ์›๋ž˜ ์ฃผ์žฅํ•œ Wilder-EWM ๊ทœ์•ฝ์œผ๋กœ ์ด๋™ํ•ด ๋‹จ์ˆœ rolling mean์ด ๊ฐ’์„ 30/70 ๊ฒฝ๊ณ„ ๋„ˆ๋จธ๋กœ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ๋ฐ”๋กœ์žก์•˜์Šต๋‹ˆ๋‹ค(#1056). excess_return์€ ์ˆ˜์ •๋œ benchmark total์—์„œ ๋‹ค์‹œ ๋„์ถœํ•ด ํ•˜๋‚˜์˜ metrics dict ์•ˆ์—์„œ ๋‘ ํ•„๋“œ๊ฐ€ ์„œ๋กœ ๋ชจ์ˆœ๋˜์ง€ ์•Š๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค(#1058). swarm ์‚ฐ์ถœ๋ฌผ ๊ฒ€์ฆ์€ ok/success ํ‚ค๊ฐ€ ์žˆ๋Š” ์›์‹œ tool envelope๋ฅผ ๋ถ„์„์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋„˜๊ธฐ๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ฑฐ๋ถ€ํ•˜๊ณ (#1052), ์žฌ์‹œ๋„๋œ worker๋Š” ์‹คํŒจํ•œ ์‹œ๋„์˜ report.md๋ฅผ ๋ฌผ๋ ค๋ฐ›์ง€ ์•Š์œผ๋ฉฐ(#1053), worker prompt๋Š” agent ๋ถˆ๋ณ€ ๋ธ”๋ก์ด ํ•˜๋‚˜์˜ ์บ์‹œ ๋Œ€์ƒ prefix๋ฅผ ์ด๋ฃจ๋„๋ก ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค(#1057). @Shizoqua์™€ @Echoandelementwebsites์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

  • 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/.V symbol์„ 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). connector CLI๊ฐ€ ~/.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 bench CLI/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 ๋ณ„์นญ์„ ์ „๋ฐ˜์ ์œผ๋กœ ํ—ˆ์šฉํ•˜๊ณ , ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์ธํ„ฐ๋ฒŒ์€ ์กฐ์šฉํžˆ ์ผ๋ด‰์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋Œ€์‹  ์ฆ‰์‹œ ์‹คํŒจํ•˜๋ฉฐ, Yahoo 4H๋Š” 1h๋กœ ๋งคํ•‘๋˜๊ณ  MT5๋Š” 1W/1M์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค(#812โ€“#838, @santhreal ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค). ๋˜ํ•œ ๋งค๋งค ์ผ์ง€์˜ Eastmoney Excel ์‹œ๋ฆฌ์–ผ ๋‚ ์งœ ์ˆ˜์ •(#811, @santhreal ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค)๊ณผ README ๋„ค๋น„๊ฒŒ์ด์…˜ ์•ต์ปค ์ˆ˜์ •(#840, @dvirarad ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค)์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  • 2026-07-23 ๐Ÿ”ง ์‹ ๋ขฐ์„ฑ ์ ๊ฒ€ + strict alpha-bench ์ง„์ž…์  ๋…ธ์ถœ + ์˜ทํŠธ์ธ ๋ฉ”๋ชจ๋ฆฌ ๋ผ์ดํ”„์‚ฌ์ดํด: 22๊ฐœ ๊ธฐ์—ฌ์ž PR ๋ฐฐ์น˜. ๊ด‘๋ฒ”์œ„ํ•œ ์‹ ๋ขฐ์„ฑ ์ ๊ฒ€์ด ํƒ€์ž„ํ”„๋ ˆ์ž„ ์ฒ˜๋ฆฌ๋ฅผ ์—”๋“œํˆฌ์—”๋“œ๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค โ€” yfinance 1Mโ†’์›”๋ด‰(๋ถ„ ์•„๋‹˜), CCXT 1W/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 ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค). MT5 trading_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-vision OCR ์—”์ง„(#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-manager skill(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 ๋‹˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค), local loader๊ฐ€ 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 ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค). ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋Š” ๋‹จ์ผ Pydantic EnvConfig ์Šคํ‚ค๋งˆ๋กœ ํ†ตํ•ฉ๋˜๊ณ  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 loader fetch() 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, /health smoke๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  • 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 ์—๋Š” /new session reset ๊ณผ ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์—†๋Š” pairing commands ๋„ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค(#372, #371 ๋‹ซํž˜, @shadowinlife ๋‹˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค).

  • 2026-07-01 ๐Ÿงน Security polish + tracker cleanup: API/Docker/frontend dev defaults๋ฅผ ์กฐ์ •ํ•˜๊ณ , Settings channel๊ณผ zh-CN edges๋ฅผ ์•ˆ์ •ํ™”ํ–ˆ์œผ๋ฉฐ, 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 PreTradeAdvisoryInterface that 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_order still hard-refuse until a structural paper/live boundary exists (#321, closes #309, thanks @mvanhorn). Windows startup avoids the pandas 3.0 Timestamp crash via the <3.0.0 constraint (#329, closes #324, thanks @hannibal-lee); Gemini thought_signature dict-history replay was verified/fixed on main (#318); .US financial 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 ์™€ Robinhood agent.json validation ๋„ ๋” ์—„๊ฒฉํ•ด์กŒ์Šต๋‹ˆ๋‹ค(#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_FEATURES contract ๋ฅผ ๊ณต์œ ํ•˜๊ณ  ๋„ค ์ž๋ฆฌ ์†Œ์ˆ˜ 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 ๋‹˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค). ๋˜ํ•œ DeepSeek DSML tool 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๋กœ client User-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=1 opt-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, Kimi User-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/runs API๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š๊ณ  ์„ธ์…˜ 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_compare agent ๋„๊ตฌ(์ด์ œ 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์™€ MCP trading_* ๋„๊ตฌ๋Š” ๋™์ผํ•œ ์„ ํƒ profile์„ ๊ณต์œ ํ•˜๋ฉฐ, paper/live๋Š” connector์˜ ์†์„ฑ์œผ๋กœ ๋‹ค๋ฃน๋‹ˆ๋‹ค. IBKR์€ ๋กœ์ปฌ ์ฝ๊ธฐ ์ „์šฉ TWS / IB Gateway profile๋กœ ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ๊ณต์‹ IBKR ์›๊ฒฉ MCP ๊ฒฝ๋กœ๋Š” ์•ˆ์ •์ ์ธ read tool ์ด๋ฆ„์ด ์ œ๊ณต๋  ๋•Œ๊นŒ์ง€ OAuth mcp.read probe๋กœ 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์ฃผ ๋ฐ์ดํ„ฐ ์†Œ์Šค + ์ถœ๋ ฅ ์ •๋ฆฌ: ์ƒˆ mootdx loader๋Š” ๋„ค์ดํ‹ฐ๋ธŒ ้€š่พพไฟก 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.py shim. ์ƒˆ 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 ์ฝ”์–ผ๋ ˆ์‹ฑ, ARIA role="status" + ์Šคํฌ๋ฆฐ ๋ฆฌ๋”์šฉ ์ˆจ๊ฒจ์ง„ ๋„ค์ดํ‹ฐ๋ธŒ <progress>, ์ด๋Ÿ‰์„ ์•Œ ๋•Œ ๊ฒฐ์ •์  ProgressRing SVG๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค. 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๋ฅผ ํ™œ์„ฑํ™”ํ•ด ํšŒ๊ท€ ๊ฐ€๋“œ๋กœ ๋‘์—ˆ์œผ๋ฉฐ, gtja191 alpha ํŒŒ์ผ๋“ค์˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” 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-only security_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 ์˜ˆ์™ธ ์ฒ˜๋ฆฌ, backtest run_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, /upload streaming + 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-multipart CVE floor bump, ์‹ ๊ทœ MCP tools 5๊ฐœ ์—ฐ๊ฒฐ(analyze_trade_journal + 4 shadow-account tools), pattern_recognition โ†’ pattern registry 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 closed error๋ฅผ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค(#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_search MCP tool, LLM providers 12๊ฐœ, akshare/ccxt dependencies. 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.


โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

์ž๊ฐ€ ๊ฐœ์„  ํŠธ๋ ˆ์ด๋”ฉ ์—์ด์ „ํŠธ

๐Ÿ” ์ž๊ฐ€ ๊ฐœ์„  ํŠธ๋ ˆ์ด๋”ฉ ์—์ด์ „ํŠธ

โ€ข ์ž์—ฐ์–ด ๊ธฐ๋ฐ˜ ์‹œ์žฅ ๋ฆฌ์„œ์น˜
โ€ข ์ „๋žต ์ดˆ์•ˆ ์ž‘์„ฑ ๋ฐ ํŒŒ์ผ/์›น ๋ถ„์„
โ€ข ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜ ์›Œํฌํ”Œ๋กœ
๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ํŠธ๋ ˆ์ด๋”ฉ ํŒ€

๐Ÿ ๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ํŠธ๋ ˆ์ด๋”ฉ ํŒ€

โ€ข ํˆฌ์ž, ํ€€ํŠธ, ํฌ๋ฆฝํ† , ๋ฆฌ์Šคํฌ ํŒ€
โ€ข ์ŠคํŠธ๋ฆฌ๋ฐ ์ง„ํ–‰ ์ƒํ™ฉ๊ณผ ์˜๊ตฌ ์ €์žฅ ๋ฆฌํฌํŠธ
โ€ข ๊ฐ€์ ธ์˜จ ์‹œ์žฅ ๋ฐ์ดํ„ฐ๋กœ grounding๋œ worker
ํฌ๋กœ์Šค๋งˆ์ผ“ ๋ฐ์ดํ„ฐ์™€ ๋ฐฑํ…Œ์ŠคํŒ…

๐Ÿ“Š ํฌ๋กœ์Šค๋งˆ์ผ“ ๋ฐ์ดํ„ฐ & ๋ฐฑํ…Œ์ŠคํŒ…

โ€ข A/HK/US/์บ๋‚˜๋‹ค/์ธ๋„/ํ•œ๊ตญ ์ฃผ์‹, ํฌ๋ฆฝํ† , ์„ ๋ฌผ, ์™ธํ™˜
โ€ข ๋ฐ์ดํ„ฐ fallback๊ณผ composite backtest
โ€ข PIT ๋ฐ์ดํ„ฐ, ๊ฒ€์ฆ, run card
Shadow Account

๐Ÿ‘ฅ Shadow Account

โ€ข ๋ธŒ๋กœ์ปค ๊ฑฐ๋ž˜ ์ผ์ง€ ํ–‰๋™ ์ง„๋‹จ
โ€ข ๊ทœ์น™ ๊ธฐ๋ฐ˜ Shadow Account ๋น„๊ต
โ€ข ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๊ฐ์‚ฌ ๋ฆฌํฌํŠธ์™€ ์ „๋žต ์ฝ”๋“œ

๐Ÿ’ก Vibe-Trading์ด๋ž€?

Vibe-Trading์€ ๊ธˆ์œต ์งˆ๋ฌธ์„ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋ถ„์„์œผ๋กœ ๋ฐ”๊พธ๋Š” ์˜คํ”ˆ์†Œ์Šค ๋ฆฌ์„œ์น˜ ์›Œํฌ์ŠคํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค. ์ž์—ฐ์–ด ํ”„๋กฌํ”„ํŠธ๋ฅผ ์‹œ์žฅ ๋ฐ์ดํ„ฐ ๋กœ๋”, ์ „๋žต ์ƒ์„ฑ, ๋ฐฑํ…Œ์ŠคํŠธ ์—”์ง„, ๋ฆฌํฌํŠธ, ๋‚ด๋ณด๋‚ด๊ธฐ, ์˜๊ตฌ ๋ฆฌ์„œ์น˜ ๋ฉ”๋ชจ๋ฆฌ์™€ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

๋ฆฌ์„œ์น˜, ์‹œ๋ฎฌ๋ ˆ์ด์…˜, ๋ฐฑํ…Œ์ŠคํŒ…์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค โ€” ๊ทธ๋ฆฌ๊ณ  ์›ํ•˜์‹ ๋‹ค๋ฉด, ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ธ๊ฐ€ํ•œ ๋ธŒ๋กœ์ปค(์˜ˆ: Robinhood Agentic Trading)๋ฅผ ํ†ตํ•œ ์ž์œจ ๊ฑฐ๋ž˜๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ž๊ธˆ์„ ์ผ์ ˆ ๋ณด์œ ํ•˜์ง€ ์•Š๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ์„ค์ •ํ•œ ํ•œ๋„๋ฅผ ๊ฒฐ์ฝ” ๋„˜์ง€ ์•Š์œผ๋ฉฐ, ์–ธ์ œ๋“  ์ฆ‰์‹œ ์ค‘๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


โœจ ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

์ž‘์—… ์ถœ๋ ฅ
ํŠธ๋ ˆ์ด๋”ฉ ์งˆ๋ฌธํ•˜๊ธฐ ๋„๊ตฌ, ๋ฐ์ดํ„ฐ, ๋ฌธ์„œ, ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์„ธ์…˜ ์ปจํ…์ŠคํŠธ๋ฅผ ํ™œ์šฉํ•œ ์‹œ์žฅ ๋ฆฌ์„œ์น˜.
์ „๋žต ์•„์ด๋””์–ด ๋ฐฑํ…Œ์ŠคํŠธ ์ „๋žต ์ฝ”๋“œ, ์ง€ํ‘œ, ๋ฒค์น˜๋งˆํฌ ์ปจํ…์ŠคํŠธ, ๊ฒ€์ฆ artifacts, run cards.
๋‚ด ๊ฑฐ๋ž˜ ๊ฒ€ํ† ํ•˜๊ธฐ ๋ธŒ๋กœ์ปค ์ผ์ง€ ํŒŒ์‹ฑ, ํ–‰๋™ ์ง„๋‹จ, ๊ทœ์น™ ์ถ”์ถœ, Shadow Account ๋น„๊ต.
๋ฌธ์„œ์™€ ์ฐจํŠธ ์ฝ๊ธฐ ํ”Œ๋Ÿฌ๊ทธํ˜• OCR๋กœ PDF / DOCX / XLSX / PPTX / ์ด๋ฏธ์ง€๋ฅผ ํŒŒ์‹ฑํ•˜๊ณ (read_document), ๋น„์ „ ๋ชจ๋ธ๋กœ ์ฐจํŠธ ์Šคํฌ๋ฆฐ์ƒท์„ ์˜๋ฏธ ๋‹จ์œ„๋กœ ์ฝ์Šต๋‹ˆ๋‹ค(analyze_image). ์›น ์ฑ„ํŒ…์—์„œ๋Š” ํŒŒ์ผ ์„ ํƒ, ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ, ํด๋ฆฝ๋ณด๋“œ ๋ถ™์—ฌ๋„ฃ๊ธฐ๋กœ ํ•œ ๋ฒˆ์— ์ตœ๋Œ€ 5๊ฐœ ํŒŒ์ผ์„ ์ฒจ๋ถ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ธฐ๊ด€ ๋ณด๊ณ ์„œ์™€ ํŽ€๋“œ ํŽธ์ž…์ข…๋ชฉ ์ฝ๊ธฐ 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"

๐Ÿ’ผ ๋กœ์ปฌ ๋ฉ€ํ‹ฐ ๋ธŒ๋กœ์ปค ํฌํŠธํด๋ฆฌ์˜ค

Web UI์— ์„ ํƒํ•œ ๋ธŒ๋กœ์ปค ์—ฐ๊ฒฐ์˜ ๋ณด์œ  ์ข…๋ชฉ์„ ํ•œ๋ฐ ๋ชจ์•„ ๋ณด์—ฌ์ฃผ๋Š” ์ฝ๊ธฐ ์ „์šฉ ํฌํŠธํด๋ฆฌ์˜ค ํŽ˜์ด์ง€๊ฐ€ ์ถ”๊ฐ€๋์Šต๋‹ˆ๋‹ค. ์†Œ์Šค๋Š” account.read์™€ positions.read๋ฅผ ์„ ์–ธํ•œ ์ฝ๊ธฐ ์ „์šฉ profile์˜ ์—ฐ๊ฒฐ ์ธ์Šคํ„ด์Šค์ด๋ฉฐ, ์ƒ์„ธ ๊ธฐ๋Šฅ์˜ ๋ธŒ๋กœ์ปค ์ปค๋„ฅํ„ฐ์—์„œ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. IBKR ๊ณต์‹ MCP profile์€ ์•„์ง ์†Œ์Šค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋™์ž‘ ์ œ๊ณต๋˜๋Š” ๊ฒƒ
์†Œ์Šค๋ณ„ ์ถœ์ฒ˜ ๋ชจ๋“  ๋ณด์œ  ์ข…๋ชฉ์ด ์–ด๋А ์—ฐ๊ฒฐ์—์„œ ์™”๋Š”์ง€ ํ‘œ์‹œํ•˜๊ณ , USD๋กœ ํ‰๊ฐ€ํ•œ ๋’ค CNY ํ™˜์‚ฐ๋„ ํ•จ๊ป˜ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
์‹คํŒจํ•œ ์†Œ์Šค ์ œ์™ธ ์˜ค๋ฅ˜๊ฐ€ ๋‚œ ์†Œ์Šค๋Š” ์˜ค๋ฅ˜๋กœ ๋ณด๊ณ ๋˜๊ณ  ํ•ฉ๊ณ„์—์„œ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค โ€” ์ง์ „ ๊ฐ’์„ ์ด์–ด ์“ฐ์ง€ ์•Š์œผ๋ฉฐ, ์Šค๋ƒ…์ƒท์€ incomplete๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
๋ถˆ๋ณ€ ์Šค๋ƒ…์ƒท ๊ฐ ์ƒˆ๋กœ๊ณ ์นจ์€ ~/.vibe-trading/portfolio/portfolio.sqlite3์— ์ €์žฅ๋˜๊ณ , ์ž๊ฒฉ์ฆ๋ช…์ด ์—†๋Š” ์„ค์ •์€ ~/.vibe-trading/portfolio.json๊ณผ connections.json์— ๋‚จ์Šต๋‹ˆ๋‹ค.
๋‚ด๋ณด๋‚ด๊ธฐ & ๋ถ„์„ CSV ๋‚ด๋ณด๋‚ด๊ธฐ์™€ ํ•จ๊ป˜, ๋ฏผ๊ฐ์ •๋ณด๋ฅผ ์ œ๊ฑฐํ•œ portfolio_summary ์—์ด์ „ํŠธ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ risk_xray_args๋Š” portfolio_risk_xray์— ๊ทธ๋Œ€๋กœ ๋„˜๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ ์Šค๋ƒ…์ƒท์„ ํ„ฐ๋ฏธ๋„์—์„œ๋Š” vibe-trading portfolio show๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(refresh / sources๋„ ์ œ๊ณต).

์ง์ ‘ ์„ค์น˜ํ•˜๋Š” ์ฝ๊ธฐ ์ „์šฉ ์ปค๋„ฅํ„ฐ๋Š” ์ฒดํฌ์•„์›ƒ ๋ฐ– ~/.vibe-trading/connectors/<name>/์— ์žˆ์Šต๋‹ˆ๋‹ค. connector.json manifest์™€ check_status / get_account_snapshot / get_positions๋ฅผ ๊ตฌํ˜„ํ•œ adapter.py๋งŒ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์“ฐ๊ธฐ capability๋ฅผ ์„ ์–ธํ•œ manifest๋Š” ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค.

vibe-trading connector init my-broker --destination /tmp
vibe-trading connector validate /tmp/my-broker
vibe-trading connector install /tmp/my-broker

์ž๊ฒฉ์ฆ๋ช…์€ pip install "vibe-trading-ai[keyring]"๋ฅผ ํ†ตํ•ด OS ํ‚ค๋ง(macOS Keychain, Windows Credential Manager, Linux Secret Service)์— ์ €์žฅ๋˜๋ฉฐ ์„ค์ • ํŒŒ์ผ์—๋Š” ๋“ค์–ด๊ฐ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ๋กœ์˜ ์–ด๋–ค ๊ฒƒ๋„ ์ฃผ๋ฌธ์„ ๋‚ด๊ฑฐ๋‚˜ ์ทจ์†Œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.


๐Ÿงช ๋ฆฌ์„œ์น˜ ์›Œํฌํ”Œ๋กœ

๋Œ€๋ถ€๋ถ„์˜ ์‹คํ–‰์€ ๊ฐ™์€ 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

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๊ฐœ ์นดํ…Œ๊ณ ๋ฆฌ 90๊ฐœ ์Šคํ‚ฌ
  • ๐Ÿ“Š 9๊ฐœ ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ๊ตฌ์„ฑ๋œ 90๊ฐœ ์ „๋ฌธ ๊ธˆ์œต ์Šคํ‚ฌ
  • ๐ŸŒ ์ „ํ†ต ์‹œ์žฅ๋ถ€ํ„ฐ ํฌ๋ฆฝํ†  & 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 3 alpha-zoo, strategy-dev-manager, strategy-discovery
Risk Analysis 1 ashare-pre-st-filter
์ปค์Šคํ…€ ๋ฐ์ดํ„ฐ ์†Œ์Šค ์ง์ ‘ ๋งŒ๋“  ๊ณผ๊ฑฐ OHLCV loader ๋“ฑ๋ก

loader๋ฅผ ๊ธฐ๋ณธ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ์‹œ์žฅ์ด๋‚˜ ๋ฒค๋”๊ฐ€ ํ•„์š”ํ•˜์‹ ๊ฐ€์š”? ์ง์ ‘ ๊ณผ๊ฑฐ ๋ด‰ loader๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  source="<name>"์œผ๋กœ ์„ ํƒํ•˜์„ธ์š”. ์•„๋ž˜ ๋‹จ๊ณ„๋Š” ํŒจํ‚ค์ง€ ์†Œ์Šค๋ฅผ ์ˆ˜์ •ํ•˜๋ฏ€๋กœ clone์—์„œ ์‹คํ–‰ํ•˜์„ธ์š”(pip install -e .).

  1. 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}
            ...
  2. ๋ชจ๋“ˆ ๋“ฑ๋ก ์œผ๋กœ @register๊ฐ€ ์‹คํ–‰๋˜๊ฒŒ โ€”โ€” agent/backtest/loaders/registry.py์˜ _loader_modules์— "backtest.loaders.<name>_loader"๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

  3. ์ด๋ฆ„ ํ—ˆ์šฉ ์œผ๋กœ ์„ค์ • ๊ฒ€์ฆ ํ†ต๊ณผ โ€”โ€” agent/backtest/runner.py์˜ _VALID_SOURCES์— "mysource"๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

  4. (์„ ํƒ) registry.py์˜ ํŠน์ • ์‹œ์žฅ FALLBACK_CHAINS์— ๋„ฃ์œผ๋ฉด source="auto"๋กœ๋„ ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  5. ์‚ฌ์šฉ โ€”โ€” ๋ฐฑํ…Œ์ŠคํŠธ ์„ค์ •์—์„œ 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๋“ค์„ ๋‚˜๋ž€ํžˆ ์ˆœ์œ„ํ™”ํ•˜์„ธ์š”.

๋ฐฑํ…Œ์ŠคํŠธ ์—”์ง„ 10๊ฐœ ์—”์ง„ + ์˜ต์…˜ ํฌํŠธํด๋ฆฌ์˜ค, ํฌ๋กœ์Šค๋งˆ์ผ“ 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% ์ฆ๊ถŒ๊ฑฐ๋ž˜์„ธ
VietnamEquity ๋ฒ ํŠธ๋‚จ (HOSE) ๋กฑ ์˜จ๋ฆฌ, T+2 ๊ฒฐ์ œ ๋ณด์œ , 10/50/100 VND ํ˜ธ๊ฐ€ ๋‹จ์œ„์—์„œ ยฑ7% ๊ฐ€๊ฒฉ์ œํ•œํญ, 100์ฃผ ๋‹จ์œ„, ๋งค๋„์ธก 0.1% ์„ธ๊ธˆ
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๊ฐœ ๋ชจ๋“ˆ 286๊ฐœ์˜ ํ…Œ์ŠคํŠธ๋œ ํ•จ์ˆ˜, ๋ชจ๋“  ๊ฒฝ๋กœ์—์„œ ํ˜ธ์ถœ ๊ฐ€๋Šฅ

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๋Š” ์–ด๋А ์ชฝ์—์„œ๋„ ํ•ด์ œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๐ŸŽฌ ๋ฐ๋ชจ

cli_sm.mp4
frontend_sm.mp4
โ˜๏ธ ์ž์—ฐ์–ด ๋ฐฑํ…Œ์ŠคํŠธ & ๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ 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 serve FastAPI ์›น ์„œ๋ฒ„ ์‹คํ–‰
vibe-trading-mcp MCP ์„œ๋ฒ„ ์‹œ์ž‘(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, Novita AI, iFlytek Spark, Z.ai, NVIDIA NIM, ModelScope, GitHub Copilot, 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

vibe-trading channels login feishu ๋Š” ๋กœ๊ทธ์ธ ์„ฑ๊ณต์„ ๋ณด๊ณ ํ•˜๊ธฐ ์ „์— QR ์ธ์ฆ์œผ๋กœ ๋ฐ›์€ ์•ฑ ์ž๊ฒฉ ์ฆ๋ช…์„ ~/.vibe-trading/agent.json ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค(ํŒŒ์ผ ๊ถŒํ•œ์€ ์†Œ์œ ์ž ์ „์šฉ).

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 ๋ฌธ์„œ, ๋ฐ์ดํ„ฐ ํŒŒ์ผ ๋˜๋Š” ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ
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 ์˜ˆ์•ฝ๋œ ์ž‘์—… ๋ชฉ๋ก
GET /scheduled-runs/status ์‹คํ–‰๊ธฐ ์ƒํƒœ ๋ฐ ๊ตฌ์„ฑ๋œ ์ „๋‹ฌ ๋Œ€์ƒ
GET /scheduled-runs/{job_id} ์˜ˆ์•ฝ ์ž‘์—… 1๊ฑด ์กฐํšŒ
DELETE /scheduled-runs/{job_id} ์˜ˆ์•ฝ ์ž‘์—… ์ทจ์†Œ
POST /scheduled-runs/proposals/{proposal_id}/commit ์—์ด์ „ํŠธ๊ฐ€ ์ œ์•ˆํ•œ ์ƒ์„ฑ/์ทจ์†Œ ํ™•์ •
POST /scheduled-runs/proposals/{proposal_id}/discard ์—์ด์ „ํŠธ ์ œ์•ˆ ํ๊ธฐ
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>"๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”.

์—์ด์ „ํŠธ์—๊ฒŒ ๋ณด์ด๋Š” ์Šค์ผ€์ค„๋ง ๋„๊ตฌ๋Š” scheduled_research ํ•˜๋‚˜๋ฟ์ž…๋‹ˆ๋‹ค. ์ฝ๊ธฐ ์•ก์…˜์€ ์ƒํƒœ/์ž‘์—…/ํ…œํ”Œ๋ฆฟ์„ ์กฐํšŒํ•˜๊ณ , propose_create ์™€ propose_cancel ์€ ์งง๊ฒŒ ์œ ์ง€๋˜๋Š” ํ™•์ธ ์ œ์•ˆ๋งŒ ์ €์žฅํ•  ๋ฟ ์ž‘์—… ์ €์žฅ์†Œ๋ฅผ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Web ์€ ๊ฒฐ์ •์  ํ™•์ธ ์นด๋“œ๋ฅผ ๋ Œ๋”๋งํ•˜๊ณ  CLI ๋Š” y/N ์„ ๋ฌผ์œผ๋ฉฐ, IM ๋Œ€ํ™”์—์„œ๋Š” ์ •ํ™•ํžˆ confirm(็กฎ่ฎค) ๋˜๋Š” cancel(ๅ–ๆถˆ) ๋กœ ๋‹ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค โ€” commit ์—”๋“œํฌ์ธํŠธ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์€ ์ด ํ‘œ๋ฉด ๋™์ž‘๋ฟ์ž…๋‹ˆ๋‹ค. end_at ์ด ์ง€๋‚œ ์ž‘์—…์€ expired ๊ฐ€ ๋˜์–ด ๋‹ค์‹œ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ „๋‹ฌ์€ ์ฑ„๋„ ์ค‘๋ฆฝ์ ์ž…๋‹ˆ๋‹ค. channels.deliveryTargets ์•„๋ž˜์— ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ถˆํˆฌ๋ช… ๋Œ€์ƒ ์ฐธ์กฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉด ์—์ด์ „ํŠธ์™€ ํ™•์ธ UI ์—๋Š” ref/label/channel ๋งŒ ๋ณด์ด๊ณ  ํ”„๋กœ๋ฐ”์ด๋”์˜ ์›์‹œ chat/user id ๋Š” ๋…ธ์ถœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ด๋Œ‘ํ„ฐ๊ฐ€ ์˜์ˆ˜์ฆ ์—†์ด ์„ฑ๊ณตํ•˜๋ฉด ์ „๋‹ฌ ์ƒํƒœ๋Š” accepted, ํ”„๋กœ๋ฐ”์ด๋” ๋ฉ”์‹œ์ง€ id ๊ฐ€ ๋ฐ˜ํ™˜๋  ๋•Œ๋งŒ sent ์ž…๋‹ˆ๋‹ค(ํ˜„์žฌ Feishu ๊ฐ€ ์—”๋“œํˆฌ์—”๋“œ ์ง€์›).

์Šค์ผ€์ค„๋Ÿฌ์—๋Š” ๋ฐ”๋กœ ์˜ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์„œ์น˜ ํ…œํ”Œ๋ฆฟ 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๋ฅผ ์œ„ํ•ด 74๊ฐœ 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(74): 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, list_strategies, query_strategies, get_strategy_evidence, refresh_strategy_evidence, 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 โ€” ์ž๊ฐ€ ์ง„ํ™” ์Šคํ‚ฌ

90๊ฐœ 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๋Š” 90๊ฐœ 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-public",
      "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).

ํ™œ์„ฑํ™” ๋ฐฉ๋ฒ•:

  1. 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๊ฐ€ ๊ตฌ์กฐ์ ์œผ๋กœ ํŽ˜์ดํผ ํ‚ค๋ฅผ ์‹ค๊ฑฐ๋ž˜ ํ˜ธ์ŠคํŠธ๋กœ ๋ณด๋‚ด๋Š” ๊ฒƒ์„ ๊ฑฐ๋ถ€ํ•˜๊ณ  ๊ทธ ๋ฐ˜๋Œ€๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์—ฌ์„œ, ํŽ˜์ดํผ์™€ ์‹ค๊ฑฐ๋ž˜์˜ ๋ถ„๋ฆฌ๊ฐ€ ๋๊นŒ์ง€ ๋ช…ํ™•ํ•˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
  2. 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 โ€” 74 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 (90 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/                  # 107 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/                 # 90 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.14 ์‚ฌ์ดํด ๊ธฐ์—ฌ์ž ๋ฐ ํฌ๋ ˆ๋”ง:

  • @Shizoqua โ€” a 13-PR correctness sweep across nearly every subsystem: grounding auto-recovers identity and price evidence within a bounded budget (#1092), swarm isolates worker artifacts between retries (#1053), rejects raw ok/success tool-result envelopes (#1052) and truncates oversized results with the shared notice (#1110), MCP gains offset paging for SEC filings and statements (#1138), routes load_skill through the registry so oversized skills page (#1137) and carries market-data provenance on get_market_data (#1131), plus excess_return consistency (#1058), Wilder-EWM RSI (#1056), the FTS5 tokenizer floor (#1071), non-finite prediction-market fields (#1136), in-flight delivery protection (#1140) and preserved backtest validation evidence (#1139)
  • @shadowinlife โ€” the run-analysis surface, four pages in one cycle: Options Lab (#1096), the Factor Research panel with its new IC correlation matrix (#1099), positions structure visualization (#1097) and the tearsheet tab (#1091); plus evidence-gated Strategy Discovery Phase 1 (#978) and Phase 2 decay monitoring (#1007), per-market volume units in market-data provenance (#1065) and baostock volume normalized to board lots (#1067)
  • @pengpengyi92 โ€” five quantlib numerics fixes: xirr and money-weighted return survive long-horizon discount underflow (#1119), zero-volatility options discount their forward value (#1066), the fixed-income curve keeps decay inside the requested bounds (#1076), event studies anchor to the prior session (#1078) and cross-validation aligns label ends to the prior observation (#1079)
  • @cgycorey โ€” reasoning effort honoured in chat completions (#1025), the per-task swarm ChatLLM closed to stop a pooled-connection leak (#1145) and the same for one-shot clients (#1153), gross_profit derived from revenue minus COGS when the SEC tag is absent (#1111), and vibe-trading show <run_id> dispatching its run id instead of the flag (#1147)
  • @lorenzozanee โ€” the test suite stopped escaping into the real config root and its live audit ledger (#1118, closes #1116), recovery steering delivered as user messages with inline system tags (#1112), and unsupported ticker-plus-name symbol queries marked skipped rather than failed (#1114)
  • @AndyLongest โ€” the interactive backtest research dashboard (#1084), the engine reporting actual post-fill positions (#1082), and grounding ignoring identity constants in rate formulas (#1083)
  • @ofeksh-tr โ€” eToro runtime UI parity for SDK connector status (#1051) and its crypto browse and flat market-data quotes (#1070), plus an empty Response for the scheduled-runs DELETE 204 (#1068)
  • @wiliao โ€” the agent-run reliability pass: grounding false-rejections, the final-answer gate and LLM timeouts (#1105), with prompt wording and support/resistance masking (#1060)
  • @jay79-boop โ€” a selectable IBKR market-data tier with starved quotes reported as no_data (#1075), and strict alpha t-stats surfaced in the bench JSON and HTML report (#1085)
  • @Robin1987China โ€” DCF refusing non-finite inputs instead of a silent negative share price (#1121), and grounding masking ISO dates that run into CJK text (#1132)
  • @zzz607 โ€” grounding masking line-leading ordered-list markers before number extraction (#1063), and the East Money research-report endpoint given the time parameters it now requires (#1077)
  • @Echoandelementwebsites โ€” worker prompts ordered for prompt-cache-friendly prefixes (#1057), and tool-less agents no longer instructed to call write_file (#1144)
  • @549236606-oss โ€” seven extended read-only Futu connector endpoints, each fail-closed through the existing gateway envelope (#1135)
  • @QCYTSN โ€” the desktop update safety boundary: PID-scoped shutdown, dormant candidate verification, interrupted-attempt recovery, and a tested tampered/unsigned/wrong-publisher/downgrade rejection matrix (#1101)
  • @honginp โ€” offline USD-M account reconciliation with immutable snapshot contracts and deterministic drift reporting (#1106)
  • @he-yufeng โ€” each monitor's latest verdict parsed server-side and persisted on the job for the Market Watch list (#1152)
  • @sykuang โ€” GitHub Copilot as a provider through the official SDK, with no borrowed client ID and no editor-impersonation headers (#990)
  • @miguelangelo78 โ€” the hosted TickerAll MetaTrader 5 data source, so forex and metals backtests need no local MT5 terminal (#968)
  • @ngoanpv โ€” Vietnam equity (HOSE) support: .VN no longer executes under China A-share rules (#1033)
  • @jax-novita โ€” Novita AI registered as a built-in OpenAI-compatible provider (#1059)
  • @daviddaco1 โ€” the Spanish locale and README_es.md, the sixth README (#1087)
  • @1psconstructor โ€” German (Deutsch) UI support (#1117)
  • @x-lambda โ€” the tencent loader building its SSL context from the certifi CA bundle, unblocking HK quotes (#1113)
  • @er-s-an โ€” build_registry() reporting partial construction instead of silently returning a short tool list (#1129)
  • @straun-repo โ€” reasoning effort passed through to the Anthropic adapter (#1115)
  • @nstavros โ€” connector orders rendering broker_sdk rows, with SDK enum reprs stripped and class-B tickers left intact (#1150)
  • @lukiod โ€” .env.partial created with owner-only permissions (#1086)
  • @fixXxerTech โ€” inferred strategy labels marked as inferred in the run dashboard (#1134)
  • @birdxs โ€” Docker images carrying the Feishu and Telegram channel dependencies, with a GHCR/Docker Hub build workflow (#1088)
  • @zhiwuyazhe-fjr โ€” a Docker Codex OAuth EOF that explains itself (#1054)
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-regime skill (#557), plus the academic_corr_rewire factor (#705)
  • @honginp โ€” Binance USD-M routing with execution/mark separation (#470/#716) and the maintenance-bracket decouple that keeps -PERP backtests zero-credential (#757)
  • @StaniellG โ€” the MetaTrader 5 (Exness) broker connector + mt5 data 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 insertBefore streaming 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_ZOOS whitelist (#707)
  • @nareshkps โ€” Robinhood connector account_number wiring (#726)
  • @darkknight4563 โ€” user swarm-presets directory discovery (#570)
  • @MikeCer โ€” IBKR thread-local connection pool + snapshot quotes (#636)
  • @Shizoqua โ€” local loader interval resampling (#467)
  • @roberttidball โ€” FastMCP transport import compatibility (#469)
  • @yxhuang โ€” bare-ticker resolution in the correlation matrix (#472, closes #471)
  • @Bortlesboat โ€” stale OPENAI_BASE_URL provider-switch fix (#484, closes #482)
  • @ananaymital โ€” preflight EnvConfig stale-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_server modularization capstone (1,103 โ†’ 371 lines, #424 closing #331), centralized env config with the AST CI gate (#440), loader fetch() 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/.BO routing, and the india_broker bridge (#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_image vision 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_committee preset (#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/dev commands (#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.json artifacts-dir fix (#429) and clearer --swarm-run errors (#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์— ๋ฐฉ๋ฌธํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค โœจ

visitors