# Skew Stream — Pinned Activation Test (pre-registered 2026-08-01, panel item B4)

**Status: BINDING, append-only after today.** This memo closes the open clause
in the `options_skew` capture registration (CAPTURES.md): "escalate … only if
a residual long-only large-cap signal appears in 12–18 months" named **no
test**, so the mid-2027 evaluator could have chosen whichever definition
flattered the preferred outcome. The test is pinned now, while the track is
too short to peek at (the placebo-ensemble precedent: pinned at day 22).

**Attestation.** As of this pin, no skew-vs-return statistic of any kind has
ever been computed on the accrued capture. Basis, recorded 2026-08-01: the
only readers of the skew JSONL in the repo are the capture writer and the
integrity QA (`capture-qa`) — `load_skew()` has zero consumers outside
`data/options_skew.py`; RESEARCH.md and the evaluation ledger contain no
skew-return join; the operator's research log records none. The full accrual
from stream inception (2026-06-09) is therefore legitimately usable as test
data: the test is being named before anyone has seen what it would say.

**What the thresholds gate: SPENDING, not truth.** Passing authorizes buying
retail option-chain history (legitimate since the scarcity retirement,
memory/options-skew-feasibility 2026-07-21) to run a proper backtest behind a
NEW hash-frozen registration and the full SHIP gate. Passing here ships
nothing and proves nothing; failing here proves no absence — it closes this
shop's wallet and attention on the question, permanently.

---

## 1. The hypothesis and its rebuttal, plainly

**Under test:** steep put skew — downside insurance (out-of-the-money puts)
priced rich relative to at-the-money options, a fingerprint of informed
sellers — predicts poor stock returns (Xing–Zhang–Zhao 2010).

**The rebuttal:** Muravyev–Pearson–Pollet show the predictability is largely
a **stock-borrow-fee artifact**: when a stock is hard to borrow, market
makers hedging puts must pay the borrow fee, which mechanically steepens the
put skew; the associated "alpha" lives in shorting those names — a leg this
long-only book cannot trade. The shop owns data on both sides of the
argument (the skew capture; the FINRA days-to-cover and Alpaca shortability
captures), so the test must both **measure** the signal and **attribute** it.

The original design would have conditioned on the binary hard-to-borrow
flag. That flag is **degenerate on this universe** — 0 of 889 Russell-1000
names were hard-to-borrow at the shortability registration — and a
conditioning branch that can never fire would launder "artifact not
confirmed" out of a test that could not have confirmed it. It is replaced by
graded constraint measures (§5) with an explicit UNDECIDABLE clause.

## 2. The pinned skew measure (real captured fields; no substitutes)

- **Signal = the `skew` field of `data/options_skew.jsonl`**, defined at
  capture as `iv_put_25d − iv_atm_call`: the implied volatility of the
  ~25-delta put minus that of the at-the-money call, on the single expiry
  nearest 30 days out (window 20–45 days), as computed by
  `data/options_skew.py:compute_skew`. Present since stream inception
  2026-06-09. **Higher = steeper put skew** (puts rich); the predicted
  relation to future returns is therefore **negative**.
- The later `cs_*` smile fields (captured since 2026-06-10) are **not**
  admissible alternates. No re-derived variant, transform, smoothing, or
  z-scoring may be substituted at evaluation. Rank statistics (§4) make
  winsorization moot, so none is applied.
- Duplicates: if a (date, symbol) pair appears more than once (heal re-runs
  append), the **last row in file order wins**.
- No liquidity filter: every row with a finite `skew` enters. The capture's
  own leg-matching already excludes unquotable names; adding a contract-count
  floor now would be an extra knob with no pre-stated need.

## 3. The pinned weekly panel

- **Signal dates:** within each ISO calendar week (Mon–Sun), the last capture
  date carrying **≥ 400** valid skew rows (roughly half the ~890-name daily
  recovery — a partial, mid-crash capture cannot stand in for the
  cross-section). A week with no qualifying date is skipped (missing, never
  interpolated).
- **Cross-section:** all valid rows on the signal date. The capture universe
  IS the production Russell-1000 run list at capture time — no retroactive
  membership edits.
