콘텐츠로 이동

ATS CPT 시스템 아키텍처

전체 파이프라인 구조

┌─────────────────────────────────────────────────────────────┐
│                    EVENING PIPELINE                          │
│                  (20:00~06:00 KST)                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────┐   run_routine.py 'evening'                │
│  │  데이터 수집   │   13개 스텝 (A/MS/T/TM/TP/N/PS/P/PU/    │
│  │  (코드 강제)   │   BR/M/EC/EX)                           │
│  └──────┬──────┘                                            │
│         │                                                   │
│  ┌──────▼──────┐   run_evening_analysis.py                 │
│  │  Phase 0~7   │   환경진단 + 과거리포트 + 글로벌 + 정책    │
│  │  (코드 강제)   │   + 국내재료 + 리스크 + 테마후보 + 종목   │
│  └──────┬──────┘                                            │
│         │                                                   │
│  ┌──────▼──────────────────────────────────────────────┐    │
│  │  Phase 8~12: 에이전트 순차 호출 (claude -p)          │    │
│  │                                                     │    │
│  │  Phase 8   ┌──────────────────┐                     │    │
│  │  ──────────│ Macro-Economist  │                     │    │
│  │            │ L1~L5 유동성렌즈   │                     │    │
│  │            │ X1~X2 교차검증    │                     │    │
│  │            └────────┬─────────┘                     │    │
│  │                     │                               │    │
│  │  Phase 9   ┌────────▼─────────┐                     │    │
│  │  ──────────│ Sector-Analyst   │                     │    │
│  │            │ T1~T4 모멘텀렌즈   │                     │    │
│  │            │ 섹터 체력 판정     │                     │    │
│  │            └────────┬─────────┘                     │    │
│  │                     │                               │    │
│  │  Phase 10  ┌────────▼─────────┐                     │    │
│  │  ──────────│ News-Curator     │                     │    │
│  │            │ 촉매분류렌즈       │                     │    │
│  │            │ S/A/B/C/D 등급    │                     │    │
│  │            └────────┬─────────┘                     │    │
│  │                     │                               │    │
│  │  Phase 10.5 ┌───────▼────────┐  (코드 강제)         │    │
│  │  ───────────│ candidate_from  │                     │    │
│  │             │ _theme.py      │                     │    │
│  │             │ 테마별 분리 실행  │                     │    │
│  │             │ 4축 스코어링     │                     │    │
│  │             └───────┬────────┘                     │    │
│  │                     │                               │    │
│  │  Phase 11  ┌────────▼─────────┐                     │    │
│  │  ──────────│ Stock-Analysis   │                     │    │
│  │            │ 재료수혜경로 출발  │                     │    │
│  │            │ 1~2종목 집중     │                     │    │
│  │            └────────┬─────────┘                     │    │
│  │                     │                               │    │
│  │  Phase 12  ┌────────▼─────────┐                     │    │
│  │  ──────────│ Day-Trader       │                     │    │
│  │            │ X1~X6 교차검증    │                     │    │
│  │            │ 6섹션 최종리포트   │                     │    │
│  │            └──────────────────┘                     │    │
│  └─────────────────────────────────────────────────────┘    │
│                                                             │
│  최종 저장: docs/evening_reports/YYYYMMDD_evening.md        │
└─────────────────────────────────────────────────────────────┘

7개 에이전트 상세

1. Macro-Economist (거시경제 분석가)

역할: 글로벌 자산+파생+경제지표를 종합하여 시장 환경을 진단하고, 위험자산 투자 환경을 판정

입력: - macro_series.json (20일 파생 + 글로벌 자산 시계열) - 과거 POST_MARKET 리포트 10일치 - 과거 EVENING 리포트 5일치 - ISSUE_LOG, EVENT_CALENDAR, POLICY_TRACKER

핵심 질문: | Q | 질문 | 답변 형태 | |---|------|---------| | Q1 | 지금 시장은 어떤 국면인가? | cycle_position + kospi_environment | | Q2 | 시장 참여자들은 뭘 베팅하고 있나? | 파생 포지셔닝 수치 | | Q3 | 다음 2주 핵심 변수는? | 이벤트 + 정책 + 구루 |

유동성 렌즈 (L1~L5): | # | 질문 | 데이터 | 판단 | |---|------|--------|------| | L1 | Net Liquidity 방향 | FRED WALCL-TGA-RRP | expanding/contracting/flat | | L2 | VIX 텀스트럭처 | VIX3M/VIX ratio | contango(<0.9)/backwardation(>1.05) | | L3 | HY 스프레드 방향 | HY_SPREAD 5d 변화 | tightening(risk-on)/widening(risk-off) | | L4 | 경제지표 서프라이즈 | WebSearch NFP/CPI/PMI | 3개+ 동일방향=트렌드 | | L5 | 헤드라인 2차 구성요소 | WebSearch CPI shelter 등 | CPI/고용 발표 주만 |

