KOSPI Backtest Dashboard

run_id: 20260322T114841Z_userreq_toss_ultimate_v3_parquet_20260322_tossenriched_z3p3
generated_at_utc: 2026-03-22T11:51:34.511641+00:00

Top KPI

trade_return_per_trade_bp = (total_pnl_final / total_trade_notional) * 10000
metric value
total_pnl_final 37.968M
total_trade_notional 10898.312M
daily_trade_notional 265.812M
total_fee 10.898M
mdd_pnl -4.111M
alpha_vs_dynamic_notional_beta_pnl_final 34.451M
alpha_vs_avg_hold_notional_beta_pnl_final 32.044M
dynamic_alpha_mdd_pnl -1.645M
avg_hold_alpha_mdd_pnl -1.791M
dynamic_alpha_sharpe_annualized 13.102
avg_hold_alpha_sharpe_annualized 11.841
time_avg_total_notional_position_usdt 53.183M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 53.183M
trade_return_per_trade_bp 34.84bp
roi_avg_notional_position_pct 71.39%
roi_peak_notional_position_pct 37.59%
num_trades 4,447
high_mc_trade_notional 0.000M
high_mc_sharpe_annualized
high_mc_trade_return_per_trade_bp
low_mc_trade_notional 10898.312M
low_mc_sharpe_annualized 13.3923
low_mc_trade_return_per_trade_bp 34.84bp
sharpe_annualized 13.3923

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 37.968M
total_pnl_peak 38.133M
dynamic_notional_beta_pnl_final 3.517M
alpha_vs_dynamic_notional_beta_pnl_final 34.451M
avg_hold_notional_beta_pnl_final 5.924M
alpha_vs_avg_hold_notional_beta_pnl_final 32.044M
high_mc_dynamic_notional_beta_pnl_final 0.000M
low_mc_dynamic_notional_beta_pnl_final 3.517M
high_mc_avg_hold_notional_beta_pnl_final 0.000M
low_mc_avg_hold_notional_beta_pnl_final 5.924M
high_mc_alpha_vs_dynamic_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_dynamic_notional_beta_pnl_final 34.451M
high_mc_alpha_vs_avg_hold_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_avg_hold_notional_beta_pnl_final 32.044M
dynamic_alpha_mdd_pnl -1.645M
dynamic_alpha_sharpe_annualized 13.102
avg_hold_alpha_mdd_pnl -1.791M
avg_hold_alpha_sharpe_annualized 11.841
num_trades 4,447
total_traded_amount_sum 9.55831e+06
total_trade_notional 10898.312M
daily_trade_notional 265.812M
trading_day_count 41
total_fee 10.898M
time_avg_total_notional_position_usdt 53.183M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 53.183M
time_avg_net_position_usdt 53.183M
time_avg_abs_net_position_usdt 53.183M
peak_abs_net_position_usdt 1.01015e+08
roi_avg_notional_position_pct 71.39%
roi_peak_notional_position_pct 37.59%
mdd_pnl -4.111M
sharpe_annualized 13.3923
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.968M
low_mc_trade_notional 10898.312M
low_mc_num_trades 4,447
low_mc_sharpe_annualized 13.3923
low_mc_trade_return_per_trade_bp 34.84bp
model_zscore_pnl_final 4102.357M
hedge_zscore_pnl_final 731.985M
force_zscore_pnl_final 0.000M
funding_fee_pnl_final 0.000M
funding_event_count 0
model_win_rate_20m 65.62%
hedge_win_rate_20m 45.15%
force_win_rate_20m
model_win_rate_btc_adj_20m 65.62%
hedge_win_rate_btc_adj_20m 45.15%
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.79683e+07 1.08983e+10 4447 13.3923 34.8387
high 0 0 0
low 3.79683e+07 1.08983e+10 4447 13.3923 34.8387

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 2920 1.22518e+07 0.00172376 17.2376 0.62363 0.00322822 -0.000255177 0.00199172 1.22518e+07 0.00172376 17.2376 0.62363
10 2920 1.91056e+07 0.00268805 26.8805 0.65411 0.00563694 -0.000848029 0.00455568 1.91056e+07 0.00268805 26.8805 0.65411
20 2920 2.18277e+07 0.00307103 30.7103 0.656164 0.00671048 -0.00111697 0.0045209 2.18277e+07 0.00307103 30.7103 0.656164
30 2919 2.20738e+07 0.00310674 31.0674 0.646454 0.00709557 -0.00131158 0.00410441 2.20738e+07 0.00310674 31.0674 0.646454
60 2916 2.34894e+07 0.00330941 33.0941 0.642318 0.00568633 -0.0002585 0.00155613 2.34894e+07 0.00330941 33.0941 0.642318
120 2911 3.86223e+07 0.00545111 54.5111 0.625215 -0.00560578 0.00831385 0.000622905 3.86223e+07 0.00545111 54.5111 0.625215
240 2903 4.38458e+07 0.00620583 62.0583 0.595591 0.00238135 0.00434895 7.21477e-05 4.38458e+07 0.00620583 62.0583 0.595591

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 1527 -2.19577e+06 -0.000579251 -5.79251 0.368042 0.00358974 -0.00128435 0.00991516 -2.19577e+06 -0.000579251 -5.79251 0.368042
10 1527 -1.72083e+06 -0.000453961 -4.53961 0.43353 0.0027421 -0.000994727 0.0030712 -1.72083e+06 -0.000453961 -4.53961 0.43353
20 1526 -2.76908e+06 -0.000730987 -7.30987 0.451507 0.00472576 -0.00168269 0.00433678 -2.76908e+06 -0.000730987 -7.30987 0.451507
30 1525 -3.16476e+06 -0.000836008 -8.36008 0.472787 0.00603912 -0.00202416 0.00406279 -3.16476e+06 -0.000836008 -8.36008 0.472787
60 1524 -3.62329e+06 -0.000957774 -9.57774 0.470472 0.00547654 -0.00213008 0.00199829 -3.62329e+06 -0.000957774 -9.57774 0.470472
120 1524 -2.96088e+06 -0.000782672 -7.82672 0.487533 0.0076267 -0.00233368 0.00222291 -2.96088e+06 -0.000782672 -7.82672 0.487533
240 1519 -2.14786e+06 -0.000569559 -5.69559 0.514812 0.000338833 -0.000783056 1.88968e-06 -2.14786e+06 -0.000569559 -5.69559 0.514812

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 150 314471 0.0115963 115.963
09:20 144 253471 0.00329652 32.9652
09:40 124 310469 -0.00260341 -26.0341
10:00 138 288905 0.00573165 57.3165
10:20 126 205578 0.00371804 37.1804
10:40 141 391407 0.00293763 29.3763
11:00 171 423394 0.00132263 13.2263
11:20 157 430579 0.00557973 55.7973
11:40 98 246485 0.00469437 46.9437
12:00 103 279740 0.00560504 56.0504
12:20 88 181121 0.00551923 55.1923
12:40 91 191739 0.00501564 50.1564
13:00 99 186952 0.00520292 52.0292
13:20 171 319216 0.026771 267.71
13:40 155 243702 0.0106252 106.252
14:00 127 232238 0.00215616 21.5616
14:20 96 147011 0.00264795 26.4795
14:40 33 32977 0.0107536 107.536
15:00 56 113027 0.000569727 5.69727
15:20 0 0

Z-Score-Quality Scatter + Regression

Model Buy/Sell Scatter + Regression