KOSPI Backtest Dashboard

run_id: 20260322T120517Z_userreq_toss_mega9_parquet_20260322_tossenriched_z3p15
generated_at_utc: 2026-03-22T12:05:46.093549+00:00

Top KPI

trade_return_per_trade_bp = (total_pnl_final / total_trade_notional) * 10000
metric value
total_pnl_final 40.864M
total_trade_notional 14272.280M
daily_trade_notional 348.104M
total_fee 14.272M
mdd_pnl -4.951M
alpha_vs_dynamic_notional_beta_pnl_final 37.351M
alpha_vs_avg_hold_notional_beta_pnl_final 33.241M
dynamic_alpha_mdd_pnl -2.064M
avg_hold_alpha_mdd_pnl -2.611M
dynamic_alpha_sharpe_annualized 13.4001
avg_hold_alpha_sharpe_annualized 11.4779
time_avg_total_notional_position_usdt 68.433M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 68.433M
trade_return_per_trade_bp 28.63bp
roi_avg_notional_position_pct 59.71%
roi_peak_notional_position_pct 40.40%
num_trades 5,927
high_mc_trade_notional 0.000M
high_mc_sharpe_annualized
high_mc_trade_return_per_trade_bp
low_mc_trade_notional 14272.280M
low_mc_sharpe_annualized 13.4238
low_mc_trade_return_per_trade_bp 28.63bp
sharpe_annualized 13.4238

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.15
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 40.864M
total_pnl_peak 40.910M
dynamic_notional_beta_pnl_final 3.512M
alpha_vs_dynamic_notional_beta_pnl_final 37.351M
avg_hold_notional_beta_pnl_final 7.623M
alpha_vs_avg_hold_notional_beta_pnl_final 33.241M
high_mc_dynamic_notional_beta_pnl_final 0.000M
low_mc_dynamic_notional_beta_pnl_final 3.512M
high_mc_avg_hold_notional_beta_pnl_final 0.000M
low_mc_avg_hold_notional_beta_pnl_final 7.623M
high_mc_alpha_vs_dynamic_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_dynamic_notional_beta_pnl_final 37.351M
high_mc_alpha_vs_avg_hold_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_avg_hold_notional_beta_pnl_final 33.241M
dynamic_alpha_mdd_pnl -2.064M
dynamic_alpha_sharpe_annualized 13.4001
avg_hold_alpha_mdd_pnl -2.611M
avg_hold_alpha_sharpe_annualized 11.4779
num_trades 5,927
total_traded_amount_sum 1.37049e+07
total_trade_notional 14272.280M
daily_trade_notional 348.104M
trading_day_count 41
total_fee 14.272M
time_avg_total_notional_position_usdt 68.433M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 68.433M
time_avg_net_position_usdt 68.433M
time_avg_abs_net_position_usdt 68.433M
peak_abs_net_position_usdt 1.01142e+08
roi_avg_notional_position_pct 59.71%
roi_peak_notional_position_pct 40.40%
mdd_pnl -4.951M
sharpe_annualized 13.4238
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 40.864M
low_mc_trade_notional 14272.280M
low_mc_num_trades 5,927
low_mc_sharpe_annualized 13.4238
low_mc_trade_return_per_trade_bp 28.63bp
model_zscore_pnl_final 5805.219M
hedge_zscore_pnl_final 948.707M
force_zscore_pnl_final 0.000M
funding_fee_pnl_final 0.000M
funding_event_count 0
model_win_rate_20m 64.44%
hedge_win_rate_20m 44.29%
force_win_rate_20m
model_win_rate_btc_adj_20m 64.44%
hedge_win_rate_btc_adj_20m 44.29%
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.08637e+07 1.42723e+10 5927 13.4238 28.6315
high 0 0 0
low 4.08637e+07 1.42723e+10 5927 13.4238 28.6315

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 4104 1.42299e+07 0.00145094 14.5094 0.615497 0.00175697 0.000395749 0.000845934 1.42299e+07 0.00145094 14.5094 0.615497
10 4104 2.1427e+07 0.00218479 21.8479 0.642544 0.00415989 -0.000415655 0.00374981 2.1427e+07 0.00218479 21.8479 0.642544
20 4103 2.42013e+07 0.0024683 24.683 0.644407 0.00406225 -7.8131e-05 0.00251702 2.42013e+07 0.0024683 24.683 0.644407
30 4102 2.60734e+07 0.00265991 26.5991 0.638957 0.00442067 -0.000142188 0.00243557 2.60734e+07 0.00265991 26.5991 0.638957
60 4099 2.65556e+07 0.00271114 27.1114 0.62625 0.00299257 0.00083768 0.000681111 2.65556e+07 0.00271114 27.1114 0.62625
120 4090 4.48118e+07 0.00458558 45.8558 0.611491 -0.00372795 0.00664444 0.000423101 4.48118e+07 0.00458558 45.8558 0.611491
240 4071 4.85407e+07 0.00499142 49.9142 0.58536 -0.00119211 0.00558757 2.62347e-05 4.85407e+07 0.00499142 49.9142 0.58536

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 1823 -2.72296e+06 -0.000609854 -6.09854 0.377948 0.00330077 -0.00128912 0.0102015 -2.72296e+06 -0.000609854 -6.09854 0.377948
10 1823 -2.15734e+06 -0.000483174 -4.83174 0.4339 0.0047476 -0.00148337 0.0156525 -2.15734e+06 -0.000483174 -4.83174 0.4339
20 1822 -3.20191e+06 -0.000717537 -7.17537 0.44292 0.0057273 -0.00198636 0.00790182 -3.20191e+06 -0.000717537 -7.17537 0.44292
30 1820 -3.43242e+06 -0.000770073 -7.70073 0.460989 0.00727807 -0.00234354 0.0083062 -3.43242e+06 -0.000770073 -7.70073 0.460989
60 1814 -4.77997e+06 -0.00107608 -10.7608 0.471885 0.00533814 -0.00225942 0.00231181 -4.77997e+06 -0.00107608 -10.7608 0.471885
120 1810 -2.62306e+06 -0.000591848 -5.91848 0.500552 0.00997933 -0.00281809 0.00436566 -2.62306e+06 -0.000591848 -5.91848 0.500552
240 1806 -699199 -0.000158125 -1.58125 0.516611 0.00236055 -0.000687486 0.000108297 -699199 -0.000158125 -1.58125 0.516611

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 269 538225 0.00888421 88.8421
09:20 217 382839 0.00291801 29.1801
09:40 196 495927 -0.000975283 -9.75283
10:00 188 362948 0.00375332 37.5332
10:20 169 356616 0.00322584 32.2584
10:40 163 435540 0.00198508 19.8508
11:00 182 438147 0.00150654 15.0654
11:20 184 475526 0.00496598 49.6598
11:40 129 287311 0.00354024 35.4024
12:00 133 370422 0.00613331 61.3331
12:20 121 257651 0.00356199 35.6199
12:40 122 218329 0.00381571 38.1571
13:00 133 297843 0.00464893 46.4893
13:20 213 479736 0.0209368 209.368
13:40 200 524067 0.0121778 121.778
14:00 150 378839 0.0067667 67.667
14:20 131 274625 0.00416384 41.6384
14:40 62 165242 0.00158082 15.8082
15:00 74 126747 0.00435878 43.5878
15:20 0 0

Z-Score-Quality Scatter + Regression

Model Buy/Sell Scatter + Regression