KOSPI Backtest Dashboard

run_id: 20260322T115157Z_userreq_toss_ultimate_v2_parquet_20260322_tossenriched_z3p1
generated_at_utc: 2026-03-22T11:56:42.155858+00:00

Top KPI

trade_return_per_trade_bp = (total_pnl_final / total_trade_notional) * 10000
metric value
total_pnl_final 31.966M
total_trade_notional 9795.772M
daily_trade_notional 238.921M
total_fee 9.796M
mdd_pnl -4.857M
alpha_vs_dynamic_notional_beta_pnl_final 30.151M
alpha_vs_avg_hold_notional_beta_pnl_final 27.192M
dynamic_alpha_mdd_pnl -1.558M
avg_hold_alpha_mdd_pnl -2.110M
dynamic_alpha_sharpe_annualized 11.5771
avg_hold_alpha_sharpe_annualized 10.5673
time_avg_total_notional_position_usdt 42.856M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 42.856M
trade_return_per_trade_bp 32.63bp
roi_avg_notional_position_pct 74.59%
roi_peak_notional_position_pct 31.16%
num_trades 4,038
high_mc_trade_notional 0.000M
high_mc_sharpe_annualized
high_mc_trade_return_per_trade_bp
low_mc_trade_notional 9795.772M
low_mc_sharpe_annualized 11.159
low_mc_trade_return_per_trade_bp 32.63bp
sharpe_annualized 11.159

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.1
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.966M
total_pnl_peak 32.076M
dynamic_notional_beta_pnl_final 1.815M
alpha_vs_dynamic_notional_beta_pnl_final 30.151M
avg_hold_notional_beta_pnl_final 4.774M
alpha_vs_avg_hold_notional_beta_pnl_final 27.192M
high_mc_dynamic_notional_beta_pnl_final 0.000M
low_mc_dynamic_notional_beta_pnl_final 1.815M
high_mc_avg_hold_notional_beta_pnl_final 0.000M
low_mc_avg_hold_notional_beta_pnl_final 4.774M
high_mc_alpha_vs_dynamic_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_dynamic_notional_beta_pnl_final 30.151M
high_mc_alpha_vs_avg_hold_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_avg_hold_notional_beta_pnl_final 27.192M
dynamic_alpha_mdd_pnl -1.558M
dynamic_alpha_sharpe_annualized 11.5771
avg_hold_alpha_mdd_pnl -2.110M
avg_hold_alpha_sharpe_annualized 10.5673
num_trades 4,038
total_traded_amount_sum 8.23319e+06
total_trade_notional 9795.772M
daily_trade_notional 238.921M
trading_day_count 41
total_fee 9.796M
time_avg_total_notional_position_usdt 42.856M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 42.856M
time_avg_net_position_usdt 42.856M
time_avg_abs_net_position_usdt 42.856M
peak_abs_net_position_usdt 1.02569e+08
roi_avg_notional_position_pct 74.59%
roi_peak_notional_position_pct 31.16%
mdd_pnl -4.857M
sharpe_annualized 11.159
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.966M
low_mc_trade_notional 9795.772M
low_mc_num_trades 4,038
low_mc_sharpe_annualized 11.159
low_mc_trade_return_per_trade_bp 32.63bp
model_zscore_pnl_final 1591.538M
hedge_zscore_pnl_final 117.359M
force_zscore_pnl_final 0.000M
funding_fee_pnl_final 0.000M
funding_event_count 0
model_win_rate_20m 60.41%
hedge_win_rate_20m 46.26%
force_win_rate_20m
model_win_rate_btc_adj_20m 60.41%
hedge_win_rate_btc_adj_20m 46.26%
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.19656e+07 9.79577e+09 4038 11.159 32.632
high 0 0 0
low 3.19656e+07 9.79577e+09 4038 11.159 32.632

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 2980 1.07083e+07 0.00148865 14.8865 0.595638 0.00759854 -0.000366743 0.00243334 1.07083e+07 0.00148865 14.8865 0.595638
10 2980 1.51087e+07 0.00210037 21.0037 0.613423 0.013528 -0.00121766 0.00586306 1.51087e+07 0.00210037 21.0037 0.613423
20 2978 1.76322e+07 0.00245291 24.5291 0.604097 0.020969 -0.00252523 0.0103445 1.76322e+07 0.00245291 24.5291 0.604097
30 2977 1.99697e+07 0.00277907 27.7907 0.613705 0.0206034 -0.00209658 0.00803305 1.99697e+07 0.00277907 27.7907 0.613705
60 2967 1.9673e+07 0.00274727 27.4727 0.60364 0.0206488 -0.00194826 0.00497367 1.9673e+07 0.00274727 27.4727 0.60364
120 2924 3.48925e+07 0.00494699 49.4699 0.595759 0.00870745 0.00274185 0.000328405 3.48925e+07 0.00494699 49.4699 0.595759
240 2886 3.79612e+07 0.00545589 54.5589 0.572765 0.0237058 -4.75346e-05 0.00149293 3.79612e+07 0.00545589 54.5589 0.572765

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 1058 -827824 -0.000318096 -3.18096 0.408318 0.00956029 -0.000738002 0.0130503 -827824 -0.000318096 -3.18096 0.408318
10 1058 -855239 -0.00032863 -3.2863 0.459357 0.0101547 -0.000748867 0.00769772 -855239 -0.00032863 -3.2863 0.459357
20 1057 -1.56495e+06 -0.000601932 -6.01932 0.46263 0.00890906 -0.000994325 0.00204849 -1.56495e+06 -0.000601932 -6.01932 0.46263
30 1054 -1.53756e+06 -0.000593153 -5.93153 0.474383 0.0156086 -0.00128499 0.00457413 -1.53756e+06 -0.000593153 -5.93153 0.474383
60 1052 -2.34992e+06 -0.000908295 -9.08295 0.472433 -0.00900534 -0.000587059 0.00105538 -2.34992e+06 -0.000908295 -9.08295 0.472433
120 1045 -3.24253e+06 -0.00126193 -12.6193 0.48134 -0.00848685 -0.00104318 0.000528756 -3.24253e+06 -0.00126193 -12.6193 0.48134
240 1026 -4.7204e+06 -0.00187183 -18.7183 0.48538 -0.00928071 -0.00170655 0.000285137 -4.7204e+06 -0.00187183 -18.7183 0.48538

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 153 280318 0.0115302 115.302
09:20 108 181742 0.00224553 22.4553
09:40 84 212401 -0.00434764 -43.4764
10:00 68 127187 0.00328606 32.8606
10:20 71 144291 0.0026785 26.785
10:40 69 177829 0.00310387 31.0387
11:00 126 302509 -5.50137e-05 -0.550137
11:20 96 243211 0.00798938 79.8938
11:40 84 176069 0.00624997 62.4997
12:00 73 211745 0.00514809 51.4809
12:20 88 196093 0.0047023 47.023
12:40 106 211008 0.0028861 28.861
13:00 110 169563 0.00345946 34.5946
13:20 211 414397 0.0295056 295.056
13:40 256 448133 0.00309788 30.9788
14:00 160 274160 0.00689315 68.9315
14:20 112 208561 0.0111419 111.419
14:40 47 63376 -0.000878455 -8.78455
15:00 47 84444 0.00410497 41.0497
15:20 0 0

Z-Score-Quality Scatter + Regression

Model Buy/Sell Scatter + Regression