KOSPI Backtest Dashboard

run_id: 20260322T114841Z_userreq_toss_ultimate_v3_parquet_20260322_tossenriched_z2p9
generated_at_utc: 2026-03-22T11:51:13.881592+00:00

Top KPI

trade_return_per_trade_bp = (total_pnl_final / total_trade_notional) * 10000
metric value
total_pnl_final 42.657M
total_trade_notional 16333.242M
daily_trade_notional 398.372M
total_fee 16.333M
mdd_pnl -5.609M
alpha_vs_dynamic_notional_beta_pnl_final 37.064M
alpha_vs_avg_hold_notional_beta_pnl_final 33.608M
dynamic_alpha_mdd_pnl -1.558M
avg_hold_alpha_mdd_pnl -2.520M
dynamic_alpha_sharpe_annualized 13.1191
avg_hold_alpha_sharpe_annualized 11.2898
time_avg_total_notional_position_usdt 81.234M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 81.234M
trade_return_per_trade_bp 26.12bp
roi_avg_notional_position_pct 52.51%
roi_peak_notional_position_pct 41.96%
num_trades 7,000
high_mc_trade_notional 0.000M
high_mc_sharpe_annualized
high_mc_trade_return_per_trade_bp
low_mc_trade_notional 16333.242M
low_mc_sharpe_annualized 13.0882
low_mc_trade_return_per_trade_bp 26.12bp
sharpe_annualized 13.0882

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 42.657M
total_pnl_peak 42.687M
dynamic_notional_beta_pnl_final 5.593M
alpha_vs_dynamic_notional_beta_pnl_final 37.064M
avg_hold_notional_beta_pnl_final 9.049M
alpha_vs_avg_hold_notional_beta_pnl_final 33.608M
high_mc_dynamic_notional_beta_pnl_final 0.000M
low_mc_dynamic_notional_beta_pnl_final 5.593M
high_mc_avg_hold_notional_beta_pnl_final 0.000M
low_mc_avg_hold_notional_beta_pnl_final 9.049M
high_mc_alpha_vs_dynamic_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_dynamic_notional_beta_pnl_final 37.064M
high_mc_alpha_vs_avg_hold_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_avg_hold_notional_beta_pnl_final 33.608M
dynamic_alpha_mdd_pnl -1.558M
dynamic_alpha_sharpe_annualized 13.1191
avg_hold_alpha_mdd_pnl -2.520M
avg_hold_alpha_sharpe_annualized 11.2898
num_trades 7,000
total_traded_amount_sum 1.37917e+07
total_trade_notional 16333.242M
daily_trade_notional 398.372M
trading_day_count 41
total_fee 16.333M
time_avg_total_notional_position_usdt 81.234M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 81.234M
time_avg_net_position_usdt 81.234M
time_avg_abs_net_position_usdt 81.234M
peak_abs_net_position_usdt 1.01662e+08
roi_avg_notional_position_pct 52.51%
roi_peak_notional_position_pct 41.96%
mdd_pnl -5.609M
sharpe_annualized 13.0882
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 42.657M
low_mc_trade_notional 16333.242M
low_mc_num_trades 7,000
low_mc_sharpe_annualized 13.0882
low_mc_trade_return_per_trade_bp 26.12bp
model_zscore_pnl_final 5832.545M
hedge_zscore_pnl_final 924.532M
force_zscore_pnl_final 0.000M
funding_fee_pnl_final 0.000M
funding_event_count 0
model_win_rate_20m 63.78%
hedge_win_rate_20m 43.96%
force_win_rate_20m
model_win_rate_btc_adj_20m 63.78%
hedge_win_rate_btc_adj_20m 43.96%
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.26566e+07 1.63332e+10 7000 13.0882 26.1164
high 0 0 0
low 4.26566e+07 1.63332e+10 7000 13.0882 26.1164

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 4848 1.74557e+07 0.00155904 15.5904 0.610149 0.00293568 -7.419e-05 0.00207812 1.74557e+07 0.00155904 15.5904 0.610149
10 4848 2.4966e+07 0.00222982 22.2982 0.636551 0.00597147 -0.00108149 0.00701947 2.4966e+07 0.00222982 22.2982 0.636551
20 4846 2.60041e+07 0.00232358 23.2358 0.637846 0.00533927 -0.000672473 0.00354266 2.60041e+07 0.00232358 23.2358 0.637846
30 4844 2.85163e+07 0.00254919 25.4919 0.638522 0.00541428 -0.000535647 0.00302161 2.85163e+07 0.00254919 25.4919 0.638522
60 4837 3.06889e+07 0.00274767 27.4767 0.624354 0.00445915 0.000176276 0.00126963 3.06889e+07 0.00274767 27.4767 0.624354
120 4824 4.63706e+07 0.00416384 41.6384 0.603027 -0.00026211 0.00401379 1.71526e-06 4.63706e+07 0.00416384 41.6384 0.603027
240 4803 5.11585e+07 0.00461549 46.1549 0.586092 0.00167141 0.00348284 4.31197e-05 5.11585e+07 0.00461549 46.1549 0.586092

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 2152 -3.54917e+06 -0.00069093 -6.9093 0.371283 0.00362723 -0.00131331 0.0106825 -3.54917e+06 -0.00069093 -6.9093 0.371283
10 2152 -2.75424e+06 -0.000536177 -5.36177 0.431227 0.00291577 -0.00102769 0.00466363 -2.75424e+06 -0.000536177 -5.36177 0.431227
20 2152 -5.57372e+06 -0.00108506 -10.8506 0.439591 0.00271774 -0.00156422 0.000931525 -5.57372e+06 -0.00108506 -10.8506 0.439591
30 2150 -5.22244e+06 -0.00101768 -10.1768 0.455349 0.00522452 -0.00190068 0.00269254 -5.22244e+06 -0.00101768 -10.1768 0.455349
60 2147 -7.31618e+06 -0.00142779 -14.2779 0.469027 0.00128688 -0.00167725 9.33407e-05 -7.31618e+06 -0.00142779 -14.2779 0.469027
120 2143 -5.59123e+06 -0.0010933 -10.933 0.481101 0.00899502 -0.00277493 0.00304514 -5.59123e+06 -0.0010933 -10.933 0.481101
240 2139 -4.51747e+06 -0.000885106 -8.85106 0.499766 -0.00156278 -0.000635613 4.20908e-05 -4.51747e+06 -0.000885106 -8.85106 0.499766

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 262 502150 0.00816894 81.6894
09:20 248 425053 0.00444118 44.4118
09:40 214 463804 -0.000272245 -2.72245
10:00 212 419259 0.00241647 24.1647
10:20 202 408598 0.00256045 25.6045
10:40 195 414504 0.00181519 18.1519
11:00 222 470798 0.0018728 18.728
11:20 211 403585 0.00408664 40.8664
11:40 150 236740 0.00340825 34.0825
12:00 162 328327 0.00492859 49.2859
12:20 135 296455 0.00301516 30.1516
12:40 157 301594 0.00429786 42.9786
13:00 180 376732 0.00360958 36.0958
13:20 258 458718 0.0210588 210.588
13:40 243 468564 0.00910229 91.0229
14:00 190 401296 0.00209463 20.9463
14:20 160 257823 0.00279343 27.9343
14:40 95 121922 0.00590247 59.0247
15:00 120 165290 0.00139659 13.9659
15:20 0 0

Z-Score-Quality Scatter + Regression

Model Buy/Sell Scatter + Regression