KOSPI Backtest Dashboard

run_id: 20260320T164530Z_userreq_toss_full_tabm_256_105feat_20260320_target350_z2p9
generated_at_utc: 2026-03-20T16:46:21.346032+00:00

Top KPI

trade_return_per_trade_bp = (total_pnl_final / total_trade_notional) * 10000
metric value
total_pnl_final 31.096M
total_trade_notional 13373.808M
daily_trade_notional 326.190M
total_fee 13.374M
mdd_pnl -6.285M
alpha_vs_dynamic_notional_beta_pnl_final 21.224M
alpha_vs_avg_hold_notional_beta_pnl_final 23.149M
dynamic_alpha_mdd_pnl -1.934M
avg_hold_alpha_mdd_pnl -2.300M
dynamic_alpha_sharpe_annualized 7.69592
avg_hold_alpha_sharpe_annualized 8.24116
time_avg_total_notional_position_usdt 71.342M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 71.342M
trade_return_per_trade_bp 23.25bp
roi_avg_notional_position_pct 43.59%
roi_peak_notional_position_pct 30.63%
num_trades 5,746
high_mc_trade_notional 0.000M
high_mc_sharpe_annualized
high_mc_trade_return_per_trade_bp
low_mc_trade_notional 13373.808M
low_mc_sharpe_annualized 9.49732
low_mc_trade_return_per_trade_bp 23.25bp
sharpe_annualized 9.49732

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 31.096M
total_pnl_peak 32.499M
dynamic_notional_beta_pnl_final 9.871M
alpha_vs_dynamic_notional_beta_pnl_final 21.224M
avg_hold_notional_beta_pnl_final 7.947M
alpha_vs_avg_hold_notional_beta_pnl_final 23.149M
high_mc_dynamic_notional_beta_pnl_final 0.000M
low_mc_dynamic_notional_beta_pnl_final 9.871M
high_mc_avg_hold_notional_beta_pnl_final 0.000M
low_mc_avg_hold_notional_beta_pnl_final 7.947M
high_mc_alpha_vs_dynamic_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_dynamic_notional_beta_pnl_final 21.224M
high_mc_alpha_vs_avg_hold_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_avg_hold_notional_beta_pnl_final 23.149M
dynamic_alpha_mdd_pnl -1.934M
dynamic_alpha_sharpe_annualized 7.69592
avg_hold_alpha_mdd_pnl -2.300M
avg_hold_alpha_sharpe_annualized 8.24116
num_trades 5,746
total_traded_amount_sum 1.00941e+07
total_trade_notional 13373.808M
daily_trade_notional 326.190M
trading_day_count 41
total_fee 13.374M
time_avg_total_notional_position_usdt 71.342M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 71.342M
time_avg_net_position_usdt 71.342M
time_avg_abs_net_position_usdt 71.342M
peak_abs_net_position_usdt 1.01529e+08
roi_avg_notional_position_pct 43.59%
roi_peak_notional_position_pct 30.63%
mdd_pnl -6.285M
sharpe_annualized 9.49732
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.096M
low_mc_trade_notional 13373.808M
low_mc_num_trades 5,746
low_mc_sharpe_annualized 9.49732
low_mc_trade_return_per_trade_bp 23.25bp
model_zscore_pnl_final 4445.451M
hedge_zscore_pnl_final 757.565M
force_zscore_pnl_final 0.000M
funding_fee_pnl_final 0.000M
funding_event_count 0
model_win_rate_20m 57.79%
hedge_win_rate_20m 43.33%
force_win_rate_20m
model_win_rate_btc_adj_20m 57.79%
hedge_win_rate_btc_adj_20m 43.33%
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.10959e+07 1.33738e+10 5746 9.49732 23.2514
high 0 0 0
low 3.10959e+07 1.33738e+10 5746 9.49732 23.2514

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 3827 1.00517e+07 0.00114075 11.4075 0.555265 -0.00178459 0.00197016 0.00128848 1.00517e+07 0.00114075 11.4075 0.555265
10 3827 1.15367e+07 0.00130928 13.0928 0.577476 -0.00186801 0.00215843 0.0010423 1.15367e+07 0.00130928 13.0928 0.577476
20 3826 1.13035e+07 0.00128317 12.8317 0.577888 -0.00280514 0.00263071 0.00140994 1.13035e+07 0.00128317 12.8317 0.577888
30 3825 1.59924e+07 0.00181595 18.1595 0.580654 -0.00316602 0.00332613 0.00129706 1.59924e+07 0.00181595 18.1595 0.580654
60 3823 2.38192e+07 0.00270623 27.0623 0.585666 -0.00153022 0.00335063 0.000156107 2.38192e+07 0.00270623 27.0623 0.585666
120 3798 3.06232e+07 0.00350363 35.0363 0.59347 -0.00308615 0.00523542 0.000331055 3.06232e+07 0.00350363 35.0363 0.59347
240 3772 3.29415e+07 0.00379515 37.9515 0.570255 -0.00284914 0.00546538 0.000185213 3.29415e+07 0.00379515 37.9515 0.570255

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 1919 -3.45216e+06 -0.000756669 -7.56669 0.37259 0.00327784 -0.00126911 0.00636656 -3.45216e+06 -0.000756669 -7.56669 0.37259
10 1919 -3.07611e+06 -0.000674244 -6.74244 0.413757 0.00295474 -0.00117072 0.00325958 -3.07611e+06 -0.000674244 -6.74244 0.413757
20 1918 -3.54277e+06 -0.000776959 -7.76959 0.433264 0.00328172 -0.00138496 0.0025111 -3.54277e+06 -0.000776959 -7.76959 0.433264
30 1915 -4.23781e+06 -0.000930916 -9.30916 0.454308 0.00387238 -0.00157594 0.00229324 -4.23781e+06 -0.000930916 -9.30916 0.454308
60 1910 -5.42433e+06 -0.00119486 -11.9486 0.459162 0.00238767 -0.00158414 0.000439338 -5.42433e+06 -0.00119486 -11.9486 0.459162
120 1898 -2.5598e+06 -0.000567644 -5.67644 0.478398 0.00589462 -0.00158932 0.00149454 -2.5598e+06 -0.000567644 -5.67644 0.478398
240 1840 -233495 -5.32819e-05 -0.532819 0.500543 -0.00107908 0.000100357 2.10996e-05 -233495 -5.32819e-05 -0.532819 0.500543

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 144 224201 0.014535 145.35
09:20 187 305282 0.00712329 71.2329
09:40 248 446381 -0.000684193 -6.84193
10:00 307 585429 0.00296271 29.6271
10:20 244 447883 0.00287453 28.7453
10:40 185 433063 0.00475387 47.5387
11:00 169 325024 0.0010146 10.146
11:20 137 273738 0.00465991 46.5991
11:40 124 232035 0.00436097 43.6097
12:00 108 240538 0.00489106 48.9106
12:20 106 193853 0.00363694 36.3694
12:40 104 124318 0.00253441 25.3441
13:00 103 255719 0.00275029 27.5029
13:20 316 416367 0.00639743 63.9743
13:40 195 200613 0.00653129 65.3129
14:00 118 116836 -0.00256487 -25.6487
14:20 100 141288 0.0236526 236.526
14:40 36 28867 0.00745047 74.5047
15:00 32 64820 0.0316396 316.396
15:20 0 0

Z-Score-Quality Scatter + Regression

Model Buy/Sell Scatter + Regression