Skip to content

JaehwanPark/KORStockScan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

974 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

KORStockScan

KORStockScan์€ ํ•œ๊ตญ ์ฃผ์‹ ๋งค๋งค๋ฅผ ์ž๋™์œผ๋กœ ๊ด€์ฐฐํ•˜๊ณ , ์žฅ์ค‘ ํŒ๋‹จ๊ณผ ์žฅํ›„ ๋ณต๊ธฐ๋ฅผ ์ด์–ด ๋ถ™์—ฌ ๋‹ค์Œ ์žฅ์ „์˜ ์‹คํ–‰ ํ›„๋ณด๋ฅผ ์ค€๋น„ํ•˜๋Š” ๊ฐœ์ธ์šฉ ๋ฆฌ์„œ์น˜/์šด์˜ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.

์งง๊ฒŒ ๋งํ•˜๋ฉด ์„ธ ๊ฐ€์ง€๋ฅผ ํ•จ๊ป˜ ํ•ฉ๋‹ˆ๋‹ค. ์žฅ์ค‘์—๋Š” ํ‚ค์›€ ์‹œ์„ธ์™€ ๊ณ„์ขŒ ์ƒํƒœ๋ฅผ ๋ณด๋ฉฐ ์Šค์บ˜ํ•‘ ํ›„๋ณด๋ฅผ ํ‰๊ฐ€ํ•˜๊ณ , ์žฅํ›„์—๋Š” ์‹ค์ œ ๋งค๋งค์™€ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๊ฒฐ๊ณผ๋ฅผ ๋น„๊ตํ•ด ๋ฌด์—‡์ด ๋‚˜์•˜๋Š”์ง€ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์Œ ์žฅ์ „์˜ ์ œํ•œ๋œ ์‹คํ–‰ ํ›„๋ณด๋กœ๋งŒ ๋„˜๊ฒจ, ์‹ค๊ณ„์ขŒ ๋ณ€๊ฒฝ์ด ์กฐ์šฉํžˆ ์ปค์ง€์ง€ ์•Š๋„๋ก ๋ง‰์Šต๋‹ˆ๋‹ค.

์ด ์ €์žฅ์†Œ์˜ ํ˜„์žฌ ๊ธฐ์ค€ ๋ฌธ์„œ๋Š” Plan Rebase์ž…๋‹ˆ๋‹ค. ๋‚ ์งœ๋ณ„ ์‹คํ–‰ ํ•ญ๋ชฉ์€ stage2 checklist๊ฐ€ ์†Œ์œ ํ•˜๊ณ , ์‹œ๊ฐ„๋Œ€๋ณ„ ์šด์˜ ์ ˆ์ฐจ๋Š” Time-Based Operations Runbook์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

ํ˜„์žฌ ๋ฌธ์„œ ๊ธฐ์ค€์ผ: 2026-07-03 KST

ํŠœ๋‹ ๋ฐ์ดํ„ฐ clean baseline์€ 2026-06-04T14:29:09+09:00 KST์ž…๋‹ˆ๋‹ค. ์ด ์‹œ๊ฐ ์ด์ „ raw/report/analytics artifact๋Š” archive/audit evidence๋กœ๋งŒ ๋ณด๋ฉฐ, ํ˜„์žฌ EV, rolling/MTD/cumulative tuning, live-auto promotion, runtime approval, pattern lab promotion, real execution quality approval ์ž…๋ ฅ์œผ๋กœ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฌด์—‡์„ ํ•˜๋Š”๊ฐ€

KORStockScan์€ ๋‹จ์ˆœํ•œ ๋งค์ˆ˜/๋งค๋„ ๋ด‡์ด ์•„๋‹ˆ๋ผ, ๋งค๋งค ํŒ๋‹จ์„ ๊ณ„์† ๊ฒ€์ฆํ•˜๋Š” ์ž๋™ํ™” ์ฒด์ธ์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค.

์žฅ์ค‘์—๋Š” ํ‚ค์›€ REST/WebSocket ๋ฐ์ดํ„ฐ, ํ˜ธ๊ฐ€์™€ ์ฒด๊ฒฐ, ๊ณ„์ขŒ ์ƒํƒœ, ๋ณด์œ  ํฌ์ง€์…˜, AI ํŒ๋‹จ์„ ๋ชจ์•„ ํ›„๋ณด๋ฅผ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์Šค์บ˜ํ•‘์€ ๋น ๋ฅธ ์ง„์ž…๊ณผ ๋ณด์œ /์ฒญ์‚ฐ ํ’ˆ์งˆ์„ ์ค‘์ ์ ์œผ๋กœ ๋ณด๊ณ , ์Šค์œ™์€ ์ถ”์ฒœ๋ถ€ํ„ฐ ์ง„์ž…, ๋ณด์œ , ์ถ”๊ฐ€๋งค์ˆ˜, ์ฒญ์‚ฐ๊นŒ์ง€์˜ ํ๋ฆ„์„ dry-run ์ค‘์‹ฌ์œผ๋กœ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค.

์žฅํ›„์—๋Š” ํ•˜๋ฃจ ๋™์•ˆ์˜ ์ด๋ฒคํŠธ๋ฅผ ๋‹ค์‹œ ์—ฎ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ์ฃผ๋ฌธ์ด ๋“ค์–ด๊ฐ„ ๊ฒฝ์šฐ์™€ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์œผ๋กœ๋งŒ ๋‚จ๊ธด ๊ฒฝ์šฐ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ , ๋†“์นœ ์ง„์ž…์ด๋‚˜ ํ”ผํ•œ ์†์‹ค๋„ ๋”ฐ๋กœ ๋ณต๊ธฐํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ธฐ์ค€์€ ๋‹จ์ˆœ ์Šน๋ฅ ์ด ์•„๋‹ˆ๋ผ ๊ธฐ๋Œ€๊ฐ’๊ณผ ์ˆœ์ด์ต์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ ์žฅ์ „์—๋Š” ์žฅํ›„ ์‚ฐ์ถœ๋ฌผ ์ค‘ ์•ˆ์ „์žฅ์น˜์™€ ๊ฒ€์ฆ์„ ํ†ต๊ณผํ•œ ํ•ญ๋ชฉ๋งŒ ์ œํ•œ์ ์œผ๋กœ runtime env์— ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค. ์žฅ์ค‘์— ์ž„์˜๋กœ ํ•œ๊ณ„๊ฐ’์„ ๋ฐ”๊พธ๊ฑฐ๋‚˜, ๋ฆฌํฌํŠธ ํ•˜๋‚˜๋งŒ ๋ณด๊ณ  ์‹ค์ฃผ๋ฌธ ๋ฒ”์œ„๋ฅผ ๋„“ํžˆ๋Š” ๋ฐฉ์‹์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ๊ธฐ๋Šฅ

์Šค์บ˜ํ•‘ ์—”์ง„

์žฅ์ค‘ ํ›„๋ณด๋ฅผ ๊ฐ์‹œํ•˜๊ณ , AI ์ ์ˆ˜, ์œ ๋™์„ฑ, ํ˜ธ๊ฐ€ ํ’ˆ์งˆ, ์ง€์—ฐ ์ƒํƒœ, ๊ณผ์—ด ์—ฌ๋ถ€, ์ˆ˜๊ธ‰ ๋งฅ๋ฝ์„ ํ•จ๊ป˜ ๋ด…๋‹ˆ๋‹ค. ์ ์ˆ˜๋Š” ์ค‘์š”ํ•œ ํŠน์ง•๊ฐ’์ด์ง€๋งŒ ๋‹จ๋… ๋งค์ˆ˜ ๋ช…๋ น์€ ์•„๋‹™๋‹ˆ๋‹ค. stale quote, ๋ธŒ๋กœ์ปค ์ œ์ถœ ๊ฐ€๋“œ, ๊ณ„์ขŒ/์ˆ˜๋Ÿ‰/์ฟจ๋‹ค์šด ๊ฐ™์€ ์•ˆ์ „์žฅ์น˜๋Š” ํ•ญ์ƒ ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค.

์Šค์œ™ dry-run๊ณผ pre-final ์Šน์ธ

์Šค์œ™์€ ๊ธฐ๋ณธ์ ์œผ๋กœ dry-run self-improvement ์ฒด์ธ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ ์ฃผ๋ฌธ ์—†์ด ์ถ”์ฒœ, ์ง„์ž…, ๋ณด์œ , ์ถ”๊ฐ€๋งค์ˆ˜, ์ฒญ์‚ฐ ํ๋ฆ„์„ ์ถ”์ ํ•˜๊ณ  ์žฅํ›„์— ๊ฒฐ๊ณผ๋ฅผ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. AI Tier2 ๊ฒ€์ฆ๊ณผ source-quality gate๋ฅผ ํ†ต๊ณผํ•œ ํ›„๋ณด๋Š” pre-final dry-run/sim env ํ›„๋ณด๊ฐ€ ๋  ์ˆ˜ ์žˆ์ง€๋งŒ, ์‹ค์ฃผ๋ฌธ ๊ถŒํ•œ์€ complete Swing LDM parent bucket evidence์™€ ๋ช…์‹œ์  ์‚ฌ์šฉ์ž ์Šน์ธ artifact๊ฐ€ ๋ชจ๋‘ ๋‹ซํžŒ final full-live conversion์—์„œ๋งŒ ์—ด๋ฆฝ๋‹ˆ๋‹ค.

