본문으로 건너뛰기

Backtest 탭

web/src/components/equity/BacktestForm.tsx 컴포넌트로 구현된, 미국·한국 주식 백테스트 전용 화면입니다. (BTC 백테스트는 별도 페이지 → Backtest)

📸 Equity 백테스트 탭 (추후 자동 캡처 예정)

입력 폼

7개 필드의 그리드 폼입니다.

필드기본값설명
Asset class페이지 필터 따라감 (us_equity / kr_equity)KR/US 양자택일
SymbolAAPLSymbolSearch 자동완성 + 칩 표시
Strategyma_golden_crossMA Golden Cross / Volume Breakout / Mean Reversion
Start date2023-01-01ISO 날짜
End date2025-01-01ISO 날짜
Initial capital10000통화는 자산군에 따름
Commission profilealpaca_zero (US) / kis_default (KR)자산군별 풀다운

자산군이 변경되면 commission profile 옵션이 즉시 갱신됩니다 (useEffect 동기화).

전략 카탈로그

3개 기본 전략이 사전 등록되어 있습니다.

전략 ID라벨설명
ma_golden_crossMA Golden Cross단기/장기 이동평균 교차
volume_breakoutVolume Breakout거래량 폭발 + 고점 돌파
mean_reversionMean Reversion볼린저 밴드 평균 회귀

전략별 파라미터 조정 UI는 후속 작업입니다.

Run backtest 버튼

클릭 시 다음 페이로드로 POST /api/equity/backtest 호출:

{
"asset_class": "us_equity",
"exchange": "alpaca",
"symbol": "AAPL",
"strategy": "ma_golden_cross",
"timeframe": "1d",
"start_date": "2023-01-01",
"end_date": "2025-01-01",
"initial_capital": 10000,
"currency": "USD",
"commission_profile": "alpaca_zero",
"slippage_bps": 5
}

처리 시간은 보통 2–10초이며, 결과는 폼 하단에 즉시 렌더링됩니다.

결과 카드 (6개 메트릭)

카드
Total Returnresult.total_return (%)
Sharperesult.sharpe_ratio
Max DDresult.max_drawdown (%)
Win Rateresult.win_rate (%)
Profit Factorresult.profit_factor
Tradesresult.total_trades

아래에 EquityCurveChart (TradingView Lightweight)가 equity_curve를 시계열로 그립니다.

API 호출 예시

curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
http://localhost:8000/api/equity/backtest \
-d '{
"asset_class": "us_equity",
"exchange": "alpaca",
"symbol": "AAPL",
"strategy": "ma_golden_cross",
"timeframe": "1d",
"start_date": "2023-01-01",
"end_date": "2025-01-01",
"initial_capital": 10000,
"currency": "USD",
"commission_profile": "alpaca_zero",
"slippage_bps": 5
}'

자주 묻는 질문

Q. KR Equity 결과가 이상합니다.
A. commission_profile=kis_default이 선택돼야 KIS 수수료/세금이 정확히 반영됩니다. 자산군 변경 후 폼이 동기화 됐는지 확인하세요.

Q. Slippage는 조정 가능한가요?
A. 폼 UI는 5bps 고정이지만 API는 slippage_bps 파라미터를 받습니다. 직접 호출 시 변경 가능합니다.

Q. Equity curve가 끊어져 보입니다.
A. 종목의 휴장일/주말 구간에서 기존 equity가 carry-forward 됩니다. 정상 동작입니다.

관련 페이지