KOSPI Backtest Dashboard

run_id: 20260322T115157Z_userreq_toss_ultimate_v2_parquet_20260322_tossenriched_z2p9
generated_at_utc: 2026-03-22T11:56:01.956194+00:00

Top KPI

trade_return_per_trade_bp = (total_pnl_final / total_trade_notional) * 10000
metric value
total_pnl_final 37.342M
total_trade_notional 12210.652M
daily_trade_notional 297.821M
total_fee 12.211M
mdd_pnl -5.425M
alpha_vs_dynamic_notional_beta_pnl_final 33.634M
alpha_vs_avg_hold_notional_beta_pnl_final 31.496M
dynamic_alpha_mdd_pnl -2.221M
avg_hold_alpha_mdd_pnl -2.334M
dynamic_alpha_sharpe_annualized 12.363
avg_hold_alpha_sharpe_annualized 11.7361
time_avg_total_notional_position_usdt 52.480M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 52.480M
trade_return_per_trade_bp 30.58bp
roi_avg_notional_position_pct 71.16%
roi_peak_notional_position_pct 36.96%
num_trades 5,091
high_mc_trade_notional 0.000M
high_mc_sharpe_annualized
high_mc_trade_return_per_trade_bp
low_mc_trade_notional 12210.652M
low_mc_sharpe_annualized 12.4275
low_mc_trade_return_per_trade_bp 30.58bp
sharpe_annualized 12.4275

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.9
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 37.342M
total_pnl_peak 37.395M
dynamic_notional_beta_pnl_final 3.708M
alpha_vs_dynamic_notional_beta_pnl_final 33.634M
avg_hold_notional_beta_pnl_final 5.846M
alpha_vs_avg_hold_notional_beta_pnl_final 31.496M
high_mc_dynamic_notional_beta_pnl_final 0.000M
low_mc_dynamic_notional_beta_pnl_final 3.708M
high_mc_avg_hold_notional_beta_pnl_final 0.000M
low_mc_avg_hold_notional_beta_pnl_final 5.846M
high_mc_alpha_vs_dynamic_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_dynamic_notional_beta_pnl_final 33.634M
high_mc_alpha_vs_avg_hold_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_avg_hold_notional_beta_pnl_final 31.496M
dynamic_alpha_mdd_pnl -2.221M
dynamic_alpha_sharpe_annualized 12.363
avg_hold_alpha_mdd_pnl -2.334M
avg_hold_alpha_sharpe_annualized 11.7361
num_trades 5,091
total_traded_amount_sum 9.7812e+06
total_trade_notional 12210.652M
daily_trade_notional 297.821M
trading_day_count 41
total_fee 12.211M
time_avg_total_notional_position_usdt 52.480M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 52.480M
time_avg_net_position_usdt 52.480M
time_avg_abs_net_position_usdt 52.480M
peak_abs_net_position_usdt 1.0104e+08
roi_avg_notional_position_pct 71.16%
roi_peak_notional_position_pct 36.96%
mdd_pnl -5.425M
sharpe_annualized 12.4275
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 37.342M
low_mc_trade_notional 12210.652M
low_mc_num_trades 5,091
low_mc_sharpe_annualized 12.4275
low_mc_trade_return_per_trade_bp 30.58bp
model_zscore_pnl_final 1892.290M
hedge_zscore_pnl_final 131.917M
force_zscore_pnl_final 0.000M
funding_fee_pnl_final 0.000M
funding_event_count 0
model_win_rate_20m 60.65%
hedge_win_rate_20m 47.86%
force_win_rate_20m
model_win_rate_btc_adj_20m 60.65%
hedge_win_rate_btc_adj_20m 47.86%
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.73424e+07 1.22107e+10 5091 12.4275 30.5818
high 0 0 0
low 3.73424e+07 1.22107e+10 5091 12.4275 30.5818

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 3808 1.25033e+07 0.00137721 13.7721 0.593225 0.00685247 -0.000148131 0.0022719 1.25033e+07 0.00137721 13.7721 0.593225
10 3808 1.84705e+07 0.00203448 20.3448 0.612395 0.0144065 -0.00118422 0.00771136 1.84705e+07 0.00203448 20.3448 0.612395
20 3804 2.06082e+07 0.00227245 22.7245 0.606467 0.0176154 -0.00163652 0.0082788 2.06082e+07 0.00227245 22.7245 0.606467
30 3802 2.36077e+07 0.00260465 26.0465 0.607838 0.0188692 -0.00157289 0.00771861 2.36077e+07 0.00260465 26.0465 0.607838
60 3790 2.33748e+07 0.00258747 25.8747 0.602902 0.0153612 -0.000743925 0.00323668 2.33748e+07 0.00258747 25.8747 0.602902
120 3727 3.70192e+07 0.00417046 41.7046 0.58975 0.0123228 0.00164665 0.000793083 3.70192e+07 0.00417046 41.7046 0.58975
240 3670 4.04939e+07 0.00463671 46.3671 0.573297 0.0211173 0.000515685 0.00128139 4.04939e+07 0.00463671 46.3671 0.573297

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 1283 -1.31782e+06 -0.000420773 -4.20773 0.426345 0.0125846 -0.000926353 0.0207985 -1.31782e+06 -0.000420773 -4.20773 0.426345
10 1283 -1.25592e+06 -0.000401009 -4.01009 0.455183 0.0131216 -0.000951154 0.0136132 -1.25592e+06 -0.000401009 -4.01009 0.455183
20 1283 -1.91052e+06 -0.000610019 -6.10019 0.478566 0.0120338 -0.00113278 0.00385032 -1.91052e+06 -0.000610019 -6.10019 0.478566
30 1280 -1.99861e+06 -0.000639702 -6.39702 0.475 0.0188774 -0.00147518 0.0066912 -1.99861e+06 -0.000639702 -6.39702 0.475
60 1276 -4.65331e+06 -0.0014942 -14.942 0.465517 -0.0045057 -0.00133115 0.000207839 -4.65331e+06 -0.0014942 -14.942 0.465517
120 1267 -3.42564e+06 -0.00110802 -11.0802 0.484609 0.00118654 -0.00131436 8.56416e-06 -3.42564e+06 -0.00110802 -11.0802 0.484609
240 1242 -6.88606e+06 -0.00227327 -22.7327 0.483092 0.00524642 -0.0026161 7.71381e-05 -6.88606e+06 -0.00227327 -22.7327 0.483092

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 193 362276 0.00991747 99.1747
09:20 138 260151 0.0031659 31.659
09:40 92 202989 -0.00426973 -42.6973
10:00 92 170100 0.00360046 36.0046
10:20 90 154940 0.00420982 42.0982
10:40 96 251602 0.00229828 22.9828
11:00 150 318228 -0.000128197 -1.28197
11:20 114 243454 0.00765936 76.5936
11:40 82 170806 0.00380824 38.0824
12:00 97 251599 0.00360332 36.0332
12:20 109 250712 0.00330492 33.0492
12:40 120 228758 0.00365927 36.5927
13:00 141 225623 0.00356912 35.6912
13:20 265 463841 0.0213785 213.785
13:40 335 520432 0.00602452 60.2452
14:00 219 334611 0.00780149 78.0149
14:20 144 264399 0.00377897 37.7897
14:40 75 97197 0.00396116 39.6116
15:00 71 137753 0.0035696 35.696
15:20 0 0

Z-Score-Quality Scatter + Regression

Model Buy/Sell Scatter + Regression