KOSPI Backtest Dashboard

run_id: 20260320T164659Z_userreq_toss_full_tabm_256_105feat_20260320_target350_z2p82
generated_at_utc: 2026-03-20T16:47:31.071507+00:00

Top KPI

trade_return_per_trade_bp = (total_pnl_final / total_trade_notional) * 10000
metric value
total_pnl_final 31.184M
total_trade_notional 14232.407M
daily_trade_notional 347.132M
total_fee 14.232M
mdd_pnl -7.378M
alpha_vs_dynamic_notional_beta_pnl_final 21.263M
alpha_vs_avg_hold_notional_beta_pnl_final 22.708M
dynamic_alpha_mdd_pnl -1.746M
avg_hold_alpha_mdd_pnl -2.380M
dynamic_alpha_sharpe_annualized 7.69698
avg_hold_alpha_sharpe_annualized 8.09528
time_avg_total_notional_position_usdt 76.090M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 76.090M
trade_return_per_trade_bp 21.91bp
roi_avg_notional_position_pct 40.98%
roi_peak_notional_position_pct 30.72%
num_trades 6,216
high_mc_trade_notional 0.000M
high_mc_sharpe_annualized
high_mc_trade_return_per_trade_bp
low_mc_trade_notional 14232.407M
low_mc_sharpe_annualized 9.04896
low_mc_trade_return_per_trade_bp 21.91bp
sharpe_annualized 9.04896

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.82
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 31.184M
total_pnl_peak 32.904M
dynamic_notional_beta_pnl_final 9.921M
alpha_vs_dynamic_notional_beta_pnl_final 21.263M
avg_hold_notional_beta_pnl_final 8.476M
alpha_vs_avg_hold_notional_beta_pnl_final 22.708M
high_mc_dynamic_notional_beta_pnl_final 0.000M
low_mc_dynamic_notional_beta_pnl_final 9.921M
high_mc_avg_hold_notional_beta_pnl_final 0.000M
low_mc_avg_hold_notional_beta_pnl_final 8.476M
high_mc_alpha_vs_dynamic_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_dynamic_notional_beta_pnl_final 21.263M
high_mc_alpha_vs_avg_hold_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_avg_hold_notional_beta_pnl_final 22.708M
dynamic_alpha_mdd_pnl -1.746M
dynamic_alpha_sharpe_annualized 7.69698
avg_hold_alpha_mdd_pnl -2.380M
avg_hold_alpha_sharpe_annualized 8.09528
num_trades 6,216
total_traded_amount_sum 1.09322e+07
total_trade_notional 14232.407M
daily_trade_notional 347.132M
trading_day_count 41
total_fee 14.232M
time_avg_total_notional_position_usdt 76.090M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 76.090M
time_avg_net_position_usdt 76.090M
time_avg_abs_net_position_usdt 76.090M
peak_abs_net_position_usdt 1.01498e+08
roi_avg_notional_position_pct 40.98%
roi_peak_notional_position_pct 30.72%
mdd_pnl -7.378M
sharpe_annualized 9.04896
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 31.184M
low_mc_trade_notional 14232.407M
low_mc_num_trades 6,216
low_mc_sharpe_annualized 9.04896
low_mc_trade_return_per_trade_bp 21.91bp
model_zscore_pnl_final 4666.324M
hedge_zscore_pnl_final 772.657M
force_zscore_pnl_final 0.000M
funding_fee_pnl_final 0.000M
funding_event_count 0
model_win_rate_20m 57.49%
hedge_win_rate_20m 43.00%
force_win_rate_20m
model_win_rate_btc_adj_20m 57.49%
hedge_win_rate_btc_adj_20m 43.00%
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 3.11837e+07 1.42324e+10 6216 9.04896 21.9104
high 0 0 0
low 3.11837e+07 1.42324e+10 6216 9.04896 21.9104

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 4215 9.88124e+06 0.00103605 10.3605 0.553262 -0.000891726 0.00141427 0.000313052 9.88124e+06 0.00103605 10.3605 0.553262
10 4215 1.15097e+07 0.00120679 12.0679 0.571767 -0.000656601 0.00143376 0.000128401 1.15097e+07 0.00120679 12.0679 0.571767
20 4213 1.10302e+07 0.00115711 11.5711 0.574887 -0.00163637 0.00194583 0.000483198 1.10302e+07 0.00115711 11.5711 0.574887
30 4212 1.55918e+07 0.00163607 16.3607 0.58452 -0.00138162 0.00226365 0.00025023 1.55918e+07 0.00163607 16.3607 0.58452
60 4211 2.35488e+07 0.00247166 24.7166 0.579435 0.000265306 0.00223552 5.33782e-06 2.35488e+07 0.00247166 24.7166 0.579435
120 4184 2.98775e+07 0.00315808 31.5808 0.589149 -0.000814738 0.00356347 2.67694e-05 2.98775e+07 0.00315808 31.5808 0.589149
240 4151 3.40664e+07 0.00363265 36.3265 0.573115 2.70713e-05 0.0037283 1.82569e-08 3.40664e+07 0.00363265 36.3265 0.573115

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 2001 -3.92258e+06 -0.000835478 -8.35478 0.366317 0.00332082 -0.00131823 0.00529949 -3.92258e+06 -0.000835478 -8.35478 0.366317
10 2001 -3.72874e+06 -0.000794191 -7.94191 0.4003 0.00296862 -0.00124828 0.00393172 -3.72874e+06 -0.000794191 -7.94191 0.4003
20 2000 -4.19592e+06 -0.000894175 -8.94175 0.43 0.0026755 -0.00133701 0.00179185 -4.19592e+06 -0.000894175 -8.94175 0.43
30 1998 -4.31418e+06 -0.00092036 -9.2036 0.451952 0.00355468 -0.00143723 0.00204269 -4.31418e+06 -0.00092036 -9.2036 0.451952
60 1993 -5.68827e+06 -0.00121629 -12.1629 0.461616 0.00104408 -0.00132584 8.58224e-05 -5.68827e+06 -0.00121629 -12.1629 0.461616
120 1981 -4.16875e+06 -0.000897157 -8.97157 0.470974 0.00400058 -0.00150262 0.000670868 -4.16875e+06 -0.000897157 -8.97157 0.470974
240 1927 -4.83404e+06 -0.00106758 -10.6758 0.486767 -0.00255442 -0.000603509 0.000108202 -4.83404e+06 -0.00106758 -10.6758 0.486767

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 172 266824 0.0117989 117.989
09:20 218 368742 0.0053661 53.661
09:40 278 501150 -0.000774625 -7.74625
10:00 335 590576 0.00306526 30.6526
10:20 255 433384 0.00292409 29.2409
10:40 189 434941 0.00512912 51.2912
11:00 192 348522 0.000637166 6.37166
11:20 148 288700 0.00486677 48.6677
11:40 143 313859 0.00408473 40.8473
12:00 114 255208 0.00444065 44.4065
12:20 125 240038 0.00411864 41.1864
12:40 123 140611 0.0019276 19.276
13:00 117 314351 0.00358483 35.8483
13:20 309 459509 0.00581653 58.1653
13:40 202 189228 0.00588577 58.8577
14:00 122 103791 -0.000898725 -8.98725
14:20 100 136676 0.0233653 233.653
14:40 41 30754 0.00732274 73.2274
15:00 38 61398 0.0138873 138.873
15:20 0 0

Z-Score-Quality Scatter + Regression

Model Buy/Sell Scatter + Regression