Skip to content
All strategies

Strategies

Tokyo Sector-Peer Idiosyncratic Down-Shock Rebound: buy a JPEQ large cap at the next Tokyo open after a session in which it fell >=2.5 sigma below its pre-registered sector-peer basket, fixed 5-session clock, long/flat, 10% per leg, max 4 concurrent and max 2 new per date (69 names in 12 peer groups, 1-DAY)

Outcome: Optimizing

JpeqSectorPeerIdioDownShockRebound

The trades match the mechanism: 560 closed trades, all long, on about 445 distinct entry dates. Each holds about 7 calendar days (5 sessions). Sizes are about 10% of equity, and 1 of 2 open slots is used on average.

Hypothesis

Original Research Lead hypothesis (not seeded). It moves the peer-referenced down-shock template (lesson 266) to a new venue: the ASX gold-miner version was promoted (288 trades, PF 1.19, DD 8.8%) and the TSX miner version is in the pipeline. JPEQ has only 5 experiments in the corpus, and its one prior failure (US-semis-to-Tokyo diffusion) failed on its SHORT arm and on a long arm built from today's chip leaders. This design is long/flat, spans 12 sectors and uses a peer-relative trigger, not a raw move.……Show moreShow less

Original Research Lead hypothesis (not seeded). It moves the peer-referenced down-shock template (lesson 266) to a new venue: the ASX gold-miner version was promoted (288 trades, PF 1.19, DD 8.8%) and the TSX miner version is in the pipeline. JPEQ has only 5 experiments in the corpus, and its one prior failure (US-semis-to-Tokyo diffusion) failed on its SHORT arm and on a long arm built from today's chip leaders. This design is long/flat, spans 12 sectors and uses a peer-relative trigger, not a raw move. MECHANISM: Tokyo large caps are held heavily by index and domestic institutional money that rebalances slowly. A sharp single-stock drop that is NOT shared by its direct sector peers (a guidance miss, a broker downgrade, a block sale or cross-shareholding unwind, a foreign fund's redemption selling) is usually a liquidity-demand shock rather than a sector repricing. Japanese retail contrarian buying and corporate buyback programmes absorb it over the next several sessions. PEER GROUPS (frozen; each name's reference is the equal-weight mean daily return of the OTHER names in its group): banks/brokers 8306 8316 8411 8308 8309 8591 8601 8604; insurers 8630 8725 8750 8766; trading houses 8001 8002 8015 8031 8053 8058; autos 7203 7267 7269 6902 5108; pharma 4502 4503 4507 4519 4568 4578; semis/components 8035 6857 6146 6920 7735 6723 6981 6762 6971; electricals 6501 6503 6701 6702 6752 6758 6954 6861 6594; telecom 9432 9433 9434 9984; real estate 8801 8802 8830; machinery 7011 7013 6301 6326 6367 6273; materials 4063 4004 4062 5401 5713 5801 5802 5803; transport 9020 9022 9101 9104. PRE-STUDY (close-to-signal, next-open entry, open-to-open 5 sessions later, 2018-01 to 2026-10, before costs): at 2.5 sigma there are 1,929 qualifying stock-events on 917 distinct event dates. The mean forward return is +1.21% (median +0.78%, 57.6% positive), and 2019 was the only negative year (-0.19%). Of that +1.21%, only +0.22% is the excess over the same peers' forward return. Most of the raw gain therefore comes from the peer basket also rising after the shock date, so this is a long-beta-tilted event trade, not a peer-neutral spread. That is why it is long/flat and unhedged: a peer-hedged spread would net only ~0.2% gross on two legs. At 2.0 sigma there are 3,847 events on 1,420 dates (+0.89% raw). That is the looser end of the range, not the baseline. COST ARITHMETIC: JPEQ charges no stamp tax; the modeled spread and impact on these liquid large caps is roughly 0.05-0.10% a round trip. A +1.2% gross 5-session capture is more than 10x that, and even the conservative half-capture (+0.6%) is 6x. CONCURRENCY (lesson 267): shocks cluster (up to 19 names on one date), so at most 2 new entries per date, chosen by the most negative residual z-score, and at most 4 open legs. Maximum same-date gross long exposure is 40% of equity. EXECUTION: the signal is computed on the daily close; the entry is a market order filled at the next Tokyo session's open (next_open_fill, supported). The exit is a market order decided on the close of the 5th session after entry, which fills at the 6th session's open, so every leg is held exactly 5 sessions open-to-open. Sizes are rounded down to the 100-share board lot with self.lot_size(). A name whose single lot exceeds the 10% budget (e.g. Keyence 6861, Tokyo Electron 8035, Disco 6146) is skipped, never rounded up. That rule is stated here, not a hidden filter. Orders into a locked daily price limit are refused by the venue rules; such an entry is skipped. SURVIVORSHIP: the JPEQ universe is today's ~100 large caps from Yahoo, not point-in-time TOPIX membership, so a long-only panel is biased upward by the names that stayed large. The peer-relative trigger compares survivors with survivors, but the forward return is raw. The analyst should read the 2018-2019 results (when today's leaders were less selected) as the honest check. Account and metrics are in JPY.

