Topic — 정량 렌즈 vs 현행 차트분석 (대체/보완/추가 검증)¶
등록: 2026-06-29 (S358 말미) / 확장: 2026-06-29 (S360, PM 지시 2건) 상태: 🔵 S360 N1~N6 + S361 N7 완료. 다음 N8(차트 교체 설계). (N7서 매물대 라벨 버그 정정) 목적: S356~S358 정량 렌즈(시간갱신 P(win) + 검증 엔진)가 현행 discover 차트분석을 어디를 대체/보완/추가하는지 검증 → discover의 수학·차트 분석을 실제 수정.
★ PM 확장 지시 (S360, 이 토픽의 핵심 재정의)¶
PM 지시 1 — 결합 판정: "차트 관찰과 수학적 렌즈를 같이 썼을 때 확률을 높이는지 아닌지 판단하면서 같이 사용/폐기를 결정하고 discover의 수학·차트 분석을 수정해야 한다."
PM 지시 2 — P(win)은 d-n일 확률변화 + 3맥락과 같이 봐야 한다: "며칠째 오르고 있냐(ΔP)도 중요하지만 discover에서 같이 봐야 하는 건: ① 가격이 얼마나 반영된 상태인가 (가격 vs 매출 — 극단적으로 높나?) ② 그렇다면 시장환경은 괜찮은가 ③ 시장에 지속적으로 돈이 들어오고 있는가"
→ 정량 렌즈의 진입 신호 구조 재정의:
진입신호 = P(win) ΔP추세(d-n일 상승)
× [가격 미반영] (valuation gate: PSR/매출대비 안 극단적)
× [시장환경 우호] (macro gate)
× [자금 유입중] (flow gate)
매크로 프록시 (PM 지시: 코스피 말고 예탁금/신용잔고도 같이)¶
- ② 시장환경 + ③ 자금유입을 KOSPI 등락으로 근사하지 말고 고객예탁금 추이(대기자금 유입=③ 직접측정) + 신용잔고 추이(레버리지/과열=② 양면)로 측정.
1. 현행 차트분석 구조 (사실, .claude/agents/discover/chart-obs-*.md)¶
| 관찰 | 파일 | 보는 데이터 |
|---|---|---|
| 1. 추세·위치 | chart-obs-trend | trend/trajectory/exceptionality/cum_delta/상위TF |
| 2. 이례일 사건 | chart-obs-events | exceptional_days(변동폭+거래대금+종가위치+당일수급, 지지/이탈) |
| 3. 매물대 | chart-obs-volume-profile | volume_profile(POC·머리위매물·매집/분배 비대칭) |
| 4. VSA·캔들 | chart-obs-vsa-candles | vsa(events/strength/spring) + candles(last_10/wick) |
| 5. 30분 오더플로 | chart-obs-orderflow | price_reaction(가격대별 매수/매도 반응맵) + cvd_z/bvc/divergence |
| 종합 | chart-synthesizer | 5관찰 -> 차트 verdict + 서사 (D2_chart_judge envelope) |
2. 정량 렌즈 자산 + 데이터 (S356~S358, 가용성 확인 완료)¶
| 정량 축 | 산출/데이터 | 기간·표본 | 상태 |
|---|---|---|---|
| 시간갱신 P(win) | build_pwin_sequential.py (lambda=0.5) |
OOS 2025~ (대형~중형 견고) | ✅ |
| ΔP 추세 (신규) | p_post의 n일(3/5/10) 누적변화+기울기 | 위 산출에 컬럼 추가 | 🔨 구현 |
| 검증엔진 4역할 | S357 결과 (추세동참/저점/고점/폐기) | — | ✅ |
| L3 손익비 RR | build_pwin_rr.py 분위수회귀 |
OOS RR게이트 44% | ✅ |
| ① valuation gate | quarterly_metrics(revenue) -> 가격/TTM매출 PSR |
분기 ~2026Q1 | ✅ 데이터有 |
| ② macro: 신용잔고 | customer_deposit_normalized(credit_balance) |
일별 2016~2026 | ✅ 데이터有 |
| ③ flow: 고객예탁금 | 동 파일(deposit_balance/chg) | 일별 2016~2026 | ✅ 데이터有 |
(신용잔고 장기 시계열은 customer_deposit_normalized에 예탁금과 함께 일별 존재. credit_balance json 스냅샷은 2일치뿐이라 백테스트엔 미사용.)
3. 검증 방식 (PM 결정: 관찰축별 1:1 매핑 + 중첩검증)¶
(A) 1:1 매핑 — 각 관찰축 ↔ 정량 후보, 4분류 판정¶
| 차트 관찰 | 대응 정량 후보 | 예상관계(가설) |
|---|---|---|
| 1. 추세·위치 | hmm_bull / kalman_slope + P(win) ΔP추세 | 보완(추세를 확률 변화로 수치화) |
| 2. 이례일 사건 | (직접대응 약함) | 차트 고유? |
| 3. 매물대 | vecm_dip / volume_profile | 보완 또는 빈칸 |
| 4. VSA·캔들 spring | dd60 / kalman_slope 저점 | 대체 후보 |
| 5. 30분 오더플로 | 30분엔진(표본 82일) | 중복/표본부족 |
| (차트에 없음) | P(win) ΔP + RR | 추가 |
| (차트에 없음) | ① valuation gate | 추가 (가격 vs 매출 반영도) |
| (차트에 없음) | ②③ 예탁금/신용잔고 게이트 | 추가 (시장환경·자금유입) |
(B) 중첩검증 — 결합이 확률을 높이나 (PM 지시1의 핵심)¶
- 차트 verdict 확보: 대표 10종목 재현 실행 (S358 9칸+삼성에 과거시점 chart-synthesizer).
- OOS forward(fwd5)로 대조:
- 단독 P(win) win율 vs P(win)×ΔP추세 vs P(win)×ΔP×3게이트 → 어느 결합이 win↑?
- 차트 verdict(GO/WAIT/PASS) vs 정량신호 → 중복(같은판단·같은적중)/모순/고유.
- 산출: 각 칸 대체/보완/추가/빈칸 + 결합 win율 표 (게이트 추가마다 적중 변화).
4. 성공조건¶
- ΔP추세 + 3게이트 컬럼이 10종목 seq에 부착되고, OOS에서 단독 P(win) 대비 win차 측정.
- 결합 단계별 win율 표: P(win)단독 → +ΔP → +valuation → +macro(예탁/신용) 각 효과 수치.
- 5관찰 x 정량 매트릭스 각 칸 대체/보완/추가/빈칸 판정 + 근거(중첩검증 수치).
- discover 수정 권고: 무엇을 정량으로 대체, 무엇을 차트로 남길지.
5. 미결/주의¶
- 차트 verdict 재현: 과거 시점 chart-synthesizer 실행 (10종목, 비용 큼 — 대표 시점만).
- 거래하위 종목은 P(win) 라벨 표본 없음(universe밖) → 검증은 거래상위.
- valuation: 분기 데이터라 일별 forward-fill, 발표시차(vintage) 주의(미래정보 누설 금지).
- 예탁금/신용잔고는 시장 전체 시계열(종목 무관) → 같은 날 모든 종목에 동일 게이트값.
6. WBS (S360)¶
- [x] N1: ΔP추세 + valuation/예탁금/신용잔고 + 바닥/고점 게이트 부착 (
build_combo_signal.py) - [x] N2: 결합 단계별 OOS win율 (S360 work log). 바닥+7.8%p, 가격미반영+5.3%p 최강. 신용비과열 -3.6%p(방향오류 의심). ΔP·예탁금 약함(+1.2%p).
- [x] N2b: 종목풀 150종 확대 견고화 (
eval_regime_pool.py). 확률연속상승=견고한 트리거 (전체0.385→연속2 0.448→연속3 0.462, win중앙 동반상승). 저점우위는 소표본 noise로 소멸, 저점단독 무의미(연속상승과 결합해야 효과). 신용잔고 방향 재검토는 미결. - [~] N3+N4: 차트 raw 신호 vs 정량 중첩검증 (
eval_chart_vs_quant.py, 진행중). PM 결정: LLM verdict 재현 대신 차트 raw신호 직접 대조(build_d2_input CI, as-of 누설없음). 차트신호(spring/추세/매물대overhang/cum_delta) x 정량(streak2/저점) 4분면 forward win. - [x] N4b/N4c: 30분봉 OF 고유성 + execution 엣지 검증. 둘 다 win 추가가치 없음. 차트 살아있는 단서=변동성/낙폭관리뿐(매물대 MAE 0.9%p, divergence meanR).
- [x] N5: discover 수정 권고서 (
docs/discover_research/S360_discover_revision_recommendation.md). 방향판정=정량 streak로 대체/강화, 차트=실행(손절·진입)+맥락 역할 재배치. 차트 전면폐기 금지. - [x] N6: 누락엔진(수급 kalman_accum·공매도 short_change) streak 재검증 (
eval_supply_short_streak.py). win 추가가치 미미(+0.9%p). 정량 win 신호원은 P(win) streak로 수렴. S357 '약함' streak서도 유지.
8. 다음 세션 1순위 (PM 지시 2026-06-29) — 매물대×확률×기댓값 결합 → 차트 교체¶
- [x] N7: 매물대 × P(win) streak × 기댓값 3축 joint cross (
eval_n7_seat_prob_value.py, work_log2026-06-30_S361_n7_seat_prob_value.md). ★ 매물대 라벨 버그 정정:ch_overhang_clear가 overhang_below_pct 정의와 정반대 (실증 corr +0.40/+0.70).eval_chart_execution.py:151<=→>=정정 후 패널 재생성. 결과: 자리는 win보다 기댓값(손익비)을 가름. streak≥2 × 머리위매물많음(저항밑) × 비저점이 RR(touch/|mae|) 0.330(전체 0.226 대비 +46%)·MAE -0.0353·win 0.483로 최선 = 저항 재돌파 직전 눌림목 + 확률 턴. 저점자리는 결합서도 해로움(돌파×저점 win 0.315). S360 N4c "매물대 단서지 수익아님"이 결합서 손익비 신호로 드러남. PM '계산 먼저 확인' 적중. ⚠️ S360 N4c work_log 결론문 이름 반전 정정 필요(데이터 유효, "돌파"↔"머리위매물많음"). 견고성 통과: 1등 셀(n=2222, 147종) — 종목 쏠림無(상위3 제거 0.483→0.482), 시기 6분기 전부 엣지>0(중앙값+0.035, 약세·강세 분기 모두 base 상회).eval_n7_robustness.py/eval_n7_time_split.py. = "이미 돌아선 추세종목이 다음 저항 앞 눌린 자리"가 종목·시기 견고. - [x] N8: ★PM 결정 — 차트 분석기 LLM 6개 완전 제거 → 순수 수학 (
S361_N8_chart_to_quant_redesign.md). 근거: LLM 6개는 chart_indicators.compute_ 가 만든 수치를 자연어로 옮긴 중간층일 뿐(데이터 생산 안 함), 검증상 win·손익비 기여 0. 자리(overhang)·손절폭(MAE)·방향(streak) 전부 이미 수치 컬럼. 설계: 6 에이전트(chart-obs-trend/events/vp/vsa/orderflow + synthesizer/judge) 삭제 →chart_score(code,date)코드함수가 D2 대체(seat_fit=비저점AND저항앞눌림·exp_mae·exp_rr 산출). compute_ 수치생산자는 유지. pregate "신고가선호 반전"(N7: 저항앞눌림 RR0.330>신고가0.206). 잃는 것 거의 없음(PM 논리): 이례일=확률변화(p_post/streak)가 흡수, 종합판단=수치 조건문 대체. 별도 LLM 서사는 확률갱신의 자연어 중복. 선결=일배치 seq 인프라(최우선). 삭제는 PM 승인 후. - [ ] (선결) 일배치 seq 인프라: build_pwin_sequential 매일 universe -> p_post 시계열(streak 토대).
7. S360 진행 결과 (요약)¶
PM 질문 "결합이 확률 높이나" -> YES, 게이트별 차등:
- P(win)상위(win 0.502)에 바닥자리(+7.8%p)·가격미반영(+5.3%p) 더하면 0.55~0.58.
- ΔP추세 약함(+1.2%p) — '며칠째 상승'보다 '확률높음×바닥×미반영'이 강함.
- 신용비과열 방향오류(-3.6%p), 고점경고OFF +4.2%p(82일 표본).
- 상세: docs/work_logs/2026-06-29_S360_combo_signal_vs_chart.md