KOSPI Backtest Dashboard

run_id: 20260322T120900Z_userreq_toss_ultimate_v2_parquet_20260322_tossenriched_z2p65
generated_at_utc: 2026-03-22T12:11:43.396588+00:00

Top KPI

trade_return_per_trade_bp = (total_pnl_final / total_trade_notional) * 10000
metric value
total_pnl_final 44.001M
total_trade_notional 15556.846M
daily_trade_notional 379.435M
total_fee 15.557M
mdd_pnl -5.227M
alpha_vs_dynamic_notional_beta_pnl_final 38.575M
alpha_vs_avg_hold_notional_beta_pnl_final 36.552M
dynamic_alpha_mdd_pnl -2.662M
avg_hold_alpha_mdd_pnl -1.923M
dynamic_alpha_sharpe_annualized 12.9405
avg_hold_alpha_sharpe_annualized 12.9149
time_avg_total_notional_position_usdt 66.874M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 66.874M
trade_return_per_trade_bp 28.28bp
roi_avg_notional_position_pct 65.80%
roi_peak_notional_position_pct 43.29%
num_trades 6,583
high_mc_trade_notional 0.000M
high_mc_sharpe_annualized
high_mc_trade_return_per_trade_bp
low_mc_trade_notional 15556.846M
low_mc_sharpe_annualized 13.3118
low_mc_trade_return_per_trade_bp 28.28bp
sharpe_annualized 13.3118

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.65
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 44.001M
total_pnl_peak 44.037M
dynamic_notional_beta_pnl_final 5.427M
alpha_vs_dynamic_notional_beta_pnl_final 38.575M
avg_hold_notional_beta_pnl_final 7.449M
alpha_vs_avg_hold_notional_beta_pnl_final 36.552M
high_mc_dynamic_notional_beta_pnl_final 0.000M
low_mc_dynamic_notional_beta_pnl_final 5.427M
high_mc_avg_hold_notional_beta_pnl_final 0.000M
low_mc_avg_hold_notional_beta_pnl_final 7.449M
high_mc_alpha_vs_dynamic_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_dynamic_notional_beta_pnl_final 38.575M
high_mc_alpha_vs_avg_hold_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_avg_hold_notional_beta_pnl_final 36.552M
dynamic_alpha_mdd_pnl -2.662M
dynamic_alpha_sharpe_annualized 12.9405
avg_hold_alpha_mdd_pnl -1.923M
avg_hold_alpha_sharpe_annualized 12.9149
num_trades 6,583
total_traded_amount_sum 1.20663e+07
total_trade_notional 15556.846M
daily_trade_notional 379.435M
trading_day_count 41
total_fee 15.557M
time_avg_total_notional_position_usdt 66.874M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 66.874M
time_avg_net_position_usdt 66.874M
time_avg_abs_net_position_usdt 66.874M
peak_abs_net_position_usdt 1.01641e+08
roi_avg_notional_position_pct 65.80%
roi_peak_notional_position_pct 43.29%
mdd_pnl -5.227M
sharpe_annualized 13.3118
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 44.001M
low_mc_trade_notional 15556.846M
low_mc_num_trades 6,583
low_mc_sharpe_annualized 13.3118
low_mc_trade_return_per_trade_bp 28.28bp
model_zscore_pnl_final 2262.412M
hedge_zscore_pnl_final 139.133M
force_zscore_pnl_final 0.000M
funding_fee_pnl_final 0.000M
funding_event_count 0
model_win_rate_20m 60.95%
hedge_win_rate_20m 46.18%
force_win_rate_20m
model_win_rate_btc_adj_20m 60.95%
hedge_win_rate_btc_adj_20m 46.18%
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.40014e+07 1.55568e+10 6583 13.3118 28.2842
high 0 0 0
low 4.40014e+07 1.55568e+10 6583 13.3118 28.2842

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 5000 1.58274e+07 0.00134615 13.4615 0.5928 0.00871019 -0.000427144 0.00417363 1.58274e+07 0.00134615 13.4615 0.5928
10 5000 2.17669e+07 0.00185131 18.5131 0.6076 0.0136546 -0.00097688 0.00762945 2.17669e+07 0.00185131 18.5131 0.6076
20 4994 2.50985e+07 0.00213741 21.3741 0.609531 0.0146042 -0.000870414 0.00585114 2.50985e+07 0.00213741 21.3741 0.609531
30 4990 2.56576e+07 0.00218689 21.8689 0.603006 0.0159386 -0.00107022 0.00596168 2.56576e+07 0.00218689 21.8689 0.603006
60 4974 2.58097e+07 0.00220694 22.0694 0.596703 0.0127811 -0.000317521 0.00210877 2.58097e+07 0.00220694 22.0694 0.596703
120 4891 4.32418e+07 0.00376335 37.6335 0.588632 0.00800222 0.00196031 0.000338405 4.32418e+07 0.00376335 37.6335 0.588632
240 4807 4.74334e+07 0.00420347 42.0347 0.565425 0.0103518 0.00196892 0.000318828 4.74334e+07 0.00420347 42.0347 0.565425

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 1583 -2.53843e+06 -0.000668134 -6.68134 0.403664 -0.00124108 -0.0005943 0.000151736 -2.53843e+06 -0.000668134 -6.68134 0.403664
10 1583 -2.32293e+06 -0.000611411 -6.11411 0.443462 0.00349843 -0.000719085 0.000754198 -2.32293e+06 -0.000611411 -6.11411 0.443462
20 1583 -2.78136e+06 -0.000732075 -7.32075 0.461781 0.00656572 -0.000932276 0.00112632 -2.78136e+06 -0.000732075 -7.32075 0.461781
30 1582 -3.39785e+06 -0.000894949 -8.94949 0.460809 0.00422516 -0.00107539 0.000345572 -3.39785e+06 -0.000894949 -8.94949 0.460809
60 1578 -6.58348e+06 -0.00173862 -17.3862 0.480989 -0.0352699 -0.000485548 0.00933666 -6.58348e+06 -0.00173862 -17.3862 0.480989
120 1568 -5.66062e+06 -0.00150477 -15.0477 0.489158 -0.00668828 -0.00121972 0.000225129 -5.66062e+06 -0.00150477 -15.0477 0.489158
240 1543 -6.50802e+06 -0.00175848 -17.5848 0.488658 -0.00439823 -0.00163547 4.59034e-05 -6.50802e+06 -0.00175848 -17.5848 0.488658

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 235 412036 0.00858365 85.8365
09:20 184 338584 0.00596914 59.6914
09:40 129 266923 -0.0030015 -30.015
10:00 127 235507 0.00465676 46.5676
10:20 114 202126 0.000917662 9.17662
10:40 123 268834 0.00362495 36.2495
11:00 176 332214 0.000475458 4.75458
11:20 153 307238 0.00501365 50.1365
11:40 119 254774 0.00329354 32.9354
12:00 124 309088 0.00449126 44.9126
12:20 130 304298 0.0067628 67.628
12:40 161 343429 0.00264655 26.4655
13:00 181 294250 0.00358402 35.8402
13:20 369 595600 0.0151287 151.287
13:40 412 571529 0.00265604 26.5604
14:00 274 405744 0.00528868 52.8868
14:20 190 294666 0.00515507 51.5507
14:40 90 160847 0.0100983 100.983
15:00 103 159326 0.0058154 58.154
15:20 0 0

Z-Score-Quality Scatter + Regression

Model Buy/Sell Scatter + Regression