콘텐츠로 이동

S316 — 에이전트 walk-forward 백테스트 (코드 X)

작성: 2026-05-26 (Tue) 01:20 기간: 2026-02-20 ~ 2026-05-22 (63 거래일) 선행: S316 코드 백테스트 (v1~v5) 모두 결함 → PM 지시 "코드 X, 에이전트가 글로벌 판단"


1. 핵심 수치

지표
Final NAV (norm 1.0 시작) 1.4187
Total Return +41.87%
KOSPI +35.11%
α vs KOSPI +6.77pp
Trading days 63
총 거래 424건 (ENTRY 161, EXIT 156, REBAL 107)

비교 (S316 시리즈 NAV 변화)

버전 방식 NAV α vs KOSPI
S315 시총 100 + 4축 AND OF -10.76% -45.87pp
v1 (컷오프) 강한 테마 top3 × leader top3 +2.45% -32.66pp
v2 (OF 정정) 동일 + 동력 확인 +58.10% +22.99pp
v3 (매출/차트) 동일 + 매출/차트 추가 +47.40% +12.29pp
v4 (univ 200) 동일 + 거래대금 universe +47.40% +12.29pp
v5 (통합점수) 6축 percentile 가중 합 +17.15% -17.96pp
v6 (에이전트) 글로벌 에이전트 일별 판단 +41.87% +6.77pp

2. 시스템 구조

데이터 패키지 (매일 빌드)

  • universe: 거래대금 20d 상위 200종 (PM 22:48 정정)
  • 200종 × 6축 (chart/state/OF/RS/매출 YoY/퀀트 EA)
  • 정렬: chart_score 내림차순
  • 패키지당 약 28KB / 7K 토큰

에이전트 판단 (매일 1회 호출)

  • general-purpose 에이전트
  • 입력: 200종 × 6축 패키지 + 보유 상태 (직전일까지 누적)
  • 출력: 픽 1~5종 + 비중(합 1.0) + 사유 + 청산 이유 (JSON)
  • 호출당 약 30~45초 / 47K 토큰

거래 실행 (harness)

  • 오늘 picks에 없는 보유 종목 → 청산
  • 보유 종목 비중 변경 → 리밸런싱 (>5% deviation)
  • 신규 종목 → 진입
  • 종가 매매, 슬리피지/수수료 0

PM 결정 기준 (에이전트에 매번 전달)

  • 오른 종목 더 오를: IMBALANCE_UP + exh_up=0 + cvd≥0 + buy>sell
  • 쉬는 종목 다시 오를: BALANCE + theme_rs60>0
  • 가장 강한 테마의 가장 강한 종목
  • 매수 우위 (buy_pres > sell_pres)
  • chart≤-0.3 / IMBALANCE_DOWN / of_avoid=1 회피

3. 진행 (10 batch)

Batch 일자 누적 %
Batch 1 (순차) 2/20, 2/23, 2/24, 2/25, 2/26, 2/27, 3/3 11%
Batch 2~10 (5일 병렬) 3/4 ~ 5/22 100%

총 63회 에이전트 호출, 약 38분 + 3M 토큰


4. 산출

코드

  • scripts/backtest/e4_agent_pack_builder.py — 일별 데이터 패키지 빌더
  • scripts/backtest/e4_agent_harness.py — 패키지 빌드 + 거래 실행 + NAV 집계
  • scripts/backtest/e4_state_context.py — 보유상태 컨텍스트 빌더

데이터

  • data/backtest/e4_portfolio/agent_packs/pack_YYYYMMDD.txt (63개)
  • data/backtest/e4_portfolio/agent_picks/picks_YYYYMMDD.json (63개)
  • data/backtest/e4_portfolio/portfolio_nav_agent.parquet
  • data/backtest/e4_portfolio/trade_log_agent.json (424건)
  • data/backtest/e4_portfolio/summary_agent.json

5. 핵심 관찰

v5 (코드 통합점수) → v6 (에이전트) 알파 회복 +24.72pp

  • v5는 통합 점수 풀은 잘 뽑았으나 진입 score 공식이 풀 점수와 불일치 → 1종 몰빵
  • v6 에이전트는 픽 수·비중·청산 모두 시점별 판단 → 다양화 자동

거래 회전 잦음 (424건 / 63일 = 6.7건/일)

  • PM의 strict 기준(buy>sell, cvd≥0 AND)을 매일 적용해 시장 약화 시 빈번한 전체 회전 발생
  • 슬리피지·수수료 0 가정의 한계 (실거래에선 알파 축소)

보유 종목 시퀀스 변화

  • 초기: 현대건설/SK하이닉스/삼성전자/한화시스템/로보티즈 (원전·CXL·우주항공 라인업)
  • 중반: 두산에너빌리티/HD현대중공업/LIG넥스원 (전력설비/방위)
  • 후반: 두산밥캣/한화에어로/삼성증권/KT&G (방어 + 강한 OF)
  • 매일 다른 강한 테마의 강한 종목 추적이 자동 회전 만듦

6. 결함 / 한계

  1. 표본 1구간 (63일) — 알파 +6.77pp의 통계적 유의성 입증 X
  2. 강상승장 한정 — KOSPI 자체 +35% 강한 구간. 약상승/하락장 미검증
  3. 거래 비용 0 — 실거래 슬리피지 + 수수료 적용 시 알파 축소 가능 (대략 -3~5pp 추정)
  4. 에이전트 응답 비결정성 — 같은 입력 다른 응답 가능. 재실행 재현성 한계
  5. 5일 batch 병렬 호출 — batch 내 5일은 batch 시작 시점 보유 가정, 일별 누적 정확도 일부 손해

7. 다음 단계 (PM 결정)

  1. 기간 확장 — 다른 구간 (약상승장/하락장) 같은 방식 walk-forward
  2. 거래 비용 적용 — 슬리피지 0.1% + 수수료 0.015% 가정 후 NAV 재계산
  3. 에이전트 응답 안정성 검증 — 동일 일자 N회 재호출 후 픽 일관성 측정
  4. 코드 백테스트 v6 (에이전트 룰 모사) — 에이전트 결정 패턴을 룰화해 다시 코드로