์‹œ๋ฎฌ๋ ˆ์ด์…˜๊ณผ ๋†“์นœ ๊ธฐํšŒ ๋ณต๊ธฐ

์‹ค๊ณ„์ขŒ ์˜ˆ์ˆ˜๊ธˆ ๋ถ€์กฑ, 1์ฃผ cap, ํ˜„์žฌ selected family ์—ฌ๋ถ€๋Š” ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ›„๋ณด ์ œ์™ธ ์‚ฌ์œ ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋Œ€์‹  provenance๋กœ ๋‚จ๊น๋‹ˆ๋‹ค. ์‹ค์ œ ๋งค๋งค, ์‹œ๋ฎฌ๋ ˆ์ด์…˜, ํ•ฉ์‚ฐ ๋ถ„์„์€ ๋ถ„๋ฆฌํ•ด์„œ ๋ณด๋ฉฐ, ์‹ค์ฃผ๋ฌธ ํ’ˆ์งˆ ํŒ๋‹จ์—๋Š” real-only ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์žฅํ›„ ๋ฆฌํฌํŠธ์™€ ์ž๋™ ๋ณด์™„ ํ›„๋ณด

ํ•˜๋ฃจ ๋™์•ˆ ์Œ“์ธ ์ด๋ฒคํŠธ๋Š” threshold cycle, lifecycle matrix, sentinel, panic report, swing audit, bottom rebound research, pattern lab ๊ฐ™์€ ๋ฆฌํฌํŠธ์™€ ๋ถ„์„์œผ๋กœ ์ •๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์ž๋™ํ™”๋Š” ์—ฌ๊ธฐ์„œ ๋‹ค์Œ ์žฅ์ „ ์ ์šฉ ํ›„๋ณด, sim-auto ํ›„๋ณด, ์ฝ”๋“œ ๋ณด์™„ workorder๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. sim/probe/real-flow ๊ฒฐ๊ณผ๋ฅผ ๋ด์•ผ๋งŒ ๋“œ๋Ÿฌ๋‚˜๋Š” ๋ˆ„๋ฝ ๊ด€์ฐฐ์ถ•์€ producer_gap_discovery๊ฐ€ source-only๋กœ ๋ฐœ๊ตดํ•˜๊ณ , AI two-pass review๊ฐ€ ์šฐ์„ ์ˆœ์œ„์™€ ๊ตฌํ˜„์š”๊ฑด์„ ๋ณด๊ฐ•ํ•œ ๋’ค high-priority ํ•ญ๋ชฉ์„ code improvement workorder๋กœ ๋„˜๊น๋‹ˆ๋‹ค. ์ดํ›„ stage_hook_workorder_discovery์™€ stage_hook_runtime_scaffold๊ฐ€ hook ๊ตฌํ˜„ ํ•„์š”์„ฑ๊ณผ disabled/source-only scaffold ๊ตฌํ˜„ ์—ฌ๋ถ€๋ฅผ workorder provenance๋กœ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค. implement_now ์ฒ˜๋ฆฌ๋Š” 1์ฐจ instrumentation/report/provenance ๊ตฌํ˜„, 2์ฐจ ๊ด€๋ จ ๋ฆฌํฌํŠธ ์žฌ์ƒ์„ฑ๊ณผ workorder lineage diff ํ™•์ธ์œผ๋กœ ๋‹ซ์œผ๋ฉฐ, ์ƒˆ๋กœ ์ถ”๊ฐ€ ๊ตฌํ˜„ํ•˜๋Š” ๋Œ€์ƒ์€ runtime_effect=false contract๋ฅผ ์œ ์ง€ํ•œ ํ•ญ๋ชฉ์œผ๋กœ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.

์šด์˜ ๊ฐ์‹œ

System Error Detector๊ฐ€ ํ”„๋กœ์„ธ์Šค, cron, ๋กœ๊ทธ, artifact freshness, ๋ฆฌ์†Œ์Šค, stale lock์„ ๊ฐ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ์‹œ๋Š” ์ „๋žต ๋ณ€๊ฒฝ ๋„๊ตฌ๊ฐ€ ์•„๋‹ˆ๋ผ ์šด์˜ ์ƒํƒœ ์ ๊ฒ€ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์žฅ์• ๊ฐ€ ๋ฐœ๊ฒฌ๋˜๋ฉด ์›์ธ ๋ณต๊ตฌ๋‚˜ instrumentation ๋ณด๊ฐ•์œผ๋กœ ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค.

์•ˆ์ „ ์›์น™

KORStockScan์˜ ๊ธฐ๋ณธ ์ฒ ํ•™์€ โ€œ์ž๋™ํ™”ํ•˜๋˜, ์‹ค๊ณ„์ขŒ ์œ„ํ—˜์ด ์ปค์ง€๋Š” ์ง€์ ์€ ๋ช…ํ™•ํžˆ ๋ถ„๋ฆฌํ•œ๋‹คโ€์ž…๋‹ˆ๋‹ค.

์žฅ์ค‘ runtime threshold mutation์€ ๊ธˆ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ์€ ์žฅํ›„ ๋ฆฌํฌํŠธ์™€ ๊ฒ€์ฆ์„ ๊ฑฐ์ณ ๋‹ค์Œ ์žฅ์ „ runtime env๋กœ๋งŒ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.

AI๋Š” ์ œ์•ˆ์ž์ด์ž ๊ฒ€ํ† ์ž์ž…๋‹ˆ๋‹ค. AI๊ฐ€ ๋‹จ๋…์œผ๋กœ ๋ธŒ๋กœ์ปค ์ฃผ๋ฌธ ์•ˆ์ „์žฅ์น˜, stale quote ์ฐจ๋‹จ, ๊ณ„์ขŒ/์ˆ˜๋Ÿ‰/์ฟจ๋‹ค์šด ๊ฐ€๋“œ, hard/protect/emergency stop์„ ์šฐํšŒํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

sim-auto, dry-run, bounded live/pre-final ํ›„๋ณด๊นŒ์ง€๋Š” AI Tier2 ๊ฒ€์ฆ๊ณผ hard gate๋ฅผ ํ†ต๊ณผํ•˜๋ฉด ์ž๋™ ํŒ์ •๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ตœ์ข… full-live ์ „ํ™˜, cap ํ•ด์ œ, provider ๋ณ€๊ฒฝ, bot restart, hard safety ์™„ํ™”๋Š” ์‚ฌ์šฉ์ž ์Šน์ธ ๊ฒฝ๊ณ„๋กœ ๋‚จ๊น๋‹ˆ๋‹ค.

๋‚ด๋ถ€ prompt์™€ JSON contract๋Š” ์˜์–ด label์„ ๊ธฐ์ค€์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ž˜๋œ ํ•œ๊ตญ์–ด label์€ ๋ช…์‹œ๋œ compatibility map์œผ๋กœ๋งŒ ์ •๊ทœํ™”ํ•˜๊ณ , ์ •์˜๋˜์ง€ ์•Š์€ ์ƒˆ label์ด ๋‚˜์˜ค๋ฉด source-quality FAIL๋กœ ํ‘œ๋ฉดํ™”ํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

์ €์žฅ์†Œ๋Š” โ€œ์‹ค์‹œ๊ฐ„ ์‹คํ–‰โ€, โ€œ์žฅํ›„ ๋ถ„์„โ€, โ€œ์šด์˜ ๋ฌธ์„œโ€๊ฐ€ ํ•œ ํ”„๋กœ์ ํŠธ ์•ˆ์— ๊ฐ™์ด ๋“ค์–ด ์žˆ๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์ฒ˜์Œ ๋ณผ ๋•Œ๋Š” ๋ชจ๋“  ํŒŒ์ผ์„ ํ•œ ๋ฒˆ์— ๋”ฐ๋ผ๊ฐ€๊ธฐ๋ณด๋‹ค, ์•„๋ž˜ ์„ธ ํ๋ฆ„๋งŒ ์žก์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์‹ค์‹œ๊ฐ„ ์‹คํ–‰ ํ๋ฆ„์€ src/์™€ deploy/๊ฐ€ ์ค‘์‹ฌ์ž…๋‹ˆ๋‹ค. ๋ด‡์€ ์žฅ์ „ runtime env๋ฅผ ์ฝ๊ณ , ํ‚ค์›€ ์‹œ์„ธ์™€ ๊ณ„์ขŒ ์ƒํƒœ๋ฅผ ๋ฐ›์•„ ํ›„๋ณด ํ‰๊ฐ€, ์ฃผ๋ฌธ ์•ˆ์ „์žฅ์น˜, ๋ณด์œ /์ฒญ์‚ฐ ๊ด€๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์žฅํ›„ ๋ถ„์„ ํ๋ฆ„์€ data/report/, data/threshold_cycle/, analysis/์— ๊ฒฐ๊ณผ๋ฅผ ๋‚จ๊น๋‹ˆ๋‹ค. ์šด์˜ ๋ฌธ์„œ ํ๋ฆ„์€ docs/๊ฐ€ ๋งก๊ณ , ํ˜„์žฌ ์›์น™๊ณผ ๋‚ ์งœ๋ณ„ ์‹คํ–‰ ํ•ญ๋ชฉ์„ ๋ถ„๋ฆฌํ•ด์„œ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

