KOSPI Backtest Dashboard

run_id: 20260321T011352Z_userreq_toss_ens2_105_enhanced_20260320_target350_z2p86
generated_at_utc: 2026-03-21T01:19:13.540862+00:00

Top KPI

trade_return_per_trade_bp = (total_pnl_final / total_trade_notional) * 10000
metric value
total_pnl_final 41.478M
total_trade_notional 15040.494M
daily_trade_notional 366.841M
total_fee 15.040M
mdd_pnl -11.637M
alpha_vs_dynamic_notional_beta_pnl_final 31.569M
alpha_vs_avg_hold_notional_beta_pnl_final 31.576M
dynamic_alpha_mdd_pnl -2.807M
avg_hold_alpha_mdd_pnl -2.562M
dynamic_alpha_sharpe_annualized 9.73
avg_hold_alpha_sharpe_annualized 9.69289
time_avg_total_notional_position_usdt 88.890M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 88.890M
trade_return_per_trade_bp 27.58bp
roi_avg_notional_position_pct 46.66%
roi_peak_notional_position_pct 40.68%
num_trades 7,219
high_mc_trade_notional 0.000M
high_mc_sharpe_annualized
high_mc_trade_return_per_trade_bp
low_mc_trade_notional 15040.494M
low_mc_sharpe_annualized 9.75104
low_mc_trade_return_per_trade_bp 27.58bp
sharpe_annualized 9.75104

Run Parameters

source: not_found
param value
active_minutes_ratio 0.5
confidence_median_adjust_multiplier 1
force_hedge_timeout_window 300
force_taker_start_hhmm 1540
hedge_max_amount_krw 2.5e+06
hedge_pred_threshold 0
hedge_slippage 0
high_speed 1
model_slippage 0
one_coin_max_neg_position_krw 0
one_coin_max_pos_position_krw 2.5e+06
position_close_timeout_minutes 120
pred_sma_len 1
total_max_abs_position_krw 1e+08
trade_end_hhmm 1520
trade_start_hhmm 905
z_score_threshold 2.86
z_score_time_window 120

Core KPI

roi_avg_notional_position_pct = total_pnl_final / time_avg_abs_net_position_usdt * 100
roi_peak_notional_position_pct = total_pnl_final / peak_abs_net_position_usdt * 100
dynamic_notional_beta = cumsum(total_notional_position_usdt(t) * mean(close c2c return across all coins at t))
avg_hold_notional_beta = cumsum(avg_total_notional_position_usdt * mean(close c2c return across all coins at t))
high/low dynamic_notional_beta = cumsum(segment_notional_position_usdt(t) * mean(close c2c return in each segment at t))
high/low avg_hold_notional_beta = cumsum(avg_segment_notional_position_usdt * mean(close c2c return in each segment at t))
alpha_vs_dynamic = pnl - dynamic_notional_beta, alpha_vs_avg_hold = pnl - avg_hold_notional_beta
dynamic_alpha_mdd_pnl / avg_hold_alpha_mdd_pnl = min(alpha - cummax(alpha)) on each alpha series
dynamic_alpha_sharpe_annualized / avg_hold_alpha_sharpe_annualized = mean(Δalpha) / std(Δalpha) * sqrt(252 * 390)
mdd_pnl = min(total_pnl - cummax(total_pnl))
sharpe_annualized = mean(Δpnl) / std(Δpnl) * sqrt(252 * 390)
total_fee = sum(execution fee)
metric value
total_pnl_final 41.478M
total_pnl_peak 43.724M
dynamic_notional_beta_pnl_final 9.909M
alpha_vs_dynamic_notional_beta_pnl_final 31.569M
avg_hold_notional_beta_pnl_final 9.902M
alpha_vs_avg_hold_notional_beta_pnl_final 31.576M
high_mc_dynamic_notional_beta_pnl_final 0.000M
low_mc_dynamic_notional_beta_pnl_final 9.909M
high_mc_avg_hold_notional_beta_pnl_final 0.000M
low_mc_avg_hold_notional_beta_pnl_final 9.902M
high_mc_alpha_vs_dynamic_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_dynamic_notional_beta_pnl_final 31.569M
high_mc_alpha_vs_avg_hold_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_avg_hold_notional_beta_pnl_final 31.576M
dynamic_alpha_mdd_pnl -2.807M
dynamic_alpha_sharpe_annualized 9.73
avg_hold_alpha_mdd_pnl -2.562M
avg_hold_alpha_sharpe_annualized 9.69289
num_trades 7,219
total_traded_amount_sum 1.87341e+07
total_trade_notional 15040.494M
daily_trade_notional 366.841M
trading_day_count 41
total_fee 15.040M
time_avg_total_notional_position_usdt 88.890M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 88.890M
time_avg_net_position_usdt 88.890M
time_avg_abs_net_position_usdt 88.890M
peak_abs_net_position_usdt 1.01954e+08
roi_avg_notional_position_pct 46.66%
roi_peak_notional_position_pct 40.68%
mdd_pnl -11.637M
sharpe_annualized 9.75104
high_mc_pnl_final 0.000M
high_mc_trade_notional 0.000M
high_mc_num_trades 0
high_mc_sharpe_annualized
high_mc_trade_return_per_trade_bp
low_mc_pnl_final 41.478M
low_mc_trade_notional 15040.494M
low_mc_num_trades 7,219
low_mc_sharpe_annualized 9.75104
low_mc_trade_return_per_trade_bp 27.58bp
model_zscore_pnl_final 5337.012M
hedge_zscore_pnl_final 626.034M
force_zscore_pnl_final 0.000M
funding_fee_pnl_final 0.000M
funding_event_count 0
model_win_rate_20m 58.24%
hedge_win_rate_20m 45.87%
force_win_rate_20m
model_win_rate_btc_adj_20m 58.24%
hedge_win_rate_btc_adj_20m 45.87%
force_win_rate_btc_adj_20m

MC Segment KPI

segment in [total, high, low] computed by the same metric function over coin subsets
trade_return_per_trade_bp = pnl_final / trade_notional * 10000
segment pnl_final trade_notional num_trades sharpe_annualized trade_return_per_trade_bp
total 4.14779e+07 1.50405e+10 7219 9.75104 27.5775
high 0 0 0
low 4.14779e+07 1.50405e+10 7219 9.75104 27.5775

Quality By Horizon (Model)

quality = side_sign * (mid_price(next_n_bars) - execution_price) / execution_price - (fee / notional)
quality_btc_adj = quality - side_sign * ((btc_mid(t+n) - btc_mid(t)) / btc_mid(t))
quality_per_notional = quality_pnl / sum(notional_usdt)
quality_per_notional_bp = quality_per_notional * 10000
n_min pair_count quality_pnl_final quality_per_notional quality_per_notional_bp win_rate reg_a reg_b reg_r2 quality_btc_adj_pnl_final quality_btc_adj_per_notional quality_btc_adj_per_notional_bp win_rate_btc_adj
5 5181 1.45487e+07 0.00139357 13.9357 0.552403 0.0021311 7.80339e-05 0.00152534 1.45487e+07 0.00139357 13.9357 0.552403
10 5181 1.90653e+07 0.0018262 18.262 0.578653 0.00314519 -4.17591e-05 0.00241549 1.90653e+07 0.0018262 18.262 0.578653
20 5177 1.9202e+07 0.00184106 18.4106 0.582384 0.00434919 -0.000607951 0.00279507 1.9202e+07 0.00184106 18.4106 0.582384
30 5173 2.35852e+07 0.00226335 22.6335 0.5896 0.00764105 -0.00167954 0.00521932 2.35852e+07 0.00226335 22.6335 0.5896
60 5158 3.04247e+07 0.00293002 29.3002 0.585111 0.0081711 -0.00110745 0.00359207 3.04247e+07 0.00293002 29.3002 0.585111
120 5137 3.98578e+07 0.00385774 38.5774 0.585945 0.0107114 -0.00138652 0.00328561 3.98578e+07 0.00385774 38.5774 0.585945
240 5058 4.12951e+07 0.00407248 40.7248 0.557137 0.00678163 0.00039546 0.000805794 4.12951e+07 0.00407248 40.7248 0.557137

Quality By Horizon (Hedge)

n_min pair_count quality_pnl_final quality_per_notional quality_per_notional_bp win_rate reg_a reg_b reg_r2 quality_btc_adj_pnl_final quality_btc_adj_per_notional quality_btc_adj_per_notional_bp win_rate_btc_adj
5 2038 -3.59692e+06 -0.000781833 -7.81833 0.389107 0.000689241 -0.00087059 0.000165552 -3.59692e+06 -0.000781833 -7.81833 0.389107
10 2038 -4.7121e+06 -0.00102423 -10.2423 0.404809 -0.00154437 -0.000806409 0.000592912 -4.7121e+06 -0.00102423 -10.2423 0.404809
20 2034 -3.60725e+06 -0.000785806 -7.85806 0.458702 -0.000707228 -0.000693798 7.95436e-05 -3.60725e+06 -0.000785806 -7.85806 0.458702
30 2030 -3.50732e+06 -0.000765718 -7.65718 0.476355 -0.00314355 -0.000316479 0.00087565 -3.50732e+06 -0.000765718 -7.65718 0.476355
60 2023 -2.41668e+06 -0.000529488 -5.29488 0.492338 -0.00249297 -0.000146065 0.000296374 -2.41668e+06 -0.000529488 -5.29488 0.492338
120 1995 356102 7.91421e-05 0.791421 0.506266 0.00668361 -0.000588487 0.00121841 356102 7.91421e-05 0.791421 0.506266
240 1951 -5.87374e+06 -0.00133469 -13.3469 0.506407 0.00256671 -0.00166332 7.331e-05 -5.87374e+06 -0.00133469 -13.3469 0.506407

Quality By Horizon (Force)

n_min pair_count quality_pnl_final quality_per_notional quality_per_notional_bp win_rate reg_a reg_b reg_r2 quality_btc_adj_pnl_final quality_btc_adj_per_notional quality_btc_adj_per_notional_bp win_rate_btc_adj
5 0 0 NaN NaN NaN 0 0 0 0 NaN NaN NaN
10 0 0 NaN NaN NaN 0 0 0 0 NaN NaN NaN
20 0 0 NaN NaN NaN 0 0 0 0 NaN NaN NaN
30 0 0 NaN NaN NaN 0 0 0 0 NaN NaN NaN
60 0 0 NaN NaN NaN 0 0 0 0 NaN NaN NaN
120 0 0 NaN NaN NaN 0 0 0 0 NaN NaN NaN
240 0 0 NaN NaN NaN 0 0 0 0 NaN NaN NaN

PnL / Exposure

Model Buy 120m Relative Quality By Entry Time (20m, 09:00-15:30 KST)

quality_120m_mean = average of quality_120m for tag=model_buy in each 20-minute entry-time bucket
quality_120m_mean_bp = quality_120m_mean * 10000, total_amount = sum(abs(amount))
entry_time_bucket trade_count total_amount quality_120m_mean quality_120m_mean_bp
09:00 548 602565 0.00600234 60.0234
09:20 291 386443 0.0106894 106.894
09:40 229 262628 -0.000787513 -7.87513
10:00 181 294423 0.0054941 54.941
10:20 173 283757 0.00208193 20.8193
10:40 184 379869 0.00517889 51.7889
11:00 301 676549 0.00202769 20.2769
11:20 267 838649 0.00337554 33.7554
11:40 198 585606 0.00464766 46.4766
12:00 178 728559 0.00451683 45.1683
12:20 179 763345 0.00357686 35.7686
12:40 201 725440 0.00318467 31.8467
13:00 206 765386 0.00237581 23.7581
13:20 220 629897 0.00548417 54.8417
13:40 113 332157 0.0092679 92.679
14:00 120 273675 0.000512933 5.12933
14:20 124 255653 0.00967248 96.7248
14:40 75 225519 0.0102315 102.315
15:00 126 370247 0.0209083 209.083
15:20 0 0

Z-Score-Quality Scatter + Regression

Model Buy/Sell Scatter + Regression