Methodology: the retired quant pipeline, as it ran

This page describes the cross-sectional equity model behind the Lab and Validation pages. The research cases and the Atlas carry their own method sections. Everything below refers to the last run, 2026-04-29 (V12). The programme was retired after that run; nothing on this page is current.

What is public, and what is not

  • Public: the run record below (inputs, parameters, outputs, validation), the output file the site renders, published unedited at /data/signals.json, and every validation figure with its provenance.
  • Not public: the pipeline code, the pipeline manual and configuration, the per-run artifacts, and the price and option-chain caches. Earlier copy on this site referred to a public repository; there is none. The stated intent to open the code has not been carried out, and this page will say so until it is.
  • Not on this site: any actual account performance. Nothing here is a trading record.

Run record: 2026-04-29, V12

One de-identified worked case, so every number on the Lab and Validation pages can be traced to an input, a parameter, and a validation rule.

Inputs

Universe
30 U.S. mega-caps, hand-curated on 2026-04-29 for sector balance (Tech 7, Semi 4, Fin 4, HC 3, Disc 3, Staples 3, other Tech 2, Telecom 2, Energy 1, Industrials 1). The earlier liquidity-only screen was dropped because a 5-name change swung the OOS IC by about 0.10.
Prices
yfinance daily OHLCV, split- and dividend-adjusted; lookback 756 trading days (about 3 years)
Option chains
yfinance chains at run time, 21–45 days to expiry; ATM implied vol taken from the chain when plausible (5%–300%), else imputed
Fundamentals
yfinance snapshot for sector mapping; sector membership treated as time-invariant across the lookback
Regime
VIX level at each prediction month end; all 19 OOS months classified Moderate on this run

Parameters

Factors tested
11: low_vol_60d, beta_residual, sector_neutral_momentum, momentum_12_1, price_acceleration, volume_trend, ret_5d, momentum_3_1, volume_shock, short_term_reversal, volatility_ratio
Factor screen
keep if p < 0.10 on the monthly IC t-test, or |mean IC| ≥ 0.05 (economically large). Winsorised 5/95, z-scored
Factors kept
4: low_vol_60d, beta_residual, sector_neutral_momentum, momentum_12_1
Ensemble
Ridge / ElasticNet / Gradient Boosting, weighted by inverse OOS MAE (0.334 / 0.335 / 0.331). The walk-forward validation trains on all 11 panel factors; the final-month model that produced the published estimates trains on the 4 factors that survived the screen, so that step is screen-then-train and inherits the leakage caveat
Shrinkage
James-Stein on the blended prediction, gated on OOS IC: floor 0 below IC 0.02 (no-skill), 0.3 up to 0.05, 0.5 above
Horizon
1-month forward return, cross-sectional; monthly refit, bi-weekly refresh was the intended cadence
Monte Carlo
80,000 Merton jump-diffusion paths (jump intensity and size estimated from each name’s own return history), 30 days, realised-vol input blended with a mean-reverting forecast, VRP haircut. The config file says "gbm"; that field is not read by the stage
Options candidates
stock / ATM call / OTM call (δ≈0.20) / bull call spread / put credit spread; cost = half-spread per leg from the observed chain
Tier rule, as coded
rank by estimate × rank score / 100, where the rank score is the estimate’s percentile rank within the cross-section, floored at 30 and capped at 95 (not a probability); the product is monotone in the estimate, so the ordering is the estimate’s own with the score breaking ties; the first quintile (ranks 1–6 of 30) is HIGH if the estimate exceeds 2%; the second quintile (ranks 7–12) is MED if the estimate exceeds 0.5%; everything else is LOW; every name is forced LOW when the walk-forward IC falls below 0.02. The 30% / 85% thresholds in the config file are decorative and do not run

Outputs

signals.json
30 rows; tiers HIGH 6 / MED 6 / LOW 18; 12 names with an options strategy, 12 of them costed from a live chain
OOS panel
19 months, 2024-09-30 → 2026-03-31; 570 stock-month observations; mean IC 0.0271 (t = 0.41)
Long-short leg
top-quintile minus bottom-quintile, equal-weight, monthly rebalance, no costs; annualised Sharpe 0.74
Regime
Moderate
Published
2026-04-29