KORStockScan/
โ”œโ”€โ”€ src/                 # ๋ด‡, ์—”์ง„, ๋ฆฌํฌํŠธ, ์›น ๋Œ€์‹œ๋ณด๋“œ, ํ…Œ์ŠคํŠธ
โ”œโ”€โ”€ analysis/            # ์˜คํ”„๋ผ์ธ ํŒจํ„ด ๋ถ„์„๊ณผ pattern lab
โ”œโ”€โ”€ data/                # runtime event, threshold cycle, report, config
โ”œโ”€โ”€ deploy/              # cron, systemd, nginx, ์šด์˜ wrapper
โ”œโ”€โ”€ docs/                # ๊ธฐ์ค€ ๋ฌธ์„œ, runbook, checklist, workorder
โ””โ”€โ”€ logs/                # ์šด์˜ ๋กœ๊ทธ

์ž์ฃผ ๋ณด๋Š” ์œ„์น˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์œ„์น˜ ๋‚ด์šฉ
src/bot_main.py ์šด์˜ ๋ด‡ ์ง„์ž…์ 
src/engine/ ๋งค๋งค ์—”์ง„, AI, ๋ฆฌํฌํŠธ, ์ž๋™ํ™” CLI
src/engine/swing/ ์Šค์œ™ ์ž๋™ํ™”์™€ ์Šน์ธ ์ปจํŠธ๋กค
src/web/ Flask ๋Œ€์‹œ๋ณด๋“œ์™€ API
data/report/ ์žฅ์ค‘/์žฅํ›„ ๋ฆฌํฌํŠธ
data/threshold_cycle/ ์žฅ์ „ apply plan๊ณผ runtime env
docs/checklists/ ๋‚ ์งœ๋ณ„ ์‹คํ–‰ ํ•ญ๋ชฉ
docs/code-improvement-workorders/ ์ž๋™ ์ƒ์„ฑ๋œ ์ฝ”๋“œ ๋ณด์™„ ์ง€์‹œ์„œ

์กฐ๊ธˆ ๋” ์„ธ๋ถ€์ ์œผ๋กœ ๋ณด๋ฉด src/engine/์€ ์—ฌ๋Ÿฌ ์„ฑ๊ฒฉ์˜ ๋ชจ๋“ˆ์ด ํ•จ๊ป˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šค์บ˜ํ•‘ ์‹คํ–‰ ๋กœ์ง, AI ์‘๋‹ต ๊ณ„์•ฝ, ๋ฆฌํฌํŠธ ์ƒ์„ฑ๊ธฐ, threshold cycle, source-quality audit, bottom rebound research ๊ฐ™์€ CLI๊ฐ€ ์—ฌ๊ธฐ์— ๋ชจ์ž…๋‹ˆ๋‹ค. ์Šค์œ™์ฒ˜๋Ÿผ ๋…๋ฆฝ์ ์ธ ํ•˜์œ„ ๋„๋ฉ”์ธ์€ src/engine/swing/ ์•„๋ž˜์— ๋‘๊ณ , ๋‹จ์ˆœํžˆ ์ƒˆ ์ฝ”๋“œ๋ฅผ ๋ชจ๋‘ src/engine/์— ๋„ฃ๋Š” ๋ฐฉ์‹์€ ํ”ผํ•ฉ๋‹ˆ๋‹ค.

data/๋Š” ์šด์˜ ์ค‘ ๊ณ„์† ์Œ“์ด๋Š” ์ž‘์—… ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค. ์žฅ์ค‘ raw event๋Š” data/pipeline_events/, ์ž๋™ํ™” ์ฒด์ธ์ด ์ฝ๋Š” compact event๋Š” data/threshold_cycle/, ์‚ฌ๋žŒ์ด ํ™•์ธํ•˜๋Š” ๋ฆฌํฌํŠธ๋Š” data/report/์— ๋ชจ์ž…๋‹ˆ๋‹ค. JSON/JSONL์ด ๊ธฐ์ค€ ๋ฐ์ดํ„ฐ์ด๊ณ , Markdown์€ ์‚ฌ๋žŒ์ด ๋นจ๋ฆฌ ์ฝ๊ธฐ ์œ„ํ•œ ์š”์•ฝ์ž…๋‹ˆ๋‹ค.

docs/๋Š” ์˜์‚ฌ๊ฒฐ์ •์˜ ๊ธฐ์ค€์ž…๋‹ˆ๋‹ค. Plan Rebase๋Š” ํ˜„์žฌ ์ •์ฑ…๊ณผ ๊ธˆ์ง€์„ ์„, runbook์€ ์‹œ๊ฐ„๋Œ€๋ณ„ ์šด์˜ ์ ˆ์ฐจ๋ฅผ, checklist๋Š” ํŠน์ • ๋‚ ์งœ์˜ ์‹คํ–‰ ํ•ญ๋ชฉ์„ ์†Œ์œ ํ•ฉ๋‹ˆ๋‹ค. README๋Š” ์ „์ฒด ์•ˆ๋‚ด์„œ ์—ญํ• ๋งŒ ํ•˜๋ฉฐ, ์„ธ๋ถ€ ํŒ์ • ๊ธฐ์ค€์€ ๊ธฐ์ค€ ๋ฌธ์„œ๋กœ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

LDM์˜ ๊ตฌ์„ฑ

LDM์€ Lifecycle Decision Matrix์˜ ์ค„์ž„๋ง์ž…๋‹ˆ๋‹ค. ์ด๋ฆ„์€ ์กฐ๊ธˆ ๋”ฑ๋”ฑํ•˜์ง€๋งŒ, ํ•˜๋Š” ์ผ์€ ๋‹จ์ˆœํ•ฉ๋‹ˆ๋‹ค. ํ›„๋ณด๊ฐ€ ์ฒ˜์Œ ๋ฐœ๊ฒฌ๋œ ์ˆœ๊ฐ„๋ถ€ํ„ฐ ์ง„์ž…, ์ œ์ถœ, ๋ณด์œ , ์ถ”๊ฐ€๋งค์ˆ˜, ์ฒญ์‚ฐ๊นŒ์ง€์˜ ์ „ ๊ณผ์ •์„ ๊ฐ™์€ ํ˜•์‹์˜ ํ–‰์œผ๋กœ ์ •๋ฆฌํ•˜๊ณ , ์–ด๋А ๊ตฌ๊ฐ„์—์„œ ์–ด๋–ค ์„ ํƒ์ด ๋” ๋‚˜์•˜๋Š”์ง€ ์žฅํ›„์— ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

LDM์€ ๊ธฐ์กด์˜ ๊ณ ์ • ์ ์ˆ˜ํ‘œ๋ฅผ ๋Œ€์ฒดํ•˜๋Š” โ€œ๋‹จ๋… ๋งค์ˆ˜ ์—”์ง„โ€์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ ์ˆ˜, ์ˆ˜๊ธ‰, ์ง€์—ฐ, ์œ ๋™์„ฑ, ๊ณผ์—ด, ๊ฐ€๊ฒฉ ํ’ˆ์งˆ, ๋ณด์œ  ์†์ต, ์‹œ์žฅ ๋ ˆ์ง ๊ฐ™์€ ๊ฐ’์„ ํŠน์ง•์œผ๋กœ ๋ชจ์œผ๊ณ , ์‚ฌํ›„ ์ˆ˜์ต๋ฅ , ๋†“์นœ ์ƒ์Šน, ํ”ผํ•œ ์†์‹ค, MFE/MAE ๊ฐ™์€ ๊ฒฐ๊ณผ์™€ ๋ถ„๋ฆฌํ•ด์„œ ๋ด…๋‹ˆ๋‹ค. ์žฅ์ค‘์— ์•Œ ์ˆ˜ ์—†๋Š” ์‚ฌํ›„ ๊ฒฐ๊ณผ๋Š” runtime ํŒ๋‹จ์— ๋„ฃ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ตฌ์„ฑ์€ ํฌ๊ฒŒ ๋‹ค์„ฏ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.

