Skip to content
All strategies

Strategies

Tokyo Sector-Peer Idiosyncratic Down-Shock Rebound: buy a Japanese large cap (banks / trading houses / autos / insurers) at the next TSE open after a session in which its beta-adjusted return fell >=2 sigma below its own sector peer basket, fixed 5-session open-to-open clock (JPEQ 1-DAY, 23-name pre-registered panel, long/flat, unlevered, same-date entries capped)

Outcome: Abandoned

JpeqSectorPeerBetaIdioDownShockRebound

Outcome Summary

This Research Lead hypothesis tested whether the peer-relative down-shock rebound, already promoted on ASX and TSX miners, also works on a 23-name Japanese large-cap panel. The code was judged faithful: long-only, a 5-session hold and about 7.4% of equity per leg. On the development period, though, the edge was about the size of the modelled spread and impact: 0.072% net per trade, PF 1.05, Sharpe 0.13, with gains confined to 2021-2022 and losses in stress windows such as COVID 2020. The analyst abandoned it at backtest review on iteration 1 before any optimization; the rejection covers only this Tokyo panel, not the miner versions.

Hypothesis

Original Research Lead hypothesis (not seeded). It is a breadth test of the peer-relative down-shock template that lesson L266 says is worth testing on JPEQ. That template was promoted on iteration 1 on ASX gold miners (288 trades, PF 1.19, DD 8.8%) and on TSX miners (337 trades, PF 1.27). It also worked as a BTC residual on Bybit and Hyperliquid perps. JPEQ is almost unused (7 of 5,011 experiments), and no Japanese sector-relative rule has been tested. The one JPEQ failure (US SMH shock diffusion into Tokyo chip……Show moreShow less

Original Research Lead hypothesis (not seeded). It is a breadth test of the peer-relative down-shock template that lesson L266 says is worth testing on JPEQ. That template was promoted on iteration 1 on ASX gold miners (288 trades, PF 1.19, DD 8.8%) and on TSX miners (337 trades, PF 1.27). It also worked as a BTC residual on Bybit and Hyperliquid perps. JPEQ is almost unused (7 of 5,011 experiments), and no Japanese sector-relative rule has been tested. The one JPEQ failure (US SMH shock diffusion into Tokyo chip names) used a cross-market raw signal with a short arm; this design drops both. MECHANISM: a single-name drop that its close sector peers do NOT share is most often liquidity-driven rather than news-driven. Examples are a block sale, a fund rebalance, a foreign-investor de-risking of one name, or a stale-news overreaction. Japanese large caps have well-documented short-horizon reversal, and the peer residual removes the sector/macro component that tends to persist (a BOJ rate move hits every bank together; that should not trigger). UNIVERSE (fixed in advance; all names in config/jp_equities_universe.txt with daily bars from 2018-01-04; four sector clusters, each name's peer basket is the equal-weight mean of the OTHER names in its cluster): BANKS/BROKERS 8306 MUFG, 8316 SMFG, 8411 Mizuho, 8308 Resona, 8309 Sumitomo Mitsui Trust, 8604 Nomura, 8601 Daiwa, 8591 ORIX; TRADING HOUSES 8058 Mitsubishi Corp, 8001 Itochu, 8031 Mitsui & Co, 8053 Sumitomo Corp, 8002 Marubeni, 8015 Toyota Tsusho; AUTOS/PARTS 7203 Toyota, 7267 Honda, 7269 Suzuki, 5108 Bridgestone, 6902 Denso; NON-LIFE/LIFE INSURERS 8766 Tokio Marine, 8725 MS&AD, 8630 Sompo, 8750 Dai-ichi Life. All 23 have been continuously listed over the whole history, so there is no delisting survivorship inside the window. The selection itself is today's top caps (a known bias, stated in risk_factors), and the trigger is residual to peers that share that bias. SIGNAL (computed at each session close, causal): r_i = log close-to-close return; peer_t = mean r of the other cluster members; beta_i = rolling 120-session OLS beta of r_i on peer, known as of the PREVIOUS session; resid_i = r_i - beta_i * peer_t; z_i = resid_i / std(resid_i over the previous 60 sessions, excluding today). EXECUTION: session venue, so a decision at the close fills at the NEXT session's open (next_open_fill, supported); the exit is also a market order decided at the close of the 4th session after entry, filling at the 5th session's open (open-to-open 5-session clock). No stops are needed for risk control: route (b), signal/time exit with capped unlevered sizing. PRE-REGISTERED EVENT COUNT, measured with the frozen baseline rule on these exact 23 names over 2018-01 to 2026-10 (gross, before costs, before concurrency caps): 1,192 qualifying name-events on 737 distinct trigger sessions. Mean 5-session open-to-open return +0.65%, median +0.46%, hit rate 55%. By year: 2018 -0.43% (52), 2019 -0.16% (140), 2020 +0.03% (172), 2021 +0.96%, 2022 +1.00%, 2023 -0.08%, 2024 +1.99%, 2025 +1.03%, 2026 +1.01%. Early years are weak, so the analyst should expect losing years. This measurement only sizes the evidence; it is not a performance claim. After the concurrency caps, roughly 900-1,000 trades on roughly 650 distinct entry dates are expected. Per lesson L238, the honest sample is the distinct entry dates (~650), not the per-name trade count. COSTS: JPEQ has zero commission and no transaction tax; the platform models spread+impact, about 0.05-0.10% round trip on these mega caps. Arithmetic: 0.65% gross minus ~0.10% gives ~0.55% net per trade, 5.5x the round trip. Accounts and metrics are in JPY (USD view in fx_report). Board lot is 100 shares: size with self.lot_size() and round down. Daily price limits are enforced by the venue.

negative_expectancy: The Research Lead's 23-name JPEQ operationalization of the peer-relative down-shock rebound fails on the development period (2019-01 to 2025-01-24). Over 570 closed trades on 432 entry dates, the net average trade return is 0.072% of notional, below the JPEQ floor of about 0.11-0.15%. Modelled execution cost is about 0.073% per trade, so the gross edge is only about 0.145%, roughly 1x cost. Profit factor is 1.05 and Sharpe 0.13, with a 95% CI of -0.71 to 0.89 that includes zero. Total return……Show moreShow less

negative_expectancy: The Research Lead's 23-name JPEQ operationalization of the peer-relative down-shock rebound fails on the development period (2019-01 to 2025-01-24). Over 570 closed trades on 432 entry dates, the net average trade return is 0.072% of notional, below the JPEQ floor of about 0.11-0.15%. Modelled execution cost is about 0.073% per trade, so the gross edge is only about 0.145%, roughly 1x cost. Profit factor is 1.05 and Sharpe 0.13, with a 95% CI of -0.71 to 0.89 that includes zero. Total return is +3.3% over six years and drawdown 13.1%. Three of six years lost money, and only 2021-2022 earned. This matches lesson L253: at least 100 trades, PF within 0.05 of 1 and Sharpe below 0.35. Retuning z_entry, hold_sessions or resid_std_lookback is a parameter change, not a mechanism change, and cannot be expected to lift a gross edge that sits near cost above the floor. The implementation is faithful: long-only, 5-session hold, about 7.4% deployment per leg. The pre-registered +0.65% gross per event did not hold on this sample (2024: +0.07% net realised against +1.99% gross measured). The cause of that gap was not verified. This rejects this Tokyo bank/trading-house/auto/insurer panel; it is not a verdict on the ASX/TSX miner versions that were promoted. Nothing is concluded about the held-back period.

Implementation

JPEQ 1-DAY panel of 23 pre-registered Tokyo large caps in 4 sector clusters (banks/brokers, trading houses, autos/parts, insurers). At each session close it computes each name's log return, the leave-one-out equal-weight cluster peer return (>=3 peers required), a 120-session OLS beta on the peer return through t-1 (clipped to [0.3, 2.0]), the beta-adjusted residual, and its z against the std of the previous 60 residuals (today excluded). A name with z <= -2.0 and a negative raw return gets a market BUY decided……Show moreShow less

JPEQ 1-DAY panel of 23 pre-registered Tokyo large caps in 4 sector clusters (banks/brokers, trading houses, autos/parts, insurers). At each session close it computes each name's log return, the leave-one-out equal-weight cluster peer return (>=3 peers required), a 120-session OLS beta on the peer return through t-1 (clipped to [0.3, 2.0]), the beta-adjusted residual, and its z against the std of the previous 60 residuals (today excluded). A name with z <= -2.0 and a negative raw return gets a market BUY decided at the close, filling at the next TSE open (next_open_fill). Triggers are ranked most-negative z first, with at most 3 new entries per date and 6 open positions. Each position is 8% of mark-to-market equity, rounded down to whole 100-share board lots via lot_size(). Exit is a market SELL decided at the close of the 5th session counted from the entry session (entry session = 1), so it fills at the following open: a 5-session open-to-open hold. The sell is resubmitted each close until flat, which covers a refused order at a price-limit lock. No stop, no target, no signal exit, long/flat, unlevered.

Implements the hypothesis rules one-to-one with its exact parameter names. The fixed values and tunable domains come from optimization_plan, and the clamps on z_entry, hold_sessions and resid_std_lookback are declared in _param_bounds. All 23 names from the description are configured. The declared instruments list omits 8725, 8630 and 8750, but the insurer cluster needs them as peers and trade legs. 8306 is the primary and the other 22 are extra legs, all on one JPEQ session calendar, and every leg exists as a……Show moreShow less

Implements the hypothesis rules one-to-one with its exact parameter names. The fixed values and tunable domains come from optimization_plan, and the clamps on z_entry, hold_sessions and resid_std_lookback are declared in _param_bounds. All 23 names from the description are configured. The declared instruments list omits 8725, 8630 and 8750, but the insurer cluster needs them as peers and trade legs. 8306 is the primary and the other 22 are extra legs, all on one JPEQ session calendar, and every leg exists as a 1-DAY catalog bar type. A z is produced only once the full 120-session beta window and the full resid_std_lookback residual window exist (warmup 182 bars, within the plan's 245). Beta and sigma use rows through t-1 only. Today's residual is stored only after its z is computed. Panel rows live in a non-persisted store, rebuilt from the bar buffers after a restart. The hold is counted from position.ts_opened against session bar stamps, so it is restart-safe. Risk route (b): time exit plus capped sizing, 8% per leg and at most 48% gross at 1x. A name that adds roughly 30% annual vol contributes about 2.4% vol, far inside the conservative risk profile. A 10% adverse trade costs about 0.8% of equity. Expected frequency from the pre-registered count is about 1,192 raw events, roughly 135 a year, so the entry gate fires many times a year.

Verification Results

No code change. Align the contract's instruments list with the 23-name description if Layer 1.5 or downstream tooling depends on it.

research_contract.instruments lists 20 names and omits 8725, 8630 and 8750. The hypothesis description and its UNIVERSE section name all 23, including a 4-name insurer cluster that cannot reach min_peers=3 without them. The config follows the description (23 legs), which is the faithful reading. The contract list is the inconsistent one, not the code.

Optional: exclude legs whose time exit fires at this close from `held`. The current behaviour is safe.

The concurrency count `held` includes positions whose exit is being submitted at this same close. Their slot frees at the next open, but it cannot be reused by an entry decided at this close. This is slightly more conservative than 'never more than 6 open', and actual exposure never exceeds the cap.

Optional: keep rolling sums per name to make beta and sigma O(1) per bar.

Runtime: _beta and _resid_sigma rescan up to 120 rows for each of 23 names on every bar. The sandbox flagged runtime_review_required, with an estimated baseline of about 309s. This is a resource concern, not a correctness issue.

Advisory only. The pre-registered gross figure of +0.65% per 5-session event is concentrated in 2021-2026, and 2018-2020 and 2023 are flat to negative, so expect losing years and some regime dependence. The universe is today's top-cap names, so the analyst should compare results with an equal-weight buy-and-hold of the panel. Late-March and late-September ex-dividend drops are only partly cancelled by the peer basket, because dividends are not in PnL. Per lesson L211, check that the realised deployment is about 8% per leg.

Backtest Review

Sharpe
0.23
Total return
9.45%
Max drawdown
13.15%
Trades
729
Win rate
53.8%
Profit factor
1.11

The code implements the hypothesis faithfully. All 570 trades are long. Holds run 7 calendar days (5 sessions open-to-open) in 423 of 570 trades; longer ones span holidays. Realised deployment is about 7.4% of equity per leg, close to the 8% target. The sample covers 432 distinct entry dates.

Sample is reliable (metrics_reliable, 1,160 effective daily observations) and drawdown of 13.1% is inside the pre-registered 15%.

Net per-trade return is 0.072% of notional, below the JPEQ fee floor (round trip plus 0.05 points, about 0.11-0.15%). Modelled spread and impact take about 0.073% per trade, so the gross edge (about 0.145%) is roughly 1x cost, not the 5.5x the hypothesis expected.

Profit factor is 1.05, Sharpe 0.13 (95% CI -0.71 to 0.89), total return 3.3% over 6 years, Calmar 0.04, and the longest drawdown lasted 952 days.

Three of six full years lost money (2019 -1.7%, 2020 -3.2%, 2023 -2.9%). By entry year, mean net trade return was -0.25% (2019), -0.43% (2020), +0.71% (2021), +0.58% (2022), -0.42% (2023) and +0.07% (2024). The edge is confined to 2021-2022.

The development sample does not reproduce the pre-registered event study. For 2024 the study measured +1.99% gross per event; the backtest earned +0.07% net per trade. The likely cause is the concurrency caps and z-ranking selecting different events, but this was not verified.

Losses concentrate in stress windows: COVID 2020 -10.5%, SVB 2023 -2.2%, yen-carry Aug 2024 -2.6%. Return skew is -0.99 and kurtosis 19.

Outcome Summary

Before porting the peer-relative down-shock template to a new market, check that the pre-registered gross event edge survives concurrency caps and z-ranking. Here the +0.65% gross per event shrank to about 0.145% gross per trade (for 2024, +1.99% measured vs +0.07% realised), and the cause was never verified.

At backtest review the analyst voted to abandon for negative_expectancy. Net per-trade return (0.072%) was below the JPEQ floor of about 0.11-0.15%, the gross edge of about 0.145% was only about 1x modelled cost, and the Sharpe CI included zero. This matched, so retuning z_entry, hold_sessions or resid_std_lookback was judged unable to fix it, and optimization never ran.

The strategy bought one of 23 pre-registered Tokyo large caps (banks/brokers, trading houses, autos/parts, insurers) at the next open after a session in which its beta-adjusted return fell at least 2 sigma below its sector peer basket, then held it for a fixed 5 sessions open-to-open, long/flat and unlevered. The bet was that single-name drops not shared by sector peers are liquidity-driven and rebound.

Over the full history (2019-01 to 2026-10) the backtest returned +9.4% in JPY (-23.6% in USD after the FX effect), with Sharpe 0.23 (95% CI -0.47 to 0.97), profit factor 1.11, 729 trades, an average of 0.22% of notional per trade and 13.1% max drawdown. On the development period reviewed (2019-01 to 2025-01), it made 570 trades on 432 entry dates with a net average of 0.072% per trade, Sharpe 0.13, PF 1.05 and +3.3% total return, and three of six full years lost money.

Abandon Reason

negative_expectancy: The Research Lead's 23-name JPEQ operationalization of the peer-relative down-shock rebound fails on the development period (2019-01 to 2025-01-24). Over 570 closed trades on 432 entry dates, the net average trade return is 0.072% of notional, below the JPEQ floor of about 0.11-0.15%. Modelled execution cost is about 0.073% per trade, so the gross edge is only about 0.145%, roughly 1x cost. Profit factor is 1.05 and Sharpe 0.13, with a 95% CI of -0.71 to 0.89 that includes zero. Total return……Show moreShow less

negative_expectancy: The Research Lead's 23-name JPEQ operationalization of the peer-relative down-shock rebound fails on the development period (2019-01 to 2025-01-24). Over 570 closed trades on 432 entry dates, the net average trade return is 0.072% of notional, below the JPEQ floor of about 0.11-0.15%. Modelled execution cost is about 0.073% per trade, so the gross edge is only about 0.145%, roughly 1x cost. Profit factor is 1.05 and Sharpe 0.13, with a 95% CI of -0.71 to 0.89 that includes zero. Total return is +3.3% over six years and drawdown 13.1%. Three of six years lost money, and only 2021-2022 earned. This matches: at least 100 trades, PF within 0.05 of 1 and Sharpe below 0.35. Retuning z_entry, hold_sessions or resid_std_lookback is a parameter change, not a mechanism change, and cannot be expected to lift a gross edge that sits near cost above the floor. The implementation is faithful: long-only, 5-session hold, about 7.4% deployment per leg. The pre-registered +0.65% gross per event did not hold on this sample (2024: +0.07% net realised against +1.99% gross measured). The cause of that gap was not verified. This rejects this Tokyo bank/trading-house/auto/insurer panel; it is not a verdict on the ASX/TSX miner versions that were promoted. Nothing is concluded about the held-back period.

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