Skip to content
All strategies

Strategies

Korean Preferred-Share Discount Snap-Back: buy a KRX preferred share at the next open after its log price ratio to the same company's common share falls <=-2 sigma below its 120-session mean, exit when the ratio z-score is back to >=0 or after 20 sessions (17 pref/common pairs, KREQ 1-DAY, long-only event panel, common shares are signal-only)

Outcome: Verifying

KoreanPrefDiscountSnapBack

Korean Preferred-Share Discount Snap-Back: buy a KRX preferred share at the next open after its log price ratio to the same company's common share falls <=-2 sigma below its 120-session mean, exit when the ratio…

Hypothesis

Original Research Lead hypothesis (not seeded). Venue KREQ (Korea, 0.0% of the corpus; no preferred/common relative-value idea has ever been tested here). MECHANISM: about 17 Korean large caps list a non-voting preferred share (code ending 5/7/9/K) beside the common share. The two claim the same cash flows (the pref usually pays a slightly higher dividend), so their log price ratio s = ln(P_pref / P_common) is a slow-moving discount driven by governance and dividend expectations. Preferred shares are thinly……Show moreShow less

Original Research Lead hypothesis (not seeded). Venue KREQ (Korea, 0.0% of the corpus; no preferred/common relative-value idea has ever been tested here). MECHANISM: about 17 Korean large caps list a non-voting preferred share (code ending 5/7/9/K) beside the common share. The two claim the same cash flows (the pref usually pays a slightly higher dividend), so their log price ratio s = ln(P_pref / P_common) is a slow-moving discount driven by governance and dividend expectations. Preferred shares are thinly traded and held mostly by retail, so a burst of one-sided retail selling or index/ETF flow into the common share can push the discount far out of its normal range without any change in fundamentals. Arbitrage cannot close it directly: KRX has a short-sale ban/uptick regime and retail cannot short the common, so the gap reverts slowly as the pref's own liquidity comes back. That makes it an event a long-only cash account can harvest. KREQ cannot short, so the trade is long the pref only, and it carries the company's market beta. That is stated openly and handled by the pre-registered relative diagnostic below. RULE: for each pair, on each completed daily bar compute s_t = ln(close_pref / close_common), its 120-session rolling mean m and std sd (both legs must have bars that session; skip it otherwise), and z = (s - m)/sd. ENTRY: when z <= -2.0 on session t's close and the pref is not already held, buy the pref at the open of session t+1 (platform next_open_fill on a session venue, supported). EXIT: sell at the next session's open after the first close with z >= 0, or after 20 sessions held, whichever comes first. SIZING: 8% of equity per position, at most 6 concurrent positions (max gross 48%, unlevered cash, KRW account). Board lots do not apply on KREQ, so use whole shares. If more than 6 pairs trigger at once, take the most negative z first. Risk control is route (b): signal/time exit plus capped sizing, with no single position above 8% of equity. PRE-STUDY (Research Lead, frozen rule above, catalog 1-DAY bars 2018-01-02 to 2026-10-30, entry and exit at next open, 0.24% round-trip cost = KREQ 0.0186% buy + 0.2186% sell tax/fee): 310 trades on 275 distinct entry dates in 97 distinct months, mean net pref return +2.81% per trade (median +0.62%), win rate 54%, PF 1.95, mean hold 18 sessions. The mechanism-specific part, pref minus common over the same open-to-open window, averaged +1.21% per trade and was positive in 8 of 9 calendar years (only 2026 was negative, -1.5%). The long-pref total return was negative in 2020 and 2022 (market beta). Sensitivity on the same grid: z -1.5 gives 524 trades with relative +0.96%; z -2.5 gives 151 trades with +1.14%; a 40-session clock gives 240 trades with +1.42%. The sign is stable, which suggests no cliff. Evidence count: per lessons L238/L263, the independent unit is the entry date (275) or month (97), not the 310 per-name trades. DIAGNOSTIC THE DEVELOPER MUST LOG: for every trade, also record the common share's open-to-open return over the identical window (commons are subscribed as signal legs and never traded), so the analyst can report the mean pref-minus-common spread capture. Pre-registered falsification: if the backtest is profitable but the mean pref-minus-common capture is <= +0.3% per trade, or is positive in fewer than 6 of 9 years, the premise (discount reversion) is NOT shown, and the PnL is Korean equity beta.

