# Assay 004 pre-registration: time-series momentum, multi-asset

*Frozen in Keel before data at commit `1f0890ff5b2b8f81e9611c388a8306e887bf26c8` on 15 July 2026. Imported to Assay as the publication record; wording below is the Keel registration of record.*

B6 pre-registration, retail premia under honest costs, line 1: time-series momentum (2026-07-15, frozen before any data). Owner-approved successor to the parked Wildcat hunt; this block is the registration of record and no data is touched until it is committed. **Questions (two named variants, no others):** Q1 literature-faithful: trailing-12-month total-return sign, long/short; Q2 retail-implementable: same signal, long/flat, the flat leg earning the 3-month T-bill rate (0%-cash reported as a sensitivity). Signal deviation disclosed: the canonical MOP signal is the sign of excess-of-cash return; total-return sign is frozen here for implementability and one-source simplicity, with the cash series used only for Q2's flat leg and for excess-return statistics. **Spec (frozen):** signal computed at month-end close; execution at the next trading day's close (no same-bar fills); equal-notional 1/9 slots; Q2's inactive slots sit in cash and are never redistributed; monthly cadence; one lookback, one cadence, one weighting, no sweeps, ever. **Universe (frozen, 9 US-listed ETFs):** SPY, EFA, EEM, EWA (equities US / developed-intl / EM / Australia), IEF, TLT (duration), GLD, DBC (gold, broad commodities), VNQ (listed real estate); each instrument enters at inception + 12 months; expanding universe; sample through 2026-06-30; the survivorship bias of a today-liquid universe is acknowledged and disclosed. The owner's personal holdings are excluded by design: research and account never mix. **Retail scale (frozen):** US$5,000 per slot (~US$45k deployed) at an IBKR-class retail broker; per-instrument one-way cost = half-spread + commission at that clip, frozen as a source-dated table (app/fees discipline) at verification, expected 3-7 bps; costs charged on all traded notional; the AUD-base wrapper (FX conversion, unhedged AUDUSD exposure) is disclosed, not modelled as a second spec. **Survival (frozen):** net-of-cost annualized excess-over-cash return > 0 with t >= 2 on monthly returns over the full sample, AND net >= 0 over the frozen recent decade 2016-07-01 -> 2026-06-30, AND the full-sample sign survives removal of any single instrument. Equal-weight buy-and-hold of the same universe is reported for context, not as a criterion. **Data protocol:** FMP dividend-adjusted daily closes (total-return basis is mandatory); verification step 1, before any signal code runs: confirm the adjustment against a known dividend event per asset class; the T-bill series is source-checked the same way; the collector is offline-tested; the backtest is host-run under `app/backtest`, no container. **Outcomes:** either result is Assay 004 raw material. If both variants fail, the line closes Leg-B-style, no lookback resurrection without a fresh owner-gated pre-registration. If a variant survives, paper implementation is a separate, new owner decision, never automatic.

## Verification gate

B6 verification gate: PASS (2026-07-15). The pre-registered data gate ran against live FMP with the rotated key and every check cleared. Coverage: full history to inception on all nine symbols (SPY from 1993-01-29, EWA from 1996-03-18), and the FMP Starter plan does not truncate EOD history, so the full-sample test is viable. Adjustment: verified three ways, with adjusted series present everywhere, payer adj-vs-price gaps the right shape (SPY +1400pp over 33 years), the GLD no-dividend control at exactly +0.0pp, and every event-level ratio within ~2 bps of `1 - D/P` against FMP's own dividend feed. API family: the key is stable-family only (legacy `/api/v3` returns 403); the harness now runs stable-first with v3 fallback. One decision made by the data: FMP's treasury endpoint served only a ~90-day window on the current plan, so the **cash series is frozen as FRED TB3MS** (keyless CSV, earliest 1934-01-01, source-checked 2026-07-15), which the registration permits. The **cost model is frozen** in `app/backtest/b6_costs.py`: IBKR Pro Fixed commission formula (USD 0.005/share, min 1.00, max 1% incl. the sub-minimum cap rule; interactivebrokers pricing pages, checked 2026-07-15) plus per-symbol one-way spreads: issuer-published 30-day medians where captured (EFA 0.01% as of 2026-06-16, EWA 0.04% as of 2026-07-10), conservative multi-tick ceilings elsewhere, deliberately erring high so cost assumptions bias *against* survival. Totals at current prices run ~2.5-5 bps one-way, inside the registration's 3-7 bps expectation. Disclosed: today's spreads applied across the full sample understate pre-2010 costs (a 2x cost stress may be reported as context; pass/fail runs on the frozen table only); Q1 short-borrow financing is outside the frozen model per registration. **Lesson registered:** any harness hitting a keyed source must sanitize HTTP errors per the calendar house pattern (`from None`, no query string): the first probe run leaked the FMP key via a traceback URL and the key was rotated the same day. Data embargo work is complete; next is the collector + TSMOM engine build (the line's big build; budget to be planned at session start).

## Result disposition

B6 line 1 result, read against frozen criteria (2026-07-15): **Q1 long/short FAILS; Q2 long/flat SURVIVES: Keel's first surviving line.** Order of operations held: criteria frozen 2026-07-15 before any data, engine committed (`f9b0694`) before the run, result read as-is with no re-runs and no adjustments; raw receipts are `data/b6/result.json` plus the tee'd run log. **Q1 (literature-faithful long/short):** full-sample net excess +2.31%/yr but t 1.49 (< 2) and the recent decade is **-0.11%/yr**, the post-2009 trend-skepticism pattern landing exactly where expected; robustness passed (all nine leave-one-outs positive). **Q2 (retail-implementable long/flat):** **+3.56%/yr net excess, t 3.37; recent decade +2.82%/yr; all nine leave-one-outs positive (worst ex-SPY +2.57%); maxDD -12.5%**, all three frozen criteria pass, and the 2x cost stress barely moves it (+3.53%/yr, t 3.33), confirming the cost floor is a footnote at monthly cadence. **Honest shape of the survivor (headline, not footnote):** (1) it is defensive timing, not return enhancement: equal-weight buy-and-hold of the same universe earned more raw excess (+4.80%/yr gross, t 2.61) with a -44.9% maxDD; Q2 kept ~74% of the excess at ~28% of the drawdown (monthly Sharpe ~0.59 vs ~0.46), so the defensible claim is risk-adjusted, never "beats the market"; (2) the 0%-cash sensitivity lands at **+2.10%/yr, t 1.97, a hair under the frozen bar**: survival is robust to doubled trading costs but sensitive to idle cash earning T-bills, and real-world cash yield is broker- and balance-dependent, so this is reported prominently; (3) the Q1-vs-Q2 recent-decade gap implies the short book subtracted ~2.9%/yr: the longs' timing survived, the shorts died. Standing pre-registered disclosures apply: survivorship-tilted modern-ETF universe, today's spreads applied historically (de-fanged by the 2x stress), plain t on monthly observations. **Dispositions:** the immediate successor is **Assay 004**: six falsifications and one survivor, published to the same evidence standard from a frozen capsule (result.json + matrix + cost table + engine commit); per the registration, **paper implementation of Q2 is a separate owner decision, never automatic**: it is parked as an explicit decision point, not a next step.