Under-represented venue (JPEQ 0.1% of the corpus; BINANCE at 48% is over quota) and no crypto exposure, so this is new data rather than re-mining BTC. The mechanism follows the one family with consistent first-iteration promotions (peer-referenced down-shock, fixed clock), applied to a market where it is untested. Lesson 263/267 design priors are applied: long/flat, capped same-date exposure, and distinct event dates pre-registered (917).

Implementation

JPEQ 1-DAY panel of 72 Tokyo large caps in 12 frozen sector peer groups (primary 8306, the other 71 as tradable extra legs, each also a peer reference). Each session close: residual = simple daily return minus the equal-weight mean return of the other names in its group that traded that day; z = residual / sample std of the name's previous vol_lookback (60) residuals, excluding today. Names with z <= -shock_sigma (2.5) and at least 60 sessions of residual history, not already held or pending, are ranked by z……Show moreShow less

JPEQ 1-DAY panel of 72 Tokyo large caps in 12 frozen sector peer groups (primary 8306, the other 71 as tradable extra legs, each also a peer reference). Each session close: residual = simple daily return minus the equal-weight mean return of the other names in its group that traded that day; z = residual / sample std of the name's previous vol_lookback (60) residuals, excluding today. Names with z <= -shock_sigma (2.5) and at least 60 sessions of residual history, not already held or pending, are ranked by z (most negative first). At most 2 new legs per date and at most 4 open legs (held + in flight). Long market BUY decided on the close fills at the next Tokyo open (platform next_open_fill). Size = floor(10% of mark-to-market equity / (signal close x board lot)) lots via lot_size(); a name whose single 100-share lot exceeds the 10% budget (e.g. 8035, 6861, 6146) is skipped. Exit: market SELL decided on the close of the 5th session counting the entry session as 1, filling at the next open, so each leg is held 5 sessions open-to-open; counted from the position's own open time (restart-safe). No stop, no target, no signal exit. Long/flat, unlevered, gross <= 40% of equity.