๋‹จ๊ณ„ ๋ณด๋Š” ๊ฒƒ ์˜ˆ์‹œ ํŒ๋‹จ
entry ํ›„๋ณด๋ฅผ ์ง€๊ธˆ ์‚ด์ง€, ๋” ๊ธฐ๋‹ค๋ฆด์ง€ ๋ฐฉ์–ด์  ์ง„์ž…, ์žฌํ˜ธ๊ฐ€ ๋Œ€๊ธฐ, AI no-buy ์œ ์ง€
submit ์‹ค์ œ ์ฃผ๋ฌธ ์ œ์ถœ ์ „ ํ’ˆ์งˆ stale quote ์ฐจ๋‹จ, latency ์œ„ํ—˜, ๋ธŒ๋กœ์ปค/๊ณ„์ขŒ ๊ฐ€๋“œ
holding ๋ณด์œ ๋ฅผ ์ด์–ด๊ฐˆ์ง€ ์ค„์ผ์ง€ soft stop ์œ ์ง€, HOLD/EXIT ๋ณด์ •
scale_in ๋ฌผํƒ€๊ธฐ/๋ถˆํƒ€๊ธฐ ํ›„๋ณด AVG_DOWN, PYRAMID, ๊ฐ€๊ฒฉ/์ˆ˜๋Ÿ‰ ๊ฐ€๋“œ
exit ์ฒญ์‚ฐ ํ’ˆ์งˆ ๋น ๋ฅธ ์†์ ˆ, ์ถ”์„ธ ๋ณด์œ , missed upside ๋ณต๊ธฐ

์žฅํ›„์—๋Š” entry_bucket_attribution, scale_in_bucket_attribution, overnight_bucket_attribution ๊ฐ™์€ bucket attribution์ด ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค. bucket์€ โ€œ์ ์ˆ˜ 60๋Œ€์ด๋ฉด์„œ ์œ ๋™์„ฑ์€ ์ถฉ๋ถ„ํ•˜์ง€๋งŒ stale ์œ„ํ—˜์ด ์žˆ์—ˆ๋˜ ํ›„๋ณดโ€์ฒ˜๋Ÿผ ๋น„์Šทํ•œ ์ƒํ™ฉ์„ ๋ฌถ๋Š” ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. ๊ฐ bucket์€ ํ‘œ๋ณธ ์ˆ˜, ๊ธฐ๋Œ€๊ฐ’, source-quality, ํ›„์† hook ์ค€๋น„ ์—ฌ๋ถ€๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ถ„๋ฅ˜๋ฉ๋‹ˆ๋‹ค.

bucket์ด ์ด๋ฏธ ์กด์žฌํ•˜๋Š”์ง€, ์•„๋‹ˆ๋ฉด ๊ด€์ฐฐ producer ์ž์ฒด๊ฐ€ ๋ถ€์กฑํ•œ์ง€๋Š” ๋ถ„๋ฆฌํ•ด์„œ ๋ด…๋‹ˆ๋‹ค. lifecycle_bucket_discovery๋Š” ์ƒ์„ฑ๋œ lifecycle bucket์„ ๋ถ„๋ฅ˜ํ•˜๊ณ , producer_gap_discovery๋Š” hard/soft stop ์ดํ›„ ํšŒ๋ณต, ๋ฏธ์ฒด๊ฒฐ ์ดํ›„ ์žฌ์ง„์ž… ํ’ˆ์งˆ, ์Šค์œ™ label/source handoff, scale-in counterfactual์ฒ˜๋Ÿผ ๋ณ„๋„ producer๊ฐ€ ์žˆ์–ด์•ผ ๊ด€์ฐฐ ๊ฐ€๋Šฅํ•œ ๋นˆํ‹ˆ์„ ์ฐพ์Šต๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค source-only ๊ณ„์ธต์ด๋ฉฐ, high-priority ๊ตฌํ˜„ ํ›„๋ณด๋ฅผ workorder๋กœ ํ‘œ๋ฉดํ™”ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์‹ค์ฃผ๋ฌธ, threshold, provider, bot restart ๊ถŒํ•œ์€ ์—†์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ๊ธฐ์ค€์œผ๋กœ ์ž๋™ ์ƒ์„ฑ๋˜๋Š” ์ฃผ์š” bucket ์ถ•์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

bucket ๋ฌถ์Œ ํ˜„์žฌ ์ถ• ์ฃผ๋กœ ๋‹ตํ•˜๋Š” ์งˆ๋ฌธ
Entry bucket score_band, source_stage, chosen_action, stale_bucket, liquidity_bucket, strength_bucket, overbought_bucket, time_bucket, exit_rule, combo_entry_spot ์–ด๋–ค ์ง„์ž… ์กฐ๊ฑด ์กฐํ•ฉ์ด ๊ธฐ๋Œ€๊ฐ’์„ ๋งŒ๋“ค์—ˆ๋Š”๊ฐ€
Submit bucket submit_source_stage, revalidation_state, quote_age_bucket, price_resolution_bucket, would_limit_fill, actual_order_submitted, broker_order_forbidden, combo_submit_quality ์ฃผ๋ฌธ ์ง์ „ ํ’ˆ์งˆ ๋ฌธ์ œ์ธ์ง€, ์‹ค์ œ ์ œ์ถœ/๋ธŒ๋กœ์ปค ๊ณ„์•ฝ ๋ฌธ์ œ์ธ์ง€
Scale-in bucket arm, blocker_namespace, blocker_reason, profit_band, peak_profit_band, held_bucket, ai_score_band, ai_score_source, supply_pass_bucket, price_guard_reason, qty_reason, time_bucket ๋ฌผํƒ€๊ธฐ/๋ถˆํƒ€๊ธฐ ์ค‘ ์–ด๋А ์กฐ๊ฑด์ด ์ข‹๊ฑฐ๋‚˜ ์œ„ํ—˜ํ–ˆ๋Š”๊ฐ€
Overnight bucket overnight_action, overnight_status, confidence_band, profit_band, peak_profit_band, held_bucket, price_source, source_quality_gate, combo_overnight_decision ์žฅ๋งˆ๊ฐ sim ํฌ์ง€์…˜์„ ๋‹น์ผ ๊ฐ€์ƒ์ฒญ์‚ฐํ• ์ง€, ๋‹ค์Œ๋‚  carryํ• ์ง€
Swing entry bucket origin, block_reason, position_tag, gap_bucket, score_bucket, vpw_bucket, strategy, entry_price_provenance, qty_source ์Šค์œ™ ํ›„๋ณด๊ฐ€ ์–ด๋””์„œ ์™”๊ณ  ์–ด๋–ค ์ง„์ž… ๋ณ‘๋ชฉ์„ ๊ฐ€์กŒ๋Š”๊ฐ€
Swing holding/exit bucket mfe_bucket, mae_bucket, held_bucket, exit_reason, panic_context, ofi_state, qi_state ๋ณด์œ ๋ฅผ ๋” ์ด์–ด๊ฐ”์–ด์•ผ ํ–ˆ๋Š”์ง€, ์ฒญ์‚ฐ์ด ๋Šฆ๊ฑฐ๋‚˜ ๋นจ๋ž๋Š”์ง€
Swing scale-in bucket add_type, source_quality_status, qty_source, price_policy ์Šค์œ™ ์ถ”๊ฐ€๋งค์ˆ˜ ํ›„๋ณด์˜ ์ˆ˜๋Ÿ‰/๊ฐ€๊ฒฉ ์ •์ฑ…์ด ์ ์ ˆํ–ˆ๋Š”๊ฐ€
Swing discovery arm bucket entry_policy, sizing_policy, exit_policy, sector, theme_tags, legacy_ml_cohort ์—ฌ๋Ÿฌ ๊ฐ€์ƒ arm ์ค‘ ์–ด๋–ค ์กฐํ•ฉ์ด ์‚ด์•„๋‚จ๋Š”๊ฐ€

์ด ๋ชฉ๋ก์€ โ€œ๊ณ ์ • ๋งค๋งค ๊ทœ์น™โ€ ๋ชฉ๋ก์ด ์•„๋‹ˆ๋ผ ๊ด€์ฐฐ๊ณผ ๋ถ„๋ฅ˜์˜ ๊ธฐ์ค€์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด liquidity_bucket=liquidity_unknown์ด ๋‚˜์™”๋‹ค๊ณ  ํ•ด์„œ ์ฆ‰์‹œ ๋งค์ˆ˜๋ฅผ ๊ธˆ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ํ•ด๋‹น bucket์˜ ํ‘œ๋ณธ ์ˆ˜, ๊ธฐ๋Œ€๊ฐ’, source-quality, ํ›„์† hook ์ค€๋น„ ์ƒํƒœ๋ฅผ ๋ณด๊ณ  keep collecting, candidate_tighten_or_exclude, sim_auto_approved, runtime_blocked_contract_gap ๊ฐ™์€ ์ƒํƒœ๋กœ ๋‹ซ์Šต๋‹ˆ๋‹ค.

