Skip to content

Strategy research

Hypotheses

Work with AI agents to define an edge, write strategy code, and keep a record of what was tested and why.

AUDCAD/NZDCAD 4h Confirmed Trend Pullback with Bounded Swing Risk

Derived by the Research Lead from the operator FX breadth 11 swing-pullback brief: test continuation after a confirmed pullback in AUDCAD and NZDCAD, independently long or short. The brief supplies the pair set, 4h……Show moreShow less

Derived by the Research Lead from the operator FX breadth 11 swing-pullback brief: test continuation after a confirmed pullback in AUDCAD and NZDCAD, independently long or short. The brief supplies the pair set, 4h decisions and 1–7 day horizon; the Research Lead supplies the EMA trend, pullback confirmation and risk rules. Baselines: trend_bars=60, pullback_bars=12, holding_days=5. Execute market decisions at the next eligible hourly open, using hourly replay for protective stops and 4h signals only. Build 4h OHLC from four complete close-stamped hourly bars in UTC bins ending 00/04/08/12/16/20 UTC; discard incomplete bins, including bins crossing market closures. Use the approved FX calendar and zoneinfo DST; never fill missing observations or closures. Prefer the registered per-pair source; record the cutover manifest, source receipt/checksum, timestamp normalization, first/last usable dates and coverage before evaluation. Native 4h bars may be used only if their alignment matches this definition. No historical coverage or deployed source flag was verified in this research step. Freeze the run’s actual FxCostContext and release identifier; require RELEASED spread and financing accounting for the campaign’s economic test. A HELD context is not a financing-inclusive result. Paper admission requires all normal evidence and risk gates, plus explicit disclosure that current FX paper accounting omits carry; reconcile modeled financing separately. Live testing remains demo-only pending account/risk binding and paper acceptance. No orders or research jobs are launched by this proposal.

JPY-Quoted Relative Currency Strength Basket with Netted Yen Risk, 4H

Derived by the Research Lead from the operator FX breadth 17 brief: test lagged relative currency strength across the six specified JPY crosses, buying stronger base currencies and selling weaker ones under one……Show moreShow less

Derived by the Research Lead from the operator FX breadth 17 brief: test lagged relative currency strength across the six specified JPY crosses, buying stronger base currencies and selling weaker ones under one portfolio risk budget. This is an operationalization, not an existing source strategy. Research choices are a volatility-normalized cross-sectional momentum score, two long and two short slots, synchronized 4-hour decisions and a multi-day holding clock. All legs share a JPY account, avoiding the mixed-quote capability failures. Execute at each leg's next eligible bar open; intrabar protective stops are not required by this signal-exit design. Build 4H inputs from validated close-stamped hourly FX observations if native validated 4H bars are unavailable, using the platform FX calendar and DST rules. No bar may cross a market closure; do not fabricate or forward-fill closed hours. Source cutover to Dukascopy must be evidenced per pair; do not assume that documented collector support establishes loaded coverage. Use only the common audited history ending 2026-11-03; record exact first/last timestamps, source and coverage before evaluation. Starting capital is the platform USD 100,000 equivalent converted to JPY by its recorded birth conversion; equity, sizing and primary PnL remain JPY. Freeze the actual execution cost context and its release/hash before any evaluation, preserving HELD/RELEASED qualifications. Normal evidence and promotion gates remain binding; paper admission requires those gates, and any eventual live test is demo-only pending explicit account/risk binding and paper acceptance. Do not launch jobs or alter daily-start/concurrency controls as part of this proposal.

FX Breadth 01: EURUSD and GBPUSD Hourly Pullback Reclaim with Independent Daily Trend

Derived by the Research Lead from the operator FX breadth 01 intraday-trend brief: test continuation after an hourly moving-average pullback, conditional on a separately calculated completed-daily-bar trend. This is a……Show moreShow less

Derived by the Research Lead from the operator FX breadth 01 intraday-trend brief: test continuation after an hourly moving-average pullback, conditional on a separately calculated completed-daily-bar trend. This is a distilled rule family, not an asserted profitable strategy. Research Lead completions are EMA definitions, reclaim trigger, daily slope, liquidity hours, fixed stop, eight-hour clock and equity-relative sizing. Both pairs trade independently, long or short, with shared parameters. Use 1-HOUR close-stamped bars and completed FX daily bars ending at 17:00 America/New_York. Decisions execute at each pair's next eligible hourly open; intrabar protective stops are platform-matched and need no exchange-hosted protection. Stops can exit before two hours; ordinary exits start after two hours, with eight hours baseline and twelve hours maximum. No performance pre-study was run. This is a research contract only; normal daily-start/concurrency controls and all evidence, risk and promotion gates remain binding. Existing user work takes priority. Paper requires passing those gates and runtime feed readiness; any later live testing is demo-only pending explicit account/risk binding and paper acceptance.

JPY-Cross 4H Swing Donchian Breakouts on GBPJPY and EURJPY

Derived by the Research Lead from the operator FX breadth 10 swing-donchian brief: test independent long/short prior-channel breakouts on GBPJPY.FX and EURJPY.FX using close-stamped 4-HOUR bars, targeting 2–15……Show moreShow less

Derived by the Research Lead from the operator FX breadth 10 swing-donchian brief: test independent long/short prior-channel breakouts on GBPJPY.FX and EURJPY.FX using close-stamped 4-HOUR bars, targeting 2–15 calendar-day swings. This is a partial-rule completion, not an imported fully specified system. Chosen defaults are a 30-bar entry channel, 12-bar exit channel, fixed 2% protective stop, 15-calendar-day maximum holding time, and up to 50% equity notional per pair. Protective or channel exits may occur before day 2; no minimum holding lock defeats risk control. Orders decided at a completed session bar close execute at the next eligible bar open; protective stops trigger intrabar in the platform, including gap-through fills. No exchange-hosted offline protection is required. Use the FX24_5 calendar and its proven DST-aware bar grid, never forward-fill closures. The code supports Dukascopy 4H history through the reviewed per-pair source-cutover path, but this task has not verified loaded source switches, cutover manifests, actual bar coverage or the deployed cost-context identity. Require those receipts before evaluation; do not silently downgrade to hourly or daily decisions. Historical Dukascopy coverage and paper availability are distinct. Paper admission requires normal evidence/risk/promotion gates and loaded feed acceptance; any later live test is demo-only pending explicit account/risk binding. This output starts no research worker or orders; subsequent jobs retain daily-start/concurrency controls and user-work priority.

FXI-Hedged A/H Twin Dislocation: buy the cheaper listing (A-share on CNEQ or H-share on HKEQ) of 11 dual-listed Chinese large caps when the log A/H ratio is >= 1.75 sigma from its 250-session mean, short FXI.USEQ against the long book, exit on convergence (|z| <= 0.25) or after 60 sessions (daily bars, cross-venue CNEQ + HKEQ + USEQ)

Derived by the Research Lead from Zhang & Urquhart, 'Pairs trading across Mainland China and Hong Kong stockmarkets' (International Journal of Finance and Economics, 2018), as summarised on BigQuant……Show moreShow less

