KOSPI Backtest Dashboard

run_id: 20260322T114746Z_userreq_toss_mega9_parquet_20260322_tossenriched_z2p9
generated_at_utc: 2026-03-22T11:49:44.403275+00:00

Top KPI

trade_return_per_trade_bp = (total_pnl_final / total_trade_notional) * 10000
metric value
total_pnl_final 48.152M
total_trade_notional 17626.690M
daily_trade_notional 429.919M
total_fee 17.627M
mdd_pnl -5.167M
alpha_vs_dynamic_notional_beta_pnl_final 41.444M
alpha_vs_avg_hold_notional_beta_pnl_final 38.838M
dynamic_alpha_mdd_pnl -2.198M
avg_hold_alpha_mdd_pnl -4.024M
dynamic_alpha_sharpe_annualized 14.4389
avg_hold_alpha_sharpe_annualized 12.6472
time_avg_total_notional_position_usdt 83.615M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 83.615M
trade_return_per_trade_bp 27.32bp
roi_avg_notional_position_pct 57.59%
roi_peak_notional_position_pct 47.26%
num_trades 7,598
high_mc_trade_notional 0.000M
high_mc_sharpe_annualized
high_mc_trade_return_per_trade_bp
low_mc_trade_notional 17626.690M
low_mc_sharpe_annualized 14.8952
low_mc_trade_return_per_trade_bp 27.32bp
sharpe_annualized 14.8952

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.9
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 48.152M
total_pnl_peak 48.179M
dynamic_notional_beta_pnl_final 6.708M
alpha_vs_dynamic_notional_beta_pnl_final 41.444M
avg_hold_notional_beta_pnl_final 9.314M
alpha_vs_avg_hold_notional_beta_pnl_final 38.838M
high_mc_dynamic_notional_beta_pnl_final 0.000M
low_mc_dynamic_notional_beta_pnl_final 6.708M
high_mc_avg_hold_notional_beta_pnl_final 0.000M
low_mc_avg_hold_notional_beta_pnl_final 9.314M
high_mc_alpha_vs_dynamic_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_dynamic_notional_beta_pnl_final 41.444M
high_mc_alpha_vs_avg_hold_notional_beta_pnl_final 0.000M
low_mc_alpha_vs_avg_hold_notional_beta_pnl_final 38.838M
dynamic_alpha_mdd_pnl -2.198M
dynamic_alpha_sharpe_annualized 14.4389
avg_hold_alpha_mdd_pnl -4.024M
avg_hold_alpha_sharpe_annualized 12.6472
num_trades 7,598
total_traded_amount_sum 1.70642e+07
total_trade_notional 17626.690M
daily_trade_notional 429.919M
trading_day_count 41
total_fee 17.627M
time_avg_total_notional_position_usdt 83.615M
time_avg_high_mc_notional_position_usdt 0.000M
time_avg_low_mc_notional_position_usdt 83.615M
time_avg_net_position_usdt 83.615M
time_avg_abs_net_position_usdt 83.615M
peak_abs_net_position_usdt 1.01889e+08
roi_avg_notional_position_pct 57.59%
roi_peak_notional_position_pct 47.26%
mdd_pnl -5.167M
sharpe_annualized 14.8952
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 48.152M
low_mc_trade_notional 17626.690M
low_mc_num_trades 7,598
low_mc_sharpe_annualized 14.8952
low_mc_trade_return_per_trade_bp 27.32bp
model_zscore_pnl_final 6971.094M
hedge_zscore_pnl_final 1010.815M
force_zscore_pnl_final 0.000M
funding_fee_pnl_final 0.000M
funding_event_count 0
model_win_rate_20m 63.60%
hedge_win_rate_20m 44.62%
force_win_rate_20m
model_win_rate_btc_adj_20m 63.60%
hedge_win_rate_btc_adj_20m 44.62%
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.81525e+07 1.76267e+10 7598 14.8952 27.3179
high 0 0 0
low 4.81525e+07 1.76267e+10 7598 14.8952 27.3179

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 5480 2.00079e+07 0.00159137 15.9137 0.608577 0.00145816 0.000700027 0.000658681 2.00079e+07 0.00159137 15.9137 0.608577
10 5480 2.65073e+07 0.0021083 21.083 0.632299 0.00368963 -8.80666e-05 0.00341142 2.65073e+07 0.0021083 21.083 0.632299
20 5478 2.82214e+07 0.00224554 22.4554 0.635999 0.00337771 0.000218558 0.00181467 2.82214e+07 0.00224554 22.4554 0.635999
30 5475 3.1274e+07 0.00248991 24.8991 0.634338 0.00381269 0.000234033 0.00198655 3.1274e+07 0.00248991 24.8991 0.634338
60 5467 3.30991e+07 0.00263939 26.3939 0.61606 0.00232539 0.00119707 0.000410179 3.30991e+07 0.00263939 26.3939 0.61606
120 5453 5.01667e+07 0.0040116 40.116 0.596736 -0.00250796 0.00528431 0.000209581 5.01667e+07 0.0040116 40.116 0.596736
240 5425 5.33704e+07 0.00429192 42.9192 0.573088 -0.000778631 0.0048099 1.23265e-05 5.33704e+07 0.00429192 42.9192 0.573088

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 2118 -3.38473e+06 -0.000669729 -6.69729 0.3678 0.00250085 -0.0011682 0.00611355 -3.38473e+06 -0.000669729 -6.69729 0.3678
10 2118 -2.75166e+06 -0.000544464 -5.44464 0.424929 0.00237458 -0.00101145 0.00366725 -2.75166e+06 -0.000544464 -5.44464 0.424929
20 2118 -4.01185e+06 -0.000793816 -7.93816 0.446176 0.00439343 -0.00171934 0.00458882 -4.01185e+06 -0.000793816 -7.93816 0.446176
30 2116 -4.43276e+06 -0.000877987 -8.77987 0.458412 0.005714 -0.00206458 0.00437776 -4.43276e+06 -0.000877987 -8.77987 0.458412
60 2111 -6.82701e+06 -0.00135562 -13.5562 0.485078 0.000256203 -0.00160774 4.21521e-06 -6.82701e+06 -0.00135562 -13.5562 0.485078
120 2108 -3.87044e+06 -0.000769688 -7.69688 0.493833 0.00729398 -0.00244424 0.00220522 -3.87044e+06 -0.000769688 -7.69688 0.493833
240 2104 -2.95196e+06 -0.000588217 -5.88217 0.498574 0.000494143 -0.000907025 4.82717e-06 -2.95196e+06 -0.000588217 -5.88217 0.498574

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 343 616953 0.0060046 60.046
09:20 280 488245 0.00237754 23.7754
09:40 253 600886 0.000337242 3.37242
10:00 214 430112 0.00208868 20.8868
10:20 202 379793 0.00264733 26.4733
10:40 186 488644 0.00399001 39.9001
11:00 239 565795 0.00180954 18.0954
11:20 225 472123 0.00506424 50.6424
11:40 181 350965 0.00392696 39.2696
12:00 166 394856 0.00447747 44.7747
12:20 157 351628 0.00370011 37.0011
12:40 179 431857 0.00517663 51.7663
13:00 198 429755 0.00337128 33.7128
13:20 245 559089 0.0201091 201.091
13:40 252 580740 0.0133301 133.301
14:00 224 522235 0.00411288 41.1288
14:20 161 371161 0.00196283 19.6283
14:40 96 241556 0.00424727 42.4727
15:00 138 286944 0.0011798 11.798
15:20 0 0

Z-Score-Quality Scatter + Regression

Model Buy/Sell Scatter + Regression