KOSPI Backtest Dashboard

run_id: 20260321T111349Z_userreq_toss_tabm_enh129_ex200_20260321_target350_z4p5
generated_at_utc: 2026-03-21T11:14:19.810519+00:00

Top KPI

trade_return_per_trade_bp = (total_pnl_final / total_trade_notional) * 10000
metric value
total_pnl_final 15.323M
total_trade_notional 2805.715M
daily_trade_notional 68.432M
total_fee 2.806M
mdd_pnl -1.702M
alpha_vs_dynamic_notional_beta_pnl_final 13.106M
alpha_vs_avg_hold_notional_beta_pnl_final 14.449M
dynamic_alpha_mdd_pnl -1.676M
avg_hold_alpha_mdd_pnl -1.685M
dynamic_alpha_sharpe_annualized 8.75715
avg_hold_alpha_sharpe_annualized 9.53491
time_avg_total_notional_position_usdt 11.217M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 11.217M
trade_return_per_trade_bp 54.61bp
roi_avg_notional_position_pct 136.61%
roi_peak_notional_position_pct 32.43%
num_trades 1,137
high_mc_trade_notional 0.000M
high_mc_sharpe_annualized
high_mc_trade_return_per_trade_bp
low_mc_trade_notional 2805.715M
low_mc_sharpe_annualized 9.92829
low_mc_trade_return_per_trade_bp 54.61bp
sharpe_annualized 9.92829

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 4.5
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 15.323M
total_pnl_peak 15.346M
dynamic_notional_beta_pnl_final 2.217M
alpha_vs_dynamic_notional_beta_pnl_final 13.106M
avg_hold_notional_beta_pnl_final 0.874M
alpha_vs_avg_hold_notional_beta_pnl_final 14.449M
high_mc_dynamic_notional_beta_pnl_final 0.000M
low_mc_dynamic_notional_beta_pnl_final 2.217M
high_mc_avg_hold_notional_beta_pnl_final 0.000M
low_mc_avg_hold_notional_beta_pnl_final 0.874M
high_mc_alpha_vs_dynamic_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_dynamic_notional_beta_pnl_final 13.106M
high_mc_alpha_vs_avg_hold_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_avg_hold_notional_beta_pnl_final 14.449M
dynamic_alpha_mdd_pnl -1.676M
dynamic_alpha_sharpe_annualized 8.75715
avg_hold_alpha_mdd_pnl -1.685M
avg_hold_alpha_sharpe_annualized 9.53491
num_trades 1,137
total_traded_amount_sum 5.93406e+06
total_trade_notional 2805.715M
daily_trade_notional 68.432M
trading_day_count 41
total_fee 2.806M
time_avg_total_notional_position_usdt 11.217M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 11.217M
time_avg_net_position_usdt 11.217M
time_avg_abs_net_position_usdt 11.217M
peak_abs_net_position_usdt 4.72433e+07
roi_avg_notional_position_pct 136.61%
roi_peak_notional_position_pct 32.43%
mdd_pnl -1.702M
sharpe_annualized 9.92829
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 15.323M
low_mc_trade_notional 2805.715M
low_mc_num_trades 1,137
low_mc_sharpe_annualized 9.92829
low_mc_trade_return_per_trade_bp 54.61bp
model_zscore_pnl_final 1279.614M
hedge_zscore_pnl_final 181.844M
force_zscore_pnl_final 0.000M
funding_fee_pnl_final 0.000M
funding_event_count 0
model_win_rate_20m 59.21%
hedge_win_rate_20m 44.32%
force_win_rate_20m
model_win_rate_btc_adj_20m 59.21%
hedge_win_rate_btc_adj_20m 44.32%
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 1.53232e+07 2.80571e+09 1137 9.92829 54.6144
high 0 0 0
low 1.53232e+07 2.80571e+09 1137 9.92829 54.6144

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 706 4.94318e+06 0.00288455 28.8455 0.607649 -0.00297423 0.00415687 0.000769246 4.94318e+06 0.00288455 28.8455 0.607649
10 706 5.47315e+06 0.00319381 31.9381 0.604816 -0.00142168 0.00323876 0.000105286 5.47315e+06 0.00319381 31.9381 0.604816
20 706 5.07714e+06 0.00296272 29.6272 0.592068 0.00174401 0.000603969 9.91319e-05 5.07714e+06 0.00296272 29.6272 0.592068
30 706 7.28285e+06 0.00424985 42.4985 0.601983 0.00565897 -0.00110638 0.000762816 7.28285e+06 0.00424985 42.4985 0.601983
60 706 1.07469e+07 0.00627126 62.7126 0.604816 0.00230744 0.00340044 8.56609e-05 1.07469e+07 0.00627126 62.7126 0.604816
120 705 1.27116e+07 0.00742855 74.2855 0.608511 -0.00287422 0.00873618 0.000106093 1.27116e+07 0.00742855 74.2855 0.608511
240 704 1.5717e+07 0.00919832 91.9832 0.598011 0.0122039 -0.000937996 0.00125183 1.5717e+07 0.00919832 91.9832 0.598011

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 431 -677507 -0.000620405 -6.20405 0.359629 0.00221797 -0.000976648 0.00205124 -677507 -0.000620405 -6.20405 0.359629
10 431 -616164 -0.000564232 -5.64232 0.424594 0.000529905 -0.000640585 8.47623e-05 -616164 -0.000564232 -5.64232 0.424594
20 431 -631869 -0.000578613 -5.78613 0.443155 0.00356936 -0.00120185 0.00155082 -631869 -0.000578613 -5.78613 0.443155
30 430 -1.19622e+06 -0.00109792 -10.9792 0.448837 0.00307228 -0.00160148 0.000803252 -1.19622e+06 -0.00109792 -10.9792 0.448837
60 430 -710884 -0.000652465 -6.52465 0.453488 0.00858383 -0.00206801 0.00510186 -710884 -0.000652465 -6.52465 0.453488
120 430 -999384 -0.000917257 -9.17257 0.488372 -0.000459931 -0.000786381 6.6874e-06 -999384 -0.000917257 -9.17257 0.488372
240 429 -1.16069e+06 -0.00106783 -10.6783 0.505828 0.0132032 -0.0030589 0.00168166 -1.16069e+06 -0.00106783 -10.6783 0.505828

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 55 114084 0.0110343 110.343
09:20 47 92524 0.00390137 39.0137
09:40 48 92785 -0.0109832 -109.832
10:00 32 83148 0.00102302 10.2302
10:20 28 105661 0.00427178 42.7178
10:40 21 80540 0.00273946 27.3946
11:00 36 151484 -0.000988468 -9.88468
11:20 27 177518 0.00948833 94.8833
11:40 32 290609 0.00652804 65.2804
12:00 29 228840 0.00651107 65.1107
12:20 24 251739 0.00734092 73.4092
12:40 45 378375 0.00725993 72.5993
13:00 53 485660 0.00478065 47.8065
13:20 37 252438 0.01187 118.7
13:40 17 84034 0.00983017 98.3017
14:00 11 26434 0.0305987 305.987
14:20 13 37093 0.0112077 112.077
14:40 7 15870 -0.00566663 -56.6663
15:00 18 18584 0.0888148 888.148
15:20 0 0

Z-Score-Quality Scatter + Regression

Model Buy/Sell Scatter + Regression