Implements the hypothesis rules as written: peer reference = mean of the OTHER group members with a bar that session, sigma over the prior vol_lookback sessions excluding today, 2.5-sigma trigger, 2-per-date and 4-concurrent caps with most-negative-z priority, next-open entry, 5-session open-to-open time exit, board-lot round-down with skip. Parameter names follow the optimization plan (tunable shock_sigma [2.0,3.0], vol_lookback [40,120], hold_sessions [3,8], clamped and declared in _param_bounds; position_pct,……Show moreShow less

Implements the hypothesis rules as written: peer reference = mean of the OTHER group members with a bar that session, sigma over the prior vol_lookback sessions excluding today, 2.5-sigma trigger, 2-per-date and 4-concurrent caps with most-negative-z priority, next-open entry, 5-session open-to-open time exit, board-lot round-down with skip. Parameter names follow the optimization plan (tunable shock_sigma [2.0,3.0], vol_lookback [40,120], hold_sessions [3,8], clamped and declared in _param_bounds; position_pct, max_concurrent, max_new_per_day and leverage=1.0 fixed). Risk control is route (b): time exit plus 10%-per-leg capped sizing (max 40% gross, 1x). The hypothesis lists 72 names (it says 69); all 72 are coded and each has daily bars from 2018-01, except 9434 (SoftBank Corp), whose bars start 2018-12-19. Because every same-timeframe leg binds the alignment barrier and JPEQ has no point-in-time listing calendar, the backtest window starts there, so most of 2018 is not covered. Not point-in-time: the universe is today's large caps, as the hypothesis states. Sizing uses the signal close as the open-reference price, because the next open is unknown at decision time. Residual history is a derived cache, rebuilt from the bar buffers after a restart. Position timing comes from position.ts_opened, so restarts change no decision.

Verification Results

Optionally keep a running sum and sum of squares per name instead of recomputing the std over the deque, and cache positions_open lookups per bar. No change to the rules is needed.

Runtime: the sandbox took 845 s for 1,474 bars, and the full-history baseline is estimated at about 1,136 s. The per-bar work is small: 72 legs, an O(vol_lookback) sigma per name, and _rebuild runs only on the first bar or when the primary misses a session. The cost is most likely the engine running 72 legs. This is a resource concern, not a correctness one.

None required.

The lot count is sized from the signal close, but the order fills at the next open. A gap up can push a leg slightly above 10% of equity, and a gap down slightly below. Risk branch (b) still holds: no position can approach 100% of equity, and 4 legs stay at about 40% gross. The hypothesis allows this ('open-reference price' is unknown at decision time) and the developer disclosed it.

No change. The analyst should note that the window starts 2018-12.

The hypothesis title says 69 names, but its peer-group lists contain 72. The code implements all 72 as listed, which follows the written rules. Because 9434 binds the alignment barrier, the backtest window starts 2018-12-19, not 2018-01.

The pre-study says only +0.22% of the +1.21% 5-session capture is excess over the peer basket. The rest is Japanese equity beta that follows idiosyncratic shock days, on a survivor universe (today's large caps). The sibling JPEQ 23-name peer down-shock run (JpeqSectorPeerBetaIdioDownShockRebound) was abandoned at 0.072% net per trade with PF 1.05. The analyst should check per-year results, especially 2018-2019 (the backtest effectively starts 2018-12-19 because 9434's history starts then), and compare raw returns with the same peers' forward return before reading the headline numbers as edge.

Backtest Review

Sharpe
0.99
Total return
56.99%
Max drawdown
13.63%
Trades
702
Win rate
56.4%
Profit factor
1.53

The trades match the mechanism: 560 closed trades, all long, on about 445 distinct entry dates. Each holds about 7 calendar days (5 sessions). Sizes are about 10% of equity, and 1 of 2 open slots is used on average.

Economics on the development period (2019-07 to 2025-04): 0.53% average net trade against the JPEQ floor of about 0.11-0.15%. Profit factor is 1.37, win rate 55%, Sharpe 0.73 (CI -0.10 to 1.57) and total return +28.5%. Drawdown is 13.6%, inside the pre-registered 15%.

Implied deployment per trade: 28.5 / (560 x 0.53) = about 9.6%, which matches the 10% leg size. The risk figures are therefore comparable with the floors.

Profit is not concentrated in one year. 2023 is the largest (about 1.49M of 3.34M JPY, 45%), below the 60% concentration flag. The years were 2019 +4.4%, 2020 -2.6%, 2021 -0.7%, 2022 +7.8%, 2023 +10.3% and 2024 +7.4%.

The sample is enough for trade-count-sized walk-forward windows: 560 trades against roughly 60 needed for 3 windows of 20.

QA's beta concern is plausible and is not yet resolved. The equal-weight basket of the same 72 names rose 154% over the window, about 17.7% a year, or about 0.33% per 5-session hold. The average trade of 0.53% therefore exceeds the basket's drift by only about 0.2%. That matches the pre-study's +0.22% peer excess and only just clears the fee floor. At about 19% average exposure, beta alone would explain roughly 3.4% of the 4.5% CAGR. The post-optimization analyst must judge alpha and information ratio against the equal-weight basket (withheld here), not raw return.

The trade loses in falling markets. It lost 8.8% in the COVID 2020 window with a 12.9% drawdown, and 2020-2021 were negative. That is consistent with a long-beta event trade.

Drawdown recovery took 943 days and Calmar is 0.33, so a deployer would face a long flat period.

Survivorship: the universe is today's large caps. The history the backtest uses starts 2019-07, because 9434's history only begins in 2018-12, so the pre-registered 2018 check year is not in the sample. 2019 was positive at +4.4%.

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