첫 백테스트
quant-ai의 백테스트 엔진은 vectorbt 기반으로, 5개 기본 전략을 즉시 사용할 수 있습니다. 이 페이지에서는 첫 번째 백테스트를 실행하고 결과 지표를 해석합니다.
사전 준비
- 10분 퀵스타트 완료 (계정 + 로그인)
- 페이퍼 키 등록은 백테스트에 필수가 아닙니다 (저장된 OHLCV만 사용)
Step 1: Backtest 화면 열기
다음 두 위치 중 한 곳에서 진입할 수 있습니다.
- 좌측 사이드바 → Backtest (Crypto 전용 단순 화면)
- Equity → Backtest 탭 (멀티자산: crypto / us_equity / kr_equity)
이 가이드는 멀티자산 화면(Equity → Backtest)을 기준으로 설명합니다.
📸 Equity 백테스트 폼 (추후 자동 캡처 예정)
Step 2: 파라미터 설정
폼 필드:
| 필드 | 옵션 / 예시 |
|---|---|
| Asset Class | crypto / us_equity / kr_equity |
| Strategy | momentum, mean_reversion, trend_following, breakout, ma_golden_cross |
| Symbol | crypto는 BTC/USDT 고정 / 주식은 자유 입력 (AAPL, 005930) |
| Timeframe | 1m / 5m / 15m / 1h / 4h / 1d |
| Start Date | 예: 2024-01-01 |
| End Date | 예: 2025-01-01 |
| Initial Capital | 예: 10000 ($) — KR 자산은 KRW 환산 |
지원 전략 전체 목록과 시그널 정의는 부록 / 지원 전략 에 있습니다.
데이터 가용 구간
백테스트는 DB에 저장된 OHLCV만 사용합니다. 데이터가 비어 있는 구간을 지정하면 결과가 비거나 0거래로 끝납니다. 가용 구간은 데이터 / OHLCV 커버리지 화면에서 확인하세요.
Step 3: 실행
Run Backtest 버튼 클릭 시 다음 요청이 전송됩니다:
POST /api/backtest/run
Authorization: Bearer <access_token>
{
"strategy": "ma_golden_cross",
"symbol": "BTC/USDT",
"timeframe": "1h",
"start_date": "2024-01-01",
"end_date": "2025-01-01",
"initial_capital": 10000,
"asset_class": "crypto"
}
응답이 들어오면 폼 아래에 결과 패널이 표시됩니다.
Step 4: 결과 해석
📸 백테스트 결과 + equity curve (추후 자동 캡처 예정)
4-1. 핵심 지표
| 지표 | 좋은 값 (참고) | 의미 |
|---|---|---|
total_return | > 0 | 기간 누적 수익률 (final_equity / initial_capital - 1) |
sharpe_ratio | > 1.0 | 위험조정수익률 ((평균 수익 - 무위험) / 표준편차) |
max_drawdown | > -20% (절댓값 작을수록 양호) | 고점 대비 최대 낙폭 |
win_rate | > 0.5 | 승률 (이긴 거래 / 전체 거래) |
profit_factor | > 1.5 | 총이익 / 총손실 절댓값 |
total_trades | 통계 신뢰 가능한 N | 전체 체결 횟수 |
절대 룰
- 페이퍼/백테스트 단계에서 한 번이라도
max_drawdown이 -25% 이하 면 해당 전략은 라이브 후보에서 제외됩니다. - Sharpe < 0.5 인 전략도 마찬가지입니다.
- 자세한 게이트: 페이퍼 → 라이브.
4-2. equity_curve 차트
equity_curve 는 시점별 잔고(time, equity) 시계열입니다. 차트에서 다음 포인트를 확인하세요:
- 우상향 추세 — 전체 곡선의 기울기가 양인가?
- drawdown 구간의 깊이와 길이 — 한 번 빠지고 회복하는 데 며칠 걸렸는가?
- 횡보 구간 — 시그널이 거의 없어 잔고가 평탄한 구간이 너무 길지 않은가? (전략-시장 미스매치)
4-3. 거래 분포
trades 배열에는 개별 거래 (entry_time, exit_time, pnl, return_pct)가 들어 있습니다.
승/패 분포가 한쪽으로 극단적으로 치우치면 (예: 승률 90% / 평균손실이 평균이익의 5배) 표면 지표가 좋아 보여도 fragile 한 전략입니다.
Step 5: 비교 / 저장
- 다른 전략으로 동일 기간 다시 실행 → 결과 패널이 갱신됩니다.
- 좋은 결과는 백테스트 프로파일 에 저장하면 다음에 같은 파라미터를 한 번에 불러올 수 있습니다.
- Walk-forward 검증으로 강건성을 추가 확인하세요: walk-forward.
자주 보는 에러
| 메시지 | 원인 | 해결 |
|---|---|---|
total_trades=0 | 전략 시그널이 0건 → 시장-전략 부정합 또는 데이터 비어있음 | 다른 전략/기간 시도, OHLCV 커버리지 확인 |
422 Invalid symbol | 자산군 ↔ 심볼 불일치 | 자산군 토글 변경 |
404 Strategy not found | 잘못된 전략 키 | 지원 전략 목록 참고 |
500 ENGINE_FAILED | 엔진 내부 오류 (drift 등) | 잠시 후 재시도, 지속되면 트러블슈팅 |
다음 단계: 다음 단계에서 라이브 모드 게이트, 멀티자산 운영, Grafana 모니터링 등 후속 학습 경로를 확인합니다.