P2 엣지 검증 결과 (실데이터 1차)

결론: 현재 모멘텀 신호는 거래비용 차감 후 통계적으로 유의한 엣지가 없다. ADR-004 게이트상 P5(모델 고도화) 미착수, 신호 재설계로 회귀.

실험 설계

항목
데이터토스 일봉, 종목당 최대 200캔들(≈10개월, 2025-08~2026-06)
바스켓CURATED_SYMBOLS 96~105종목(실행마다 fetch 성공분)
신호compute_momentum 점수(점-인-타임, 룩어헤드 차단)
비용수수료 0.015%/편 + 매도세 0.18% + 슬리피지 0.1%
엔진P2 backtest_engine + cost_model + edge_report

핵심 발견 — 토스 캔들 200 상한

  • 토스 캔들 API는 count ≤ 200(250↑은 400). 날짜 범위/오프셋 미지원 → 한 번에 ~10개월이 최대.
  • “수년치”는 과거 일괄 수집 불가. 앞으로 매일 누적해야만 쌓인다(P1 daily_prices 적재의 진짜 가치).

결과

중첩 표본(매일 시작) — 신뢰 불가

horizon↑일수록 excess↑·t=+2~+4.7로 “유의”하게 보였으나, 중첩 윈도우 자기상관이 t를 부풀린 가짜.

비중첩 표본(step=horizon, 자기상관 제거) — 진짜 결과

horizonthr표본벤치마크%초과%t승률%유의
50.001690-0.27+0.23+1.0043.1
50.151351-0.27+0.19+0.7242.6
100.15667+0.27+0.63+1.1644.7
100.30507+0.27+0.98+1.4645.0
200.30233+1.82+1.39+0.8645.1
  • 모든 조합 |t| < 2 → 유의하지 않음.
  • 승률이 일관되게 42~45%(<50%).
  • 무작위 대조군도 유의하지 않음(엔진 가짜엣지 탐지 정상 동작).

해석

  1. 모멘텀 단일 팩터는 이 표본(~10개월 KR)에서 비용 차감 후 엣지 없음.
  2. 중첩 표본의 “유의” 착시를 비중첩으로 제거 — P2 엔진이 의도대로 가짜 엣지를 걸러냄.
  3. 표본 한계: ~10개월·모멘텀만(감성·수급·재무는 과거 시계열 부재로 점-인-타임 백테스트 불가).

2차 — 컨트라리안(평균회귀) 가설 검증

모멘텀 승률<50%·역전 관찰 → 과매도 매수가 엣지를 갖는지 검증.

전체표본(비중첩) — 유망해 보였음

컨트라리안 신호(역모멘텀·N일급락)가 모멘텀과 정반대로 일관된 양(+) 초과수익, horizon↑일수록 강화. 10일급락<-6%+h20은 t=+2.65 ★, 승률 59%.

Out-of-sample 시간분할 — 신기루로 판명

전반/후반 절반으로 나눠 양쪽에서 유지되는지 검증:

신호horizon전반 t / excess후반 t / excess
역모멘텀0.1510-0.26 / -0.14%-1.34 / -0.72%
5일급락3%20+0.45 / +0.62%-0.43 / -0.69%
10일급락6%20+0.05 / +0.11%-0.06 / -0.11%
  • 어느 구간도 유의하지 않고, 후반은 전부 음(-). 전체표본 ★는 다중검정(12조합) + 전반 국면의 우연이었음.

최종 결론

  • 모멘텀·컨트라리안 둘 다 견고한 out-of-sample 엣지 없음(비용 차감, ~10개월 KR 단일 국면).
  • 앞서 보인 “유의”는 모두 인공물 — 모멘텀=중첩윈도우 t부풀림, 컨트라리안=다중검정+국면 우연. P2 엔진+비중첩+OOS분할이 두 가짜를 모두 제거함.
  • 구속 제약은 모델이 아니라 데이터: ~10개월·단일 국면은 표본 부족. 토스 200상한으로 과거 일괄 수집 불가.

다음 행동 (ADR-004 게이트)

  • P5(모델) 미착수 확정 — 검증된 엣지 없음.
  • 자동매매·실집행 보류 — 배포할 엣지가 없으므로 P4 live는 의미 없음.
  • 데이터 누적이 1순위: daily_prices 매일 append 배치를 띄워 다국면·다년 표본을 모은 뒤(수개월 필요) 재검증. 이것이 P1의 진짜 가치.
  • 재검증 대기 동안: 수급·재무 시계열도 함께 누적(현재 점-인-타임 부재). 누적 후 다팩터로 재검증.