KOSPI Backtest Dashboard

run_id: 20260321T011352Z_userreq_toss_ens2_105_enhanced_20260320_target350_z2p85
generated_at_utc: 2026-03-21T01:18:40.949780+00:00

Top KPI

trade_return_per_trade_bp = (total_pnl_final / total_trade_notional) * 10000
metric value
total_pnl_final 41.868M
total_trade_notional 15059.193M
daily_trade_notional 367.297M
total_fee 15.059M
mdd_pnl -12.095M
alpha_vs_dynamic_notional_beta_pnl_final 32.013M
alpha_vs_avg_hold_notional_beta_pnl_final 31.938M
dynamic_alpha_mdd_pnl -2.754M
avg_hold_alpha_mdd_pnl -2.528M
dynamic_alpha_sharpe_annualized 9.83483
avg_hold_alpha_sharpe_annualized 9.76968
time_avg_total_notional_position_usdt 89.141M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 89.141M
trade_return_per_trade_bp 27.80bp
roi_avg_notional_position_pct 46.97%
roi_peak_notional_position_pct 40.97%
num_trades 7,241
high_mc_trade_notional 0.000M
high_mc_sharpe_annualized
high_mc_trade_return_per_trade_bp
low_mc_trade_notional 15059.193M
low_mc_sharpe_annualized 9.75697
low_mc_trade_return_per_trade_bp 27.80bp
sharpe_annualized 9.75697

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 41.868M
total_pnl_peak 43.432M
dynamic_notional_beta_pnl_final 9.855M
alpha_vs_dynamic_notional_beta_pnl_final 32.013M
avg_hold_notional_beta_pnl_final 9.930M
alpha_vs_avg_hold_notional_beta_pnl_final 31.938M
high_mc_dynamic_notional_beta_pnl_final 0.000M
low_mc_dynamic_notional_beta_pnl_final 9.855M
high_mc_avg_hold_notional_beta_pnl_final 0.000M
low_mc_avg_hold_notional_beta_pnl_final 9.930M
high_mc_alpha_vs_dynamic_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_dynamic_notional_beta_pnl_final 32.013M
high_mc_alpha_vs_avg_hold_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_avg_hold_notional_beta_pnl_final 31.938M
dynamic_alpha_mdd_pnl -2.754M
dynamic_alpha_sharpe_annualized 9.83483
avg_hold_alpha_mdd_pnl -2.528M
avg_hold_alpha_sharpe_annualized 9.76968
num_trades 7,241
total_traded_amount_sum 1.8791e+07
total_trade_notional 15059.193M
daily_trade_notional 367.297M
trading_day_count 41
total_fee 15.059M
time_avg_total_notional_position_usdt 89.141M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 89.141M
time_avg_net_position_usdt 89.141M
time_avg_abs_net_position_usdt 89.141M
peak_abs_net_position_usdt 1.02188e+08
roi_avg_notional_position_pct 46.97%
roi_peak_notional_position_pct 40.97%
mdd_pnl -12.095M
sharpe_annualized 9.75697
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 41.868M
low_mc_trade_notional 15059.193M
low_mc_num_trades 7,241
low_mc_sharpe_annualized 9.75697
low_mc_trade_return_per_trade_bp 27.80bp
model_zscore_pnl_final 5343.078M
hedge_zscore_pnl_final 619.333M
force_zscore_pnl_final 0.000M
funding_fee_pnl_final 0.000M
funding_event_count 0
model_win_rate_20m 58.34%
hedge_win_rate_20m 45.89%
force_win_rate_20m
model_win_rate_btc_adj_20m 58.34%
hedge_win_rate_btc_adj_20m 45.89%
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.18677e+07 1.50592e+10 7241 9.75697 27.8021
high 0 0 0
low 4.18677e+07 1.50592e+10 7241 9.75697 27.8021

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 5206 1.49198e+07 0.00142362 14.2362 0.556281 0.00152219 0.000413891 0.000769048 1.49198e+07 0.00142362 14.2362 0.556281
10 5206 1.9059e+07 0.00181857 18.1857 0.580292 0.00266858 0.000205723 0.00171288 1.9059e+07 0.00181857 18.1857 0.580292
20 5202 1.94727e+07 0.00185983 18.5983 0.583429 0.00328128 -7.46826e-05 0.00157124 1.94727e+07 0.00185983 18.5983 0.583429
30 5198 2.37518e+07 0.00227056 22.7056 0.590419 0.00584299 -0.000811793 0.00318647 2.37518e+07 0.00227056 22.7056 0.590419
60 5183 3.05561e+07 0.0029313 29.313 0.585182 0.00739072 -0.00081127 0.00300955 3.05561e+07 0.0029313 29.313 0.585182
120 5162 4.00924e+07 0.00386536 38.6536 0.585238 0.0106653 -0.00132655 0.0030857 4.00924e+07 0.00386536 38.6536 0.585238
240 5075 4.10927e+07 0.00403972 40.3972 0.555468 0.00680794 0.000412792 0.000783313 4.10927e+07 0.00403972 40.3972 0.555468

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 2035 -3.45486e+06 -0.000754497 -7.54497 0.391155 0.00032629 -0.000827127 3.56632e-05 -3.45486e+06 -0.000754497 -7.54497 0.391155
10 2035 -4.62365e+06 -0.00100975 -10.0975 0.409337 -0.00148016 -0.000823747 0.000529167 -4.62365e+06 -0.00100975 -10.0975 0.409337
20 2031 -3.48578e+06 -0.000762934 -7.62934 0.458887 -0.000765908 -0.000664019 9.14368e-05 -3.48578e+06 -0.000762934 -7.62934 0.458887
30 2025 -3.16523e+06 -0.000695076 -6.95076 0.478519 -0.00278621 -0.000293872 0.000653047 -3.16523e+06 -0.000695076 -6.95076 0.478519
60 2018 -1.95069e+06 -0.000429892 -4.29892 0.49554 -0.0017419 -0.000156167 0.000139042 -1.95069e+06 -0.000429892 -4.29892 0.49554
120 1989 900550 0.000201426 2.01426 0.508798 0.00752264 -0.00055724 0.00151761 900550 0.000201426 2.01426 0.508798
240 1947 -4.81924e+06 -0.00110114 -11.0114 0.510015 0.0040968 -0.00156523 0.000182392 -4.81924e+06 -0.00110114 -11.0114 0.510015

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 554 610435 0.00700807 70.0807
09:20 300 380620 0.0110564 110.564
09:40 225 248672 -0.00136809 -13.6809
10:00 182 298875 0.00560299 56.0299
10:20 177 289889 0.00259705 25.9705
10:40 176 380494 0.00505834 50.5834
11:00 306 680365 0.00223598 22.3598
11:20 272 844730 0.00333937 33.3937
11:40 196 596431 0.00459545 45.9545
12:00 181 706010 0.00465595 46.5595
12:20 187 816312 0.00356916 35.6916
12:40 200 710015 0.00278 27.8
13:00 204 765146 0.00220785 22.0785
13:20 219 629218 0.00541432 54.1432
13:40 110 340615 0.00930679 93.0679
14:00 117 267462 0.00048196 4.8196
14:20 120 247930 0.0103926 103.926
14:40 76 226894 0.0120435 120.435
15:00 122 368820 0.0162881 162.881
15:20 0 0

Z-Score-Quality Scatter + Regression

Model Buy/Sell Scatter + Regression