KOSPI Backtest Dashboard

run_id: 20260321T011352Z_userreq_toss_ens2_105_enhanced_20260320_target350_z2p82
generated_at_utc: 2026-03-21T01:17:29.883683+00:00

Top KPI

trade_return_per_trade_bp = (total_pnl_final / total_trade_notional) * 10000
metric value
total_pnl_final 42.309M
total_trade_notional 15161.342M
daily_trade_notional 369.789M
total_fee 15.161M
mdd_pnl -12.044M
alpha_vs_dynamic_notional_beta_pnl_final 32.155M
alpha_vs_avg_hold_notional_beta_pnl_final 32.301M
dynamic_alpha_mdd_pnl -2.352M
avg_hold_alpha_mdd_pnl -2.266M
dynamic_alpha_sharpe_annualized 9.86554
avg_hold_alpha_sharpe_annualized 9.86751
time_avg_total_notional_position_usdt 89.838M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 89.838M
trade_return_per_trade_bp 27.91bp
roi_avg_notional_position_pct 47.09%
roi_peak_notional_position_pct 41.51%
num_trades 7,337
high_mc_trade_notional 0.000M
high_mc_sharpe_annualized
high_mc_trade_return_per_trade_bp
low_mc_trade_notional 15161.342M
low_mc_sharpe_annualized 9.8407
low_mc_trade_return_per_trade_bp 27.91bp
sharpe_annualized 9.8407

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.82
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.309M
total_pnl_peak 43.856M
dynamic_notional_beta_pnl_final 10.153M
alpha_vs_dynamic_notional_beta_pnl_final 32.155M
avg_hold_notional_beta_pnl_final 10.007M
alpha_vs_avg_hold_notional_beta_pnl_final 32.301M
high_mc_dynamic_notional_beta_pnl_final 0.000M
low_mc_dynamic_notional_beta_pnl_final 10.153M
high_mc_avg_hold_notional_beta_pnl_final 0.000M
low_mc_avg_hold_notional_beta_pnl_final 10.007M
high_mc_alpha_vs_dynamic_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_dynamic_notional_beta_pnl_final 32.155M
high_mc_alpha_vs_avg_hold_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_avg_hold_notional_beta_pnl_final 32.301M
dynamic_alpha_mdd_pnl -2.352M
dynamic_alpha_sharpe_annualized 9.86554
avg_hold_alpha_mdd_pnl -2.266M
avg_hold_alpha_sharpe_annualized 9.86751
num_trades 7,337
total_traded_amount_sum 1.89523e+07
total_trade_notional 15161.342M
daily_trade_notional 369.789M
trading_day_count 41
total_fee 15.161M
time_avg_total_notional_position_usdt 89.838M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 89.838M
time_avg_net_position_usdt 89.838M
time_avg_abs_net_position_usdt 89.838M
peak_abs_net_position_usdt 1.0192e+08
roi_avg_notional_position_pct 47.09%
roi_peak_notional_position_pct 41.51%
mdd_pnl -12.044M
sharpe_annualized 9.8407
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.309M
low_mc_trade_notional 15161.342M
low_mc_num_trades 7,337
low_mc_sharpe_annualized 9.8407
low_mc_trade_return_per_trade_bp 27.91bp
model_zscore_pnl_final 5372.722M
hedge_zscore_pnl_final 610.056M
force_zscore_pnl_final 0.000M
funding_fee_pnl_final 0.000M
funding_event_count 0
model_win_rate_20m 57.81%
hedge_win_rate_20m 45.22%
force_win_rate_20m
model_win_rate_btc_adj_20m 57.81%
hedge_win_rate_btc_adj_20m 45.22%
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.23088e+07 1.51613e+10 7337 9.8407 27.9057
high 0 0 0
low 4.23088e+07 1.51613e+10 7337 9.8407 27.9057

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 5316 1.43834e+07 0.00135582 13.5582 0.549473 0.00214534 2.5819e-05 0.00159391 1.43834e+07 0.00135582 13.5582 0.549473
10 5316 1.91107e+07 0.00180142 18.0142 0.579195 0.0025111 0.000249297 0.00157378 1.91107e+07 0.00180142 18.0142 0.579195
20 5312 1.92908e+07 0.00182012 18.2012 0.578125 0.00320618 -9.86585e-05 0.00152563 1.92908e+07 0.00182012 18.2012 0.578125
30 5308 2.43554e+07 0.00230001 23.0001 0.58685 0.0070198 -0.00141679 0.00449251 2.43554e+07 0.00230001 23.0001 0.58685
60 5292 3.03986e+07 0.00288136 28.8136 0.582011 0.00708126 -0.000814814 0.00277264 3.03986e+07 0.00288136 28.8136 0.582011
120 5270 4.15646e+07 0.00396015 39.6015 0.581594 0.00764532 -2.98163e-05 0.00178781 4.15646e+07 0.00396015 39.6015 0.581594
240 5184 4.16533e+07 0.00404717 40.4717 0.555556 0.00190497 0.00272951 6.84701e-05 4.16533e+07 0.00404717 40.4717 0.555556

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 2021 -3.47504e+06 -0.000763296 -7.63296 0.387927 0.00126128 -0.000915334 0.000516873 -3.47504e+06 -0.000763296 -7.63296 0.387927
10 2021 -4.71575e+06 -0.00103582 -10.3582 0.411677 -0.000439418 -0.00092658 4.67811e-05 -4.71575e+06 -0.00103582 -10.3582 0.411677
20 2017 -3.99793e+06 -0.000880105 -8.80105 0.452157 0.000167608 -0.000858796 4.38402e-06 -3.99793e+06 -0.000880105 -8.80105 0.452157
30 2011 -3.6865e+06 -0.000814255 -8.14255 0.467429 -0.00169109 -0.000553155 0.000240354 -3.6865e+06 -0.000814255 -8.14255 0.467429
60 2004 -2.57443e+06 -0.000570595 -5.70595 0.486527 -0.00170987 -0.000298129 0.000133629 -2.57443e+06 -0.000570595 -5.70595 0.486527
120 1974 -937201 -0.000210892 -2.10892 0.50304 0.0126847 -0.00173504 0.00437781 -937201 -0.000210892 -2.10892 0.50304
240 1931 -6.64763e+06 -0.00152853 -15.2853 0.511652 0.00596047 -0.00215757 0.000406505 -6.64763e+06 -0.00152853 -15.2853 0.511652

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 541 598739 0.00623429 62.3429
09:20 291 387429 0.00644121 64.4121
09:40 227 240468 -0.00149718 -14.9718
10:00 194 338457 0.00371729 37.1729
10:20 184 313740 0.00301215 30.1215
10:40 175 348946 0.00360557 36.0557
11:00 327 709909 0.00184416 18.4416
11:20 275 817780 0.00364375 36.4375
11:40 199 554120 0.00454578 45.4578
12:00 188 698375 0.00518835 51.8835
12:20 190 832883 0.00385813 38.5813
12:40 196 716504 0.00274333 27.4333
13:00 210 807234 0.00257584 25.7584
13:20 224 621701 0.00570172 57.0172
13:40 112 308680 0.0107256 107.256
14:00 111 247355 0.000476176 4.76176
14:20 128 280391 0.0106577 106.577
14:40 86 263163 0.0108527 108.527
15:00 130 405324 0.0176235 176.235
15:20 0 0

Z-Score-Quality Scatter + Regression

Model Buy/Sell Scatter + Regression