S361 N8c — portfolio-selector 명세 갱신 가이드 (PM 직접 수정용)¶
일자: 2026-06-30 (Tue)
배경: N8/N8b 코드 변경(D2 차트 수학화, D3/D4 RS RAW 흡수, 정렬축 streak/p_post 교체)으로
selector 명세(.claude/agents/discover/portfolio-selector.md)가 코드와 어긋남.
성격: ★ 에이전트 설정 수정은 PM 직접(CLAUDE.md §3). 본 문서는 불일치 위치 + 수정 방향 제시.
selector가 명세를 읽고 판단하므로, 명세-코드 불일치 시 selector가 옛 서술대로 헤맴(풀런 전 선결).
0. 코드가 바뀐 사실 (요약)¶
- D2 차트: LLM 6개 -> chart_score 수학. envelope에 streak/p_post/seat_fit/dd60/overhang. verdict = streak>=2 & 비저점 & 저항앞눌림 POSITIVE / 저점 NEGATIVE / 돌파자리 NEUTRAL.
- D3 RS / D4 테마: verdict "RAW"(방향 마커 아님). stock_rs는 theme_bonus로 흡수. raw 수치 유지.
- 정렬축 AXES:
[rs_high, amount, ofm, cat_raw, ea_z]->[streak, p_post, amount, cat_raw, ea_z]. 차트/가격축(rs_high·ofm) 제거(streak 부분집합), 확률변화(streak·p_post)로 교체. - score_components_z 키:
rank_rs_high/rank_ofm->rank_streak/rank_p_post(rank_amount/cat_raw/ea_z 유지). - raw_metrics: streak/p_post 추가. rs_high_120d/ofm_cvd_z는 참고로 남음(정렬축 아님).
1. 명세 수정 위치 (라인 = 현재 파일 기준, PM 수정)¶
(A) line 17 — "5축 순위합" rank 설명¶
- 현재: "rank/rank_sum은 score_compose가 5축 순위합으로 만든 후보 박스 정렬값"
- 수정: 5축 내용이 바뀜. "5축 = streak·p_post·거래대금·재료·실적(확률변화 + 비가격정보). 차트/가격축(RS·오더플로)은 정렬축에서 빠지고 확률변화로 대체됨" 취지로.
(B) line 32-34 — "2. 오더플로 (D5, ofm_cvd_z)"¶
- 현재: "ofm_cvd_z = 체결 매수압력. 관점A 받침 신호. 높은 ofm은 천장 마지막 매수일 수도."
- 수정: 오더플로는 방향/받침 판단축이 아님(S360: win 기여 0, streak 부분집합). D5는 execution 단서(cvd_price_divergence)·맥락으로만 참고. "관점A 받침"에서 OF 제거. 단 divergence(가격↑ 매수압력 꺾임) 경고는 보조로 유지 가능.
(C) line 28-30 — "1. 차트 (D2)"¶
- 현재: "D2 POSITIVE = 차트상 갈 준비(게이트). unresolved_conflict로 분배/천장 의심."
- 수정: D2가 수학(chart_score)으로 바뀜. "D2 = P(win) streak + 자리(저항앞 눌림/비저점) 수학 판정. POSITIVE = streak>=2 & 비저점 & 저항앞눌림(N7 1등셀). seat_fit/streak/p_post 수치로 해석. unresolved_conflict(LLM 상충서사)는 더 이상 없음 — key_evidence 수치로 대체."
(D) line 110-111 — "PM 선정 모델 ①~⑤축"¶
- 현재: "①주도주(rs_high) ②거래대금 ③오더플로(ofm) ④재료 ⑤펀더. 5축 순위합."
- 수정: "①확률변화(streak: 며칠째 사후확률 상승) ②확률수준(p_post) ③거래대금 ④재료 ⑤펀더. RS·오더플로는 정렬축에서 빠짐(확률이 흡수). RS는 theme_bonus(테마 집결도)로만 참고."
(E) line 114 — "관점A 받침"¶
- 현재: "관점A: 차트(자리)·오더플로(매수압력)·재료가 받치는가"
- 수정: "관점A: 차트(streak 확률변화 + 저항앞 눌린 자리)·재료가 받치는가" — 오더플로 제거.
(F) line 73-74 — 입력 스키마 주석¶
- 현재: "S346 받침 5축... score_components_z: {rank_rs_high, rank_ofm, ...}"
- 수정: "score_components_z: {rank_streak, rank_p_post, rank_amount, rank_cat_raw, rank_ea_z, rank_sum}".
(G) line 25, 112, 116 — "오더플로 1등" 예시¶
- 현재: "오더플로 1등이 실적약·선반영끝을 덮음" (averaging 함정 예시)
- 수정: 예시 자체는 averaging 경계로 유효하나, "오더플로 1등"을 "streak 1등" 또는 "확률 1등"으로 바꾸면 현 구조와 정합(오더플로는 정렬축 아니므로 1등 개념 없음).
2. 유지(바꾸지 말 것)¶
- selector 역할(최종 1종 종합 선정), 관점A/B 대조, averaging 금지 원칙, must_address 강제, D6 실적/선반영·Dnews 재료·D1 시장 해석 = 전부 그대로. 이번 변경은 차트/RS/OF 축에 국한.
- theme_bonus·theme_concentration·is_theme_leader(D4) 해석 = 유지(RS는 RAW지만 theme_bonus는 흐름).
3. 핵심 한 줄 (PM 수정 방향)¶
명세에서 "RS·오더플로 = 방향/받침 판단축" 서술을 "확률변화(streak/p_post) = 정렬·방향축, RS/OF는 참고수치"로 교체. selector 종합 역할·관점A/B·재료/실적/시장 해석은 불변.