KOSPI Backtest Dashboard

run_id: 20260322T115157Z_userreq_toss_ultimate_v2_parquet_20260322_tossenriched_z2p5
generated_at_utc: 2026-03-22T11:52:38.298613+00:00

Top KPI

trade_return_per_trade_bp = (total_pnl_final / total_trade_notional) * 10000
metric value
total_pnl_final 49.487M
total_trade_notional 17408.500M
daily_trade_notional 424.598M
total_fee 17.409M
mdd_pnl -5.940M
alpha_vs_dynamic_notional_beta_pnl_final 42.945M
alpha_vs_avg_hold_notional_beta_pnl_final 41.161M
dynamic_alpha_mdd_pnl -2.720M
avg_hold_alpha_mdd_pnl -1.738M
dynamic_alpha_sharpe_annualized 14.2307
avg_hold_alpha_sharpe_annualized 14.3179
time_avg_total_notional_position_usdt 74.739M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 74.739M
trade_return_per_trade_bp 28.43bp
roi_avg_notional_position_pct 66.21%
roi_peak_notional_position_pct 48.60%
num_trades 7,531
high_mc_trade_notional 0.000M
high_mc_sharpe_annualized
high_mc_trade_return_per_trade_bp
low_mc_trade_notional 17408.500M
low_mc_sharpe_annualized 13.9758
low_mc_trade_return_per_trade_bp 28.43bp
sharpe_annualized 13.9758

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.5
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 49.487M
total_pnl_peak 49.522M
dynamic_notional_beta_pnl_final 6.541M
alpha_vs_dynamic_notional_beta_pnl_final 42.945M
avg_hold_notional_beta_pnl_final 8.325M
alpha_vs_avg_hold_notional_beta_pnl_final 41.161M
high_mc_dynamic_notional_beta_pnl_final 0.000M
low_mc_dynamic_notional_beta_pnl_final 6.541M
high_mc_avg_hold_notional_beta_pnl_final 0.000M
low_mc_avg_hold_notional_beta_pnl_final 8.325M
high_mc_alpha_vs_dynamic_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_dynamic_notional_beta_pnl_final 42.945M
high_mc_alpha_vs_avg_hold_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_avg_hold_notional_beta_pnl_final 41.161M
dynamic_alpha_mdd_pnl -2.720M
dynamic_alpha_sharpe_annualized 14.2307
avg_hold_alpha_mdd_pnl -1.738M
avg_hold_alpha_sharpe_annualized 14.3179
num_trades 7,531
total_traded_amount_sum 1.3409e+07
total_trade_notional 17408.500M
daily_trade_notional 424.598M
trading_day_count 41
total_fee 17.409M
time_avg_total_notional_position_usdt 74.739M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 74.739M
time_avg_net_position_usdt 74.739M
time_avg_abs_net_position_usdt 74.739M
peak_abs_net_position_usdt 1.01829e+08
roi_avg_notional_position_pct 66.21%
roi_peak_notional_position_pct 48.60%
mdd_pnl -5.940M
sharpe_annualized 13.9758
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 49.487M
low_mc_trade_notional 17408.500M
low_mc_num_trades 7,531
low_mc_sharpe_annualized 13.9758
low_mc_trade_return_per_trade_bp 28.43bp
model_zscore_pnl_final 2440.345M
hedge_zscore_pnl_final 146.198M
force_zscore_pnl_final 0.000M
funding_fee_pnl_final 0.000M
funding_event_count 0
model_win_rate_20m 60.60%
hedge_win_rate_20m 46.84%
force_win_rate_20m
model_win_rate_btc_adj_20m 60.60%
hedge_win_rate_btc_adj_20m 46.84%
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.94869e+07 1.74085e+10 7531 13.9758 28.4269
high 0 0 0
low 4.94869e+07 1.74085e+10 7531 13.9758 28.4269

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 5803 1.62802e+07 0.00122196 12.2196 0.586765 0.00523875 0.000190795 0.00153394 1.62802e+07 0.00122196 12.2196 0.586765
10 5803 2.2224e+07 0.00166808 16.6808 0.59969 0.00916907 -0.000166101 0.00349555 2.2224e+07 0.00166808 16.6808 0.59969
20 5794 2.61742e+07 0.00196774 19.6774 0.605972 0.0102264 -7.03673e-05 0.00288791 2.61742e+07 0.00196774 19.6774 0.605972
30 5790 2.63738e+07 0.00198424 19.8424 0.599655 0.0116754 -0.000286465 0.00317727 2.63738e+07 0.00198424 19.8424 0.599655
60 5774 2.82345e+07 0.00212994 21.2994 0.592137 0.00832806 0.000454566 0.000926866 2.82345e+07 0.00212994 21.2994 0.592137
120 5671 4.52877e+07 0.00347987 34.7987 0.584377 0.00467279 0.00246003 0.00012854 4.52877e+07 0.00347987 34.7987 0.584377
240 5568 5.62881e+07 0.00440958 44.0958 0.567888 0.00838248 0.00258923 0.000220859 5.62881e+07 0.00440958 44.0958 0.567888

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 1728 -2.21586e+06 -0.000542382 -5.42382 0.403935 0.00535283 -0.000736475 0.00294475 -2.21586e+06 -0.000542382 -5.42382 0.403935
10 1728 -2.0287e+06 -0.000496571 -4.96571 0.440394 0.00712096 -0.000741261 0.00329562 -2.0287e+06 -0.000496571 -4.96571 0.440394
20 1727 -2.1799e+06 -0.000533901 -5.33901 0.468442 0.010745 -0.000900771 0.003247 -2.1799e+06 -0.000533901 -5.33901 0.468442
30 1726 -3.14713e+06 -0.000771283 -7.71283 0.475087 0.0048308 -0.00094764 0.000433531 -3.14713e+06 -0.000771283 -7.71283 0.475087
60 1722 -5.10167e+06 -0.00125339 -12.5339 0.492451 -0.0269236 -0.000335432 0.00637618 -5.10167e+06 -0.00125339 -12.5339 0.492451
120 1712 -6.36626e+06 -0.00157366 -15.7366 0.48014 -0.0125427 -0.00115395 0.000795358 -6.36626e+06 -0.00157366 -15.7366 0.48014
240 1682 -7.32958e+06 -0.00184416 -18.4416 0.482164 -0.0229402 -0.00114132 0.00133953 -7.32958e+06 -0.00184416 -18.4416 0.482164

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 272 423393 0.00702348 70.2348
09:20 195 330973 0.00494166 49.4166
09:40 145 304198 -0.00130165 -13.0165
10:00 155 294707 0.00350616 35.0616
10:20 135 236667 0.00360579 36.0579
10:40 137 281927 0.00514235 51.4235
11:00 204 366581 0.00127101 12.7101
11:20 173 330469 0.00456493 45.6493
11:40 154 313906 0.00339434 33.9434
12:00 149 350561 0.00478268 47.8268
12:20 158 341825 0.00664583 66.4583
12:40 188 410896 0.0021685 21.685
13:00 226 361164 0.00454571 45.4571
13:20 422 630750 0.0136578 136.578
13:40 456 677641 0.00391453 39.1453
14:00 312 405049 0.00235548 23.5548
14:20 191 258461 0.0050165 50.165
14:40 101 207220 -0.000252068 -2.52068
15:00 132 206886 0.00767783 76.7783
15:20 0 0

Z-Score-Quality Scatter + Regression

Model Buy/Sell Scatter + Regression