{
  "article": {
    "official_admission": false,
    "required_headings": [
      "Summary",
      "Source",
      "What the source claims",
      "Rules actually disclosed",
      "What had to be inferred",
      "Research questions",
      "Data",
      "Baseline implementation",
      "What the signal looks like",
      "Historical events",
      "State-space exploration",
      "Parameter sensitivity",
      "What worked",
      "What did not work",
      "Why the failures appear to happen",
      "Regime behavior",
      "Timing and cost sensitivity",
      "Combinations",
      "Candidate frontier",
      "Agent assessment",
      "Limitations",
      "What to try interactively",
      "Suggested next research",
      "Promotion status",
      "Trial ledger",
      "Validation protocol",
      "Portfolio contribution"
    ],
    "research_tags": [
      "data_limited",
      "fidelity_mismatch",
      "parameter_sensitive",
      "regime_dependent",
      "predictive_not_tradable",
      "interesting_negative_result",
      "needs_more_research"
    ],
    "sections": {
      "Baseline implementation": {
        "available_signal_observations": 1285,
        "claim_kind": "inferred",
        "execution": "one available monthly bar is the causal baseline; two-bar lag is conservative sensitivity; lag 0 is research-only.",
        "execution_status": "same_close_research_only",
        "exploratory": true,
        "family": "indpro_health",
        "family_description": "inferred INDPRO activity proxy below a trailing mean",
        "hold_months": 1,
        "id": "recessionalert.1344.indpro_health.lb6.lag0.t0p0",
        "input_names": [
          "INDPRO"
        ],
        "lag_bars": 0,
        "lookback": 6,
        "market_inputs": [
          "SPY",
          "IEF",
          "BIL"
        ],
        "metrics": {
          "SPY_BIL": {
            "annualized_return": 0.09297474022891805,
            "benchmark_total_return": 5.9368716911788315,
            "end": "2026-06-30",
            "max_drawdown": -0.16221310705313907,
            "observations": 229,
            "risk_off_fraction": 0.37554585152838427,
            "sharpe": 0.8544601344677404,
            "start": "2007-06-30",
            "total_return": 4.455190068956827,
            "volatility": 0.11163990440234395
          },
          "SPY_IEF": {
            "annualized_return": 0.09588816367698749,
            "benchmark_total_return": 11.69295042059387,
            "end": "2026-06-30",
            "max_drawdown": -0.17612333323309304,
            "observations": 287,
            "risk_off_fraction": 0.3310104529616725,
            "sharpe": 0.8545124270567294,
            "start": "2002-08-31",
            "total_return": 7.934614480068149,
            "volatility": 0.11528209476306092
          }
        },
        "missingness": "warm-up and unavailable states remain unavailable, never converted to risk-on",
        "publication_lag": "source unknown; campaign uses monthly cutoff and explicit execution lag",
        "risk_off_events": 91,
        "risk_off_fraction": 0.3027237354085603,
        "rule_label": "binary inferred risk-off overlay; no native RecessionAlert buy/sell rule is claimed",
        "same_close_status": "research_only_sensitivity",
        "signal_span": "1919-06-30 to 2026-06-30",
        "source_identity": "public aggregate proxy; not the undisclosed 23-component source index",
        "spec_id": "recessionalert.1344.indpro_health.lb6.lag0.t0p0",
        "threshold": 0.0,
        "unavailable_signal_observations": 5
      },
      "Candidate frontier": [
        {
          "category": "best_return",
          "claim_kind": "inferred",
          "disposition": "exploratory comparison only; not promoted",
          "exploratory": true,
          "metrics": {
            "annualized_return": 0.09588816367698749,
            "benchmark_total_return": 11.69295042059387,
            "end": "2026-06-30",
            "max_drawdown": -0.17612333323309304,
            "observations": 287,
            "risk_off_fraction": 0.3310104529616725,
            "sharpe": 0.8545124270567294,
            "start": "2002-08-31",
            "total_return": 7.934614480068149,
            "volatility": 0.11528209476306092
          },
          "rank": 1,
          "variant_id": "recessionalert.1344.indpro_health.lb6.lag0.t0p0"
        }
      ],
      "Data": {
        "canonical_native_span": "single March 3, 2016 HTML article snapshot; narrative shown through January 2016; no component observations",
        "canonical_publication_lag": "unknown; no recurring release clock, timestamp, timezone, vintage, or point-in-time policy disclosed",
        "canonical_sha256": "sha256:deedcf22d1d280248542375b8093cf84c98462b27f8eb4f92d09c0d5e1c8b246",
        "canonical_source": "research/artifacts/recessionalert/manifest.json + research/findings/recessionalert_inventory.md + read-only data/recessionalert.sqlite",
        "database_policy": "All reads use SQLite mode=ro; no canonical crawl or market cache mutation.",
        "primary_common_window": "2007-05 through 2026-06 after monthly alignment and BIL intersection",
        "proxy_inputs": "FRED INDPRO/UNRATE/T10Y3MM and Yahoo SPY/IEF/BIL snapshots represented by checked-in data/market.sqlite",
        "redistribution": "Publish derived metrics, proxy labels, source hashes, gap notes, charts, and notebook only; no raw page/media, credentials, cookies, or private account data."
      },
      "Limitations": [
        "Source-linked observations, identifiers, units, transformations, and native history for all 23 components and the later 21-component views.",
        "Component membership, weights, normalization, score range, missing-input behavior, and reconciliation of the 23-versus-21 discrepancy.",
        "Four recession-probability model equations, calibration, outputs, and exact highest-two averaging behavior.",
        "Numeric action threshold, persistence, smoothing, buy/sell/hold side, instrument, sizing, rebalance, holding period, costs, exits, and re-entry.",
        "Recurring monthly release calendar, publication lag, timestamp, timezone, vintage, revision, and point-in-time availability policy.",
        "Source-linked market/recession outcome history and an independent validation window for the article's warning claims.",
        "All evaluated families below are public inferred proxies and must not be presented as native RecessionAlert fidelity or registered as an official indicator."
      ],
      "Portfolio contribution": {},
      "Promotion status": "No promotion. Native source remains fidelity-only; proxy results are exploratory Other / Research evidence.",
      "Research questions": [
        "What can be learned from the SHA-verified RecessionAlert monthly leading-index narrative using transparent public proxies when its observations, transformations, lag, thresholds, and market rule are incomplete?"
      ],
      "Rules actually disclosed": [
        "Monthly component context, 23 named components, four probability interpretations, highest-two preference, and 21-component Long-/Short-leading context; no executable state machine."
      ],
      "Source": {
        "article_timestamp": "2016-03-03",
        "database": "data/recessionalert.sqlite opened read-only",
        "fetched_at": "2026-08-22T23:45:29Z",
        "inventory": "research/findings/recessionalert_inventory.md",
        "manifest": "research/artifacts/recessionalert/manifest.json",
        "native_span": "single March 3, 2016 HTML article snapshot; narrative shown through January 2016; no component observations",
        "publication_lag": "unknown; no recurring release clock, timestamp, timezone, vintage, or point-in-time policy disclosed",
        "redacted_url": "https://recessionalert.com/a-new-long-leading-us-index/",
        "sha256": "sha256:deedcf22d1d280248542375b8093cf84c98462b27f8eb4f92d09c0d5e1c8b246"
      },
      "State-space exploration": [
        "Nine labeled variants tested; negative outcomes preserved in state-space.json."
      ],
      "Suggested next research": [
        "Can an authorized redistributable source-linked monthly panel or chart be obtained?",
        "What exact transformations, weights, component membership, probability calibration, and highest-two missing behavior did the source use?",
        "What recurring publication timestamps, vintages, revisions, and point-in-time cutoffs apply?",
        "Can the source's warning claims be recomputed against a defined market outcome?",
        "Does any complete buy/sell/hold/exit rule exist beyond the qualitative narrative?"
      ],
      "Summary": [
        "The SHA-verified article discloses monthly component context, four qualitative probability interpretations, a highest-two preference, and Long-/Short-leading views, but not an executable signal.",
        "INDPRO, UNRATE, and T10Y3MM are transparent public aggregate proxies selected for local history; they do not recover the source's component identity.",
        "Nine labeled variants ran over the BIL-limited common window; 9 variants underperformed the SPY benchmark and all outcomes remain in the ledger.",
        "The causal baseline uses one available monthly bar; lag zero is timing-only and warm-up/missing inputs remain unavailable.",
        "No inferred variant is promoted or registered as an official RecessionAlert indicator; this is Other / Research evidence."
      ],
      "Trial ledger": [
        {
          "iteration": 1,
          "status": "published",
          "summary": "Offline public-proxy campaign published while native source-fidelity gaps remain."
        }
      ],
      "Validation protocol": {},
      "What did not work": [
        "Aggregate proxies cannot validate the native RecessionAlert identity or source performance claims."
      ],
      "What had to be inferred": [
        "INDPRO/UNRATE/T10Y3MM proxies, lookbacks, thresholds, one/two-bar execution, and SPY/IEF/BIL overlays."
      ],
      "What the source claims": [
        "The article names 23 monthly components and says the index is shown through January 2016, but supplies no source-linked observations or transformations.",
        "The article describes four recession-probability interpretations and a preferred average of the highest two, but gives no equations, calibration, or output series.",
        "The article describes Long-leading and Short-leading views from 21 components, without reconciling the 23-component list.",
        "This campaign tests INDPRO, UNRATE, and T10Y3MM public proxies with explicit lookback, threshold, and lag neighbors; they are not native source fidelity.",
        "SPY risk-on versus IEF/BIL defensive sleeves are descriptive inferred overlays because the source provides no target, sizing, or exit rule."
      ],
      "What to try interactively": [
        {
          "default": "recessionalert.1344.indpro_health.lb12.lag1.t0p0",
          "description": "Select an inferred public proxy variant; no setting is disclosed by RecessionAlert.",
          "name": "variant",
          "values": [
            "recessionalert.1344.indpro_health.lb6.lag0.t0p0",
            "recessionalert.1344.indpro_health.lb12.lag1.t0p0",
            "recessionalert.1344.indpro_health.lb21.lag2.tm0p5",
            "recessionalert.1344.unrate_regime.lb6.lag0.t0p0",
            "recessionalert.1344.unrate_regime.lb12.lag1.t0p5",
            "recessionalert.1344.unrate_regime.lb21.lag2.t0p0",
            "recessionalert.1344.curve_stress.lb6.lag0.t0p0",
            "recessionalert.1344.curve_stress.lb12.lag1.t0p0",
            "recessionalert.1344.curve_stress.lb21.lag2.tm0p5"
          ]
        },
        {
          "default": 1,
          "description": "Lag 1 is the causal baseline; lag 0 is research-only same-close sensitivity.",
          "name": "execution_lag",
          "values": [
            0,
            1,
            2
          ]
        },
        {
          "default": "IEF",
          "description": "Descriptive inferred sleeve; the source discloses no target instrument.",
          "name": "defensive_sleeve",
          "values": [
            "IEF",
            "BIL"
          ]
        }
      ]
    },
    "title": "A new monthly leading US index | RecessionAlert \u2014 exploratory proxy campaign"
  },
  "campaign": {
    "campaign_id": "recessionalert-new-monthly-leading-us-index",
    "iteration_number": 1,
    "research_tags": [
      "data_limited",
      "fidelity_mismatch",
      "parameter_sensitive",
      "regime_dependent",
      "predictive_not_tradable",
      "interesting_negative_result",
      "needs_more_research"
    ],
    "status": "published",
    "title": "A new monthly leading US index | RecessionAlert \u2014 exploratory proxy campaign"
  },
  "candidate_frontier": [
    {
      "category": "best_return",
      "claim_kind": "inferred",
      "disposition": "exploratory comparison only; not promoted",
      "exploratory": true,
      "metrics": {
        "annualized_return": 0.09588816367698749,
        "benchmark_total_return": 11.69295042059387,
        "end": "2026-06-30",
        "max_drawdown": -0.17612333323309304,
        "observations": 287,
        "risk_off_fraction": 0.3310104529616725,
        "sharpe": 0.8545124270567294,
        "start": "2002-08-31",
        "total_return": 7.934614480068149,
        "volatility": 0.11528209476306092
      },
      "rank": 1,
      "variant_id": "recessionalert.1344.indpro_health.lb6.lag0.t0p0"
    }
  ],
  "candidate_variants": [
    {
      "available_signal_observations": 1285,
      "claim_kind": "inferred",
      "execution": "one available monthly bar is the causal baseline; two-bar lag is conservative sensitivity; lag 0 is research-only.",
      "execution_status": "same_close_research_only",
      "exploratory": true,
      "family": "indpro_health",
      "family_description": "inferred INDPRO activity proxy below a trailing mean",
      "hold_months": 1,
      "id": "recessionalert.1344.indpro_health.lb6.lag0.t0p0",
      "input_names": [
        "INDPRO"
      ],
      "lag_bars": 0,
      "lookback": 6,
      "market_inputs": [
        "SPY",
        "IEF",
        "BIL"
      ],
      "metrics": {
        "SPY_BIL": {
          "annualized_return": 0.09297474022891805,
          "benchmark_total_return": 5.9368716911788315,
          "end": "2026-06-30",
          "max_drawdown": -0.16221310705313907,
          "observations": 229,
          "risk_off_fraction": 0.37554585152838427,
          "sharpe": 0.8544601344677404,
          "start": "2007-06-30",
          "total_return": 4.455190068956827,
          "volatility": 0.11163990440234395
        },
        "SPY_IEF": {
          "annualized_return": 0.09588816367698749,
          "benchmark_total_return": 11.69295042059387,
          "end": "2026-06-30",
          "max_drawdown": -0.17612333323309304,
          "observations": 287,
          "risk_off_fraction": 0.3310104529616725,
          "sharpe": 0.8545124270567294,
          "start": "2002-08-31",
          "total_return": 7.934614480068149,
          "volatility": 0.11528209476306092
        }
      },
      "missingness": "warm-up and unavailable states remain unavailable, never converted to risk-on",
      "publication_lag": "source unknown; campaign uses monthly cutoff and explicit execution lag",
      "risk_off_events": 91,
      "risk_off_fraction": 0.3027237354085603,
      "rule_label": "binary inferred risk-off overlay; no native RecessionAlert buy/sell rule is claimed",
      "same_close_status": "research_only_sensitivity",
      "signal_span": "1919-06-30 to 2026-06-30",
      "source_identity": "public aggregate proxy; not the undisclosed 23-component source index",
      "spec_id": "recessionalert.1344.indpro_health.lb6.lag0.t0p0",
      "threshold": 0.0,
      "unavailable_signal_observations": 5
    },
    {
      "available_signal_observations": 1279,
      "claim_kind": "inferred",
      "execution": "one available monthly bar is the causal baseline; two-bar lag is conservative sensitivity; lag 0 is research-only.",
      "execution_status": "causal_one_available_bar",
      "exploratory": true,
      "family": "indpro_health",
      "family_description": "inferred INDPRO activity proxy below a trailing mean",
      "hold_months": 1,
      "id": "recessionalert.1344.indpro_health.lb12.lag1.t0p0",
      "input_names": [
        "INDPRO"
      ],
      "lag_bars": 1,
      "lookback": 12,
      "market_inputs": [
        "SPY",
        "IEF",
        "BIL"
      ],
      "metrics": {
        "SPY_BIL": {
          "annualized_return": 0.09192944164237105,
          "benchmark_total_return": 5.9368716911788315,
          "end": "2026-06-30",
          "max_drawdown": -0.23927178828328344,
          "observations": 229,
          "risk_off_fraction": 0.35807860262008734,
          "sharpe": 0.828862914978311,
          "start": "2007-06-30",
          "total_return": 4.356484166897975,
          "volatility": 0.11430654860177199
        },
        "SPY_IEF": {
          "annualized_return": 0.10545785960709031,
          "benchmark_total_return": 11.69295042059387,
          "end": "2026-06-30",
          "max_drawdown": -0.23927178828328344,
          "observations": 287,
          "risk_off_fraction": 0.29965156794425085,
          "sharpe": 0.9006444252547302,
          "start": "2002-08-31",
          "total_return": 9.999782224487655,
          "volatility": 0.1196917315180084
        }
      },
      "missingness": "warm-up and unavailable states remain unavailable, never converted to risk-on",
      "publication_lag": "source unknown; campaign uses monthly cutoff and explicit execution lag",
      "risk_off_events": 48,
      "risk_off_fraction": 0.2720875684128225,
      "rule_label": "binary inferred risk-off overlay; no native RecessionAlert buy/sell rule is claimed",
      "same_close_status": "not_used",
      "signal_span": "1919-12-31 to 2026-06-30",
      "source_identity": "public aggregate proxy; not the undisclosed 23-component source index",
      "spec_id": "recessionalert.1344.indpro_health.lb12.lag1.t0p0",
      "threshold": 0.0,
      "unavailable_signal_observations": 11
    },
    {
      "available_signal_observations": 1270,
      "claim_kind": "inferred",
      "execution": "one available monthly bar is the causal baseline; two-bar lag is conservative sensitivity; lag 0 is research-only.",
      "execution_status": "causal_two_available_bars",
      "exploratory": true,
      "family": "indpro_health",
      "family_description": "inferred INDPRO activity proxy below a trailing mean",
      "hold_months": 3,
      "id": "recessionalert.1344.indpro_health.lb21.lag2.tm0p5",
      "input_names": [
        "INDPRO"
      ],
      "lag_bars": 2,
      "lookback": 21,
      "market_inputs": [
        "SPY",
        "IEF",
        "BIL"
      ],
      "metrics": {
        "SPY_BIL": {
          "annualized_return": 0.08090151008941704,
          "benchmark_total_return": 5.9368716911788315,
          "end": "2026-06-30",
          "max_drawdown": -0.24944689186000568,
          "observations": 229,
          "risk_off_fraction": 0.2925764192139738,
          "sharpe": 0.7139265329566863,
          "start": "2007-06-30",
          "total_return": 3.4131822048997753,
          "volatility": 0.11922008459506063
        },
        "SPY_IEF": {
          "annualized_return": 0.09709140829179219,
          "benchmark_total_return": 11.69295042059387,
          "end": "2026-06-30",
          "max_drawdown": -0.23927178828328333,
          "observations": 287,
          "risk_off_fraction": 0.23344947735191637,
          "sharpe": 0.8253026520879817,
          "start": "2002-08-31",
          "total_return": 8.172209529464599,
          "volatility": 0.1216414771325562
        }
      },
      "missingness": "warm-up and unavailable states remain unavailable, never converted to risk-on",
      "publication_lag": "source unknown; campaign uses monthly cutoff and explicit execution lag",
      "risk_off_events": 28,
      "risk_off_fraction": 0.18661417322834645,
      "rule_label": "binary inferred risk-off overlay; no native RecessionAlert buy/sell rule is claimed",
      "same_close_status": "not_used",
      "signal_span": "1920-09-30 to 2026-06-30",
      "source_identity": "public aggregate proxy; not the undisclosed 23-component source index",
      "spec_id": "recessionalert.1344.indpro_health.lb21.lag2.tm0p5",
      "threshold": -0.5,
      "unavailable_signal_observations": 20
    },
    {
      "available_signal_observations": 935,
      "claim_kind": "inferred",
      "execution": "one available monthly bar is the causal baseline; two-bar lag is conservative sensitivity; lag 0 is research-only.",
      "execution_status": "same_close_research_only",
      "exploratory": true,
      "family": "unrate_regime",
      "family_description": "inferred unemployment rate-of-change risk proxy",
      "hold_months": 1,
      "id": "recessionalert.1344.unrate_regime.lb6.lag0.t0p0",
      "input_names": [
        "UNRATE"
      ],
      "lag_bars": 0,
      "lookback": 6,
      "market_inputs": [
        "SPY",
        "IEF",
        "BIL"
      ],
      "metrics": {
        "SPY_BIL": {
          "annualized_return": 0.08532242258553357,
          "benchmark_total_return": 5.775363419995794,
          "end": "2026-06-30",
          "max_drawdown": -0.23927178828328333,
          "observations": 228,
          "risk_off_fraction": 0.31140350877192985,
          "sharpe": 0.7570416662678778,
          "start": "2007-06-30",
          "total_return": 3.738236518187903,
          "volatility": 0.11759471250026911
        },
        "SPY_IEF": {
          "annualized_return": 0.09900562833426307,
          "benchmark_total_return": 11.39742578500792,
          "end": "2026-06-30",
          "max_drawdown": -0.23927178828328333,
          "observations": 286,
          "risk_off_fraction": 0.2867132867132867,
          "sharpe": 0.8530422560175533,
          "start": "2002-08-31",
          "total_return": 8.487781587316498,
          "volatility": 0.11943427938733521
        }
      },
      "missingness": "warm-up and unavailable states remain unavailable, never converted to risk-on",
      "publication_lag": "source unknown; campaign uses monthly cutoff and explicit execution lag",
      "risk_off_events": 57,
      "risk_off_fraction": 0.3497326203208556,
      "rule_label": "binary inferred risk-off overlay; no native RecessionAlert buy/sell rule is claimed",
      "same_close_status": "research_only_sensitivity",
      "signal_span": "1948-07-31 to 2026-06-30",
      "source_identity": "public aggregate proxy; not the undisclosed 23-component source index",
      "spec_id": "recessionalert.1344.unrate_regime.lb6.lag0.t0p0",
      "threshold": 0.0,
      "unavailable_signal_observations": 6
    },
    {
      "available_signal_observations": 929,
      "claim_kind": "inferred",
      "execution": "one available monthly bar is the causal baseline; two-bar lag is conservative sensitivity; lag 0 is research-only.",
      "execution_status": "causal_one_available_bar",
      "exploratory": true,
      "family": "unrate_regime",
      "family_description": "inferred unemployment rate-of-change risk proxy",
      "hold_months": 1,
      "id": "recessionalert.1344.unrate_regime.lb12.lag1.t0p5",
      "input_names": [
        "UNRATE"
      ],
      "lag_bars": 1,
      "lookback": 12,
      "market_inputs": [
        "SPY",
        "IEF",
        "BIL"
      ],
      "metrics": {
        "SPY_BIL": {
          "annualized_return": 0.07621562357337064,
          "benchmark_total_return": 5.775363419995794,
          "end": "2026-06-30",
          "max_drawdown": -0.2960243788232897,
          "observations": 228,
          "risk_off_fraction": 0.34210526315789475,
          "sharpe": 0.7064216534755113,
          "start": "2007-06-30",
          "total_return": 3.0372584941174665,
          "volatility": 0.11340473832454344
        },
        "SPY_IEF": {
          "annualized_return": 0.09016181711337024,
          "benchmark_total_return": 11.39742578500792,
          "end": "2026-06-30",
          "max_drawdown": -0.33226530246303465,
          "observations": 286,
          "risk_off_fraction": 0.32867132867132864,
          "sharpe": 0.8179606824125406,
          "start": "2002-08-31",
          "total_return": 6.8259074733833,
          "volatility": 0.11384310087207021
        }
      },
      "missingness": "warm-up and unavailable states remain unavailable, never converted to risk-on",
      "publication_lag": "source unknown; campaign uses monthly cutoff and explicit execution lag",
      "risk_off_events": 30,
      "risk_off_fraction": 0.348762109795479,
      "rule_label": "binary inferred risk-off overlay; no native RecessionAlert buy/sell rule is claimed",
      "same_close_status": "not_used",
      "signal_span": "1949-01-31 to 2026-06-30",
      "source_identity": "public aggregate proxy; not the undisclosed 23-component source index",
      "spec_id": "recessionalert.1344.unrate_regime.lb12.lag1.t0p5",
      "threshold": 0.5,
      "unavailable_signal_observations": 12
    },
    {
      "available_signal_observations": 920,
      "claim_kind": "inferred",
      "execution": "one available monthly bar is the causal baseline; two-bar lag is conservative sensitivity; lag 0 is research-only.",
      "execution_status": "causal_two_available_bars",
      "exploratory": true,
      "family": "unrate_regime",
      "family_description": "inferred unemployment rate-of-change risk proxy",
      "hold_months": 3,
      "id": "recessionalert.1344.unrate_regime.lb21.lag2.t0p0",
      "input_names": [
        "UNRATE"
      ],
      "lag_bars": 2,
      "lookback": 21,
      "market_inputs": [
        "SPY",
        "IEF",
        "BIL"
      ],
      "metrics": {
        "SPY_BIL": {
          "annualized_return": 0.0604073519513999,
          "benchmark_total_return": 5.775363419995794,
          "end": "2026-06-30",
          "max_drawdown": -0.27185166882357414,
          "observations": 228,
          "risk_off_fraction": 0.37719298245614036,
          "sharpe": 0.5728454890920206,
          "start": "2007-06-30",
          "total_return": 2.047767767987678,
          "volatility": 0.11394109774162772
        },
        "SPY_IEF": {
          "annualized_return": 0.07088785048675095,
          "benchmark_total_return": 11.39742578500792,
          "end": "2026-06-30",
          "max_drawdown": -0.3150455425212403,
          "observations": 286,
          "risk_off_fraction": 0.36363636363636365,
          "sharpe": 0.6612068943009104,
          "start": "2002-08-31",
          "total_return": 4.115622181859956,
          "volatility": 0.11361429540991479
        }
      },
      "missingness": "warm-up and unavailable states remain unavailable, never converted to risk-on",
      "publication_lag": "source unknown; campaign uses monthly cutoff and explicit execution lag",
      "risk_off_events": 16,
      "risk_off_fraction": 0.3673913043478261,
      "rule_label": "binary inferred risk-off overlay; no native RecessionAlert buy/sell rule is claimed",
      "same_close_status": "not_used",
      "signal_span": "1949-10-31 to 2026-06-30",
      "source_identity": "public aggregate proxy; not the undisclosed 23-component source index",
      "spec_id": "recessionalert.1344.unrate_regime.lb21.lag2.t0p0",
      "threshold": 0.0,
      "unavailable_signal_observations": 21
    },
    {
      "available_signal_observations": 530,
      "claim_kind": "inferred",
      "execution": "one available monthly bar is the causal baseline; two-bar lag is conservative sensitivity; lag 0 is research-only.",
      "execution_status": "same_close_research_only",
      "exploratory": true,
      "family": "curve_stress",
      "family_description": "inferred T10Y3MM inversion proxy below a smoothed level",
      "hold_months": 1,
      "id": "recessionalert.1344.curve_stress.lb6.lag0.t0p0",
      "input_names": [
        "T10Y3MM"
      ],
      "lag_bars": 0,
      "lookback": 6,
      "market_inputs": [
        "SPY",
        "IEF",
        "BIL"
      ],
      "metrics": {
        "SPY_BIL": {
          "annualized_return": 0.08370789673386403,
          "benchmark_total_return": 5.864044369608101,
          "end": "2026-07-31",
          "max_drawdown": -0.5078480735726957,
          "observations": 230,
          "risk_off_fraction": 0.1608695652173913,
          "sharpe": 0.618809676919557,
          "start": "2007-06-30",
          "total_return": 3.6682190660792715,
          "volatility": 0.14820003107288945
        },
        "SPY_IEF": {
          "annualized_return": 0.08765145905446858,
          "benchmark_total_return": 11.559692430088234,
          "end": "2026-07-31",
          "max_drawdown": -0.5078480735726958,
          "observations": 288,
          "risk_off_fraction": 0.15625,
          "sharpe": 0.6603184408415131,
          "start": "2002-08-31",
          "total_return": 6.511971345832932,
          "volatility": 0.14333727821622222
        }
      },
      "missingness": "warm-up and unavailable states remain unavailable, never converted to risk-on",
      "publication_lag": "source unknown; campaign uses monthly cutoff and explicit execution lag",
      "risk_off_events": 6,
      "risk_off_fraction": 0.1018867924528302,
      "rule_label": "binary inferred risk-off overlay; no native RecessionAlert buy/sell rule is claimed",
      "same_close_status": "research_only_sensitivity",
      "signal_span": "1982-06-30 to 2026-07-31",
      "source_identity": "public aggregate proxy; not the undisclosed 23-component source index",
      "spec_id": "recessionalert.1344.curve_stress.lb6.lag0.t0p0",
      "threshold": 0.0,
      "unavailable_signal_observations": 5
    },
    {
      "available_signal_observations": 524,
      "claim_kind": "inferred",
      "execution": "one available monthly bar is the causal baseline; two-bar lag is conservative sensitivity; lag 0 is research-only.",
      "execution_status": "causal_one_available_bar",
      "exploratory": true,
      "family": "curve_stress",
      "family_description": "inferred T10Y3MM inversion proxy below a smoothed level",
      "hold_months": 1,
      "id": "recessionalert.1344.curve_stress.lb12.lag1.t0p0",
      "input_names": [
        "T10Y3MM"
      ],
      "lag_bars": 1,
      "lookback": 12,
      "market_inputs": [
        "SPY",
        "IEF",
        "BIL"
      ],
      "metrics": {
        "SPY_BIL": {
          "annualized_return": 0.08494029841885742,
          "benchmark_total_return": 5.864044369608101,
          "end": "2026-07-31",
          "max_drawdown": -0.48801794736452864,
          "observations": 230,
          "risk_off_fraction": 0.1565217391304348,
          "sharpe": 0.6275236675134064,
          "start": "2007-06-30",
          "total_return": 3.7710277939150307,
          "volatility": 0.14789632587210366
        },
        "SPY_IEF": {
          "annualized_return": 0.09134231214746702,
          "benchmark_total_return": 11.559692430088234,
          "end": "2026-07-31",
          "max_drawdown": -0.4880179473645285,
          "observations": 288,
          "risk_off_fraction": 0.1423611111111111,
          "sharpe": 0.6867964251517287,
          "start": "2002-08-31",
          "total_return": 7.148240570686621,
          "volatility": 0.14263832199707369
        }
      },
      "missingness": "warm-up and unavailable states remain unavailable, never converted to risk-on",
      "publication_lag": "source unknown; campaign uses monthly cutoff and explicit execution lag",
      "risk_off_events": 3,
      "risk_off_fraction": 0.08587786259541985,
      "rule_label": "binary inferred risk-off overlay; no native RecessionAlert buy/sell rule is claimed",
      "same_close_status": "not_used",
      "signal_span": "1982-12-31 to 2026-07-31",
      "source_identity": "public aggregate proxy; not the undisclosed 23-component source index",
      "spec_id": "recessionalert.1344.curve_stress.lb12.lag1.t0p0",
      "threshold": 0.0,
      "unavailable_signal_observations": 11
    },
    {
      "available_signal_observations": 515,
      "claim_kind": "inferred",
      "execution": "one available monthly bar is the causal baseline; two-bar lag is conservative sensitivity; lag 0 is research-only.",
      "execution_status": "causal_two_available_bars",
      "exploratory": true,
      "family": "curve_stress",
      "family_description": "inferred T10Y3MM inversion proxy below a smoothed level",
      "hold_months": 3,
      "id": "recessionalert.1344.curve_stress.lb21.lag2.tm0p5",
      "input_names": [
        "T10Y3MM"
      ],
      "lag_bars": 2,
      "lookback": 21,
      "market_inputs": [
        "SPY",
        "IEF",
        "BIL"
      ],
      "metrics": {
        "SPY_BIL": {
          "annualized_return": 0.09204260995467939,
          "benchmark_total_return": 5.864044369608101,
          "end": "2026-07-31",
          "max_drawdown": -0.5078480735726957,
          "observations": 230,
          "risk_off_fraction": 0.09130434782608696,
          "sharpe": 0.6576489602153311,
          "start": "2007-06-30",
          "total_return": 4.4066140028617955,
          "volatility": 0.15204409093577861
        },
        "SPY_IEF": {
          "annualized_return": 0.10110088212197499,
          "benchmark_total_return": 11.559692430088234,
          "end": "2026-07-31",
          "max_drawdown": -0.5078480735726958,
          "observations": 288,
          "risk_off_fraction": 0.07291666666666667,
          "sharpe": 0.7392686351151371,
          "start": "2002-08-31",
          "total_return": 9.089058808290787,
          "volatility": 0.14512726743092633
        }
      },
      "missingness": "warm-up and unavailable states remain unavailable, never converted to risk-on",
      "publication_lag": "source unknown; campaign uses monthly cutoff and explicit execution lag",
      "risk_off_events": 1,
      "risk_off_fraction": 0.040776699029126215,
      "rule_label": "binary inferred risk-off overlay; no native RecessionAlert buy/sell rule is claimed",
      "same_close_status": "not_used",
      "signal_span": "1983-09-30 to 2026-07-31",
      "source_identity": "public aggregate proxy; not the undisclosed 23-component source index",
      "spec_id": "recessionalert.1344.curve_stress.lb21.lag2.tm0p5",
      "threshold": -0.5,
      "unavailable_signal_observations": 20
    }
  ],
  "event_tables": [],
  "evidence": {},
  "execution_assumptions": {},
  "interactive_specs": [
    {
      "default": "recessionalert.1344.indpro_health.lb12.lag1.t0p0",
      "description": "Select an inferred public proxy variant; no setting is disclosed by RecessionAlert.",
      "name": "variant",
      "values": [
        "recessionalert.1344.indpro_health.lb6.lag0.t0p0",
        "recessionalert.1344.indpro_health.lb12.lag1.t0p0",
        "recessionalert.1344.indpro_health.lb21.lag2.tm0p5",
        "recessionalert.1344.unrate_regime.lb6.lag0.t0p0",
        "recessionalert.1344.unrate_regime.lb12.lag1.t0p5",
        "recessionalert.1344.unrate_regime.lb21.lag2.t0p0",
        "recessionalert.1344.curve_stress.lb6.lag0.t0p0",
        "recessionalert.1344.curve_stress.lb12.lag1.t0p0",
        "recessionalert.1344.curve_stress.lb21.lag2.tm0p5"
      ]
    },
    {
      "default": 1,
      "description": "Lag 1 is the causal baseline; lag 0 is research-only same-close sensitivity.",
      "name": "execution_lag",
      "values": [
        0,
        1,
        2
      ]
    },
    {
      "default": "IEF",
      "description": "Descriptive inferred sleeve; the source discloses no target instrument.",
      "name": "defensive_sleeve",
      "values": [
        "IEF",
        "BIL"
      ]
    }
  ],
  "limitations": [
    "Source-linked observations, identifiers, units, transformations, and native history for all 23 components and the later 21-component views.",
    "Component membership, weights, normalization, score range, missing-input behavior, and reconciliation of the 23-versus-21 discrepancy.",
    "Four recession-probability model equations, calibration, outputs, and exact highest-two averaging behavior.",
    "Numeric action threshold, persistence, smoothing, buy/sell/hold side, instrument, sizing, rebalance, holding period, costs, exits, and re-entry.",
    "Recurring monthly release calendar, publication lag, timestamp, timezone, vintage, revision, and point-in-time availability policy.",
    "Source-linked market/recession outcome history and an independent validation window for the article's warning claims.",
    "All evaluated families below are public inferred proxies and must not be presented as native RecessionAlert fidelity or registered as an official indicator."
  ],
  "parameter_grids": [],
  "provenance": {
    "canonical_native_span": "single March 3, 2016 HTML article snapshot; narrative shown through January 2016; no component observations",
    "canonical_publication_lag": "unknown; no recurring release clock, timestamp, timezone, vintage, or point-in-time policy disclosed",
    "canonical_sha256": "sha256:deedcf22d1d280248542375b8093cf84c98462b27f8eb4f92d09c0d5e1c8b246",
    "canonical_source": "research/artifacts/recessionalert/manifest.json + research/findings/recessionalert_inventory.md + read-only data/recessionalert.sqlite",
    "database_policy": "All reads use SQLite mode=ro; no canonical crawl or market cache mutation.",
    "primary_common_window": "2007-05 through 2026-06 after monthly alignment and BIL intersection",
    "proxy_inputs": "FRED INDPRO/UNRATE/T10Y3MM and Yahoo SPY/IEF/BIL snapshots represented by checked-in data/market.sqlite",
    "redistribution": "Publish derived metrics, proxy labels, source hashes, gap notes, charts, and notebook only; no raw page/media, credentials, cookies, or private account data."
  },
  "regime_tables": [],
  "schema_version": "research-publication/v1",
  "series": {
    "availability": "unavailable",
    "dates": [],
    "reason": "No reproducible underlying price and signal-input series are published for this expression."
  },
  "signals": {
    "spec": null,
    "specs": []
  },
  "trial_ledger": []
}
