KOSPI Backtest Dashboard

run_id: 20260321T111150Z_userreq_toss_tabm_enh129_ex200_20260321_target350_z2p0
generated_at_utc: 2026-03-21T11:12:23.466370+00:00

Top KPI

trade_return_per_trade_bp = (total_pnl_final / total_trade_notional) * 10000
metric value
total_pnl_final 34.451M
total_trade_notional 20162.882M
daily_trade_notional 491.778M
total_fee 20.163M
mdd_pnl -14.035M
alpha_vs_dynamic_notional_beta_pnl_final 25.856M
alpha_vs_avg_hold_notional_beta_pnl_final 26.828M
dynamic_alpha_mdd_pnl -1.654M
avg_hold_alpha_mdd_pnl -1.573M
dynamic_alpha_sharpe_annualized 11.1632
avg_hold_alpha_sharpe_annualized 11.6118
time_avg_total_notional_position_usdt 97.798M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 97.798M
trade_return_per_trade_bp 17.09bp
roi_avg_notional_position_pct 35.23%
roi_peak_notional_position_pct 32.70%
num_trades 10,663
high_mc_trade_notional 0.000M
high_mc_sharpe_annualized
high_mc_trade_return_per_trade_bp
low_mc_trade_notional 20162.882M
low_mc_sharpe_annualized 9.01832
low_mc_trade_return_per_trade_bp 17.09bp
sharpe_annualized 9.01832

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
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 34.451M
total_pnl_peak 40.101M
dynamic_notional_beta_pnl_final 8.595M
alpha_vs_dynamic_notional_beta_pnl_final 25.856M
avg_hold_notional_beta_pnl_final 7.623M
alpha_vs_avg_hold_notional_beta_pnl_final 26.828M
high_mc_dynamic_notional_beta_pnl_final 0.000M
low_mc_dynamic_notional_beta_pnl_final 8.595M
high_mc_avg_hold_notional_beta_pnl_final 0.000M
low_mc_avg_hold_notional_beta_pnl_final 7.623M
high_mc_alpha_vs_dynamic_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_dynamic_notional_beta_pnl_final 25.856M
high_mc_alpha_vs_avg_hold_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_avg_hold_notional_beta_pnl_final 26.828M
dynamic_alpha_mdd_pnl -1.654M
dynamic_alpha_sharpe_annualized 11.1632
avg_hold_alpha_mdd_pnl -1.573M
avg_hold_alpha_sharpe_annualized 11.6118
num_trades 10,663
total_traded_amount_sum 2.67917e+07
total_trade_notional 20162.882M
daily_trade_notional 491.778M
trading_day_count 41
total_fee 20.163M
time_avg_total_notional_position_usdt 97.798M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 97.798M
time_avg_net_position_usdt 97.798M
time_avg_abs_net_position_usdt 97.798M
peak_abs_net_position_usdt 1.05356e+08
roi_avg_notional_position_pct 35.23%
roi_peak_notional_position_pct 32.70%
mdd_pnl -14.035M
sharpe_annualized 9.01832
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 34.451M
low_mc_trade_notional 20162.882M
low_mc_num_trades 10,663
low_mc_sharpe_annualized 9.01832
low_mc_trade_return_per_trade_bp 17.09bp
model_zscore_pnl_final 7293.423M
hedge_zscore_pnl_final 395.465M
force_zscore_pnl_final 0.000M
funding_fee_pnl_final 0.000M
funding_event_count 0
model_win_rate_20m 57.41%
hedge_win_rate_20m 45.44%
force_win_rate_20m
model_win_rate_btc_adj_20m 57.41%
hedge_win_rate_btc_adj_20m 45.44%
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.44511e+07 2.01629e+10 10663 9.01832 17.0864
high 0 0 0
low 3.44511e+07 2.01629e+10 10663 9.01832 17.0864

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 9058 1.86447e+07 0.00110546 11.0546 0.541621 0.00367029 -0.000552427 0.00447402 1.86447e+07 0.00110546 11.0546 0.541621
10 9058 2.163e+07 0.00128246 12.8246 0.568337 0.00312011 -0.000151926 0.00243476 2.163e+07 0.00128246 12.8246 0.568337
20 9053 2.33297e+07 0.00138386 13.8386 0.574064 0.00431699 -0.00059796 0.00262104 2.33297e+07 0.00138386 13.8386 0.574064
30 9045 2.51287e+07 0.00149173 14.9173 0.571587 0.00596044 -0.00107657 0.00298392 2.51287e+07 0.00149173 14.9173 0.571587
60 9037 2.85585e+07 0.00169647 16.9647 0.581056 0.00782901 -0.00155322 0.00332036 2.85585e+07 0.00169647 16.9647 0.581056
120 9021 3.51962e+07 0.00209399 20.9399 0.566456 0.0114167 -0.00288071 0.00433098 3.51962e+07 0.00209399 20.9399 0.566456
240 8982 3.35562e+07 0.00200428 20.0428 0.54253 0.0117331 -0.0029637 0.00236404 3.35562e+07 0.00200428 20.0428 0.54253

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 1605 -2.98516e+06 -0.000905442 -9.05442 0.366355 0.0014504 -0.00103872 0.00065575 -2.98516e+06 -0.000905442 -9.05442 0.366355
10 1605 -2.17614e+06 -0.000660054 -6.60054 0.428037 0.000646146 -0.000690512 8.57827e-05 -2.17614e+06 -0.000660054 -6.60054 0.428037
20 1602 -1.87386e+06 -0.000569657 -5.69657 0.454432 0.00303857 -0.000918062 0.00108262 -1.87386e+06 -0.000569657 -5.69657 0.454432
30 1598 -912126 -0.000277938 -2.77938 0.447434 0.00215825 -0.000572029 0.000275883 -912126 -0.000277938 -2.77938 0.447434
60 1592 -4.22038e+06 -0.0012894 -12.894 0.451005 0.0139421 -0.00283693 0.00550073 -4.22038e+06 -0.0012894 -12.894 0.451005
120 1580 -3.92371e+06 -0.00120751 -12.0751 0.467722 0.011905 -0.00260542 0.00203906 -3.92371e+06 -0.00120751 -12.0751 0.467722
240 1548 -3.47191e+06 -0.00108643 -10.8643 0.48708 0.0174607 -0.00300611 0.00201208 -3.47191e+06 -0.00108643 -10.8643 0.48708

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 547 803914 0.00552684 55.2684
09:20 515 813178 0.00257483 25.7483
09:40 336 659113 0.000217231 2.17231
10:00 334 704617 0.00308532 30.8532
10:20 289 651651 0.00102554 10.2554
10:40 252 497122 0.00339692 33.9692
11:00 366 881770 0.00252429 25.2429
11:20 333 967752 0.00323689 32.3689
11:40 338 1.03527e+06 0.00401902 40.1902
12:00 340 982734 0.00318043 31.8043
12:20 297 989361 0.00230567 23.0567
12:40 302 916762 0.00258778 25.8778
13:00 296 818121 0.00220219 22.0219
13:20 255 652631 0.00548609 54.8609
13:40 235 438518 0.000215777 2.15777
14:00 171 396107 0.000232644 2.32644
14:20 186 291782 0.00503254 50.3254
14:40 187 307043 0.0060759 60.759
15:00 246 606265 0.00484281 48.4281
15:20 0 0

Z-Score-Quality Scatter + Regression

Model Buy/Sell Scatter + Regression