- **Forward return** for signal date s with next signal date s′: adjusted
  close(first trading day after s′) ÷ adjusted close(first trading day
  after s) − 1, per name. Skipping one day before measuring mirrors the
  repo's `.shift(1)` no-lookahead convention (the 19:00Z snapshot can land
  in-market); chaining each window to the next signal date makes consecutive
  returns non-overlapping by construction. If s′ − s exceeds **10 trading
  days** (a dead-cron stretch), the observation is dropped rather than
  becoming one giant-horizon week.
- **Return source:** the `close` column (Tiingo-adjusted) of the owned
  frozen store `data/raw/`, read at evaluation time — the single resolution
  point the whole apparatus uses. Vendor re-basing rescales a name's entire
  past by a constant, so week-over-week return *ratios* are stable. Names
  missing the forward close (delisted mid-window) are dropped from that
  observation — this **biases against finding the effect** (the crash tail
  is where steep-skew blowups live); accepted for a screen and stated here
  so it cannot be discovered later.

## 4. The three pinned statistics (the whole family — nothing else counts)

**S1 — PRIMARY: weekly cross-sectional rank-IC.** Per signal date, the
Spearman rank correlation (do names rank the same on both lists?) between
`skew` and forward return across the cross-section. This is the information
coefficient ("IC"): one number per week saying whether steep-skew names
underperformed that week. Judged statistic: t = mean(IC) ÷ sd(IC, ddof=1) ×
√N over all N weeks from 2026-06-09 through the checkpoint date. **Predicted
sign: negative.** Chosen as primary for power: ~890 names × ~54 weeks is the
largest sample any owned consumer can produce.

**S2 — SECONDARY: the momentum-top-100 de-selection spread** — the only
sanctioned consumer (a defensive de-selection filter on the momentum
sleeve), measured directly. Per signal date:

1. Rank the universe by the production momentum composite exactly as
   `features/indicators.py` computes it under the momentum sleeve's pinned
   config (`strategy.momentum`: lookback 252, skip 5, smoothness_window 21,
   smoothness_weight 0.5; `.shift(1)` convention; prices from `data/raw`).
   Take the top 100.
2. Among the top 100 with valid skew that week (require ≥ 50, else the week
   is skipped for S2), the **steepest-skew quintile** = the ⌈n_valid/5⌉
   highest-skew names. Vetoed set = top-50 names in that quintile.
   Replacement set = the same count of highest-momentum names from ranks
   51–100 not themselves in the quintile.
3. Spread = equal-weight forward return of the vetoed set − same for the
   replacement set. Weeks where the veto binds zero names are skipped, and
   the **bind rate is reported** (a filter that never binds is vacuous — the
   same vacuity discipline as the shortability registration).

Judged statistic: t of the mean weekly spread, as in S1. **Predicted sign:
negative** (vetoed names underperform their replacements). Reported with its
confidence interval as the economics read; it is not expected to carry
power (§7).

**S3 — CONDITIONING: days-to-cover decile contrast** (the artifact test).
Days-to-cover = short interest ÷ average daily volume — how many days shorts
would need to buy back; a graded how-crowded-is-the-short-side measure, from
the owned FINRA capture (`data/short_interest/<settlement>.parquet`, column
`days_to_cover`). **Knowledge rule:** a partition is usable on signal dates
≥ its `settlement_date` + 9 business days (published ~T+7; +2 cushion — the
same publication-lag discipline item A4 demands of the engine hook). Per
signal date, deciles (ten equal buckets by rank) of days-to-cover within the
joined cross-section; contrast = IC within the top decile (most constrained)
− IC within deciles 1–5 pooled (unconstrained half). Judged statistic: t of
the mean weekly contrast. **Negative** = the effect concentrates in
constrained names (supports the borrow-fee-artifact reading); **positive** =
concentrates in unconstrained names (supports a clean signal).

- **Decidability floors:** a week counts only if the top decile holds ≥ 30
  names with valid skew and return and the pooled half ≥ 150. If fewer than
  half of otherwise-valid weeks pass, S3 is declared
  **UNDECIDABLE-ON-THIS-UNIVERSE** for that checkpoint: the attribution
  question was not answerable here, and the evaluation may NEVER report it
  as "artifact not confirmed". The family shrinks to S1/S2; the per-test bar
  does not loosen.

