Methodology
Where every number in our engine comes from.
Every threshold, every data source, every step is documented and logged. Pool membership is a liquidity rule, not a ranking. Execution is fixed code. Nothing in the path is human-curated, and every candidate is leakage-checked. This page is the audit trail.
Data sources
Three external systems feed every decision the engine makes. None are proprietary; the same data is available to anyone with API access.
End-of-day options chains, volume, open interest, dollar flow, contract metadata across about 3,500 optionable US stocks.
Pulled at 23:00 ET nightly by overnight-scanner.
VIX and VIX3M daily close, used for the term-structure regime gate.
Pulled at signal-decision time (~09:50 ET, just before the 10:00 entry) by signal-notifier.
Canonical storage for overnight signals, enriched signals, the forward paper-trading ledger, and signal performance outcomes.
Written by every service in the pipeline; queries reproducible from any timestamp.
The liquidity rule and two safety rails
Membership starts as a liquidity rule. Every name in the top-100 liquid universe that reads bullish is eligible, and most days more than 50 qualify. A deterministic point-in-time rank (delta band, 60-day momentum, a liquidity demotion) cuts to 50, using no outcome data and no learned weights. The pool runs roughly 40 to 50 names and it floats with the market, so a down day gives a smaller pool. The old moneyness, open-interest, volume, DTE, and V/OI filters were removed on 2026-06-04. They choked real winners on stale scan-time data. Bid/ask spread is no longer shown or gated, because this Polygon data tier serves no live options quotes.
liquid universe: 3M+ shares, 25+ listed strikes, top 100 by z(chain $ volume) + z(share volume)
Applied in overnight-scanner
This is the gate that does the work, and it selects on tradeability rather than on unusual activity. A name must have traded 3M+ shares that session and carry a chain with 25 or more listed strikes, then the top 100 by combined chain dollar volume and share volume survive. Live since 2026-08-24. The $500K directional-UOA floor it replaced was dropped in the same change: inside a liquid universe every name already carries heavy flow, so the floor stopped selecting and only thinned the pool. Open interest is deliberately not an input, because no OI history exists in this stack and ranking on the current snapshot would be lookahead.
overnight_score ≥ 1
Applied in enrichment-trigger
Deterministic premium-flow flags (call/put dollar skew, Vol/OI, active strikes, new positioning, price momentum, plus a divergence bonus) sum to a base score, and a sector-cluster boost can lift it, capped at 10. The floor is 1 and it is cosmetic: nearly every name in the liquid universe already clears it. On its own the score barely predicts outcomes, so we do not filter harder on it. Flow orders the pool; it no longer decides membership.
BULLISH-only, one out-of-the-money call per name
Applied in enrichment-trigger
A hard bullish gate (since 2026-06-11): only call setups enter the pool. One out-of-the-money call is priced per surviving name, chosen on contract liquidity. The cap of 50 does not currently bind, so the pool is simply every bullish name in the top-100 liquid universe: there is no hidden ranking deciding membership. Note that we surface the most liquid NAMES and then choose a contract inside each, not the most liquid contracts in the market, which would be the same index products every day. Why bullish only: on a 3-day +80/−60 bracket replay of the pre-2026-08-25 pool (N=1,375 fills), the bearish arm measured worse than the bullish one. That is the reason the gate exists, not a signal the funnel acts on. The pool no longer carries a bearish arm, so the comparison cannot be re-run inside it.
no earnings during the same-day hold
Applied in signal-notifier · safety rail
Exclude any ticker reporting earnings inside the hold window. Holding long single-leg options through an earnings print is a documented loss pattern (De Silva et al. 2026, Review of Finance; Cao & Han 2013, JFE). Fail-closed if the earnings calendar is unreachable.
VIX ≤ VIX3M (no backwardation)
Applied in signal-notifier · safety rail
Term-structure regime gate. When 30-day VIX exceeds 90-day VIX3M, the market is pricing acute near-term stress and directional long-premium trades degrade. Skip the entire day. Fail-closed if either value is missing.
The selection tournament
The pool that clears the two safety rails runs roughly 40 to 50 bullish candidates. The paper cohort tracks one of them per day, chosen by a randomized bracket tournament. Not a scoring formula, not a human. That result is not published and there is no pick endpoint. Two pre-registered studies on 2026-08-22 measured the pool as indistinguishable from matched random contracts, so read the tournament as how the cohort chooses one position to track, not as evidence of a selection edge.
- Three independent brackets. A deterministic point-in-time rank first narrows the pool to 12 (delta band, reward/risk, ATR-normalized move). Each bracket shuffles those 12 into a fresh random order, then reduces them in batches of ≤10: an LLM (Gemini) reads each batch and advances the top 2, round after round, until one winner remains.
- Consensus vote. The three bracket winners are compared. 3/3 agreement → high confidence, 2/3 → medium, 1/3 → low. The consensus ticker is the pick.
- Dead-simple prompt. Each batch call gets one instruction, quoted verbatim from the prompt: make money buying a single option and sell it for a profit within one day. It also gets the daily report and a per-contract JSON. No memory, no rubric, no composite weights.
- Fail-closed. Any error (a timeout, a pick outside the eligible set, an all-leakage day) produces no email and a no-trade day.
- Live liquidity check. At selection time (~09:50 ET, just before the 10:00 paper entry), the engine re-checks each candidate's live open interest and recent print activity, then drops any contract that reads too thin. It fails closed, and a dropped candidate never comes back. The cohort should not simulate a fill nobody could have gotten.
Every candidate is leakage-checked before it can enter a bracket: the judge never sees anything that wasn't known at scan time.
The bracket math
The paper cohort's bracket is fixed within a cohort and versioned across eras. The live V7.1 configuration is a same-day envelope: −30% stop, +40% target, flat at 15:45 ET. It is not a guess. It came out of a bracket sweep across thousands of historical signals, measured on the pre-2026-08-25 pool. It is a measurement instrument, not a recommended exit. Your agent picks its own hold.
10:00 ET, day 1
After the open settles, before midday drift. Buy 1 contract at market.
−30% on option premium
Stop-limit on the contract. The intraday V7 envelope tightens the stop to −30%. On a same-day hold there is no overnight gamma whipsaw to ride out.
+40% on option premium
Limit sell. Asymmetric against the stop, 4:3 reward/risk in option-premium space. The bracket is a measurement instrument for the paper cohort, not a profitability claim. Our own published research, measured on the pre-2026-08-25 pool, shows a fixed bracket applied blindly across the whole pool loses.
Same trading day
V7 “GIGO”: Get In, Get Out. Enter at the open, take profit or stop intraday, and flatten before the close. Nothing carries overnight.
15:45 ET, same day
If neither stop nor target filled, market sell at 15:45 the same day, before the close-print volatility and after most of the day's move is in.
Reproducibility
The full pipeline is open-architecture. Every artifact is auditable.
- Forward paper-trading ledger: every entry, exit, and outcome lives in BigQuery. The whole pool's outcomes are aggregated into the public Track Record; per-row data is queryable over the MCP.
- Decision trail: every change to the strategy (V7 today, and its predecessors back to V3) ships with a dated decision document explaining the rationale and the evidence.
- Trace logging: enrichment, the tournament judge, and overnight-report-generator each write structured trace rows so a downstream auditor can reconstruct any specific morning's reasoning end-to-end, including every bracket round.
What this engine does NOT do
No black-box scoring model.
The selection tournament is an LLM, but it has no learned weights, no rubric, and no memory of past trades, just a simple prompt and a randomized bracket, run three times for consensus. A deterministic pre-rank chooses which 12 candidates enter it. Every candidate is leakage-checked before the model ever sees it.
No model in the execution path.
The tournament picks the ticker; it never sets the price levels. Entry, the −30% stop, the +40% target, and the same-day exit are fixed code with no model in the loop.
No manual override of the engine.
Whatever wins the tournament is what the cohort tracks. No "I've got a feeling" veto, no last-minute swap.
No live execution.
Every position is paper-traded against the same data feed using the same bracket. The ledger is a forward simulator, not a brokerage.
No track-record marketing pre-30-trades.
The raw ledger and preliminary aggregates are public from day one, always with sample size attached. But until a cohort has 30 closed paper trades we make no marketing claims from them: no advertised win rate, no Sharpe, no expectancy claims.
Want your agent working this methodology?
Browse the pool free on the signals page, or connect your agent over MCP and let it query the pool, the 3-day opportunity surfaces (realized MFE and MAE), and the outcome history directly. The paid tools run in Claude Code, Codex, Cursor, Gemini CLI, and any client that can send a bearer key. The methodology on this page ships as playbooks your agent can run.
Paper-trading performance, educational only. Not investment advice. Past performance is not a guarantee of future results.