KOSPI Backtest Dashboard

run_id: 20260321T011352Z_userreq_toss_ens2_105_enhanced_20260320_target350_z2p88
generated_at_utc: 2026-03-21T01:19:45.722696+00:00

Top KPI

trade_return_per_trade_bp = (total_pnl_final / total_trade_notional) * 10000
metric value
total_pnl_final 40.907M
total_trade_notional 14961.677M
daily_trade_notional 364.919M
total_fee 14.962M
mdd_pnl -11.577M
alpha_vs_dynamic_notional_beta_pnl_final 31.354M
alpha_vs_avg_hold_notional_beta_pnl_final 31.055M
dynamic_alpha_mdd_pnl -2.609M
avg_hold_alpha_mdd_pnl -2.448M
dynamic_alpha_sharpe_annualized 9.71029
avg_hold_alpha_sharpe_annualized 9.54642
time_avg_total_notional_position_usdt 88.437M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 88.437M
trade_return_per_trade_bp 27.34bp
roi_avg_notional_position_pct 46.25%
roi_peak_notional_position_pct 40.11%
num_trades 7,139
high_mc_trade_notional 0.000M
high_mc_sharpe_annualized
high_mc_trade_return_per_trade_bp
low_mc_trade_notional 14961.677M
low_mc_sharpe_annualized 9.68234
low_mc_trade_return_per_trade_bp 27.34bp
sharpe_annualized 9.68234

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.88
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.907M
total_pnl_peak 43.438M
dynamic_notional_beta_pnl_final 9.553M
alpha_vs_dynamic_notional_beta_pnl_final 31.354M
avg_hold_notional_beta_pnl_final 9.851M
alpha_vs_avg_hold_notional_beta_pnl_final 31.055M
high_mc_dynamic_notional_beta_pnl_final 0.000M
low_mc_dynamic_notional_beta_pnl_final 9.553M
high_mc_avg_hold_notional_beta_pnl_final 0.000M
low_mc_avg_hold_notional_beta_pnl_final 9.851M
high_mc_alpha_vs_dynamic_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_dynamic_notional_beta_pnl_final 31.354M
high_mc_alpha_vs_avg_hold_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_avg_hold_notional_beta_pnl_final 31.055M
dynamic_alpha_mdd_pnl -2.609M
dynamic_alpha_sharpe_annualized 9.71029
avg_hold_alpha_mdd_pnl -2.448M
avg_hold_alpha_sharpe_annualized 9.54642
num_trades 7,139
total_traded_amount_sum 1.86722e+07
total_trade_notional 14961.677M
daily_trade_notional 364.919M
trading_day_count 41
total_fee 14.962M
time_avg_total_notional_position_usdt 88.437M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 88.437M
time_avg_net_position_usdt 88.437M
time_avg_abs_net_position_usdt 88.437M
peak_abs_net_position_usdt 1.01986e+08
roi_avg_notional_position_pct 46.25%
roi_peak_notional_position_pct 40.11%
mdd_pnl -11.577M
sharpe_annualized 9.68234
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.907M
low_mc_trade_notional 14961.677M
low_mc_num_trades 7,139
low_mc_sharpe_annualized 9.68234
low_mc_trade_return_per_trade_bp 27.34bp
model_zscore_pnl_final 5285.444M
hedge_zscore_pnl_final 629.382M
force_zscore_pnl_final 0.000M
funding_fee_pnl_final 0.000M
funding_event_count 0
model_win_rate_20m 57.89%
hedge_win_rate_20m 45.55%
force_win_rate_20m
model_win_rate_btc_adj_20m 57.89%
hedge_win_rate_btc_adj_20m 45.55%
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.09066e+07 1.49617e+10 7139 9.68234 27.3409
high 0 0 0
low 4.09066e+07 1.49617e+10 7139 9.68234 27.3409

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 5101 1.42527e+07 0.00138066 13.8066 0.553029 0.000927809 0.000684229 0.000291751 1.42527e+07 0.00138066 13.8066 0.553029
10 5101 1.91114e+07 0.00185132 18.5132 0.581259 0.00263768 0.00022525 0.00167453 1.91114e+07 0.00185132 18.5132 0.581259
20 5096 1.94515e+07 0.00188644 18.8644 0.578885 0.00286293 0.000129283 0.00119411 1.94515e+07 0.00188644 18.8644 0.578885
30 5091 2.37475e+07 0.00230573 23.0573 0.589668 0.00499509 -0.000392878 0.00236252 2.37475e+07 0.00230573 23.0573 0.589668
60 5078 3.07945e+07 0.00299923 29.9923 0.587436 0.00678848 -0.000471559 0.00251384 3.07945e+07 0.00299923 29.9923 0.587436
120 5058 3.95455e+07 0.00387016 38.7016 0.587386 0.0119792 -0.00201785 0.00389297 3.95455e+07 0.00387016 38.7016 0.587386
240 4976 4.07993e+07 0.00406991 40.6991 0.554662 0.00660754 0.00048717 0.000722234 4.07993e+07 0.00406991 40.6991 0.554662

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 2038 -3.73021e+06 -0.000804172 -8.04172 0.387144 0.000755234 -0.0008675 0.000195162 -3.73021e+06 -0.000804172 -8.04172 0.387144
10 2038 -5.20521e+06 -0.00112216 -11.2216 0.401374 -0.000998289 -0.00093788 0.000246246 -5.20521e+06 -0.00112216 -11.2216 0.401374
20 2033 -3.75511e+06 -0.00081133 -8.1133 0.455485 -0.000119676 -0.000795334 2.27207e-06 -3.75511e+06 -0.00081133 -8.1133 0.455485
30 2029 -3.67887e+06 -0.000796594 -7.96594 0.475604 -0.00255752 -0.000485127 0.000563033 -3.67887e+06 -0.000796594 -7.96594 0.475604
60 2022 -3.29044e+06 -0.000714843 -7.14843 0.488131 -0.00126458 -0.000427385 7.64946e-05 -3.29044e+06 -0.000714843 -7.14843 0.488131
120 1992 174616 3.85028e-05 0.385028 0.508534 0.0070309 -0.000718648 0.00134137 174616 3.85028e-05 0.385028 0.508534
240 1952 -6.06591e+06 -0.00136435 -13.6435 0.504098 0.00267965 -0.00153832 8.17367e-05 -6.06591e+06 -0.00136435 -13.6435 0.504098

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 551 634229 0.00847602 84.7602
09:20 296 383338 0.00857442 85.7442
09:40 228 273818 -0.000443203 -4.43203
10:00 164 280338 0.00517432 51.7432
10:20 177 282824 0.00214091 21.4091
10:40 168 359812 0.00457051 45.7051
11:00 296 690857 0.00116576 11.6576
11:20 267 824055 0.0036221 36.221
11:40 195 581999 0.00446716 44.6716
12:00 180 707953 0.0042951 42.951
12:20 177 771835 0.00380927 38.0927
12:40 197 690036 0.00360976 36.0976
13:00 206 767644 0.00220664 22.0664
13:20 229 638947 0.00471355 47.1355
13:40 113 342787 0.0116338 116.338
14:00 119 272872 0.0002818 2.818
14:20 114 248594 0.0100146 100.146
14:40 77 225248 0.00619879 61.9879
15:00 123 372164 0.0194515 194.515
15:20 0 0

Z-Score-Quality Scatter + Regression

Model Buy/Sell Scatter + Regression