KOSPI Backtest Dashboard

run_id: 20260321T111505Z_userreq_toss_tabm_enh129_ex200_20260321_target350_z3p4
generated_at_utc: 2026-03-21T11:16:23.436010+00:00

Top KPI

trade_return_per_trade_bp = (total_pnl_final / total_trade_notional) * 10000
metric value
total_pnl_final 31.477M
total_trade_notional 11782.816M
daily_trade_notional 287.386M
total_fee 11.783M
mdd_pnl -3.838M
alpha_vs_dynamic_notional_beta_pnl_final 26.203M
alpha_vs_avg_hold_notional_beta_pnl_final 27.640M
dynamic_alpha_mdd_pnl -1.642M
avg_hold_alpha_mdd_pnl -1.938M
dynamic_alpha_sharpe_annualized 11.9703
avg_hold_alpha_sharpe_annualized 12.0163
time_avg_total_notional_position_usdt 49.224M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 49.224M
trade_return_per_trade_bp 26.71bp
roi_avg_notional_position_pct 63.95%
roi_peak_notional_position_pct 31.38%
num_trades 4,786
high_mc_trade_notional 0.000M
high_mc_sharpe_annualized
high_mc_trade_return_per_trade_bp
low_mc_trade_notional 11782.816M
low_mc_sharpe_annualized 11.7855
low_mc_trade_return_per_trade_bp 26.71bp
sharpe_annualized 11.7855

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.4
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 31.477M
total_pnl_peak 31.922M
dynamic_notional_beta_pnl_final 5.273M
alpha_vs_dynamic_notional_beta_pnl_final 26.203M
avg_hold_notional_beta_pnl_final 3.837M
alpha_vs_avg_hold_notional_beta_pnl_final 27.640M
high_mc_dynamic_notional_beta_pnl_final 0.000M
low_mc_dynamic_notional_beta_pnl_final 5.273M
high_mc_avg_hold_notional_beta_pnl_final 0.000M
low_mc_avg_hold_notional_beta_pnl_final 3.837M
high_mc_alpha_vs_dynamic_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_dynamic_notional_beta_pnl_final 26.203M
high_mc_alpha_vs_avg_hold_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_avg_hold_notional_beta_pnl_final 27.640M
dynamic_alpha_mdd_pnl -1.642M
dynamic_alpha_sharpe_annualized 11.9703
avg_hold_alpha_mdd_pnl -1.938M
avg_hold_alpha_sharpe_annualized 12.0163
num_trades 4,786
total_traded_amount_sum 2.19291e+07
total_trade_notional 11782.816M
daily_trade_notional 287.386M
trading_day_count 41
total_fee 11.783M
time_avg_total_notional_position_usdt 49.224M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 49.224M
time_avg_net_position_usdt 49.224M
time_avg_abs_net_position_usdt 49.224M
peak_abs_net_position_usdt 1.00324e+08
roi_avg_notional_position_pct 63.95%
roi_peak_notional_position_pct 31.38%
mdd_pnl -3.838M
sharpe_annualized 11.7855
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 31.477M
low_mc_trade_notional 11782.816M
low_mc_num_trades 4,786
low_mc_sharpe_annualized 11.7855
low_mc_trade_return_per_trade_bp 26.71bp
model_zscore_pnl_final 4527.532M
hedge_zscore_pnl_final 623.224M
force_zscore_pnl_final 0.000M
funding_fee_pnl_final 0.000M
funding_event_count 0
model_win_rate_20m 60.07%
hedge_win_rate_20m 43.60%
force_win_rate_20m
model_win_rate_btc_adj_20m 60.07%
hedge_win_rate_btc_adj_20m 43.60%
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.14768e+07 1.17828e+10 4786 11.7855 26.7142
high 0 0 0
low 3.14768e+07 1.17828e+10 4786 11.7855 26.7142

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 3129 1.53518e+07 0.00201068 20.1068 0.580377 0.00168107 0.000833199 0.000486234 1.53518e+07 0.00201068 20.1068 0.580377
10 3129 1.79436e+07 0.00235014 23.5014 0.591882 0.00330865 0.000191442 0.00146225 1.79436e+07 0.00235014 23.5014 0.591882
20 3128 1.91896e+07 0.00251415 25.1415 0.600703 0.00416246 -0.000177921 0.00129022 1.91896e+07 0.00251415 25.1415 0.600703
30 3128 2.15839e+07 0.00282784 28.2784 0.607417 0.00577459 -0.000693862 0.00185797 2.15839e+07 0.00282784 28.2784 0.607417
60 3123 2.79077e+07 0.00366234 36.6234 0.599744 0.00899623 -0.00182888 0.00266725 2.79077e+07 0.00366234 36.6234 0.599744
120 3119 3.21367e+07 0.00422278 42.2278 0.590895 0.00756705 -0.00045606 0.00125288 3.21367e+07 0.00422278 42.2278 0.590895
240 3115 3.55031e+07 0.00467126 46.7126 0.560193 0.0161206 -0.00516456 0.00334022 3.55031e+07 0.00467126 46.7126 0.560193

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 1657 -3.41133e+06 -0.000822464 -8.22464 0.366325 0.00432804 -0.00150395 0.00666643 -3.41133e+06 -0.000822464 -8.22464 0.366325
10 1657 -2.70345e+06 -0.000651797 -6.51797 0.410984 0.00152731 -0.000916056 0.000504068 -2.70345e+06 -0.000651797 -6.51797 0.410984
20 1656 -3.87965e+06 -0.00093595 -9.3595 0.43599 -0.000581864 -0.000911716 2.87061e-05 -3.87965e+06 -0.00093595 -9.3595 0.43599
30 1655 -5.01468e+06 -0.0012105 -12.105 0.464653 -0.00454529 -0.000581945 0.00100015 -5.01468e+06 -0.0012105 -12.105 0.464653
60 1654 -5.19547e+06 -0.00125492 -12.5492 0.462515 4.31337e-05 -0.00131118 8.31229e-08 -5.19547e+06 -0.00125492 -12.5492 0.462515
120 1654 -3.53387e+06 -0.000853572 -8.53572 0.460097 0.00642629 -0.00187566 0.00124169 -3.53387e+06 -0.000853572 -8.53572 0.460097
240 1650 -7.30308e+06 -0.00176913 -17.6913 0.490303 0.00576931 -0.00253507 0.000373877 -7.30308e+06 -0.00176913 -17.6913 0.490303

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 235 467112 0.0110085 110.085
09:20 167 332376 0.00359215 35.9215
09:40 162 574227 -3.66298e-05 -0.366298
10:00 139 628576 0.00427568 42.7568
10:20 119 498896 0.00364238 36.4238
10:40 94 353584 0.00446924 44.6924
11:00 114 504435 0.000923828 9.23828
11:20 114 738173 0.00486579 48.6579
11:40 100 757560 0.00574669 57.4669
12:00 112 820510 0.00503717 50.3717
12:20 133 940702 0.00534807 53.4807
12:40 159 998404 0.00355927 35.5927
13:00 198 947556 0.00420926 42.0926
13:20 159 696267 0.00467057 46.7057
13:40 110 368848 0.00210108 21.0108
14:00 86 432598 0.000691589 6.91589
14:20 81 281821 -0.000489564 -4.89564
14:40 68 329735 0.00793703 79.3703
15:00 86 299892 0.0239423 239.423
15:20 0 0

Z-Score-Quality Scatter + Regression

Model Buy/Sell Scatter + Regression