README๋Š” bucket taxonomy์™€ ๊ถŒํ•œ ๊ฒฝ๊ณ„๋งŒ ๊ณ ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์‹  bucket row ์ˆ˜, sim-auto ํ›„๋ณด ์ˆ˜, active priority key, positive/negative EV snapshot์€ target date๋ณ„ lifecycle_bucket_discovery, threshold_cycle_ev, runtime_approval_summary, runtime_apply_bridge, post-apply attribution artifact๊ฐ€ ์†Œ์œ ํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ๋‚ ์งœ ์Šค๋ƒ…์ƒท์€ ํ˜„์žฌ ์šด์˜ ๊ธฐ์ค€์œผ๋กœ ๋ณต์‚ฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

sim_auto_approved๋Š” ๋ชจ๋‘ ์ข‹์€ ๋ฐฉํ–ฅ์ด๋ผ๋Š” ๋œป์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ผ๋ถ€๋Š” โ€œ๋” ์—ด์–ด๋ณผ ํ›„๋ณดโ€์ด๊ณ , ์ผ๋ถ€๋Š” โ€œ๋‚˜์œ ์กฐ๊ฑด์ด ๋ฐ˜๋ณต๋˜์–ด sim ์ •์ฑ…์—์„œ ๋” ์กฐ์—ฌ๋ณผ ํ›„๋ณดโ€์ž…๋‹ˆ๋‹ค. README์— ์ˆซ์ž๋ฅผ ๊ณ ์ •ํ•˜์ง€ ์•Š๊ณ , artifact์˜ source-quality, sample floor, primary EV, active policy handoff, runtime match ์—ฌ๋ถ€๋ฅผ ํ•จ๊ป˜ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋ถ„๋ฅ˜ ๊ฒฐ๊ณผ๋Š” ๋Œ€๋žต ๋„ค ๊ฐˆ๋ž˜๋กœ ํ˜๋Ÿฌ๊ฐ‘๋‹ˆ๋‹ค. ๊ณ„์† ๊ด€์ฐฐํ•  ๊ฒƒ์€ source-only๋กœ ๋‚จ๊ณ , ์‹œ๋ฎฌ๋ ˆ์ด์…˜์— ๋ฐ”๋กœ ์ ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์€ sim_auto_approved๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์‹ค์ œ runtime์— ์—ฐ๊ฒฐํ•  ์ค€๋น„๊ฐ€ ๋œ pre-final ํ›„๋ณด๋Š” live_auto_apply_ready๊ฐ€ ๋  ์ˆ˜ ์žˆ์ง€๋งŒ, parsed AI Tier2 ๊ฒ€์ฆ๊ณผ env mapping, runtime hook, rollback/post-apply attribution์ด ๋‹ซํ˜€์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ณ„์•ฝ์ด ๋ถ€์กฑํ•œ ๊ฒฝ์šฐ๋Š” runtime_blocked_contract_gap ๋˜๋Š” code workorder๋กœ ๋ผ์šฐํŒ…๋ฉ๋‹ˆ๋‹ค.

์ค‘์š”ํ•œ ๊ธˆ์ง€์„ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. LDM์€ hard safety, ๋ธŒ๋กœ์ปค ์ œ์ถœ ๊ฐ€๋“œ, stale quote, ๊ณ„์ขŒ/์ˆ˜๋Ÿ‰/์ฟจ๋‹ค์šด ๊ฐ€๋“œ๋ฅผ ์šฐํšŒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ ์ˆ˜๊ฐ€ ๋†’์„์ˆ˜๋ก ํ•ญ์ƒ ์ข‹์€ ๋งค๋งค๋ผ๋Š” ๊ฐ€์ •์„ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ ์ˆ˜๋Š” feature์ผ ๋ฟ์ด๊ณ , ์ตœ์ข… ํŒ๋‹จ์€ ์žฅํ›„ ๊ธฐ๋Œ€๊ฐ’๊ณผ source-quality๋ฅผ ํ•จ๊ป˜ ๋ด…๋‹ˆ๋‹ค.

์žฅ์ค‘ํ›„๋ณด ์ˆ˜์ง‘

์žฅ์ค‘ํ›„๋ณด ์ˆ˜์ง‘์€ ๋‘ ๊ฒฝ๋กœ๊ฐ€ ํ•ฉ์ณ์ ธ ์›€์ง์ž…๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ์žฅ์ „/์žฅํ›„์— ์ค€๋น„๋˜๋Š” ์Šค์œ™ ๋ชจ๋ธ ์ถ”์ฒœ CSV์ด๊ณ , ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ์žฅ์ค‘์— ๊ณ„์† ๋„๋Š” ์Šค์บ˜ํ•‘ ์Šค์บ๋„ˆ์ž…๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ์ข…๋ชฉ ์„ ์ • ์ž…๋ ฅ์ด์ง€๋งŒ ๊ถŒํ•œ์€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์Šค์œ™ ๋ชจ๋ธ์€ ๋‹ค์Œ๋‚  ํ›„๋ณด๊ตฐ์„ ์ค€๋น„ํ•˜๊ณ , ์Šค์บ˜ํ•‘ ์Šค์บ๋„ˆ๋Š” ๋‹น์ผ ์ˆ˜๊ธ‰ ๋ณ€ํ™”๊ฐ€ ์‚ด์•„๋‚œ ์ข…๋ชฉ์„ ๊ฐ์‹œ ๋Œ€์ƒ์œผ๋กœ ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค.

๊ฒฝ๋กœ ์ฃผ๊ธฐ ์ž…๋ ฅ ์‚ฐ์ถœ๋ฌผ ์—ญํ• 
Swing model retrain ์žฅํ›„ cron ์ผ๋ด‰ ํŒจ๋„, backtest, AI Tier2 review data/model_registry/swing_v2/current.json, data/daily_recommendations_v2.csv, diagnostics ๋‹ค์Œ ์žฅ์ „ ์Šค์œ™ ์ถ”์ฒœ ํ›„๋ณด ์ƒ์„ฑ
Final ensemble scanner ์žฅ์ „/๋ฐฐ์น˜ model artifact, KOSPI ์œ ๋™์„ฑ pool, daily_recommendations_v2.csv recommendation_history์˜ KOSPI_ML ์ถ”์ฒœ ์Šค์œ™/์ค‘๊ธฐ ํ›„๋ณด๋ฅผ DB ์ถ”์ฒœ์œผ๋กœ ์ ์žฌ
Scalping scanner ์žฅ์ค‘ 2~3๋ถ„ ํ‚ค์›€ ๋“ฑ๋ฝ๋ฅ , ์ˆ˜๊ธ‰ ๊ธ‰์ฆ, ๊ฑฐ๋ž˜๋Œ€๊ธˆ, VI recommendation_history์˜ SCALPING WATCHING row, WS ๋“ฑ๋ก ์ด๋ฒคํŠธ ๋‹น์ผ ์‹ค์‹œ๊ฐ„ ์Šค์บ˜ํ•‘ ๊ฐ์‹œ ํ›„๋ณด ์ˆ˜์ง‘

์Šค์œ™ ๋ชจ๋ธํ•™์Šต์€ auto_retrain_pipeline.sh์™€ src.model.swing_retrain_pipeline์ด ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ํ๋ฆ„์€ train -> backtest -> deterministic gate -> AI Tier2 review -> active artifact promotion -> recommend_daily_v2 smoke์ž…๋‹ˆ๋‹ค. ํ›„๋ณด๊ฐ€ ํ†ต๊ณผํ•˜๋ฉด active model artifact์™€ current.json์ด ๊ฐฑ์‹ ๋˜๊ณ , recommend_daily_v2๊ฐ€ data/daily_recommendations_v2.csv์™€ diagnostics JSON์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. AI Tier2๊ฐ€ ์ฐจ๋‹จํ•˜๋ฉด active artifact๋Š” ์œ ์ง€๋˜๊ณ , ์•ˆ์ „ํ•œ ๊ฒฝ์šฐ์—๋งŒ remediation manifest๊ฐ€ ๋‹ค์Œ cron ์žฌํ•™์Šต ์ž…๋ ฅ์œผ๋กœ ๋‚จ์Šต๋‹ˆ๋‹ค.

final_ensemble_scanner๋Š” daily_recommendations_v2.csv๋ฅผ ์ฝ์–ด KOSPI_ML ์ „๋žต์˜ ์ถ”์ฒœ DB row๋กœ ์ ์žฌํ•ฉ๋‹ˆ๋‹ค. CSV schema์™€ diagnostics๋Š” active model promotion smoke์—์„œ ๊ฒ€์ฆ๋˜๋ฉฐ, CSV๊ฐ€ ์—†์œผ๋ฉด ์‹ค์‹œ๊ฐ„ ์Šค์บ๋‹ ๊ฒฐ๊ณผ๋งŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ๋กœ๋Š” ์ถ”์ฒœ ํ›„๋ณด๋ฅผ DB์— ์˜ฌ๋ฆฌ๋Š” ๋‹จ๊ณ„์ด์ง€, ์Šค์œ™ dry-run ํ•ด์ œ๋‚˜ full-live ์ „ํ™˜ ๊ถŒํ•œ์ด ์•„๋‹™๋‹ˆ๋‹ค.

