{
  "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 lag is the causal baseline; lag 0 is research-only lookahead sensitivity",
        "execution_status": "same_close_research_only",
        "exploratory": true,
        "family": "indpro_health",
        "family_description": "INDPRO below trailing mean as an inferred activity-breadth substitute",
        "hold_months": 1,
        "id": "recessionalert.1341.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": "unknown",
        "risk_off_events": 91,
        "risk_off_fraction": 0.3027237354085603,
        "rule_label": "binary inferred risk-off overlay; no native buy/sell rule is claimed",
        "same_close_status": "research_only_sensitivity",
        "signal_span": "1919-06/2026-06",
        "source_identity": "public macro proxy; not the undisclosed 39-entity source series",
        "spec_id": "recessionalert.1341.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,
          "family": "indpro_health",
          "metrics": {
            "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
          },
          "rank": 1,
          "variant_id": "recessionalert.1341.indpro_health.lb12.lag1.t0p0"
        },
        {
          "category": "simplest_reasonable",
          "claim_kind": "inferred",
          "disposition": "exploratory comparison only; not promoted",
          "exploratory": true,
          "family": "unrate_regime",
          "metrics": {
            "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
          },
          "rank": 2,
          "variant_id": "recessionalert.1341.unrate_regime.lb6.lag0.t0p0"
        },
        {
          "category": "best_long_history",
          "claim_kind": "inferred",
          "disposition": "exploratory comparison only; not promoted",
          "exploratory": true,
          "family": "indpro_health",
          "metrics": {
            "annualized_return": 0.0968644319799925,
            "benchmark_total_return": 11.69295042059387,
            "end": "2026-06-30",
            "max_drawdown": -0.23927178828328333,
            "observations": 287,
            "risk_off_fraction": 0.30313588850174217,
            "sharpe": 0.844210009705299,
            "start": "2002-08-31",
            "total_return": 8.126931957043476,
            "volatility": 0.11817114791549004
          },
          "rank": 3,
          "variant_id": "recessionalert.1341.indpro_health.lb21.lag2.t0p0"
        },
        {
          "category": "lowest_drawdown",
          "claim_kind": "inferred",
          "disposition": "exploratory comparison only; not promoted",
          "exploratory": true,
          "family": "indpro_health",
          "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": 4,
          "variant_id": "recessionalert.1341.indpro_health.lb6.lag0.t0p0"
        },
        {
          "category": "most_stable",
          "claim_kind": "inferred",
          "disposition": "exploratory comparison only; not promoted",
          "exploratory": true,
          "family": "indpro_health",
          "metrics": {
            "annualized_return": 0.09389085116193874,
            "benchmark_total_return": 11.69295042059387,
            "end": "2026-06-30",
            "max_drawdown": -0.2583764132201791,
            "observations": 287,
            "risk_off_fraction": 0.3310104529616725,
            "sharpe": 0.8332377760735183,
            "start": "2002-08-31",
            "total_return": 7.553186262187662,
            "volatility": 0.11614430253419038
          },
          "rank": 5,
          "variant_id": "recessionalert.1341.indpro_health.lb6.lag1.t0p0"
        }
      ],
      "Data": {
        "canonical_native_span": "single dated May 1, 2024 HTML article snapshot; no source-linked history for either breadth component or the aggregate",
        "canonical_publication_lag": "unknown; monthly report/chart references disclose no recurring release clock, timezone, point-in-time availability, or vintage/revision policy",
        "canonical_sha256": "sha256:e5a324ca2890226d7f62553757130605a5335c6b98bd88e4a67d22b2ca76ea01",
        "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": "1993-01 through 2026-06 after monthly alignment",
        "proxy_inputs": "FRED INDPRO/UNRATE and Yahoo SPY/IEF/BIL snapshots represented by checked-in data/market.sqlite",
        "redistribution": "Publish derived metrics, proxy labels, source hashes, gap notes, and charts only; no raw page/media, credentials, cookies, or private account data."
      },
      "Limitations": [
        "Source-linked observations and native historical span for both 39-entity breadth measures.",
        "Exact OECD-country and central-bank memberships, identifiers, units, and denominator implementation.",
        "Exact net-percentage transformations and direction conventions.",
        "Aggregate formula, component weights, score range, normalization, and missing-input behavior.",
        "Numeric thresholds, state transitions, persistence, confirmation, and smoothing.",
        "Recurring cadence, release calendar, publication clock, timezone, and vintage/revision policy.",
        "Buy/sell/hold mapping, target instrument, universe, sizing, rebalance, costs, exits, and re-entry.",
        "Source-linked NYSE outcome history and independent validation window for the claimed leads and R-squared.",
        "Canonical StocksLEI.gif payload or redistributable machine-readable chart series.",
        "A proxy preserves the distinct page identity; all tested rules below are inferred and not native fidelity."
      ],
      "Portfolio contribution": {},
      "Promotion status": "No promotion. Native disposition remains insufficient_evidence; proxy results are exploratory Other / Research evidence only.",
      "Research questions": [
        "What can be learned from the SHA-verified RecessionAlert leading-stock article using transparent public proxies when its observations, thresholds, release clock, and market rule are incomplete?"
      ],
      "Rules actually disclosed": [
        "Two net international breadth concepts, source-reported leads and R-squared, and qualitative buy-the-dip context; no executable state machine."
      ],
      "Source": {
        "article_timestamp": "2024-05-01T15:35:21-0400",
        "database": "data/recessionalert.sqlite opened read-only",
        "fetched_at": "2026-08-22T23:48:28Z",
        "inventory": "research/findings/recessionalert_inventory.md row 10",
        "manifest": "research/artifacts/recessionalert/manifest.json",
        "native_span": "single dated May 1, 2024 HTML article snapshot; no source-linked history for either breadth component or the aggregate",
        "publication_lag": "unknown; monthly report/chart references disclose no recurring release clock, timezone, point-in-time availability, or vintage/revision policy",
        "redacted_url": "https://recessionalert.com/a-leading-indicator-for-u-s-stocks/",
        "sha256": "sha256:e5a324ca2890226d7f62553757130605a5335c6b98bd88e4a67d22b2ca76ea01"
      },
      "State-space exploration": [
        "8 labeled variants tested; negative outcomes preserved in state-space.json."
      ],
      "Suggested next research": [
        "Can an authorized redistributable StocksLEI chart or source-linked monthly panel be obtained?",
        "What exact memberships, netting direction, denominator, aggregate weights, and missing-input behavior did the source use?",
        "What recurring publication timestamps, vintages, revisions, and point-in-time cutoffs apply to every component?",
        "Can the source-reported leads and 0.57 R-squared be recomputed against a defined NYSE target?",
        "Does any complete buy/sell/hold/exit rule exist beyond the qualitative dip-buying sentence?"
      ],
      "Summary": [
        "The checked-in article discloses two international breadth ideas, source-reported 7- and 10-month leads, a 0.57 R-squared claim, and qualitative dip-buying context, but no source-linked observations or complete state rule.",
        "INDPRO and UNRATE are transparent public aggregate proxies selected for history and reproducibility; they do not recover the source's 39-country/39-central-bank identity.",
        "Eight labeled variants ran over the primary 1993-01 through 2026-06 SPY-aligned window; 8 variants preserve underperformance outcomes in the ledger.",
        "The causal baseline uses one available monthly bar of execution lag; lag zero remains a timing diagnostic 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": [
        "Proxy variants are identity-mismatched and cannot validate the native RecessionAlert claims."
      ],
      "What had to be inferred": [
        "INDPRO/UNRATE aggregate proxies, lookbacks, thresholds, one-bar execution convention, and SPY/IEF/BIL overlays."
      ],
      "What the source claims": [
        "The article names the net percentage of 39 OECD countries with rising leading economic indices as a medium-term leading indicator for U.S. stocks; observations and exact transformation are absent.",
        "The article names the net percentage of 39 central banks easing rates as a medium-term leading indicator; membership and easing classification are absent.",
        "The article reports 7- and 10-month maximum leads to NYSE annual percentage change and a 0.57 aggregate R-squared; source observations and validation window are absent.",
        "The article says dips are a buying opportunity but defines no executable buy, sell, hold, exit, or re-entry state.",
        "This campaign tests INDPRO and UNRATE aggregate public proxies with explicit lookback, threshold, and execution-lag neighbors; these are not native source fidelity.",
        "SPY risk-on with IEF or BIL risk-off sleeves are descriptive inferred overlays only because no target or allocation rule is disclosed."
      ],
      "What to try interactively": [
        {
          "default": "recessionalert.1341.indpro_health.lb6.lag1.t0p0",
          "description": "Select an inferred public proxy variant; no setting is disclosed by RecessionAlert.",
          "name": "variant",
          "values": [
            "recessionalert.1341.indpro_health.lb6.lag0.t0p0",
            "recessionalert.1341.indpro_health.lb6.lag1.t0p0",
            "recessionalert.1341.indpro_health.lb12.lag1.t0p0",
            "recessionalert.1341.indpro_health.lb21.lag2.t0p0",
            "recessionalert.1341.unrate_regime.lb6.lag0.t0p0",
            "recessionalert.1341.unrate_regime.lb6.lag1.t0p0",
            "recessionalert.1341.unrate_regime.lb12.lag1.t0p0",
            "recessionalert.1341.unrate_regime.lb21.lag2.t0p0"
          ]
        },
        {
          "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": "MODELS: A leading indicator for U.S stocks | RecessionAlert \u2014 exploratory proxy campaign"
  },
  "campaign": {
    "campaign_id": "recessionalert-leading-us-stocks",
    "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": "MODELS: A leading indicator for U.S stocks | RecessionAlert \u2014 exploratory proxy campaign"
  },
  "candidate_frontier": [
    {
      "category": "best_return",
      "claim_kind": "inferred",
      "disposition": "exploratory comparison only; not promoted",
      "exploratory": true,
      "family": "indpro_health",
      "metrics": {
        "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
      },
      "rank": 1,
      "variant_id": "recessionalert.1341.indpro_health.lb12.lag1.t0p0"
    },
    {
      "category": "simplest_reasonable",
      "claim_kind": "inferred",
      "disposition": "exploratory comparison only; not promoted",
      "exploratory": true,
      "family": "unrate_regime",
      "metrics": {
        "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
      },
      "rank": 2,
      "variant_id": "recessionalert.1341.unrate_regime.lb6.lag0.t0p0"
    },
    {
      "category": "best_long_history",
      "claim_kind": "inferred",
      "disposition": "exploratory comparison only; not promoted",
      "exploratory": true,
      "family": "indpro_health",
      "metrics": {
        "annualized_return": 0.0968644319799925,
        "benchmark_total_return": 11.69295042059387,
        "end": "2026-06-30",
        "max_drawdown": -0.23927178828328333,
        "observations": 287,
        "risk_off_fraction": 0.30313588850174217,
        "sharpe": 0.844210009705299,
        "start": "2002-08-31",
        "total_return": 8.126931957043476,
        "volatility": 0.11817114791549004
      },
      "rank": 3,
      "variant_id": "recessionalert.1341.indpro_health.lb21.lag2.t0p0"
    },
    {
      "category": "lowest_drawdown",
      "claim_kind": "inferred",
      "disposition": "exploratory comparison only; not promoted",
      "exploratory": true,
      "family": "indpro_health",
      "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": 4,
      "variant_id": "recessionalert.1341.indpro_health.lb6.lag0.t0p0"
    },
    {
      "category": "most_stable",
      "claim_kind": "inferred",
      "disposition": "exploratory comparison only; not promoted",
      "exploratory": true,
      "family": "indpro_health",
      "metrics": {
        "annualized_return": 0.09389085116193874,
        "benchmark_total_return": 11.69295042059387,
        "end": "2026-06-30",
        "max_drawdown": -0.2583764132201791,
        "observations": 287,
        "risk_off_fraction": 0.3310104529616725,
        "sharpe": 0.8332377760735183,
        "start": "2002-08-31",
        "total_return": 7.553186262187662,
        "volatility": 0.11614430253419038
      },
      "rank": 5,
      "variant_id": "recessionalert.1341.indpro_health.lb6.lag1.t0p0"
    }
  ],
  "candidate_variants": [
    {
      "available_signal_observations": 1285,
      "claim_kind": "inferred",
      "execution": "one available monthly bar lag is the causal baseline; lag 0 is research-only lookahead sensitivity",
      "execution_status": "same_close_research_only",
      "exploratory": true,
      "family": "indpro_health",
      "family_description": "INDPRO below trailing mean as an inferred activity-breadth substitute",
      "hold_months": 1,
      "id": "recessionalert.1341.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": "unknown",
      "risk_off_events": 91,
      "risk_off_fraction": 0.3027237354085603,
      "rule_label": "binary inferred risk-off overlay; no native buy/sell rule is claimed",
      "same_close_status": "research_only_sensitivity",
      "signal_span": "1919-06/2026-06",
      "source_identity": "public macro proxy; not the undisclosed 39-entity source series",
      "spec_id": "recessionalert.1341.indpro_health.lb6.lag0.t0p0",
      "threshold": 0.0,
      "unavailable_signal_observations": 5
    },
    {
      "available_signal_observations": 1285,
      "claim_kind": "inferred",
      "execution": "one available monthly bar lag is the causal baseline; lag 0 is research-only lookahead sensitivity",
      "execution_status": "causal_one_available_bar",
      "exploratory": true,
      "family": "indpro_health",
      "family_description": "INDPRO below trailing mean as an inferred activity-breadth substitute",
      "hold_months": 1,
      "id": "recessionalert.1341.indpro_health.lb6.lag1.t0p0",
      "input_names": [
        "INDPRO"
      ],
      "lag_bars": 1,
      "lookback": 6,
      "market_inputs": [
        "SPY",
        "IEF",
        "BIL"
      ],
      "metrics": {
        "SPY_BIL": {
          "annualized_return": 0.08651139608140501,
          "benchmark_total_return": 5.9368716911788315,
          "end": "2026-06-30",
          "max_drawdown": -0.24035200374625176,
          "observations": 229,
          "risk_off_fraction": 0.37554585152838427,
          "sharpe": 0.8156429381462383,
          "start": "2007-06-30",
          "total_return": 3.8714055716102145,
          "volatility": 0.1093304606231838
        },
        "SPY_IEF": {
          "annualized_return": 0.09389085116193874,
          "benchmark_total_return": 11.69295042059387,
          "end": "2026-06-30",
          "max_drawdown": -0.2583764132201791,
          "observations": 287,
          "risk_off_fraction": 0.3310104529616725,
          "sharpe": 0.8332377760735183,
          "start": "2002-08-31",
          "total_return": 7.553186262187662,
          "volatility": 0.11614430253419038
        }
      },
      "missingness": "warm-up and unavailable states remain unavailable, never converted to risk-on",
      "publication_lag": "unknown",
      "risk_off_events": 91,
      "risk_off_fraction": 0.3027237354085603,
      "rule_label": "binary inferred risk-off overlay; no native buy/sell rule is claimed",
      "same_close_status": "not_used",
      "signal_span": "1919-06/2026-06",
      "source_identity": "public macro proxy; not the undisclosed 39-entity source series",
      "spec_id": "recessionalert.1341.indpro_health.lb6.lag1.t0p0",
      "threshold": 0.0,
      "unavailable_signal_observations": 5
    },
    {
      "available_signal_observations": 1279,
      "claim_kind": "inferred",
      "execution": "one available monthly bar lag is the causal baseline; lag 0 is research-only lookahead sensitivity",
      "execution_status": "causal_one_available_bar",
      "exploratory": true,
      "family": "indpro_health",
      "family_description": "INDPRO below trailing mean as an inferred activity-breadth substitute",
      "hold_months": 1,
      "id": "recessionalert.1341.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": "unknown",
      "risk_off_events": 48,
      "risk_off_fraction": 0.2720875684128225,
      "rule_label": "binary inferred risk-off overlay; no native buy/sell rule is claimed",
      "same_close_status": "not_used",
      "signal_span": "1919-12/2026-06",
      "source_identity": "public macro proxy; not the undisclosed 39-entity source series",
      "spec_id": "recessionalert.1341.indpro_health.lb12.lag1.t0p0",
      "threshold": 0.0,
      "unavailable_signal_observations": 11
    },
    {
      "available_signal_observations": 1270,
      "claim_kind": "inferred",
      "execution": "one available monthly bar lag is the causal baseline; lag 0 is research-only lookahead sensitivity",
      "execution_status": "causal_one_available_bar",
      "exploratory": true,
      "family": "indpro_health",
      "family_description": "INDPRO below trailing mean as an inferred activity-breadth substitute",
      "hold_months": 1,
      "id": "recessionalert.1341.indpro_health.lb21.lag2.t0p0",
      "input_names": [
        "INDPRO"
      ],
      "lag_bars": 2,
      "lookback": 21,
      "market_inputs": [
        "SPY",
        "IEF",
        "BIL"
      ],
      "metrics": {
        "SPY_BIL": {
          "annualized_return": 0.07767194944948641,
          "benchmark_total_return": 5.9368716911788315,
          "end": "2026-06-30",
          "max_drawdown": -0.23927178828328355,
          "observations": 229,
          "risk_off_fraction": 0.3799126637554585,
          "sharpe": 0.7213371689004158,
          "start": "2007-06-30",
          "total_return": 3.1682351589337516,
          "volatility": 0.11277663935488715
        },
        "SPY_IEF": {
          "annualized_return": 0.0968644319799925,
          "benchmark_total_return": 11.69295042059387,
          "end": "2026-06-30",
          "max_drawdown": -0.23927178828328333,
          "observations": 287,
          "risk_off_fraction": 0.30313588850174217,
          "sharpe": 0.844210009705299,
          "start": "2002-08-31",
          "total_return": 8.126931957043476,
          "volatility": 0.11817114791549004
        }
      },
      "missingness": "warm-up and unavailable states remain unavailable, never converted to risk-on",
      "publication_lag": "unknown",
      "risk_off_events": 33,
      "risk_off_fraction": 0.262992125984252,
      "rule_label": "binary inferred risk-off overlay; no native buy/sell rule is claimed",
      "same_close_status": "not_used",
      "signal_span": "1920-09/2026-06",
      "source_identity": "public macro proxy; not the undisclosed 39-entity source series",
      "spec_id": "recessionalert.1341.indpro_health.lb21.lag2.t0p0",
      "threshold": 0.0,
      "unavailable_signal_observations": 20
    },
    {
      "available_signal_observations": 935,
      "claim_kind": "inferred",
      "execution": "one available monthly bar lag is the causal baseline; lag 0 is research-only lookahead sensitivity",
      "execution_status": "same_close_research_only",
      "exploratory": true,
      "family": "unrate_regime",
      "family_description": "UNRATE rate of change above threshold as an inferred easing-reversal substitute",
      "hold_months": 1,
      "id": "recessionalert.1341.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": "unknown",
      "risk_off_events": 57,
      "risk_off_fraction": 0.3497326203208556,
      "rule_label": "binary inferred risk-off overlay; no native buy/sell rule is claimed",
      "same_close_status": "research_only_sensitivity",
      "signal_span": "1948-07/2026-06",
      "source_identity": "public macro proxy; not the undisclosed 39-entity source series",
      "spec_id": "recessionalert.1341.unrate_regime.lb6.lag0.t0p0",
      "threshold": 0.0,
      "unavailable_signal_observations": 6
    },
    {
      "available_signal_observations": 935,
      "claim_kind": "inferred",
      "execution": "one available monthly bar lag is the causal baseline; lag 0 is research-only lookahead sensitivity",
      "execution_status": "causal_one_available_bar",
      "exploratory": true,
      "family": "unrate_regime",
      "family_description": "UNRATE rate of change above threshold as an inferred easing-reversal substitute",
      "hold_months": 1,
      "id": "recessionalert.1341.unrate_regime.lb6.lag1.t0p0",
      "input_names": [
        "UNRATE"
      ],
      "lag_bars": 1,
      "lookback": 6,
      "market_inputs": [
        "SPY",
        "IEF",
        "BIL"
      ],
      "metrics": {
        "SPY_BIL": {
          "annualized_return": 0.07920074261902688,
          "benchmark_total_return": 5.775363419995794,
          "end": "2026-06-30",
          "max_drawdown": -0.23927178828328333,
          "observations": 228,
          "risk_off_fraction": 0.31140350877192985,
          "sharpe": 0.6896882710580116,
          "start": "2007-06-30",
          "total_return": 3.2554204341966066,
          "volatility": 0.12155160802425947
        },
        "SPY_IEF": {
          "annualized_return": 0.08726948480189711,
          "benchmark_total_return": 11.39742578500792,
          "end": "2026-06-30",
          "max_drawdown": -0.23927178828328333,
          "observations": 286,
          "risk_off_fraction": 0.2902097902097902,
          "sharpe": 0.7418373672746367,
          "start": "2002-08-31",
          "total_return": 6.345757449032161,
          "volatility": 0.12344110525342702
        }
      },
      "missingness": "warm-up and unavailable states remain unavailable, never converted to risk-on",
      "publication_lag": "unknown",
      "risk_off_events": 58,
      "risk_off_fraction": 0.3497326203208556,
      "rule_label": "binary inferred risk-off overlay; no native buy/sell rule is claimed",
      "same_close_status": "not_used",
      "signal_span": "1948-07/2026-06",
      "source_identity": "public macro proxy; not the undisclosed 39-entity source series",
      "spec_id": "recessionalert.1341.unrate_regime.lb6.lag1.t0p0",
      "threshold": 0.0,
      "unavailable_signal_observations": 6
    },
    {
      "available_signal_observations": 929,
      "claim_kind": "inferred",
      "execution": "one available monthly bar lag is the causal baseline; lag 0 is research-only lookahead sensitivity",
      "execution_status": "causal_one_available_bar",
      "exploratory": true,
      "family": "unrate_regime",
      "family_description": "UNRATE rate of change above threshold as an inferred easing-reversal substitute",
      "hold_months": 1,
      "id": "recessionalert.1341.unrate_regime.lb12.lag1.t0p0",
      "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": "unknown",
      "risk_off_events": 30,
      "risk_off_fraction": 0.348762109795479,
      "rule_label": "binary inferred risk-off overlay; no native buy/sell rule is claimed",
      "same_close_status": "not_used",
      "signal_span": "1949-01/2026-06",
      "source_identity": "public macro proxy; not the undisclosed 39-entity source series",
      "spec_id": "recessionalert.1341.unrate_regime.lb12.lag1.t0p0",
      "threshold": 0.0,
      "unavailable_signal_observations": 12
    },
    {
      "available_signal_observations": 920,
      "claim_kind": "inferred",
      "execution": "one available monthly bar lag is the causal baseline; lag 0 is research-only lookahead sensitivity",
      "execution_status": "causal_one_available_bar",
      "exploratory": true,
      "family": "unrate_regime",
      "family_description": "UNRATE rate of change above threshold as an inferred easing-reversal substitute",
      "hold_months": 1,
      "id": "recessionalert.1341.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": "unknown",
      "risk_off_events": 16,
      "risk_off_fraction": 0.3673913043478261,
      "rule_label": "binary inferred risk-off overlay; no native buy/sell rule is claimed",
      "same_close_status": "not_used",
      "signal_span": "1949-10/2026-06",
      "source_identity": "public macro proxy; not the undisclosed 39-entity source series",
      "spec_id": "recessionalert.1341.unrate_regime.lb21.lag2.t0p0",
      "threshold": 0.0,
      "unavailable_signal_observations": 21
    }
  ],
  "event_tables": [],
  "evidence": {},
  "execution_assumptions": {},
  "interactive_specs": [
    {
      "default": "recessionalert.1341.indpro_health.lb6.lag1.t0p0",
      "description": "Select an inferred public proxy variant; no setting is disclosed by RecessionAlert.",
      "name": "variant",
      "values": [
        "recessionalert.1341.indpro_health.lb6.lag0.t0p0",
        "recessionalert.1341.indpro_health.lb6.lag1.t0p0",
        "recessionalert.1341.indpro_health.lb12.lag1.t0p0",
        "recessionalert.1341.indpro_health.lb21.lag2.t0p0",
        "recessionalert.1341.unrate_regime.lb6.lag0.t0p0",
        "recessionalert.1341.unrate_regime.lb6.lag1.t0p0",
        "recessionalert.1341.unrate_regime.lb12.lag1.t0p0",
        "recessionalert.1341.unrate_regime.lb21.lag2.t0p0"
      ]
    },
    {
      "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 and native historical span for both 39-entity breadth measures.",
    "Exact OECD-country and central-bank memberships, identifiers, units, and denominator implementation.",
    "Exact net-percentage transformations and direction conventions.",
    "Aggregate formula, component weights, score range, normalization, and missing-input behavior.",
    "Numeric thresholds, state transitions, persistence, confirmation, and smoothing.",
    "Recurring cadence, release calendar, publication clock, timezone, and vintage/revision policy.",
    "Buy/sell/hold mapping, target instrument, universe, sizing, rebalance, costs, exits, and re-entry.",
    "Source-linked NYSE outcome history and independent validation window for the claimed leads and R-squared.",
    "Canonical StocksLEI.gif payload or redistributable machine-readable chart series.",
    "A proxy preserves the distinct page identity; all tested rules below are inferred and not native fidelity."
  ],
  "parameter_grids": [],
  "provenance": {
    "canonical_native_span": "single dated May 1, 2024 HTML article snapshot; no source-linked history for either breadth component or the aggregate",
    "canonical_publication_lag": "unknown; monthly report/chart references disclose no recurring release clock, timezone, point-in-time availability, or vintage/revision policy",
    "canonical_sha256": "sha256:e5a324ca2890226d7f62553757130605a5335c6b98bd88e4a67d22b2ca76ea01",
    "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": "1993-01 through 2026-06 after monthly alignment",
    "proxy_inputs": "FRED INDPRO/UNRATE and Yahoo SPY/IEF/BIL snapshots represented by checked-in data/market.sqlite",
    "redistribution": "Publish derived metrics, proxy labels, source hashes, gap notes, and charts 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": []
}
