{
  "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",
      "regime_dependent",
      "needs_more_research",
      "interesting_negative_result"
    ],
    "sections": {
      "Agent assessment": [
        "Disposition exploratory_tested_proxy under Other/Research.",
        "Explicit NO-GO for playable Other/Indicators native Trendex promotion."
      ],
      "Baseline implementation": {
        "claim_kind": "documented_but_incomplete",
        "claim_role": "causal_primary",
        "exploratory": true,
        "family": "dem-short-channel10-close-proxy",
        "id": "dem10_causal_lag1",
        "parameters": {
          "lag_bars": 1,
          "lookback": 10
        }
      },
      "Candidate frontier": [
        {
          "category": "best_sharpe",
          "claim_role": "causal_primary",
          "family": "best-effort-neighbor-grid",
          "id": "be_spy_lb12_lag1_t0",
          "interpretation": "Exploratory best Sharpe among causal variants; labeled SMA grid, not native Trendex.",
          "metrics": {
            "cagr": 0.11555697755473071,
            "end": "2026-07-31",
            "max_drawdown": -0.19336384497374537,
            "n_months": 391,
            "risk_off_events": 829,
            "risk_on_share": 0.782608695652174,
            "sharpe": 1.0313402234501794,
            "start": "1994-01-31",
            "vol": 0.11265445638344454
          }
        },
        {
          "category": "best_return",
          "claim_role": "causal_primary",
          "family": "best-effort-neighbor-grid",
          "id": "be_spy_lb21_lag1_tneg05",
          "interpretation": "Exploratory best CAGR among causal variants; labeled SMA grid."
        },
        {
          "category": "lowest_drawdown",
          "claim_role": "causal_primary",
          "family": "related-workbook-overlay",
          "id": "wb_trendex_overlay_lag1",
          "interpretation": "Exploratory least severe drawdown; off-row weekly TRENDEX TDIFF overlay from 2005, not native fidelity.",
          "metrics": {
            "cagr": 0.0746050463305179,
            "end": "2026-07-31",
            "max_drawdown": -0.34085387694628044,
            "n_months": 255,
            "risk_off_events": 1058,
            "risk_on_share": 0.6392156862745098,
            "sharpe": 0.7410437619556857,
            "start": "2005-05-31",
            "vol": 0.1048004585338788
          }
        },
        {
          "category": "best_source_fidelity",
          "claim_role": "causal_primary",
          "family": "dem-medium-channel21-close-proxy",
          "id": "dem21_causal_lag1",
          "interpretation": "Closest to the documented medium-horizon DEM++ stop; nearly always risk-on, so no Trendex edge is demonstrated.",
          "metrics": {
            "cagr": 0.10756335960411101,
            "end": "2026-07-31",
            "max_drawdown": -0.5078480735726958,
            "n_months": 402,
            "risk_off_events": 2,
            "risk_on_share": 1.0,
            "sharpe": 0.7693617300739715,
            "start": "1993-02-28",
            "vol": 0.1476105803033171
          }
        },
        {
          "category": "simplest_reasonable",
          "claim_role": "causal_primary",
          "family": "dem-short-channel10-close-proxy",
          "id": "dem10_causal_lag1",
          "interpretation": "Simplest single-stop Trendex analogue (channel-10 close cross, lag 1); tracks buy-and-hold.",
          "metrics": {
            "cagr": 0.10756335960411101,
            "end": "2026-07-31",
            "max_drawdown": -0.5078480735726958,
            "n_months": 402,
            "risk_off_events": 2,
            "risk_on_share": 1.0,
            "sharpe": 0.7693617300739715,
            "start": "1993-02-28",
            "vol": 0.1476105803033171
          }
        }
      ],
      "Combinations": [
        {
          "families_tested": [
            "best-effort-neighbor-grid",
            "conviction85-gated-cross-overlay",
            "dem-long-channel50-close-proxy",
            "dem-medium-channel21-close-proxy",
            "dem-short-channel10-close-proxy",
            "diffusion-3way-aboveness-staging",
            "duration-exceedance-top-probability",
            "duration-exceedance-trough-probability",
            "related-workbook-overlay"
          ],
          "n_causal": 26,
          "n_control": 3,
          "n_trials": 29
        }
      ],
      "Data": {
        "database": "data/market.sqlite + data/recessionalert.sqlite read-only",
        "fetched_at": "2026-08-22T23:39:05Z",
        "linked_assets": 0,
        "page_sha256": "sha256:1e8169579e056a0f50ab0fc97df47497897c37c9f169128eef54ab910abd4587",
        "related_trendexguide_sha256": "sha256:a4f92fe9963bc0f8240505c23b1ad0afafdc7d462bfe3171f94581f6ad59ae16",
        "related_workbook_sha256": "sha256:fc2be5f1fc2a2e38949ae566f6e8cb4699a95562975a498fb5a53510cc40d67c",
        "related_workbook_url": "https://recessionalert.com/download/?file=WeeklyData.xlsx"
      },
      "Historical events": [
        "Regime slices on dem21_causal_lag1: GFC/2022 negative; COVID/recent positive."
      ],
      "Limitations": [
        "Not native Trendex DEM++/diffusion/probability parity",
        "On-row assets=0; SPXTDX.gif SHA256 unavailable",
        "market.sqlite ohlcv is close-only; native uses undisclosed support/resistance",
        "WeeklyData TRENDEX PROB MODELS sheet is off-row weekly vs daily page cadence",
        "VTI absent from market cache; SPY/IWM cover broad/small legs",
        "Publication lag unknown; causal default lag>=1"
      ],
      "Parameter sensitivity": [
        "Channel windows 10/21/50/72 behave alike on monthly bars; lag 2 matches lag 1.",
        "Conviction thresholds 85/90/95 rarely bind because exceedance catalogs start empty (risk-on default)."
      ],
      "Portfolio contribution": {},
      "Promotion status": "Not promoted \u2014 Research Library only. Native fidelity NO-GO unless a human later promotes with on-row assets and disclosed rules.",
      "Regime behavior": [
        {
          "covid": {
            "cagr": 0.1833161370813985,
            "max_drawdown": -0.19415148071011146,
            "n_months": 12,
            "sharpe": 0.7767871774015338,
            "vol": 0.2575470524941025
          },
          "gfc": {
            "cagr": -0.23316728009010557,
            "max_drawdown": -0.5078480735726956,
            "n_months": 21,
            "sharpe": -1.0334279822061918,
            "vol": 0.22907402590734385
          },
          "inflation_2022": {
            "cagr": -0.1817536253627169,
            "max_drawdown": -0.20247013171234207,
            "n_months": 12,
            "sharpe": -0.7570024070758499,
            "vol": 0.23059580676551641
          },
          "recent": {
            "cagr": 0.21691034586031166,
            "max_drawdown": -0.08325836002549147,
            "n_months": 43,
            "sharpe": 1.6083515598744766,
            "vol": 0.12794815457582867
          }
        }
      ],
      "Research questions": [
        "Can labeled close-only public proxies and the related WeeklyData TRENDEX workbook extract any useful SPY/IEF market-timing overlay from the incomplete PRO>Trendex Charts page?"
      ],
      "Rules actually disclosed": [
        "Three-horizon DEM++ support/resistance stops (short light-blue, medium black, long red); SP500 close below a stop flips that horizon bearish, close above flips it bullish.",
        "Diffusion 0-3 count of stops price is above with 3->2 warning, 2->1 serious sell, 1->0 cash-or-short narrative staging.",
        "Per-stop 20y duration-exceedance top/trough probabilities; 85%+ readings are conviction only \u2014 the stop cross is the BUY/SELL signal.",
        "Stop formula, support/resistance construction, 20y window definition, allocation map, lag clock, and on-row chart/xlsx SHA256 are absent on this page SHA."
      ],
      "Source": {
        "fetched_at": "2026-08-22T23:39:05Z",
        "kind": "recessionalert_page",
        "sha256": "sha256:1e8169579e056a0f50ab0fc97df47497897c37c9f169128eef54ab910abd4587",
        "title": "PRO>Trendex Charts | RecessionAlert",
        "url": "https://recessionalert.com/trendex/"
      },
      "State-space exploration": [
        "29 labeled variants across 9 families; negatives retained in the trial ledger."
      ],
      "Suggested next research": [
        "Can a separately authorized refresh provide source-linked daily Trendex stop/diffusion/probability observations with point-in-time timestamps?",
        "Would intraday high/low history sharpen the channel-stop analogue without being presented as native DEM++?",
        "Does the weekly TRENDEX workbook TDIFF overlay add value at weekly rebalance instead of monthly?"
      ],
      "Summary": [
        "Twenty-nine labeled variants executed with lag>=1 causal_primary (26) and lag-0/same-close control_only (3).",
        "Best causal Sharpe: be_spy_lb12_lag1_t0 sharpe=1.031 (best-effort SMA grid; not a Trendex reconstruction).",
        "Best causal CAGR: be_spy_lb21_lag1_tneg05 cagr=0.116.",
        "Least drawdown: wb_trendex_overlay_lag1 max_drawdown=-0.341 (off-row weekly workbook; not native).",
        "Best source fidelity dem21_causal_lag1 sharpe=0.769 with 100% risk-on share: channel/diffusion/exceedance analogues converge near buy-and-hold on monthly bars.",
        "Regime split on dem21: GFC -1.03, COVID +0.78, 2022 -0.76, recent +1.61; nine families agree risk-on ~92% of months.",
        "Native DEM++/diffusion/probability fidelity remains NO-GO; publication is Other/Research exploratory_tested_proxy."
      ],
      "Timing and cost sensitivity": [
        "Causal lag>=1 only; overlay is month-end SPY/IEF without explicit trading-cost drag in this campaign."
      ],
      "Trial ledger": [
        {
          "iteration": 1,
          "n_trials": 29,
          "note": "Initial full-grid exploration: 29 labeled variants, causal lag>=1 primary.",
          "status": "published"
        }
      ],
      "Validation protocol": {},
      "What did not work": [
        "Channel/diffusion/exceedance analogues converge near buy-and-hold on monthly bars (dem21 risk-on share 100%).",
        "GFC and 2022 regimes were negative for the dem21 proxy.",
        "Lag-0/same-close controls are non-tradable and must not be claimed."
      ],
      "What had to be inferred": [
        "Close-only ^GSPC/SPY channel-stop/diffusion/exceedance reconstructions and lagged weekly TRENDEX-workbook overlays stand in for the undisclosed engine."
      ],
      "What the signal looks like": [
        "Month-end SPY/IEF overlay weights from lagged channel stops, diffusion staging, exceedance ranks, conviction gating, SMA neighbors, and off-row weekly TRENDEX TDIFF.",
        "DSL SignalSpecs are SMA stand-ins; executable primitives live in research/research_campaign/recessionalert_1598.py."
      ],
      "What the source claims": [
        "Three-horizon DEM++ support/resistance stops (short light-blue, medium black, long red); SP500 close below a stop flips that horizon bearish, close above flips it bullish.",
        "Diffusion 0-3 count of stops price is above with 3->2 warning, 2->1 serious sell, 1->0 cash-or-short narrative staging.",
        "Per-stop 20y duration-exceedance top/trough probabilities; 85%+ readings are conviction only \u2014 the stop cross is the BUY/SELL signal.",
        "Stop formula, support/resistance construction, 20y window definition, allocation map, lag clock, and on-row chart/xlsx SHA256 are absent on this page SHA.",
        "Close-only ^GSPC/SPY channel-stop/diffusion/exceedance reconstructions and lagged weekly TRENDEX-workbook overlays stand in for the undisclosed engine."
      ],
      "What to try interactively": [
        {
          "id": "lag_bars",
          "values": [
            0,
            1,
            2
          ]
        },
        {
          "id": "channel_lookback",
          "values": [
            10,
            17,
            21,
            34,
            50,
            72
          ]
        },
        {
          "id": "diffusion_stage",
          "values": [
            "warn32",
            "act21",
            "act10"
          ]
        },
        {
          "id": "conviction_threshold",
          "values": [
            85.0,
            90.0,
            95.0
          ]
        }
      ],
      "What worked": [
        "be_spy_lb12_lag1_t0 (SMA12) and be_spy_lb21_lag1_tneg05 were the strongest causal overlays in-sample.",
        "wb_trendex_overlay_lag1 (weekly TRENDEX TDIFF>=2) cut max drawdown to -0.34 from 2005."
      ],
      "Why the failures appear to happen": [
        "Close-only monthly bars cannot reproduce support/resistance stop flips; inferred stops rarely trigger.",
        "Stop formula and 20y window definition are undisclosed, so reconstructions are coarse."
      ]
    },
    "title": "PRO>Trendex Charts | RecessionAlert"
  },
  "campaign": {
    "campaign_id": "recessionalert-trendex-1598",
    "iteration_number": 1,
    "research_tags": [
      "data_limited",
      "fidelity_mismatch",
      "regime_dependent",
      "needs_more_research",
      "interesting_negative_result"
    ],
    "status": "published",
    "title": "PRO>Trendex Charts | RecessionAlert"
  },
  "candidate_frontier": [
    {
      "category": "best_sharpe",
      "claim_role": "causal_primary",
      "family": "best-effort-neighbor-grid",
      "id": "be_spy_lb12_lag1_t0",
      "interpretation": "Exploratory best Sharpe among causal variants; labeled SMA grid, not native Trendex.",
      "metrics": {
        "cagr": 0.11555697755473071,
        "end": "2026-07-31",
        "max_drawdown": -0.19336384497374537,
        "n_months": 391,
        "risk_off_events": 829,
        "risk_on_share": 0.782608695652174,
        "sharpe": 1.0313402234501794,
        "start": "1994-01-31",
        "vol": 0.11265445638344454
      }
    },
    {
      "category": "best_return",
      "claim_role": "causal_primary",
      "family": "best-effort-neighbor-grid",
      "id": "be_spy_lb21_lag1_tneg05",
      "interpretation": "Exploratory best CAGR among causal variants; labeled SMA grid."
    },
    {
      "category": "lowest_drawdown",
      "claim_role": "causal_primary",
      "family": "related-workbook-overlay",
      "id": "wb_trendex_overlay_lag1",
      "interpretation": "Exploratory least severe drawdown; off-row weekly TRENDEX TDIFF overlay from 2005, not native fidelity.",
      "metrics": {
        "cagr": 0.0746050463305179,
        "end": "2026-07-31",
        "max_drawdown": -0.34085387694628044,
        "n_months": 255,
        "risk_off_events": 1058,
        "risk_on_share": 0.6392156862745098,
        "sharpe": 0.7410437619556857,
        "start": "2005-05-31",
        "vol": 0.1048004585338788
      }
    },
    {
      "category": "best_source_fidelity",
      "claim_role": "causal_primary",
      "family": "dem-medium-channel21-close-proxy",
      "id": "dem21_causal_lag1",
      "interpretation": "Closest to the documented medium-horizon DEM++ stop; nearly always risk-on, so no Trendex edge is demonstrated.",
      "metrics": {
        "cagr": 0.10756335960411101,
        "end": "2026-07-31",
        "max_drawdown": -0.5078480735726958,
        "n_months": 402,
        "risk_off_events": 2,
        "risk_on_share": 1.0,
        "sharpe": 0.7693617300739715,
        "start": "1993-02-28",
        "vol": 0.1476105803033171
      }
    },
    {
      "category": "simplest_reasonable",
      "claim_role": "causal_primary",
      "family": "dem-short-channel10-close-proxy",
      "id": "dem10_causal_lag1",
      "interpretation": "Simplest single-stop Trendex analogue (channel-10 close cross, lag 1); tracks buy-and-hold.",
      "metrics": {
        "cagr": 0.10756335960411101,
        "end": "2026-07-31",
        "max_drawdown": -0.5078480735726958,
        "n_months": 402,
        "risk_off_events": 2,
        "risk_on_share": 1.0,
        "sharpe": 0.7693617300739715,
        "start": "1993-02-28",
        "vol": 0.1476105803033171
      }
    }
  ],
  "candidate_variants": [
    {
      "claim_kind": "documented_but_incomplete",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "dem-short-channel10-close-proxy",
      "id": "dem10_causal_lag1",
      "parameters": {
        "lag_bars": 1,
        "lookback": 10
      }
    },
    {
      "claim_kind": "documented_but_incomplete",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "dem-short-channel10-close-proxy",
      "id": "dem10_causal_lag2",
      "parameters": {
        "lag_bars": 2,
        "lookback": 10
      }
    },
    {
      "claim_kind": "documented_but_incomplete",
      "claim_role": "control_only",
      "exploratory": true,
      "family": "dem-short-channel10-close-proxy",
      "id": "dem10_sameclose_control",
      "parameters": {
        "lag_bars": 0,
        "lookback": 10
      }
    },
    {
      "claim_kind": "documented_but_incomplete",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "dem-medium-channel21-close-proxy",
      "id": "dem21_causal_lag1",
      "parameters": {
        "lag_bars": 1,
        "lookback": 21
      }
    },
    {
      "claim_kind": "documented_but_incomplete",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "dem-medium-channel21-close-proxy",
      "id": "dem21_causal_lag2",
      "parameters": {
        "lag_bars": 2,
        "lookback": 21
      }
    },
    {
      "claim_kind": "documented_but_incomplete",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "dem-medium-channel21-close-proxy",
      "id": "dem34_causal_lag1",
      "parameters": {
        "lag_bars": 1,
        "lookback": 34
      }
    },
    {
      "claim_kind": "documented_but_incomplete",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "dem-long-channel50-close-proxy",
      "id": "dem50_causal_lag1",
      "parameters": {
        "lag_bars": 1,
        "lookback": 50
      }
    },
    {
      "claim_kind": "documented_but_incomplete",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "dem-long-channel50-close-proxy",
      "id": "dem50_causal_lag2",
      "parameters": {
        "lag_bars": 2,
        "lookback": 50
      }
    },
    {
      "claim_kind": "documented_but_incomplete",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "dem-long-channel50-close-proxy",
      "id": "dem72_causal_lag1",
      "parameters": {
        "lag_bars": 1,
        "lookback": 72
      }
    },
    {
      "claim_kind": "documented_but_incomplete",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "diffusion-3way-aboveness-staging",
      "id": "diff_warn32_only",
      "parameters": {
        "lag_bars": 1,
        "stage": "warn32"
      }
    },
    {
      "claim_kind": "documented_but_incomplete",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "diffusion-3way-aboveness-staging",
      "id": "diff_act21_lag1",
      "parameters": {
        "lag_bars": 1,
        "stage": "act21"
      }
    },
    {
      "claim_kind": "documented_but_incomplete",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "diffusion-3way-aboveness-staging",
      "id": "diff_act10_cashshort_lag1",
      "parameters": {
        "lag_bars": 1,
        "stage": "act10"
      }
    },
    {
      "claim_kind": "documented_but_incomplete",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "diffusion-3way-aboveness-staging",
      "id": "diff_act21_lag2",
      "parameters": {
        "lag_bars": 2,
        "stage": "act21"
      }
    },
    {
      "claim_kind": "inferred",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "duration-exceedance-top-probability",
      "id": "ptop85_lag1",
      "parameters": {
        "lag_bars": 1,
        "threshold": 85.0
      }
    },
    {
      "claim_kind": "inferred",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "duration-exceedance-top-probability",
      "id": "ptop90_lag1",
      "parameters": {
        "lag_bars": 1,
        "threshold": 90.0
      }
    },
    {
      "claim_kind": "inferred",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "duration-exceedance-top-probability",
      "id": "ptop85_lag2",
      "parameters": {
        "lag_bars": 2,
        "threshold": 85.0
      }
    },
    {
      "claim_kind": "inferred",
      "claim_role": "control_only",
      "exploratory": true,
      "family": "duration-exceedance-top-probability",
      "id": "ptop85_lag0_control",
      "parameters": {
        "lag_bars": 0,
        "threshold": 85.0
      }
    },
    {
      "claim_kind": "inferred",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "duration-exceedance-trough-probability",
      "id": "pbot85_lag1",
      "parameters": {
        "lag_bars": 1,
        "threshold": 85.0
      }
    },
    {
      "claim_kind": "inferred",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "duration-exceedance-trough-probability",
      "id": "pbot95_lag1",
      "parameters": {
        "lag_bars": 1,
        "threshold": 95.0
      }
    },
    {
      "claim_kind": "inferred",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "duration-exceedance-trough-probability",
      "id": "pbot85_lag2",
      "parameters": {
        "lag_bars": 2,
        "threshold": 85.0
      }
    },
    {
      "claim_kind": "inferred",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "conviction85-gated-cross-overlay",
      "id": "xconv_any85_lag1",
      "parameters": {
        "diffusion_gate": "any",
        "lag_bars": 1,
        "threshold": 85.0
      }
    },
    {
      "claim_kind": "inferred",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "conviction85-gated-cross-overlay",
      "id": "xconv_maj85_lag1",
      "parameters": {
        "diffusion_gate": "majority",
        "lag_bars": 1,
        "threshold": 85.0
      }
    },
    {
      "claim_kind": "inferred",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "conviction85-gated-cross-overlay",
      "id": "xconv_any90_lag2",
      "parameters": {
        "diffusion_gate": "any",
        "lag_bars": 2,
        "threshold": 90.0
      }
    },
    {
      "claim_kind": "inferred",
      "claim_role": "control_only",
      "exploratory": true,
      "family": "duration-exceedance-top-probability",
      "id": "prob_only_control",
      "parameters": {
        "lag_bars": 0,
        "threshold": 85.0
      }
    },
    {
      "claim_kind": "inferred",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "best-effort-neighbor-grid",
      "id": "be_spy_lb12_lag1_t0",
      "parameters": {
        "lag_bars": 1,
        "lookback": 12,
        "threshold": 0.0
      }
    },
    {
      "claim_kind": "inferred",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "best-effort-neighbor-grid",
      "id": "be_spy_lb21_lag1_tneg05",
      "parameters": {
        "lag_bars": 1,
        "lookback": 21,
        "threshold": -0.5
      }
    },
    {
      "claim_kind": "inferred",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "best-effort-neighbor-grid",
      "id": "be_spy_lb6_lag2_t0",
      "parameters": {
        "lag_bars": 2,
        "lookback": 6,
        "threshold": 0.0
      }
    },
    {
      "claim_kind": "inferred",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "related-workbook-overlay",
      "id": "wb_trendex_overlay_lag1",
      "parameters": {
        "lag_bars": 1,
        "stage": "act21"
      }
    },
    {
      "claim_kind": "inferred",
      "claim_role": "causal_primary",
      "exploratory": true,
      "family": "related-workbook-overlay",
      "id": "wb_trendex_overlay_lag2",
      "parameters": {
        "lag_bars": 2,
        "stage": "act21"
      }
    }
  ],
  "event_tables": [],
  "evidence": {},
  "execution_assumptions": {},
  "interactive_specs": [
    {
      "id": "lag_bars",
      "values": [
        0,
        1,
        2
      ]
    },
    {
      "id": "channel_lookback",
      "values": [
        10,
        17,
        21,
        34,
        50,
        72
      ]
    },
    {
      "id": "diffusion_stage",
      "values": [
        "warn32",
        "act21",
        "act10"
      ]
    },
    {
      "id": "conviction_threshold",
      "values": [
        85.0,
        90.0,
        95.0
      ]
    }
  ],
  "limitations": [
    "Not native Trendex DEM++/diffusion/probability parity",
    "On-row assets=0; SPXTDX.gif SHA256 unavailable",
    "market.sqlite ohlcv is close-only; native uses undisclosed support/resistance",
    "WeeklyData TRENDEX PROB MODELS sheet is off-row weekly vs daily page cadence",
    "VTI absent from market cache; SPY/IWM cover broad/small legs",
    "Publication lag unknown; causal default lag>=1"
  ],
  "parameter_grids": [],
  "provenance": {
    "database": "data/market.sqlite + data/recessionalert.sqlite read-only",
    "fetched_at": "2026-08-22T23:39:05Z",
    "linked_assets": 0,
    "page_sha256": "sha256:1e8169579e056a0f50ab0fc97df47497897c37c9f169128eef54ab910abd4587",
    "related_trendexguide_sha256": "sha256:a4f92fe9963bc0f8240505c23b1ad0afafdc7d462bfe3171f94581f6ad59ae16",
    "related_workbook_sha256": "sha256:fc2be5f1fc2a2e38949ae566f6e8cb4699a95562975a498fb5a53510cc40d67c",
    "related_workbook_url": "https://recessionalert.com/download/?file=WeeklyData.xlsx"
  },
  "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": []
}