**Attribution companions (outside the family, report-only, same floors):**
the margin-requirement tail (`data/shortability/`, names with
`maintenance_margin_requirement` > 30 — known n ≈ 4 in-universe at pin time,
so **expected UNDECIDABLE**, stated now so its silence cannot be spun), and
item B2's option-implied borrow-fee wedge **if and only if** B2's own
registration has validated it (or graded it usable-as-ranks) by the
checkpoint — if B2 is unbuilt or unvalidated, the branch is simply ABSENT
and its absence carries zero evidential weight.

## 5. The decision rule (both checkpoints, verbatim)

- **Family:** exactly S1, S2, S3. **Bar:** |t| ≥ 2.4.
- **Authorization** (either checkpoint): S1 or S2 clearing the bar **in the
  predicted (negative) direction**, or S3 clearing it **in either
  direction** (its sign is the attribution and both signs are informative).
  A wrong-sign S1/S2 clearing 2.4 does NOT authorize — chasing a flipped
  sign is the instability trap the feasibility memo warned about; it is
  recorded as an anomaly, nothing more.
- **What authorization means:** the operator MAY buy retail chain history
  (the dollars are Dan's call — panel §6.4); any purchased-history study
  runs behind a NEW hash-frozen registration and the full SHIP gate. If the
  authorizing statistic is S3 in the negative (artifact) direction, the
  purchase memo must state in its first paragraph that it would be testing
  the constraint channel — redundancy with the free FINRA days-to-cover
  screen is the live risk.
- **Why 2.4:** with three looks, per-test p ≈ 0.008 (one-sided, S1/S2) +
  0.016 (two-sided, S3) gives a false-authorization rate ≈ 3.3% per
  checkpoint by union bound — the conventional ~5% family bar, held with
  room. The two checkpoints share their data (the second contains the
  first), so the combined rate across both looks stays well under the naive
  doubling.
- **Checkpoints:** data through **2027-06-30** (month ~12), evaluated after
  that date; data through **2027-12-31** (month 18), evaluated after that
  date. **Nothing between, nothing before, nothing after** — no interim
  computation of any of these statistics is permitted (the daily
  `capture-qa` integrity checks touch no returns and do not count).

## 6. The kill, verbatim

Below the bar at **both** checkpoints → the stream **demotes to insurance**:
the capture may keep running (near-zero marginal cost, and the chains/IV
consumers under other registrations — B1's term structure, the VRP research
class — are unaffected), but the stock-signal escalation door **closes
permanently**. No purchased history, no v2 of this hypothesis on this
apparatus, and future proposals may not cite the accrued skew as "untested
potential". **No relitigation.**

## 7. Power, printed (screen-grade, not SHIP-grade)

Let λ = mean(IC)/sd(IC) per week — the per-week signal-to-noise. Expected
t at N weeks is λ√N. Checkpoint 1 has N ≈ 54 usable weeks (55 calendar weeks
from inception minus expected misses); checkpoint 2 N ≈ 80.

| λ (per-week IC signal/noise) | E[t] @ ckpt 1 | P(clear 2.4) | E[t] @ ckpt 2 | P(clear 2.4) |
|---|---|---|---|---|
| 0.15 (plausible: large-cap, post-decay) | 1.10 | ~10% | 1.34 | ~15% |
| 0.25 (optimistic: full published all-cap strength) | 1.84 | ~29% | 2.24 | ~44% |

Even at the optimistic effect size the design clears the bar **less than
half the time by month 18**. That asymmetry is deliberate: the bar guards
the wallet (few false purchases), so a PASS is strong evidence of signal
while a FAIL is weak evidence of absence — and the spending door closes on
a FAIL anyway, because this shop budgets attention, not just truth. S2 is
a ~20-vs-20-name portfolio difference dominated by idiosyncratic noise:
reported for magnitude and bind rate, not expected to carry power. S3's
power depends on how the effect splits across deciles; no claim is made.

## 8. Change discipline

Append-only after today, like the December memo: corrections and context
arrive as dated appends below this line, never edits above it. The paired
CAPTURES.md amendment (same date, panel B4) supersedes the unnamed-test
clause and the "~June-30 / ~Aug" revisit points in the original
registration; the original text stays in place, per the registry's
append-only convention.

*Panel-Item: B4 — merged derivatives-PM + new-alpha-strategist proposal,
red-team revisions folded in (single binding primary; degenerate-flag
replacement with the UNDECIDABLE clause; spending-not-truth framing; two
pinned dates only).*
