Topics Index — 진입점¶
Today: 2026-06-28 (Sun 11:14) | Last Session: S357 (정석+v3 코드 자동화 가능성 전수 분류 + D1 검증 인프라 구현. (1)자동화 분류(S356 1순위, PM방향=코드자동화 비중 최대화→LLM축소): rubric 3축[C계산식·D데이터·O출력]→등급 A코드가능/B부분/C LLM필수. v3 39엔진=사실상 전부 A(37/B2/C0, LLM의존은 재료텍스트→더미 #7·#56만). 정석153개 단기선정관련만 분류(채권·옵션평가·대체투자·거시·MVO·DCF 제외, 리스크/계량은 v3중복), 신규 A6/B2/C1군(차트패턴). 자동화비중≈90%+(코드엔진46개). 진짜누락 보강결정: Market Breadth✅·RRG섹터로테이션✅·IR경량✅·Brinson은 retro만. LLM잔여=재료더미·가격반영도정당화·차트패턴·최종상충조정. 산출 S357_automation_classification.md. (2)D1 검증인프라(S356 2순위): PM확정5건[pt/sl=±2σ 채점자(실매매손절과 별개·v3렌즈가 산정), 모집단=매일이동 D20거래대금200위, IC임계0.03, L5결합방식=검증선행후결정(조합·상황조건부 가능), 코드위치 scripts/discover/research/]. triple_barrier.py(419종×1220일 라벨, 1/5/20일 수직장벽×±2σ수평, touch_return=R채점, universe_top200) + scorer.py(IC cross-section Spearman+t값, 분위수단조성, top승률/평균R, DSR#60, 블록부트스트랩SPA#61 vs naive, 워크포워드21-24/25-26, 통과=IC>0.03&DSR>0.95&SPA<0.05&OOS유지). 라벨러 exit0(5일=균형 +81k/-70k/0 89k, universe정확200). 채점기 자가검증=naive거래대금랭크 IC≈0/SPA_p=1.0(자기비교)/PASS=False=게이트정확탈락. 산출 data/discover_research/labels/+demo_naive_scorecard.csv. work_log 2026-06-28_S357_automation_classification_d1_infra.md. 🔴다음: D2 첫엔진검증(L1레짐 GARCH#5·HMM#1을 score_engine 실측). (이전) S356 (discover 종목선정에 수학적 정량 렌즈 도입 — 조사·설계·검증계획 수립(구현은 다음 세션). 발단=discover 2시간+ 단축이 본질로 확장: discover 목적="내일 사자마자 상승확률 높은 종목을 확률적으로(스마트머니 시각)", PM 부족점 4=①매물구조(상단저항/하단지지를 확률로, 현 overhang 스칼라 빈약) ②손익비(진입/손절/목표=LLM이 말로 지어냄→수학으로) ③결합(매물 의미가 시장자금·재료·반영도와 분절) ④레짐·변동성. 3차 발산(멀티에이전트): v1 87개(틱·호가 다수→데이터제약 탈락)→v2 64개(대중적이라 PM반려)→v3 70개 채택(확률통계+프랩 실전: 마르코프레짐스위칭·HMM·칼만·BOCPD·EVT·분위수회귀·통계차익s-score/Johansen·전이엔트로피·Hawkes·베이지안결합·캘리브레이션, T1학술 54개). 키움API 1차문서 실측: 호가/체결강도/틱 다 제공하나 틱=직전1일·호가=스냅샷→백테스트 구조적 불가(후보 매일변동+rate limit), 체결강도일별(ka10047)·일봉5년은 검증가능. v3 5층 아키텍처(L1레짐→L2도달확률→L3손익비분위수→L4수급·점과정→L5베이지안결합·캘리브레이션→P(win)+기대R). 검증계획: Triple-Barrier 라벨 1·5·20일 3종(각 기법 최고엣지 기준)+IC/DSR/부트스트랩SPA/워크포워드, 일자분할 D1검증인프라(선행)→D2~D8. +금융 자격증 정석 수집(금융투자분석사·투자자산운용사·CFA·CMT·FRM·CFP/CAIA/CQF → 정석 153개 9분류, S356_finance_cert_methods.md). discover_gap: 정석∩v3 겹침=리스크/계량(GARCH·EVT·VaR·코퓰러·CAPM), v3고유=레짐스위칭·통계차익·한국수급정량, 진짜누락=정보비율IR·Market Breadth·RRG섹터로테이션(②③은 시장자금국면 직결 보강가치). PM 핵심 통찰: 정석=인간이 기본으로 보는 체크리스트인데 우리가 페르소나 아닌 원자화(데이터+질문+기술방식+성공조건)로 하니 놓치면 열위 → 수학/코드 자동화 비중 최대화→LLM 처리 축소가 비대칭 우위(전종목·매일·편향0). +v3 중복 정리(발산 6진입점 블라인드라 70개 중 31중복 → 고유 기법 39개, 기법×적용 2층. "같은수학·다른데이터"는 인스턴스로 살림. 구현할 엔진=39개. S356_quant_lens_v3_dedup.md). 산출 docs/discover_research/S356_*.md/json 9종. work_log 2026-06-27_S356_discover_quant_lens_research.md. 🔴다음: 정석+v3(39 엔진)를 코드 자동화 가능성으로 전수 분류(단기선정 관련만) → 그다음 D1 검증인프라 구현. (이전) S355 (리포트 중복 제거 + 에이전트 설정 3요소 표준 정립 + morning 논리점프 보완(S354 처방 구현). (1)evening 중복 7건 제거: §2.5↔§1 수치 이중게재(triaxis 인용표 금지)·자금회전표 중복(§1 단독owner)·§9 재료 temporary 압축·§3 정책 "변동없음" 60행→진전+14일시한만·§6 인물 0건시 1줄·§7 geopolitics 한국무관 필터·§8 증권사(본문없음 확인)제거. (2)post_market 3건: 현물수급·정반합 이중→PM-0b 단일화(PM-0=catalyst 서사만)·무관데이터 제거(theme_rs/theme_leaders/theme_tracking=stdout 로그노이즈였음·unit2 global_assets)·테마 강약 스팟→변화누적 국면분류(당일vs시장=게이트강등, 5d/20d·accel·거래대금 국면5분류+다음날 검증신호). (3)★에이전트 설정 작성 표준 정립(PM 4회 반려로 확정): 모든 규칙=①서술방식+예시 ②성공조건 ③미달시해결. "하는것/안하는것" 나열·"~없다/~금지" 부정형 금지. (4)morning 논리점프 보완(S354 처방): 신규 build_flow_carry.py(dashboard+sector_series→테마별 자금서사 carry: IN_누적/소외/며칠째)→signal-synthesizer 주입 + 인과채널 검증규칙(채널 "A→B섹터" 주장시 carry로 작동여부 정량대조, 미작동시 confidence하향). 6/25 S1 역검증 성공(자동차=미작동소외/반도체=작동→"전수출주 우호"점프 차단). PM교정: "에이전트에 검증 떠넘기지말고 runner가 정확·제한적 데이터 조립주입+정해진 규칙판정". work_log 2026-06-27_S355_report_dedup_agent_config_standard.md. 🔴잔여: evening/post_market/morning 평일 라이브 검증. (이전) S353 (복기 2트랙 무우회 재검증 + discover "쓰기로 한 데이터 강제·forward 보완". (1)리포트 복기(/rw) 4단계 파이프라인 무우회 재실행+baseline 비교(결론 수렴, rw.md stale 정합). (2)discover 복기(/rd) 6/15주 실행 → 복기 오류 발견·정정(discover-scorer가 "f6 점수 미반영=미사용" 단정했으나 selector는 f6를 관점B로 실제 사용 — score만 보고 selector 출력 안 읽은 오류). (3)PM 핵심: "쓰기로 한 데이터가 안 쓰임=결함, 의무문장 아니라 코드+데이터로 강제" → must_address 강제 메커니즘(build가 게이트통과 종목에 검증토큰 부착→step이 selected 출력 인용검증→미인용 재호출/차단, /rw verify_token 패턴 이식). (4)PM "많이 올랐다 아니라 향후 컨센서스로 정당화 가능성" → FnGuide forward 파서 복구(re.match→search·접두매칭, (E)컬럼 2026/12·2027/12 복구)→f6 연결(unjustified→stretched 완화, 축3 분모 forward EPS CAGR)→selector 노출(D6 profile+must_address). (5)D5·D4 profile 갭 발견·노출(lifecycle_stage는 PM 미설계 placeholder라 제외). (6)실 D6 재생성 통합검증 → 통합버그1 발견·수정(_call_synthesizer synth_in NameError). PM원칙: "예측 빗나감=괜찮다(시장반응·이벤트). 활용가능 데이터는 꼼꼼히". work_log 2026-06-21_남은-잔여-pm-결정-사항-score-compose-5축에-f6f3-축-신설-mu.md. 🔴잔여: D1~D7 풀 e2e 미실행. (이전) S351 (복기 시스템 2트랙 + discover 종목선정 파이프라인 근본 재설계. (1)리포트 복기 cycle-scorer(시장·섹터·테마, 신호교차 채점+관점위원회 처방) 본체 완성 + 3주 교차검증 → evening 렌즈 교정 2건. (2)discover 복기 discover-scorer 신설(종목·선반영·forward, 확률7인자 조합추론) → "선정종목이 후보 중 패자" 발견 → 종목선정 파이프라인 4결함 진단·수정: ①selector=산식 rank1 거수기→해석으로 재설계(domain_reasoning+4축profile 주입, "데이터 읽는 법" 명세, rank=1차줄세움 강등) ②상쇄(rank_sum 더하기로 강축이 약축 묻음)→build_d7_input이 축별 강약 profile 보존 ③ea 수집갭(ea_panel 196종 고정)→corp_code_map 197→240·DART 재수집 720k행·ea_panel 196→239·universe커버 57→95%, README_dart_refresh 운영가이드 ④우선주 도피→step_universe 우선주 제외필터. PM 핵심 가르침: "한 지표가 다른 지표 상쇄/각 데이터 읽는 법 명세/A2점B9점 평균5.5로 뭉갬/우선주 제외". work_log 2026-06-14_S351_retro_system_build_lens_fix.md §8~12. 🔴잔여: end-to-end 라이브 재검증(우선주제외+profile 적용 파이프라인으로 6/08·09·11 재실행→진종목 회피 확인). (이전) S350 (주간 복기 시스템 설계 + 복기 26일 실증 → morning 렌즈 결함 교정 + 테마-종목 연결 신설. ①주간 복기 시스템 설계(topic_weekly_retrospective_system.md): 렌즈카드+인지결함진단④→렌즈엔지니어링⑤(학습주입/관점추가/위원회신설)+사전가용성3분류. ②복기를 실제 4/29~6/13 26일 돌림 → "결론이 매번 under macro_constraint로 닫힘" 발견. 내 가설("변동성=매크로붕괴")이 26일 데이터에 반증(calm 16일중 macro 11=69%, stress는 분산) = 복기의 본질(AI가설 반증) 실증. ③근원=관찰 서브에이전트가 자기렌즈 넘어 매크로로 시장결론 닫는 프롬프트 구조 → morning 4에이전트 교정(sector/global 단일질문화·매크로주입제거, material 테마까지만, synthesizer 종합책임명시). 6/14 라이브검증: under macro_constraint 소멸, 3축 동등종합 ✅. ④복기중 재료→종목 단절 발견 → 테마-종목 연결 에이전트 신설(PHASE 1-5): runner가 전날 discover 후보34종+자금 조립, 에이전트는 표만으로 매칭(자금유입으로 핵심연결/이탈주의 분류, 단절신호, blind spot). 6/14 검증 ✅. work_log docs/work_logs/2026-06-14_S350_retrospective_morning_lens_fix.md)
(이전) S349 (KRX 401 진단 종결 + 키움 기본정보 래퍼 + FA-M8 밸류 하네스 완수. ①KRX MCP 401=개별종목 콘텐츠(stk_bydd_trd) 미신청(지수·파생 9종만 승인). 3중교차(MCP시세401/DART corp_code 200/래퍼우회 raw 401)+PM스크린샷2장 확정. 추가신청 불필요 — 키움 ka10001이 종목명/시총/상장주식수/거래량/PER·PBR·ROE/외국인비율 전부 제공(삼성전자 시총 검산 0.01%일치). KRX MCP 시세조회 폐기, DART MCP 유효. ②키움 get_stock_basic_info 신규(raw→정제dict, mac=억원/flo_stk=천주 실측확정). ③하네스 엔지니어링: FA-M8 "도구 손으로 엮다 안되면 멈춤" 근본해결 — fetch_valuation(code) 단일진입점에 키움+DART직접호출+폴백체인(fs_div CFS→OFS × 연도 최신→직전 4회) 내장. corp_code_all 3,967종 전수맵. 005930/000660/247540/950130 end-to-end ok, 091990 ok:false 명시사유(추측X). valuation-overheat 에이전트 SK네트웍스 실호출 overheated. work_log docs/work_logs/2026-06-09_S349_krx_diag_valuation_harness.md)
(이전) S348 (운영 루틴 전구간 + 데이터 인프라 REST 전환 + 밸류 과열진단 신규. KOSPI -8.29% 서킷브레이커 폭락일. ①운영루틴 5개 실행(MORNING_OPEN~DISCOVER). ②carry-in/out 인계 전면 폐지(직전 리포트 직접 Read, §0 제거) 코드8+명세6+test1. ③데이터수집 REST전환: 거래대금 FDR(GitHub캐시404)→ka10030, 상한가 ka10027누락→ka10017신규, 상한가뉴스 깨진naver_stock→m.stock. ④POST_MARKET UNIT5 정정(상한가 0건→8건+WHY: SK네트웍스 NVIDIA동맹/화신정공 휴머노이드). ⑤DISCOVER enforce버그(D1 NEGATIVE에 D7강제→제외). ⑥신규 FA-M8 밸류과열진단: implied 역산(현재가→필요 미래매출/이익, 컨센서스불요 TTM, PER+PSR 2트랙). SK네트웍스 PER57배(업종5.7배=비현실)/매출-11.9%역성장 모순감지. ⑦KRX/DART키 .mcp.json. PM교정: "MCP있는데 왜 DART직접호출"(Python순수계산만)/"1차필터 아닌 여러정보중하나"/"공시없으면 뉴스라도". 신규 topic topic_data_infra_rest_migration.md. work_log docs/work_logs/2026-06-08_S348_routine_infra_valuation.md)
(이전) S346: D7 rank aggregation 재설계 완료 — RS편중 해소. Borda 순위합 5축, SKAI 1→7등 검증. work_log docs/work_logs/2026-06-03_S346_d7_rank_aggregation.md
(이전) S345: 커버리지 갭 진단 + 30종 스모크 + D7 RS편중 결함 발견. 거래대금풀100→200(주도주 조정저점 worst159위), 30분봉6/02, 병렬화(8.5h→1.3h), 리포트수정. PM지적이 S346 트리거.
(이전) S343: discover 6영역 원자화 완성(시장/차트/RS/테마/OF/펀더/재료). D1 재배선·sector 43일 백필·가격축 차트 수렴(RS/테마/OF judge 폐기, raw만)·펀더 빌더 5결함 수정·재료 정식 stage(Dnews) D7 통합. 단일 judge 6개 deprecated. verdict축=차트·실적·재료.
(이전) S342: 시장 6관찰+종합자+누적 보강. S341: 차트 slice/step 정식 통합. S340: 차트 관찰5+종합자.
역할: 세션 시작 시 여기만 읽으면 "지금 뭐부터 할지" + "살아있는 주제" 파악 가능.
Active Topics¶
| Topic | Status | 최근 WBS |
|---|---|---|
topic_backtest_mar_apr.md |
🔄 S346 완료 | D7 rank aggregation 완성(RS편중 해소). Borda 순위합 5축(rs_high·실거래대금·수급·재료·펀더) 동등, 차트게이트 전제, sector_flow정합=selector정성. 6/02검증: SKAI 1→7등, 두산로보·삼성전자 1·2등. 신규 turnover_axis.py. work_log docs/work_logs/2026-06-03_S346_d7_rank_aggregation.md. 잔여: 다른날짜 robustness, 037560 메타결손(별건) |
topic_discovery_walkforward.md |
🔄 진행 중 | Phase E6 진행 (S329) |
topic_discover_pipeline_followups.md |
🔄 S353 강제·forward | ★S353: 쓰기로 한 데이터 강제 + forward 보완. ①must_address(build 검증토큰→step 인용검증→재호출/차단) ②FnGuide forward 파서 복구→f6 연결(unjustified→stretched, 축3분모 forward EPS CAGR)→selector 노출 ③D5·D4 profile 노출(lifecycle placeholder 제외) ④실 D6 재생성 통합검증(버그1 수정). discover 복기 오류 정정. work_log 2026-06-21. 🔴잔여: D1~D7 풀 e2e 미실행(평일 라이브 1회), 6/08·09·11 재검증. (S351: selector 재설계·ea복구·우선주제외) |
topic_selection_indicator_validation.md |
🆕 S352 등록 | 종목선정 지표 — 변화·누적 프레임 검증. discover 5축은 "강함"만 보고 "위치/궤적" 안 봄. 1차 스냅샷 백테스트 6종 실행했으나 PM 교정으로 접근 기각(스냅샷·단면·단순라벨링=시스템 1번원칙 위반). 원칙: ①스냅샷❌ 변화+누적 ②거래대금/수급 양면(매집vs분배, 일관방향vs노이즈) ③위치=점❌ 신고가갱신 궤적 ④단일줄세우기❌ 결합/게이트. 잔여: 지표 변화·누적 재정의→양면검증→OOS→discover통합. KB 정식화는 검증 후. |
topic_agent_substantiation.md |
🔄 진행 중 | M.2.7 완료 + Evidence Required (S318) |
topic_system_redesign.md |
🔄 진행 중 | — |
topic_domain_main_interpreter.md |
🔄 진행 중 | — |
topic_report_meta_analysis.md |
🔄 진행 중 | — |
topic_weekend_leading_signal.md |
🔄 진행 중 | — |
topic_weekly_market_digest_routine.md |
🆕 S347 설계+실증 | ★ 주간 시황 정리 루틴(토대 — 우선). 한 주 시황 한눈에. 핵심=시차(한국 D←미국 D-1, 미국 금요일=다음주 월 선행입력) + 지수≠섹터. 입력=post_market 5+evening 5+실측. 실증 20260601_digest.md. PM: 이게 토대, 렌즈/13F는 차후. 잔여: FRED 3시리즈 추가, 자동화, 트리거 |
topic_weekly_and_global_lens.md |
🆕 S347 설계+파일럿 | 주간 리포트(지난주 시장 사실 집계). 파일럿 20260601_weekly.md. 잔여: KRX축 스크립트, L2 정식화, 트리거 |
topic_portfolio_change_lens.md |
🆕 S347 설계+실증 | 포트폴리오 변화 렌즈(독립영역). 시장변화 읽기→4분류(대응/비대응/위험/기회)→인과사슬+시나리오분기→국면판단+행선지. 13F 7기관+주간 입력. 실증 20260601_portfolio_lens.md(반도체=④기회/가상자산=③위험 등). PM정의: 라벨매칭 폐기·인과추론. 잔여: KRX수급 보강, 주간 파이프라인 연결, 에이전트화 |
topic_weekly_retrospective_system.md |
🔄 S353 무우회 재검증 | 복기 시스템 2트랙. (A)리포트 복기 = S352 4단계 파이프라인(flow→material→forward→diagnoser). S353: 무우회 재실행+baseline 비교(결론 수렴, rw.md stale 4단계 정합). (B)discover 복기 discover-scorer. work_log 2026-06-21 §작업1. 잔여: 트리거(/rs_weekend)·목적1(차주계획)·forward-lens/diagnoser 자기검증 도구 명시 |
topic_theme_stock_linker.md |
✅ S350 구현+검증 | 테마-종목 연결(PHASE 1-5). morning↔discover 단절 해소. runner 조립(전날 D7_input 후보34종+flow_series)+에이전트 매칭(표만, 자금유입으로 핵심연결/이탈주의). 6/14 검증 ✅(표밖 0건/단절신호/blind spot). 잔여: 평일 라이브 재검증, final_picks 연동 |
topic_material_freshness.md |
📋 BACKLOG | 2026-05-28 등록 — 정책/뉴스/재료 신선도 회복 |
topic_data_infra_rest_migration.md |
🔄 S349 진행 | 데이터 인프라 REST전환 + 밸류진단 + 가격반영도 파이프 + universe/pregate 재설계 + D1차단버그 + full e2e. KRX 401진단·키움 get_stock_basic_info·FA-M8 하네스·가격반영도 3축·DISCOVER 연결 D7 e2e·universe D20평균200·pregate OF+조정깊이·D1 NEGATIVE 차단버그 수정(run_discover+selector 두 곳, risk_off만 abort/보류, 그외 분석·선정하되 보수적)·resume skip(hang 복구)·새설계 full e2e(병렬6, OF196/200→34종, 가격반영도 D7인용) ✅완료. 잔여: 091990 ka10001 빈응답(별건), pregate OF 200종 산출 부하 최적화, fetch_limit_up 뉴스필터 |
topic_quant_lens_vs_chart.md |
🟢 S360 검증완료 | 정량 렌즈 vs 차트(대체/보완/추가) — N1~N5 완료. 150종 OOS 중첩검증 결과: 정량 P(win) 연속상승(streak)이 유일 win 신호원, 차트 일봉+30분봉 객관신호는 부분집합(결합이득 0). execution도 미미(매물대 MAE·divergence meanR만 단서). N5 권고=방향판정 정량대체+차트는 실행·맥락 재배치(전면폐기 금지). 권고서 S360_discover_revision_recommendation.md. 실행=일배치 seq 인프라+PM승인 선결. |
Today's Next Step (다음 세션 시작 시 — S361)¶
S360 완료 (이번 세션) — 정량 렌즈 vs 차트 중첩검증 + discover 수정 권고 (PM 지시1+2):
- work_log 2026-06-29_S360_combo_signal_vs_chart.md. 권고서 docs/discover_research/S360_discover_revision_recommendation.md.
- PM 지시2 (정량신호 구조): 단일일 P(win)·동시AND가 아니라 사후확률 N일 연속상승(streak)이 진입 트리거 (PM "사전이 맞는지는 사후갱신으로만 안다 + 레짐 분리"). 150종 OOS: base 0.385 -> 연속2 0.448 -> 연속3 0.462(win중앙 동반). 저점/추세 레짐 둘 다 유효(추세 약간 우위), 저점단독 무의미(연속상승과 결합해야). dP_5(5일차이) '약함'은 오측이었음(연속성 못봄).
- PM 지시1 (차트 vs 정량): 차트 raw신호 직접대조(build_d2_input CI, as-of 누설없음). 차트 일봉신호(추세/매물대/spring/cum_delta)+30분봉OF는 win에서 정량 streak의 부분집합('차트만'base이하, 결합이득0). execution도 미미(매물대 MAE 0.9%p·divergence meanR만 단서). PM '차트에 엣지 없나?'=selection/win엔 없음, 살아있는건 변동성/낙폭관리뿐. LLM종합·장중진입은 미검증.
- N5 권고: 방향판정=정량 streak로 대체/강화, 차트=실행(손절·진입)+맥락 역할 재배치. 차트 전면폐기 금지.
- N6 (PM 지적 보강): 정량렌즈 누락엔진(수급 kalman_accum·공매도 short_change)을 streak 방식 재검증 -> win 추가가치 미미(+0.9%p). 정량 win 신호원은 P(win) streak 하나로 수렴(수급·공매도·차트 모두 그 위 추가 0). S357 '약함'이 streak서도 유지.
🔴 다음 세션 1순위 (PM 지시 2026-06-29) — 매물대·볼륨프로파일 × 확률변화 × 기댓값 결합 검증 → 차트 교체: - 검증: 매물대/볼륨프로파일(자리) + P(win) streak(확률변화, 언제) + 기댓값(RR/meanR/touch_return, 얼마나)을 같이 본다. S360 N3~N4는 매물대를 단독 게이트·win율로만 봤음 — PM은 자리+확률+기댓값 3축 결합을 원함. 매물대는 execution서 유일 생존 단서(MAE 0.9%p)라 기댓값과 묶으면 가치 드러날 수 있음. (재료: combo_.csv에 psr/overhang/touch_return 이미 일부 부착, S360 패널 재사용) - 그 결과 반영 후 교체: discover 차트 부분을 수학적 렌즈로 교체 + 관련 에이전트(chart-obs-/chart-synthesizer) 제공 데이터·질문답변 수정. PM이 직접 수정(에이전트 설정은 PM 작성). 우리는 교체 설계안·데이터 매핑 제공. - 선결(교체 실행 시)**: 일배치 seq 인프라(build_pwin_sequential 매일 universe -> p_post 시계열, streak 산출 토대). 현재 연구용 단발만.
🟡 S360 미결: ①신용잔고 게이트 방향 재검토(-3.6%p 오류의심) ②라벨 다양화(1일/20일) 차트 execution 재검증 ③SPA/DSR 다중검정 보정.
(이전) S358 완료 — P(win)+기대R: 횡단면 결합 -> ★PM교정 시간갱신 베이지안
**S358 — P(win)+기대R: 횡단면 결합 1차 -> ★PM교정 시간갱신 베이지안 재구축**: - work_log `2026-06-29_S358_pwin_rr_L3_L5.md`. 산출 `data/discover_research/pwin_rr/`. - **1차(L3+L5 횡단면 결합, `build_pwin_rr.py`)**: P(win) OOS 작동(decile 0.235->0.411, Spearman +0.891, 상위-하위 +17.6%p) / L3 RR이 P(win)보다 강한 단독게이트(RR상위20% win 44.0%>41.7%) / **베이지안=naive 동급**(WOE 작고 단조). - **★PM 교정**: "베이지안=어제 확률을 오늘 변화로 사후갱신(S357 §128)이지 결합용 아니다" -> **시간갱신(sequential) 재구축** `build_pwin_sequential.py`. 상태=P(win) 직접갱신, 우도=유의엔진 당일정보(hmm/strength=변화, dd60/vecm/kalman/overnight=수준), WOE 중심화로 폭주방지. 디버그2(base 0.152희석->0.327회복, em-dash cp949). - **재구축 검증**: ①삼성 궤적 — p_post 급등일 8/8 win(fwd5 +4.5~20%), 5분위 win 0.29->0.65 단조. ②시총x거래대금 9칸(FDR Marcap 413매핑) — **대형 견고**(win차+0.31~0.36 ρ.90)>중형>소형, 거래하위3칸 OOS표본0~22(universe라벨밖=검증불가). ③**lambda 튜닝** — 최적 lambda=0.5(평균win차+0.289), **시간연결(λ>0)>리셋(λ=0)** +2%p/중앙+8%p(PM가설 지지), 단 λ>=0.95 붕괴(확률고착). 기본값 0.5 반영. - **결론**: 정본=시간갱신 베이지안(대형~중형+거래충분 견고). 1차 횡단면은 보존. **🟡 S358 정량렌즈 잔여**: ①거래하위 종목군 라벨체계(universe밖) ②horizon 1·20일 ③L3 RR 분산확대(GARCH σ 비대칭) ④discover pregate에 시간갱신 P(win) 연결(=S360 N5 권고로 구체화).(이전) S357 완료 (자동화 분류 + D1 인프라 + 엔진 검증 + 데이터갭 메우기 + 실종목 변곡점 검증).
- 데이터 갭 메우기 완료: 수급 5년(ka10045) 419 / 체결강도(ka10047) 419 / 공매도(ka10014) 418 / s-score 전종목 PCA. 수집기 scripts/discover/research/collect_{flow,strength,short}_5y.py. 틱만 구조불가(v3 제외).
- 엔진 검증 (25엔진, 396종): 줄세우기 IC → PM 교정(종목내 분위/백분위, 매매자관점) → 분석A(진입효과 entry_exit_quantile.csv)+분석B(고점/저점 swing_extremes.csv). 엔진 4역할: 추세동참진입(hmm_bull+16%p·strength_regime+14%p) / 저점식별(dd60·kalman_slope·vecm_dip·overnight) / 고점경고(rsemi_sk) / 무의미폐기후보(kyle_lambda·quantreg·copula·short_hawkes·evt_tail).
- 실종목 변곡점 검증 (삼성·현대차 2026, 21변곡점): 사전판별 0/21. hmm_bull이 −18~−23% 조정 고점서도 1.0 = 큰추세 강세만 잡고 조정·고점 못잡음. 저점은 당일 동행확인까지(사전·깊이 불가). ★결론=엔진은 변곡 예측 도구 아니라 확률영역 식별 도구(S356 설계전제 그대로). 산출 S357_engine_validation_results.md, work_log 2026-06-28_S357.
✅ 1순위 (S358 완료) — 확률영역 식별 → P(win)+기대R 산출 (S356 L3 손익비·L5 결합):
- 위 S358 완료 요약 참조. P(win) OOS 검증 통과 / RR게이트 채택 / 베이지안 정교화 불채택.
- 잔여(S360 1순위로 승계): L3 RR 분산 확대(GARCH σ 비대칭) / horizon 1·20일 / discover pregate 연결.
- 참고: S356_architecture_v3.md(5층), S357_engine_validation_results.md(§6 능력경계·§7 미결), data/discover_research/pwin_rr/summary.md.
🟡 1순위 잔여: horizon 1·20일 재확인 / 무의미 엔진 5개 폐기 확정 / 30분봉(82일)·공매도(105종 2년미만) 단기표본 재확인 / 보강 3건(Breadth·RRG·IR) 미착수.
🔴 2순위 — 세 시황 파이프 평일 라이브 검증 (S355 변경 적용 확인): 다음 평일 1회씩 실행해 S355 변경이 실 LLM에서 작동하는지:
- evening: §2.5 수치 중복 소멸 / §9 temporary 압축 / §3 "변동없음" 표 제거 / §6 0건시 1줄 / §7 geopolitics 필터 / §8 제거.
- post_market: UNIT 1↔2 현물수급표 단일화(PM-0에 수급표 0개) / PM-2 테마 국면 컬럼(당일×누적) / 어제1등이 오늘 멈출 때 연속해석.
- morning: carry 실 주입 / 채널검증 줄 생성 / 미작동 채널 confidence 하향. (work_log 2026-06-27_S355)
🟡 3순위 — discover D1~D7 풀 파이프라인 라이브 1회 (S353 잔여): must_address 강제·forward f6·D5·D4 profile 적용 전 종목 풀런 → 6/08·09·11(졌던 날) 재실행으로 진 종목(SK네트웍스·삼성전기·심텍) 회피 확인. (topic_discover_pipeline_followups.md) ※단 정량렌즈 도입(S356) 진행 중이라, 현 파이프 검증과 신 렌즈 설계의 우선순위는 PM 조율.
🟡 morning carry 후속 (S355 잔여): ①carry 신선도(dashboard/sector_series가 전일 post_market에서 갱신되는지 — 미갱신시 stale carry) ②채널 B섹터 테마명 매칭 정확도(시그널 "자동차"↔carry 테마명 동의어 갭) ③carry 재료원에 post_market UNIT4 국면출력 추가 검토(theme_timeline 미생성이라 현재 dashboard 우회). 연계: topic_selection_indicator_validation(discover 동일 스팟병).
🟡 에이전트 설정 3요소 표준 전파 (S355 신설): 이번엔 evening 3개+post_market 3개+morning 1개에만 적용. 나머지 .claude/agents/**에도 점진 적용은 PM 지시 시.
이후:
1. obs2 averaging 금지 반영 — news-obs-structurality가 4축(과점강+판가약)을 mixed로 뭉갬. profile은 보존되나 obs2/news-synthesizer 자체에 "averaging 금지" 미반영.
2. 선반영 처방 별도 표본 재현 — A/B 가설(+선반영 페널티 +15.7%p)이 6일 표본. 별도 2주+ 재현 시 score_compose 축 신설 PM 결정.
3. 주간 복기 목적 1 (차주 투자계획) — PM "다음 작업" 지정.
4. 트리거 자동연결 — run_retro_week.py → /rs_weekend 주말 1회. discover-scorer 레지스트리 등록.
5. evening 렌즈 교정 라이브 검증 — sector-flow·macro-interpreter 1:1 도식 제거가 다음 evening 실행에서 재발 0건인지.
6. 잔여 데이터 갭 — amount(거래대금) 불안정, theme_rank_in_market 전종목 null, 우선주 corp_code 매핑(근본제외로 우회됨), EVENT_CALENDAR stale.
S351 완료 요약 (재설계 최종)¶
- 채점 축: §2.1 "렌즈=에이전트 8종" 폐기 → 사이클 3관문. A="수집 이상의 해석 불가"(사전가용성), B="방향+누적"(market-interpretation 정합), C="신호 교차 해석"(금리↑+SOX↑+VIX↓ 동시→일시적 이벤트→SOX 기회. 단일 도식 "금리→은행주" 금지).
- 점수화 폐기: ADEQUATE/WEAK/FAILED 질적판정+케이스. 정량은 signal HIT율만.
- ★ PM 정정 재설계: ①복기 레벨=시장·섹터·테마만(종목/CAR→discover 복기 이관, "SK하이닉스 못짚음" 류 금지) ②처방=관점 위원회(★현상 입력 고정 + 그 동일 현상의 집중점만 2~3 분기[focus/implication] + theme_actual 대조. SOX·VIX 값 바꾼 if-then=조건분기는 금지. 역할분리, 지침주입 금지) ③CAR/VERIFIED를 오케스트레이터에서 제거.
- 코드2:
collect_retro_week.py(day_package 체계화) ·run_retro_week.py(3 phase). 에이전트1retro/cycle-scorer.md. CAR 자산(compute_retro_car.py+ledger)은 discover 복기용 보존. - 6/08 재채점 검증
docs/weekly_research/20260608_retrospective.md: C축 신호교차 채점이 PM 예시(6/9 금리↑·SOX↑·VIX↓) 정확 재현("교차하면 고PER 기회, 변환하면 압축→시스템은 압축→REVERSE"). 관점 위원회 처방 3건(금리·SOX·VIX / 美-韓 동조 / 직전일 관성) 각 phenomenon고정+viewpoints 2관점(집중점)+actual대조+역할분리+검증임계. 자가검증으로 입력신호 관점간 불변 증명(조건분기 아님). 종목/CAR 미사용. HIT율 50/60/33.3/66.7/83.3%. - ★ 3주 교차검증 + evening 교정 (PM 지시): 6/08 복기를 전주(6/01)·전전주(5/25) 교차검증 → C축 신호교차 실패가 5/25주(FAILED 3)·6/08주(FAILED 3)엔 강하나 6/01주(FAILED 0)엔 약함 = "해외→한국 1:1 전이 도식"(S2 유가→항공, S4 발전주→원전)에 국한. 근원=S350 morning 교정이 evening 미적용. 18개 리포팅 에이전트 감사 → 실제 수정 2개:
evening/sector-flow(한국 1:1 매핑표 11줄 제거·단일질문화),evening/macro-interpreter(거시→한국 1:1단정→교차/가설 전환). 종합자(signal-synthesizer + macro 종합교차)에 관점교차 기술법+성공조건 4개 명시(현상고정/집중점분기/단정회피/검증가능 가르는관찰). 결함2(스팟)·결함3(단일집중)은 18개 전부 이미 양호. 토픽 §9.7. ⚠️evening 라이브 미검증. - ⚠️ work_log 미작성(S351).
S350 완료 요약¶
- 주간 복기 시스템 설계 + 26일 복기 실증(§8). 핵심: 복기가 AI 가설을 데이터로 반증("변동성=매크로붕괴" 가설이 calm 69% macro쏠림으로 반증).
- morning 4에이전트 렌즈 교정: 관찰자가 자기렌즈 넘어 매크로로 시장결론 닫던 구조 → sector/global 단일질문화, synthesizer 종합책임명시. 6/14 라이브
under macro_constraint소멸 검증. - 테마-종목 연결 신설(PHASE 1-5): morning 테마 + 전날 discover 후보(자금) 매칭. runner 조립 + 에이전트는 표만으로. 검증 통과.
(이전) S349 완료 요약¶
- KRX MCP 401 진단 종결: 원인=개별종목 콘텐츠(
stk_bydd_trd) 미신청(승인 9종은 지수·파생뿐). 3중교차+PM스크린샷으로 확정. 추가신청 불필요 — 키움 ka10001이 전부 대체. KRX MCP 시세조회 폐기, DART MCP 유효. - 키움
get_stock_basic_info신규 — 종목명/시총/상장주식수/거래량/거래대금/PER·PBR·ROE/외국인비율 정제 dict. - FA-M8 하네스 —
fetch_valuation(code)단일진입점(키움+DART 직접호출+CFS/OFS·연도 폴백 4회). 에이전트가 도구 손호출 안 함. 5종 end-to-end 검증, SK네트웍스 overheated 판정. - work_log
docs/work_logs/2026-06-09_S349_krx_diag_valuation_harness.md.
S349 추가 완료 (가격반영도 + DISCOVER 재설계)¶
- 가격반영도 3축(상승분vs실적개선 / 절대멀티플 / implied 필요성장) — SK하이닉스 stretched(실적받침) vs SK네트웍스 unjustified(기대만) 구분. fetch_valuation에 통합.
- DISCOVER 연결 D7 e2e: fund-synthesizer(실적×가격 결합)→D6 valuation_verdict→score_compose→portfolio-selector(약점명시+conf하향, 차단 아님). 20종 전달, unjustified 11종 포착, D7_output 인용 확인. score_compose 루프누수 버그 수정.
- universe 재설계: 당일 거래대금 → D20 평균 200위(trigger union 폐기). 당일과 115종 차이, 조정으로 당일 빠진 주도주 포함.
- pregate 재설계: 차트강도(신고가근접) → OF(매도압력소멸+매수불균형+가속) + 조정깊이 + 신고가근접 완화. 검증: '조정후 상승초입' 83% 탈락하던 게 삼성E&A rank1 통과로 교정.
S349 추가 완료 (D1 차단버그 + hang/resume + full e2e)¶
- D1 NEGATIVE 차단버그: 명세는 "차단 아니라 가중치"인데 run_discover+selector 두 곳이 옛 매크로게이트로 차단. KOSPI +8.18% 폭등일에 NEGATIVE로 막은 게 발단. 수정: risk_off 완전위기만 abort/보류, 조정·차익기울기는 분석·선정하되 보수적(confidence 하향). 검증: 삼성전기 selected=None→선정+LOW.
- hang/resume: 101170 LLM hang으로 3.5h 정지 → resume skip으로 33종 재사용+1종 재처리 복구.
- 새설계 full e2e: D20평균200·OF pregate(196/200→34)·병렬6·가격반영도 D7인용 전부 확인.
- 내 오판 정정: "데이터 stale 버그" 단정 → 검증 결과 데이터 정상(6/8 서킷브레이커 다음날 반등).
S350 후보 (PM 선택)¶
- 091990 셀바스AI ka10001 빈응답 [별건] —
_NX/_AL접미사 or stex_tp 점검. - pregate OF 200종 산출 부하 최적화 — 순차 OF가 ~3.5h. 1차 차트컷 후 OF or 병렬화.
- D1 종합자 일회성충격 vs 추세 구분 보강 — 누적 수치를 "서킷브레이커 같은 일회성"과 추세로 가르는 지침(market-synthesizer).
- fetch_limit_up 뉴스 필터 — 시황성 제목 필터.
- 하네스 패턴 확산 — 차트/수급 에이전트도 단일진입점+폴백 전환.
- (기존 S347 후보) discover rank robustness 다른날짜 검증, sector_flow selector 실호출, discover_pipeline_followups 잔여(E/F/G/H).
S345 — 완료 (이력)¶
- ✅ 갭진단(갭1 EA panel 중소형 미적재 / 갭2 백테스트 라이브뉴스 구조결함) — 둘 다 후속(M6/별도).
- ✅ 30분봉 271종 6/02 갱신 / 거래대금 풀 100→200(volume_top.py top_n) / 30종 스모크 PASS.
- ✅ 병렬화:
--parallel N(step_loop ThreadPoolExecutor) + prompt_file 고유화(call_agent race제거). 8.5h→~1.3h. - ✅ 리포트 수정: truncate(_strip_envelope_lines+2500자), 옛문구(D3/4/5 raw지표축), 재료 Dnews우선, 종목명(code_label 프롬프트주입+raw_metrics.name), 한줄요약(차트갈준비+주도주 rs_z/rs_high).
- ⚠️ 주의: S346 rank aggregation이 S345 "RS×2.5 가중치합산" 대체. 게이트·rs_high지표·병렬·리포트수정·풀200은 유지. score_compose 가중치합산부만 교체.
- work_log:
docs/work_logs/2026-06-03_S345_coverage_gap_diagnosis.md
(구 S344) — 완료¶
- ✅ 전체 파이프 LLM e2e 스모크 PASS / wiring 버그 수정(_enforce_required 파일명).
- work_log:
docs/work_logs/2026-06-03_S344_full_pipeline_e2e_smoke.md - [추후논의] 한국 시장 편중도 — D1에 시장 집중도 없음. market_top top-N 점유율·HHI. 별건.
S334 부산물 (참고)¶
- 방향무관 변동성 레짐 AUC 0.67(v13d), 방향 0.53 불가. 하락추세 반등 5회 반복. 선물 basis_z는 베타이지 alpha 아님.
- v13l rho 0.66은 look-ahead 착시(정정). 엄밀히 하면 가격 파생 지표 방향 예측력 모두 0.5 수렴.
S334 검증 우선순위 (구 — 방향 선행성, 미착수)¶
- 외인/기관 일별 수급 (
data/flow_series/*.json): 주체별 누적 매수가 segment 전환 선행하는가 - 섹터 자금 흐름 (D1SectorFlowBlock 12 섹터): 종목 매수 전 섹터 자금 유입 선행성
- 재료 시간축 (postmarket UNIT5/6): 발표 시점 vs 후행 segment 패턴
- 매크로 verdict 전환 vs 종목 segment: D1 변화가 종목 segment 전환 선행하는가
S334 핵심 결과 (이번 세션)¶
- 리서치: 5영역 25방법 fan-out (CPD/변동성압축/미시구조/차티스트/ML). PM 직관=변동성 군집(Mandelbrot 1963). OFI 함정="동시설명이지 예측 아님"
- 구현 산식: CVD다이버전스(BVC), 흡수/소진(Amihud), 압축(TTM Squeeze/GK/NR7) 출처 검증
- v13a→d: 이진플래그(결함) → 연속 궤적(v13b) → 예측력 통계(v13c 30분봉 0.607) → 일봉 5년 확장(v13d 0.62~0.67)
- 자세히는
docs/work_logs/2026-05-31_S334_inflection_volatility_research.md
S333 핵심 결과 (이번 세션)¶
- v6 정본 백테스트: NAV 2.146 (+114.6%), 알파 +100.7pp, rank 단조성 확인 (rank 1 T+20d +56%)
- 선제 감지 검증 (v7~v12): 차트 신호·OF 변화율·결합·ZigZag segment 모두 선제 X. peak/trough 사후 통계 구분만 가능
- D2 일봉 OF 폐기: D2OFDailyBlock/compute_orderflow_daily/S317 OF 신호 완전 제거. OF는 D5(30분봉)만
- DISCOVER_SPEC.md 전면 재작성: 전 지표 산식·임계·당위성 망라
- 자세히는
docs/work_logs/2026-05-31_S333_chart_of_verification.md
이전 진입점 (구) — S332 (참고)¶
S332 (2026-05-30) — ats_main 테마 전수 검수: 791종, themes[0] 500건 변경, industry placeholder 354→21. docs/work_logs/2026-05-30_ats_theme_full_audit.md
이번 세션(S332)에서 ats_main 테마 전수 검수가 완료됐으므로, 다음 우선순위:
- 잔여 industry: placeholder 21건 처리 — 네이버 0건 종목(맥쿼리인프라·한국토지신탁·인투셀·우선주 등). discover 후보 제외할지 placeholder 유지할지 PM 결정.
- defer 205건 신설 제안 PM 검토 — 강제 매칭 시 본업 왜곡(이마트→호텔/리조트 등) 확인됨. 신설명 후보(KCC→페인트/실리콘, 한농화성→정밀화학 등) 직접 검토 권고.
- D4 builder
themes[0]=industry:처리 로직 점검 — theme_n<3 시 UNKNOWN 처리 점검. - D2~D7 서사화 (S331 followup) — D1 패턴 확장. "차트 불균형/수급 흐름/재료 질" 서사 + 메타표 금지.
- ats_main 생성 파이프라인 점검 — 데이터 오염 3건 유입 경위(코드-이름 불일치 검출 자동화).
- discover_pipeline_followups Topic 잔여: E (today_d1_verdict 자동 주입), F (OHLCV 데일리 갱신), G (chart_warning 산출), H (C2/C3 자동 산출).
S332 핵심 결과 (이번 세션, 2026-05-30)¶
- PM 지시: "DART·네이버로 ats_main 전종목 검증 후 교체" + "R&D/기대감을 진입으로 오판 말 것" + "네이버 테마에 매칭해서 넣어라"
- 791종 전수 검증 (네이버 공식 테마 _all_key_themes.json 762/791 커버 + DART business_summary 교차)
- 8 에이전트 병렬 진입검증, 기준: 매출 주력 OR 실질 진입(지분/양산/대형수주). R&D·MOU·예정 불인정
- themes[0] 변경 500건 + 레코드 제거 3건
- MLCC 테마 신설 (삼성전기·삼화콘덴서)
- industry: placeholder 354 → 21건 (4차 사전 매칭으로 보통주 거의 전부 본업 테마 보유)
- 시행착오 정직 기록: 1차 자동스캔(키워드) → 진입검증 → 삼성전기 오판(전고체 R&D를 진입으로 인정) → 위험군 31건 재점검 → 네이버 정답지 활용 → 4차 사전 보강
- 자세히는
docs/work_logs/2026-05-30_ats_theme_full_audit.md
이전 진입점 (구) — S329 첫 운영일 (참고용)¶
S328 orchestrator 완성 후 실호출 검증 + 운영 진입 (topic_discovery_walkforward.md Phase E6):
1. 에이전트 호출 end-to-end — D9/D1/D7/D8 4개 에이전트 실제 호출 + 산출 검증
2. D7 → positions.json 자동 append (selected 종목 entry 등록 hook)
3. theme_strong trigger 보정 — dashboard.json 스키마 표준화 (현재 n=0)
4. D5/D6 보강 — 30분봉 컬럼 결손, ea_panel vintage 재산출
5. 첫 운영일 (Thu 2026-05-28) — 실시장 데이터로 전체 파이프 1회, alpha/issue 기록
S328 핵심 결과 (이번 세션, 2026-05-27 저녁)¶
- PM 지시: discovery 파이프라인도 코드케이스로 — 에이전트 자율 호출 X, Python orchestrator가 phases 강제
- 신규 12건 + 갱신 1건:
scripts/run_discover.py메인 runner +_enforce_required게이트scripts/discover/utils.py+steps/9개 (T0/D9/D1/universe/loop/D7/D8/history/report).claude/commands/discover.mdbash 1줄로 단순화- 누락 차단 게이트:
D9/D1/D7/D8 output.md누락 또는 80바이트 미만 → sys.exit(1) - D1=NEGATIVE 분기: universe/D2~D7 skip, D8(보유 추적)만 실행
- history dump: D9가 내일 채점할 입력 자동 저장
- 스모크 테스트 통과: T0=2026-05-27, 5종목 × 5 builder = 25/25 input package OK
- 자세히는
docs/work_logs/2026-05-27_S328_discover_orchestrator.md
S327 핵심 결과 (직전, 2026-05-27 오후)¶
- 9개 에이전트 명세 (D9 신설 + D8 v2 재설계 — 추적 + 일일 환경 보고, 단일 신호 EXIT 금지)
- 8개 builder (
scripts/discover/builders/build_d{2..9}_input.py) — D1 패턴 답습, smoke test 통과 - 8개 indicator (
scripts/discover/indicators/*.py) — sim_v6 + quant 산식 atomic 함수화 - 5개 trigger + union (
scripts/discover/triggers/) — 2026-05-27 n_union=102 검증 - schemas D9 신규 + D8 v2 확장 + SCHEMA_MAP 등록 (Pydantic 통과)
- 데이터 백필 완료 (PM 결정 §8):
- derivatives raw 243→271일 (KRX 84 호출 14초)
- derivatives_with_features 2026-05-27까지 z 컬럼 완비
- CNN F&G 251일 (2025-05-27~2026-05-27) 단발 GET
- kr_10y_chg_z = KRX 10년국채선물에 포함 (별도 백필 불필요)
- D1 종단 검증 T0=2026-05-26: 4블록 모두 ★★ (이전 missing 4+ → 1)
- 자세히는
docs/work_logs/2026-05-27_S327_discover_v4_atomization.md
S326 핵심 결과 (직전, 2026-05-27 새벽)¶
- 설계서 v1→v2→v3 진화: Input Package 사전조립 + Pydantic 16 클래스 + 하네스 빌더 패턴
- M1a 산출: schemas.py + 8 atomic 에이전트 명세서 + build_d1_input.py + /discover 커맨드
- D1 builder T0=2026-04-14 검증 통과 (4 블록 ★★, Pydantic 통과)
- PM 8개 확정: universe 다중 trigger / EXIT 추적형 / D9 신설 / theme_rs 재사용 / discover 신규+report 벤치마크
- 자세히는
docs/work_logs/2026-05-27_S326_discover_atomization_v1_impl.md
(이전 — S319~S325 본문 보존)¶
Today's Next Step (구) — S326 진입점¶
S326 — 테마 + 종목 발굴 파이프라인 슬래시 커맨드 설계 + 구성
v6 (6도구) 채택 모델을 production-grade 운영 커맨드로 구성:
1. /discover (또는 /rs_discovery) 커맨드 신규 작성
2. 일일 루틴: universe → L1 게이트 → 차트 시나리오 → RS 필터 → OF 확증 → final_score 1-2종 선별
3. morning_open 통합 또는 분리 검토 (PM 결정)
4. 진입 후보 자동 추적 + D+20 hold 관리 (postmarket position-evaluator 연계)
S319~S325 핵심 결과 — 4도구 결합 시뮬 진화¶
| 버전 | 도구 | n | alpha | Sharpe | MDD | 핵심 |
|---|---|---|---|---|---|---|
| v1 | 4 (단순) | 100 | -8.90% (D+10) | 부정 | — | 점수 합산 실패 |
| v2 | 4 (hierarchical) | 210 | -7.63% | 0.34 | — | PASS 정상화 |
| v3 | 3 (8개월) | 19 | +5.31% | +0.46 | -47% | acceleration+연속 |
| v4 | 3 (2.7년) | 78 | +2.91% | +0.41 | -63% | transition 발견 |
| v5 | 5 (RS 추가) | 83 | +7.29% | +0.86 | -74% | alpha 2.5배 ★ |
| v6 | 6 (OF 추가) | 12 | +18.08% | +1.63 | -24% | MDD 30% ↓ ★ |
v6 채택 운영 룰¶
- L1 매크로 게이트 ON (WALCL/SPY/GSPC/SOX/DEPOSIT lev_HIGH OR chg_HIGH AND VIX_chg LOW 아님)
- L2 차트 transition_to_imb_up_confirmed OR imb_up_acceleration_confirmed
- 종목 60d RS > 0 (KOSPI 상회)
- 테마 60d RS > 0 AND 종목이 테마 RS rank 상위 1/3 leader AND rs_vs_theme ≥ 0
- OF: ofm_cvd_z > 0 AND ofm_bvc_5bar ≥ 0.55 (가용 시)
- score = z(rs_vs_theme) + z(stock_rs) + z(accel) + z(ofm_cvd_z) → 일별 1종
- EA z로 weight (>0 → 1.0, <-0.5 → 0.5, 결손 → 0.8)
- D+20 무조건 hold (EXIT 룰 없음)
S319~S325 신규 자산 (주요)¶
data/backtest/sim_v5/{entries, strategy_v5, v5_compare}.parquet/jsondata/backtest/sim_v6/{entries_v6, strategy_v6, v5_vs_v6}.parquet/jsondata/backtest/sim_v4/{macro_gate, daily_universe, case_context, strategy_*, rs_analysis}.parquetdata/backtest/phase_c/{macro_panel_unified, leadlag_review*}.parquetdata/backtest/quant_walkforward_dart/*.parquet(옵션 4 v2 alpha 회복)data/dart_cache/corp_code_map_v2.parquet(196종)data/backtest/e1/ea_panel_dart.parquet(재산출, EA(YoY) 9,507건)
S319~S325 핵심 학습 (8건)¶
- transition_to_imb_up > acceleration_confirmed — 정보 비대칭 우위가 alpha 본질
- EXIT 룰은 모두 알파 깎음 — D+5/D+10 단기 underperform 후 D+20 회복 (한국 lag 6-9일)
- RS leader 필터 = alpha 2.5배 — 약세 종목 제거 + 테마 1등
- OF = alpha 증가 X, MDD 30% 감소 ★ — 위험 관리 도구
- N확장(corp 100→196) = strong_up D+60 -17.61% → +10.29% 방향 반전
- D+20 무조건 hold가 모든 EXIT 변형 능가 — Sharpe 가장 높음
- 단순 점수 합산은 위험 — hierarchical 또는 필터 chain 필요
- transition vs acceleration regime 의존성 — 강세장만 보면 acceleration 우월하게 보임 (편향)
S318 본문 — 이전 세션 (이력 보존)¶
- Q3 룰 14/16 음수, 매출 DART 7년 백필, 고객예탁금 9.8년, Evidence Required
(이전 — S316/S317 본문 보존)¶
S316 활용 가능한 기존 자산¶
data/backtest/e4_portfolio/agent_packs/*.txt(63개)data/backtest/e4_portfolio/agent_picks/*.json(63개)data/backtest/e4_portfolio/portfolio_nav_agent.parquetdata/backtest/e4_portfolio/trade_log_agent.json(424건)data/backtest/e4_portfolio/tool_alpha_summary.json(도구 단독 알파)scripts/backtest/e4_{agent_pack_builder,agent_harness,state_context,tool_alpha}.py
S316 PM 가르침 정리 (#9 ~ #15)¶
-
9: OF는 점수 아님, 종목 상황 판단 도구 (상황 A/B 분기)¶
-
10: 종목 풀 = 시총X → 거래대금 20d 상위 200종¶
-
11: "강한 테마"는 분류한 적 없음. RS로 구분¶
-
12: 매출/차트 빠진 절름발이 시스템 → 전체 도구 통합¶
-
13: 컷오프 X → 통합 점수 (가중 합)¶
-
14: 코드 X → 에이전트 글로벌 판단¶
-
15: 도구는 알파 측정 기준 아니라 목적 충족 여부 기준 (차트=불균형/에너지, 퀀트=실적, OF=주문흐름)¶
(이전 — S312v2~S315 본문 보존)¶
S312v2 wrap-up (2026-05-25, Mon 01:10) — PM 통찰("8분기 다 안써도 되잖아")로 EA_QoQ(4분기) 산식 추가, 1시점 backtest 실행 성공.
핵심 결과 (2025Q4 1시점, n=81)¶
- D+30 spread +9.11pp ✅ (가설 부분 지지, KOSPI +32%대비 TOP +15.1% vs BOTTOM +5.9%)
- D+5/D+10/D+20는 모두 음수 spread (가설 반대) — 신호 발현 lag
- 연환산 +76.5%/yr (1시점, 신뢰 불가)
- decile 8×8 표본 — LG이노텍 +126% outlier 영향
- 통계 유의성 X, 모듈/파이프라인은 모두 작동
핵심 통찰 (PM 지적 수용)¶
- EA(YoY 가속) 6분기 필요 → 데이터 부족
- EA_QoQ (QoQ 가속) = 4분기만 필요 → 5분기 시계열로 측정 가능
- g_q (YoY 단일) 5분기 필요 → 2026Q1에서 측정
FDR/Naver/FnGuide 데이터 origin 동일 확인¶
- 셋 다 같은 NaverComp(WiseReport) iframe origin
- 분기 시계열 5개 + 연간 5년 한계 동일
- FDR
naver.snap.finstate_summary(freq='Q')API 발견 (FnGuide와 동일 데이터)
4축 발굴 시스템 현황¶
| 축 | 상태 |
|---|---|
| 퀀트=실적 가속 | S312v2 v0 완료 (D+30 spread +9pp, 1시점 한계) |
| 테마=RS | 미구현 (즉시 가능) |
| 시장환경=L×S | S309 v4c 부분 완성 |
| 차트=진입 | discovery/state_classifier 존재 |
산출물¶
- 코드:
scripts/quant/earnings/e1_acceleration.py(g_q + EA_QoQ) - 코드:
scripts/backtest/e1_base_rate.py(2시점 harness) - 데이터:
data/backtest/e1/{ea_panel, decile_stocks, base_rate_results}.{parquet,json} - 문서:
docs/research/2026-05-25_S312v2_e1_qoq_backtest.md
다음 세션 진입점 (★ S313 우선순위)¶
PM 질문 확인: "차트+퀀트 다 사용했을 때 알파 없는건가?" → 답: 아직 측정 안 됨. - 차트(S309 v4c)는 시장 단위 breadth로만 측정 - 퀀트(S312v2)는 종목 단위 cross-section으로만 측정 - 종목 단위 4축 결합 backtest 미실시
S313 진입 명세 — 종목 단위 4축 결합 backtest¶
시점: 2025Q4 진입 (2026-04-06 cutoff), forward D+30 (KOSPI 5/22까지) universe: 81 stocks (S312v2 EA_QoQ 가용 + s303 ohlcv 보유)
4축 신호:
1. 퀀트 EA_QoQ z (이미 산출) — data/backtest/e1/decile_stocks.parquet의 composite_z
2. 차트 state 점수 (산출 필요) — 각 종목 30분봉 또는 일봉을 discovery/state_classifier.classify_state()에 입력 → resolution_direction (-1/0/+1) 또는 score
3. 시장 환경 cell (이미 산출) — 2026-04-06 시점 L×S regime + basis_z bin (v4c 결과). 시점 1개 = 1 cell. 종목 단위 가중치로 multiplier 부여
4. 테마 RS (산출 필요) — 각 종목 소속 테마(data/ats_main/)의 60일 RS = (테마 평균 수익률 − KOSPI 수익률), 진입 시점에서 측정
결합 산식 (S310 권장 hybrid):
GATE: 흑자 AND 매출YoY>0 AND 컨센 커버 — 본 단계는 데이터 결함으로 skip 가능
SCORE = z(EA_QoQ) × z(차트) × z(테마 RS) × cell multiplier
TOP decile vs BOTTOM decile D+5/D+10/D+20/D+30 alpha
측정 항목: - 4축 결합 vs 퀀트 단독 (S312v2 D+30 +9.11pp 대비) - 4축 결합 vs 차트 단독 - 결합이 단독보다 sharpe / alpha / 분산 우월한가 - outlier(LG이노텍 +126%, 대우건설 +54%)에 4축 결합이 어떻게 반응하는가
다음 세션 시작 명령¶
1. scripts/quant/themes/ 신규 — ats_main → theme_rs 산출
2. scripts/quant/charts/ 또는 기존 discovery/scan.py 확장 — 81종목 일봉 chart state 산출 (2026-04-06 시점)
3. scripts/backtest/e2_4axis_combined.py 신규 — 4축 결합 + 8×8 decile + D+5~30 alpha
4. 결과 doc: docs/research/2026-05-26_S313_4axis_combined.md
기존 자산 위치 (다음 세션이 즉시 이용 가능)¶
- 퀀트 z:
data/backtest/e1/decile_stocks.parquet(composite_z 컬럼) - 종목 일봉:
data/backtest/s303/ohlcv/{stock_code}.parquet(98/98 cover) - KOSPI 일봉:
data/dart_cache/kospi_daily.parquet(2026-05-22까지) - 30분봉:
data/minute_charts/30min/{stock_code}.parquet(250종, 2026-02-13~05-22) - universe:
data/dart_cache/universe_top100_eligible.parquet(98종) - v4c cell map:
data/backtest/lxs_v4c/merged_3axis.parquet(2026-04-06 시점 chart_bin/cell/deriv_bin 모두 가용) - ats_main 테마:
data/ats_main/themes/*.json(176테마)
차선 옵션¶
- 시점 확장 (DART MCP 재도전) — Agent 완수조건 명시
- universe 500 확장 — FnGuide 백필 500초
- 테마 RS 단독 구축 — S313 4축 결합 안 가고 테마축만
- 그대로 v0 운영 — D+30 +9.11pp를 작은 사이즈 트레이딩
(S312 face validity 본문 — 이력 보존)¶
S312 wrap-up (2026-05-25, Mon 00:45) — E1 face validity v0 완료.
핵심 결과 (2026Q1, 61종 cross-section)¶
- KOSPI YTD +82.10%, M1 +22.28% (강 상승장 baseline)
- TOP 6 평균 YTD α +27.4%, M1 α -2.2%
- BOTTOM 6 평균 YTD α +58.3%, M1 α -15.2%
- YTD spread -30.86pp (outlier 좌우) — 주성엔지 +553pp / S-Oil -46pp
- M1 spread +13.00pp ✅ — 실적 가속 시그널 우호적, 1개월 가격 반응
데이터 제약 발견 (Critical for S313+)¶
- FnGuide SVD_Main는 5분기 시계열만 제공
- EA(8분기 필요) 측정 불가 → g_q (4분기) v0로 전환
- 2026Q1만 측정 가능 → forward horizon 2일 → 정식 backtest 불가 → face validity로 우회
- 장기 분기 시계열 확보가 다음 핵심 과제
4축 발굴 시스템 현황¶
| 축 | 상태 | 다음 |
|---|---|---|
| 퀀트=실적 가속 | S312 v0 완료 (face validity) | 장기 분기 데이터 확보 후 정식 backtest |
| 테마=RS | 미구현 | KRX 일봉 + ats_main 매핑으로 즉시 구축 가능 |
| 시장환경=L×S | S309 v4c 부분 | basis_z VERY_HIGH 회피 + L×S cell 운영 진입 가능 |
| 차트=진입 | discovery/state_classifier 존재 | 발굴 풀에 적용 |
산출물¶
- 코드:
scripts/quant/earnings/{e1_acceleration, fnguide_loader, point_in_time, cache_io}.py - 코드:
scripts/backtest/{e1_base_rate, e1_face_validity}.py - 데이터:
data/backtest/e1/{ea_panel, face_validity_2026Q1}.parquet - 데이터:
data/dart_cache/{fnguide_fs, kospi_daily, universe_top100_eligible}.parquet - 문서:
docs/research/2026-05-25_S312_e1_face_validity.md
다음 세션 (PM 선택)¶
- 장기 분기 시계열 확보 재도전 — DART MCP / WiseReport AJAX / 유료 소스
- S313 테마 RS 축 구축 — 즉시 가능 (KRX 일봉 + ats_main 매핑)
- 시장 환경 축 운영 진입 — S309 v4c basis_z 회피 룰 + L×S cell
- 차트 진입 축 검증 — discovery/state_classifier 재사용
(S311 본문 — 이력 보존)¶
S311 wrap-up (2026-05-25, Mon 00:15) — 실적 가속 데이터 백필 완료.
핵심 결정 — DART → FnGuide PIVOT¶
- S311b dry-run에서 회사별 IS/CIS 구조 차이 발견 (005930 분리, 000660 통합) + 응답 ~80KB×240 메인 세션 한계
- 대안 탐색: FnGuide 메인 페이지가 종목당 1 호출로 분기 5년 + 컨센 추정 다 제공
- PM 승인: FnGuide 스크래퍼 신규 + DART는 이벤트 폴링용 보존
S311 완료 결과¶
- universe_top100_eligible: 시총 100 - 우선주 2 = 98종목
- fnguide_fs.parquet: 6,428 rows / 98 종목 / 1,667 cells / 4 metrics
- 97/97 성공, 120초, 0 실패
- 종목당 평균 8.4 분기, 6분기+ 영업이익 가용 94/98 ≥ 6 quarters
- E1 EA base-rate 측정 표본 충분
결함 (S312에서 보완)¶
- 컨센서스 추정치 누락 (is_estimate 모두 False)
- Annual/Quarter 분류 혼동 (12월 라벨 → q=4)
- EPS/ROE 미수집 (다른 표 추가 파싱 필요)
→ 영향: E1(EA) v0 base-rate 측정엔 영향 없음. E3(Revision)/E5(품질)는 보완 후.
산출물¶
- 코드:
scripts/quant/earnings/{cache_io, point_in_time, fnguide_loader, _test_point_in_time}.py - 코드:
scripts/backfill/{universe_top500, fnguide_backfill_top100, _fnguide_cache_audit, ...}.py - 데이터:
data/dart_cache/{universe_top100_eligible, corp_code_map, fnguide_fs}.parquet - 문서:
docs/work_logs/2026-05-24_S311_earnings_data_backfill.md
MCP 호출 누적 (S311)¶
- corp_code: 100 / get_financial_statement: 9 / get_disclosure: 0
S312 진입 명세 (다음 세션)¶
- 입력:
data/dart_cache/fnguide_fs.parquet - 작업:
- E1 EA 산식 구현 (
scripts/quant/earnings/e1_acceleration.py)- g_q = (rev_q − rev_q-4) / |rev_q-4|, EA = g_q − g_q-1
- 매출/영업이익/순이익 3 metric 병렬 산출
- base-rate 측정: 분기 t 발표 후 +50d 시점에 EA z-score → forward D+20/D+60 KOSPI-adjusted return
- universe = 80~94종목 (E1 가용), 검증 기간 2024Q2~2026Q1
- 성공 기준: top decile − bottom decile spread D+60 ≥ 5%/yr
(S310 본문 — 이력 보존)¶
S310 wrap-up (2026-05-24, Sun 23:00) — PM 지시 "퀀트/헷지펀드 실적 활용 리서치" 5 에이전트 fan-out 완료.
발굴 시스템 4축 정의 (PM 확정)¶
- 퀀트 = 실적 가속 종목 찾기 (단순 스크리닝 아님)
- 테마 = RS 기반 시장보다 잘 가는 테마
- 시장환경 = 진입 가능 환경 점검 (L×S regime + 파생, S309에서 v4c 일부 검증)
- 차트 = 매수 진입 자리 종목 (discovery/state_classifier 가용)
S310 리서치 5 에이전트 합의 — 한국 적용 5+1 채택¶
| ID | 이름 | 핵심 근거 | 한국 적용 |
|---|---|---|---|
| E1 ★★★ | Earnings Acceleration | He-Narayanamoorthy JAE 2020 (연 14~23%) | DART 분기 EPS만으로 즉시 계산 |
| E2 ★★★ | Korea-SUE | Foster-Olsen + 한국변형 (σ → max( | OP_q-4 |
| E3 ★★★ | Consensus Revision | Linnainmaa-Zhang AEA (월 alpha 68bp) | FnGuide 스크래핑, lag 1d |
| E4 ★★ | 매출 가속 Δ2차 | KCMI #2089 한국 영업이익 통념 | DART 분기 매출 |
| E5 ★★ | 이익품질 (CFO/NI) | Sloan 보완 | DART CF |
| E6 ★ (보조) | 자사주 취득 공시 | Ikenberry 1995 (+2~3% CAR) | DART 이벤트 폴링 |
결합 구조: Hybrid Gating(흑자+매출YoY>0+커버≥3) → Composite z(QMJ 방식 4축 평균) → × ChartScore × RegimeMultiplier(L×S)
한국 DART point-in-time 절차 (모듈 필수): 분기말 + 50d cutoff 보수, 잠정공시 vintage, 4Q 90d lag 비대칭, 정정공시 페어 관리, 수출비중 ≥50% USDKRW 잔차
제외: Sloan accruals (2002 이후 alpha 소멸, K-IFRS 단절)
단계별 진행 (S311 ~ S314) — MCP 기반¶
중요: DART는 mcp__korea-stock-mcp__get_financial_statement 등 MCP 도구로 Claude 세션이 직접 호출. Python 스크립트는 cache parquet 읽기/지표 계산/백테스트 담당.
- S311a: cache_io + point_in_time + universe_top500 구현
- S311b: 5종목 dry-run (MCP 응답 형식 검증)
- S311c: 시범 100종목 × 8분기 × 2 sj_nm = 1,600 MCP 호출 (1 세션)
- S312: 100종목 E1 단독 base-rate (Phase 1) — 신호 가치 확인 게이트
- S313: 신호 확인 시 500종목 × 16분기 확장 + FnGuide 스크래핑 + E2/E3
- S314: composite + gating + L×S 결합 (Phase 5/6)
산출물¶
docs/research/2026-05-24_S310_earnings_signal_research.md(5 에이전트 통합)docs/planning/2026-05-24_S310_earnings_module_spec.md(모듈 개발 계획서)
→ 다음 세션 (PM 선택): 1. S311 진행: DART 모듈 구현 + 시총 500 백필 시작 2. S309 v4c 결함 보완 우선 (chart rolling 20일 + 파생 백필) 3. 테마 RS 시스템 먼저 구축 (4축 중 2번 축) 4. 운영 진입: signal-synthesizer에 basis_z 회피 룰 + L×S cell 통합 (4축 중 3번 축 일부 운영)
(S309 본문 — 이력 보존)¶
S309 wrap-up (2026-05-24, Sun 22:33) — 옵션 2(v4b swing ±5%) + 옵션 4(v4c 3-axis) 완료.
옵션 2 결과 (v4b swing ±5%)¶
- swing 7건 (±8% 3 → ±5% 7, ×2.3 표본)
- basis_z 7/7 swing 100% match, mean lead -6.0d (±8%의 14d 압도성은 줄었으나 robustness 확보)
- kr_10y_chg_z 7/7 match, lead -3.9d (신규 부각)
- composite 실패 (가중평균이 개별 신호 희석) → 단일 신호 사용 권장
옵션 4 결과 (v4c — 30분봉 250종목 × L×S × 파생 3-axis)¶
- 데이터 교집합 38일 (2026-02-19~04-14, 파생 종료 4/14 제약으로 PM 75일 미달)
- Baseline D+5/D+10/D+20: +1.16% / +2.14% / +2.78% (강상승장)
- Single-axis 핵심 발견:
- L×S HIGH_HIGH D+10 α +12.61pp ★ (Bull 검증)
- L×S HIGH_LOW (Contrarian) D+20 α +12.83pp ★ (R7 CF7 가설 부분 재검증)
- L×S LOW_HIGH (Top Warning) D+10 α -6.31pp (검증)
- basis_z VERY_HIGH D+20 α -6.97pp ★ (강한 회피 신호, v4b 14d 선행과 정합)
- 3-axis joint top cells:
- UNKNOWN | HIGH_LOW | MID/HIGH → D+20 α +14.04 / +11.61pp ★
- MID | VERY_HIGH_VERY_HIGH | HIGH → D+10 α +8.39pp
- UNKNOWN | LOW_HIGH | HIGH → D+20 α -4.31pp (회피)
결함 (S310 보완 대상)¶
- chart_breadth_z rolling 30일 → 38일 중 30일 UNKNOWN. rolling 20일로 단축 필요
- 파생 4/15~5/22 백필 시 75일 검증 가능
- L×S forward-fill 5일 자기상관 위험
→ 다음 세션 (PM 옵션): 1. chart_breadth rolling 20일 + v4c 재실행 (cell 분류 표본 회복) 2. 파생 4/15~5/22 백필 후 75일 v4c 재실행 (PM 원조건 충족) 3. v3 stock-level conditional alpha (regime × 종목 D+N) 4. 운영 진입: morning/signal-synthesizer에 (a) basis_z VERY_HIGH 회피 룰 + (b) L×S cell 매핑 통합
산출: docs/research/2026-05-24_S309_lxs_v4c_3axis.md + data/backtest/lxs_v4b_swing5/ + data/backtest/lxs_v4c/{merged_3axis.parquet, chart_breadth.parquet, summary.json} + scripts/backtest/lxs_v4b_swing5_derivatives_standalone.py + scripts/backtest/lxs_v4c_chart_quant_deriv.py
(S308 본문 — 이력 보존)¶
S308 wrap-up (2026-05-24, Sun 20:04) — L×S Macro Engine 5단계 검증 사이클(v1→v2a→v2b→v2c→v3) 완료 + KRX 파생 1년 백필(v4a) + 파생 단독 평가(v4b) 완료.
핵심 성과: - L×S Regime 검증: PBO 0.038 / OOS 80% sign match / 극단 cell alpha 증폭 (VERY_HIGH/VERY_HIGH +12.25pp, VERY_LOW/LOW -16.24pp) - PM 통찰 수용: 매크로 = environment/prior + swing 알람 (방향 단독 결정 X, 재료·뉴스의 에너지 결합 필요) - v3 turning point: KOSPI ±8% swing 9건 모두 ±12일 내 부호 100% 부합 - v4b 파생 단독 평가: basis z 14일 선행 ★ (매크로 v3 mean 0d보다 압도적). VKOSPI 선물 z 11d, 외인 선물 OI Δ z 9d 선행 - KRX OpenAPI 1년 백필 가능 확인, raw JSON 729 파일 캐싱 완료 - 파생 v4b도 매크로와 동일: 방향 단독 예측 부적합, swing 시점 알람으로는 우수
산출: docs/work_logs/2026-05-24_S308_lxs_macro_engine.md (work log) + docs/research/2026-05-24_S308_lxs_{v1,v2a,v2b,v2c}_*.md + docs/planning/feature_data_mapping.md + data/backtest/{lxs_v1,lxs_v2,lxs_v2b,lxs_v2c,lxs_v3,lxs_v4,lxs_v4b}/
(이전 S307~S308 진행 — 이력 보존)¶
S308 결함 수정 후 백테스트 재실행 완료 (2026-05-24) — S307big (47,456 samples / 68분) + S307big+OF (1,682 samples / 3분) 재실행. 결함 #1+#2+#3 수정이 alpha 폭증은 없으나 정합성 확보.
핵심 지표 변화: - S307big BUY_STRONG D+20: 수정전 +5.05% sortino 0.75 → 수정후 +5.45% sortino 0.810 (S305 +5.67% 수준 회복, +0.40pp 미세 개선) - S307big+OF BUY_STRONG D+20: 수정전 +27.64% sortino 2.68 (n=25) → 수정후 +29.39% sortino 2.710 calmar 1.841 (n=20) (표본 5건 감소 + alpha 폭 강화) - 전체 baseline / OF active: 수정 전후 거의 동일. PM 6번 교정 "차트만으론 불가" 재확인. - 변경 매트릭스: 1,682 sample 중 6.1%만 verdict 전환. OF 활성화는 strong 분류에 응축 효과.
→ 다음: 퀀트 분석기 구현 진입. docs/planning/discovery_feature_spec.md 후보 피처 → 한국 코퍼스 base-rate 측정. R3/R4/R5 순차 단계별 백테스트.
산출: docs/research/2026-05-24_S307defects_backtest.md + data/backtest/s307big/samples.parquet (post-fix) + data/backtest/s307bigof/samples.parquet (post-fix) + 백업 samples_pre_fix.parquet 2건.
S308 Round 6 매크로 퀀트 리서치 완료 (2026-05-24) — 글로벌자산/금리/원자재/FX/COT/Regime 6개 영역(F1~F6) 병렬 에이전트 fan-out. 검증 신호 4건 + 즉시 구현 산식 12개 + 데이터 보강 갭 8건. 산출: docs/research/20260524_macro_quant_signal_research.md
S308 PM 프레임 캐치 + Round 7 실무 리서치 완료 (2026-05-24) — PM: "매크로의 본질 = ① 유동성이 시장에 들어오는가 + ② 시장참여자 심리가 개선될 가능성이 있는가." Round 7 = 실제 운영자들이 두 축을 어떻게 활용하는가. 3 에이전트 병렬 fan-out (유동성 / 심리 / L×S 결합).
핵심 합의 5건: - Druckenmiller: "유동성이 시장을 움직인다" 18~24M 선행 - Howard Marks pendulum: 심리는 level 아닌 extremes + Δ - Bridgewater 격언: "Sentiment is contrarian at extremes, momentum in the middle" (±2σ vs ±1σ) - Soros reflexivity: L↔S 양방향 feedback, turning point는 사후적 - 다중 컨펌 의무: 최소 3개 축 동시 + tape divergence
4분면 매트릭스: L↑S↑ Bull / L↑S↓ Contrarian Buy ★ (historical 최고 보상) / L↓S↑ Top Warning / L↓S↓ Bear
산출: docs/research/20260524_R7_liquidity_sentiment_practitioner.md + docs/planning/feature_data_mapping.md (PM 프레임 중심 매핑표)
데이터 보강 우선순위: - P0: Fed Net Liquidity(WALCL-TGA-RRP) / DGS3MO / T10YIE / SLOOS - P1: AAII / NAAIM / CNN F&G / VVIX·SKEW - P2: 외인 KTB net / 신용잔고·미수금 / AUD/JPY / Broad USD - P3+: HY 발행 / iTraxx / Naphtha crack / Margin Debt
S308 P0+P1+composite 수집기 라인 가동 완료 (2026-05-24 17:39):
- ✅ scripts/fetch_fed_liquidity.py — WALCL/TGA/RRP/DGS3MO/T10YIE/SLOOS/HY (FRED). Fed Net Liquidity = $5,931B / Δ20d +$230B / z60 +1.35. Estrella P=13.07%. HY regime EUPHORIA.
- ✅ scripts/fetch_sentiment_indices.py — VIX/VIX9D/VIX3M/VVIX/SKEW/AUDJPY (yfinance) + CNN F&G (public JSON). VIX term STRONG_CONTANGO (slope 0.70). CNN F&G 58.6 GREED (1주 -4.6 Δ 음수).
- ✅ scripts/macro/build_lxs_regime.py — L축 5 components + S축 7 components composite + 4분면 분류 + LLM macro_context yaml.
- 현재 regime = L_UP_S_UP_BULL (L=+0.83, S=+1.22). pool ×1.6, momentum tilt, trailing 완화, tail hedge OFF.
- AAII/NAAIM/BofA B&B 등은 paywall (manual CSV backfill stub 명시).
S308 L×S v1 첫 백테스트 완료 (2026-05-24 17:42) — 32,905 samples (HY 가용 2023-05-23~). FRED 기반 L축 3 components + S축 2 components proxy 합성. 유의미한 패턴 실증: - L↑S↑ Bull: D+20 +6.98% (alpha +2.46pp), BUY_STRONG +11.78%, sharpe 0.345 ★ - L↑S↓ Contrarian: +5.25% (+0.74pp) - L↓S↓ Bear: +4.33% (-0.18pp) - L↓S↑ Top Warning: +3.14% (alpha -1.37pp), win 49.74% (꼭지 경고 검증) - regime 사이 alpha 격차 3.83pp = 운영자 분기에 충분한 신호
핵심 결론: Druckenmiller "유동성이 시장을 움직인다" 1차 정량 검증 (L↑ vs L↓ 평균 ~3pp / S↑ vs S↓ ~1pp). PM 프레임의 직관(유동성 + 심리 동반 강세 = 최고 환경) 실증. 단 R7 CF7 "L↑S↓ Contrarian = 최고 보상"은 한국 코퍼스에서 부분 충족 (위기 직후 사례가 본 기간에 없음).
한계: HY 2023-05 이전 14개월 손실 / S축 v1은 FRED 2 components만 / 한국 데이터(VKOSPI/외인선물) 미통합 / DSR-PBO 미실행 / 단순 0 임계 분류
산출: docs/research/2026-05-24_S308_lxs_v1_backtest.md + data/backtest/lxs_v1/{samples_labeled.parquet, regime_matrix.json}
S308 L×S v2a 백테스트 완료 (2026-05-24 17:55) — S축 7 components (VIX 텀/VRP/VVIX/SKEW/AUDJPY/Real Yield/HY Δ) + L축 4 components (Fed Net Liquidity/HY/Estrella/외인 KOSPI net) 합성. yfinance 1,081 days + Naver 외인 net 1,054 days 백필.
R7 CF7 가설 한국 검증: - L↑S↓ Contrarian: alpha +1.95pp ★ (v1 +0.74 → +1.22pp 개선) — 최고 보상 가설 검증 - L↑S↑ Bull: alpha +1.69pp, sharpe 0.311 ★ 최고 (n=12,688 안정 anchor) - L↓S↑ Top Warning: -1.11pp - L↓S↓ Bear: -1.43pp (S축 추가로 정밀도 향상) - 격차 3.38pp / L↑ vs L↓ 평균 격차 +3.09pp (Druckenmiller "유동성이 시장을 움직인다" 정량 검증)
BUY_STRONG: L↑S↓ +11.53% / L↑S↑ +9.88%. Contrarian n=6 표본 적음.
산출: docs/research/2026-05-24_S308_lxs_v2a_backtest.md + data/backtest/lxs_v2/{historical_sentiment.parquet, historical_korea_flow.parquet, samples_labeled_v2.parquet, regime_matrix_v2.json}
S308 L×S v2b 백테스트 완료 (2026-05-24 18:17) — 임계 4분위 세분화(16-cell) + Δ-기반 layer (Druckenmiller "change of pace").
핵심 발견 (가장 강한 신호 추출): - L:VERY_HIGH/S:VERY_HIGH ★ alpha +12.12pp sharpe 0.625 win 76% (n=1,429) — 단일 최고 - L:LOW/S:VERY_LOW (진짜 Contrarian): +5.39pp sharpe 0.683 (n=480) - L:VERY_LOW/S:LOW ★ alpha -9.86pp sharpe -0.377 win 26% (n=1,157) — 단일 최악 회피 - Δ BOTH_IMPROVING alpha +2.25pp sharpe 0.347 (n=8,073) — Druckenmiller "change of pace" 검증 - Bear + L_IMPROVING_ONLY = 회복 진입 신호 ★★ alpha +3.84pp sharpe 0.424 (n=1,178) — "유동성 회복 시작 + 심리 아직 공포" - Bull + S_IMPROVING_ONLY = 꼭지권 함정 -2.85pp (L 식는데 S만 회복)
신호 격차 22pp (v2a의 3.38pp의 6.5배 강화). BUY_STRONG × VERY_HIGH/VERY_HIGH n=16에서 +24.49% win 75%.
운영 룰 권고: Tier 1 (sharpe≥0.4) pool×2.0 / Tier 2 (0.25~0.4) pool×1.2 / Tier 3 (회피) pool×0.2 + tail hedge
산출: docs/research/2026-05-24_S308_lxs_v2b_backtest.md + data/backtest/lxs_v2b/{samples_labeled_v2b.parquet, cell_matrix.json}
S308 L×S v2c 검증 완료 (2026-05-24 18:26) — DSR + PBO + Purged CV + OOS Holdout 4종.
검증 결과: - DSR (64 hypothesis 보정): 0 cells significant @ 5% ❌ — 개별 sharpe 통계 우위 입증 X - PBO: 0.0381 (3.81%) ✅ — cell selection 매우 안정 - Purged CV (5-fold, 20d embargo): 극단 cell 100% sign consistency ✅ - OOS Holdout (cutoff 2025-10-01): 8/10 sign match (80%) ✅, 극단 cell alpha 증폭: - VERY_HIGH/VERY_HIGH: IS +0.67pp → OOS +12.25pp ★ - VERY_LOW/LOW: IS -8.20pp → OOS -16.24pp ★
최종 운영 룰: - Tier 1 ★ (OOS 검증 + Purged 1.0): VERY_HIGH/VERY_HIGH → pool×2.0 momentum / VERY_LOW/LOW → pool×0.2 + tail hedge - Tier 2: HIGH/VERY_HIGH, HIGH/HIGH, LOW/VERY_HIGH, VERY_LOW/VERY_HIGH/HIGH, LOW/LOW → pool 0.5~1.2 정상 - Tier 3 (보류): LOW/HIGH, HIGH/LOW — sign flip, 운영 보류 - Δ-layer: LLM macro_context 보조 신호로만 사용 (DSR 미검증)
핵심 결론: 신호 견고성 검증 통과 (mean alpha 기반). sharpe 통계 보장은 못함. 극단 cell 운영 가능.
산출: docs/research/2026-05-24_S308_lxs_v2c_validation.md + data/backtest/lxs_v2c/validation_report.json
→ 다음: (a) 운영 진입 (morning/signal-synthesizer LLM macro_context 통합) / (b) VKOSPI 백필 + bear regime OOS 확보 / (c) v3 종목 단위 stock-conditional alpha. PM 결정 대기.
(S307 본문 — 이력 보존)¶
S307 (2026-05-24): OF 30분봉 정책 적용 + cp 동적 임계 + 4 trigger 원전 정합성 점검 + 임의 가드 분류·기록 + 백테스트 16,172 samples 실행 (S305 대비).
S307 백테스트 핵심: - 90.9% verdict 동일, 9.1% 변경. 모집단·baseline(D+60 +12.75%) 일치. - AVOID 1473→763 (-48%) / AVOID_STRONG 289→902 (+212%) — OF 제외로 strong_threshold 4→3 충족 쉬워짐. - BUY_STRONG 241→144 (-40%), D+60 alpha -2.42pp — STRONG 분류 정밀도 약화 (주의 사항). - AVOID_STRONG 표본 ×3.1 증가에도 D+20 alpha +0.72pp 개선 — SELL 강도 신호 일관. - 5건 명백 오답: D1 KT&G 2025-03-06만 AVOID → MIXED_SELL_LEAN (실제 +25.40%, SELL 약화 = 정답 방향). 나머지 9개 시점 동일. - 5건 본질 미해결 — 차트 신호 미발화(SC/BC=0) 문제는 trigger 변경으로 안 풀림. PM "차트만으론 불가, 시장+재료 결합 필요" 재확인.
산출 백테스트: docs/research/2026-05-24_S307_backtest.md + data/backtest/s307/samples.parquet + scripts/backtest/s307_{run_backtest, compare, cases_check}.py.
S307+OF 백테스트 (80종목, 2026-05-24):
- 가용 549 sample / OF active 18 / BUY_STRONG D+20 OF active 측정 시 강한 alpha
- 산출: docs/research/2026-05-24_S307of_backtest.md
S307big — universe 확장 250종목 백테스트 + Risk Metrics (2026-05-24):
- KOSPI 50→150, KOSDAQ 30→100. 일봉 fetch 10초(167/170), 30분봉 fetch 181초(170/170)
- S307big (4 trigger): 47,456 samples / 62분 — 표본 ×2.93 확장
- S307big+OF (5 trigger, 가용 범위): 1,682 samples / 165초 — OF active 73건 (BUY 65, SELL 8)
- Baseline 약화: D+20 +4.14% → +3.41%, calmar 0.38 → 0.31 (시총 51~250위 추가 효과)
- BUY_STRONG: S305 +5.67% sortino 0.81 calmar 0.44 → S307big +5.05% sortino 0.75 → S307big+OF +27.64% sortino 2.68 calmar 1.74 (n=25 신뢰구간 큼)
- BUY: S307big+OF +12.67% sortino 2.09 calmar 0.98 (n=286)
- 전체 baseline: S307big+OF +11.33% sharpe 0.41 sortino 1.47 calmar 0.85 (n=1682)
- OF BUY (n=65): +15.16% sortino 2.16 calmar 1.27
- OF SELL (n=8): +23.95% downside 0 = 8건 모두 양수 = OF SELL 단독 실패 확정 (PM "차트+시장+재료 결합" 직접 확인)
- MDD worst -60%대 (S305/S307big) — 시총 작은 종목 단일 종목 큰 낙폭 위험
- 산출: docs/research/2026-05-24_S307big_backtest.md + data/backtest/s307big/ + data/backtest/s307bigof/ + scripts/backtest/s307big*_*.py
S307 차트 분석 모듈 결함 점검 + 수정 (2026-05-24 마지막):
- 점검 8개 파일 — vsa_signals/vsa_trigger/wyckoff/wyckoff_trigger/amt/volume_profile/bulkowski/order_flow/of_trigger/_retracement/_thresholds
- 결함 #1+#2 _retracement.py — UP/DOWN impulse_pct + retrace_pct 분모 4가지 조합 불일치. 표준 Fibonacci 정의 위반(예: 100→200, 145 회복 시 표준 55% vs 코드 27.5%). 수정 — distance 비율로 일관화
- 결함 #3 wyckoff_trigger.py — Spring/UT 검출의 support_tr = min(전체) 자기참조. 마지막 봉 신저점 시 Spring 미발화. 수정 — last_segment 제외 신규 support_for_event 산출
- 결함 #4 bulkowski_trigger.py — today_idx와 seg 사이 5봉 갭 원전 출처 불명. 주석만 추가, PM 결정 대기
- 정합 확인 (변경 없음): vsa_signals 8신호(Williams) / volume_profile POC/VA(Steidlmayer) / order_flow BVC/CVD(Easley 2012) / _thresholds percentile
- Smoke test 5건: 4건 verdict 동일, E1 sell vote 2→3 (Bulkowski 추가). retrace_ratio 모두 값 변경 확인.
- 영향: S304 이후 모든 백테스트의 retrace_label/retrace_override 산출이 표준과 다르게 계산됨 + Wyckoff Spring/UT 발화 빈도 저하
- 산출: docs/research/2026-05-24_S307_defects_fix.md + docs/work_logs/2026-05-24_S307_defects_fix.md
S307 핵심 결과:
1. OF 30분봉/900봉 정책 확정 (PM) — 일봉 fallback 폐기. 키움 ka10080 fetcher + 005930 캐시. intraday_available → of_30m 인자 교체. of_30m=None이면 OF trigger 자동 제외 (4 trigger).
2. cp 동적 임계 (PM "종목별 rolling") — _thresholds.compute_cp_climax_thresholds (252봉 rolling, Q90 vol 봉의 cp 분포 Q70/Q30). vsa_trigger SC/BC mask 동적 cp + wide_mask 제거. vsa_signals 호환 alias. 5건 동적 임계 산출 검증 (sample_n=26).
3. AMT POC 정체 동적화 — poc_mig < 0.15 → 이미 S302 산출된 poc_stable_band (ATR 25th) 적용.
4. 임의 가드 12+건 유지 결정 (PM) — "관행으로 충분, 룰베이스 최적해 불가". last_age <= 5 / cause_bars >= 3 / swing 보너스 / POC 이동 0.3 / VAH·VAL·LVN ATR 0.5 / rotation ±4 / 터치 1% / slope 0.1% / flag 평행 30% / box height 15-20% 등. 리포트에 분류 기록.
5. 5건 verdict — D1만 AVOID → AVOID_STRONG (OF 제외로 strong_threshold 4→3 충족). 나머지 4건 동일. 5건 명백 오답 자체는 그대로 (PM "차트만으로 해결 불가, 시장+재료 결합 필요").
S307 PM 교정 6건: 1. OF는 30분봉/900봉 (일봉 fallback X) 2. 원전에 있는 것만 제대로 구현 (임의 추가 X) 3. 임계는 한국 시장 종목별 rolling으로 동적 4. 관행적 임계는 그대로 OK (룰베이스 최적해 불가) 5. 위치=감정 매핑 금지 (본질 매트릭스만) 6. 만능 차트 분석기 X — 시장+재료 결합 필요
산출 S307: docs/research/2026-05-24_S307_originalsource_compliance.md + docs/work_logs/2026-05-24_S307_originalsource_check.md + 8개 코드 파일 변경 + data/minute_charts/30min/005930.parquet.
다음 (PM 결정 대기): - 다른 종목 30분봉 캐시 확장 (지금은 005930만) - vsa_signals.py와 vsa_trigger.py 임계 체계 일관화 (multiplier vs percentile) - 차트 + 시장 상황 + 재료 결합 시스템 설계 (PM 6번 교정의 본격 응답)
(이전 Next Step — S307 롤백, 보존용)¶
S307 진행 (2026-05-24): PM 제안 3 패치 시도 → 도중 PM 교정 → 전부 롤백. (S307 본격 점검 진행 전 단계)
산출 S306: scripts/backtest/s306_{diagnose, climax_check}.py + data/backtest/s306/diagnostics.json + docs/research/2026-05-24_S306_misjudgment_root_cause.md + docs/work_logs/2026-05-24_S306_misjudgment_diagnosis.md.
이월: 정규 EVENING 실행 시 §2.5 슬림화 실동작 확인(S297). survivorship bias 보정.
(이전 Next Step — S305 마무리, 보존용)¶
PM 종합 교정 (S305 마지막): "모든 경우에 다 맞추는 시스템은 만들 수 없다. 명백히 잘못된 경우에 왜 그런지 살펴볼 수 있을 뿐."
-> S306: 명백 오답 5건 원인 분석 (PM 직접 지시). S305 다양한 케이스 검증에서 명확한 오답 5건 식별됨. 공통 패턴 = 저점 매도 4건 + 신고가 BUY 1건. 모든 케이스 적중이 아니라 명백 결함의 원인 파악이 목표.
5건 명백 오답 원인 분석: 1. A3 한화에어로 2025-09-30 — pos60=94% 신고가인데 PERSIST/UP → MIXED_BUY_LEAN. 실제 D+60 -14.54%. 신고가 BC (Buying Climax) 미검출. retrace만으로는 고점 매수 위험 못 잡음. 2. B1 삼전 2022-09-30 / B3 LGES 2023-11-01 — 큰 DOWN impulse 진행 중 SELL → 실제 반등. Selling Climax + AR 패턴 미검출. 3. D1 KT&G 2025-03-15 — pos60=2% (60일 최저점)인데 DOWN impulse PERSIST → AVOID. 실제 D+60 +29.68%. 저점 도달 = 더 빠질 곳 없음 인식 부재. 4. E1 카카오 2022-10-15 — DOWN impulse -43.9%, retrace 19.8% PERSIST → SELL. 실제 D+60 +18.87%. 동일 저점 매도 패턴.
공통 결함: ① Selling Climax 검출 강화 (큰 vol + 저점 + close 회복) ② 다중 윈도우 impulse (60/120/252) — 60봉 안에 갇혀 더 큰 추세 못 봄 ③ 신고가 BC 검출.
산출 S305:
scripts/backtest/s305_{run_backtest, compare}.py+data/backtest/s305/samples.parquet(16,172 samples) +docs/research/2026-05-23_S305_retrace_gate_backtest.md+docs/work_logs/2026-05-23_S305_retrace_backtest.md.이월: 다음 정규 EVENING 실행 시 §2.5 슬림화 실동작 확인(S297). survivorship bias 보정.
S305 추가 (다양한 케이스 검증, 2026-05-23 마지막): 13개 케이스 (A 신고가 회복 / B 하락 진행 / C V자 / D 횡보 / E 추세전환 / F KOSDAQ 변동성) 직접 실행: - 명확한 정답 (3): A2 기아 2024-07 / E2 LGES 2024-04 / F1 HLB 2024-06 (DOWN -65% 후 retrace 58.4% RESOLVING_MID → BUY → D+60 +45.10%, S304 게이트 의도대로 작동) - 부분 정답 (5): A1, B2, C1, C2, F2 - 명확한 오답 (5): A3 신고가 BUY → -14.54% / B1 삼전 저점 SELL / B3 LGES 저점 SELL / D1 KT&G 최저점 AVOID → +29.68% / E1 카카오 저점 SELL → +18.87% - PM 종합 교정: "모든 경우 적중 X. 명백 결함만 원인 분석". S306 방향 확정.
S305 완료 (2026-05-23): 1. 백테스트 16,172 samples — 21분. S303과 동일 모집단/캐시, aggregator만 S304 retrace 게이트(current 기반) 적용. retrace_override 발생 12,492 / 16,172 = 77.2%. 2. Verdict 분포 폭발적 변화 — 55.2% sample이 verdict 변경됨. MIXED_BUY_LEAN 2,712 → 6,233 (+130%), BUY 953 → 2,625 (+175%), BUY_STRONG 91 → 241 (+165%), MIXED 3,913 → 1,552 (-60%). 3. BUY가 baseline 초과로 전환 — S303 D+60 +11.19% (baseline -1.56pp) → S305 +15.25% (baseline +2.50pp alpha). "추격 매수 위험" 해결. 4. BUY_STRONG alpha 안정성 — 표본 91→241 (165% 증가)에도 D+60 alpha 유지(+18.39 → +18.57%). 새로 발견된 신호도 진짜. 5. retrace_override 자체가 alpha 신호 — override sample D+60 +14.25% vs no_override +7.79% (delta +6.46pp). 게이트가 들어간 sample이 alpha 추출 잘 됨. 6. MIXED → BUY/BUY_LEAN으로의 흐름이 가장 큼 — MIXED 3,913 중 821개가 BUY로 + 821개가 MIXED_BUY_LEAN으로. 이전 "모름"이었던 시점의 절반이 retrace 분석으로 명확한 방향 판정. 7. MIXED 잔여 1,552는 진짜 모름 — baseline 미만 수익률(D+60 +11.90% vs baseline +12.75%). 진입 회피가 정답.
PM 교정 (S305): - S304 retrace 게이트가 광범위 효과 (77% sample에서 발동). 4/15류 특수 케이스가 아니라 보편적 신호 추출. - BUY 발생 빈도 175% 증가는 alpha 동반 → "추격 매수"가 아니라 정상 진입 시점 발굴. - MIXED 60% 감소 = 시스템이 "모름" 라벨 줄이고 명확한 방향성 잡음. - 그러나 77% override는 과적합 우려. S306에서 sustainability 검증 필요.
S304 완료 (2026-05-23):
1. PM 결함 지적 — "20일 +300%, 5일 -30%가 균형 회귀인가?" 질문. 코드 검토 결과 시스템에 회수율(retracement) 측정자 부재 확정. pchg < -3 등 절대 % 임계만 사용.
2. 5방법론 원전 리서치 — 병렬 에이전트. 5방법론 모두 절대값 아니라 상대값(impulse 대비 retracement) 기준 확인. VSA bar-by-bar, Wyckoff TR 폭, AMT VA 70%, Bulkowski breakout 근접, Fibonacci/Elliott 38.2/50/61.8, Dow 1/3·2/3 — 동일 결론.
3. Fibonacci 표준 임계 채택 — 23.6 / 38.2 / 50 / 61.8 / 78.6 / 100%. TradingView·MetaTrader·ThinkOrSwim 표준.
4. _retracement.py 신규 — find_impulse_retracement(ohlcv, lookback=60). 직전 60봉 swing high/low로 impulse 식별 + 그 후 retracement 측정 + 6 라벨(PERSIST/RESOLVING_EARLY/MID/LATE/RETURNING/BREAKING) + time_asymmetry.
5. Wyckoff retrace 게이트 — 4상태 판정 후 retrace_ratio 기반 강제 재라벨: 38.2~78.6% → RESOLVING, <38.2% & RESOLVING → PERSIST 강등, >=100% → BREAKING.
6. VSA retrace 게이트 — pchg < -3 절대 임계로 발화한 RESOLVING이 retrace 미달이면 PERSIST 강등. 5방법론 원전 정합.
7. Bulkowski reversal 정합성 — double_bottom/top reversal 시 retrace < 38.2%면 PERSIST 강등 (얕은 조정에 우연 형성된 패턴 오인 방지).
8. AMT skip — POC migration이 retrace와 다른 차원(거래대금 중심 이동).
9. PM 예시 검증 — Case A (+300%/-30%) retrace_ratio 10.1% PERSIST (PM 직관과 일치). Case B (-50%) 16.6% PERSIST (절대 큰 하락도 impulse 대비는 작음).
10. PM 2차 결함 지적 — "4/15는 전고점 근접인데 retrace 43.9%로 SELL?" 모듈이 max-retrace-ever만 측정. 옵션 B로 수정: retrace_ratio_current (현재 close 기준, state 판정용) + retrace_ratio_max (이력 메타) 둘 다 산출. state 판정 = current 기반.
11. 005930 4/15 재검증 — CUR 9.4% / MAX 43.9% → PERSIST/UP → MIXED_BUY_LEAN (PM 직관 복원). CUR-MAX 34.5%p 차이가 "한번 깊게 빠졌다 회복"을 보여줌. 3/9·3/31은 CUR≈MAX로 변화 없음.
PM 교정 (S304):
- 절대 % 임계는 원전 위반. 5방법론 모두 상대값(impulse 대비) 기준.
- Fibonacci 38.2/50/61.8은 황금비(1.618) 역수 + Wave 2 표준 + Dow 50% 룰 통합 합의 임계.
- 절대 -50% 폭락도 impulse 300% 대비 17%면 PERSIST (추세 지속). 절대값과 상대값 결과 다름.
- state 판정 = current 기반. 5방법론 원전 모두 "현재 위치"를 봄. max-retrace-ever는 메타로만.
- 각 trigger window_meta.retrace_ratio_current + retrace_ratio_max 강제 노출.
- CUR vs MAX 차이가 클수록 = 회복 폭이 큼. 향후 "한번 깊게 빠졌다 회복" 강세 신호로 활용 가능.
S303 완료 (2026-05-23): 1. 모집단 — FDR StockListing 시총 상위 KOSPI 50 + KOSDAQ 30 = 80종목 (2026-05 기준 고정). survivorship bias 한계 명시 2. OHLCV 일괄 수집 — 2021-07 ~ 2026-05 80종목 1,197봉 캐시. parquet 형식 (5초 소요) 3. 백테스트 실행 — 시점 매 5 영업일, 시점 t까지 데이터만 사용 (look-ahead 차단). 16,297 samples / 22.7분 (시점당 ~76ms) 4. 호라이즌 — D+5/10/20/60 close return + max-high + Time-to-+5%/+10%/-5%. MDD D+20 5. 다중 지표 — Hit Rate / Mean / Median / MDD / Sharpe / Calmar / Profit Factor / 속도 6. Baseline 발견 — 백테스트 기간 자체 강한 상승장. ALL D+60 mean +12.75%, win 59.76%. alpha 비교 필수 7. BUY_STRONG만 명확한 edge — n=91 (0.6%), D+60 +18.39% (alpha +5.64pp), Sharpe 0.49, PF 4.69. KOSDAQ BUY_STRONG D+20 +13.16% (alpha +7.74pp), 도달 속도 +5% median 5.5일 8. MIXED 73% 정보 없음 — MIXED 계열 (5,334 + 3,913 + 2,712) = 73% 점유, D+20 mean 모두 +4%대 (baseline +4.15%와 일치). 시스템이 "모름" 정직 표현 9. AVOID 가치 확인 — CAUTION (D+60 -6.83pp alpha), WATCH (-7.90pp). 2022 하락장에서 WATCH -1.13%, MIXED_BUY_LEAN -0.68%, AVOID +1.02% (체계적 회피 효과) 10. BUY 추격 매수 위험 — 단독 BUY (953) D+60 alpha -1.56pp. baseline 미만. 진입가 고점 가능성
PM 교정 (S303): - 5/22 시점 검증 부적절 지적 (D+N 미래 데이터 없음). 과거 시점에 walk. - 임의 percentile 매핑 X → 원전 출처 리서치 후 75/90/97 채택 (TradingView 표준). - alpha = verdict mean - baseline mean 비교 (절대값 X). 백테스트 기간 상승장. - BUY_STRONG만 신뢰. 단일 BUY 신호는 추격 매수 위험. 다중 합의 4+ vote가 진짜 신호. - AVOID > AVOID_STRONG 역전 → 5 vote 임계 차별화 부족, 재조정 필요.
S302 완료 (2026-05-23):
1. 5 trigger 임계 근거 리서치 — 병렬 에이전트 2개. 발견: VSA HIGH×1.8, ULTRA×3.0, WIDE×1.2, NARROW×0.83, Wyckoff Climax×2.0, AMT POC stable 0.15, Bulkowski vol_confirm×1.2 모두 원전 미명시 벤더 관행. Spring 침범 0.998은 원전 1~3%(Robert Evans) 대비 10배 과민. AMT VA 0.70만 원전 통계(Steidlmayer 1σ).
2. _thresholds.py 신규 — 종목별 60일 rolling percentile 임계 산출 유틸. vol 25/50/70/75/90/97 + spread 25/75 + ATR 25th. Williams multiplier 폐기.
3. VSA trigger 임계 교체 — HIGH×1.8 → vol_climax(90%ile), WIDE×1.2 → spread_wide(75%ile), NARROW×0.83 → spread_narrow(25%ile). bullish/bearish 봉 분류도 vol_median 기준.
4. Wyckoff Spring 침범 0.2% → 1% — Robert Evans 원전 최소값 채택. 한국 일봉에서 거의 발화 안 하던 문제 해결.
5. AMT POC stable 0.15 → ATR 25th percentile — 종목별 변동성 동적. 005930 = 0.30(clip 상한). VA 0.70은 원전 유지.
6. Bulkowski vol_confirm ×1.2 → vol_confirm(70%ile) — Bulkowski thepatternsite.com은 30일 평균 ratio 분석, 1.2 명문 없음.
7. 각 trigger window_meta에 thresholds_source 강제 — percentile_60d / atr_p25_60d / percentile_70_60d / fallback_ 출력.
8. 3시점 walk 재실행 (005930)* — 3/9·3/31 verdict 동일, 4/15 verdict MIXED 동일(SELL conf 1.30→1.20 감소). 4/15 VSA가 BALANCE_BREAKING/DOWN → IMBALANCE_RESOLVING/UP으로 전환(spread narrow 임계 종목 분포 정합). S301 대비 보수적, 실제 D+20 +28.2% BUY 정답과 부합 방향.
PM 교정 (S302): - 임계 보정 시작 전 "왜 1.8?" 근거 부재 지적 → 학습 데이터로 70%ile 임의 매핑 시도 차단. - 벤더 multiplier 폐기, percentile 채택은 거래량 로그정규 분포 학술적 근거 + TradingView 표준(75/90/97). - AMT VA 0.70만 원전(Steidlmayer 1σ), 나머지는 모두 종목별 분포 측정으로 전환. - 각 임계는 출처 명시 + thresholds_source 메타 강제: 어떤 임계에서 나온 신호인지 추적 가능.
S301 완료 (2026-05-23):
1. 5방법론 원전 lookback 리서치 — 병렬 에이전트 2개로 출처 인용 리서치. VSA(Williams 30봉/Better Volume 20봉/원전 No Demand 3봉), Wyckoff(Pruden 4국면 합산 40~125봉/Spring TR ±3봉), AMT(Steidlmayer composite 20+60+120 동시/Aspen default 20일), Bulkowski(thepatternsite.com median 65일/Flag 3주/Pennant 20일), Order Flow(Easley/LdP/O'Hara 2012 BVC 65분 79.7%/Bookmap 일봉 CVD divergence OK).
2. vsa_trigger.py 신호별 윈도우 분리 — VOL_BASELINE_N=30 + CLIMAX_LOOKBACK=20 + ND_NS_LOOKBACK=3 + TREND_N=20. SC/BC는 20봉 윈도우, No Demand/No Supply는 직전 3봉 원전 정의 그대로.
3. wyckoff_trigger.py TR 125봉 확장 — TR_LOOKBACK=125 (Pruden 표준) + EVENT_WINDOW=3 (Spring/UT 단봉 이벤트). 데이터 부족 시 TR_MIN_FALLBACK=60. TR 경계 ±3봉 침범 후 회귀 자동 검출.
4. amt_trigger.py multi-window 합의 — WINDOW_SHORT=20 / MID=60 / LONG=120 동시 호출 → 합의 카운트 기반 confidence 조정 (2+동조 ×1.0 / long단독 ×0.7 / 불일치 ×0.6).
5. bulkowski_trigger.py 패턴별 윈도우 — RECTANGLE_N=65 + FLAG_N=15 + PENNANT_N=20. 3 윈도우에서 각각 패턴 식별 시도, Breakout+vol_confirm 우선 채택.
6. of_trigger.py 일봉 fallback mode 분기 — intraday_available=False일 때 CVD divergence만 사용(BVC 제외). 일봉 모드 confidence 보수적(base 0.25 / step 0.20). mode 라벨 신호에 명시.
7. aggregator.py window_summary 집계 — 각 trigger의 window_meta를 자동 수집하여 verdict와 함께 노출. intraday_available 플래그 결과에 명시.
8. 4시점 walk 검증 (005930) — 3/9 MIXED_BUY_LEAN(유지) / 3/31 MIXED→MIXED_BUY_LEAN(상향) / 4/15 MIXED_SELL_LEAN→MIXED(상향) / 5/22 MIXED_BUY_LEAN. TR 125 확장으로 큰 추세 컨텍스트 반영, AMT multi-window 합의로 단기 노이즈 필터.
PM 교정 (S301):
- 원전 위반 단일 윈도우 단순화 폐기. 신호/패턴별 분리가 원전 기준.
- BVC 일봉 제외 정당(Easley 2012 통계), 단 CVD divergence는 일봉 long-term flow 신호로 합법(Bookmap).
- 각 trigger 결과에 window_meta 강제 → 어떤 윈도우에서 나온 신호인지 추적 가능.
S300 완료 (2026-05-23):
1. R3 32개 측정자 모듈화 — volume_profile.py(POC/VA/HVN/LVN/Rotation/Migration/거래대금 비대칭/overhang 정규화), vsa_signals.py(8신호+Spring/Upthrust), order_flow.py(BVC/CVD/Absorption/Exhaustion 일봉 fallback), wyckoff.py(4국면+11이벤트+3법칙).
2. 5방법론 매수/매도 결정 로직 원전 리서치 — VSA(3축 confirmation), Wyckoff(Spring→SOS→LPS 시퀀스), AMT(POC/VA edge), Order Flow(divergence+absorption), Bulkowski(breakout+confirmation). 공통 = 다중 confirmation 필수.
3. 4상태 매트릭스 신설 (_state4.py) — PM 정의: 불균형 지속 / 불균형 해소 / 균형 유지 / 균형 이탈 + 방향(UP/DOWN). 매수/매도는 자동 도출.
4. 4 trigger 본래 도구 재작성 — VSA(spread·close·volume 3축만), Wyckoff(HH/HL 시퀀스+S/R+이벤트+3법칙), AMT(VA/POC/migration/overhang만), Bulkowski(명명 패턴 식별+breakout+throwback). 가중합 폐기, 측정자 임의 매핑 폐기.
5. 일봉 모드 OF 제외 — R3 CF4 명시대로(분봉이 본래 그릇). aggregator intraday_available 인자.
6. 38일 walk + 3시점(3/9·3/31·4/15) 검증 — 4상태가 실제 출력에 나타남. 그러나 윈도우 불일치로 방법론 합의 부재.
PM 교정 (S300, 6건): - 임의 측정자 합산 금지 / 답 맞추기 금지 / 일봉 OF 제외 / 단순화 X / 4상태 매트릭스 / 윈도우 통일 1순위.
주말 수정 대기 (2026-05-22 세션 적출 — PM이 주말 일괄 수정 예정)¶
- 장중 지수 REST 배선 —
kiwoom_rest_api.py에get_sector_index()/get_all_sector_index()추가 완료(ka20001/ka20003,/api/dostk/sect). 그러나run_routine.py데이터 수집부에 미배선 → mid_morning 등 시간대 루틴이 장중 KOSPI/KOSDAQ 지수를 못 받음. 원칙: 장중 데이터는 키움 REST API 1순위. yfinance ^KS11/^KQ11은 오류값(5/22 KOSPI +9% 산출, 실측 +0.13%) → 지수에 yfinance 사용 금지. - run_routine.py 인코딩 버그 — subprocess stdout을 cp949로 캡처 → mid_morning collected JSON의 한글 종목명 mojibake, step_V는
UnicodeDecodeError로 실패. subprocess 캡처에encoding='utf-8'강제 필요. - material-grader 가격·날짜 검증 (S299 EVENING도 3층 적용 완료, 검증 대기) — morning은
step_agents.py/material-grader.md로 5/22 완료. S299에서 EVENING도 동일 결함 발생(5/21 종가를 5/22 급등으로 라벨링) → 3층 구조 신설:scripts/lib/verified_price.py(키움 REST·Naver·FDR 교차검증 단일 출처),evening/material-grader.md에 가격 출처 분리 원칙,step_materials.grade()에 검증 가격 표 주입 + Layer 3 스캔 + 소스 date 보존(텔레그램·RSS 재료에source_date추가 + grade 프롬프트에 "source_date < 기준일이면 '오늘'로 쓰지 마라" 지시). 다음 MORNING_OPEN·EVENING에서 가격/날짜 오인용 재발 여부 검증. - 발굴 시스템 신설 (Topic system_redesign 본체) — 5/22 세션 PM 진단: 시스템이 '시황 정리'에 멈춤. 결정사항: ① 발굴 시스템을 리포팅 시스템과 분리(독립 1급 시스템, 리포트는 입력 참조) ② 구조 = 분석기법 레이어(raw→정규화·구조화·확률화 사실) → 제약된 에이전트 종합 → verdict(D+N 상승/조정) ③ LLM 실시간/룰베이스 하이브리드는 배제, 알파는 LLM 해석(뉴스·차트·심리)에서 ④ 에이전트 게으름은 입력·출력 스키마 강제로 차단(harness 검증) ⑤ base rate는 한국 코퍼스 자체 측정. 외부 리서치 5라운드 완료:
20260522_llm_trading_discovery_research.md(LLM 트레이딩 전반),20260522_llm_interpretation_methods_research.md(해석 방법론),20260522_chart_flow_structuring_research.md(차트·수급 구조화 — 스키마 Layer A/B/C),20260522_quant_discovery_funnel_research.md(퀀트 발굴 funnel — 단 가격 편향),20260522_fundamental_event_signal_research.md(매출·전망·이벤트·대체데이터 — Round 4 가격편향 보강). 발굴 시스템 4층: ①발굴 funnel → ②분석기법 레이어 → ③제약된 LLM 종합 → ④base-rate 엔진+검증. 입력 4영역: 가격(차트·수급) + 매출·전망 + 이벤트 + 대체데이터. 피처 명세 문서화 완료:docs/planning/discovery_feature_spec.md— 도구별(키움·DART·FRED·yfinance·파생·뉴스) 수치화 항목·산식·레퍼런스·Status. 전 피처 ⬜후보, 백테스트 통과 시 ✅. 다음: 데이터 갭 3건 확정(FnGuide 컨센서스 접근·외인기관 순매수 경로·Darvas 보류) → base-rate 엔진 → 첫 백테스트('큰 상승 다음날').
S299 완료 (2026-05-23):
1. EVENING 가격·날짜 검증 3층 — WTI $101 동종 결함 evening 재발(텔레그램 5/21 종가→5/22 급등 오라벨링). 차단 구조: scripts/lib/verified_price.py 신규(키움 REST·Naver·FDR 교차검증 단일 출처 + harness 스캔), .claude/agents/evening/material-grader.md 가격 출처 분리 원칙, scripts/evening/step_materials.py 검증 가격 표 주입 + Layer 3 스캔 + 텔레그램·RSS 재료에 source_date 보존(_norm_date 헬퍼) + grade 프롬프트 날짜 검증 지시. 검증 라인 +8.51%·+11.17%·9,500원 3건 스캔 통과
2. 차트 발굴기 v0 구현 — scripts/discovery/{layer_a.py, state_classifier.py, scan.py} 신규. R3 CF3 단일 불균형 상태기 + 소화 측정. 14필드(price_level 4 + volume_flow 7 + vsa 5 + Layer B 2) + 상태기 7필드(state/age/depth/digestion_buy/sell/diff/urgency). 5/22 30종 2초 처리 검증 (UP 13 / DOWN 2 / BALANCE 13)
3. 차트 발굴 매핑 문서 — docs/planning/chart_discovery_layer_mapping.md 신규. R3 Layer A/B/C → 우리 데이터 1:1 매핑. 개발/연구 단계(전종목×N년)와 실전 운영(funnel 50)의 본질 차이 구분
4. PM framing 교정 (핵심) — 발굴기는 "폭증 종목 찾기"가 아니다. 5질문 답하는 시스템: ①오늘 상승 종목 내일 지속? ②지속 신호 차트 어디? ③상승 후 하락이 조정/종료? ④조정 완료/추가? ⑤시장참여자 가격 반응 readout. 출력 단위 = top N → 종목별 상태 해석문 (다음 세션 재설계 1순위). v0 즉시 결함 3건(balance_thr=0.15 폭등주 BALANCE 분류·urgency 폭발·interest_patterns 0건) 2순위 튜닝
S298 완료 (2026-05-22):
1. MORNING_OPEN·MID_MORNING 20260522 실행 — 리포트 2종 생성. MID_MORNING은 키움 REST 실측 지수로 보정
2. material-grader 가격 오인용 수정 — M4가 5/19 기사의 WTI $101을 현재값 인용(실제 $97.79). step_agents.py _load_price_table() 주입 + material-grader.md "가격 출처 분리/기사 날짜 가드" 원칙. 리포트 M4 정정(A→B급)
3. 장중 지수 키움 REST 추가 — yfinance ^KS11 오류(KOSPI +9% vs 실측 +0.13%) 발견. kiwoom_rest_api.py에 get_sector_index()/get_all_sector_index() 추가(ka20001/ka20003). run_routine 배선은 주말 대기
4. 발굴 시스템 재설계 + 외부 리서치 5라운드 — Topic system_redesign 본체 진전. 발굴 시스템 4층 구조·결정사항 5개 확정. docs/research/20260522_*.md 5종 생성
S297 완료 (2026-05-22):
1. Phase 8.7 알람 transition 단위 검증 — test_leader_alarm.py 신규. 합성 입력 격리 주입, 7개 transition 분기 + 재실행 멱등성 PASS 19/0. S296 "알람 0건"은 baseline 특성 확인
2. 정책 추적 write-back 신설 (M.2.37) — policy-checker가 §3 생성만 하고 POLICY_TRACKER.md에 안 되씀 → 한 달째 미갱신. 행동 5~6단계(write-back + 시한 30일+ 크로스이벤트 아카이브) + Edit 도구 추가. POLICY_TRACKER_ARCHIVE.md 신규(별도 파일). POLICY_TRACKER 수기 갱신 4건. 재실행 검증 통과
3. EVENING 중복 제거 — MORNING 패턴 이식 — §1~§2.5 6개 에이전트가 동일 global_data를 각자 소비 → 원시 지표(10Y/HY/환율) 최대 4회 재서술. POST_MARKET·MORNING은 데이터 unit 분리 + 상류 출력 전달로 중복 없음. macro §1 = 원시 지표 단일 owner, triaxis/intermarket이 raw 대신 §1·triaxis 출력 인용. 재실행 검증 — triaxis·intermarket 인용 전환 ✅
4. EVENING 파생/포지셔닝 폐기 — derivatives + capital-flow는 forward edge 약함(리포트 결론이 "보류, 현물 데이터 대기") + POST_MARKET UNIT 2와 중복 + 야간선물은 MORNING이 적기. 두 step 폐기, §2.5 = triaxis + intermarket(매크로 사이클)만. 방향성 예측 4축(§1/§2/triaxis/intermarket)은 파생 비의존
S296 완료 (2026-05-21):
1. 5/21 POST_MARKET v4 재실행 — morning_view→morning_open 마이그레이션(M.2.32) 반영 검증. signal-scorecard가 20260521_morning_open.md §4 S1~S5를 직접 채점 (carry_forward 추정 아님). 적중률 HIT 5/5(100%)
2. step_signals.py f-string 버그 수정 — L22 {전일}이 Python 변수로 평가돼 name '전일' is not defined로 Phase 3 실패. {{전일}} 이스케이프
3. report_sanitize.py 정규식 보강 2건 — _출처:_(한글·이탤릭 출처목록) + **데이터 한계**:(bold 라벨형 한계 안내문) 미검출 케이스. M.2.30 sanitizer가 영문 Sources·한계 명시만 잡던 것을 한글·라벨형까지 확장
4. 시장 전체 현물 수급 결정적 수집 (M.2.33) — collect_market_investor_flow.py 신규: Naver investorDealTrendDay에서 KOSPI/KOSDAQ 외인/기관/개인 일별 순매수 → 당일/5d/20d 누적 + 기관 6분류. PM-0b market-flow-analyzer가 WebSearch 추정("데이터 미확보" 빈발)에 의존하던 것을 코드 수집으로 전환. run_routine post_market에 MI step 등록 + step_extract unit2 주입 + 에이전트 스펙 Step 1 재작성. (pykrx 전면 불능 확인 — KRX 엔드포인트 변경)
5. US10Y 금리 소스 ^TNX→FRED 일원화 — yfinance ^TNX가 stale/gap 값(5/21 수집: 4.57 -2.04%) 산출, FRED DGS10 실제값(4.67 +6bp, 16개월 최고치)과 충돌. fetch_global_assets.py·collect_macro_series.py 양쪽에서 ^TNX 제거 → FRED DGS10로 일원화 (US2Y의 ^IRX→DGS2 선례 패턴). morning_open S2 "금리 완화" 전제가 잘못된 ^TNX값에 기반했던 것 확인
6. fetch_derivatives_sentiment.py --date 백필 인자 — 루틴이 당일만 수집해 옵션 수집 실패 시 사후 백필 경로 없었음(5/18·5/19 옵션 결손). _DATE_OVERRIDE 모듈 전역 + argparse --date 추가, KR 선물/옵션/매크로선물이 경유하는 get_recent_trading_date() 1곳에서 처리. 5/18·5/19 옵션 백필 완료(KRX OpenAPI opt_bydd_trd basDd). S290 이월 P4 계열
7. 후보 차트 확인 단계 신설 (M.2.34, Phase 8.5) — POST_MARKET 파이프라인에 차트 분석 단계가 0개였음(6축 차트축=RRG 1개, leader-opportunity가 "차트 봐라"로 사람에게 위임). step_chart.py 신설: leader-opportunity 후보 ∪ 주도주(최대 8종목)에 mtf_chart_profiler 자동 실행 → 진입/손절/R:R/VSA 산출. mtf_chart_profiler 손절 로직에 분봉 VP HVN 연결(basis=intraday_hvn). v4 Phase 9 등록 + step_report UNIT 8.5 병합. 5/21 검증 — 8종목, 분봉 손절 4종목 채택
8. 차트 진입 판정 에이전트 신설 (M.2.35, Phase 8.6) — Phase 8.5는 차트 수치(데이터)만 산출, 그걸 읽고 판정하는 해석 주체가 없었음. chart-entry-judge 에이전트 신설: phase8(후보 맥락)+phase8b(차트 수치) 교차 → 종목별 진입/대기/회피. 비대칭 근거(진입=6항목+invalidation, 대기·회피=간결, 메타분석 대비). step_chart_judge.py + v4 Phase 10 + step_report UNIT 8.6. 5/21 검증 — 진입 0/대기 5/회피 3
9. 주도주 상시 감시 + 진입 알람 (M.2.36, Phase 8.7) — 감시는 있으나 "진입 위치 도달"을 띄우는 알람 메커니즘 부재. 2-tier 구조: leader_trigger_scan.py(전체 주도주 가벼운 트리거 4종-눌림/수축/지지/돌파) → 트리거된 것만 8.5/8.6 정밀해석 → step_leader_alarm.py가 8.6 verdict를 leader_watch.json 롤링 + day-over-day 변화 감지(대기→진입 등). 리포트 최상단 "오늘의 알람" 섹션. 5/21 검증 — 트리거 7/8, 감시 8종목 watch 시딩, 알람 0건(첫 실행 baseline)
S295 완료 (2026-05-20~21):
1. 풀데이 루틴 실행 — EVENING(5/20) + MORNING_OPEN/MID_MORNING/AFTERNOON/POST_MARKET(5/21) 전 시간대 신규 파이프라인으로 종단 실행
2. 리포트 sanitizer 신설 (M.2.30) — report_sanitize.py. yaml 덤프/한계명시/성공기준/Sources/포트폴리오비중/한줄행동명령 제거. evening·postmarket·morning 3개 조립부 연결
3. §0 carry-in 제거 + final-picks 정리 — POST_MARKET 인계 본문 재게시 제거, 포트폴리오비중·한줄행동명령을 final-picks.md + step_final_picks.py 양쪽에서 제거
4. 뉴스 수집 노이즈 정리 — kwtok 봇 채널 제거, Fed 행정공시·Al Jazeera 스포츠 패턴 필터, 블라인드 슬롯 컷 폐기
5. 이브닝 재료 체인 원자화 (M.2.31) — material-grader(NC-3)+theme-mapper(NC-6) 신설, material-curator/validator 폐기. 현행 NC-3 이식
6. morning_view 마이그레이션 (M.2.32) — postmarket 5파일 morning_view.json→morning_open.md 직접 읽기 전환
S295 미해결 (이월): - Topic K·L 재검토 → 아카이브 (S294부터 이월)
S294 완료 (2026-05-20): 1. morning/evening 4요소 보강 — morning 4 + evening 12 출력부 점검(전원 마크다운, 조치 불필요) + 4요소 결손 12건 보강(성공기준 8 + 재시도 4) 2. POST_MARKET 5/20 루틴 실행 — run_routine + v4 파이프라인. 리포트 UNIT 1~8 종단 생성 3. leader-opportunity 파이프라인 연결 (M.2.28) — 5-lens 주도주 발굴 에이전트(PM-6) 신설 + v4 Phase 8 등록. GO/WAIT/PASS 판정기 아닌 "뭘 봐야 하나" 발굴 4. 6축 단일 풀 전환 — analyze_stock_6axis --both → pool.json 단일 파일 + pool_status 태그(leading/cooling). 구 cooling.json 미생성 버그 해결 5. flow 갭 수복 — leader pool flow 선수집(FS step을 6A 앞으로) + load_watchlist에 leader pool 추가 6. SCRIPT-E3 복원 — fetch_validated_news ImportError(S290 누락) 복원 7. 파이프라인 버그 2건 (M.2.29) — synthesize verdicts overwrite 수정 + daily_view 폐기(직전 리포트 직접 읽기 전환, 13파일)
S294 미해결 (이월): - 나머지 95개 에이전트 4요소 결손 보강 (보류)
S293 완료 (2026-05-19~20):
1. leader-judge 셸 escape 해결 — claude -p "$(cat)" 백틱 셸 평가 → --append-system-prompt-file 파일 경로 전달로 회피. run_post_market_pipeline + run_6axis_pipeline 양쪽 적용.
2. synthesize VETO_SUBSTANCE → 보너스 전환 — 자동 PASS 제거, compute_substance_bonus() (core +0.05 / unrelated -0.10).
3. postmarket v1→v2 통합 — v4 파이프라인이 postmarket_v2 7 에이전트 호출하도록 step 모듈 재배선 + step_signals/step_discovery 신규. v2 7개 출력부 JSON→마크다운 재작성 (리포트 49,540→18,259자, JSON 9→0).
4. 커맨드 버전 일원화 — rs__v2.md → 기본형 통합, v2 삭제. postmarket_v2 디렉토리 → postmarket rename, 구 v1 → _archive.
5. 288180 단발 확정 — 5/19 DART 단독 공시 없음 + 5/20 -29.99% 하한가.
6. signal-synthesizer 외인 베이스 강화* + PQC 추적 노트 신설.
S293 미해결 (이월): - morning_open / evening 에이전트 출력부 JSON/메타 점검 - 에이전트 4요소 결손 보강 (실패 처리 60개 / 질문 21개 / 성공기준 18개) - daily_view 생성 누락 (5/20 afternoon UNIT 1/2/4/6 미실행) - run_6axis verdicts.json overwrite 버그 (fan-in 분리 필요)
S292 완료 (2026-05-18~19):
1. 신규 4 atom 4-Layer 불균형 — trader/imbalance-{map,dynamics,origin,structure} + mtf_chart_profiler.detect_fvg. 구 wave-candle-integrity/absorption-progress 폐기.
2. leader-judge 파이프라인 재설계 — 명세-코드 괴리(orchestrator가 leader-selector 호출, sector/leader-judge orphan) 해결. build_leader_input.py 신규 + ats_main 176테마 역색인 + run_post_market_pipeline.py Phase 3 교체 + parse_leader_targets YAML 파서 + korea-stock-mcp 펀더 보너스 권한.
3. EVENING 리포트 구조 재정렬 — PM 지적 반영. 0번 carry-in / 10번 종합 / carry_forward 삭제 + 신규 §10 "테마별 주도주". 흐름: 재료 → 테마 선별 → 테마 움직임 → 주도주. rs_evening_v2.md 명세도 동일 갱신.
4. 5/19 풀데이 루틴 실행 — EVENING/MORNING_OPEN/mid_morning/afternoon. 시그널 적중률 양호 (방산 강세 HIT 강+, 메모리 약세 HIT 강, 보험 NIM HIT).
5. 방산주 5/19 갭상승 트리거 식별 — N1 NATO 공급자 프레이밍 + N2 DAPA-NATO 2차 협의 + 한일 정상회담 + 폴란드 K9 carry (A급 structural).
S292 미해결 (이월): - 5/19 POST_MARKET 실행 + 신 leader-judge 파이프라인 종단 검증 - synthesize.py VETO_SUBSTANCE 룰 재검토 (본업100% 종목 자동 거부 우회) - 288180 케이피항공산업 상한가 단발/연속 판정 (5/20 DART + 거래량) - ENFORCE_PIPELINE hook의 도메인 메인 차단 영구 해결(evening/* 전용 사용 강제 명문화)
S291 완료 (2026-05-18):
1. POST_MARKET v2 풀 가동 + UNIT 5.5 Leader Cards 신설 (가온전선/현대해상/주성엔지/HVM 4종 verdict)
2. KRX OpenAPI 9/9 endpoint 연결 — scripts/krx_openapi_client.py 신설, AUTH_KEY: AD912A...4252E0. opt_bydd_trd로 G3 옵션 P/C·Max Pain·VKOSPI proxy 복원
3. KOSPI Directional Bet Scorecard (4축, -7/8 risk_off_strong) — 외인 선물/옵션 P/C OI/10Y 국채선물/달러선물 종합. macro_series.json > kospi_directional_bet
4. PM-6/7/8 wrapper 폐기 — sub-agent에 Agent tool 없는 구조적 한계 확인, skill이 직접 fan-out
5. scripts/aggregate_6axis.py 신설 — 10 atomic agent 결과 → 6축 종합 (verdict 다수결 / score 평균 / confidence 일치도 보정 / conflict_note)
6. synthesize.py 호환성 — _6axis.json 단일 파일 + 타입 가드 추가
7. 010060 OCI홀딩스 end-to-end 검증 성공 — 10 atomic 병렬 fan-out → aggregate → synthesize WAIT (3.41)
S291 미해결 (이월): - 차트 관점 5/11 합의가 v2에 0개 반영 (FVG / 불균형 동태 / aggressor / 주체귀속 / 연쇄·TF정합 / B→A 피드백). 사용자 다음 세션 결정: 차트 에이전트들 변경. - Phase 3 5종 (OCI홀딩스 제외: 스피어/제주반도체/아주IB/미래에셋벤처) 6축 분석 미완 — 5/19 morning 이월 - M.2.26 P3·P4 freshness 잔여 (이전 세션 이월) 보류 상태
보류 (이전 세션): - M.2.26 P3 (postmarket 루틴 실행 시점) - M.2.26 P4 (telegram/evening_news/economic_calendar --date 인자)
S290 완료 (M.2.25):
1. derivatives JSON 파이프라인 복원: fetch_derivatives_sentiment.py stdout-only → 9섹션 JSON 자동 저장 (COT + 야간선물 + SPY/QQQ P/C + VIX 텀구조)
2. 금리 데이터 2건 fix: US10Y 4.45 stale → 4.59 (12h freshness 체크 추가) + US2Y ^IRX (13W T-Bill) 버그 → FRED DGS2 직접 호출 후 inject
3. broker_research 부활: ImportError → naver_stock.py에 research 함수 5개 신규 + 모바일 API 필드 매핑 정정. --date 인자로 backfill 지원
4. 한국 섹터매체 11종 복원 (v1 STEP 2-C 누락 4매체 추가, step_materials 8번째 소스)
5. policy_scan 경로 미스매치 fix (data/policy → data/policy_scan)
6. 5/15 EVENING 리포트 종단 생성 성공 (52KB, 10/10 섹션, 5/15 broker 15건/macro 정정 반영)
7. 데이터 freshness 5대 근본 원인 분류 (A.freshness 체크 부재 / B.fetcher 날짜 인자 부재 / C.경로 미스매치 / D.JSON 저장 부재 / E.upstream 깨짐 / F.루틴 실행 시점)
보류: - R1-B (KRX OpenAPI 옵션 strike별 OI → P/C·MaxPain): 키 인식 OK, 27 endpoint 401. PM 활용신청 승인 상태 확인 필요 - R4 (IB/리서치 입력 명세 broker_research 경로 추가) - P3 (postmarket 루틴 실행 시점 — 장 시작 전 새벽 실행으로 carry-in이 전일 종가 참조) - P4 (telegram/evening_news/economic_calendar --date 인자)
S289 완료:
1. KOSIS API 연동: PublicDataReader 기반, 품목별 수출입(orgId=360, DT_1R11001_FRM101) 정상 조회 (2026-03 수출 866억$)
2. 텔레그램 0건 버그 수정: step_materials.py에서 daily 파일의 channels[].messages 중첩 구조 평탄화 (0건 → 30건)
3. POST_MARKET → EVENING carry_in: step_carry_in.py 신규, 직전 phase8.md 자동 로드 후 섹션 0으로 리포트 선두 삽입
4. KOSIS 데이터 step_materials 통합 (kosis+websearch 하이브리드), API key 등록
S288 완료: 1. 이브닝 5축 종목 판정 완전 제거 → 재료 저수지 구조 2. step_reservoir.py: 환경 조건부 활성화 3. 재료 수집 복원: RSS headline키, 증권사 categories 구조 (25→49건) 4. THEME_SYNONYMS 30+ 확장, 경제지표 age<=7d 필터, 48시간 freshness 원칙 5. 10섹션 고정 포맷 (v5.2): 원자화 에이전트 (macro/sector/policy/figure/export/synthesizer) + 코드 섹션 (calendar/news/broker/materials) 6. 자산 전체 범위 (부동산 제외), 종목 추천 금지 (이브닝=방향, POST_MARKET=종목) 7. 각 섹션에 데이터 표 + 해석 통합 구조 8. 신규 에이전트 3개: policy-checker, figure-checker, export-checker 9. 5/15 실데이터 10/10 섹션 생성 성공 (21,566자)
미해결 (이월): - KOSIS API 연동 (수출통계 코드 수집) - 텔레그램 수집 0건 (daily_merge 후 파싱 구조) - material-validator 캐시 문제 (freshness 프롬프트 효과 미검증) - 모닝 파이프라인 동일 구조 구현 - S2 lifecycle-tagger 재설계
Active Topics¶
| ID | Topic | Status | WBS 현재 위치 | 링크 |
|---|---|---|---|---|
| E | 주말 상승 선행 재료 연구 + 뉴스 해석 엔진 | 🔄 진행 중 | E.1~E.5 완료, E.6 Phase 1~4 dry run 전체 성공(S245). Phase 5 보류, 실전 통합 대기 | topic_weekend_leading_signal.md |
| H | 리포트+시장 통합 메타분석 | 🔄 진행 중 | S263: 3대 방법론 확정(Event Study/Factor Attribution/Regime). 시스템 적용 경로 5개. 다음: GO 이력 구조화 + CAR 자동 계산 | topic_report_meta_analysis.md |
| K | 도메인 메인 역할 전환 (압축->해석) | 🔄 진행 중 | S265: run_routine.py에 E3/LT/WC 등록 + track_limit_up_history.py 신규 + check_wait 유증필터. execution_directive 강제 주입 | topic_domain_main_interpreter.md |
| L | 시스템 재설계 (누적/시나리오/종목선별) | 🔄 진행 중 | S312v2 E1 EA_QoQ 1시점 backtest 완료: PM 통찰 수용 (8분기 X) → EA_QoQ(4분기)로 산식 변형. 2025Q4 시점 n=81 decile 8×8. D+30 spread +9.11pp ✅ (TOP +15.1% vs BOTTOM +5.9%, KOSPI +32% baseline). D+5/10/20는 음수, D+30에서 양전. FDR/Naver/FnGuide 동일 origin 확인 (분기 5+연간 5). 다음: ①시점 확장 (DART) ②universe 500 ③다른 축 ④v0 운영 | topic_system_redesign.md |
| M | 에이전트 실체화 (메모리+드릴다운) | 🔄 진행 중 | S297: 정책 write-back/30일 아카이브 신설 + EVENING 중복제거(MORNING 패턴) + 파생/포지셔닝 폐기(M.2.37). 다음: 정규 EVENING에서 §2.5 슬림화 실동작 확인 | topic_agent_substantiation.md |
Archived Topics¶
📁 _archive/topics/ — 완료·폐기된 주제 여정 보관.
| ID | Topic | 완료일 | 사유 |
|---|---|---|---|
| I | Daily View + Watch Pool | 2026-05-20 | S294 재검토. daily_view 축 폐기(비결정적 생성 만성 누락) + Watch Pool 축 완료/Topic M 흡수 |
| G | 실시간 뉴스 분류 앱 | 2026-05-05 | S264 삭제. news-curator 연동 미완 |
| J | 차티스트 MTF + 대시세 RS | 2026-05-05 | S264 삭제. MTF 실전검증 미완 |
| A | 시계열 에이전트 재설계 | 2026-04-28 | S242 완료. SEN-1 시계열 전환 + 키움 4주체 + 패턴 6종 |
| F | 발굴 시스템 발산 구조 보강 | 2026-04-28 | S245 완료. F.20 material_timeline + ACCELERATING 알림 + EVENT_CALENDAR |
| AA | 에이전트 원자화 + 슬림화 | 2026-04-28 | S236 완료. 63개 일괄 + 하네스 갱신 + 통합 카탈로그 |
| C | MORNING_OPEN Overnight-Scan | 2026-04-28 | S245 완료. 기존 파이프라인이 이미 커버 |
| D | 텔레그램 언급량 + Mention Velocity | 2026-04-28 | S245 완료. mention_velocity.py + run_routine 등록 |
이 파일의 사용 규칙¶
- 진입점 하나: 세션 시작(
/resume) 시 어시스턴트는 이 파일 먼저 읽음. 다른 Progress 문서 없음. - 상세 중복 금지: 이 파일에는 Topic 이름·Status·현재 WBS 위치·링크만. WBS 상세·의사결정 로그는 Topic 파일에만 존재.
- Active ≤ 5개: 관리 가능한 수준 유지. 5개 넘으면 새 Topic 시작 전 완료 먼저.
- Topic 완료/폐기 처리:
- Topic 파일 내 Status 변경
- Topic 파일을
_archive/topics/로 통째 이동 - 이
_index.mdActive 표에서 제거, Archived 로그에 1줄 추가 (이동 날짜·사유) - Topic 신설:
TOPIC_TEMPLATE.md복사topic_<slug>.md이름으로 생성- 이
_index.mdActive 표에 추가 - 기록 원칙: 진행 순서는 세션 번호가 아니라 WBS 순서. 세션 번호는 WBS 노드의 메타데이터로만.
관련 문서 (참조만, 중복 기록 금지)¶
docs/work_logs/YYYY-MM-DD_*.md— 세션별 구체 행위 로그docs/planning/*.md— 기술 상세 설계서 (Topic이 링크)memory/user_*.md,memory/reference_*.md— 사용자 프로필·외부 자료 포인터CLAUDE.md— 시스템 규칙·프로토콜