KOSPI Backtest Dashboard

run_id: 20260321T011352Z_userreq_toss_ens2_105_enhanced_20260320_target350_z2p8
generated_at_utc: 2026-03-21T01:16:55.379847+00:00

Top KPI

trade_return_per_trade_bp = (total_pnl_final / total_trade_notional) * 10000
metric value
total_pnl_final 43.365M
total_trade_notional 15288.722M
daily_trade_notional 372.896M
total_fee 15.289M
mdd_pnl -12.300M
alpha_vs_dynamic_notional_beta_pnl_final 33.522M
alpha_vs_avg_hold_notional_beta_pnl_final 33.295M
dynamic_alpha_mdd_pnl -2.624M
avg_hold_alpha_mdd_pnl -2.750M
dynamic_alpha_sharpe_annualized 10.2897
avg_hold_alpha_sharpe_annualized 10.1869
time_avg_total_notional_position_usdt 90.397M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 90.397M
trade_return_per_trade_bp 28.36bp
roi_avg_notional_position_pct 47.97%
roi_peak_notional_position_pct 42.59%
num_trades 7,424
high_mc_trade_notional 0.000M
high_mc_sharpe_annualized
high_mc_trade_return_per_trade_bp
low_mc_trade_notional 15288.722M
low_mc_sharpe_annualized 10.0743
low_mc_trade_return_per_trade_bp 28.36bp
sharpe_annualized 10.0743

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.8
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 43.365M
total_pnl_peak 45.003M
dynamic_notional_beta_pnl_final 9.843M
alpha_vs_dynamic_notional_beta_pnl_final 33.522M
avg_hold_notional_beta_pnl_final 10.070M
alpha_vs_avg_hold_notional_beta_pnl_final 33.295M
high_mc_dynamic_notional_beta_pnl_final 0.000M
low_mc_dynamic_notional_beta_pnl_final 9.843M
high_mc_avg_hold_notional_beta_pnl_final 0.000M
low_mc_avg_hold_notional_beta_pnl_final 10.070M
high_mc_alpha_vs_dynamic_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_dynamic_notional_beta_pnl_final 33.522M
high_mc_alpha_vs_avg_hold_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_avg_hold_notional_beta_pnl_final 33.295M
dynamic_alpha_mdd_pnl -2.624M
dynamic_alpha_sharpe_annualized 10.2897
avg_hold_alpha_mdd_pnl -2.750M
avg_hold_alpha_sharpe_annualized 10.1869
num_trades 7,424
total_traded_amount_sum 1.90231e+07
total_trade_notional 15288.722M
daily_trade_notional 372.896M
trading_day_count 41
total_fee 15.289M
time_avg_total_notional_position_usdt 90.397M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 90.397M
time_avg_net_position_usdt 90.397M
time_avg_abs_net_position_usdt 90.397M
peak_abs_net_position_usdt 1.01815e+08
roi_avg_notional_position_pct 47.97%
roi_peak_notional_position_pct 42.59%
mdd_pnl -12.300M
sharpe_annualized 10.0743
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 43.365M
low_mc_trade_notional 15288.722M
low_mc_num_trades 7,424
low_mc_sharpe_annualized 10.0743
low_mc_trade_return_per_trade_bp 28.36bp
model_zscore_pnl_final 5433.215M
hedge_zscore_pnl_final 602.191M
force_zscore_pnl_final 0.000M
funding_fee_pnl_final 0.000M
funding_event_count 0
model_win_rate_20m 57.83%
hedge_win_rate_20m 44.76%
force_win_rate_20m
model_win_rate_btc_adj_20m 57.83%
hedge_win_rate_btc_adj_20m 44.76%
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 4.33646e+07 1.52887e+10 7424 10.0743 28.3638
high 0 0 0
low 4.33646e+07 1.52887e+10 7424 10.0743 28.3638

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 5405 1.41667e+07 0.00131388 13.1388 0.549861 0.00191827 0.00014263 0.00127285 1.41667e+07 0.00131388 13.1388 0.549861
10 5405 1.92815e+07 0.00178825 17.8825 0.575578 0.00209123 0.000462077 0.0010782 1.92815e+07 0.00178825 17.8825 0.575578
20 5400 1.89778e+07 0.00176214 17.6214 0.578333 0.00218689 0.000354892 0.000691344 1.89778e+07 0.00176214 17.6214 0.578333
30 5396 2.42454e+07 0.0022532 22.532 0.584322 0.00545988 -0.000694068 0.00278117 2.42454e+07 0.0022532 22.532 0.584322
60 5380 3.11256e+07 0.00290317 29.0317 0.583643 0.00664474 -0.00063286 0.00246137 3.11256e+07 0.00290317 29.0317 0.583643
120 5358 4.25792e+07 0.00399174 39.9174 0.580627 0.00693893 0.00021005 0.00153063 4.25792e+07 0.00399174 39.9174 0.580627
240 5262 4.42065e+07 0.00423033 42.3033 0.553212 0.00235088 0.00253536 0.000103095 4.42065e+07 0.00423033 42.3033 0.553212

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 2019 -3.36443e+06 -0.000746586 -7.46586 0.385835 0.000910127 -0.000873888 0.000268058 -3.36443e+06 -0.000746586 -7.46586 0.385835
10 2019 -4.38793e+06 -0.000973706 -9.73706 0.410599 -0.00102361 -0.000873933 0.000254998 -4.38793e+06 -0.000973706 -9.73706 0.410599
20 2013 -3.67871e+06 -0.000819087 -8.19087 0.447591 0.0006654 -0.000976211 6.8317e-05 -3.67871e+06 -0.000819087 -8.19087 0.447591
30 2007 -3.56687e+06 -0.000796865 -7.96865 0.469856 -0.00159928 -0.000584175 0.000217101 -3.56687e+06 -0.000796865 -7.96865 0.469856
60 2001 -2.54189e+06 -0.000569761 -5.69761 0.495252 -0.00193931 -0.000308598 0.00017287 -2.54189e+06 -0.000569761 -5.69761 0.495252
120 1972 -1.15808e+06 -0.000263227 -2.63227 0.510142 0.0122969 -0.00173933 0.00406556 -1.15808e+06 -0.000263227 -2.63227 0.510142
240 1930 -7.37602e+06 -0.00171335 -17.1335 0.511917 0.00578776 -0.00228457 0.000364233 -7.37602e+06 -0.00171335 -17.1335 0.511917

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 539 606711 0.00546196 54.6196
09:20 290 399159 0.00586107 58.6107
09:40 234 237274 -0.00115981 -11.5981
10:00 201 349894 0.00389972 38.9972
10:20 185 321965 0.00349522 34.9522
10:40 169 327008 0.00512154 51.2154
11:00 331 697799 0.00209247 20.9247
11:20 288 829066 0.00307217 30.7217
11:40 204 564520 0.00475302 47.5302
12:00 191 684568 0.00468209 46.8209
12:20 185 785895 0.00388005 38.8005
12:40 212 755547 0.00234837 23.4837
13:00 218 824972 0.00201874 20.1874
13:20 225 605437 0.00485515 48.5515
13:40 112 335946 0.010566 105.66
14:00 111 259320 0.00152607 15.2607
14:20 132 271677 0.017327 173.27
14:40 84 271014 0.00399338 39.9338
15:00 132 399441 0.0150223 150.223
15:20 0 0

Z-Score-Quality Scatter + Regression

Model Buy/Sell Scatter + Regression