{
  "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",
      "parameter_sensitive",
      "weak_edge",
      "needs_more_research"
    ],
    "sections": {
      "Agent assessment": "Fail-closed NO-GO for native McClellan Liquidity Indices; exploratory proxies are publishable under Other/Research only.",
      "Baseline implementation": {
        "claim_kind": "inferred",
        "claim_role": "causal_primary",
        "exploratory": true,
        "family": "stl-zero-cross-proxy",
        "id": "stl_t0_lag1",
        "lag_bars": 1,
        "lookback": 19,
        "metrics": {
          "cagr": 0.04132185167712543,
          "max_drawdown": -0.3504103411430768,
          "n_days": 8402,
          "risk_off_events": 343,
          "risk_on_share": 0.4665563696525644,
          "sharpe": 0.39436434906503764,
          "vol": 0.12136039936410632
        },
        "threshold": 0.0
      },
      "Candidate frontier": [
        {
          "cagr": 0.13231672392465943,
          "category": "best_sharpe",
          "family": "best-effort-neighbor-grid",
          "id": "be_lb21_t0_lag1",
          "lag_bars": 1,
          "max_drawdown": -0.2904997268880132,
          "sharpe": 1.0205218914463565
        },
        {
          "cagr": 0.09434955921841803,
          "category": "lowest_drawdown",
          "family": "best-effort-neighbor-grid",
          "id": "be_lb12_t0_lag1",
          "lag_bars": 1,
          "max_drawdown": -0.27616506775033745,
          "sharpe": 0.7727226064620202
        },
        {
          "cagr": 0.04132185167712543,
          "category": "best_source_fidelity",
          "family": "stl-zero-cross-proxy",
          "id": "stl_t0_lag1",
          "lag_bars": 1,
          "max_drawdown": -0.3504103411430768,
          "sharpe": 0.39436434906503764
        },
        {
          "cagr": 0.04132185167712543,
          "category": "simplest_reasonable",
          "family": "stl-zero-cross-proxy",
          "id": "stl_t0_lag1",
          "lag_bars": 1,
          "max_drawdown": -0.3504103411430768,
          "sharpe": 0.39436434906503764
        },
        {
          "cagr": 0.04132185167712543,
          "category": "best_long_history",
          "family": "stl-zero-cross-proxy",
          "id": "stl_t0_lag1",
          "lag_bars": 1,
          "max_drawdown": -0.3504103411430768,
          "sharpe": 0.39436434906503764
        }
      ],
      "Combinations": "Ladder vote vs single STL compared in diagnostics combination_results.",
      "Data": {
        "database": "data/market.sqlite read-only",
        "fetched_at": "2026-08-22T23:46:51Z",
        "linked_assets": 0,
        "page_sha256": "sha256:d949a5a1b9ebf9653fa32e1179078fa84eb3ad9e1caf3b4fba2ad512da5f4ce4",
        "recessionalert_db": "data/recessionalert.sqlite read-only"
      },
      "Historical events": "Diagnostics cover GFC, 2018Q4, COVID, and 2019 source-year slices; see diagnostics.json.",
      "Limitations": [
        "No native ADV/DECL volume series or asset SHA256 workbook on row.",
        "Proxy thrust is not RecessionAlert volume breadth.",
        "EMA seeding inferred; revision policy unknown.",
        "Publication lag unknown; lag>=1 is campaign policy.",
        "Macro stress families are speculative_extension."
      ],
      "Parameter sensitivity": "Lags 0/1/2, McClellan-inspired 10/19/21/39 windows, thresholds 0/-0.5, ladder votes 3/4.",
      "Portfolio contribution": {},
      "Promotion status": "Not promoted \u2014 Research Library only.",
      "Regime behavior": "See diagnostics regime_results for GFC/2018Q4/COVID/2019.",
      "Research questions": [
        "Can disclosed VMCOS/STL/MTL construction and STL zero-cross timing be turned into labeled public-proxy market-timing overlays when native SP-500 ADV/DECL volume is absent?"
      ],
      "Rules actually disclosed": [
        "Net ADV\u2212DECL volume on SP-500 feeds 19/39 McClellan EMAs to form VMCOS; VMCSI accumulates VMCOS.",
        "STL = EMA(10) VMCOS \u2212 EMA(21) VMCOS; buy SP-500 when STL rises above zero and sell when it falls below zero.",
        "EMA(21) VMCOS preferred as medium-term liquidity; below zero warns of corrections.",
        "Escalating alert ladder from STL through long-term VMCSI below zero.",
        "Daily chart claimed for 7+ years and STL chart for last 5 years as of 2019-10, but no observation series or workbook on this inventory row."
      ],
      "Source": {
        "fetched_at": "2026-08-22T23:46:51Z",
        "published_at": "2019-10-28",
        "sha256": "sha256:d949a5a1b9ebf9653fa32e1179078fa84eb3ad9e1caf3b4fba2ad512da5f4ce4",
        "title": "McClellan Liquidity Indices | RecessionAlert",
        "url": "https://recessionalert.com/mcclellan-liquidity-indices/"
      },
      "State-space exploration": "18 labeled variants across five families; see state-space.json.",
      "Suggested next research": [
        "Would a checked-in ADV/DECL volume workbook change the NO-GO native disposition?",
        "Do constituent-level rebuilds materially change STL zero-cross overlays vs price-thrust proxies?",
        "Should ALIX and McClellan campaigns share a common VMCOS primitive without merging inventory identities?"
      ],
      "Summary": [
        "Pinned offline snapshot sha256:d949a5a1\u2026 discloses McClellan VMCOS/STL/MTL formulas and an STL zero-cross buy/sell narrative.",
        "Native SP-500 ADV/DECL volume and workbook assets are absent (linked_assets=0) \u21d2 NO-GO for native fidelity.",
        "Eighteen labeled public-proxy variants (16 causal lag>=1) executed on SPY history from 1993 with IEF risk-off sleeve from 2002.",
        "Disposition exploratory_tested_proxy under Other/Research; do not promote to Other/Indicators.",
        "Representative causal primary stl_t0_lag1 Sharpe=0.39436434906503764."
      ],
      "Timing and cost sensitivity": "lag0 control_only vs lag1 primary; costs/slippage omitted.",
      "Trial ledger": [
        {
          "iteration": 1,
          "note": "Initial offline best-effort campaign for issue 1472"
        }
      ],
      "Validation protocol": {},
      "What did not work": "Native parity remains impossible; some speculative stress variants have high turnover and weaker drawdown control.",
      "What had to be inferred": [
        "Proxy net advancing volume from SPY return thrust scaled by IWM/QQQ participation.",
        "Standard ewm(span, adjust=False) for 19/39/10/21 windows; causal lag>=1.",
        "^VIX/BAA10Y/WALCL stress overlays as ALIX-adjacent length neighbors without merging ALIX identity."
      ],
      "What the signal looks like": "STL proxy flips SPY/IEF weights when EMA10(VMCOS)-EMA21(VMCOS) crosses zero on inferred net volume thrust.",
      "What the source claims": [
        "Net ADV\u2212DECL volume on SP-500 feeds 19/39 McClellan EMAs to form VMCOS; VMCSI accumulates VMCOS.",
        "STL = EMA(10) VMCOS \u2212 EMA(21) VMCOS; buy SP-500 when STL rises above zero and sell when it falls below zero.",
        "EMA(21) VMCOS preferred as medium-term liquidity; below zero warns of corrections.",
        "Escalating alert ladder from STL through long-term VMCSI below zero.",
        "Daily chart claimed for 7+ years and STL chart for last 5 years as of 2019-10, but no observation series or workbook on this inventory row.",
        "Proxy net advancing volume from SPY return thrust scaled by IWM/QQQ participation.",
        "Standard ewm(span, adjust=False) for 19/39/10/21 windows; causal lag>=1.",
        "^VIX/BAA10Y/WALCL stress overlays as ALIX-adjacent length neighbors without merging ALIX identity.",
        "Native ADV/DECL volume parity, chart-image SHA256 parity, EMA seed/revision policy, and publication clock."
      ],
      "What to try interactively": [
        {
          "name": "lag_bars",
          "note": "lag0 control_only",
          "values": [
            0,
            1,
            2
          ]
        },
        {
          "name": "lookback",
          "values": [
            10,
            12,
            19,
            21,
            39,
            63
          ]
        },
        {
          "name": "threshold",
          "values": [
            0.0,
            -0.5
          ]
        },
        {
          "name": "vote_threshold",
          "values": [
            3,
            4
          ]
        }
      ],
      "What worked": "Causal STL and ladder proxies produce continuous evaluable overlays without inventing undisclosed native thresholds beyond the disclosed zero-cross.",
      "Why the failures appear to happen": "Missing ADV/DECL volume removes the disclosed input; price-thrust is a labeled substitute with different economic content."
    },
    "title": "McClellan Liquidity Indices | RecessionAlert \u2014 exploratory proxy campaign"
  },
  "campaign": {
    "campaign_id": "recessionalert-mcclellan-liquidity-1472",
    "iteration_number": 1,
    "research_tags": [
      "data_limited",
      "parameter_sensitive",
      "weak_edge",
      "needs_more_research"
    ],
    "status": "published",
    "title": "McClellan Liquidity Indices | RecessionAlert \u2014 exploratory proxy campaign"
  },
  "candidate_frontier": [
    {
      "cagr": 0.13231672392465943,
      "category": "best_sharpe",
      "family": "best-effort-neighbor-grid",
      "id": "be_lb21_t0_lag1",
      "lag_bars": 1,
      "max_drawdown": -0.2904997268880132,
      "sharpe": 1.0205218914463565
    },
    {
      "cagr": 0.09434955921841803,
      "category": "lowest_drawdown",
      "family": "best-effort-neighbor-grid",
      "id": "be_lb12_t0_lag1",
      "lag_bars": 1,
      "max_drawdown": -0.27616506775033745,
      "sharpe": 0.7727226064620202
    },
    {
      "cagr": 0.04132185167712543,
      "category": "best_source_fidelity",
      "family": "stl-zero-cross-proxy",
      "id": "stl_t0_lag1",
      "lag_bars": 1,
      "max_drawdown": -0.3504103411430768,
      "sharpe": 0.39436434906503764
    },
    {
      "cagr": 0.04132185167712543,
      "category": "simplest_reasonable",
      "family": "stl-zero-cross-proxy",
      "id": "stl_t0_lag1",
      "lag_bars": 1,
      "max_drawdown": -0.3504103411430768,
      "sharpe": 0.39436434906503764
    },
    {
      "cagr": 0.04132185167712543,
      "category": "best_long_history",
      "family": "stl-zero-cross-proxy",
      "id": "stl_t0_lag1",
      "lag_bars": 1,
      "max_drawdown": -0.3504103411430768,
      "sharpe": 0.39436434906503764
    }
  ],
  "candidate_variants": [
    {
      "claim_kind": "inferred",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "stl-zero-cross-proxy",
      "id": "stl_t0_lag1",
      "lag_bars": 1,
      "lookback": 19,
      "metrics": {
        "cagr": 0.04132185167712543,
        "max_drawdown": -0.3504103411430768,
        "n_days": 8402,
        "risk_off_events": 343,
        "risk_on_share": 0.4665563696525644,
        "sharpe": 0.39436434906503764,
        "vol": 0.12136039936410632
      },
      "threshold": 0.0
    },
    {
      "claim_kind": "inferred",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "stl-zero-cross-proxy",
      "id": "stl_t0_lag2",
      "lag_bars": 2,
      "lookback": 19,
      "metrics": {
        "cagr": 0.042077889035795124,
        "max_drawdown": -0.40685441118091437,
        "n_days": 8401,
        "risk_off_events": 344,
        "risk_on_share": 0.46661151164164993,
        "sharpe": 0.40072918833629345,
        "vol": 0.12118910652880642
      },
      "threshold": 0.0
    },
    {
      "claim_kind": "inferred",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "stl-zero-cross-proxy",
      "id": "stl_tm05_lag1",
      "lag_bars": 1,
      "lookback": 19,
      "metrics": {
        "cagr": 0.046848525823928844,
        "max_drawdown": -0.513105507224191,
        "n_days": 8402,
        "risk_off_events": 351,
        "risk_on_share": 0.5755140628692981,
        "sharpe": 0.42230363193018583,
        "vol": 0.12775302282293946
      },
      "threshold": -5e-05
    },
    {
      "claim_kind": "inferred",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "stl-zero-cross-proxy",
      "id": "stl_fast10_lag1",
      "lag_bars": 1,
      "lookback": 10,
      "metrics": {
        "cagr": 0.04884314088075259,
        "max_drawdown": -0.36275771665989,
        "n_days": 8402,
        "risk_off_events": 398,
        "risk_on_share": 0.47211061214842825,
        "sharpe": 0.44961370224614783,
        "vol": 0.12284897211570853
      },
      "threshold": 0.0
    },
    {
      "claim_kind": "inferred",
      "claim_role": "control_only",
      "exploratory": true,
      "family": "stl-zero-cross-proxy",
      "id": "stl_t0_lag0_control",
      "lag_bars": 0,
      "lookback": 19,
      "metrics": {
        "cagr": 0.24608149263255896,
        "max_drawdown": -0.15038986653286068,
        "n_days": 8403,
        "risk_off_events": 342,
        "risk_on_share": 0.4665012406947891,
        "sharpe": 1.898451006145445,
        "vol": 0.11969355615880958
      },
      "threshold": 0.0
    },
    {
      "claim_kind": "inferred",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "mtl-vmcsi-regime-proxy",
      "id": "mtl_t0_lag1",
      "lag_bars": 1,
      "lookback": 19,
      "metrics": {
        "cagr": 0.035508667953449535,
        "max_drawdown": -0.4277283834934301,
        "n_days": 8402,
        "risk_off_events": 220,
        "risk_on_share": 0.49491845899314585,
        "sharpe": 0.3618137832083465,
        "vol": 0.11465058971144901
      },
      "threshold": 0.0
    },
    {
      "claim_kind": "inferred",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "mtl-vmcsi-regime-proxy",
      "id": "mtl_t0_lag2",
      "lag_bars": 2,
      "lookback": 19,
      "metrics": {
        "cagr": 0.03781550116259558,
        "max_drawdown": -0.38439814592227894,
        "n_days": 8401,
        "risk_off_events": 221,
        "risk_on_share": 0.49497695307883227,
        "sharpe": 0.3760388104188995,
        "vol": 0.1169394458854043
      },
      "threshold": 0.0
    },
    {
      "claim_kind": "inferred",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "mtl-vmcsi-regime-proxy",
      "id": "vmcsi_slope_lag1",
      "lag_bars": 1,
      "lookback": 19,
      "metrics": {
        "cagr": 0.05060962316055284,
        "max_drawdown": -0.3411769403974342,
        "n_days": 8381,
        "risk_off_events": 187,
        "risk_on_share": 0.476009951427556,
        "sharpe": 0.480607349840269,
        "vol": 0.11701093643088215
      },
      "threshold": 0.0
    },
    {
      "claim_kind": "inferred",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "liquidity-ladder-vote",
      "id": "ladder3_lag1",
      "lag_bars": 1,
      "lookback": 19,
      "metrics": {
        "cagr": 0.05697637580563497,
        "max_drawdown": -0.276390293478634,
        "n_days": 8403,
        "risk_off_events": 412,
        "risk_on_share": 0.4640198511166253,
        "sharpe": 0.5842563824347675,
        "vol": 0.1041449765894772
      },
      "threshold": 0.0
    },
    {
      "claim_kind": "inferred",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "liquidity-ladder-vote",
      "id": "ladder4_lag1",
      "lag_bars": 1,
      "lookback": 19,
      "metrics": {
        "cagr": 0.05596775760678541,
        "max_drawdown": -0.36653947771474227,
        "n_days": 8403,
        "risk_off_events": 467,
        "risk_on_share": 0.5728465083303793,
        "sharpe": 0.5303976408443029,
        "vol": 0.11521047081619329
      },
      "threshold": 0.0
    },
    {
      "claim_kind": "inferred",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "liquidity-ladder-vote",
      "id": "ladder3_lag2",
      "lag_bars": 2,
      "lookback": 19,
      "metrics": {
        "cagr": 0.0369313790676451,
        "max_drawdown": -0.3832293740500158,
        "n_days": 8402,
        "risk_off_events": 413,
        "risk_on_share": 0.46407468683526354,
        "sharpe": 0.39382267566982937,
        "vol": 0.10651720099937094
      },
      "threshold": 0.0
    },
    {
      "claim_kind": "speculative_extension",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "macro-liquidity-stress-extension",
      "id": "vix_lb63_lag1",
      "lag_bars": 1,
      "lookback": 63,
      "metrics": {
        "cagr": 0.07376648643598416,
        "max_drawdown": -0.34207920847544815,
        "n_days": 7213,
        "risk_off_events": 1594,
        "risk_on_share": 0.6032601188009393,
        "sharpe": 0.6717132120943855,
        "vol": 0.11599804540860148
      },
      "threshold": 0.0
    },
    {
      "claim_kind": "speculative_extension",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "macro-liquidity-stress-extension",
      "id": "baa_lb63_lag1",
      "lag_bars": 1,
      "lookback": 63,
      "metrics": {
        "cagr": 0.06684448577749191,
        "max_drawdown": -0.38621745494486603,
        "n_days": 8341,
        "risk_off_events": 286,
        "risk_on_share": 0.5523152005713605,
        "sharpe": 0.6205808597571842,
        "vol": 0.1149528219170908
      },
      "threshold": 0.0
    },
    {
      "claim_kind": "speculative_extension",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "macro-liquidity-stress-extension",
      "id": "walcl_lb63_lag1",
      "lag_bars": 1,
      "lookback": 63,
      "metrics": {
        "cagr": 0.08800473277660048,
        "max_drawdown": -0.42036787127905584,
        "n_days": 5793,
        "risk_off_events": 2801,
        "risk_on_share": 0.44265662444368364,
        "sharpe": 0.6612109637084517,
        "vol": 0.14303805791634494
      },
      "threshold": 0.0
    },
    {
      "claim_kind": "inferred",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "best-effort-neighbor-grid",
      "id": "be_lb12_t0_lag1",
      "lag_bars": 1,
      "lookback": 12,
      "metrics": {
        "cagr": 0.09434955921841803,
        "max_drawdown": -0.27616506775033745,
        "n_days": 4583,
        "risk_off_events": 3917,
        "risk_on_share": 0.7795909486510009,
        "sharpe": 0.7727226064620202,
        "vol": 0.12720076455177798
      },
      "threshold": 0.0
    },
    {
      "claim_kind": "inferred",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "best-effort-neighbor-grid",
      "id": "be_lb21_t0_lag1",
      "lag_bars": 1,
      "lookback": 21,
      "metrics": {
        "cagr": 0.13231672392465943,
        "max_drawdown": -0.2904997268880132,
        "n_days": 2796,
        "risk_off_events": 5681,
        "risk_on_share": 0.8124108416547788,
        "sharpe": 1.0205218914463565,
        "vol": 0.13010640381534333
      },
      "threshold": 0.0
    },
    {
      "claim_kind": "inferred",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "best-effort-neighbor-grid",
      "id": "be_lb12_tm05_lag1",
      "lag_bars": 1,
      "lookback": 12,
      "metrics": {
        "cagr": 0.0999304368978462,
        "max_drawdown": -0.30915394701582644,
        "n_days": 4583,
        "risk_off_events": 3907,
        "risk_on_share": 0.8294168842471714,
        "sharpe": 0.774686314328876,
        "vol": 0.13472145987549122
      },
      "threshold": -0.5
    },
    {
      "claim_kind": "inferred",
      "claim_role": "control_only",
      "exploratory": true,
      "family": "best-effort-neighbor-grid",
      "id": "be_lb12_t0_lag0_control",
      "lag_bars": 0,
      "lookback": 12,
      "metrics": {
        "cagr": 0.2009891414799998,
        "max_drawdown": -0.13605266329996635,
        "n_days": 4596,
        "risk_off_events": 3917,
        "risk_on_share": 0.7795909486510009,
        "sharpe": 1.5262992455665552,
        "vol": 0.12517065430724925
      },
      "threshold": 0.0
    }
  ],
  "event_tables": [],
  "evidence": {},
  "execution_assumptions": {},
  "interactive_specs": [
    {
      "name": "lag_bars",
      "note": "lag0 control_only",
      "values": [
        0,
        1,
        2
      ]
    },
    {
      "name": "lookback",
      "values": [
        10,
        12,
        19,
        21,
        39,
        63
      ]
    },
    {
      "name": "threshold",
      "values": [
        0.0,
        -0.5
      ]
    },
    {
      "name": "vote_threshold",
      "values": [
        3,
        4
      ]
    }
  ],
  "limitations": [
    "No native ADV/DECL volume series or asset SHA256 workbook on row.",
    "Proxy thrust is not RecessionAlert volume breadth.",
    "EMA seeding inferred; revision policy unknown.",
    "Publication lag unknown; lag>=1 is campaign policy.",
    "Macro stress families are speculative_extension."
  ],
  "parameter_grids": [],
  "provenance": {
    "database": "data/market.sqlite read-only",
    "fetched_at": "2026-08-22T23:46:51Z",
    "linked_assets": 0,
    "page_sha256": "sha256:d949a5a1b9ebf9653fa32e1179078fa84eb3ad9e1caf3b4fba2ad512da5f4ce4",
    "recessionalert_db": "data/recessionalert.sqlite read-only"
  },
  "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": []
}
