KOSPI Backtest Dashboard

run_id: 20260322T114921Z_userreq_toss_tabm3seed_parquet_20260321_tossenriched_target350_z3p3
generated_at_utc: 2026-03-22T11:50:54.610414+00:00

Top KPI

trade_return_per_trade_bp = (total_pnl_final / total_trade_notional) * 10000
metric value
total_pnl_final 36.573M
total_trade_notional 9129.265M
daily_trade_notional 222.665M
total_fee 9.129M
mdd_pnl -2.530M
alpha_vs_dynamic_notional_beta_pnl_final 30.451M
alpha_vs_avg_hold_notional_beta_pnl_final 31.626M
dynamic_alpha_mdd_pnl -1.579M
avg_hold_alpha_mdd_pnl -1.741M
dynamic_alpha_sharpe_annualized 11.43
avg_hold_alpha_sharpe_annualized 11.5647
time_avg_total_notional_position_usdt 44.411M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 44.411M
trade_return_per_trade_bp 40.06bp
roi_avg_notional_position_pct 82.35%
roi_peak_notional_position_pct 36.45%
num_trades 3,690
high_mc_trade_notional 0.000M
high_mc_sharpe_annualized
high_mc_trade_return_per_trade_bp
low_mc_trade_notional 9129.265M
low_mc_sharpe_annualized 12.735
low_mc_trade_return_per_trade_bp 40.06bp
sharpe_annualized 12.735

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 3.3
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 36.573M
total_pnl_peak 36.597M
dynamic_notional_beta_pnl_final 6.123M
alpha_vs_dynamic_notional_beta_pnl_final 30.451M
avg_hold_notional_beta_pnl_final 4.947M
alpha_vs_avg_hold_notional_beta_pnl_final 31.626M
high_mc_dynamic_notional_beta_pnl_final 0.000M
low_mc_dynamic_notional_beta_pnl_final 6.123M
high_mc_avg_hold_notional_beta_pnl_final 0.000M
low_mc_avg_hold_notional_beta_pnl_final 4.947M
high_mc_alpha_vs_dynamic_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_dynamic_notional_beta_pnl_final 30.451M
high_mc_alpha_vs_avg_hold_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_avg_hold_notional_beta_pnl_final 31.626M
dynamic_alpha_mdd_pnl -1.579M
dynamic_alpha_sharpe_annualized 11.43
avg_hold_alpha_mdd_pnl -1.741M
avg_hold_alpha_sharpe_annualized 11.5647
num_trades 3,690
total_traded_amount_sum 7.37247e+06
total_trade_notional 9129.265M
daily_trade_notional 222.665M
trading_day_count 41
total_fee 9.129M
time_avg_total_notional_position_usdt 44.411M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 44.411M
time_avg_net_position_usdt 44.411M
time_avg_abs_net_position_usdt 44.411M
peak_abs_net_position_usdt 1.00326e+08
roi_avg_notional_position_pct 82.35%
roi_peak_notional_position_pct 36.45%
mdd_pnl -2.530M
sharpe_annualized 12.735
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 36.573M
low_mc_trade_notional 9129.265M
low_mc_num_trades 3,690
low_mc_sharpe_annualized 12.735
low_mc_trade_return_per_trade_bp 40.06bp
model_zscore_pnl_final 3018.163M
hedge_zscore_pnl_final 634.594M
force_zscore_pnl_final 0.000M
funding_fee_pnl_final 0.000M
funding_event_count 0
model_win_rate_20m 66.42%
hedge_win_rate_20m 45.00%
force_win_rate_20m
model_win_rate_btc_adj_20m 66.42%
hedge_win_rate_btc_adj_20m 45.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.6573e+07 9.12927e+09 3690 12.735 40.0613
high 0 0 0
low 3.6573e+07 9.12927e+09 3690 12.735 40.0613

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 2278 1.07582e+07 0.00192309 19.2309 0.636962 0.0053872 -0.00124258 0.00485041 1.07582e+07 0.00192309 19.2309 0.636962
10 2278 1.45064e+07 0.0025931 25.931 0.654522 0.00664323 -0.00137831 0.00529131 1.45064e+07 0.0025931 25.931 0.654522
20 2278 1.71395e+07 0.00306377 30.6377 0.664179 0.00926779 -0.00239873 0.00718956 1.71395e+07 0.00306377 30.6377 0.664179
30 2277 1.70641e+07 0.00305165 30.5165 0.661397 0.00760663 -0.001509 0.00372549 1.70641e+07 0.00305165 30.5165 0.661397
60 2276 2.00444e+07 0.00358624 35.8624 0.658172 0.00687226 -0.000628163 0.00229235 2.00444e+07 0.00358624 35.8624 0.658172
120 2271 3.59282e+07 0.00644253 64.4253 0.638045 -0.00752474 0.0101071 0.000898141 3.59282e+07 0.00644253 64.4253 0.638045
240 2264 4.25677e+07 0.00765707 76.5707 0.616608 0.00490061 0.00454435 0.000255612 4.25677e+07 0.00765707 76.5707 0.616608

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 1412 -2.61897e+06 -0.000740861 -7.40861 0.350567 0.00245764 -0.00118846 0.00362872 -2.61897e+06 -0.000740861 -7.40861 0.350567
10 1412 -3.01627e+06 -0.00085325 -8.5325 0.411473 0.00208841 -0.00122503 0.00131084 -3.01627e+06 -0.00085325 -8.5325 0.411473
20 1411 -2.95264e+06 -0.000835855 -8.35855 0.450035 0.00348098 -0.00148963 0.00235042 -2.95264e+06 -0.000835855 -8.35855 0.450035
30 1410 -4.03283e+06 -0.00114244 -11.4244 0.450355 -0.00033694 -0.00110565 1.47622e-05 -4.03283e+06 -0.00114244 -11.4244 0.450355
60 1409 -5.99292e+06 -0.00169892 -16.9892 0.454223 -0.000806143 -0.0015803 2.98709e-05 -5.99292e+06 -0.00169892 -16.9892 0.454223
120 1408 -4.94419e+06 -0.00140264 -14.0264 0.482955 0.00112597 -0.00155522 4.31562e-05 -4.94419e+06 -0.00140264 -14.0264 0.482955
240 1404 -4.43174e+06 -0.00126092 -12.6092 0.507835 -0.00146477 -0.000958204 3.15726e-05 -4.43174e+06 -0.00126092 -12.6092 0.507835

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 92 168103 0.0136952 136.952
09:20 100 177868 0.00490423 49.0423
09:40 108 259444 -0.00230935 -23.0935
10:00 106 226467 0.00488133 48.8133
10:20 104 197345 0.00295095 29.5095
10:40 121 287339 0.00332839 33.2839
11:00 152 373779 0.00152291 15.2291
11:20 124 345494 0.00570391 57.0391
11:40 76 161720 0.0047733 47.733
12:00 81 232943 0.00536954 53.6954
12:20 71 176435 0.00800186 80.0186
12:40 86 178721 0.00437576 43.7576
13:00 88 197190 0.00527328 52.7328
13:20 160 258635 0.032463 324.63
13:40 174 183410 0.0100511 100.511
14:00 102 107561 0.00209416 20.9416
14:20 63 71578 0.00376747 37.6747
14:40 18 37874 0.00864025 86.4025
15:00 45 48321 0.00117631 11.7631
15:20 0 0

Z-Score-Quality Scatter + Regression

Model Buy/Sell Scatter + Regression