KOSPI Backtest Dashboard

run_id: 20260322T114841Z_userreq_toss_ultimate_v3_parquet_20260322_tossenriched_z3p1
generated_at_utc: 2026-03-22T11:51:23.973315+00:00

Top KPI

trade_return_per_trade_bp = (total_pnl_final / total_trade_notional) * 10000
metric value
total_pnl_final 43.471M
total_trade_notional 13962.706M
daily_trade_notional 340.554M
total_fee 13.963M
mdd_pnl -4.702M
alpha_vs_dynamic_notional_beta_pnl_final 38.649M
alpha_vs_avg_hold_notional_beta_pnl_final 35.803M
dynamic_alpha_mdd_pnl -1.616M
avg_hold_alpha_mdd_pnl -2.037M
dynamic_alpha_sharpe_annualized 13.8884
avg_hold_alpha_sharpe_annualized 12.2145
time_avg_total_notional_position_usdt 68.837M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 68.837M
trade_return_per_trade_bp 31.13bp
roi_avg_notional_position_pct 63.15%
roi_peak_notional_position_pct 42.98%
num_trades 5,767
high_mc_trade_notional 0.000M
high_mc_sharpe_annualized
high_mc_trade_return_per_trade_bp
low_mc_trade_notional 13962.706M
low_mc_sharpe_annualized 13.7654
low_mc_trade_return_per_trade_bp 31.13bp
sharpe_annualized 13.7654

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 3.1
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.471M
total_pnl_peak 43.537M
dynamic_notional_beta_pnl_final 4.822M
alpha_vs_dynamic_notional_beta_pnl_final 38.649M
avg_hold_notional_beta_pnl_final 7.668M
alpha_vs_avg_hold_notional_beta_pnl_final 35.803M
high_mc_dynamic_notional_beta_pnl_final 0.000M
low_mc_dynamic_notional_beta_pnl_final 4.822M
high_mc_avg_hold_notional_beta_pnl_final 0.000M
low_mc_avg_hold_notional_beta_pnl_final 7.668M
high_mc_alpha_vs_dynamic_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_dynamic_notional_beta_pnl_final 38.649M
high_mc_alpha_vs_avg_hold_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_avg_hold_notional_beta_pnl_final 35.803M
dynamic_alpha_mdd_pnl -1.616M
dynamic_alpha_sharpe_annualized 13.8884
avg_hold_alpha_mdd_pnl -2.037M
avg_hold_alpha_sharpe_annualized 12.2145
num_trades 5,767
total_traded_amount_sum 1.17939e+07
total_trade_notional 13962.706M
daily_trade_notional 340.554M
trading_day_count 41
total_fee 13.963M
time_avg_total_notional_position_usdt 68.837M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 68.837M
time_avg_net_position_usdt 68.837M
time_avg_abs_net_position_usdt 68.837M
peak_abs_net_position_usdt 1.01148e+08
roi_avg_notional_position_pct 63.15%
roi_peak_notional_position_pct 42.98%
mdd_pnl -4.702M
sharpe_annualized 13.7654
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.471M
low_mc_trade_notional 13962.706M
low_mc_num_trades 5,767
low_mc_sharpe_annualized 13.7654
low_mc_trade_return_per_trade_bp 31.13bp
model_zscore_pnl_final 5083.525M
hedge_zscore_pnl_final 881.660M
force_zscore_pnl_final 0.000M
funding_fee_pnl_final 0.000M
funding_event_count 0
model_win_rate_20m 64.67%
hedge_win_rate_20m 44.21%
force_win_rate_20m
model_win_rate_btc_adj_20m 64.67%
hedge_win_rate_btc_adj_20m 44.21%
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.34715e+07 1.39627e+10 5767 13.7654 31.134
high 0 0 0
low 4.34715e+07 1.39627e+10 5767 13.7654 31.134

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 3865 1.41986e+07 0.0015289 15.289 0.620181 0.00198334 0.000395646 0.000895389 1.41986e+07 0.0015289 15.289 0.620181
10 3865 2.13431e+07 0.0022982 22.982 0.645278 0.00538516 -0.000847922 0.00513136 2.13431e+07 0.0022982 22.982 0.645278
20 3864 2.42382e+07 0.00261065 26.1065 0.646739 0.00536626 -0.000526073 0.00355326 2.42382e+07 0.00261065 26.1065 0.646739
30 3863 2.66823e+07 0.00287467 28.7467 0.644059 0.00527558 -0.000244441 0.0027191 2.66823e+07 0.00287467 28.7467 0.644059
60 3860 2.86196e+07 0.00308584 30.8584 0.631088 0.00330265 0.00107848 0.000596103 2.86196e+07 0.00308584 30.8584 0.631088
120 3851 4.4792e+07 0.00484142 48.4142 0.619839 -0.00527212 0.00753331 0.000644935 4.4792e+07 0.00484142 48.4142 0.619839
240 3834 4.99337e+07 0.005422 54.22 0.589463 -0.00108791 0.00579472 1.68402e-05 4.99337e+07 0.005422 54.22 0.589463

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 1902 -2.54926e+06 -0.000545195 -5.45195 0.370662 0.00515925 -0.00151347 0.0220367 -2.54926e+06 -0.000545195 -5.45195 0.370662
10 1902 -2.2025e+06 -0.000471036 -4.71036 0.436383 0.00453725 -0.00130741 0.0122541 -2.2025e+06 -0.000471036 -4.71036 0.436383
20 1900 -3.4851e+06 -0.000746151 -7.46151 0.442105 0.00461172 -0.0016291 0.004458 -3.4851e+06 -0.000746151 -7.46151 0.442105
30 1898 -3.27167e+06 -0.000701223 -7.01223 0.474183 0.00738652 -0.00208754 0.0069819 -3.27167e+06 -0.000701223 -7.01223 0.474183
60 1894 -5.53737e+06 -0.00118942 -11.8942 0.479409 0.00767981 -0.00267301 0.00372497 -5.53737e+06 -0.00118942 -11.8942 0.479409
120 1890 -3.72416e+06 -0.000801668 -8.01668 0.5 0.0144955 -0.00354782 0.00775983 -3.72416e+06 -0.000801668 -8.01668 0.5
240 1884 -2.48194e+06 -0.000535909 -5.35909 0.519639 0.00760756 -0.00200655 0.00101463 -2.48194e+06 -0.000535909 -5.35909 0.519639

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 207 425574 0.00937216 93.7216
09:20 192 330815 0.0051322 51.322
09:40 172 438180 -0.000978499 -9.78499
10:00 181 309131 0.00520807 52.0807
10:20 168 341204 0.00292422 29.2422
10:40 186 480172 0.0026195 26.195
11:00 194 467203 0.00113502 11.3502
11:20 185 394011 0.00497403 49.7403
11:40 121 283646 0.00373102 37.3102
12:00 134 291868 0.00637931 63.7931
12:20 112 220318 0.00475002 47.5002
12:40 117 179631 0.00313891 31.3891
13:00 133 275041 0.00568848 56.8848
13:20 231 440216 0.020755 207.55
13:40 200 379088 0.0100323 100.323
14:00 155 285503 0.00255711 25.5711
14:20 122 173940 0.00667064 66.7064
14:40 56 84405 0.00556212 55.6212
15:00 84 111276 0.00378041 37.8041
15:20 0 0

Z-Score-Quality Scatter + Regression

Model Buy/Sell Scatter + Regression