교차검증: - X1: 채권 vs 주식 모순 (none/mild/severe) - X2: 고정금리(미국) vs 변동금리(한국) 시차

하위 에이전트: M1(4축 사이클), M2(정책 4채널), M3(재정 양면), M5(자본흐름), M6(이벤트 3시나리오), M7(이벤트 사후판정), M8(Intermarket 선행성)

출력: m_total — trading_environment bias(LONG/NEUTRAL/SHORT) + confidence + flip_trigger


2. Sector-Analyst (섹터 분석가)

역할: 테마별 자금 흐름과 모멘텀을 분석하여 테마의 체력(강세/순환매/피로)을 판정

입력: - sector_series.json (테마별 20일 RS + 가속도 + 거래대금) - 과거 POST_MARKET 리포트 10일치 (UNIT 3 거래대금, UNIT 4 테마 지형도) - macro.md (환경 context)

섹터 모멘텀 렌즈 (T1~T4): | # | 질문 | 데이터 | 판단 | |---|------|--------|------| | T1 | RS 가속도 | acceleration | (+)=올라탈 타이밍, (-)=피로 경고 | | T2 | 매출 전환 단계 | DART (대장주 3개 매출 QoQ) | expectation/revenue_transition/matured | | T3 | 참여자 구성 변화 | flow_series derived | early(건강)/mid(ok)/late(배분 경고) | | T4 | 구조적 테마 여부 | macro favored_angles | 구조적=미국소비→생산/탈중국 |

섹터 체력 판정: - 강세지속: T1(+) + T2 매출전환 + T3 초기~중기 + T4 구조적 - 순환매구간: T1(+) but T3 후기 OR T2 기대단계 - 피로누적: T1(-) + T3 개인주도 전환

하위 에이전트: S1(RS 괴리), S2(생명주기), S3(대장주 판정), S5(매출비중), S6(과열), S7(괴리 탐색)

출력: s_total — per_stock(substance_grade, theme_role) + momentum_lens(섹터 체력) + leader_stock_per_theme


3. News-Curator (뉴스 큐레이터)

역할: 뉴스를 수집→등급 판정→S/A급 드릴다운→수혜 경로 식별

입력: - POST_MARKET 리포트 (NC-3 등급, 상한가 WHY) - 텔레그램 27개 채널 - POLICY_TRACKER - WebSearch (미장 마감 뉴스, 섹터매체)

촉매 분류 렌즈: - Hard Catalyst: 결과+시점 확정 (실적 발표, 정책 시행일, M&A) - Soft Catalyst: 결과 불확정 (규제 검토, 기술 채택 초기)

촉매 3요소: 타이밍 × 실현확률 × 밸류에이션 영향 - HIGH×HIGH×HIGH = S등급 - 하나라도 LOW = 최대 B등급

Priced-in 판단 (3가지 중 2개+ 해당 시): 1. 뉴스 빈도: 직전 2주 동일 주제 5건+ 2. M7 감응도: 같은 유형 재료에 시장 반응 축소 3. 가격 선행: 테마/종목 뉴스 전 20d +15%+

1차 vs 2차 효과 모순 체크: none/mild/severe

하위 에이전트: NC-3(5축 스코어), NC-6(테마 매핑), NC-6C(종목풀), NC-13(임박도)

출력: n_total — S/A/B/C/D 등급 + 촉매 3요소 + 수혜 경로(직접/간접) + front_page 1~3건


4. Sentiment-Analyst (수급/심리 분석가)

역할: 4주체(외인/기관/프로그램/개인) 거래 패턴 → 수급 방향 판정 + 시장 포지셔닝 극단성 측정

입력: - flow_series/{code}.json (종목별 20일 4주체 수급) - macro_series.json (파생 시계열)

포지셔닝 렌즈:

참여자 구성 변화: | 조건 | 판정 | |------|------| | 외인>0 & 기관>0 & 개인≤0 | early (건강) | | 기관>0 & 개인>0 | mid (아직 ok) | | 기관<0 & 개인>0 | late (배분 경고) |

COT/파생 극단성: | 지표 | extreme | elevated | |------|---------|----------| | 외인선물 20d 누적 | |값| > 30,000 | |값| > 15,000 | | 프로그램 비차익 5d | |값| > 3조 | |값| > 1.5조 |

하위 에이전트: SEN-1(종목 시계열), SEN-2(재료 선반영), SEN-3(이벤트 후 4시나리오), SEN-4(4주체 동조), SEN-5(VKOSPI/극단)