์Šค์บ˜ํ•‘ ์Šค์บ๋„ˆ๋Š” ์žฅ์ค‘ 09:0515:00 ์‚ฌ์ด์— 23๋ถ„ ์ฃผ๊ธฐ๋กœ ๋•๋‹ˆ๋‹ค. ka10028 ์‹œ๊ฐ€๋Œ€๋น„ ์ƒ์œ„, Supernova ์ˆ˜๊ธ‰ ๊ธ‰์ฆ, ka10032 ๊ฑฐ๋ž˜๋Œ€๊ธˆ ์ƒ์œ„, ka10054 VI ๋ฐœ๋™ ์ข…๋ชฉ์„ ํ•ฉ์ณ candidate pool์„ ๋งŒ๋“ค๊ณ , ์‹ ์„ ๋„ ์ ์ˆ˜์™€ source ์šฐ์„ ์ˆœ์œ„๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค. ์œ ํšจ ์ข…๋ชฉ๋งŒ RecommendationHistory์— SCALPING/WATCHING์œผ๋กœ upsertํ•˜๊ณ , COMMAND_WS_REG ์ด๋ฒคํŠธ๋กœ ์‹ค์‹œ๊ฐ„ ์›น์†Œ์ผ“ ๊ฐ์‹œ ๋“ฑ๋ก์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.

๋‘ ๊ฒฝ๋กœ ๋ชจ๋‘ ์‹ค์ œ ์ฃผ๋ฌธ ์•ˆ์ „์žฅ์น˜๋ฅผ ์šฐํšŒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์Šค์œ™ CSV๋Š” ์ถ”์ฒœ ํ›„๋ณด์ด๋ฉฐ, ์Šค์บ˜ํ•‘ WATCHING row๋Š” ๊ฐ์‹œ ํ›„๋ณด์ž…๋‹ˆ๋‹ค. ์ดํ›„ AI ํŒ๋‹จ, stale quote, ๋ธŒ๋กœ์ปค ์ œ์ถœ ๊ฐ€๋“œ, ๊ณ„์ขŒ/์ˆ˜๋Ÿ‰/์ฟจ๋‹ค์šด, hard/protect/emergency safety๊ฐ€ ๋ณ„๋„๋กœ ํ†ต๊ณผํ•ด์•ผ ์ฃผ๋ฌธ ๋‹จ๊ณ„๋กœ ๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์ž๋™ํ™”

์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์ž๋™ํ™”๋Š” ์•„๋ž˜ ํ๋ฆ„์œผ๋กœ ์›€์ง์ž…๋‹ˆ๋‹ค. ํ•ต์‹ฌ์€ โ€œ์žฅ์ค‘์—๋Š” ๋„“๊ฒŒ ๊ด€์ฐฐํ•˜๊ณ , ์žฅํ›„์—๋Š” ์ˆซ์ž๋กœ ๋ถ„๋ฅ˜ํ•˜๊ณ , ๋‹ค์Œ ์žฅ์ „์—๋Š” ๊ฒ€์ฆ๋œ ์ž‘์€ ๋ณ€๊ฒฝ๋งŒ ๋ฐ˜์˜ํ•œ๋‹คโ€์ž…๋‹ˆ๋‹ค.

์žฅ์ค‘ ํ›„๋ณด ์ˆ˜์ง‘
  -> sim/probe ๊ฐ€์ƒ lifecycle ์ƒ์„ฑ
  -> ์žฅํ›„ ๊ฒฐ๊ณผ ๋ผ๋ฒจ๋ง๊ณผ EV ๊ณ„์‚ฐ
  -> pattern lab source-only ๋ถ„์„
  -> LDM bucket attribution
  -> lifecycle bucket discovery
  -> threshold cycle / runtime approval summary / code improvement workorder
  -> ๋‹ค์Œ PREOPEN sim policy ๋˜๋Š” ์ œํ•œ๋œ runtime env ํ›„๋ณด
  -> ๋‹ค์Œ ์žฅํ›„ post-apply attribution์œผ๋กœ ๋‹ค์‹œ ๊ฒ€์ฆ
