KOSPI Backtest Dashboard

run_id: 20260321T111505Z_userreq_toss_tabm_enh129_ex200_20260321_target350_z3p2
generated_at_utc: 2026-03-21T11:15:47.662726+00:00

Top KPI

trade_return_per_trade_bp = (total_pnl_final / total_trade_notional) * 10000
metric value
total_pnl_final 40.415M
total_trade_notional 15059.337M
daily_trade_notional 367.301M
total_fee 15.059M
mdd_pnl -4.832M
alpha_vs_dynamic_notional_beta_pnl_final 33.534M
alpha_vs_avg_hold_notional_beta_pnl_final 35.468M
dynamic_alpha_mdd_pnl -1.622M
avg_hold_alpha_mdd_pnl -1.880M
dynamic_alpha_sharpe_annualized 13.6823
avg_hold_alpha_sharpe_annualized 13.8974
time_avg_total_notional_position_usdt 63.471M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 63.471M
trade_return_per_trade_bp 26.84bp
roi_avg_notional_position_pct 63.68%
roi_peak_notional_position_pct 40.06%
num_trades 6,163
high_mc_trade_notional 0.000M
high_mc_sharpe_annualized
high_mc_trade_return_per_trade_bp
low_mc_trade_notional 15059.337M
low_mc_sharpe_annualized 13.2149
low_mc_trade_return_per_trade_bp 26.84bp
sharpe_annualized 13.2149

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.2
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.415M
total_pnl_peak 40.561M
dynamic_notional_beta_pnl_final 6.882M
alpha_vs_dynamic_notional_beta_pnl_final 33.534M
avg_hold_notional_beta_pnl_final 4.947M
alpha_vs_avg_hold_notional_beta_pnl_final 35.468M
high_mc_dynamic_notional_beta_pnl_final 0.000M
low_mc_dynamic_notional_beta_pnl_final 6.882M
high_mc_avg_hold_notional_beta_pnl_final 0.000M
low_mc_avg_hold_notional_beta_pnl_final 4.947M
high_mc_alpha_vs_dynamic_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_dynamic_notional_beta_pnl_final 33.534M
high_mc_alpha_vs_avg_hold_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_avg_hold_notional_beta_pnl_final 35.468M
dynamic_alpha_mdd_pnl -1.622M
dynamic_alpha_sharpe_annualized 13.6823
avg_hold_alpha_mdd_pnl -1.880M
avg_hold_alpha_sharpe_annualized 13.8974
num_trades 6,163
total_traded_amount_sum 2.63537e+07
total_trade_notional 15059.337M
daily_trade_notional 367.301M
trading_day_count 41
total_fee 15.059M
time_avg_total_notional_position_usdt 63.471M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 63.471M
time_avg_net_position_usdt 63.471M
time_avg_abs_net_position_usdt 63.471M
peak_abs_net_position_usdt 1.00882e+08
roi_avg_notional_position_pct 63.68%
roi_peak_notional_position_pct 40.06%
mdd_pnl -4.832M
sharpe_annualized 13.2149
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.415M
low_mc_trade_notional 15059.337M
low_mc_num_trades 6,163
low_mc_sharpe_annualized 13.2149
low_mc_trade_return_per_trade_bp 26.84bp
model_zscore_pnl_final 5576.845M
hedge_zscore_pnl_final 747.072M
force_zscore_pnl_final 0.000M
funding_fee_pnl_final 0.000M
funding_event_count 0
model_win_rate_20m 59.87%
hedge_win_rate_20m 42.88%
force_win_rate_20m
model_win_rate_btc_adj_20m 59.87%
hedge_win_rate_btc_adj_20m 42.88%
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.04155e+07 1.50593e+10 6163 13.2149 26.8375
high 0 0 0
low 4.04155e+07 1.50593e+10 6163 13.2149 26.8375

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 4085 1.72929e+07 0.00174657 17.4657 0.576989 0.00225691 0.000372228 0.000916743 1.72929e+07 0.00174657 17.4657 0.576989
10 4085 2.17699e+07 0.00219875 21.9875 0.591922 0.00464471 -0.000558319 0.00305668 2.17699e+07 0.00219875 21.9875 0.591922
20 4084 2.39224e+07 0.00241676 24.1676 0.598678 0.00551785 -0.000809438 0.00230984 2.39224e+07 0.00241676 24.1676 0.598678
30 4084 2.71928e+07 0.00274716 27.4716 0.599167 0.00631369 -0.000825956 0.00226041 2.71928e+07 0.00274716 27.4716 0.599167
60 4078 3.45158e+07 0.00349222 34.9222 0.594409 0.00882596 -0.00152389 0.00280792 3.45158e+07 0.00349222 34.9222 0.594409
120 4068 4.03037e+07 0.00408812 40.8812 0.589971 0.00755652 -0.000211834 0.00129773 4.03037e+07 0.00408812 40.8812 0.589971
240 4064 4.60803e+07 0.00467879 46.7879 0.566929 0.0114761 -0.00189114 0.00168961 4.60803e+07 0.00467879 46.7879 0.566929

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 2078 -4.26656e+06 -0.000827126 -8.27126 0.353705 0.00295892 -0.00129026 0.00325581 -4.26656e+06 -0.000827126 -8.27126 0.353705
10 2078 -3.4983e+06 -0.00067819 -6.7819 0.387873 0.00135081 -0.00093076 0.000472108 -3.4983e+06 -0.00067819 -6.7819 0.387873
20 2078 -3.57585e+06 -0.000693223 -6.93223 0.428778 -6.2026e-05 -0.000764566 5.11549e-07 -3.57585e+06 -0.000693223 -6.93223 0.428778
30 2078 -4.09067e+06 -0.000793028 -7.93028 0.456208 -0.00294952 -0.000433735 0.000599289 -4.09067e+06 -0.000793028 -7.93028 0.456208
60 2077 -5.91749e+06 -0.00114775 -11.4775 0.469427 0.000191107 -0.00122174 1.70126e-06 -5.91749e+06 -0.00114775 -11.4775 0.469427
120 2077 -4.63848e+06 -0.000899676 -8.99676 0.466057 0.00595874 -0.00181185 0.00103855 -4.63848e+06 -0.000899676 -8.99676 0.466057
240 2073 -1.04573e+07 -0.00203304 -20.3304 0.484322 0.00131634 -0.00217515 1.91432e-05 -1.04573e+07 -0.00203304 -20.3304 0.484322

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 305 627794 0.00927247 92.7247
09:20 220 508500 0.00492147 49.2147
09:40 197 694396 0.00101698 10.1698
10:00 173 713727 0.00488422 48.8422
10:20 153 640830 0.00354606 35.4606
10:40 127 514890 0.00328644 32.8644
11:00 148 627230 0.00162238 16.2238
11:20 148 898596 0.00493937 49.3937
11:40 126 798688 0.00604495 60.4495
12:00 157 980067 0.00565847 56.5847
12:20 158 1.01029e+06 0.00409649 40.9649
12:40 205 1.10486e+06 0.003193 31.93
13:00 253 1.04398e+06 0.00397436 39.7436
13:20 215 801031 0.00457157 45.7157
13:40 135 516265 0.00181615 18.1615
14:00 113 530070 0.00226002 22.6002
14:20 99 373396 -0.00103924 -10.3924
14:40 94 470056 0.00731228 73.1228
15:00 116 335030 0.0188638 188.638
15:20 0 0

Z-Score-Quality Scatter + Regression

Model Buy/Sell Scatter + Regression