출력: sn_total — per_stock(pattern, participant_shift) + market_context(regime, positioning_extreme)


5. Fundamentals-Analyst (실적 분석가)

역할: 매출/이익 가속도 + Red Flag 판정 → "실적이 받쳐주는가"

입력: - DART MCP get_financial_statement (IS/CF/BS 3표) - WebSearch (컨센서스 EPS/목표가)

어닝 가속 체크: | 항목 | 기준 | |------|------| | EPS YoY 가속 | 직전 분기 대비 가속 → ACCELERATING/DECELERATING/FLAT | | 매출 성장 | QoQ >5% 또는 YoY >20% | | 마진 확장 | OP마진 QoQ 개선 동반 |

Red Flag 4항목: | # | Red Flag | 확인 방법 | |---|----------|---------| | RF1 | 매출↑ + 마진↓ 동시 | DART IS | | RF2 | 임원 대량 매도 | DART 공시 | | RF3 | 부채 급등 | DART BS 부채비율 QoQ 20%p+ | | RF4 | 영업CF 악화 | DART CF 적자전환 or QoQ -50%+ |

하위 에이전트: FA-M1(3표 교차 퀄리티), FA-M2(일회성 제거), FA-M3(Forward 멀티플), FA-M4(PEAD), FA-M5(가이던스), FA-M6(산업 KPI), FA-M7(역산 성장률)

출력: f_total — per_stock(earnings_acceleration, red_flag, valuation_grade)


6. Chartist (차트 분석가)

역할: 차트 내 시장참여자의 행동과 불균형을 읽고 진입 자리를 판단한다. "어떤 패턴인가"가 아니라 "누가 급하고, 어디에 미해소 불균형이 남아 있는가"

입력: - chart_profiles/YYYYMMDD_mtf_profiles.json - Kiwoom REST API 60일+ OHLCV (일봉) + 5분봉 900봉 (분봉 VP용)

4묶음 해석: | 묶음 | 구성 | 판단 | 도구 | |------|------|------|------| | A 불균형 지도 | Q1: 어디에 HVN/LVN이 있는가. 현재가는 합의 안인가 밖인가 | VP(일봉+분봉) + sr_levels | volume_profile_poc() + intraday_volume_profile() | | B 불균형 동태 | Q2+Q3: 생성 vs 해소. 누가 급한 쪽인가. phase 맥락 | VSA 3축 + delta + phase_bias | compute_vsa_metrics(phase=) | | C 진입 판단 | SL = HVN(합의=지지). TP = LVN 너머 HVN. R:R 계산 | VP + sr + ATR | cluster_levels() + VP | | D 방향 확인 | Q4: 상위TF 불균형 방향과 일봉 일치 여부 | weekly/monthly | resample() + tf_structure() |

B→A 피드백: C8(VSA)이 A(phase)를 입력받아 같은 고거래량 신호를 phase별로 다르게 해석. 예: rally 중 climax_buying → trend_acceleration (T+10 +6.84%, 승률67%). decline 중 climax_buying → dead_cat_bounce (승률0%).

백테스트 검증된 유효 신호 (7종목 x 2기간, 2,195일): - demand_bar: 승률 74% (최고) - trend_acceleration: T+10 +6.84% - shakeout_candidate: 승률 62% - close_zone=lower: 2,195일 일관 우위 (55%) - dead_cat_bounce: 0% → 회피 필수

하위 에이전트: C1~C9 옵저버 + C10 메인

출력: c_total — dominant_direction + invalidation + entry_method + sl_price/tp_price/rr_ratio + top_signal(YES/NO) + vsa_summary + volume_profile

판정 스냅샷 저장 (verdict_list.json / wait_watchlist.json): GO/WAIT 판정 시 chart_snapshot 필드로 판정 시점의 차트 해석 근거를 함께 기록한다. 사후 검증 시 "왜 그렇게 읽었는가"를 추적 가능.

"chart_snapshot": {
  "cutoff": "2026-05-11",
  "phase": "range_bound",
  "vsa_latest": {"norm_spread": 0.7, "norm_vol": 1.1, "close_zone": "middle", "evr": -0.17, "delta_pct": 0.29},
  "vsa_events_recent": ["climax_buying(accumulation_absorption)"],
  "cum_delta_5d": 103469905,
  "vp_daily": {"poc": 190462, "nearest_hvn": 203112, "nearest_lvn": 234737},
  "vp_intraday": {"poc": 224016, "nearest_hvn": 265383, "nearest_lvn": 279983},
  "sl_basis": "hvn_265K",
  "sl_vp_quality": "HVN(강함)",
  "imbalance_assessment": "현재가 287K는 분봉 LVN(280K) 위. 하단 지지 약함. 1차 HVN 265K",
  "dominant_direction": "bullish",
  "synthesis": "[가속] 5일째. MU +15.5% 반영 갭업"
}
사후 검증: D+10/D+20 시점에서 이 판단이 맞았는지 대조. 틀렸으면 어떤 축이 틀렸는지(phase? delta? VP?) 분류 → 시스템 개선 피드백.


