KOSPI Backtest Dashboard

run_id: 20260323_ens2_best_tossenriched_z2p995_w120_hs1p5 generated: 2026-03-24T08:08:42.663478+00:00
exchangekospi
strategy_namelong_short_zscore_gtc_strategy
start_time2026-01-02T09:00:00+09:00
end_time2026-03-06T09:00:00+09:00
fee_rate0.001
plot_every_minutes60
candle_source/data/kospi_data/enriched_candle_toss_from_enricher
inference_source/shared/inference_kospi/top200_ens2_best_parquet_20260323

Performance

Metric Value
Total PnL 28.441M
Return per Unit Volume 141.65bp
Beta (Dynamic) 24.952M
Alpha (Dynamic) 3.490M
Alpha Return per Unit Volume 17.38bp
Sharpe (Annualized) 4.5961
Alpha Sharpe (Annualized) 1.8543
Trades 1,571
Daily Trade Notional 48.974M
Trading Days 41
Total Fee 2.008M
Avg Position Notional 98.856M
ROI (Avg Position) 28.77%
ROI (Peak Position) 25.87%
Max Drawdown -19.331M
Model Win Rate (120m) 53.87%
Hedge Win Rate (120m)

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 1.5
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.995
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 1571 1.07206e+06 0.000533913 5.33913 0.594526 0.01074 5.84909e-05 0.000384447 1.07206e+06 0.000533913 5.33913 0.594526
10 1571 855295 0.000425957 4.25957 0.569701 0.018053 -0.000499594 0.000765676 855295 0.000425957 4.25957 0.569701
20 1568 1.68306e+06 0.000840442 8.40442 0.554209 1.78352e-05 0.00108491 5.51519e-10 1.68306e+06 0.000840442 8.40442 0.554209
30 1567 3.70978e+06 0.00185572 18.5572 0.567326 -0.0139769 0.00296413 0.000247193 3.70978e+06 0.00185572 18.5572 0.567326
60 1559 3.33447e+06 0.00167494 16.7494 0.55805 0.0118292 0.00101068 0.000104796 3.33447e+06 0.00167494 16.7494 0.55805
120 1526 3.35549e+06 0.00171729 17.1729 0.538663 0.0953995 -0.00506828 0.00284757 3.35549e+06 0.00171729 17.1729 0.538663
240 1495 4.06017e+06 0.00211765 21.1765 0.53311 0.1282 -0.00650729 0.00259483 4.06017e+06 0.00211765 21.1765 0.53311

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

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 21 472 0.00975732 97.5732
09:20 19 279 0.0168347 168.347
09:40 21 1247 0.00618248 61.8248
10:00 35 751 -0.0132973 -132.973
10:20 48 688 -0.00207281 -20.7281
10:40 65 1074 0.00441207 44.1207
11:00 126 4271 -5.79684e-06 -0.0579684
11:20 73 1306 0.00911318 91.1318
11:40 52 663 0.00350661 35.0661
12:00 32 1173 0.000581538 5.81538
12:20 41 1336 0.010372 103.72
12:40 39 551 -0.0011851 -11.851
13:00 50 989 0.0013673 13.673
13:20 77 2735 -0.00300928 -30.0928
13:40 75 1717 0.000744813 7.44813
14:00 67 1873 0.00697518 69.7518
14:20 54 1418 0.0168305 168.305
14:40 37 1023 0.0109899 109.899
15:00 27 1370 0.00980899 98.0899
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.04910.06030.8140.114%0.041%2.750.355%0.143%2.48
10:000.06060.05331.1360.486%0.246%1.980.184%0.098%1.88
11:000.07700.06211.2390.536%0.691%0.780.075%0.152%0.49
12:000.07980.07431.0740.186%0.139%1.330.092%0.070%1.31
13:000.07210.07740.9310.116%0.075%1.540.157%0.096%1.64
14:000.06970.07310.9540.052%0.094%0.550.062%0.134%0.46
15:000.05220.06940.7520.018%0.039%0.460.252%0.338%0.75

Notes:

z_score_threshold = 2.995, 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