S340 — 종목 발굴 3계층 종합 구조 설계¶
작성: 2026-06-01 (Mon) 목적: 원자화(누락·환각 방지)와 종합(결론 도출)의 트레이드오프를 3계층 구조로 정리. PM 질문: "차트/수급·재료·펀더멘탈·시장상황을 다 고려한 종합을 어떻게 짜야 하는가." 리서치 근거: docs/work_logs/2026-06-01_S340_chart_observation_atomization.md §리서치 + 본 문서 §5.
1. 문제 정의 (PM)¶
- 원자화는 환각·지시 건너뛰기를 막지만, 종합·결론에서 약해진다. (멀티에이전트 LLM의 중심 트레이드오프)
- 우리는 종목 발굴(큰 역할) 아래 하위 영역(차트/수급·재료·펀더·시장) 이 있고, 그 영역 안에 또 나뉜 질문이 있는 3계층 구조다.
- → 각 계층에서 종합을 어떻게 하고, 중간 종합층을 둘지가 핵심.
2. 현황 — 이미 3계층이 부분적으로 존재한다 (코드 확인)¶
| 영역 | 영역 메인 (중간 종합자) | 영역 내 질문 (하위 원자) | 상태 |
|---|---|---|---|
| 차트/수급 | domain/chart-analyst (구 4Layer, 방치) | chart-obs 1~4 (S340 신설) + D5 OF | 원자 신설, 종합자 미정 |
| 재료 | domain/material-analyst | news/* 8 (theme/source/imminence/5axis...) | 하위 분할 있음 |
| 펀더멘탈 | domain/fundamentals-analyst, fundamentals-analyst | fundamentals/* 7 (triple-cross/forward/pead...) | 하위 분할 있음 |
| 시장상황 | domain/environment-analyst, macro-economist | macro/* 9 (triaxis/policy/intermarket...) | 하위 분할 있음 |
| 테마/섹터 | sector-analyst | sector/* 6 (rotation/leader/lifecycle...) | 하위 분할 있음 |
| 수급(심리) | sentiment-analyst | sentiment/* 5 (flow/material-link/extreme...) | 하위 분할 있음 |
→ 다른 영역도 하위 분할은 있으나, "원자 관찰" 형태가 아니다 (코드 확인). 기존 하위(예: macro/triaxis-diagnoser, fundamentals/triple-cross)는 각자 작게 판단하는 mini-judge — "질문=경기사이클 어디인가" → cycle_position enum 출력, 행렬 매핑으로 결론. 즉 해석/verdict 형이지, 차트 chart-obs처럼 "현상 서술만, verdict 금지"의 관찰(observation) 형이 아님.
→ 따라서 PM 로드맵 "시장·펀더·재료도 원자화·범주화"는 기존 mini-judge들을 관찰 형으로 재정비하는 작업이다. 기존 분할은 완성형이 아니라 재설계 대상. 차트가 그 첫 사례(템플릿).
→ 또한 2 체계(domain/* vs 도메인별 메인+하위)가 병존해 혼란. 정리 필요(§4).
3. 3계층 구조 (확정 그림)¶
[Tier 1 — 종목 발굴 / 최종 결론]
D7 종합 = 전 영역 verdict + 핵심근거(raw) → 상충·시간축 판단 → 종목 진입 결론 + 서사
↑ verdict + 핵심 상충/약신호 raw (2차 요약 손실 방지)
|
[Tier 2 — 영역 종합 (영역당 1명)]
차트 종합 / 수급 / 재료 / 펀더 / 시장·테마
= 자기 하위 원자들의 관찰·판단을 모아 영역 verdict + 영역 내 상충 노출
↑ 하위 관찰/판단 (envelope JSON, 하위끼리 직접대화 X)
|
[Tier 3 — 영역 내 원자 질문]
차트: chart-obs 1~4 (관찰, verdict 없음)
재료: news/* 8 / 펀더: fundamentals/* 7 / 시장: macro/* 9 / 섹터: sector/* 6 / 수급: sentiment/* 5
계층 규칙 (리서치 근거 — §5)¶
- R1. 하위끼리 직접 대화 금지 — 중앙 state(envelope JSON) 경유. (3-tier 정석)
- R2. 각 층은 자기 컨텍스트만 — Tier1은 영역 요약+핵심근거, Tier2는 자기 하위, Tier3은 자기 데이터. (컨텍스트 관리)
- R3. 이중 요약 손실 방지 — Tier2가 Tier1로 올릴 때 verdict뿐 아니라 핵심 상충·약신호를 raw로 동봉. Tier1이 압축 결론만 받지 않음. (lost-in-the-middle + 이중요약 손실)
- R4. 상충은 averaging 말고 노출 — 각 종합층이 하위 상충(예: 매집 vs bear_dominant)을 뭉개지 말고 살려 상위에 전달. (TradingAgents debate 정신)
- R5. 코드/LLM 종합 분업 — 결정론적 집계(점수·카운트)는 코드(LLM 0토큰), 상충·시간축 판단·서사는 LLM. (RES 패턴)
4. 중간 종합층 — 둘 것인가 (핵심 결정)¶
리서치상 두 패턴 공존: - 직접 보고 (flat-up): 하위가 raw로 최상위 직행, 최상위가 전부 종합 (AgentOrchestra). 장점=이중요약 없음. 단점=최상위 컨텍스트 폭증. - 계층 종합 (nested): 영역이 먼저 종합 후 요약 상위로 (TradingAgents, 3-tier 정석). 장점=컨텍스트 관리. 단점=이중요약 손실 위험(R3로 완화).
판단 기준 (근거 기반): 영역의 하위 질문 수가 갈림돌. - 하위가 여럿(3+)인 영역 → 중간 종합층 필요 (차트 4, 재료 8, 펀더 7, 시장 9, 섹터 6, 수급 5). 안 두면 Tier1이 30+ 하위를 직접 받아 lost-in-the-middle. - 하위가 1개인 영역 → 영역=단일, 중간층 불필요 (현재 그런 영역 없음).
→ 결론: 모든 영역에 Tier2 종합층을 둔다. 단 R3(핵심 raw 동봉)로 이중요약 손실을 막는다.
domain/* vs 도메인메인+하위 병존 정리 (PM 결정 대상)¶
- 두 체계가 같은 일(영역 종합)을 중복. 하나로 통일 필요.
- 추정 권고:
sector-analyst형(메인+하위 원자) 체계가 본류(하위 분할이 실재).domain/*는 구형으로 보임. 단 chart-analyst.md는 "지금 손대지 않음"(PM) → 차트 종합자는 신규 작성, domain/chart-analyst는 보류.
5. 리서치 출처·근거 (검증됨)¶
| 발견 | 출처 |
|---|---|
| 3-tier(Orchestrator/Domain/Worker), 하위 직접대화 금지, 층별 컨텍스트 | AgentOrchestra 2506.12508, 3-tier blog |
| 탐색≠종합 분리(전용 Central Agent) | MAESTRO 2511.06134 |
| 2단 종합(분석가→debate→trader), 상충 averaging 안 함, 구조화리포트>message pool | TradingAgents 2412.20138 |
| 위험제어가 종합 지배, 자연어 종합(수치가중 아님) | FinCon 2407.06567 |
| 상충증거 debate+aggregator (+11.4%p 모호, +15.8%p 허위억제) | MADAM-RAG 2504.13079 |
| 결정론 집계 LLM 0토큰 + synthesizer 요약만 (코드/LLM 분업) | RES 2603.22367 |
| 관찰을 증거에 anchor(판정 분리), judge 조작 시 FP +90% | MM-OCEAN/judge survey 2411.15594, Gaming the Judge 2601.14691 |
| 과분해 함정(context drift, 8-10스텝 붕괴), 이중요약 손실 | why MAS fail, lost-in-middle |
6. 작업 로드맵 (PM 확정 — 영역별 순차 원자화·범주화)¶
전체 3계층을 한 번에 다 바꾸지 않는다. 영역을 하나씩, 차트를 첫 템플릿으로 같은 패턴(Tier3 관찰 원자 + Tier2 종합)으로 진행.
6.1 영역 순서 (PM)¶
- 차트/수급 ← 지금 (Tier3 관찰 완료, Tier2 종합자 다음)
- 시장상황 (글로벌자산·파생상품·자금이동 등) ← 다음
- 펀더멘탈 ← 그 다음
- 재료 ← 그 다음
각 영역마다: 기존 mini-judge 하위 → 관찰 형 원자(verdict 금지)로 재정비 + 영역 종합자(Tier2) 신설.
6.2 차트 영역 세부 (현재 영역)¶
- (완료) Tier3 차트 원자 — chart-obs 1~4, 양방향 검증.
- (다음) Tier2 차트 종합자 신설 — 관찰1~4 → 차트 verdict + 영역 내 상충 노출 + 핵심 raw 동봉(R3).
- 형태: TradingAgents 2단 종합 차용 — 관찰 모음 → (상충 점검) → verdict + next_branch.
- 사이징/손절/목표가 제외(차트 역할 아님, PM 확정).
- 수급: D5(30분봉 OF)가 차트 영역에 속하는지, 별도 수급 영역인지 PM 확정 필요.
6.3 전 영역 공통 (각 영역 완료 후)¶
- Tier1 D7 — 현행 score_compose(점수합산, b방식)가 상충·시간축 못 잡음(검증 확인). 자연어 종합(a) 또는 코드집계+LLM서사(c, RES형) 전환 검토. 전영역 원자화 완료 후 또는 PM 별도 승인 후.
- domain/* vs 메인+하위 병존 정리 — PM 결정 대상(§4). 영역 재정비 시 함께.
6.4 재사용 — 차트가 만든 템플릿¶
차트에서 확립한 패턴을 다음 영역들이 그대로 따른다: - 관찰 에이전트 명세 틀: frontmatter + "현상 서술만/verdict 금지" + 자기 데이터 블록만 + envelope 사실필드. - 슬라이스 스크립트: 영역 Input → 관찰 단락별 input (재계산 없이 블록 분배). slice_chart_obs.py가 원형. - 양방향 검증: 정답이 갈리는 2종목(또는 2시점)으로 관찰이 사실대로 갈리는지 확인.
결정 로그¶
| 일시 | 항목 | 결정 |
|---|---|---|
| 2026-06-01 | 구조 | 3계층(발굴/영역종합/영역내질문) 확정 |
| 2026-06-01 | 중간 종합층 | 모든 영역에 Tier2 둠 + R3(핵심 raw 동봉)로 이중요약 손실 차단 |
| 2026-06-01 | 차트 종합자 | TradingAgents 2단 종합 차용, 신규 작성 (domain/chart-analyst 보류) |
| 2026-06-01 | D7(Tier1) | 점수합산→자연어/하이브리드 전환 검토. 전영역 영향, PM 별도 승인 |
| 2026-06-01 | 작업 순서 | 차트 Tier3(완료)→Tier2(다음)→Tier1(PM승인후) |
| 2026-06-01 | 영역 로드맵 | 차트/수급 → 시장상황 → 펀더 → 재료 순. 각 영역 같은 패턴(관찰원자+종합) |
| 2026-06-01 | 기존 하위 성격 | macro/·fundamentals/ 등은 mini-judge(해석형). 관찰형으로 재정비 대상 (완성형 아님) |
| 2026-06-01 | 차트=템플릿 | 관찰 명세 틀 + slice 스크립트 + 양방향 검증을 다음 영역이 재사용 |