Strategies
KOSPI Large-Cap Idiosyncratic Down-Shock Rebound: buy a Korean large cap at the next Seoul open after a session in which its return fell >=2.5 sigma below its beta-adjusted peer basket, fixed 5-session clock, 6% per leg, max 3 new legs per date / 6 concurrent (KREQ 1-DAY, long/flat, unlevered, 33 common shares)
Outcome: Optimizing
KospiLargeCapIdioDownShockRebound
Sample is adequate for optimization: 504 closed long legs on 382 distinct entry dates in the development period (2018-07 to 2025-01). That supports trade-count-sized walk-forward windows well above the 20-trade target.
Hypothesis
Implementation
33-name KRX large-cap common-share panel on KREQ 1-DAY bars (primary 005930, 32 extra legs, every name both a tradable leg and a peer). At each session close, every listed name with bars on t and t-1 gets r = ln(C_t/C_{t-1}) and a peer return P = equal-weight mean of all OTHER names with a bar that day. beta = cov(r,P)/var(P) and sigma = std of (r - beta*P) come from the name's last resid_lookback (r,P) sessions ending at t-1, and z = (r - beta*P)/sigma. A name with z <= -z_threshold that is not held and has no entry in flight triggers. At most max_new_per_day names enter per date, most negative z first, and open plus in-flight legs stay <= max_concurrent. The market BUY is sized at position_pct x mark-to-market equity / close in whole shares, and fills at the next Seoul open (next_open_fill). The exit is a fixed clock: at the close of the hold_sessions-th session of that name's own bars (the fill session counts as 1), a market SELL of the full leg fills at the next open. No stop, no target, no signal exit. Long/flat, unlevered CASH account, KRW metrics.
Verification Results
None required.
min_bars_required() is overridden to resid_lookback+2 (static base_shadow warning). The override is deliberate and allowed: the base docstring says 'Override as needed', and the 500-bar buffer covers the maximum of 122. Bars below the minimum skip calculate_signal, but the first processed bar triggers _rebuild() from the buffers, so the windows come out complete.
Optional: exclude legs with _close_pending from held if exact slot accounting is wanted.
held counts legs whose exit SELL was submitted at today's close (they are still open until the next open). On an exit day this can reduce the free slots by up to the number of exiting legs, which is slightly more conservative than 'open-position count <= max_concurrent' after fills. The developer disclosed this, and it matches the promoted sibling panels.
Survivorship: the panel is today's KOSPI large caps, so judge the result on the excess over the peer basket, not on the raw return. The pre-registered excess (+0.70% per 5 sessions) is only about 2x the ~0.34% KREQ round trip, and 2022 was negative. Market-wide crashes cluster entries (3 per date cap). Separately, the sandbox took 221 s for 1,477 bars (runtime_review_required). Per-bar work is O(33 x lookback), so the cost is probably the 33-leg engine load rather than the strategy, but it is worth a look before 30-150 trials per window.
Backtest Review
- Sharpe
- 0.59
- Total return
- 26.66%
- Max drawdown
- 12.86%
- Trades
- 637
- Win rate
- 49.6%
- Profit factor
- 1.34
Sample is adequate for optimization: 504 closed long legs on 382 distinct entry dates in the development period (2018-07 to 2025-01). That supports trade-count-sized walk-forward windows well above the 20-trade target.
The trades implement the hypothesis: every leg is long, no date has more than 3 entries (the cap binds), 392 of 504 legs last 7 calendar days (5 sessions; longer ones span holidays), and size is 4-6% of equity per leg. Implied deployment is 14.71 / (504 x 0.504) = about 5.8% per trade, which matches the 6% rule, so the 12.9% drawdown is measured at the intended size.
Economics are positive after KREQ costs: avg_trade_return_pct 0.504% against the 0.45% KREQ floor, PF 1.24, Sharpe 0.48, total return +14.7%, max drawdown 12.9%, inside the pre-registered 22% constraint.
Worst leg was -30.4%, about 1.8% of equity at 6%. This matches the risk-route (b) design (time exit plus capped sizing).
The edge is thin and depends on the regime. Mean net trade return by entry year: 2018 +0.81%, 2019 +0.44%, 2020 +0.01%, 2021 -0.11%, 2022 -0.81%, 2023 +1.34%, 2024 +1.76%. Most of the profit comes from 2023-24, which are the years the survivorship caveat flags (today's winners in the panel). Benchmark-relative alpha is withheld in this view, so the peer excess the hypothesis says to judge on cannot be confirmed here. The analyst must read it after optimization.
The realized 0.50% net per leg is below the pre-study's implied about +1.2% net (1.55% gross mean minus 0.34% cost). Per-trade return is only about 1.1x the venue floor, not the 2x economics target. That soft floor will need to be met or waived later.
The March 2020 crash cost -6.5% in one month and 2022 cost -5.7%. Market-wide shocks still cluster losses despite the cap. The 949-day drawdown duration is long.
QA's survivorship concern is partly supported (raw returns rely on 2023-24); QA's runtime concern holds: 405 s per backtest x 90 trials per window is heavy but feasible.
Backtest and paper results are hypothetical. Trading involves risk of loss.