Fills the most neglected parts of the corpus: KREQ is 0.0% of experiments, and no dual-class/preferred-share mechanism has ever been tested on any venue. It is an event-driven design (15% survival family) with a pure OHLCV input that exists on this venue from 2018. It avoids the anti-patterns: it is not momentum, not an indicator-state system, not crypto, and the per-trade capture is several times the round trip. Lesson L236 asks for a fixed-rule forward-return pre-study before moving a mechanism to equities; this mechanism is new, and the pre-study above was run on the exact names anyway. Lessons L238/L263 count evidence in distinct dates and months; both counts are pre-registered (275 dates, 97 months). Following the JPEQ semiconductor lesson, a relative (pref-minus-common) falsification test is pre-registered so beta alone cannot pass as the premise.

Implementation

Long-only KREQ 1-DAY event panel over 17 Korean preferred/common pairs. Each close, for every pair where both legs printed, z = (s - mean)/sample-std of s = ln(pref/common) over the last `lookback` (120) valid sessions, the current one included. Buy the pref when z <= -entry_z (2.0). The order is decided on the close and fills at the next session open (platform next_open_fill). Size is 8% of mark-to-market equity in whole shares, with at most 6 concurrent positions; with more candidates than free slots, the most negative z goes first. Exit at the next open after the first close with z >= exit_z (0), or after max_hold_sessions (20) sessions counted from the fill. Commons are signal-only legs and are never traded. Every closed trade logs `pref_trade_diag`: entry z, exit reason, the pref's fill-to-fill return, the common's open-to-open return over the same sessions and the pref-minus-common spread capture. Running totals are kept in spread_trades / spread_capture_sum / spread_capture_pos.

Implements the frozen rule as written. Routing: 005935 (Samsung Elec pref) is the primary; the other 16 prefs are traded extra legs; all 17 commons are in extra_bar_types + signal_only_bar_types and are not in extra_instruments, so they can never be traded. Same venue and calendar, so the alignment barrier processes a session once every leg's bar is in; a pair whose leg did not print that session gets no z and is managed by the time clock only. The hypothesis' `instruments` list names 10 pairs, but its title and……Show moreShow less

Implements the frozen rule as written. Routing: 005935 (Samsung Elec pref) is the primary; the other 16 prefs are traded extra legs; all 17 commons are in extra_bar_types + signal_only_bar_types and are not in extra_instruments, so they can never be traded. Same venue and calendar, so the alignment barrier processes a session once every leg's bar is in; a pair whose leg did not print that session gets no z and is managed by the time clock only. The hypothesis' `instruments` list names 10 pairs, but its title and entry_logic name 17, so all 17 are included. Execution: a market order decided at the close fills at the next session open (next_open_fill, supported). Hold length is counted from position.ts_opened and is restart-safe; no state drives decisions other than the bar buffers (500 bars >= max lookback 250). Risk route (b): signal/time exit, at most 8% of equity per position, 48% max gross, unlevered CASH, no stop as specified. A KREQ price-limit refusal is not retried within the session; the next close re-evaluates. Optimization parameters follow the plan exactly (entry_z, lookback, max_hold_sessions tunable; exit_z, position_pct, max_concurrent fixed); no clamps, so there are no _param_bounds. Caveat: dividends are not in PnL, and ex-dividend drops on prefs may create false entries around year-end record dates. That is a hypothesis risk I have left unfiltered, as specified.

Backtest and paper results are hypothetical. Trading involves risk of loss.