sequenceDiagram
participant B as backtest.py
Note over B: warmup=20 스킵
loop t in [20, len-horizon-1]
B->>B: score(prices[0:t+1])
Note over B: 룩어헤드 배제 (t 이후 미참조)
B->>B: ret = (prices[t+horizon] - prices[t]) / prices[t]
end
B->>B: overall_win_rate, signal_win_rate 계산
B->>B: edge = signal_avg_return - overall_avg_return
B-->>B: BacktestResult(samples, win_rate, avg_return, edge, note)
클래스 의존
flowchart LR
subgraph Application["Application"]
main["main.py\n/backtest/{symbol}"]
end
subgraph Domain["ML 도메인"]
bt["backtest.py\nrun_backtest()"]
signal["signal.py\nscore()"]
end
main --> bt
bt --> signal