Derived by the Research Lead from Zhang & Urquhart, 'Pairs trading across Mainland China and Hong Kong stockmarkets' (International Journal of Finance and Economics, 2018), as summarised on BigQuant (https://bigquant.com/wiki/doc/zNkp9XcBmh). The full paper PDF could not be read (HTTP 404), so only the abstract's findings were available. The page's only image is the BigQuant site favicon (a blue logo icon), not a chart, so it adds no evidence. Findings from the source: pairs trading inside either market alone earns no significant abnormal return; pairs trading ACROSS the mainland and Hong Kong markets earned about 9% a year in abnormal returns after risk and costs from 1996 to 2017; profitability varies over time and fell after 2012; and the strategy does best in long range-bound markets. The source attributes the edge to irrational demand combined with limits to arbitrage between the segmented markets. The rules below are the Research Lead's operationalization, not the authors' strategy. I use the cleanest cross-market pair available: the A-share and H-share of the SAME company, which are claims on identical cash flows kept apart by capital controls and Stock Connect quotas. Constraint: CNEQ and HKEQ are both CASH accounts, so the rich twin cannot be shorted and a true two-leg spread cannot be expressed. Prior art: run 17503f75 held only the cheap twin with no hedge. Its analyst ruled that this unhedged form cannot measure A/H convergence, because the long leg carries full China beta, and asked for a hedged version. This hypothesis is that hedged version. A short in FXI.USEQ (the iShares China Large-Cap ETF, whose top holdings are H-shares of the same banks, insurers and oil majors) is sized against the long book, so the remaining P&L is the cheap twin's catch-up plus single-name noise, not China market direction. Universe: 11 verified A/H twins with 1-DAY bars on both venues from 2018-01-02: ICBC 1398.HKEQ/601398.CNEQ, CCB 0939/601939, Bank of China 3988/601988, Agricultural Bank 1288/601288, Bank of Communications 3328/601328, China Merchants Bank 3968/600036, Ping An 2318/601318, China Life 2628/601628, PetroChina 0857/601857, Sinopec 0386/600028, BYD 1211/002594. The universe is fixed. These are long-standing large-cap dual listings, all listed on both exchanges before 2018, so there is no survivorship selection within the test window. Execution: decisions are made at the close of the primary 2318.HKEQ daily bar (HK close 08:00 UTC); the A-share close (07:00 UTC) of the same date is already known by then. Every order fills at its own leg's next session open (next_open_fill, supported): HK legs at the next HK open, A-share legs at the next mainland open, and the FXI hedge at the next US open (13:30 UTC the same calendar day). The hedge is therefore placed about 12 hours before the HK/CN entry fills. That is a known timing mismatch and stays in the test. Each leg is held for many sessions (expected median ~15-25), so CNEQ T+1 is never binding. Costs: HKEQ about 0.22% statutory round trip (stamp duty on both sides) plus about 0.08% spread; CNEQ about 0.10% plus 0.04% spread; FXI about 0.03% spread plus modeled borrow. Precondition: the previous A/H run showed total_commission 0.0 on HKEQ/CNEQ. The backtest must show non-zero commissions on both venues before its economics are read. Risk route (b): signal exits and capped sizing. Each long twin is 8% of reference equity (max 8 concurrent, so 64% gross long), and the FXI short is at most 64% of reference equity. Unlevered per leg; the only margin used is Reg-T on the USEQ hedge.

Options-Confirmed BTC Shock Transmitted to Alts: when BTC's UTC-day move is >=1 sigma AND Deribit BTC DVOL reprices up >=1.5 sigma the same day, trade an equal-weight 12-alt OKX USDT-swap basket in BTC's direction for a fixed 7 days (OKX 1-DAY, long-short, 5% per leg, BTC is signal only)

Original Research Lead hypothesis. It extends the promoted DVOL-confirmation design (lesson L275: Deribit BTC/ETH linear perps, 69 trades, PF 1.89; ETH COIN-M, 80 trades, PF 1.59) in a new direction: the options market……Show moreShow less

Original Research Lead hypothesis. It extends the promoted DVOL-confirmation design (lesson L275: Deribit BTC/ETH linear perps, 69 trades, PF 1.89; ETH COIN-M, 80 trades, PF 1.59) in a new direction: the options market confirms the BTC shock, but the position is taken in the higher-beta ALT complex on a different venue (OKX), not in BTC itself. BTC is used ONLY as the signal leg; no BTC position is ever held. Mechanism: a BTC daily move that options traders actively reprice (DVOL jumps) is information, not noise; alt perps follow BTC with higher beta and slower, crowded positioning (leveraged alt longs unwind for days after a confirmed risk-off shock, and alt rotation lags a confirmed BTC risk-on day), so the continuation is larger in the alt basket than in BTC. SIGNAL (evaluated at each UTC daily close of BTCUSDT.OKX): z_move = BTC log return of the day / std of the prior 60 daily BTC log returns (excluding today); z_dvol = (DVOL_BTC at today's close - DVOL_BTC at yesterday's close) / std of the prior 60 daily DVOL changes (excluding today), read point-in-time with self.supp_as_of('DVOL_BTC') / supp_window. Long event: z_move >= +k_move AND z_dvol >= +k_dvol. Short event: z_move <= -k_move AND z_dvol >= +k_dvol (DVOL must RISE in both cases: the options market confirms the shock). TRADE: at that close, open the 12 alt legs equally in the event's direction (5% of equity notional per leg, 60% gross, 1x per leg), exit all legs on a fixed 7-day clock (7 daily bars after entry). While a basket is open, new events are ignored (no stacking, no flips). Execution: a market order at the signal bar's close; on this 24/7 market that is the faithful equivalent of a next-bar-open fill (capability next_bar_open_fill: use_equivalent). UNIVERSE: fixed pre-2021 OKX USDT swaps SOL, ADA, LINK, DOT, AVAX, ATOM, LTC, BCH, DOGE, XRP, FIL, ETC (no overlap needed with prior DVOL runs, which traded only BTC/ETH); a leg is traded only if listed_since >= 60 days at the event (universe_at/is_listed); missing legs are skipped, not reweighted. PRE-STUDY (Research Lead, OKX daily closes 2021-03..2026-11, 0.12% RT per leg cost incl. modelled spread, non-overlapping): 89 distinct qualifying trigger dates, 60 non-overlapping basket events (23 long, 37 short) at k_move=1.0, k_dvol=1.5; per-leg-average 7-day return after cost +2.08% (median +2.10%, win 57%, PF 1.83, t 1.82) vs +1.48% for BTC itself; long arm gross +4.6%, short arm gross +0.7% (the short arm is thin and is pre-registered separately); per year 2021 +3.1%, 2022 +1.9%, 2023 +0.9%, 2024 +3.7%, 2025 -0.4%, 2026 +6.9%. At 60% gross the event-level drawdown was 18.1% and the worst event -8.9% of equity. The stricter k_dvol=2.0 gave only 39 events (below lesson L275/L272's ~60 floor), so 1.5 is the baseline. The ETH-DVOL analogue was weak in the pre-study (PF 1.08) and is NOT part of this hypothesis. FEE ARITHMETIC: expected capture ~2.0% per leg per 7-day trade vs ~0.10% OKX round trip (+ ~7 days of 8h funding, typically +-0.1%): >10x cost. RISK CONTROL route (b): signal/time exit (fixed 7-day clock) with capped sizing, each leg 5% of equity, gross 60%, never above 100%; annualized in-market basket vol ~85% x 0.6 gross ~51%, time-in-market ~20%, so realized strategy vol ~25%, inside the conservative 60% band; no leg contributes >120% vol (5% x ~90-130% ≈ 5-7%); leverage 1x, liquidation buffer far beyond 8 daily moves. Fills over the 2021-03..now DVOL span only.

Moreira-Muir Volatility-Managed International Equity Sleeves: Monthly c/RV^2 Exposure on EFA, EEM and EWJ, c Calibrated Causally to Match Buy-and-Hold Volatility (USEQ 1-DAY, long/scaled, monthly rebalance)

Derived by the Research Lead from the quant.stackexchange question 'implementing Volatility Managed Portfolios' (axl, 2018) and the answer by Alex C, which cite Moreira & Muir (2017) Eq. 1: managed return_{t+1} = (c /……Show moreShow less

Derived by the Research Lead from the quant.stackexchange question 'implementing Volatility Managed Portfolios' (axl, 2018) and the answer by Alex C, which cite Moreira & Muir (2017) Eq. 1: managed return_{t+1} = (c / RV_t^2) * f_{t+1}, with c chosen so the managed series has the same standard deviation as buy-and-hold. The source gives the weighting rule and the calibration of c; it gives no market, sizing cap, execution or cost model, so those are the Research Lead's choices. NOTE: both linked pages (S1, S2) answered HTTP 403 and were NOT read; only the question and answer text quoted in the seed was used. MARKET CHOICE: US single-index versions of this idea (QQQ, IWM) and crypto long-only versions are already in the corpus, so this tests the textbook 'market factor' reading on three markets the corpus has not used for it: developed ex-US (EFA.USEQ, from 2001), emerging markets (EEM.USEQ, from 2003) and Japan (EWJ.USEQ, from 1996), each run as an independent sleeve. Each sleeve is one 'factor' f = the ETF's monthly return. RULES (per sleeve i, evaluated on daily bars): (1) At the close of the LAST session of each calendar month t, compute RV_t^2 = sum of squared daily log returns over the last rv_lookback_sessions sessions (baseline 21 = one month, the source's 'realized variance over the past month'). (2) Raw scale s_t = 1 / RV_t^scaling_power (scaling_power 2 = the source's variance rule; 1 = the common volatility variant, registered as a categorical alternative). (3) Calibration of c, made causal: the source runs a trial with c0 and rescales c by sigma_BH / sigma_0 over the SAME historical period, which uses future data if applied in-sample. Here c_t is recomputed every month from history only: over all completed months up to t (at least calib_min_months), sigma_BH = std of the sleeve's unmanaged monthly returns and sigma_0 = std of the trial series s_{k-1} * f_k (c0 = 1); c_t = sigma_BH / sigma_0. Before calib_min_months of history exist, the sleeve is flat. (4) Target weight w_t = c_t * s_t, as a multiple of the sleeve's base allocation (1/3 of equity), capped at max_sleeve_mult = 2.0 (so a sleeve's notional never exceeds 0.667 x equity and the book's gross never exceeds the Reg-T 2.0x). (5) Execution: the decision on the month's last close fills at the NEXT session's open (platform next_open_fill on USEQ, supported). Each rebalance closes the prior month's sleeve position and opens the new target size, so every sleeve-month is one closed trade (clean per-trade accounting; ~0.03-0.05% RT cost per sleeve-month on these ETFs). PRE-REGISTERED COMPARATOR (the source's own test): the equal-weight, monthly-rebalanced, unmanaged buy-and-hold of the same three ETFs at the same base allocation over the same span; the premise is that the managed book has higher Sharpe and positive alpha against it at matched volatility. Dividends are not in PnL on USEQ, which lowers both the strategy and the comparator equally (about 2-3%/yr on these ETFs); the comparison is unaffected in sign. No stop-loss: risk control route (b) - a time/rebalance exit every month plus capped sizing (no position above 0.667x equity; gross <= 2x). Intended book volatility ~15-18%/yr (matched to buy-and-hold of the basket by construction), leverage <= 2x.

Bayesian Parametric Portfolio Policy (BPPP) Sector Timing on USEQ: SPY market leg + nine SPDR sector-minus-SPY tilts, weights = posterior average of clipped linear policy on 50 own-return predictors, monthly rebalance (1-DAY bars, long-short, signal exit)

Derived by the Research Lead from Herculano, 'Bayesian Parametric Portfolio Policies' (arXiv 2602.21173, 2026): the paper's BPPP estimator, prior, learning-rate rule, clipped posterior averaging, position/gross limits……Show moreShow less

Derived by the Research Lead from Herculano, 'Bayesian Parametric Portfolio Policies' (arXiv 2602.21173, 2026): the paper's BPPP estimator, prior, learning-rate rule, clipped posterior averaging, position/gross limits and turnover penalty are ported from Sections 3.2, 4, 4.1, 4.3 and Appendix B; the ASSET SET is our choice. The paper times five Kenneth French long-short factors, which are not tradeable here, so we apply the identical machinery to nine tradeable zero-investment tilts: F_k = monthly return of sector ETF k minus monthly return of SPY, for k in {XLB, XLE, XLF, XLI, XLK, XLP, XLU, XLV, XLY} (all listed since Dec 1998; XLC/XLRE excluded for short history), with SPY as the market held at weight 1 (the paper's benchmark w_b = (1,0,...,0)). PREDICTORS: only the paper's factor-specific families (Appendix B.1), computed for each of the 10 series (SPY and the nine tilts) from their own monthly returns: (1) time-series momentum = mean of the last 12 monthly returns; (2) cross-sectional momentum = rank of those 12-month means across the 10 series mapped linearly to [-1,1]; (3) valuation = -(v_t - mean(v_{t-59..t})) with v_t the cumulative sum of log(1+R); (4) reversal = -(R_{t-1} - mean(R_{t-35..t})); (5) volatility = -std of the last 12 monthly returns. That is 50 predictors plus a constant (L=51), 9 x 51 = 459 coefficients against a 120-month window: the p >> T regime the paper is built for. The paper's 212 Open Source Asset Pricing anomaly returns are NOT used (we do not hold that dataset); the paper reports that removing them leaves 0.87 pp of timing (t=1.13), so this is a test of the factor-specific-only BPPP on a different asset set, not a replication of the 2.08 pp headline. Every predictor is standardised with an expanding mean/std of its own history up to t, winsorised at +/-3, set to 0 while missing, with the first 12 standardised rows set to 0 (paper's startup convention). EXECUTION: decisions at the close of the last session of each calendar month (session calendar helper), filled at the next session's open (platform next_open_fill on USEQ, supported). Monthly returns used for estimation are close-to-close of month-end sessions. SIZING (risk-control route (b): signal/rebalance exit, capped sizing, no stops): with final tilt weights w_k and fixed book_scale b=0.4, target notional SPY = b*(1 - sum_k w_k)*equity and sector k = b*w_k*equity (a positive w_k is long the sector and short the same notional of SPY, netted into the single SPY position). Because |w_k| <= 0.6 and sum|w_k| <= 1.5, the SPY leg ranges 0..1.0x equity, each sector leg at most 0.24x, and gross notional at most 1.6x equity (inside Reg-T 2x); annualised vol is expected around 7-10%. Platform default rebalance threshold: a leg is only traded when its target notional changes by more than 0.5% of equity, to avoid sub-cost fragments. Dividends are not in PnL (applies equally to all legs, roughly cancels on the tilts; the SPY leg is understated by ~1.5%/yr).

Equal-Weight SPY/AGG/GLD Fixed-Weight Portfolio, Monthly Rebalance (USEQ 1-DAY, long-only, no forecast)

Faithful port of the simplest proposed portfolio of Edén Wallberg & Karolin (arXiv 2610.36491), §3.2 eq. (1), §6.2 Table 4/Fig. 18/Table 28 and §6.4 Table 25 (reported SR 0.68 vs 0.52 for 60/40, MDD 24% vs 30%;……Show moreShow less

Faithful port of the simplest proposed portfolio of Edén Wallberg & Karolin (arXiv 2610.36491), §3.2 eq. (1), §6.2 Table 4/Fig. 18/Table 28 and §6.4 Table 25 (reported SR 0.68 vs 0.52 for 60/40, MDD 24% vs 30%; unverified): hold SPY, AGG and GLD at 1/3 each, rebalanced back to equal weights every month. No volatility control (the paper's proposed 'SPY/AGG/GLD equal weights' row reports sigma 0.09, i.e. the uncapped version; the capped variant is in Table 28). This is the paper's own claim that adding gold to an equity/bond mix and rebalancing monthly beats the 60/40; it is a fixed rule with no free signal parameter. Execution: decisions are made on the close of the LAST session of each calendar month (use src.strategies.helpers.sessions / the platform calendar, never hard-coded dates) and fill at the next session's open (platform next_open_fill on USEQ; the paper trades at the start of day t at the previous close, which is the same information set). Orders are whole-share market orders sized to target_weight x account equity; sells are sent before buys so cash covers the purchases. Leverage 1.0 (the Reg-T 2x margin is NOT used), long-only, no shorts; unallocated capital sits as cash. An asset is investable only once it has >=126 sessions of history (paper H_min) - point-in-time; nothing is bought before it lists.

Equal-Risk-Contribution Risk Parity of SPY/AGG/GLD(+IBIT point-in-time), Monthly, 8% Volatility Cap (USEQ 1-DAY, long-only)

Faithful port of the risk-parity rule from Edén Wallberg & Karolin (arXiv 2610.36491), §3.2 eq. (5) and §6.2 Tables 10-11 (SPY/AGG/GLD reported SR 0.74, LQ 0.64; with IBIT SR 0.84; unverified). Each month-end compute……Show moreShow less

Faithful port of the risk-parity rule from Edén Wallberg & Karolin (arXiv 2610.36491), §3.2 eq. (5) and §6.2 Tables 10-11 (SPY/AGG/GLD reported SR 0.74, LQ 0.64; with IBIT SR 0.84; unverified). Each month-end compute weights such that every asset contributes the same share of portfolio variance: w_i (Sigma w)_i equal for all i, w > 0, sum w = 1 (the paper solves min 0.5 w'Sigma w - rho*sum(log w) with rho = 1e-5, whose solution normalized to sum 1 is exactly the ERC portfolio; we solve ERC directly with a numpy cyclical coordinate-descent / Newton method, tolerance 1e-10 on the relative risk contributions). Then apply the volatility control theta = min(1, 0.08 / sqrt(w'Sigma w)). Unlike minimum variance, ERC must hold every asset, so the low-volatility AGG cannot dominate (paper's key finding for this method). IBIT.USEQ joins only after 126 sessions of listing history (the paper back-filled it with bitcoin from 2017; we cannot) - stated deviation. Covariance estimator, used by every rule that needs one (paper §4.2 and Appendix A, Table 17): daily simple returns from the 1-DAY USEQ closes; per-asset EWMA volatility with half-life hvar_halflife (paper 42 sessions); standardize each return by the previous day's EWMA vol and clip the standardized value at +/-4 (the paper winsorizes but gives no level: our choice); EWMA second-moment matrix of the standardized returns with half-life hcov_halflife (paper 126), rescaled to unit diagonal = correlation C; Sigma = D_sigma C D_sigma, annualized x252. The paper then fits a k=10 statistical factor model by EM on its 59-ETF universe; with at most 16 assets we use the EWMA matrix directly (the paper's Table 18 reports the simple EWMA estimator within 0.01 Frobenius distance of the factor model and calls it a fully reasonable substitute for small universes) - a named substitution. Only observations up to the decision bar are used. Execution: decisions are made on the close of the LAST session of each calendar month (use src.strategies.helpers.sessions / the platform calendar, never hard-coded dates) and fill at the next session's open (platform next_open_fill on USEQ; the paper trades at the start of day t at the previous close, which is the same information set). Orders are whole-share market orders sized to target_weight x account equity; sells are sent before buys so cash covers the purchases. Leverage 1.0 (the Reg-T 2x margin is NOT used), long-only, no shorts; unallocated capital sits as cash. An asset is investable only once it has >=126 sessions of history (paper H_min) - point-in-time; nothing is bought before it lists.

Momentum-Universe Markowitz: 1-Month Momentum Alpha into a Turnover-, Position- and 8%-Volatility-Constrained Long-Only Markowitz across 16 Cross-Asset ETFs (USEQ 1-DAY, monthly)

Faithful port (on the ETFs we hold) of the 'Momentum Universe under Markowitz' portfolio from Edén Wallberg & Karolin (arXiv 2610.36491), §3.3 eq. (10), §5.2 eq. (15), §6.3 Tables 20-24 and §6.4 Table 25 (reported SR……Show moreShow less

Faithful port (on the ETFs we hold) of the 'Momentum Universe under Markowitz' portfolio from Edén Wallberg & Karolin (arXiv 2610.36491), §3.3 eq. (10), §5.2 eq. (15), §6.3 Tables 20-24 and §6.4 Table 25 (reported SR 0.78, MDD 16%, unverified). The paper's Momentum Universe is its 59-ETF list minus the Country, Futures and Sector categories = 26 ETFs in Market, Government, Corporate, Global, Physical and Crypto. Our USEQ universe holds 16 of them: SPY, QQQ, IWM (Market); AGG, TLT, IEF, TIP, MUB (Government); LQD, HYG (Corporate); BNDX, EMB (Global); GLD, SLV (Physical); IBIT, ETHA (Crypto). VTV, VUG, MDY, SCHD, USMV, QUAL, LQDH, IAGG, VWOB and PPLT are not collected - stated deviation. Each month-end every investable asset gets alpha_i = log(close_t / close_{t-mom_lookback}) (paper L=21), and the portfolio solves: maximize alpha'w - kappa*||w - w_pre||_1 subject to sum(w) + c = 1, c >= 0, 0 <= w <= w_max (0.10), w'Sigma w <= sigma_tgt^2 (0.08^2), ||w - w_pre||_1 <= T_tgt (0.10), |w - w_pre| <= delta_w (0.05), kappa = 0.0005, where w_pre are the drifted weights before trading. The portfolio starts in cash and can only build 10% per month, as in the paper. Covariance estimator, used by every rule that needs one (paper §4.2 and Appendix A, Table 17): daily simple returns from the 1-DAY USEQ closes; per-asset EWMA volatility with half-life hvar_halflife (paper 42 sessions); standardize each return by the previous day's EWMA vol and clip the standardized value at +/-4 (the paper winsorizes but gives no level: our choice); EWMA second-moment matrix of the standardized returns with half-life hcov_halflife (paper 126), rescaled to unit diagonal = correlation C; Sigma = D_sigma C D_sigma, annualized x252. The paper then fits a k=10 statistical factor model by EM on its 59-ETF universe; with at most 16 assets we use the EWMA matrix directly (the paper's Table 18 reports the simple EWMA estimator within 0.01 Frobenius distance of the factor model and calls it a fully reasonable substitute for small universes) - a named substitution. Only observations up to the decision bar are used. Execution: decisions are made on the close of the LAST session of each calendar month (use src.strategies.helpers.sessions / the platform calendar, never hard-coded dates) and fill at the next session's open (platform next_open_fill on USEQ; the paper trades at the start of day t at the previous close, which is the same information set). Orders are whole-share market orders sized to target_weight x account equity; sells are sent before buys so cash covers the purchases. Leverage 1.0 (the Reg-T 2x margin is NOT used), long-only, no shorts; unallocated capital sits as cash. An asset is investable only once it has >=126 sessions of history (paper H_min) - point-in-time; nothing is bought before it lists.

Maximum-Diversification Portfolio of SPY/TLT/GLD(+IBIT point-in-time), Monthly, 8% Volatility Cap (USEQ 1-DAY, long-only)

Faithful port of the Most Diversified Portfolio rule from Edén Wallberg & Karolin, 'Simple Portfolios that Deliver Consistent Decent Returns' (arXiv 2610.36491), §3.2 eq. (6)-(7), Appendix A, §6.2 Tables 13-14 and the……Show moreShow less

Faithful port of the Most Diversified Portfolio rule from Edén Wallberg & Karolin, 'Simple Portfolios that Deliver Consistent Decent Returns' (arXiv 2610.36491), §3.2 eq. (6)-(7), Appendix A, §6.2 Tables 13-14 and the proposed portfolio of §6.4 Table 25 (SPY/TLT/GLD/IBIT, reported SR 0.90, unverified). Each month-end solve min_y y'Cy s.t. sum(y)=1, y>=0 on the correlation matrix C of the investable assets, map back w = (y/sigma) / sum(y/sigma), then apply the paper's volatility control theta = min(1, 0.08 / sqrt(w'Sigma w)) and hold theta*w in assets, the rest cash. IBIT.USEQ enters only after 126 sessions of its own listing history (mid-2024); the paper back-filled IBIT with bitcoin prices from 2017, which we cannot splice into a USEQ instrument, so for 2005-2024 this is the SPY/TLT/GLD MDP of Table 13 (reported SR 0.82) - stated deviation. Covariance estimator, used by every rule that needs one (paper §4.2 and Appendix A, Table 17): daily simple returns from the 1-DAY USEQ closes; per-asset EWMA volatility with half-life hvar_halflife (paper 42 sessions); standardize each return by the previous day's EWMA vol and clip the standardized value at +/-4 (the paper winsorizes but gives no level: our choice); EWMA second-moment matrix of the standardized returns with half-life hcov_halflife (paper 126), rescaled to unit diagonal = correlation C; Sigma = D_sigma C D_sigma, annualized x252. The paper then fits a k=10 statistical factor model by EM on its 59-ETF universe; with at most 16 assets we use the EWMA matrix directly (the paper's Table 18 reports the simple EWMA estimator within 0.01 Frobenius distance of the factor model and calls it a fully reasonable substitute for small universes) - a named substitution. Only observations up to the decision bar are used. Execution: decisions are made on the close of the LAST session of each calendar month (use src.strategies.helpers.sessions / the platform calendar, never hard-coded dates) and fill at the next session's open (platform next_open_fill on USEQ; the paper trades at the start of day t at the previous close, which is the same information set). Orders are whole-share market orders sized to target_weight x account equity; sells are sent before buys so cash covers the purchases. Leverage 1.0 (the Reg-T 2x margin is NOT used), long-only, no shorts; unallocated capital sits as cash. An asset is investable only once it has >=126 sessions of history (paper H_min) - point-in-time; nothing is bought before it lists.

Switching-Cost-Regularised Fitted-Q Factor Rotation on a Point-in-Time S&P 500 Panel: Monthly Choice Among Momentum, Low-Volatility, Long-Term-Reversal (value proxy) and Short-Term-Reversal Long-Short Books (USEQ 1-DAY, dollar-neutral)

Derived by the Research Lead from Cordoni, Sancetta and Zhao, 'Dynamic Strategy Selection' (arXiv 2307.04754, Sections 2-4 and Supplement S.5): each month, pick ONE of several competing factor strategies with a……Show moreShow less

Derived by the Research Lead from Cordoni, Sancetta and Zhao, 'Dynamic Strategy Selection' (arXiv 2307.04754, Sections 2-4 and Supplement S.5): each month, pick ONE of several competing factor strategies with a fitted-Q (iterated ridge regression) policy whose reward penalises switching by a regularising cost larger than the real trading cost. The selection algorithm, state design (12-month factor trends + market-cycle dummies), reward (quadratic utility of net return), gamma=0.9, cap B=0.5, GCV ridge grid, NA=10 simulated action sequences and 120-month expanding initial window are taken from the paper. What I changed and why: the paper's actions are Kenneth French MOM/HML/RMW plus a CRSP low-vol factor; we hold no fundamentals (book value, operating profitability) and no CRSP, so I build the four actions as PRICE-ONLY long-short books from our own point-in-time S&P 500 daily panel: (1) MOM = 12-1 month return winners minus losers; (2) DEF = low 252-day realized volatility minus high volatility (the paper's DEF, Novy-Marx style); (3) LTR = 36-to-12-month long-term reversal (past losers minus winners), the standard price-only proxy for HML value (De Bondt-Thaler / Fama-French LT_Rev); (4) STR = 1-month short-term reversal (last month's losers minus winners), replacing RMW which cannot be built without fundamentals. Universe AS OF EACH month-end rebalance: S&P 500 members at that date via index_member()/universe_at() (former members included where bars exist), at least 400 sessions of bars, then the 150 most liquid by trailing 60-session median dollar volume (close x volume). Each factor book: equal-weight long its top quintile (30 names) and equal-weight short its bottom quintile (30 names) of the 150-name universe. The strategy computes all four factor books' daily returns internally every month from the panel (whether held or not), so the factor-return history used for the policy is point-in-time and available from the first month the 36-month LTR lookback is filled (~2000 with membership from 1996). Only the CHOSEN book is traded. Fills: decision on the last session close of the month, market orders filled at the next session's open (platform next_open_fill, supported). Risk control route (b): signal/rebalance exit, dollar-neutral, gross 100% of equity (50% long / 50% short, 1.67% equity per name), no single position above 2% of equity, so leverage 1x gross on the Reg-T 2x account; a long-short price factor at this gross runs roughly 8-15% annual volatility, inside the conservative 60% band. Dividends are not in PnL (both sides, roughly offsetting for a dollar-neutral book; flagged). Short borrow costs are not modelled; universe is restricted to the 150 most liquid large caps to keep hard-to-borrow names out. Benchmarks the analyst must see beside the policy (pre-registered controls, computed by the strategy as report-only series): the Greedy policy (gamma=0, one iteration) and each fixed factor held throughout the same OOS span, as in the paper's Table 1.

Hong Kong Metal-Miner Idiosyncratic Up-Shock Continuation: buy an HKEX gold/base-metal miner at the next HK open after a session whose peer-beta-adjusted return rose >=2.5 sigma ABOVE its miner peer basket, fixed 10-session open-to-open clock (HKEQ 1-DAY, 9-name pre-registered panel, long/flat cash, 8% per leg, max 6 concurrent)

Original Research Lead hypothesis (not seeded). Venue HKEQ (Hong Kong main board, CASH account, long-only), which has almost no history in the corpus (a handful of large-cap basket tests, none on miners, none……Show moreShow less

Original Research Lead hypothesis (not seeded). Venue HKEQ (Hong Kong main board, CASH account, long-only), which has almost no history in the corpus (a handful of large-cap basket tests, none on miners, none event-driven on a commodity-homogeneous panel). MECHANISM: Hong Kong-listed Chinese metal miners (Zijin, Zhaojin, Shandong Gold, China Gold Intl, CMOC, MMG, Jiangxi Copper, Chalco, Hongqiao) share one dominant driver: metal prices and mainland industrial policy. A session in which ONE of them rises far more than the rest of the complex carries stock-specific news (resource/reserve upgrade, acquisition, output guidance, policy approval, southbound Stock Connect buying, index inclusion). In the HK H-share market this information diffuses slowly: mainland investors arrive through Stock Connect over several days, local coverage is thin, and the foreign holder base reprices late. So the idiosyncratic move CONTINUES rather than reverting. This is the opposite sign from the promoted TSX/ASX miner down-shock REBOUND panels; it is a continuation (underreaction) bet, the same family as the Bybit idiosyncratic attention-shock continuation that passed optimization, and it trades only the long side because HKEQ is a cash account. SIGNAL (at each HK daily close, all inputs known at that close): for each panel name i, r_i = close-to-close log return; peer_i = equal-weight mean log return of the OTHER panel names that have a bar that session; beta_i = 120-session rolling OLS slope of r_i on peer_i, lagged one session; residual e_i = r_i - beta_i * peer_i; z_i = e_i / (60-session rolling std of e_i, lagged one session). An UP-SHOCK is z_i >= z_entry (baseline 2.5) AND r_i > 0. EXECUTION: market order decided at the shock session's close, filling at the NEXT HK session open (next_open_fill, supported on session venues). Exit by market order decided at the close of the 9th session after the entry session, filling at the open of the 10th session after entry: exactly 10 sessions open-to-open. No stop, no target: risk-control route (b), time exit plus capped sizing (8% of equity per leg, at most 6 concurrent legs = 48% gross, unlevered cash). A new up-shock on a name already held is ignored (no pyramiding, no clock reset); a shock that arrives when 6 legs are open is skipped (if several qualify the same day with fewer free slots, take the largest z first). PANEL (fixed, pre-registered, all have HKEQ daily bars; 1787 from its 2018-09-28 HK listing): gold 2899.HKEQ (Zijin, gold+copper), 1818.HKEQ (Zhaojin), 1787.HKEQ (Shandong Gold), 2099.HKEQ (China Gold Intl); base metals 3993.HKEQ (CMOC), 1208.HKEQ (MMG), 0358.HKEQ (Jiangxi Copper), 2600.HKEQ (Chalco), 1378.HKEQ (Hongqiao). 2259 (Zijin Gold Intl) excluded: listed 2025-09, too short. HOMOGENEITY (L269): median full-sample correlation of each name's daily return with its leave-one-out peer basket = 0.72 (the promoted TSX miner panel is the comparable narrow-commodity design; US oil-complex measured 0.81). PRE-STUDY (Research Lead, frozen rule, these exact names, 2018-01 to 2026-08, gross of costs, open-to-open; reported only to pre-register sample size and sign — performance is judged by the backtest). Looks taken, all disclosed: down-shock rebound 3/5/10 sessions x z 2.0/2.5 (all NEGATIVE: at z<=-2.5, 5 sessions, -1.41% raw, t -2.55 — idiosyncratic shocks continue in this panel, which is what motivated the long-side continuation test); then up-shock continuation 3/5/10 x 2.0/2.5: H3 z2.0 +0.35% (t1.26), H3 z2.5 +0.58% (t1.46), H5 z2.0 +0.57% (t1.53), H5 z2.5 +0.84% (t1.57), H10 z2.0 +1.34% (t2.58), H10 z2.5 +2.00% (t2.70). The baseline is the H10/z2.5 cell: 300 events on 261 distinct entry dates (~30 dates/year, well above L271's ~60-event floor), mean raw +2.00%, mean peer-excess (trade minus equal-weight peer basket's same 10-session open-to-open return) +1.07%, raw mean positive in 8 of 9 calendar years and for 7 of 9 names; max same-date events 4. Every cell of the up-shock grid is positive and the effect grows with the horizon and the threshold, so the baseline is not an isolated spike, but it IS the best of 6 continuation cells after 6 rebound cells (12 looks): the analyst should apply that multiplicity. SURVIVORSHIP DISCLOSURE: names come from today's HK universe file; all nine were large, listed HK miners in 2018 (1787 from its 2018-09 listing), and no miner that collapsed is in the catalog, so the long arm may carry selection bias. Control: the backtest report must give each trade's peer-excess return; if raw returns are positive but peer-excess <= 0, the continuation premise is NOT shown (it would be miner beta in the 2024-2025 gold bull market). COST ARITHMETIC: HKEQ charges ~0.11% per side statutory (stamp duty 0.10% each side + levies) plus a 4 bp half spread: ~0.30% round trip. Expected capture: about half to two-thirds of the pre-study gross +2.0% after skipped slots and decay = ~1.0-1.3% per trade, 3-4x the round trip.

Cross-Venue Spot Idiosyncratic Down-Shock Rebound, Perp-Hedged: buy a post-2022 Bybit SPOT alt at the close of a day whose 2-day move lagged BTC by <=-2 sigma, short equal-dollar BTCUSDT.BYBIT perp, fixed 3-day clock (14 names disjoint from the promoted pre-2022 Bybit perp panel, 1-DAY, market-neutral event panel, max 2 new pairs per date)

Original Research Lead hypothesis (not seeded). It tests the long-side idiosyncratic down-shock template (lesson L266) on a different instrument type and a name-disjoint universe. The cash leg is Bybit SPOT and the……Show moreShow less

Original Research Lead hypothesis (not seeded). It tests the long-side idiosyncratic down-shock template (lesson L266) on a different instrument type and a name-disjoint universe. The cash leg is Bybit SPOT and the hedge is the Bybit USDT perpetual, so the book spans two venues (BYBIT_SPOT + BYBIT). The template was promoted on iteration 1 on 29 pre-2022 Bybit USDT perps (185 trades, PF 1.67). Here every alt was listed on Bybit after 2022-01-01, so the universe shares no names with that panel. MECHANISM: when one alt falls far more than BTC over two days without a market-wide move, the excess drop is mostly forced or impatient idiosyncratic selling: a liquidation cluster, an unlock or large-holder exit, or a rumour. Liquidity providers who absorb that inventory demand a premium, and they are paid as the price partly recovers relative to the market over the next few days. Holding the alt in SPOT means the long leg is never liquidated and pays no funding. The BTC perp short removes market beta, as lessons L256 and L267 require for shock panels. EVENT, per alt, at each completed 1-DAY bar (bar timestamp = close, 00:00 UTC): W_alt = ln(close_t / close_{t-2}) on <ALT>USDT.BYBIT_SPOT; W_btc is the same quantity on BTCUSDT.BYBIT; X = W_alt - W_btc. Scale X by the alt's 60-day daily log-return std, measured up to the bar two days before the signal so the shock days are excluded, times sqrt(2): zx = X / (sd60 * sqrt(2)). If zx <= -shock_z (baseline 2.0), open a pair: LONG the alt on BYBIT_SPOT and SHORT an equal-dollar BTCUSDT.BYBIT hedge (hedge_ratio 1.0, pre-registered). Orders are market orders at the signal bar's close. On these 24/7 venues that price is the next bar's open, which is the platform's faithful equivalent of a next-open fill; I name the substitution here. Both legs exit on a fixed 3-day clock. PRE-STUDY (Research Lead, decoded catalog 1-DAY closes: alt from BYBIT_SPOT, BTC from the BYBIT perp, 2022-03 to 2026-10, at least 90 days of bars per name, one open event per name): at zx <= -2.0 with a 3-day hold, 161 alt legs fired on 77 distinct event dates. The mean hedged forward 3-day log return (alt minus BTC) was +2.30% per leg, median +1.33%, hit rate 61%, gross of costs. By year (legs, mean): 2022 3 / +5.1%, 2023 20 / +1.7%, 2024 60 / +2.5%, 2025 52 / +3.6%, 2026 26 / -0.75%. I state up front that 2026 is negative. At zx <= -2.5 the effect is larger (+4.31% mean, 70 legs) but there are only 31 distinct dates, below the ~60-date evidence floor in L271, so the baseline is 2.0. A 5-day hold decays to +0.27% mean (median -0.72%), so the edge is a short rebound and the clock must stay short. That is the main reason hold_days is capped at 4. COST ARITHMETIC: each event pays a spot round trip on the alt (~0.20%) plus a Bybit perp round trip on the equal-dollar BTC hedge (~0.11%), about 0.31% of the alt-leg notional. Against a gross +2.3% (median +1.3%) the capture is about 4-7x costs; a 2x shrinkage to ~1.15% still clears the 2x-cost bar. EVIDENCE COUNT (L238/L271): the effective sample is 77 distinct event dates, not 161 legs. CONCURRENCY (L267): at most 2 new pairs per date (when more names qualify, take the most negative zx) and at most 5 open pairs. Each alt leg is 10% of equity, so same-date gross long is at most 20%, total long at most 50%, and gross book at most 100% with the hedge. Drawdown expected near 10-15%. UNIVERSE (fixed list, point in time): APT, OP, ARB, SUI, SEI, INJ, TIA, PEPE, WLD, JUP, ORDI, LDO, ENA, GMX as <ALT>USDT.BYBIT_SPOT. A name becomes eligible only after 90 days of BYBIT_SPOT bars at that bar (is_listed()/listed_since(), parameters.point_in_time_universe = true). All 14 are still listed. Bybit serves no bars for closed pairs, so delisted spot names cannot be included. That biases the alt leg upward and is named as a risk. Corpus: BYBIT_SPOT is 0.1% of experiments; cross-venue is 10% against a 15% target; long-short is 25%. Distinct from in-pipeline items: BybitSpotAltPanelCapitulationAbsorption4H (unhedged, 4H, raw capitulation), BybitDisjointAbsorbedFlush* (perp, range/close-location trigger), BybitIdioAttentionShockContinuation (UP residual days, follows the move).

Canadian Preferred-Share Liquidity-Provision Rebound: buy a TSX-listed preferred series at the next open after a session in which it fell >=2.5 sigma below the preferred-share basket while its same-issuer sibling series did not, fixed 5-session open-to-open clock (CAEQ 1-DAY, 47 rate-reset/perpetual preferreds, long/flat, unlevered, same-date entries capped)

Original Research Lead hypothesis (not seeded). New instrument class: no hypothesis in the corpus has traded preferred shares, and CAEQ has 3 of 5,022 experiments. Canadian preferreds (BCE, ENB, TRP, PPL, MFC, SLF,……Show moreShow less

Original Research Lead hypothesis (not seeded). New instrument class: no hypothesis in the corpus has traded preferred shares, and CAEQ has 3 of 5,022 experiments. Canadian preferreds (BCE, ENB, TRP, PPL, MFC, SLF, GWO, BMO, TD, POW series) are a retail-dominated market with median daily turnover of about C$50k per series. Their prices share one main driver: the 5-year Government of Canada yield that sets rate resets, plus issuer credit. The median trailing 250-day correlation of a series' daily return with the equal-weight preferred basket is 0.58. When one series drops sharply against that basket while its sibling series from the same issuer do not, the drop is most likely a liquidity shock (a retail seller or fund outflow hitting a thin book), not news. Issuer news or an issuer-wide ex-dividend date moves every series of that issuer. Liquidity providers who absorb the sale are paid by the subsequent recovery (Grossman-Miller liquidity provision; Nagel 2012, 'Evaporating Liquidity'). This also answers lesson L269: it is a narrow peer panel whose members share one common driver, with the homogeneity measure and the exact-name forward returns pre-registered below. Pre-study on our CAEQ daily bars, 2018-01 to 2026-10, frozen baseline rule (z<=-2.5, sibling-series median z>-1.0, 20-day median traded value >=C$25k, at most one series per issuer and 3 entries per date, next-open to open 5 sessions later): 585 events on 505 distinct entry dates. Mean gross return +0.36% per event, median +0.18%, 5th percentile -4.2%. Eight of nine calendar years were positive; 2022 was -0.38% during the rate shock. The per-date t-stat is 2.95. The stricter 3.0-sigma variant gives 288 events and +0.52% per event. Cost arithmetic: CAEQ charges zero commission plus a modelled 3 bp half-spread, about 0.06% round trip. Real preferred spreads are wider, so the plan sets a 10 bp per side slippage floor, about 0.26% round trip all-in. That leaves an expected net of about +0.10-0.15% per trade, a gross edge roughly 1.4x cost; this is the main risk and is pre-registered honestly. Known biases, stated up front: (1) dividends are not in PnL, and the platform holds no historical ex-dividend dates for CA preferreds (the dividends and adjclose feeds hold only the latest row). Holding through an ex-date therefore books the roughly 1.2-1.5% quarterly (or 0.4% monthly-floater) drop as a loss, with no credit for the dividend. Issuer-wide ex-date drops are mostly removed by the sibling filter, but single-series issuers (BMO-PE, GWO-PN, POW-PE) are not protected. The bias is against the strategy, and the pre-study already includes it. (2) The universe is Yahoo's current top-N list. Redeemed series that Yahoo still serves (TD-PFA, TD-PFJ, SLF-PK, TRP-PA) are included and close at their last bar through the platform's listing calendar. Series redeemed earlier and dropped from the list are missing; redemptions happen at par, usually after price gains, so this residual bias is small but unsigned. (3) Bid-ask bounce: entering at the next OPEN, not the signal close, removes the close-at-bid bounce. The open print itself can still sit at the bid, so the 10 bp per side floor is required. Execution: next_open_fill is supported on session venues, so a decision at the session close fills at the next TSX open. No stops are used (route (b)).

Breadth-Confirmed Absorbed Flush, BTC-Hedged: buy every Binance USD-M old-alt perp that prints an absorbed-flush day (range >=2x its 60-day return std, down close, close in the upper 45% of range) ONLY on dates when >=2 names of a 26-name point-in-time panel print it together, short equal-dollar BTCUSDT.BINANCE, fixed 3-day clock (1-DAY, max 8 legs at 6%, long-short)

Original Research Lead hypothesis (not seeded). It refines the absorbed-flush rule (promoted on Bybit, 200 trades PF 1.72, and on Hyperliquid, 151 trades PF 1.70; the Binance SPOT replication ended underpowered with DD……Show moreShow less

Original Research Lead hypothesis (not seeded). It refines the absorbed-flush rule (promoted on Bybit, 200 trades PF 1.72, and on Hyperliquid, 151 trades PF 1.70; the Binance SPOT replication ended underpowered with DD 22.7%) in two ways that the brief's lessons ask for, and both come from a pre-study, not from an assumption. (1) BREADTH CONFIRMATION. The analyst's spot post-mortem suggested the perp results rely on leveraged-liquidation flow. A liquidation flush that is absorbed is a MARKET-WIDE event: many alts get swept and bought on the same UTC day. The pre-study below shows the rule's whole edge sits on such dates. Single-name absorbed flushes (only one panel name that day) lost money: 105 events, hedged mean -2.46%, date t -3.01. Dates with >=2 names: 86 dates, 492 events, hedged mean +2.41% per event, date-clustered t 2.39. So the trigger is: absorbed-flush bar on the name AND at least K=2 panel names (counted among all eligible panel names, whether or not they are already held) print it on the same daily bar. (2) BTC HEDGE + CONCURRENCY CAP (lesson L267/L256): each entry date opens at most 8 alt legs at 6% of equity each (gross long <=48%), ranked by range multiple (range/sd) descending, and a short BTCUSDT.BINANCE leg of equal total dollar notional (hedge ratio 1.0, pre-registered, not tuned). The book is market-neutral in dollars, long alt-specific rebound vs BTC. RULE (frozen from the promoted panels): on each daily bar for each eligible name, sd = std of daily log returns over the 60 bars ending at the PRIOR bar; range = (high-low)/prior close; close_loc = (close-low)/(high-low). Absorbed flush := range >= 2.0*sd AND close < prior close AND close_loc > 0.55. UNIVERSE (fixed before measurement; point in time): 26 older Binance USD-M USDT perps disjoint from the Bybit 13 panel, the Hyperliquid 15 panel, the Binance SPOT 24 panel, the BTC/ETH/SOL/BNB/XRP/ADA/LINK core and the L250 over-mined HL list: AXS, KSM, 1INCH, ZEN, DASH, CELR, COTI, ICX, IOST, KNC, LRC, OGN, RLC, RSR, RVN, SKL, STORJ, SXP, TRB, ANKR, AR, GALA, MATIC, FTM, WAVES, OCEAN. Delisted/renamed perps (MATIC ends 2024-09; SXP, FTM, WAVES, OCEAN, ICX, LRC, STORJ end before 2026-11) are kept: a leg is eligible on a date only when listed then with >=70 daily bars of history (universe_at()/is_listed(), parameters.point_in_time_universe = true) and the base template closes it at its last price on delisting; a delisted name simply stops counting toward the breadth K. WHY BINANCE USD-M although it is 48% of the corpus: it is the only perp venue that serves delisted contracts and history from 2020 for these names (Bybit/OKX/HL do not), and none of these 26 alts is among the corpus's over-used instruments; the mechanism (perp liquidation flush) requires a perp venue. EXECUTION SUBSTITUTION (capability next_bar_open_fill = use_equivalent): orders are market orders sent at the signal bar's close (00:00 UTC); on a 24/7 venue that price is the next bar's open. RISK CONTROL route (b): fixed 3-day time exit with capped sizing (6% per alt leg, at most 8 alt legs per entry date, BTC hedge equal to the date's alt notional; gross <= ~1x equity, no single position near 100% of equity). PRE-REGISTERED MEASUREMENT (Research Lead, catalog BINANCE 1-DAY bars 2020-02 to 2026-11, decoded from parquet; non-overlapping per coin, entry at signal close, exit at close 3 days later, 0.10% RT per leg so 0.20% for the hedged pair, funding NOT deducted): all absorbed-flush events 597 on 191 dates, hedged mean +1.56% but date-mean -0.33% (t -0.52) -> the unconditioned rule does not transfer here. With K>=2, cap 8 at 6%, hedged: 394 alt legs on 86 distinct entry dates, total +74%, max DD 5.5%, worst entry date -3.7% of equity, best +13.2%, rough event-level annualised Sharpe ~1.0. Unhedged equivalent: +111%, DD 9.6%. K>=3: 60 dates, hedged date t 1.81. By year (K>=3, unhedged date mean): 2021 +5.3%, 2022 +7.6%, 2023 +0.8%, 2024 +3.7%, 2025 +3.0%, 2026 -1.5% (one negative year). Caveats stated up front: returns are right-skewed (median hedged event +0.73% vs mean +2.41%), a few dates (2021-05-24, 2024-03-09) carry much of the total, and K was chosen after seeing that single-name events lose - the analyst should treat K=2 as the registered baseline and K in {2,3,4} as the only plausible alternatives. Distinct event dates (86) exceed the ~60 that lesson L271 asks for.

NSE Large-Cap Turn-of-the-Month Window: Long an Equal-Weight Basket of the 37 Names That Were NIFTY 50 Members in January 2018, From the Open of the Month's Last Session to the Open of the 4th New-Month Session (INEQ 1-DAY, calendar-only, long/flat, unlevered)

Original Research Lead hypothesis (not seeded). It tests the turn-of-the-month (ToM) flow effect (Ariel 1987; Lakonishok & Smidt 1988; McConnell & Xu 2008) on the Indian cash market, venue INEQ, which no experiment in……Show moreShow less

Original Research Lead hypothesis (not seeded). It tests the turn-of-the-month (ToM) flow effect (Ariel 1987; Lakonishok & Smidt 1988; McConnell & Xu 2008) on the Indian cash market, venue INEQ, which no experiment in the corpus has used. The window rule is the one already promoted on CAEQ (TSX 16-name basket: 1,664 trades, PF 1.35, Sharpe 0.57, DD 9.4%) and on SPY. Per lesson L263 it is long/flat with fixed entry and exit sessions and has no short arm. India has a specific flow reason to expect the effect. Salaries are paid at month end, and domestic mutual-fund SIP (systematic investment plan) debits are heavily concentrated in the first days of the month. These SIP flows are now a structural monthly bid of tens of thousands of crore rupees, and the funds deploy that cash into large caps. UNIVERSE (fixed ex ante, no later-member look-ahead): the 37 names that were NIFTY 50 constituents in January 2018 and have INEQ daily bars. 2018 members we hold no bars for are absent: YESBANK, VEDL, ZEEL, INDUSINDBK, DRREDDY, HINDPETRO, UPL, IBULHSGFIN, TATAMOTORS (now split into TMPV/TMCV), AUROPHARMA, LUPIN and INFRATEL. That leaves residual survivorship bias, which the analyst should weigh. YESBANK collapsed in 2020, which is the main omission, and it would have hurt. No 2019-2026 entrant (ADANIENT, TRENT, BEL, JIOFIN, ...) is included. PRE-STUDY (Research Lead, raw open-to-open equal-weight basket returns on these names, Feb 2018 to Oct 2026, before costs): 104 month windows, mean 0.552% per window, median 0.81%, t = 2.66, 62% positive. That compares with 0.216% for an average 4-session open-to-open span. The year means were 2018 -0.74%, 2019 -0.01%, 2020 +1.41%, 2021 +1.92%, 2022 +0.29%, 2023 +1.17%, 2024 +0.65%, 2025 +0.14% and 2026 YTD -0.15%. The result is not knife-edge to the window. Every entry offset of 1-3 sessions before month end combined with an exit at the open of new-month sessions 2-6 gave t between 2.27 and 3.31 (for example [-2, open of session 3] 0.60%, t 3.11; [-3, open of session 4] 0.76%, t 3.15). The baseline stays the canonical cross-venue window so it is not chosen from the scan. COSTS (INEQ venue_rules): 0.1187% on buys and 0.1055% on sells, plus about 3 bp half-spread per side, so about 0.284% per round trip. Expected net per window is 0.552 - 0.284 ≈ 0.27% of notional. That is thin, about 1.9x cost. Lesson L238 asks for distinct periods to be counted: there are about 104 distinct entry dates, and the roughly 3,800 per-name trades overstate the evidence. EXECUTION: daily bars; decisions on bar N's close fill at bar N+1's open (next_open_fill, supported on session venues). Session boundaries come from the platform's INEQ calendar via src.strategies.helpers.sessions and FactoryStrategy.session_* helpers, never hard-coded dates. Any special session the calendar lists (for example Diwali Muhurat trading) counts as a session like any other. Account and metrics are in INR (USD view in fx_report). CASH account, long only, no leverage.

COIN-M Two-Day Idiosyncratic Down-Shock Rebound, BTC-Hedged: long a Binance COIN-M inverse alt perp + short equal-dollar BTCUSD_PERP after its 2-day move lags BTC by <=-2.5 sigma, fixed 3-day clock, max 4 new pairs per date (point-in-time 44-name BINANCE_CM USD_PERP panel, 1-DAY, market-neutral event panel, 20% intrabar alt-leg stop)

Original Research Lead hypothesis (not seeded). It tests the frozen Bybit two-day idiosyncratic down-shock rule (promoted iteration 1: 185 trades, PF 1.67, 1.75% per trade, DD 10.8%) on a fourth venue, Binance COIN-M……Show moreShow less

Original Research Lead hypothesis (not seeded). It tests the frozen Bybit two-day idiosyncratic down-shock rule (promoted iteration 1: 185 trades, PF 1.67, 1.75% per trade, DD 10.8%) on a fourth venue, Binance COIN-M inverse perps, with the rule unchanged. Lesson L266 says this template is worth testing; this test does not cite the Bybit result as evidence that it will work here. Why this venue: BINANCE_CM holds 2.8% of the corpus against a >=5% target. The design is long-short and market-neutral (long_short is 25%, against a <=55% long-only target), multi-instrument, and event-driven (the best-surviving tag family, 16%). No COIN-M hypothesis so far uses a hedged, residual-defined long-side trigger. The COIN-M relief-rally fade in the pipeline is the SHORT side on a range-location trigger. The COIN-M deleveraging flush is unhedged, uses a raw return and needs an OI gate. The COIN-M compression traps are NR7 patterns. MECHANISM: when one coin falls far more than BTC over two days without a market-wide move, the excess drop is mostly forced or impatient coin-specific selling: a liquidation cluster in that coin's perp, a large holder exiting, or a rumour. On COIN-M the collateral IS the coin, so a falling coin both cuts a long's margin and its collateral value, and liquidations there are convex (inverse-contract PnL). This makes forced selling overshoot. Liquidity providers who absorb it are paid as the coin partly recovers relative to BTC over the next few days. Shorting BTC removes the market factor. RULES (signal on each completed 1-DAY bar; bar timestamp = close, 00:00 UTC): W_alt = ln(close_t/close_{t-2}), W_btc the same for BTCUSD_PERP.BINANCE_CM, X = W_alt - W_btc. sd = std of the alt's daily log returns over vol_lookback days (baseline 60), ending at the bar two days before the signal (the shock days are excluded). zx = X / (sd*sqrt(2)). DATA-QUALITY RULE (pre-registered; it came out of the pre-study): skip the signal if the alt printed any zero-change daily close in the last 10 bars, or if sd < 1%. Stale prints on thin COIN-M contracts (VET, GALA, ZIL) otherwise produce about 900 false z extremes. UNIVERSE (point in time, using universe_at()/is_listed()): the 44 BINANCE_CM USD_PERP alts in `instruments`. A name is eligible once it has been listed >=90 days at the signal. Names that later delisted (LUNA) stay in the panel and are closed at delisting by the base template. EXECUTION: market orders at the signal bar's close. On this 24/7 venue that price is the next bar's open, the platform's faithful equivalent of a next-open fill (capability next_bar_open_fill: use_equivalent). The 20% stop is an intrabar protective stop (reduce-only stop-market, platform-matched; capability intrabar_stop: supported), not an exchange-resting order. SIZING: inverse contracts are sized with contracts_for_notional(). PRE-STUDY (Research Lead, decoded BINANCE_CM 1-DAY catalog closes, 2020-08 to 2026-10, 43 alts vs BTCUSD_PERP, one event per name per 3-day window, entry at the signal close, staleness filter applied, gross of costs): zx<=-2.5 fired 280 alt legs on 105 distinct event dates. Mean hedged (alt minus BTC) 3-day log return was +1.41% per leg and median +2.44%. Excluding the LUNA collapse leg (-531% log, i.e. about -99%), the mean was about +3.3%. With the same-date cap of 4 legs (most negative zx first): 179 legs on 105 dates, mean +1.94% after clipping the LUNA leg at the 20% stop, +1.91% excluding LUNA (t 2.51), median +0.97%. By year (capped, stop-clipped, legs/mean): 2020 5/+1.5%, 2021 9/-5.3%, 2022 25/+5.7%, 2023 42/-1.9%, 2024 59/+3.3%, 2025 19/+5.9%, 2026 20/+0.8%. 2021 and 2023 lost money and 2026 is flat, so the edge is concentrated in 2022, 2024 and 2025. That concentration is the main honest risk. The per-DATE averaged net return was +0.70% (t 0.81, 54% of dates positive), much weaker than the per-leg figure. The 2023 legs are the most numerous and lost money. COST ARITHMETIC: COIN-M taker is about 0.06% round trip per leg, so about 0.12% per pair on the alt notional, plus impact on thin alt contracts. A capped, stop-clipped gross of about +1.9% per pair is about 16x that cost; even the per-date figure of +0.82% gross is about 7x. PRE-REGISTERED COUNTS (lessons L238/L242/L259): about 105 distinct event dates over 6 years (about 17 per year); about 180 pairs, which is about 360 position legs plus BTC hedge resizes. EXPOSURE (L267): 10% of equity per alt leg, at most 4 new pairs per date, at most 6 open pairs. Maximum gross is therefore 60% long alts + 60% short BTC = 1.2x, at config.leverage 2.0, inside the 5x conservative cap. A 1x alt position contributes roughly 80-130% annualised vol, so a 10% leg contributes about 8-13%, well inside the 120% per-position budget. Expected strategy vol is about 10-15% a year, against the 60% ceiling.

Options-Market-Confirmed Daily Shock Continuation on Deribit's Own Linear Perps: trade WITH a >=1-sigma BTC or ETH UTC-day move only when that coin's Deribit DVOL repriced >=2 sigma UP on the same day, fixed 7-day clock (BTC_USDC- and ETH_USDC-PERPETUAL.DERIBIT, 1-HOUR bars with daily 00:00 UTC decisions, long-short, unlevered, flat ~85% of the time)

Original Research Lead hypothesis (not seeded). It is a two-coin, two-sided event panel on Deribit's own USDC-margined linear perps. Deribit is at 4.3% of the corpus against a combined options/Deribit target of 15% or……Show moreShow less

Original Research Lead hypothesis (not seeded). It is a two-coin, two-sided event panel on Deribit's own USDC-margined linear perps. Deribit is at 4.3% of the corpus against a combined options/Deribit target of 15% or more. The signal comes from the same venue's options market. Mechanism: on most big crypto days implied vol barely moves, because vol sellers absorb the move. On some days the options market reprices the 30-day DVOL index sharply UP alongside the price move. Then option buyers are paying for protection or upside in the move's direction and dealers are left short gamma. That has two effects: (1) dealers' delta hedging chases the move for days while the gamma imbalance is unwound; (2) the IV repricing shows that informed, hedging-motivated participants treat the move as information, not flow. Either way the move should CONTINUE over a multi-day horizon. RULE: once per UTC day at the 00:00 UTC hourly close, for each coin c in {BTC, ETH} compute (a) zr = the coin's UTC-day log return divided by the std of its daily log returns over the prior 60 days, from its own perp's hourly closes; (b) zv = the UTC-day log change of DVOL_c (supp key DVOL_BTC / DVOL_ETH, read point in time with supp_as_of) divided by the std of DVOL_c's daily log changes over the prior 60 days. If zv >= dvol_z_entry (baseline 2.0) and |zr| >= price_z_entry (baseline 1.0), go LONG coin c's perp when zr > 0 and SHORT it when zr < 0, then hold for a fixed hold_days (baseline 7) UTC days. Execution substitution, stated explicitly: next_bar_open_fill on this 24/7 venue is use_equivalent, so the order is a market order at the 00:00 UTC hourly bar's close, which on a continuous market is the next bar's open. PRE-STUDY (my own measurement on Deribit USDC perp hourly closes, 2022-03 to 2026-10, frictionless, no tuning): DOWN events (zv>=2, zr<=-1): BTC 30 and ETH 29 events, 59 in total on 43 distinct dates. Mean 7-day forward return -2.9% (BTC, t -1.8) and -3.9% (ETH, t -2.1); pooled mean -3.37%, median -1.55%, the short side wins 59%. UP events (zv>=2, zr>=+1): BTC 15 and ETH 19 events, 7-day forward +4.2% and +2.5%. At zv>=1.5 there are 36 and 32 events, at +2.1% and +0.9%. The unconditional 5-day drift is +0.22% (BTC) and -0.05% (ETH). The effect is weak at 3 days (-0.3% to -1.7%) and builds over 5-10 days; this is why the clock is 7 days and not intraday. The effect is NOT stable by year. Down events by year (BTC / ETH 7-day mean): 2022 -2.6% / -6.0%, 2023 -1.7% / -1.3%, 2024 +2.0% / +3.1% (reversed), 2025 -0.3% / -0.2%, 2026 -7.9% / -9.3%. Expected about 90 trades on about 70 distinct event dates. BTC and ETH events often share a date, so the effective sample is closer to 70 than 90. PRIOR ART, stated honestly: the closest relative, 'ETH Implied-Move Breach Classified by the Options Market's Reaction' (ETHUSDT.BYBIT 4H, 48h clock, continue when DVOL jumps / FADE when DVOL is flat), ended no_edge (117 trades, PF 0.84, IC about 0). This hypothesis differs in four ways. (i) It drops the fade arm entirely, because the pre-study shows no information in it. (ii) It uses a daily decision and a 7-day clock, where the pre-study locates the drift, instead of 48h, where the pre-study also finds almost nothing. (iii) It conditions on the DVOL change normalised by DVOL's own change volatility, not on an implied-move breach. (iv) It trades both coins on Deribit's own perps, where the options flow is. Other DVOL designs that died were regime gates, fades of IV peaks, or trend gates. None was a same-day IV-repricing continuation on a multi-day clock. RISK CONTROL route (b): signal/time exit with capped sizing, plus a fixed wide intrabar protective stop as a disaster bound. Each position is 25% of equity notional at leverage 1.0, at most one position per coin, maximum gross 50% of equity. COST ARITHMETIC: the Deribit perp round trip is about 0.07% taker plus about 0.02-0.04% half-spread and impact, about 0.10% in total, plus 7 days of funding. Funding has a typical magnitude of 0.01%/8h, about 0.2% per week, and is often favourable to a trend-chasing short after a down shock. The pre-study gross per event is about 2.5-3.5%; half of that, about 1.2-1.7%, is more than 10x the round trip. Risk profile (conservative): BTC/ETH daily std of about 3-4% gives about 60-75% annualised vol at 1x. Each 25% position therefore contributes about 15-19% annualised volatility, below the 120% cap. The book sits far from liquidation at 0.5x gross. The worst 7-day adverse move of about 30% at 25% notional costs about 7.5% of equity, below the 15% trade-loss cap, and the 15% disaster stop bounds it at 3.75%.

ETC–DASH Cost-Aware Linear Actor–Critic Pair Trading with Five Exposure Levels and Causal Rolling Retraining (Binance USD-M 4H)

Derived by the Research Lead from Yang and Malik, 'Reinforcement Learning Pair Trading: A Dynamic Scaling Approach': we operationalize their RL2 idea (an actor-critic policy that scales signed pair exposure instead of……Show moreShow less

Derived by the Research Lead from Yang and Malik, 'Reinforcement Learning Pair Trading: A Dynamic Scaling Approach': we operationalize their RL2 idea (an actor-critic policy that scales signed pair exposure instead of trading a fixed on/off z-score rule). This is NOT a reproduction of their BTCGBP/BTCEUR experiment or its reported performance. Every rule below is our choice and is stated completely; the developer needs nothing outside this text. INSTRUMENTS AND BARS. Primary ETCUSDT.BINANCE (USD-M linear perp, 4-HOUR bars), secondary DASHUSDT.BINANCE (4-HOUR bars, passed as extra_instruments / extra_bar_types). Keep the latest close of each leg; run the decision step only when both legs have a bar with the same close timestamp (synchronized bar t). If one leg has no bar at t, skip t entirely (no feature update, no action). Leverage config 1.0. STEP 1 - SPREAD AND Z-SCORE (each synchronized bar t, W = spread_window, baseline 360 bars = 60 days). x_i = ln(DASH close), y_i = ln(ETC close) over the last W synchronized bars INCLUDING t. OLS y = alpha + beta*x on those W points. Residuals e_i = y_i - alpha - beta*x_i; sigma_t = population std of the W residuals; z_t = e_t / sigma_t, clipped to [-4, 4]. If beta <= 0.2 or beta > 5 the pair is 'unhedgeable' at t: all actions except exposure 0 are masked (an open position is closed). Leg weights for sizing: wE = 1/(1+beta), wD = beta/(1+beta) (gross weights sum to 1). Keep a history of z_t, beta_t, sigma_t, wE_t, wD_t and the log closes for training. STEP 2 - OBSERVATION VECTOR (8 features, all computed from data at or before t; e_prev = current signed exposure level before acting, hold = synchronized bars since the current position was opened, 0 if flat): f1 = 1 (bias) f2 = z_t / 2 f3 = clip(z_t - z_{t-1}, -2, 2) f4 = clip(z_t - z_{t-6}, -4, 4) / 2 f5 = e_prev f6 = e_prev * z_t / 2 f7 = min(hold / max_hold_bars, 1) f8 = clip(std(d_s over last 30 bars) / std(d_s over last W bars) - 1, -1, 2), where d_s_i = (y_i - y_{i-1}) - beta_t*(x_i - x_{i-1}) using the current beta_t. STEP 3 - ACTIONS. Five discrete exposure levels A = {-1.0, -0.5, 0.0, +0.5, +1.0}. Level e means signed pair exposure: e > 0 = LONG the spread = long ETC with notional |e|*G*wE*equity and short DASH with notional |e|*G*wD*equity; e < 0 = short ETC / long DASH with the same notionals. G = gross_exposure fixed 1.0 (total gross notional at |e| = 1 is 1.0x equity; the largest leg is below 0.85x equity). equity = get_account_equity(). STEP 4 - ACTION MASK (applied identically in training and in trading). Start with all five allowed, then: (a) Direction: if z_t > 0 mask e > 0 (do not buy the rich leg); if z_t < 0 mask e < 0. (b) Opening/increasing zone: any level with |e| > |e_prev| (opening or scaling up) is masked unless |z_t| >= open_z (baseline 1.8). (c) Cost hurdle: any level with |e| > |e_prev| is also masked unless expected capture (|z_t| - close_z) * sigma_t * 100 >= min_capture_pct (baseline 0.6 %, about 3x the 0.20 % per-leg-notional pair round trip). (d) Forced close: if |z_t| <= close_z (baseline 0.4), or the sign of z_t is opposite to the sign of e_prev (spread crossed through zero), or hold >= max_hold_bars (baseline 60 = 10 days), or the pair is unhedgeable, the ONLY allowed level is 0. (e) Re-entry block: after a forced close by max_hold_bars or by the pair stop (Step 8), opening in the same direction is masked until |z_t| has once fallen below open_z. Level 0 is always allowed, so the mask is never empty. Scaling down (|e| < |e_prev|, same sign) is always allowed unless (d) forces 0. STEP 5 - ACTOR AND CRITIC (linear, our choice of 'small'). Actor: theta is a 5x8 matrix; logits_k = theta_k . f; masked softmax pi_k = exp(logit_k)/sum over allowed actions (0 for masked). Critic: w is an 8-vector; V(f) = w . f. STEP 6 - REWARD (net mark-to-market, per synchronized step, in percent of equity). For the transition t -> t+1 with chosen level e_t and previous level e_prev: R = wE_t*(y_{t+1} - y_t) - wD_t*(x_{t+1} - x_t) (log spread return of a unit long-spread position, weights frozen at t); reward = 100 * [ G*e_t*R - c*G*|e_t - e_prev| ], with c = cost_per_side fixed 0.0008 (0.05 % taker + ~0.03 % slippage per unit gross notional traded). Funding is not in the reward (the backtest charges it in PnL). STEP 7 - TRAINING (causal, from scratch, then frozen). Trading is flat until N_sync >= spread_window + training_bars + 30 synchronized bars have been seen. At that bar and then every retrain_bars = 180 synchronized bars (fixed, 30 days) retrain: take the last training_bars (baseline 1620 = 270 days) completed transitions, i.e. bars ending at t-1 -> t (only data already observed, never future bars). Use the stored z, beta, sigma, weights and log closes for those bars (each computed causally at its own bar, so the spread_window bars before the slice are required warm-up). Reset theta = 0 and w = 0. Run n_epochs = 30 (fixed) passes; each pass walks the slice in time order starting from e_prev = 0, hold = 0, simulating the agent's own position (features f5-f7 and the mask use the simulated position; forced-close and re-entry rules apply; the pair stop is not simulated). At each step: build f and mask, sample action a from pi using numpy.random.default_rng(seed = 12345 + retrain_index) (one generator per retrain, deterministic), compute reward r and the next features f' (with the simulated new position); at the last step of the slice use V(f') = 0. TD error delta = clip(r + gamma*V(f') - V(f), -5, 5) with gamma baseline 0.9. Updates: w <- w + 2*learning_rate*delta*f; for every allowed k: theta_k <- theta_k + learning_rate*delta*(1[k=a] - pi_k)*f (masked actions unchanged). learning_rate baseline 0.01. After training, theta and w are FROZEN until the next scheduled retrain; trading decisions never update them. Training happens only inside the strategy on bars already received, so no validation or holdout bar is ever used to fit the policy; when the platform restarts a window with warm-up bars, the strategy rebuilds history from those warm-up bars and trains at its first eligible bar exactly as above. STEP 8 - LIVE DECISION AND EXECUTION. At each synchronized bar after the first training: compute f and the mask from the REAL position, choose a* = argmax over allowed actions of pi (greedy; ties -> the level with smaller |e|, then 0). If a* != e_prev, rebalance both legs to the target notionals of a* using the current wE_t, wD_t (size = notional / close, rounded to instrument precision); if a* == e_prev, do nothing (no rebalancing for beta drift). Orders are market orders submitted at the synchronized bar's close: on this continuous 24/7 venue this is the platform's registered equivalent of next-bar-open execution. If after fills the legs are unbalanced (self.legs_balanced() false, e.g. a refused order), close both legs and set e = 0. Pair stop (catastrophic cap): if the combined unrealized PnL of the two open legs falls to -pair_stop_pct (fixed 4 %) of equity, checked on each synchronized close, close both legs at market and apply re-entry block (e). On any close, reset hold to 0. Track hold from the time the position went from 0 to non-zero (scaling does not reset it). RISK CONTROL route (b): signal exits (z reversion/crossing, policy action, 10-day time stop) with capped sizing (gross 1.0x equity, no leg above 100 % of equity), plus the 4 % pair stop as a disaster cap. Intended strategy volatility ~15-20 % annualized. VENUE CHANGE vs the registered version: execution moved from Hyperliquid to Binance USD-M because Hyperliquid DASH 4H bars start 2025-08-04 (about 2,600 synchronized bars), which the warm-up plus training slice alone would almost consume. FEE ARITHMETIC: an entry at |z| ~1.8-2.2 closed at |z| <= 0.4 captures ~1.4 sigma of the log residual; with a 60-day residual sigma typically 4-8 % for this pair, a realistic partial capture of ~0.5-1.0 % of gross notional per round trip against ~0.10 % taker cost per unit gross (plus slippage, ~0.16 %) leaves roughly 2-5x the cost; the min_capture_pct mask enforces >= 0.6 % expected capture before any exposure increase.

Sector-ETF Momentum Transformer (NumPy, Sharpe-loss, next-open labels, annual expanding-window retrain)

Derived by the Research Lead from Mason et al., 'Enhanced Momentum with Momentum Transformers': a learned LSTM-plus-causal-attention daily position allocator, trained with a differentiable Sharpe loss, on a fixed panel……Show moreShow less

Derived by the Research Lead from Mason et al., 'Enhanced Momentum with Momentum Transformers': a learned LSTM-plus-causal-attention daily position allocator, trained with a differentiable Sharpe loss, on a fixed panel of nine US Select Sector SPDR ETFs. This is the Research Lead's operationalization, not the authors' strategy and not a reproduction of their CRSP/Compustat stock experiment. Every rule below is a choice made here; the developer needs no other document. 1. UNIVERSE (fixed, all listed since Dec 1998, so there is no survivorship issue): XLK.USEQ (primary), XLB, XLE, XLF, XLI, XLP, XLU, XLV, XLY (.USEQ). Daily bars only (1-DAY), OHLCV. XLC and XLRE are excluded because they started in 2018/2015. 2. FEATURES (8 per ETF, computed at the close of session t from closes up to t only): sigma_t = exponentially weighted std of daily close-to-close returns, span 60 sessions (floor at 1e-4). (a)-(e) normalized returns for k in {1, 21, 63, 126, 252}: (C_t / C_{t-k} - 1) / (sigma_t * sqrt(k)), clipped to [-5, 5]. (f)-(h) MACD signals for (S,L) in {(8,24),(16,48),(32,96)}: m = EWMA_S(C) - EWMA_L(C) (EWMA with halflife ln(0.5)/ln(1-1/n), i.e. alpha=1/n); q = m / rolling std of C over 63 sessions; y = q / rolling std of q over 252 sessions; clip to [-5, 5]. A session is usable only when all 8 features are finite (about 350 sessions of warm-up). 3. LABEL (resolves the timing question): the decision is made at the close of session t and fills at the OPEN of session t+1 (platform next_open_fill, supported on USEQ). The position is then held until the next decision fills at the open of t+2. So the label is the NEXT-OPEN-TO-NEXT-OPEN return R_{i,t} = O_{i,t+2} / O_{i,t+1} - 1. A training sample at t is usable only when O_{t+2} is known, i.e. t <= training-cutoff session - 2. Labels are never next-open-to-close. 4. ARCHITECTURE (one network shared by all nine ETFs; ETF identity is NOT an input): d_model = hidden_size (initial 16). - Variable selection network: each of the 8 scalar features goes through its own gated residual network (GRN) to a d_model vector; a separate GRN on the concatenated 8 raw features plus softmax produces 8 selection weights; the output is the weighted sum (d_model). - GRN definition: eta2 = ELU(W2 a + b2); eta1 = W1 eta2 + b1; out = LayerNorm(skip(a) + GLU(eta1)), GLU(g) = (W4 g + b4) * sigmoid(W5 g + b5), skip = linear projection when dims differ, identity otherwise. - LSTM, one layer, hidden_size units, run over the sequence of selected vectors; then gated skip: LayerNorm(VSN_out + GLU(LSTM_out)). - Causal multi-head self-attention, attention_heads = 4 (head dim = hidden_size/4), additive mask so step s sees only steps <= s; output projection, then LayerNorm(prev + GLU(attn_out)); then a position-wise GRN; then LayerNorm(LSTM-block output + GLU(GRN_out)). - Output: linear to 1 unit, tanh -> x_{i,t} in (-1, 1). No dropout. No changepoint-detection module. All computation in NumPy with hand-written backpropagation (BPTT through the LSTM, gradients through attention, LayerNorm, GLU, ELU, softmax). No PyTorch/TensorFlow/JAX, no external weight files, no pickled models. Do not substitute nearest-neighbour retrieval, a fixed kernel, frozen random features or an indicator vote for trained attention. 5. TRAINING SAMPLES: for each ETF separately, cut its usable feature history (up to the training cutoff) into NON-OVERLAPPING sequences of sequence_length sessions (initial 252), aligned so the last sequence ends at the cutoff; drop a leading partial sequence. Sequences from all nine ETFs are pooled into one dataset (pooled-per-ETF training, not a joint-portfolio loss). The chronologically last 10% of sequences (by end date, across ETFs) is the validation set; the rest is training. 6. LOSS (resolves the loss question): for every sequence b and step s the model outputs x_{b,s}. Volatility-scaled position p_{b,s} = x_{b,s} * min(sigma_target / sigma_{b,s}, 3.0) with sigma_target = 0.15 / sqrt(252) (daily). Captured return c_{b,s} = p_{b,s} * R_{b,s} - (turnover_penalty_bps / 10000) * |p_{b,s} - p_{b,s-1}|. The turnover term pairs each step with the PREVIOUS STEP OF THE SAME SEQUENCE, using the model's own output there; the first step of every sequence has no turnover term (no pairing across sequence or batch boundaries). Loss for a minibatch = -sqrt(252) * mean(c) / (std(c) + 1e-9), with mean and std taken over ALL (sequence, step) values in the minibatch (every step contributes, not only the last). Add L2 weight decay 1e-5 to all weight matrices. This is the differentiable loss; the platform's net_sharpe objective is only the outer optimizer's score and is not the training loss. 7. OPTIMIZER: Adam, learning rate 1e-3 (beta1 0.9, beta2 0.999), minibatch 64 sequences (reshuffled every epoch with a seeded RNG), gradient global-norm clip 1.0, Xavier-uniform init, LSTM forget-gate bias 1.0, max 60 epochs, early stopping when the validation loss has not improved for 8 epochs, restore the best-validation weights. Random seed 42 (numpy.random.default_rng(42) per retrain, reseeded identically each retrain so results are deterministic). 8. RETRAIN SCHEDULE (causal expanding window): the first training happens at the first session with at least 1260 usable feature sessions (about 5 years after the features become finite, i.e. around 2005). The model is then retrained every 252 sessions on ALL usable history up to that session (expanding window, cutoff rule from item 3). Between retrains the weights are frozen. No position is taken before the first training completes. Training uses only data available at the retrain session. 9. INFERENCE AND TRADING: at each daily close t, for each ETF, feed its last sequence_length feature vectors (fewer if history is shorter, minimum 63) and take the output at the final step: x_{i,t}. Target weight (fraction of account equity, signed) w_{i,t} = x_{i,t} * min(sigma_target_annual 0.15 / (sigma_{i,t} * sqrt(252)), 3.0) / 9, then clip each |w| to 0.25. If the gross sum of |w| exceeds 1.5, scale all weights down proportionally. Shorts are allowed (USEQ margin account). Rebalance an ETF only when |w_target - w_current| > rebalance_band (0.02 of equity) to avoid tiny orders; otherwise leave it. Orders are market orders decided on the close and filled at the next session open (next_open_fill). Shares are whole shares (round toward zero). 10. RISK CONTROL route (b): signal-based exit (daily re-evaluation; a position is reduced/closed or flipped when the model's target changes) with capped sizing: no single ETF above 25% of equity, gross at most 150% (well under the venue's 2x). No stop-loss. Intended portfolio volatility about 8-12% annualised. 11. COSTS: platform USEQ costs (zero commission, modelled spread + impact) apply in the backtest; the loss's turnover_penalty_bps (initial 2) is a training regulariser only. Dividends are not in PnL (split-adjusted prices) and borrow cost is not modelled; sector SPDRs are easy to borrow. 12. RUNTIME: training at the 2025 cutoff has about 9 x 20 years x 252 / 252 = ~180 sequences of length 252 (or ~720 of length 63); about 20 retrains in total. If the developer measures that the full architecture cannot fit within the sandbox runtime, report that measured limitation instead of shrinking the model silently.