7. Day-Trader (최종 판정)

역할: 5개 도메인 결론을 연결하고 교차검증 → GO/WAIT/PASS 판정. 분석하지 않고 연결만 한다.

입력: m_total + c_total + s_total + sn_total + f_total + stocks.md + verdict_list.json + wait_watchlist.json

교차검증 (X1~X6): | # | 검증 | 결격 시 | |---|------|--------| | X1 | 채권 vs 주식 모순 | severe → GO 불가 | | X2 | 컨센서스 과밀 | high + X3 yes → WAIT | | X3 | 촉매 Priced-in | yes → GO 불가 | | X4 | 1차 vs 2차 효과 모순 | severe → 사이즈 제한 | | X5 | Red Flag | true → GO 불가 | | X6 | 포지셔닝 극단 | extreme → 사이즈 50% |

GO 4조건: 1. 고점신호 부재 (chart q1=NO) 2. SL 자리 확보 (chart q2=YES) 3. 재료 뒷받침 (sector/news YES/A) 4. 수급 확인 (sentiment YES)

리포트 6섹션 (각 섹션은 이전 결론에서 출발): 1. 시장은 지금 어디에 있는가 (macro) 2. 자금은 어디로 가고 있는가 (sector) 3. 어떤 재료가 어디에 영향을 미치는가 (news) 4. 어떤 종목이 반응할 것인가 (stocks) 5. 교차검증 (X1~X6) 6. 내일 뭘 할 것인가 (실행 체크리스트)


Phase 10.5: candidate_from_theme.py (코드 강제)

목적: news.md S/A 재료 수혜 테마에서 대장주 후보를 데이터 기반으로 선정

실행 방식: 테마별 분리 실행 (각 top 3, 중복 제거)

4축 스코어링: | 축 | 항목 | 점수 | |---|------|------| | 가격 | 52주 위치 70%+ | +2 | | 가격 | 5d 수익률 5%+ | +1 | | 거래대금 | 변화율 50%+ | +1 | | 거래대금 | 절대규모 1000B+ | +2 | | 거래대금 | 절대규모 300B+ | +1 | | 거래대금 | 절대규모 <100B | -1 | | 실적 | 흑자 | +2 | | 실적 | 매출 YoY 10%+ | +1 | | 실적 | OP YoY 20%+ | +1 | | 수급 | dual_buy(외인+기관) | +3 | | 수급 | 외인 단독 매수 | +1 | | 수급 | z-score 2.0+ | +2 | | 거래량 | 변화율 30%+ | +1 |


데이터 수집 스크립트 → 사용처 매핑

수집 스크립트 데이터 사용처
fetch_global_assets.py 글로벌 자산 12+ Phase 0 환경 + Phase 8 macro
collect_macro_series.py 파생+FRED+VIX+Risk Phase 0 + Phase 8 macro
collect_sector_series.py 테마 RS/거래대금 Phase 0 flow_map + Phase 9 sector
fetch_telegram_news.py 텔레그램 27채널 Phase 10 news
parse_telegram.py 텔레그램 파싱 Phase 10 news
fetch_evening_news.py RSS뉴스 CAT2~9 Phase 3~4 정책/재료
policy_scan.py 정책 RSS Phase 3 + POLICY_TRACKER
policy_cross_check.py 정책 교차검증 Phase 3
fetch_policy_updates.py STALE 감지 Phase 3
fetch_broker_research.py 증권사 리포트 Phase 3
update_material_timeline.py 재료 타임라인 ISSUE_LOG
fetch_economic_calendar.py FRED 경제지표 Phase 8 macro
fetch_export_stats.py 수출통계 Phase 2
collect_stock_flow_series.py 종목 수급 시계열 Phase 11 stocks (직접 호출)
candidate_from_theme.py 테마→종목 4축 스코어링 Phase 10.5

추적 시스템

파일 역할
data/tracking/verdict_list.json GO 판정 종목 D+N 추적
data/tracking/wait_watchlist.json WAIT 종목 조건 일일 점검
data/daily_view/{date}.json 일일 시나리오 + 감시 포인트
docs/trading_playbook/ISSUE_LOG.md ACTIVE 이슈 추적
docs/trading_playbook/EVENT_CALENDAR.md 향후 이벤트
docs/trading_playbook/POLICY_TRACKER.md 글로벌 정책 진행 단계