백테스트 실행
web/src/components/backtest/BacktestForm.tsx의 입력 필드와 그 검증 규칙을 정리합니다.
📸 백테스트 실행 폼 (추후 자동 캡처 예정)
입력 필드
| 필드 | 타입 | 기본 | 비고 |
|---|---|---|---|
| Strategy | select | momentum | 활성화된 전략만 표시 (Settings → Strategies) |
| Symbol | text | BTC/USDT | CCXT 심볼 표기 (/ 구분) |
| Timeframe | select | 1h | 5m / 15m / 1h / 4h / 1d |
| Start date | date | 1년 전 | ISO 형식 |
| End date | date | 오늘 | ISO 형식 |
| Initial capital | number | 10000 | USDT |
| Commission profile | select | binance_spot | 프로파일 가이드 |
| Slippage (bps) | number | 5 | 1bp = 0.01% |
검증 규칙
폼은 다음을 검사합니다.
| 규칙 | 위반 시 |
|---|---|
start_date < end_date | 빨간 헬프 텍스트 |
initial_capital > 0 | 동일 |
| 데이터 가용성 | 서버에서 422 반환 시 배너로 표시 |
심볼 자동완성은 BTC 백테스트 폼에는 없습니다 (Equity 폼에만 존재).
Run backtest 버튼
POST /api/backtest/run 호출:
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
http://localhost:8000/api/backtest/run \
-d '{
"strategy": "momentum",
"symbol": "BTC/USDT",
"timeframe": "1h",
"start_date": "2024-01-01",
"end_date": "2025-01-01",
"initial_capital": 10000,
"commission_profile": "binance_spot",
"slippage_bps": 5
}'
처리 시간: 데이터 양에 비례 (1년치 1h: 약 5–15초).
진행 표시
mutation.isPending 동안 버튼은 "Running..." 텍스트로 비활성화됩니다. 결과가 도착하면 BacktestResultView가 자동으로 마운트됩니다.
자주 묻는 질문
Q. 너무 오래 걸려요.
A. timeframe을 1d로 낮추거나 기간을 줄여보세요. 5m × 5년 조합은 가급적 피하세요.
Q. 데이터 없음 에러가 나옵니다.
A. 해당 심볼/기간의 OHLCV가 DB에 없습니다. Data & Models → Coverage에서 적재 상태를 확인하세요.
Q. 결과가 0건 거래로 나옵니다.
A. 전략 파라미터 기본값과 기간이 안 맞을 가능성이 큽니다. timeframe / strategy 조합을 다시 검토하세요.