AI Trading: 교훈 #129: 심층 연구를 통해 발견된 백테스트 평가 버그
Source: Dev.to
Context
CEO는 Anthropic의 “Demystifying evals for AI agents” 기사에 대한 심층 연구를 요청하여 해당 평가 프레임워크가 우리 거래 시스템을 개선할 수 있는지 판단하고자 했습니다.
Discovery
기존 인프라와 기사를 비교 분석한 결과, 우리는 실제 금융 책임이 있기 때문에 일반적인 AI 에이전트 평가보다 더 엄격한 평가 인프라를 이미 보유하고 있음을 확인했습니다. 그러나 연구 과정에서 기존 평가 시스템에 중대한 버그가 발견되었습니다:
Bugs Found and Fixed
Bug 1: Slippage Model Disabled
- Location:
scripts/run_backtest_matrix.py - Issue: 코드에서는
slippage_model_enabled: True라고 선언했지만 모든 실행 비용이0.0으로 하드코딩되어 있었습니다. - Impact: 백테스트에서 수익이 20–50 % 과대평가되었습니다 (
slippage_model.py문서 기준). - Fix: 실제
SlippageModel을 백테스트 실행에 통합하여 거래에 슬리피지와 수수료를 적용했습니다.
# scripts/run_backtest_matrix.py
slippage_model_enabled = True
# before: execution_cost = 0.0
# after: execution_cost = SlippageModel.calculate(trade)
Bug 2: Win Rate Without Context (ll_118 violation)
- Location:
scripts/run_backtest_matrix.py및 출력 JSON 파일들 - Issue: 승률이 평균 수익과 함께 표시되지 않아 오해를 일으킬 수 있었습니다 (예: “80 % 승률”이지만 평균 수익은 –6.97 %).
- Impact: 전략 성과에 대한 잘못된 자신감이 생겼습니다.
- Fix:
avg_return_pct필드와win_rate_with_context를 추가하여 두 값을 항상 함께 표시하도록 했습니다.
{
"win_rate": 0.80,
"avg_return_pct": -6.97,
"win_rate_with_context": "80 % win rate (‑6.97 % avg return)"
}
Bug 3: Missing Bidirectional Learning
- Location:
src/analytics/live_vs_backtest_tracker.py - Issue: 실시간 슬리피지를 추적했지만 그 관측값을 백테스트 가정에 반영하지 않았습니다.
- Impact: 실제 증거가 있음에도 불구하고 오래된 슬리피지 가정이 계속 재사용되었습니다.
- Fix:
sync_to_backtest_assumptions()메서드와load_live_slippage_assumptions()를 추가하여 백테스트에 반영했습니다.
# src/analytics/live_vs_backtest_tracker.py
def sync_to_backtest_assumptions():
live_slippage = load_live_slippage_assumptions()
backtest_config.update(slippage=live_slippage)
Key Insight
Anthropic 기사에서는 LLM 에이전트(예: Claude Code) 평가에 유용하지만, 거래 시스템에는 적용되지 않습니다.
우리의 거래 시스템은 이미 다음을 포함하고 있습니다:
- 정량적 지표 (샤프, 승률, 최대 손실)
- 생존 게이트 검증 (95 % 자본 보전)
- 19개의 역사적 시나리오, 포함된 충돌 재현
- 실시간 vs. 백테스트 추적
- 이상 탐지
연구의 실제 가치는 새로운 평가 프레임워크를 도입하는 것이 아니라 구현 버그를 발견한 데 있습니다.
Prevention
- 문서가 주장하는 대로 코드가 실제로 구현되어야 합니다 (예:
slippage_model_enabled). - ll_118 규칙에 따라 승률과 평균 수익을 항상 함께 표시해야 합니다.
- 생산 환경에서 테스트 환경으로의 양방향 피드백 루프를 구현합니다.
- 정기적으로 평가 인프라를 감사하여 무음 실패를 찾아냅니다.
Files Changed
scripts/run_backtest_matrix.py– 슬리피지 모델 통합,avg_return_pct추가.src/analytics/live_vs_backtest_tracker.py– 양방향 학습 함수 추가.
Tags
evaluation #backtest #slippage #win-rate #bidirectional-learning #system-audit
이 레슨은 우리 AI Trading repository에서 자동으로 게시되었습니다.
More lessons: rag_knowledge/lessons_learned