KOSPI Backtest Dashboard

run_id: cs_mlp_200base_parquet_z2p5 generated: 2026-04-03T05:15:22.920900+00:00
backtest_typecandle
exchangekospi
strategy_namelong_short_zscore_gtc_strategy
start_time2026-02-02T09:00:00+09:00
end_time2026-03-31T09:00:00+09:00
fee_rate0.001
plot_every_minutes120
candle_source/shared/toss_kospi/backtest_candle_1520
inference_source/shared/inference_kospi/cs_mlp_200_base_parquet

Performance

Metric Value
Total PnL 19.648M
Return per Unit Volume 19.13bp
Beta (Dynamic) 5.733M
Alpha (Dynamic) 13.916M
Alpha Return per Unit Volume 13.55bp
Sharpe (Annualized) 3.0914
Alpha Sharpe (Annualized) 5.8191
Trades 4,615
Daily Trade Notional 277.524M
Trading Days 37
Total Fee 10.268M
Avg Position Notional 82.008M
ROI (Avg Position) 23.96%
ROI (Peak Position) 18.96%
Max Drawdown -15.440M
Model Win Rate (120m) 54.00%
Hedge Win Rate (120m) 46.68%

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 1.5
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

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_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 3159 1.52578e+06 0.00022272 2.2272 0.52485 -0.00394996 0.00057095 0.00130847 1.52578e+06 0.00022272 2.2272 0.52485
10 3159 2.23875e+06 0.000326793 3.26793 0.525799 -0.00372398 0.000692181 0.000637937 2.23875e+06 0.000326793 3.26793 0.525799
20 3159 2.70796e+06 0.000395284 3.95284 0.534346 -0.00995337 0.00132886 0.00244071 2.70796e+06 0.000395284 3.95284 0.534346
30 3154 4.62973e+06 0.000676801 6.76801 0.522194 0.00392788 0.000252472 0.000233152 4.62973e+06 0.000676801 6.76801 0.522194
60 3150 6.16421e+06 0.00090227 9.0227 0.523492 0.00556074 0.000277183 0.00025022 6.16421e+06 0.00090227 9.0227 0.523492
120 3137 1.53187e+07 0.00225162 22.5162 0.540006 0.0875219 -0.00635014 0.0273047 1.53187e+07 0.00225162 22.5162 0.540006
240 3120 1.90168e+07 0.00280385 28.0385 0.515385 0.0796149 -0.0051065 0.0108164 1.90168e+07 0.00280385 28.0385 0.515385

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 1456 -804566 -0.00023541 -2.3541 0.476648 0.000183859 -0.000240028 4.79029e-06 -804566 -0.00023541 -2.3541 0.476648
10 1456 -1.3414e+06 -0.000392484 -3.92484 0.483516 0.00559666 -0.00058643 0.00229296 -1.3414e+06 -0.000392484 -3.92484 0.483516
20 1455 69251.5 2.02742e-05 0.202742 0.492784 -0.00480008 0.000187166 0.00094023 69251.5 2.02742e-05 0.202742 0.492784
30 1455 182347 5.33841e-05 0.533841 0.502405 -0.0113144 0.000475311 0.00319017 182347 5.33841e-05 0.533841 0.502405
60 1454 -2.94696e+06 -0.00086338 -8.6338 0.502063 -0.011707 -0.000412955 0.00194624 -2.94696e+06 -0.00086338 -8.6338 0.502063
120 1444 -1.00756e+07 -0.00296734 -29.6734 0.466759 0.0987821 -0.00652516 0.0597687 -1.00756e+07 -0.00296734 -29.6734 0.466759
240 1423 -1.304e+07 -0.003891 -38.91 0.459592 0.0993935 -0.00764295 0.0325947 -1.304e+07 -0.003891 -38.91 0.459592

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_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 13 262 0.0035811 35.811
09:20 59 2983 0.00429978 42.9978
09:40 126 7025 0.00688839 68.8839
10:00 109 4966 0.002048 20.48
10:20 203 12418 0.00111933 11.1933
10:40 179 10419 0.0018796 18.796
11:00 162 10891 0.000730109 7.30109
11:20 109 7441 0.00115221 11.5221
11:40 134 8907 0.00278319 27.8319
12:00 135 7635 0.00488331 48.8331
12:20 131 6690 0.00387709 38.7709
12:40 110 5334 0.00215399 21.5399
13:00 144 7696 -0.000407969 -4.07969
13:20 194 11234 0.00039888 3.9888
13:40 213 12091 0.00222712 22.2712
14:00 205 11091 0.00543221 54.3221
14:20 119 6062 0.0053896 53.896
14:40 60 2219 0.0110263 110.263
15:00 42 1947 0.0204451 204.451
15:20 0 0

Z-Score-Quality Scatter + Regression

Model Buy/Sell Scatter + Regression

Notional Periodicity Analysis

Intraday periodicity in total notional position: inference tail asymmetry & rolling z-score window effects

Intraday Notional & Execution Pattern

Inference Tail Asymmetry (before z-score)

Rolling Z-Score Window Effect

Counterfactual: Cross-Sectional Z vs Rolling Z

Summary Table

Hourdata σpool σamp (d/p)Buy sig%Sell sig%B/S ratiopos >3σ%neg >3σ%pos/neg
09:000.08020.09430.8500.329%0.452%0.730.332%0.475%0.70
10:000.10020.08651.1581.126%1.925%0.580.192%0.455%0.42
11:000.10970.09801.1191.126%1.645%0.680.221%0.279%0.79
12:000.10850.10741.0110.705%0.833%0.850.247%0.234%1.06
13:000.10260.10740.9550.522%0.754%0.690.253%0.502%0.50
14:000.10370.10530.9840.606%1.108%0.550.361%0.729%0.49
15:000.09070.10300.8810.369%0.919%0.400.311%0.855%0.36

Notes:

z_score_threshold = 2.500, z_score_time_window = 120 bars, coins = 200

data σ = model_pred cross-sectional std at that hour

pool σ = rolling shared window std (z-score denominator)

amp = data σ / pool σ (>1 → z-scores inflated, <1 → suppressed)

B/S ratio = buy signal / sell signal (>1 → net long entry dominant)

pos/neg >3σ = raw model_pred tail asymmetry before z-score transformation