KOSPI Backtest Dashboard

run_id: 20260322T115350Z_userreq_toss_ft_trans_bins96_20260322_tossenriched_z3p1
generated_at_utc: 2026-03-22T11:56:04.533596+00:00

Top KPI

trade_return_per_trade_bp = (total_pnl_final / total_trade_notional) * 10000
metric value
total_pnl_final 38.632M
total_trade_notional 13222.273M
daily_trade_notional 322.494M
total_fee 13.222M
mdd_pnl -5.022M
alpha_vs_dynamic_notional_beta_pnl_final 33.705M
alpha_vs_avg_hold_notional_beta_pnl_final 31.738M
dynamic_alpha_mdd_pnl -1.823M
avg_hold_alpha_mdd_pnl -2.424M
dynamic_alpha_sharpe_annualized 12.8333
avg_hold_alpha_sharpe_annualized 11.8096
time_avg_total_notional_position_usdt 61.890M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 61.890M
trade_return_per_trade_bp 29.22bp
roi_avg_notional_position_pct 62.42%
roi_peak_notional_position_pct 37.90%
num_trades 5,483
high_mc_trade_notional 0.000M
high_mc_sharpe_annualized
high_mc_trade_return_per_trade_bp
low_mc_trade_notional 13222.273M
low_mc_sharpe_annualized 13.1167
low_mc_trade_return_per_trade_bp 29.22bp
sharpe_annualized 13.1167

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.1
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 38.632M
total_pnl_peak 38.720M
dynamic_notional_beta_pnl_final 4.927M
alpha_vs_dynamic_notional_beta_pnl_final 33.705M
avg_hold_notional_beta_pnl_final 6.894M
alpha_vs_avg_hold_notional_beta_pnl_final 31.738M
high_mc_dynamic_notional_beta_pnl_final 0.000M
low_mc_dynamic_notional_beta_pnl_final 4.927M
high_mc_avg_hold_notional_beta_pnl_final 0.000M
low_mc_avg_hold_notional_beta_pnl_final 6.894M
high_mc_alpha_vs_dynamic_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_dynamic_notional_beta_pnl_final 33.705M
high_mc_alpha_vs_avg_hold_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_avg_hold_notional_beta_pnl_final 31.738M
dynamic_alpha_mdd_pnl -1.823M
dynamic_alpha_sharpe_annualized 12.8333
avg_hold_alpha_mdd_pnl -2.424M
avg_hold_alpha_sharpe_annualized 11.8096
num_trades 5,483
total_traded_amount_sum 1.06254e+07
total_trade_notional 13222.273M
daily_trade_notional 322.494M
trading_day_count 41
total_fee 13.222M
time_avg_total_notional_position_usdt 61.890M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 61.890M
time_avg_net_position_usdt 61.890M
time_avg_abs_net_position_usdt 61.890M
peak_abs_net_position_usdt 1.01932e+08
roi_avg_notional_position_pct 62.42%
roi_peak_notional_position_pct 37.90%
mdd_pnl -5.022M
sharpe_annualized 13.1167
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 38.632M
low_mc_trade_notional 13222.273M
low_mc_num_trades 5,483
low_mc_sharpe_annualized 13.1167
low_mc_trade_return_per_trade_bp 29.22bp
model_zscore_pnl_final 5006.764M
hedge_zscore_pnl_final 915.297M
force_zscore_pnl_final 0.000M
funding_fee_pnl_final 0.000M
funding_event_count 0
model_win_rate_20m 64.73%
hedge_win_rate_20m 44.17%
force_win_rate_20m
model_win_rate_btc_adj_20m 64.73%
hedge_win_rate_btc_adj_20m 44.17%
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.86324e+07 1.32223e+10 5483 13.1167 29.2177
high 0 0 0
low 3.86324e+07 1.32223e+10 5483 13.1167 29.2177

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 3679 1.54015e+07 0.00175017 17.5017 0.628975 0.00101544 0.00106851 0.000388356 1.54015e+07 0.00175017 17.5017 0.628975
10 3679 2.03204e+07 0.00230912 23.0912 0.645284 0.00221801 0.0008189 0.00135826 2.03204e+07 0.00230912 23.0912 0.645284
20 3677 2.34426e+07 0.00266544 26.6544 0.647267 0.00515745 -0.000459936 0.00531216 2.34426e+07 0.00266544 26.6544 0.647267
30 3676 2.4186e+07 0.00275077 27.5077 0.643906 0.00588751 -0.000720027 0.00555006 2.4186e+07 0.00275077 27.5077 0.643906
60 3668 2.709e+07 0.00308801 30.8801 0.629226 0.00363757 0.000991132 0.00113662 2.709e+07 0.00308801 30.8801 0.629226
120 3631 3.96158e+07 0.004564 45.64 0.602864 -0.00320446 0.00620285 0.000389184 3.96158e+07 0.004564 45.64 0.602864
240 3577 4.62382e+07 0.00541162 54.1162 0.592396 0.000732384 0.00485642 1.34381e-05 4.62382e+07 0.00541162 54.1162 0.592396

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 1804 -2.97668e+06 -0.000673117 -6.73117 0.369734 0.0044121 -0.00159323 0.0235857 -2.97668e+06 -0.000673117 -6.73117 0.369734
10 1804 -3.03766e+06 -0.000686907 -6.86907 0.42184 0.00589377 -0.00187702 0.0255599 -3.03766e+06 -0.000686907 -6.86907 0.42184
20 1800 -4.14534e+06 -0.000939514 -9.39514 0.441667 0.00620962 -0.00222623 0.00913632 -4.14534e+06 -0.000939514 -9.39514 0.441667
30 1796 -3.7344e+06 -0.00084833 -8.4833 0.456013 0.00925655 -0.00276102 0.0180765 -3.7344e+06 -0.00084833 -8.4833 0.456013
60 1790 -5.69394e+06 -0.00129794 -12.9794 0.465363 -0.0081772 0.000273246 0.00548364 -5.69394e+06 -0.00129794 -12.9794 0.465363
120 1778 -6.64134e+06 -0.00152439 -15.2439 0.467942 -0.0104982 0.000515485 0.00541119 -6.64134e+06 -0.00152439 -15.2439 0.467942
240 1735 -7.13844e+06 -0.00168026 -16.8026 0.487608 -0.0193222 0.00209353 0.00927448 -7.13844e+06 -0.00168026 -16.8026 0.487608

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 262 462548 0.00598752 59.8752
09:20 229 438669 0.00362108 36.2108
09:40 161 367891 -0.000803965 -8.03965
10:00 146 263014 0.00484592 48.4592
10:20 124 251620 0.00431841 43.1841
10:40 116 302681 0.00458056 45.8056
11:00 153 377552 0.0018851 18.851
11:20 144 360743 0.0054984 54.984
11:40 96 124987 0.00616413 61.6413
12:00 105 285797 0.00504757 50.4757
12:20 120 178936 0.00553688 55.3688
12:40 126 208957 0.00418635 41.8635
13:00 128 230694 0.00397901 39.7901
13:20 192 324308 0.01456 145.6
13:40 190 334341 0.00972081 97.2081
14:00 160 221325 0.00396854 39.6854
14:20 163 272785 0.00866354 86.6354
14:40 82 136020 0.013198 131.98
15:00 114 190073 0.0032125 32.125
15:20 0 0

Z-Score-Quality Scatter + Regression

Model Buy/Sell Scatter + Regression