KOSPI Backtest Dashboard

run_id: 20260323T061750Z_userreq_top200_ens2_best_parquet_20260323_tossenriched_common200_z2p995
generated_at_utc: 2026-03-23T06:17:53.858964+00:00

Top KPI

trade_return_per_trade_bp = (total_pnl_final / total_trade_notional) * 10000
metric value
total_pnl_final 9.646M
total_trade_notional 4158.862M
daily_trade_notional 166.354M
total_fee 4.159M
mdd_pnl -10.623M
alpha_vs_dynamic_notional_beta_pnl_final 2.258M
alpha_vs_avg_hold_notional_beta_pnl_final 4.835M
dynamic_alpha_mdd_pnl -1.841M
avg_hold_alpha_mdd_pnl -2.920M
dynamic_alpha_sharpe_annualized 3.14185
avg_hold_alpha_sharpe_annualized 4.02613
time_avg_total_notional_position_usdt 51.558M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 51.558M
trade_return_per_trade_bp 23.19bp
roi_avg_notional_position_pct 18.71%
roi_peak_notional_position_pct 9.58%
num_trades 1,736
high_mc_trade_notional 0.000M
high_mc_sharpe_annualized
high_mc_trade_return_per_trade_bp
low_mc_trade_notional 4158.862M
low_mc_sharpe_annualized 3.52184
low_mc_trade_return_per_trade_bp 23.19bp
sharpe_annualized 3.52184

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.995
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 9.646M
total_pnl_peak 10.839M
dynamic_notional_beta_pnl_final 7.389M
alpha_vs_dynamic_notional_beta_pnl_final 2.258M
avg_hold_notional_beta_pnl_final 4.812M
alpha_vs_avg_hold_notional_beta_pnl_final 4.835M
high_mc_dynamic_notional_beta_pnl_final 0.000M
low_mc_dynamic_notional_beta_pnl_final 7.389M
high_mc_avg_hold_notional_beta_pnl_final 0.000M
low_mc_avg_hold_notional_beta_pnl_final 4.812M
high_mc_alpha_vs_dynamic_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_dynamic_notional_beta_pnl_final 2.258M
high_mc_alpha_vs_avg_hold_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_avg_hold_notional_beta_pnl_final 4.835M
dynamic_alpha_mdd_pnl -1.841M
dynamic_alpha_sharpe_annualized 3.14185
avg_hold_alpha_mdd_pnl -2.920M
avg_hold_alpha_sharpe_annualized 4.02613
num_trades 1,736
total_traded_amount_sum 87216
total_trade_notional 4158.862M
daily_trade_notional 166.354M
trading_day_count 25
total_fee 4.159M
time_avg_total_notional_position_usdt 51.558M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 51.558M
time_avg_net_position_usdt 51.558M
time_avg_abs_net_position_usdt 51.558M
peak_abs_net_position_usdt 1.00709e+08
roi_avg_notional_position_pct 18.71%
roi_peak_notional_position_pct 9.58%
mdd_pnl -10.623M
sharpe_annualized 3.52184
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 9.646M
low_mc_trade_notional 4158.862M
low_mc_num_trades 1,736
low_mc_sharpe_annualized 3.52184
low_mc_trade_return_per_trade_bp 23.19bp
model_zscore_pnl_final 307.513M
hedge_zscore_pnl_final 60.272M
force_zscore_pnl_final 0.000M
funding_fee_pnl_final 0.000M
funding_event_count 0
model_win_rate_20m 50.80%
hedge_win_rate_20m 48.42%
force_win_rate_20m
model_win_rate_btc_adj_20m 50.80%
hedge_win_rate_btc_adj_20m 48.42%
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 9.64645e+06 4.15886e+09 1736 3.52184 23.1949
high 0 0 0
low 9.64645e+06 4.15886e+09 1736 3.52184 23.1949

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 1133 1.10291e+06 0.000410134 4.10134 0.525154 0.00477684 -0.000335102 0.00384648 1.10291e+06 0.000410134 4.10134 0.525154
10 1133 1.3187e+06 0.000490378 4.90378 0.538394 0.00248545 2.14715e-05 0.000777376 1.3187e+06 0.000490378 4.90378 0.538394
20 1132 2.30857e+06 0.000859283 8.59283 0.507951 0.00136855 0.000549633 0.000115051 2.30857e+06 0.000859283 8.59283 0.507951
30 1131 2.40663e+06 0.000896578 8.96578 0.514589 -0.000848265 0.00087145 3.00142e-05 2.40663e+06 0.000896578 8.96578 0.514589
60 1125 5.77258e+06 0.00216229 21.6229 0.519111 -0.00189469 0.00211122 7.81711e-05 5.77258e+06 0.00216229 21.6229 0.519111
120 1089 9.27024e+06 0.00359047 35.9047 0.527089 0.00312553 0.00272994 8.56579e-05 9.27024e+06 0.00359047 35.9047 0.527089
240 1064 1.02606e+07 0.00406936 40.6936 0.526316 0.0086079 0.00328184 0.000316501 1.02606e+07 0.00406936 40.6936 0.526316

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 603 -1.46016e+06 -0.000993504 -9.93504 0.447761 0.012941 -0.00154975 0.00537552 -1.46016e+06 -0.000993504 -9.93504 0.447761
10 603 -2.5973e+06 -0.00176722 -17.6722 0.466003 0.0232673 -0.0027048 0.0041516 -2.5973e+06 -0.00176722 -17.6722 0.466003
20 603 -2.44117e+06 -0.00166099 -16.6099 0.484245 0.0240831 -0.00263623 0.00349789 -2.44117e+06 -0.00166099 -16.6099 0.484245
30 603 -2.81294e+06 -0.00191395 -19.1395 0.514096 0.0423981 -0.00366334 0.00765523 -2.81294e+06 -0.00191395 -19.1395 0.514096
60 603 -1.76967e+06 -0.0012041 -12.041 0.510779 0.0530096 -0.00330796 0.00781162 -1.76967e+06 -0.0012041 -12.041 0.510779
120 585 -2.00315e+06 -0.0014039 -14.039 0.466667 0.0210529 -0.00220435 0.000892534 -2.00315e+06 -0.0014039 -14.039 0.466667
240 579 -1.34061e+06 -0.000949524 -9.49524 0.493955 -0.0234778 -0.000137379 0.000462879 -1.34061e+06 -0.000949524 -9.49524 0.493955

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 8 124 0.00987792 98.7792
09:20 14 734 0.0166524 166.524
09:40 31 1390 0.00379298 37.9298
10:00 36 1515 -0.00757332 -75.7332
10:20 43 3389 -6.7458e-05 -0.67458
10:40 47 2887 0.000217339 2.17339
11:00 83 4322 0.00350785 35.0785
11:20 124 5830 0.00373885 37.3885
11:40 125 5870 0.0038582 38.582
12:00 83 4563 -0.00404104 -40.4104
12:20 78 3625 0.0027916 27.916
12:40 56 3310 0.00605445 60.5445
13:00 31 1124 -0.0150896 -150.896
13:20 49 2234 0.0118517 118.517
13:40 29 1550 0.00336043 33.6043
14:00 29 1036 0.0311369 311.369
14:20 12 245 0.0121584 121.584
14:40 7 171 0.0383851 383.851
15:00 12 323 0.0164927 164.927
15:20 0 0

Z-Score-Quality Scatter + Regression

Model Buy/Sell Scatter + Regression