Validation

Battery run after the walk-forward
Deflated Sharpe (Bailey & López de Prado 2014) on the monthly IC series with 20 trials assumed; stationary bootstrap (Politis & Romano 1994) of the monthly IC with 2000 resamples; purged hold-out dropping the last 3 months and re-running the walk-forward. The rule for each test was fixed before the run
Where the results are
recorded, unedited, in the significance block of the published output file at /data/signals.json
Programme status
retired after this run

Pipeline, stage by stage

1

Universe and data

A fixed 30-name basket of U.S. mega-caps with liquid options, chosen for sector balance. Daily adjusted prices over about three years and the current option chain per name. Prices are single-source (the config declares a secondary-source cross-check that was never implemented); the cache is a living file and re-adjusts on new dividends and splits.

2

Cross-sectional factors

Eleven price-based factors spanning momentum, reversal, volatility, volume and beta residual, computed monthly, winsorised and z-scored. Each is tested by monthly information coefficient; four survived the screen on this run. One kept factor (60-day low vol) entered with a negative sign, which the note on the Validation page explains as regime-specific.

3

Ensemble estimate

Ridge, ElasticNet and gradient boosting trained on prior months only, blended by inverse out-of-sample error, with James-Stein shrinkage that collapses every prediction to the regime prior when the walk-forward IC falls below 0.02. The cross-section z-score of the estimate is the signal; the raw percentage is low-information about absolute direction.

4

Monte Carlo and vol edge

80,000 Merton jump-diffusion paths per name over 30 days from a blended realised-vol input, with jump parameters estimated from the name's own return history, compared with the chain's ATM implied vol to produce a vol-edge figure. This is a forward simulation, not a historical test.

5

Options overlay

Five candidate structures per name priced against the Monte Carlo distribution and charged a half-spread per leg from the observed chain. A strategy is assigned only to HIGH and MED names. Because historical option chains could not be retrieved (the attempt on 2026-04-24 was blocked at the broker's contract-resolution endpoint), the overlay has never been backtested; its return and win-rate figures are forward simulations.

6

Validation and publication

The validation battery runs after the walk-forward and its results are written into the output file. The tracker that would compare a snapshot with realised returns after its one-month window never produced a published row. The programme was retired after the 2026-04-29 run.

Execution costs, disclosed per module

Earlier copy on this site promised “real execution costs” site-wide. That was true of one module and false of another. The table replaces the promise.

ModuleWhat is reportedCosts includedBacktested?
Equities long-short (Validation page)IC, L/S monthly return, Sharpe, CAGR, drawdown over 19 OOS monthsNone: no spread, no slippage, no borrow, no financing. Pre-cost figuresWalk-forward, yes
Options overlay (Lab page)Per-name return on capital and win rate for the assigned structureHalf-spread per leg estimated from the chain observed at run timeNo: forward Monte Carlo only
Actual account performanceNot published on this site——

Known limitations, in order of how much they matter

  1. Nineteen out-of-sample months. Enough to run the validation battery, nowhere near enough for a tight interval on any figure.
  2. Universe sensitivity. Under the previous auto-screen a five-name change moved the OOS IC by about 0.10. The fixed basket removes the drift, not the sensitivity.
  3. No cost in the equities backtest. Reported Sharpe and CAGR are upper bounds on any implementable version.
  4. Options overlay never backtested. Its figures are forward simulations off today's implied vol surface.
  5. Data drift. yfinance adjusted prices change retroactively, so marginal signals can flip between builds; the size of that effect on this pipeline has not been measured.
  6. Sector map is static across the lookback; the walk-forward trains on all eleven raw factors and has to regularise the noise ones away, while the final-month model trains only on the kept factors.
  7. Evaluation never closed. The 2026-04-29 snapshot's one-month window ended on 2026-05-29 and no realised-versus-estimate row was computed.

This methodology describes quantitative research techniques for educational purposes only. It is not investment advice and should not be used as the basis for any investment decision. Model outputs are hypothetical, and the programme is retired.