๋‹จ๊ณ„ ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ์‚ฐ์ถœ๋ฌผ/๋‹ค์Œ ์—ฐ๊ฒฐ
์žฅ์ค‘ ํ›„๋ณด ์ˆ˜์ง‘ ์‹ค์ œ ์ฃผ๋ฌธ ์—ฌ๋ถ€์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ โ€œ์‚ด ์ˆ˜๋„ ์žˆ์—ˆ๋˜ ํ›„๋ณดโ€๋ฅผ ๋„“๊ฒŒ ๋ชจ์๋‹ˆ๋‹ค. pipeline event, threshold compact event
sim/probe lifecycle ์ฃผ๋ฌธํ•˜์ง€ ์•Š์€ ํ›„๋ณด๋„ ๊ฐ€์ƒ์œผ๋กœ ์ง„์ž…, ๋ณด์œ , ์ถ”๊ฐ€๋งค์ˆ˜, ์ฒญ์‚ฐ ํ๋ฆ„์„ ํƒœ์›๋‹ˆ๋‹ค. sim position, probe row, swing dry-run row
์žฅํ›„ ๋ผ๋ฒจ๋ง๊ณผ EV ๊ณ„์‚ฐ ์‹ค์ œ๋กœ ์ดํ›„ ๊ฐ€๊ฒฉ์ด ์–ด๋–ป๊ฒŒ ์›€์ง์˜€๋Š”์ง€ ๋ณด๊ณ  ๊ธฐ๋Œ€๊ฐ’๊ณผ ๋†“์นœ ๊ธฐํšŒ๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. daily EV, post-sell evaluation, swing label/report
pattern lab ์Šค์บ˜ํ•‘/์Šค์œ™ fact table๊ณผ EV ๊ฒฐ๊ณผ๋ฅผ ํŒจํ„ด ๋‹จ์œ„๋กœ ๋‹ค์‹œ ์ฝ์–ด AI review payload, backlog, source-quality warning์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. analysis/*_pattern_lab/outputs/, source-only warning, candidate/workorder input
LDM bucket attribution ๋น„์Šทํ•œ ์กฐ๊ฑด์„ bucket์œผ๋กœ ๋ฌถ์–ด ์–ด๋–ค ์กฐ๊ฑด ์กฐํ•ฉ์ด ์ข‹์•˜๋Š”์ง€ ๋ด…๋‹ˆ๋‹ค. entry/submit/holding/scale-in/exit bucket
bucket discovery bucket์„ ๊ณ„์† ๊ด€์ฐฐ, sim-auto, pre-final ํ›„๋ณด, code gap์œผ๋กœ ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค. sim_auto_approved, live_auto_apply_ready, runtime_blocked_contract_gap
threshold cycle ์žฅํ›„ ๋ฆฌํฌํŠธ์™€ ๊ฒ€์ฆ์„ ๋ชจ์•„ ๋‹ค์Œ ์žฅ์ „ ์ ์šฉ ํ›„๋ณด๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. apply plan, runtime env, runtime approval summary
code improvement ๋ฐ์ดํ„ฐ๋Š” ์ข‹์€๋ฐ hook, source, schema, parser๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด ๊ตฌํ˜„ ์ง€์‹œ์„œ๋กœ ๋„˜๊น๋‹ˆ๋‹ค. docs/code-improvement-workorders/
๋‹ค์Œ ์žฅํ›„ ์žฌ๊ฒ€์ฆ ์ ์šฉ๋˜์—ˆ๊ฑฐ๋‚˜ ์ ์šฉ๋˜์ง€ ์•Š์€ ํ›„๋ณด์˜ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. post-apply attribution, ๋‹ค์Œ bucket ๊ฐฑ์‹ 

์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์ž๋™ํ™”์˜ ๋ชฉ์ ์€ โ€œ์‹ค์ฃผ๋ฌธ์„ ๋Š˜๋ฆฌ๊ธฐ ์ „์— ๋” ๋งŽ์€ ํ›„๋ณด๋ฅผ ๊ฐ€์ƒ์œผ๋กœ ๋”ฐ๋ผ๊ฐ€ ๋ณด๋Š” ๊ฒƒโ€์ž…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ฃผ๋ฌธํ•˜์ง€ ์•Š์€ ํ›„๋ณด๋„ ์žฅ์ค‘์—๋Š” ๊ฐ€์ƒ ์ง„์ž…, ๋ณด์œ , ์ถ”๊ฐ€๋งค์ˆ˜, ์ฒญ์‚ฐ ํ๋ฆ„์„ ๋งŒ๋“ค๊ณ , ์žฅํ›„์— ๊ฒฐ๊ณผ๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์‹ค๊ณ„์ขŒ๋ฅผ ํ‚ค์šฐ์ง€ ์•Š๊ณ ๋„ ์–ด๋–ค ์กฐ๊ฑด์ด ์ข‹์€์ง€, ์–ด๋–ค ์กฐ๊ฑด์ด ๋ฐ˜๋ณต์ ์œผ๋กœ ๋‚˜์œ์ง€ ๋” ๋„“๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์Šค์บ˜ํ•‘ ์ชฝ์—์„œ๋Š” BUY ํ›„๋ณด๋ฅผ ์‹ค์ œ ์ฃผ๋ฌธ ์—ฌ๋ถ€์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ˆ˜๊ธˆ ๋ถ€์กฑ, 1์ฃผ cap, ํ˜„์žฌ selected family ์—ฌ๋ถ€ ๋•Œ๋ฌธ์— ํ›„๋ณด๋ฅผ ๋ฒ„๋ฆฌ์ง€ ์•Š๊ณ , actual_order_submitted=false provenance๋ฅผ ๋ถ™์—ฌ sim/probe๋กœ ๋‚จ๊น๋‹ˆ๋‹ค. sim position์€ ์ดํ›„ post-sell evaluation๊ณผ daily EV์— ์—ฐ๊ฒฐ๋˜์–ด, ๋†“์นœ ์ƒ์Šน์ด๋‚˜ ํ”ผํ•œ ์†์‹ค์„ ๋”ฐ๋กœ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

์Šค์œ™ ์ชฝ์—์„œ๋Š” safe pool ํ›„๋ณด๋ฅผ ์—ฌ๋Ÿฌ arm์œผ๋กœ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ discovery sim์€ ํ›„๋ณด๋งˆ๋‹ค ์ง„์ž… ๋ฐฉ์‹, ๋ณด์œ  ๊ธฐ๊ฐ„, ์ฒญ์‚ฐ ์ •์ฑ… ๊ฐ™์€ ์กฐํ•ฉ์„ ๋‚˜๋ˆ„๊ณ , label builder๊ฐ€ 1์ผ/5์ผ/10์ผ ๋ฐ policy exit ๊ฒฐ๊ณผ๋ฅผ ์ฑ„์›๋‹ˆ๋‹ค. bottom rebound source ํ›„๋ณด๋Š” ๋ŒํŒŒ ํ™•์ธ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ฐฉ์‹์ด ์•„๋‹ˆ๋ผ ๋‹ค์Œ๋‚  ์„ ์ œ ์ง„์ž… ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

Pattern lab์€ ์ด ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์ž๋™ํ™”์˜ ์žฅํ›„ ํ•ด์„ ๊ณ„์ธต์ž…๋‹ˆ๋‹ค. analysis/gemini_scalping_pattern_lab, analysis/claude_scalping_pattern_lab, analysis/deepseek_swing_pattern_lab๊ฐ€ fact table๊ณผ EV ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ๋ฌถ์–ด ์†์‹ค/์ˆ˜์ต ํŒจํ„ด, opportunity cost, source-quality gap, AI review payload๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ์‚ฐ์ถœ๋ฌผ์€ code_improvement_order, auto_family_candidate, workorder ์ž…๋ ฅ์œผ๋กœ๋งŒ ์“ฐ๋ฉฐ, ๋‹จ๋…์œผ๋กœ ์‹ค์ฃผ๋ฌธ, threshold apply, provider ๋ณ€๊ฒฝ, bot restart๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

producer_gap_discovery๋Š” pattern lab๊ณผ ๋ณ„๋„๋กœ โ€œ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ๋” ์ž˜ ๋ณด๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ producer๊ฐ€ ๋ฌด์—‡์ธ์ง€โ€๋ฅผ ๋ฐœ๊ตดํ•ฉ๋‹ˆ๋‹ค. ํ›„๋ณด ์ƒ์„ฑ์€ ๊ฒฐ์ •๋ก ์œผ๋กœ ์‹œ์ž‘ํ•˜๊ณ , AI review๋Š” gap type, priority, implementation requirements, acceptance tests๋ฅผ ๋ณด๊ฐ•ํ•ฉ๋‹ˆ๋‹ค. AI unavailable, parse reject, audit fail์€ fail-closed๋กœ ์ฒ˜๋ฆฌ๋˜๋ฉฐ, high-priority ํ›„๋ณด๋Š” workorder selection limit๊ณผ ๋ฌด๊ด€ํ•˜๊ฒŒ code improvement workorder์— ๋‚จ์Šต๋‹ˆ๋‹ค. Hook ๊ตฌํ˜„ ํ›„๋ณด๋Š” stage_hook_workorder_discovery๊ฐ€ ๋ณ„๋„๋กœ ํ‘œ๋ฉดํ™”ํ•˜๊ณ , ๊ตฌํ˜„ ์™„๋ฃŒ ์—ฌ๋ถ€๋Š” stage_hook_runtime_scaffold๊ฐ€ runtime_effect=false, allowed_runtime_apply=false provenance๋กœ ๋‚จ๊น๋‹ˆ๋‹ค. scaffold๊ฐ€ ๋ถ™์€ workorder๋Š” ๋‹ค์Œ ์žฌ์ƒ์„ฑ ๋•Œ ๊ธฐ์กด ๊ตฌํ˜„, ์‹ ๊ทœ ๊ตฌํ˜„, ๋ณด๋ฅ˜ ํ•ญ๋ชฉ์ด ๋ถ„๋ฆฌ๋˜๋„๋ก attach_existing_family ๋˜๋Š” implement_now lineage๋กœ ์žฌํŒ์ •๋ฉ๋‹ˆ๋‹ค.

์ž๋™ํ™”๋Š” sim ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์Œ ์„ธ ๊ฐ€์ง€๋กœ ๋‚˜๋ˆ  ์†Œ๋น„ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ ์˜๋ฏธ ๋‹ค์Œ ์ฒ˜๋ฆฌ
์ข‹์€ sim bucket ๊ธฐ๋Œ€๊ฐ’์ด ๊ฐœ์„ ๋˜๊ณ  source-quality๊ฐ€ ํ†ต๊ณผํ•œ ํ›„๋ณด ๋‹ค์Œ PREOPEN sim policy ๋˜๋Š” pre-final ํ›„๋ณด๋กœ ์ „๋‹ฌ
๋‚˜์œ sim bucket ์†์‹ค์ด๋‚˜ missed upside๊ฐ€ ๋ฐ˜๋ณต๋˜๋Š” ์กฐ๊ฑด bucket tighten ํ›„๋ณด๋‚˜ code-improvement workorder๋กœ ์ „๋‹ฌ
๋ถˆ์™„์ „ํ•œ sim bucket ํ‘œ๋ณธ ๋ถ€์กฑ, source ๋ˆ„๋ฝ, hook ๋ฏธ๊ตฌํ˜„ keep collecting, source-quality blocker, contract gap์œผ๋กœ ๋ณด๋ฅ˜

sim-auto ์Šน๊ฒฉ์€ ์‚ฌ๋žŒ์ด ๋งค๋ฒˆ ์Šน์ธํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์ด๊ฒƒ์€ ์–ด๋””๊นŒ์ง€๋‚˜ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์ •์ฑ… ์Šน๊ฒฉ์ž…๋‹ˆ๋‹ค. ์‹ค์ฃผ๋ฌธ, cap ํ•ด์ œ, provider ๋ณ€๊ฒฝ, bot restart, hard safety ์™„ํ™”๋กœ ์ง์ ‘ ์ด์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. bounded live/pre-final ํ›„๋ณด๋„ AI Tier2 ๊ฒ€์ฆ๊ณผ hard gate๋ฅผ ํ†ต๊ณผํ•ด์•ผ ํ•˜๋ฉฐ, ์ตœ์ข… full-live ์ „ํ™˜์€ ์‚ฌ์šฉ์ž ์Šน์ธ ๊ฒฝ๊ณ„๋กœ ๋‚จ์Šต๋‹ˆ๋‹ค.

์ฒ˜์Œ ์‹คํ–‰ํ•  ๋•Œ

Python ์ž‘์—…์€ ํ”„๋กœ์ ํŠธ .venv๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

์šด์˜ ์„ค์ •์€ ์ƒ˜ํ”Œ์„ ๋ณต์‚ฌํ•œ ๋’ค ์„œ๋ฒ„ ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์ฑ„์›๋‹ˆ๋‹ค.

cp data/config_sample.json data/config_prod.json

์ตœ์†Œํ•œ ํ‚ค์›€ API ์ •๋ณด, DB ์ ‘์† ์ •๋ณด, OpenAI API key๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Telegram, GitHub Project, Google Calendar ์—ฐ๋™์€ ์„ ํƒ์ž…๋‹ˆ๋‹ค. ๋ฏผ๊ฐ์ •๋ณด๋Š” git์— ์ปค๋ฐ‹ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์Šค์บ˜ํ•‘ live AI route๋Š” OpenAI๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‘ก๋‹ˆ๋‹ค.

export OPENAI_API_KEY="..."
export KORSTOCKSCAN_SCALPING_AI_ROUTE=openai
export KORSTOCKSCAN_OPENAI_TRANSPORT_MODE=responses_ws
export KORSTOCKSCAN_OPENAI_RESPONSES_WS_ENABLED=true

๊ธฐ๋ณธ ๊ฒ€์ฆ์€ ์•„๋ž˜ ๋ช…๋ น์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

PYTHONPATH=. .venv/bin/python -m pytest -q
PYTHONPATH=. .venv/bin/python -m src.engine.error_detector --mode full --dry-run

์šด์˜ ํ๋ฆ„

์žฅ์ „์—๋Š” ์ „์ผ ๋ฆฌํฌํŠธ์™€ ๊ฒ€์ฆ ๊ฒฐ๊ณผ๋ฅผ ์ฝ์–ด ๋‹น์ผ runtime env๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

THRESHOLD_CYCLE_APPLY_MODE=auto_bounded_live \
THRESHOLD_CYCLE_AUTO_APPLY=true \
THRESHOLD_CYCLE_AUTO_APPLY_REQUIRE_AI=true \
./deploy/run_threshold_cycle_preopen.sh "$(TZ=Asia/Seoul date +%F)"

๋ด‡์€ src/run_bot.sh๋ฅผ ํ†ตํ•ด ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. wrapper๋Š” ๋‹น์ผ runtime env๋ฅผ sourceํ•˜๊ณ , ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์žฅ์ „ apply ์ƒ์„ฑ์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

cd src
bash run_bot.sh

์žฅํ›„์—๋Š” threshold cycle, ์Šค์œ™ dry-run, panic report, lifecycle matrix, workorder, EV attribution ๊ฐ™์€ ์‚ฐ์ถœ๋ฌผ์ด ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค. ์šด์˜ cron๊ณผ ์ƒ์„ธ ์‹œ๊ฐ„ํ‘œ๋Š” Time-Based Operations Runbook์„ ๊ธฐ์ค€์œผ๋กœ ๋ด…๋‹ˆ๋‹ค.

๋ฆฌํฌํŠธ ์ฝ๋Š” ๋ฒ•

JSON/JSONL์ด canonical data์ž…๋‹ˆ๋‹ค. ์‚ฌ๋žŒ์ด ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•ด์•ผ ํ•˜๋Š” ๊ฒฐ๊ณผ๋งŒ Markdown์œผ๋กœ ๊ฐ™์ด ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ๋กœ ์˜๋ฏธ
data/pipeline_events/ ์žฅ์ค‘ raw event stream
data/threshold_cycle/threshold_events_YYYY-MM-DD.jsonl ์ž๋™ํ™” ์ฒด์ธ์ด ์ฝ๋Š” compact stream
data/report/threshold_cycle_ev/ daily EV์™€ ์ ์šฉ/๋ฏธ์ ์šฉ ๊ท€์†
data/report/runtime_approval_summary/ ์ž๋™/์ˆ˜๋™ ์Šน์ธ ๊ฒฝ๊ณ„ ์š”์•ฝ
data/report/lifecycle_decision_matrix/ lifecycle bucket๊ณผ ํ›„๋ณด ์ •์ฑ…
data/report/swing_* ์Šค์œ™ dry-run, audit, approval ๊ด€๋ จ ๋ฆฌํฌํŠธ
data/report/error_detection/ ์šด์˜ ๊ฐ์‹œ ๊ฒฐ๊ณผ

์ „์ฒด report inventory๋Š” data/report/README.md๋ฅผ ์ฐธ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์„œ์™€ ๋™๊ธฐํ™”

Plan Rebase, runbook, README, prompt, AGENTS ๊ฐ™์€ ๊ธฐ์ค€ ๋ฌธ์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ์š”์ฒญํ–ˆ์„ ๋•Œ๋งŒ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์„œ ๋ณ€๊ฒฝ ํ›„ checklist parser ๊ฒ€์ฆ์€ AI๊ฐ€ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

PYTHONPATH=. .venv/bin/python -m src.engine.sync_docs_backlog_to_project --print-backlog-only --limit 500

GitHub Project์™€ Google Calendar ๋™๊ธฐํ™”๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์•„๋ž˜ ํ‘œ์ค€ ๋ช…๋ น์œผ๋กœ ์ง์ ‘ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

PYTHONPATH=. .venv/bin/python -m src.engine.sync_docs_backlog_to_project && PYTHONPATH=. .venv/bin/python -m src.engine.sync_github_project_calendar

ํ•ต์‹ฌ ๋ฌธ์„œ

๋ฌธ์„œ ์—ญํ• 
Plan Rebase ํ˜„์žฌ ํŠœ๋‹ ์›์น™, active/open ์ƒํƒœ, ๊ธˆ์ง€์„ 
Time-Based Operations Runbook ์‹œ๊ฐ„๋Œ€๋ณ„ ์šด์˜ ์ ˆ์ฐจ์™€ ํ™•์ธ ๊ธฐ์ค€
Report Automation Traceability ์ž๋™ํ™” ์‚ฐ์ถœ๋ฌผ๊ณผ ์†Œ๋น„ ๊ณ„์•ฝ
Threshold Cycle README ์žฅ์ „ apply plan๊ณผ runtime env ์šด์˜ ๋ฐฉ์‹
Data Report README ์ •๊ธฐ report ๋ชฉ๋ก
Stage2 Checklist ๋‚ ์งœ๋ณ„ ์‹คํ–‰ ํ•ญ๋ชฉ๊ณผ Project/Calendar source

์ฃผ์˜

์ด ํ”„๋กœ์ ํŠธ๋Š” ๊ฐœ์ธ ์ž๋™๋งค๋งค์™€ ๋ฆฌ์„œ์น˜ ์šด์˜ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. README์™€ ๋ฆฌํฌํŠธ๋Š” ํˆฌ์ž ์กฐ์–ธ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์‹ค๊ณ„์ขŒ ์ฃผ๋ฌธ, API key, ๊ณ„์ขŒ ๊ถŒํ•œ, ์ฃผ๋ฌธ๊ฐ€๋Šฅ๊ธˆ์•ก, ์„ธ๊ธˆ/์ˆ˜์ˆ˜๋ฃŒ, ๊ฑฐ๋ž˜์†Œ/๋ธŒ๋กœ์ปค ์žฅ์• ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๊ด€๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ฃผ๋ฌธ ๋ฒ”์œ„๊ฐ€ ๋„“์–ด์ง€๋Š” ๋ณ€๊ฒฝ์€ ํ•ญ์ƒ approval boundary, runtime owner, rollback guard, source-quality gate๋ฅผ ํ™•์ธํ•œ ๋’ค ๋‹ค๋ฃน๋‹ˆ๋‹ค.

About

๐Ÿš€ KORStockScan - AI ๊ธฐ๋ฐ˜ ์ฝ”์Šคํ”ผ ํ€€ํŠธ ์ž๋™๋งค๋งค ์Šค๋‚˜์ดํผ KORStockScan์€ ํ‚ค์›€์ฆ๊ถŒ REST API+์™€ ๋จธ์‹ ๋Ÿฌ๋‹(Stacking Ensemble)์„ ํ™œ์šฉํ•˜์—ฌ ์ฝ”์Šคํ”ผ(KOSPI) ์šฐ๋Ÿ‰์ฃผ๋ฅผ ์Šค์บ๋‹ํ•˜๊ณ , ์‹ค์‹œ๊ฐ„ ์›น์†Œ์ผ“์„ ํ†ตํ•ด ์ตœ์ ์˜ ํƒ€์ ์„ ์žก์•„๋‚ด์–ด ์™„์ „ ์ž๋™๋งค๋งค๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ํ€€ํŠธ ํŠธ๋ ˆ์ด๋”ฉ ๋ด‡์ž…๋‹ˆ๋‹ค. ๋‹จ์ˆœํ•œ ๊ธฐ์ˆ ์  ์ง€ํ‘œ๋ฅผ ๋„˜์–ด **'์Šค๋งˆํŠธ ๋จธ๋‹ˆ ๊ฐ€์†๋„(์™ธ์ธ/๊ธฐ๊ด€ ๋งค์ง‘ ์†๋„)'**์™€ **'์‹œ์žฅ ์ƒํƒœ(Regime) ํŒ๋…'**์„ ํ†ตํ•ด ํญ๋ฝ์žฅ์—์„œ๋„ ์‚ด์•„๋‚จ๋Š” ๊ฐ•๋ ฅํ•œ ์ƒ์กด๋ ฅ์„ ๋ชฉํ‘œ๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors