KOSPI Backtest Dashboard

run_id: 20260323T062104Z_userreq_top200_ens2_best_parquet_20260323_z2p995_commongrid200
generated_at_utc: 2026-03-23T06:21:13.413017+00:00

Top KPI

trade_return_per_trade_bp = (total_pnl_final / total_trade_notional) * 10000
metric value
total_pnl_final 14.156M
total_trade_notional 4334.020M
daily_trade_notional 173.361M
total_fee 4.334M
mdd_pnl -14.511M
alpha_vs_dynamic_notional_beta_pnl_final 1.895M
alpha_vs_avg_hold_notional_beta_pnl_final 8.630M
dynamic_alpha_mdd_pnl -4.915M
avg_hold_alpha_mdd_pnl -4.991M
dynamic_alpha_sharpe_annualized 1.83621
avg_hold_alpha_sharpe_annualized 6.52183
time_avg_total_notional_position_usdt 58.959M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 58.959M
trade_return_per_trade_bp 32.66bp
roi_avg_notional_position_pct 24.01%
roi_peak_notional_position_pct 13.92%
num_trades 1,837
high_mc_trade_notional 0.000M
high_mc_sharpe_annualized
high_mc_trade_return_per_trade_bp
low_mc_trade_notional 4334.020M
low_mc_sharpe_annualized 4.98264
low_mc_trade_return_per_trade_bp 32.66bp
sharpe_annualized 4.98264

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.995
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 14.156M
total_pnl_peak 17.890M
dynamic_notional_beta_pnl_final 12.260M
alpha_vs_dynamic_notional_beta_pnl_final 1.895M
avg_hold_notional_beta_pnl_final 5.525M
alpha_vs_avg_hold_notional_beta_pnl_final 8.630M
high_mc_dynamic_notional_beta_pnl_final 0.000M
low_mc_dynamic_notional_beta_pnl_final 12.260M
high_mc_avg_hold_notional_beta_pnl_final 0.000M
low_mc_avg_hold_notional_beta_pnl_final 5.525M
high_mc_alpha_vs_dynamic_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_dynamic_notional_beta_pnl_final 1.895M
high_mc_alpha_vs_avg_hold_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_avg_hold_notional_beta_pnl_final 8.630M
dynamic_alpha_mdd_pnl -4.915M
dynamic_alpha_sharpe_annualized 1.83621
avg_hold_alpha_mdd_pnl -4.991M
avg_hold_alpha_sharpe_annualized 6.52183
num_trades 1,837
total_traded_amount_sum 121303
total_trade_notional 4334.020M
daily_trade_notional 173.361M
trading_day_count 25
total_fee 4.334M
time_avg_total_notional_position_usdt 58.959M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 58.959M
time_avg_net_position_usdt 58.959M
time_avg_abs_net_position_usdt 58.959M
peak_abs_net_position_usdt 1.01666e+08
roi_avg_notional_position_pct 24.01%
roi_peak_notional_position_pct 13.92%
mdd_pnl -14.511M
sharpe_annualized 4.98264
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 14.156M
low_mc_trade_notional 4334.020M
low_mc_num_trades 1,837
low_mc_sharpe_annualized 4.98264
low_mc_trade_return_per_trade_bp 32.66bp
model_zscore_pnl_final 158.040M
hedge_zscore_pnl_final 7.994M
force_zscore_pnl_final 0.000M
funding_fee_pnl_final 0.000M
funding_event_count 0
model_win_rate_20m 55.54%
hedge_win_rate_20m 47.34%
force_win_rate_20m
model_win_rate_btc_adj_20m 55.54%
hedge_win_rate_btc_adj_20m 47.34%
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 1.41555e+07 4.33402e+09 1837 4.98264 32.6614
high 0 0 0
low 1.41555e+07 4.33402e+09 1837 4.98264 32.6614

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 1197 1.98952e+06 0.000714081 7.14081 0.560568 0.0174724 -0.000430602 0.00378276 1.98952e+06 0.000714081 7.14081 0.560568
10 1195 2.96088e+06 0.00106466 10.6466 0.56569 0.00235669 0.000701154 4.58916e-05 2.96088e+06 0.00106466 10.6466 0.56569
20 1192 5.28771e+06 0.0019062 19.062 0.555369 0.0119747 0.000853593 0.000538127 5.28771e+06 0.0019062 19.062 0.555369
30 1190 4.08624e+06 0.00147559 14.7559 0.537815 0.025825 -0.000389331 0.00161811 4.08624e+06 0.00147559 14.7559 0.537815
60 1158 1.06582e+07 0.00395714 39.5714 0.541451 0.0362954 0.00154703 0.00140275 1.06582e+07 0.00395714 39.5714 0.541451
120 1155 1.49416e+07 0.00556272 55.6272 0.522078 0.0141157 0.00402523 0.000104601 1.49416e+07 0.00556272 55.6272 0.522078
240 1117 1.76104e+07 0.00678959 67.8959 0.533572 0.0321504 0.00484148 0.000322114 1.76104e+07 0.00678959 67.8959 0.533572

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 640 -1.19903e+06 -0.000774622 -7.74622 0.459375 -0.000536402 -0.000754649 1.8254e-06 -1.19903e+06 -0.000774622 -7.74622 0.459375
10 640 -882156 -0.000569907 -5.69907 0.485938 0.00479092 -0.000538435 7.19048e-05 -882156 -0.000569907 -5.69907 0.485938
20 638 -1.14015e+06 -0.000739017 -7.39017 0.473354 2.40948e-05 -0.000761556 9.01913e-10 -1.14015e+06 -0.000739017 -7.39017 0.473354
30 637 -1.07089e+06 -0.000695179 -6.95179 0.502355 1.66062e-05 -0.000688918 2.71382e-10 -1.07089e+06 -0.000695179 -6.95179 0.502355
60 633 -1.66397e+06 -0.001087 -10.87 0.477093 -0.0418543 -0.000844133 0.00113983 -1.66397e+06 -0.001087 -10.87 0.477093
120 615 -2.76339e+06 -0.00185803 -18.5803 0.471545 -0.018979 -0.00192177 0.000135502 -2.76339e+06 -0.00185803 -18.5803 0.471545
240 599 -5.97229e+06 -0.00412637 -41.2637 0.465776 0.039429 -0.00465875 0.000162607 -5.97229e+06 -0.00412637 -41.2637 0.465776

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 14 523 -0.00419554 -41.9554
09:20 17 746 0.0116196 116.196
09:40 25 1840 0.0106627 106.627
10:00 15 474 -0.0226973 -226.973
10:20 16 1753 0.00578121 57.8121
10:40 19 1408 -0.0021737 -21.737
11:00 28 1115 0.00219333 21.9333
11:20 34 988 -0.000175568 -1.75568
11:40 54 2798 0.00710614 71.0614
12:00 38 1923 -0.00891887 -89.1887
12:20 32 1676 0.00215565 21.5565
12:40 41 2454 0.00112092 11.2092
13:00 44 2250 -0.0109112 -109.112
13:20 172 11102 0.00856648 85.6648
13:40 147 10150 0.00825535 82.5535
14:00 117 9054 0.011314 113.14
14:20 73 4629 0.00928649 92.8649
14:40 37 4192 0.0259254 259.254
15:00 34 2964 0.0267224 267.224
15:20 0 0

Z-Score-Quality Scatter + Regression

Model Buy/Sell Scatter + Regression