{
  "version": "3.0-research",
  "frozenAt": "2026-09-13",
  "question": "Does a fixed cross-asset ensemble improve SOXX three-month return forecasts consistently across market periods?",
  "primaryCandidate": "ensemble",
  "target": "SOXX dividend-adjusted market-price return over the next three calendar months, at completed monthly closes",
  "baseInputs": "soxx-forecast-inputs.json",
  "additionalSeries": [
    "VIXCLS",
    "T10Y2Y"
  ],
  "availability": "Use latest observation at least seven calendar days before each actual monthly market close. Previous three-month feature level uses the same rule at the origin three calendar months earlier. Drop missing rows; no backward filling. Latest retrieved histories are not certified point-in-time vintages. Earlier origins use actual SOXX last trading dates. Reject sources more than seven days stale at the delayed cutoff.",
  "features": [
    "momentum12skip1",
    "relative6m",
    "distance10m",
    "volatility63d",
    "vixLevel",
    "vixChange3m",
    "curveLevel",
    "curveChange3m"
  ],
  "minimumMaturedLabels": 60,
  "training": "At every origin use only labels with end date on or before the origin; training-only scaling. No target winsorization, no forecast-sign restriction, and no test-driven parameter choices. All five models use the identical common eligible rows. Report exclusions; any missing fixed period or offset prevents promotion.",
  "ridgePenaltyMeanLoss": 1,
  "ridgeBlend": 0.5,
  "recentWindowLabels": 120,
  "clipStandardizedFeatures": 3,
  "models": {
    "mean": "Expanding mean of all matured target returns on common input rows.",
    "v2": "Existing V2 four-market-feature ridge, expanding training, no clipping, 50% mean shrinkage. Recomputed on common dates.",
    "cross_asset": "Eight-feature expanding ridge, train-only standardization clipped to [-3,3] for both train/current, centered clipped columns, intercept unpenalized, 50% shrinkage to its training target mean.",
    "adaptive": "Fit one separate univariate ridge per feature, for each of two histories: all matured labels and most recent 120 matured labels (or all if fewer). Same clipping and centering as cross_asset; each forecast uses 50% mean shrinkage. Equal-weight all 16 forecasts. No performance-weight selection.",
    "ensemble": "Primary fixed equal-weight average of v2, cross_asset and adaptive. Standalone components are diagnostic only; do not switch to the best component after evaluation."
  },
  "evaluation": {
    "start": "2008-01",
    "originMonths": [
      1,
      4,
      7,
      10
    ],
    "fixedPeriods": [
      [
        2008,
        2010
      ],
      [
        2011,
        2013
      ],
      [
        2014,
        2016
      ],
      [
        2017,
        2019
      ],
      [
        2020,
        2022
      ],
      [
        2023,
        2026
      ]
    ],
    "alternateOffsets": [
      [
        2,
        5,
        8,
        11
      ],
      [
        3,
        6,
        9,
        12
      ]
    ],
    "offsetWarning": "Each offset contains disjoint three-month windows internally. Different offsets overlap and cannot be pooled or counted as independent tests.",
    "regimes": "Descriptive only, based on SOXX distance10m at origin: negative = below trend, otherwise at/above trend.",
    "status": "Retrospective walk-forward reconstruction. Specification was made after V1/V2 research and all data already existed. No pristine holdout; repeated research can bias results."
  },
  "uncertainty": {
    "replications": 5000,
    "quarterBlockLengths": [
      2,
      4
    ],
    "seed": 20260913,
    "definition": "95% paired bootstrap skill intervals versus the common expanding-mean benchmark, at block lengths two and four quarters. The incumbent V2 gate is a separate point estimate."
  },
  "historicalPromotionGates": {
    "primarySkillVsMeanPositive": true,
    "skillVsV2Nonnegative": true,
    "bothBlockIntervalsLowerBoundAboveZero": true,
    "minimumPositiveFixedPeriods": 5,
    "worstFixedPeriodSkillAtLeastPct": -5,
    "latestPeriodSkillVsMeanPositive": true,
    "bothAlternateOffsetsSkillVsMeanPositive": true
  },
  "promotionMeaning": "Passing every gate permits a historically robust research label only. It does not establish future reliability. Failure retains V2 as the incumbent research forecast; never pick another component because it looks better in the final test.",
  "prospectiveGate": "No stable live edge claim without at least 12 disjoint completed prospective quarterly outcomes logged immediately after the information cutoff and before the future return path is observed, with immutable issue timestamps and no historical backdating, compared with frozen benchmarks and recalculated uncertainty. Minimum sample count is a floor, not proof. No completed prospective forecasts exist today.",
  "stoppingRule": "One predeclared experiment for this iteration. Report every fixed component, period and offset regardless of result. Do not add variables, thresholds or models after scoring. Data or code errors may be repaired with the reason recorded.",
  "sources": [
    {
      "title": "Cboe VIX via FRED",
      "url": "https://fred.stlouisfed.org/series/VIXCLS"
    },
    {
      "title": "10-year minus 2-year Treasury spread via FRED",
      "url": "https://fred.stlouisfed.org/series/T10Y2Y"
    },
    {
      "title": "Campbell and Thompson: restricted forecasts and historical-mean benchmark",
      "url": "https://www.nber.org/papers/w11468"
    },
    {
      "title": "Goyal and Welch: out-of-sample equity premium prediction",
      "url": "https://www.nber.org/papers/w10483"
    }
  ],
  "preScoreClarifications": "Independent protocol review clarified common samples, paired interval denominator, actual earlier market closes, a stale-source rejection limit and prospective issue timing before any V3 scoring."
}
