KOSPI Backtest Dashboard

run_id: 20260321T011352Z_userreq_toss_ens2_105_enhanced_20260320_target350_z2p84
generated_at_utc: 2026-03-21T01:18:06.431751+00:00

Top KPI

trade_return_per_trade_bp = (total_pnl_final / total_trade_notional) * 10000
metric value
total_pnl_final 42.045M
total_trade_notional 15156.004M
daily_trade_notional 369.659M
total_fee 15.156M
mdd_pnl -11.884M
alpha_vs_dynamic_notional_beta_pnl_final 32.232M
alpha_vs_avg_hold_notional_beta_pnl_final 32.088M
dynamic_alpha_mdd_pnl -2.726M
avg_hold_alpha_mdd_pnl -2.490M
dynamic_alpha_sharpe_annualized 9.95776
avg_hold_alpha_sharpe_annualized 9.86298
time_avg_total_notional_position_usdt 89.388M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 89.388M
trade_return_per_trade_bp 27.74bp
roi_avg_notional_position_pct 47.04%
roi_peak_notional_position_pct 41.15%
num_trades 7,281
high_mc_trade_notional 0.000M
high_mc_sharpe_annualized
high_mc_trade_return_per_trade_bp
low_mc_trade_notional 15156.004M
low_mc_sharpe_annualized 9.84953
low_mc_trade_return_per_trade_bp 27.74bp
sharpe_annualized 9.84953

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.84
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 42.045M
total_pnl_peak 43.565M
dynamic_notional_beta_pnl_final 9.813M
alpha_vs_dynamic_notional_beta_pnl_final 32.232M
avg_hold_notional_beta_pnl_final 9.957M
alpha_vs_avg_hold_notional_beta_pnl_final 32.088M
high_mc_dynamic_notional_beta_pnl_final 0.000M
low_mc_dynamic_notional_beta_pnl_final 9.813M
high_mc_avg_hold_notional_beta_pnl_final 0.000M
low_mc_avg_hold_notional_beta_pnl_final 9.957M
high_mc_alpha_vs_dynamic_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_dynamic_notional_beta_pnl_final 32.232M
high_mc_alpha_vs_avg_hold_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_avg_hold_notional_beta_pnl_final 32.088M
dynamic_alpha_mdd_pnl -2.726M
dynamic_alpha_sharpe_annualized 9.95776
avg_hold_alpha_mdd_pnl -2.490M
avg_hold_alpha_sharpe_annualized 9.86298
num_trades 7,281
total_traded_amount_sum 1.88798e+07
total_trade_notional 15156.004M
daily_trade_notional 369.659M
trading_day_count 41
total_fee 15.156M
time_avg_total_notional_position_usdt 89.388M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 89.388M
time_avg_net_position_usdt 89.388M
time_avg_abs_net_position_usdt 89.388M
peak_abs_net_position_usdt 1.02186e+08
roi_avg_notional_position_pct 47.04%
roi_peak_notional_position_pct 41.15%
mdd_pnl -11.884M
sharpe_annualized 9.84953
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 42.045M
low_mc_trade_notional 15156.004M
low_mc_num_trades 7,281
low_mc_sharpe_annualized 9.84953
low_mc_trade_return_per_trade_bp 27.74bp
model_zscore_pnl_final 5395.957M
hedge_zscore_pnl_final 615.412M
force_zscore_pnl_final 0.000M
funding_fee_pnl_final 0.000M
funding_event_count 0
model_win_rate_20m 58.32%
hedge_win_rate_20m 45.26%
force_win_rate_20m
model_win_rate_btc_adj_20m 58.32%
hedge_win_rate_btc_adj_20m 45.26%
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.20453e+07 1.5156e+10 7281 9.84953 27.7417
high 0 0 0
low 4.20453e+07 1.5156e+10 7281 9.84953 27.7417

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 5251 1.51672e+07 0.00143132 14.3132 0.556275 0.00102025 0.000658566 0.000353092 1.51672e+07 0.00143132 14.3132 0.556275
10 5251 1.97486e+07 0.00186367 18.6367 0.581604 0.00218347 0.000460076 0.00115641 1.97486e+07 0.00186367 18.6367 0.581604
20 5247 1.98313e+07 0.00187324 18.7324 0.58319 0.00287524 0.000161043 0.00122962 1.98313e+07 0.00187324 18.7324 0.58319
30 5243 2.45546e+07 0.00232146 23.2146 0.59012 0.00491181 -0.000345156 0.00232393 2.45546e+07 0.00232146 23.2146 0.59012
60 5228 3.08006e+07 0.00292211 29.2211 0.582823 0.00443531 0.000589223 0.00110871 3.08006e+07 0.00292211 29.2211 0.582823
120 5206 4.04432e+07 0.00385681 38.5681 0.584518 0.00487402 0.00126148 0.000750522 4.04432e+07 0.00385681 38.5681 0.584518
240 5117 4.15911e+07 0.0040442 40.442 0.557358 0.00012926 0.00353956 3.16433e-07 4.15911e+07 0.0040442 40.442 0.557358

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 2030 -3.55639e+06 -0.000780015 -7.80015 0.387685 5.83787e-05 -0.000811908 1.12711e-06 -3.55639e+06 -0.000780015 -7.80015 0.387685
10 2030 -4.60468e+06 -0.00100994 -10.0994 0.407882 -0.00181723 -0.000757522 0.000809797 -4.60468e+06 -0.00100994 -10.0994 0.407882
20 2026 -3.68242e+06 -0.000809453 -8.09453 0.452616 -0.00105195 -0.000662498 0.00017388 -3.68242e+06 -0.000809453 -8.09453 0.452616
30 2020 -3.29956e+06 -0.000727712 -7.27712 0.473267 -0.00361981 -0.000165433 0.00111811 -3.29956e+06 -0.000727712 -7.27712 0.473267
60 2013 -2.08631e+06 -0.000461822 -4.61822 0.494784 -0.00256578 8.70443e-06 0.000300487 -2.08631e+06 -0.000461822 -4.61822 0.494784
120 1982 941541 0.000211592 2.11592 0.514632 0.00647823 -0.000398044 0.00115457 941541 0.000211592 2.11592 0.514632
240 1941 -5.01213e+06 -0.00115048 -11.5048 0.511077 0.00484151 -0.00172794 0.000257675 -5.01213e+06 -0.00115048 -11.5048 0.511077

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 550 603802 0.00639019 63.9019
09:20 297 386178 0.00545468 54.5468
09:40 225 241323 -0.000826014 -8.26014
10:00 187 313836 0.00449223 44.9223
10:20 181 315602 0.00219867 21.9867
10:40 169 347811 0.00521353 52.1353
11:00 311 680079 0.00219858 21.9858
11:20 274 835751 0.00365392 36.5392
11:40 196 599498 0.00485416 48.5416
12:00 179 686421 0.00496618 49.6618
12:20 190 843425 0.00344932 34.4932
12:40 201 699918 0.00272074 27.2074
13:00 204 763281 0.00207142 20.7142
13:20 224 648217 0.00576715 57.6715
13:40 117 349476 0.00923721 92.3721
14:00 113 240811 -0.0018694 -18.694
14:20 128 273357 0.0117174 117.174
14:40 83 253624 0.00829337 82.9337
15:00 121 372570 0.0140903 140.903
15:20 0 0

Z-Score-Quality Scatter + Regression

Model Buy/Sell Scatter + Regression