KOSPI Backtest Dashboard

run_id: 20260322T120900Z_userreq_toss_ultimate_v2_parquet_20260322_tossenriched_z2p70
generated_at_utc: 2026-03-22T12:12:15.989553+00:00

Top KPI

trade_return_per_trade_bp = (total_pnl_final / total_trade_notional) * 10000
metric value
total_pnl_final 43.147M
total_trade_notional 14870.717M
daily_trade_notional 362.700M
total_fee 14.871M
mdd_pnl -5.319M
alpha_vs_dynamic_notional_beta_pnl_final 37.902M
alpha_vs_avg_hold_notional_beta_pnl_final 36.008M
dynamic_alpha_mdd_pnl -2.448M
avg_hold_alpha_mdd_pnl -1.888M
dynamic_alpha_sharpe_annualized 13.0293
avg_hold_alpha_sharpe_annualized 12.915
time_avg_total_notional_position_usdt 64.089M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 64.089M
trade_return_per_trade_bp 29.01bp
roi_avg_notional_position_pct 67.32%
roi_peak_notional_position_pct 42.21%
num_trades 6,280
high_mc_trade_notional 0.000M
high_mc_sharpe_annualized
high_mc_trade_return_per_trade_bp
low_mc_trade_notional 14870.717M
low_mc_sharpe_annualized 13.4763
low_mc_trade_return_per_trade_bp 29.01bp
sharpe_annualized 13.4763

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.7
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 43.147M
total_pnl_peak 43.224M
dynamic_notional_beta_pnl_final 5.245M
alpha_vs_dynamic_notional_beta_pnl_final 37.902M
avg_hold_notional_beta_pnl_final 7.139M
alpha_vs_avg_hold_notional_beta_pnl_final 36.008M
high_mc_dynamic_notional_beta_pnl_final 0.000M
low_mc_dynamic_notional_beta_pnl_final 5.245M
high_mc_avg_hold_notional_beta_pnl_final 0.000M
low_mc_avg_hold_notional_beta_pnl_final 7.139M
high_mc_alpha_vs_dynamic_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_dynamic_notional_beta_pnl_final 37.902M
high_mc_alpha_vs_avg_hold_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_avg_hold_notional_beta_pnl_final 36.008M
dynamic_alpha_mdd_pnl -2.448M
dynamic_alpha_sharpe_annualized 13.0293
avg_hold_alpha_mdd_pnl -1.888M
avg_hold_alpha_sharpe_annualized 12.915
num_trades 6,280
total_traded_amount_sum 1.14819e+07
total_trade_notional 14870.717M
daily_trade_notional 362.700M
trading_day_count 41
total_fee 14.871M
time_avg_total_notional_position_usdt 64.089M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 64.089M
time_avg_net_position_usdt 64.089M
time_avg_abs_net_position_usdt 64.089M
peak_abs_net_position_usdt 1.02216e+08
roi_avg_notional_position_pct 67.32%
roi_peak_notional_position_pct 42.21%
mdd_pnl -5.319M
sharpe_annualized 13.4763
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 43.147M
low_mc_trade_notional 14870.717M
low_mc_num_trades 6,280
low_mc_sharpe_annualized 13.4763
low_mc_trade_return_per_trade_bp 29.01bp
model_zscore_pnl_final 2183.698M
hedge_zscore_pnl_final 137.605M
force_zscore_pnl_final 0.000M
funding_fee_pnl_final 0.000M
funding_event_count 0
model_win_rate_20m 60.92%
hedge_win_rate_20m 47.06%
force_win_rate_20m
model_win_rate_btc_adj_20m 60.92%
hedge_win_rate_btc_adj_20m 47.06%
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 4.31473e+07 1.48707e+10 6280 13.4763 29.015
high 0 0 0
low 4.31473e+07 1.48707e+10 6280 13.4763 29.015

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 4748 1.57164e+07 0.00140449 14.0449 0.595409 0.00858354 -0.000395967 0.00393659 1.57164e+07 0.00140449 14.0449 0.595409
10 4748 2.17096e+07 0.00194007 19.4007 0.613311 0.0139206 -0.00100231 0.00792257 2.17096e+07 0.00194007 19.4007 0.613311
20 4742 2.43932e+07 0.00218282 21.8282 0.609237 0.0152683 -0.00103729 0.00644369 2.43932e+07 0.00218282 21.8282 0.609237
30 4739 2.52009e+07 0.00225662 22.5662 0.603292 0.0169013 -0.00125806 0.00670699 2.52009e+07 0.00225662 22.5662 0.603292
60 4722 2.61001e+07 0.00234555 23.4555 0.596993 0.0131595 -0.000343728 0.00227548 2.61001e+07 0.00234555 23.4555 0.596993
120 4639 4.31472e+07 0.0039493 39.493 0.59086 0.00948983 0.00196989 0.000493486 4.31472e+07 0.0039493 39.493 0.59086
240 4561 4.77918e+07 0.0044522 44.522 0.567419 0.0124419 0.00189998 0.000471565 4.77918e+07 0.0044522 44.522 0.567419

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 1532 -2.53459e+06 -0.00068864 -6.8864 0.398172 0.00430039 -0.000813084 0.00223253 -2.53459e+06 -0.00068864 -6.8864 0.398172
10 1532 -2.45342e+06 -0.000666586 -6.66586 0.439295 0.00651244 -0.000899642 0.00290312 -2.45342e+06 -0.000666586 -6.66586 0.439295
20 1532 -2.40024e+06 -0.000652139 -6.52139 0.470627 0.0138682 -0.00125985 0.0042971 -2.40024e+06 -0.000652139 -6.52139 0.470627
30 1531 -3.12539e+06 -0.000849756 -8.49756 0.468321 0.0106247 -0.00139805 0.00186835 -3.12539e+06 -0.000849756 -8.49756 0.468321
60 1527 -5.91317e+06 -0.00161214 -16.1214 0.476752 -0.0187545 -0.00097904 0.00315498 -5.91317e+06 -0.00161214 -16.1214 0.476752
120 1516 -5.40672e+06 -0.00148523 -14.8523 0.486148 0.000220293 -0.00150006 2.48265e-07 -5.40672e+06 -0.00148523 -14.8523 0.486148
240 1487 -7.13582e+06 -0.00199742 -19.9742 0.488231 0.00290022 -0.00214666 2.04476e-05 -7.13582e+06 -0.00199742 -19.9742 0.488231

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 229 393489 0.00641343 64.1343
09:20 175 317876 0.00607796 60.7796
09:40 118 255340 -0.00332101 -33.2101
10:00 120 221261 0.00506852 50.6852
10:20 111 196349 0.00218997 21.8997
10:40 121 274354 0.00281402 28.1402
11:00 168 328593 0.000278872 2.78872
11:20 148 293255 0.00478642 47.8642
11:40 110 218729 0.00322991 32.2991
12:00 121 299585 0.00506235 50.6235
12:20 120 272540 0.00674178 67.4178
12:40 145 310559 0.00263626 26.3626
13:00 171 282313 0.00373611 37.3611
13:20 355 585658 0.0167804 167.804
13:40 387 528005 0.00307455 30.7455
14:00 261 382790 0.00729904 72.9904
14:20 190 282028 0.00535682 53.5682
14:40 92 178203 0.0105931 105.931
15:00 97 142549 0.00425264 42.5264
15:20 0 0

Z-Score-Quality Scatter + Regression

Model Buy/Sell Scatter + Regression