KOSPI Backtest Dashboard

run_id: 20260320T164622Z_userreq_toss_full_tabm_256_105feat_20260320_target350_z2p85
generated_at_utc: 2026-03-20T16:46:58.695346+00:00

Top KPI

trade_return_per_trade_bp = (total_pnl_final / total_trade_notional) * 10000
metric value
total_pnl_final 31.091M
total_trade_notional 13957.031M
daily_trade_notional 340.415M
total_fee 13.957M
mdd_pnl -6.403M
alpha_vs_dynamic_notional_beta_pnl_final 21.138M
alpha_vs_avg_hold_notional_beta_pnl_final 22.823M
dynamic_alpha_mdd_pnl -1.822M
avg_hold_alpha_mdd_pnl -2.147M
dynamic_alpha_sharpe_annualized 7.64258
avg_hold_alpha_sharpe_annualized 8.07566
time_avg_total_notional_position_usdt 74.222M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 74.222M
trade_return_per_trade_bp 22.28bp
roi_avg_notional_position_pct 41.89%
roi_peak_notional_position_pct 30.67%
num_trades 6,023
high_mc_trade_notional 0.000M
high_mc_sharpe_annualized
high_mc_trade_return_per_trade_bp
low_mc_trade_notional 13957.031M
low_mc_sharpe_annualized 9.17393
low_mc_trade_return_per_trade_bp 22.28bp
sharpe_annualized 9.17393

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.85
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.091M
total_pnl_peak 32.210M
dynamic_notional_beta_pnl_final 9.952M
alpha_vs_dynamic_notional_beta_pnl_final 21.138M
avg_hold_notional_beta_pnl_final 8.268M
alpha_vs_avg_hold_notional_beta_pnl_final 22.823M
high_mc_dynamic_notional_beta_pnl_final 0.000M
low_mc_dynamic_notional_beta_pnl_final 9.952M
high_mc_avg_hold_notional_beta_pnl_final 0.000M
low_mc_avg_hold_notional_beta_pnl_final 8.268M
high_mc_alpha_vs_dynamic_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_dynamic_notional_beta_pnl_final 21.138M
high_mc_alpha_vs_avg_hold_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_avg_hold_notional_beta_pnl_final 22.823M
dynamic_alpha_mdd_pnl -1.822M
dynamic_alpha_sharpe_annualized 7.64258
avg_hold_alpha_mdd_pnl -2.147M
avg_hold_alpha_sharpe_annualized 8.07566
num_trades 6,023
total_traded_amount_sum 1.0604e+07
total_trade_notional 13957.031M
daily_trade_notional 340.415M
trading_day_count 41
total_fee 13.957M
time_avg_total_notional_position_usdt 74.222M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 74.222M
time_avg_net_position_usdt 74.222M
time_avg_abs_net_position_usdt 74.222M
peak_abs_net_position_usdt 1.01364e+08
roi_avg_notional_position_pct 41.89%
roi_peak_notional_position_pct 30.67%
mdd_pnl -6.403M
sharpe_annualized 9.17393
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.091M
low_mc_trade_notional 13957.031M
low_mc_num_trades 6,023
low_mc_sharpe_annualized 9.17393
low_mc_trade_return_per_trade_bp 22.28bp
model_zscore_pnl_final 4590.581M
hedge_zscore_pnl_final 772.685M
force_zscore_pnl_final 0.000M
funding_fee_pnl_final 0.000M
funding_event_count 0
model_win_rate_20m 57.13%
hedge_win_rate_20m 42.97%
force_win_rate_20m
model_win_rate_btc_adj_20m 57.13%
hedge_win_rate_btc_adj_20m 42.97%
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.10907e+07 1.3957e+10 6023 9.17393 22.276
high 0 0 0
low 3.10907e+07 1.3957e+10 6023 9.17393 22.276

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 4058 9.82004e+06 0.00105893 10.5893 0.55175 -0.00126806 0.00161585 0.000630544 9.82004e+06 0.00105893 10.5893 0.55175
10 4058 1.19324e+07 0.00128672 12.8672 0.575653 -0.00109667 0.0016953 0.000357887 1.19324e+07 0.00128672 12.8672 0.575653
20 4056 1.12559e+07 0.00121441 12.1441 0.571252 -0.00248431 0.00237564 0.00109972 1.12559e+07 0.00121441 12.1441 0.571252
30 4055 1.47964e+07 0.00159682 15.9682 0.577559 -0.00226349 0.00261192 0.000705916 1.47964e+07 0.00159682 15.9682 0.577559
60 4054 2.19306e+07 0.00236738 23.6738 0.577454 -0.000792431 0.00261276 4.84514e-05 2.19306e+07 0.00236738 23.6738 0.577454
120 4026 2.94983e+07 0.00320809 32.0809 0.586687 -0.00246662 0.00446698 0.000235029 2.94983e+07 0.00320809 32.0809 0.586687
240 3996 3.3381e+07 0.00366032 36.6032 0.568569 -0.00188948 0.00458019 8.72696e-05 3.3381e+07 0.00366032 36.6032 0.568569

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 1965 -4.05394e+06 -0.000865581 -8.65581 0.363868 0.0036157 -0.0014431 0.00644608 -4.05394e+06 -0.000865581 -8.65581 0.363868
10 1965 -3.78788e+06 -0.000808773 -8.08773 0.393893 0.00288921 -0.00128128 0.00347987 -3.78788e+06 -0.000808773 -8.08773 0.393893
20 1964 -4.08975e+06 -0.000873695 -8.73695 0.429735 0.00239899 -0.00126844 0.00143158 -4.08975e+06 -0.000873695 -8.73695 0.429735
30 1962 -4.39814e+06 -0.000940585 -9.40585 0.450051 0.00433059 -0.001698 0.00275737 -4.39814e+06 -0.000940585 -9.40585 0.450051
60 1957 -5.90005e+06 -0.00126508 -12.6508 0.459377 0.00186731 -0.00156942 0.000252039 -5.90005e+06 -0.00126508 -12.6508 0.459377
120 1945 -3.31797e+06 -0.000715716 -7.15716 0.475578 0.00667765 -0.00180799 0.00173326 -3.31797e+06 -0.000715716 -7.15716 0.475578
240 1892 -3.0834e+06 -0.000682403 -6.82403 0.491015 0.002122 -0.000987762 7.17043e-05 -3.0834e+06 -0.000682403 -6.82403 0.491015

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 160 253304 0.0121064 121.064
09:20 204 336306 0.00511645 51.1645
09:40 270 477893 -0.000386629 -3.86629
10:00 326 593656 0.00274532 27.4532
10:20 249 436493 0.0028049 28.049
10:40 190 452564 0.00483435 48.3435
11:00 176 328625 0.00079975 7.9975
11:20 141 279980 0.00524215 52.4215
11:40 133 299890 0.00455914 45.5914
12:00 118 271504 0.00482122 48.2122
12:20 107 191054 0.00350305 35.0305
12:40 116 136279 0.00240041 24.0041
13:00 119 316377 0.00339816 33.9816
13:20 307 424021 0.00605399 60.5399
13:40 202 174398 0.00650069 65.0069
14:00 121 117045 -0.000228997 -2.28997
14:20 104 144254 0.0227367 227.367
14:40 41 34807 0.00636842 63.6842
15:00 33 45711 0.00741861 74.1861
15:20 0 0

Z-Score-Quality Scatter + Regression

Model Buy/Sell Scatter + Regression