{
  "experiment": {
    "alloc": {
      "labels": [
        "2026-01"
      ],
      "series": [
        {
          "name": "SPY",
          "values": [
            0.6
          ]
        },
        {
          "name": "CASH",
          "values": [
            0.4
          ]
        }
      ]
    },
    "alloc_as": null,
    "alloc_monthly_as": null,
    "alloc_monthly_ours": {
      "labels": [
        "2026-01"
      ],
      "series": [
        {
          "name": "SPY",
          "values": [
            0.6
          ]
        },
        {
          "name": "CASH",
          "values": [
            0.4
          ]
        }
      ]
    },
    "alloc_ours": {
      "labels": [
        "2026-01"
      ],
      "series": [
        {
          "name": "SPY",
          "values": [
            0.6
          ]
        },
        {
          "name": "CASH",
          "values": [
            0.4
          ]
        }
      ]
    },
    "alloc_yearly_as": null,
    "alloc_yearly_ours": {
      "labels": [
        "2026"
      ],
      "series": [
        {
          "name": "SPY",
          "values": [
            0.6
          ]
        },
        {
          "name": "CASH",
          "values": [
            0.4
          ]
        }
      ]
    },
    "analysis_page": "experiments/qm-09tp.22-analysis.html",
    "answer": "Yes for the supplied 2015-2026 snapshot: all four source pages and the workbook match pinned SHA-256 values, and the runner reproduces 27 Class A markers, 58 Class B markers, and 83 unique buy sessions. No for rebuilding the hidden breadth formula or exact pre-2015 dates. On this snapshot, next-session outcomes trail the unconditional S&P baseline at every disclosed horizon, with a notably weaker post-2020 83-session record.",
    "bead_ids": [
      "qm-09tp.22"
    ],
    "cost_variants": {},
    "coverage": {
      "alloc_monthly_labels_n": 12,
      "alloc_yearly_labels_n": 0,
      "as_alloc_rows": 0,
      "as_history_start_year": null,
      "as_returns_n": 0,
      "as_yearly_alloc_rows": 0,
      "coverage_generated_at": "2026-01-01T00:00:00Z",
      "db_path": "data/market.sqlite",
      "db_warm": true,
      "gap_years": null,
      "limiting": {
        "effective_start": "1993-01-29",
        "id": "SPY",
        "kind": "ohlcv",
        "native_start": "1993-01-29",
        "proxied": false,
        "proxy_chain": [],
        "span_basis": "db"
      },
      "macro_meta": [],
      "macros": [],
      "monthly_labels_n": 1,
      "ours_alloc_rows": 1,
      "ours_returns_n": 1,
      "ticker_meta": [
        {
          "end": "2026-07-24",
          "n_rows": 8428,
          "start": "1993-01-29",
          "ticker": "SPY"
        }
      ],
      "tickers": [
        "SPY"
      ]
    },
    "date": "2026-08-23",
    "disposition": "Indicator-only publication for reproducibility and inspection. Keep the playable Other-indicators entry and its exact fixture markers, but make no strategy, excess-return, catalog-admission, or raw-formula reconstruction claim.",
    "equity": {
      "experiment": [
        1.0
      ],
      "labels": [
        "2026-01-01"
      ],
      "spy": [
        1.0
      ],
      "spy_labels": [
        "2026-01-01"
      ]
    },
    "errors": "The breadth smoothing constant is proprietary, so the runner replays calculated GTR/BUY fields and fails closed on raw-formula reconstruction. Exact machine-readable GTR levels and buy dates begin on 2015-03-26. The source's earlier chart is not converted into fake precision. This is one current workbook snapshot with an unknown revision/vintage policy, not a point-in-time archive. Workbook codes 1 and 2 have no disclosed confidence meaning; only positive versus zero is normalized while the raw codes remain auditable. The source discloses no exit. A 20-session active band exists only for the public pairing viewer. The observed signal does not beat the unconditional fixture-span S&P baseline at any disclosed horizon, and the post-2020 83-session result is materially weaker. Cached source page bodies and workbook bytes stay outside public docs; public pages contain original summaries, hashes, derived signal flags, and derived metrics only.",
    "follow_on": [
      {
        "status": "deferred",
        "title": "No explicit follow-on; file new issue if needed"
      }
    ],
    "followup_command": "gh issue create --title \"Follow-up Great Trough Detector an exact signal replay with a weaker r\" --body \"Follow-up to qm-09tp.22: Can RecessionAlert's S&P 500 Great Trough buy signal be reproduced from the file\" --label \"priority:p2\" --label \"pipeline:research\" --label \"agent:ready\"",
    "gh_command": "gh issue create --title \"Follow-up Great Trough Detector an exact signal replay with a weaker r\" --body \"Follow-up to qm-09tp.22: Can RecessionAlert's S&P 500 Great Trough buy signal be reproduced from the file\" --label \"priority:p2\" --label \"pipeline:research\" --label \"agent:ready\"",
    "id": "qm-09tp.22",
    "issue_ids": [
      "qm-09tp.22"
    ],
    "monthly": {
      "as": [
        null
      ],
      "labels": [
        "2026-01"
      ],
      "ours": [
        0.0
      ]
    },
    "page": "experiments/qm-09tp.22.html",
    "performance": {
      "cagr": 0.0,
      "max_drawdown": 0.0,
      "max_drawdown_fallback_rule": "Use daily backtest equity when available; otherwise compound published monthly returns and label the result monthly.",
      "max_drawdown_observation_frequency": "monthly",
      "sharpe": 0.0,
      "sortino": 0.0,
      "volatility": null
    },
    "provenance": {
      "artifact": "research/experiments/qm-09tp.22.ipynb",
      "code": "research/recessionalert/great_trough.py",
      "finding": "research/findings/specs/recessionalert-great-trough.json",
      "site_data": "site-data/experiments/qm-09tp.22.json",
      "tearsheet": null
    },
    "question": "Can RecessionAlert's S&P 500 Great Trough buy signal be reproduced from the files already captured in this repository without guessing its proprietary smoothing rule, and how did those supplied signals fare afterward?",
    "safe_withdrawal": null,
    "signalSeries": {
      "active": [
        false
      ],
      "driver": "Signal driver",
      "entryValue": 0.0,
      "exitValue": 0.0,
      "inputs": [],
      "isDynamic": false,
      "isMulti": false,
      "labels": [
        "2026-01-01"
      ],
      "megaThreshold": null,
      "megaThresholdLabel": null,
      "threshold": 0.0,
      "thresholdKind": "fixed",
      "thresholdLabel": "Entry 0.0",
      "trigger": [
        false
      ],
      "triggers": [],
      "unit": "",
      "values": [
        -0.232
      ],
      "yLabel": "Indicator value"
    },
    "signals": [],
    "slug": "qm-09tp.22",
    "stats": {
      "cagr": 0.0,
      "class_a_signals": 27,
      "class_b_signals": 58,
      "combined_119d_win_rate": 0.7407407407407407,
      "combined_150d_win_rate": 0.7654320987654321,
      "combined_37d_win_rate": 0.6626506024096386,
      "combined_83d_win_rate": 0.6829268292682927,
      "execution": "next session (+1 bar)",
      "fixture_rows": 2864,
      "maxDD": 0.0,
      "native_end": "2026-08-14",
      "native_start": "2015-03-26",
      "sharpe": 0.0,
      "sortino": 0.0,
      "unconditional_119d_win_rate": 0.7623906705539358,
      "unconditional_150d_win_rate": 0.8002211573903428,
      "unconditional_37d_win_rate": 0.6995753715498938,
      "unconditional_83d_win_rate": 0.7413669064748202,
      "unique_signal_sessions": 83
    },
    "status": "completed",
    "status_chip": "Completed",
    "supplemental": {
      "analysis_page": "experiments/qm-09tp.22-analysis.html",
      "decision": "indicator_only_publication",
      "indicator_id": "recessionalert-great-trough",
      "interactive_control": "The companion Other-indicators page provides in-browser buy/sell pairing and mode controls backed by the generated signals history; no control invents a Great Trough threshold.",
      "research_narrative": [
        {
          "heading": "The short version",
          "text": "The supplied buy dates are exactly reproducible. The proprietary breadth recipe is not. That is enough for an honest indicator replay, but not enough to claim an independently rebuilt detector."
        },
        {
          "heading": "What was frozen",
          "text": "Four page hashes, one workbook hash, the 2014 Class A/B rules, all 83 positive markers, next-session execution, four source horizons, a 2020 subperiod split, and an extra-lag check were fixed before reading outcomes."
        },
        {
          "heading": "What failed",
          "text": "The local 2015-2026 signal trails the every-session S&P baseline at 37, 83, 119, and 150 sessions. Its 83-session win rate falls to 62.5% after 2020 versus 75.0% for the baseline."
        },
        {
          "heading": "Why it is still published",
          "text": "Readers can inspect and pair a real, causally aligned signal without mistaking it for a profitable strategy. The negative evidence and every reconstruction gap are visible beside it."
        },
        {
          "heading": "Why there is no strategy entry",
          "text": "The detector is buy-only, has no disclosed exit, and does not outperform its simple baseline in the available snapshot. No StrategySpec, runner overlay, tearsheet, or catalog row was added."
        }
      ]
    },
    "tax_analysis": {
      "ltcg_pct": null,
      "note": "Experiment parity stub: no taxable wrapper; see strategy tax_analysis for methodology",
      "schema_id": "tax-analysis/v1",
      "stcg_pct": null
    },
    "taxable_stats": null,
    "title": "Great Trough Detector: an exact signal replay with a weaker recent record",
    "trading_costs": {
      "avg_daily_turnover": 0.00503,
      "avg_yearly_fees": 0.001268,
      "basis": "monthly_proxy",
      "cost_bps_one_way": 10.0,
      "fee_bps": 10.0,
      "n_bars": 1,
      "schema_id": "trading-costs/v1",
      "slippage_bps": 0.0,
      "total_costs": 5e-06
    },
    "verify": {
      "as_cagr": null,
      "as_stats": null,
      "cagr_delta": null,
      "gates": null,
      "last_verify_at": null,
      "monthly_bias": null,
      "monthly_corr": null,
      "monthly_mae": null,
      "n_months": null,
      "ours_cagr": 0.0,
      "ours_stats": {
        "ann_return": 0.0,
        "sharpe": 0.0,
        "sortino": 0.0
      },
      "passed": null,
      "status": "not_applicable",
      "verify_status": null
    },
    "visualizations": [
      {
        "data": {
          "note": "Unavailable means unavailable: nothing in the right column was estimated.",
          "rows": [
            {
              "boundary": "Exact workbook marker replay",
              "disclosed rule": "Arm below 27.4 for 5 trading days; buy on a punch above 80 after at least 4 days below 80",
              "piece": "Class B"
            },
            {
              "boundary": "Exact workbook marker replay",
              "disclosed rule": "Arm below 10 for 10 trading days; cancel Class B; same punch above 80",
              "piece": "Class A"
            },
            {
              "boundary": "Smoothing constant is proprietary",
              "disclosed rule": "Smoothed NYSE common-stock 13-week new-high share",
              "piece": "Breadth level"
            },
            {
              "boundary": "Exact calculated fields begin 2015-03-26; no chart OCR",
              "disclosed rule": "Source chart claims a longer history",
              "piece": "History"
            },
            {
              "boundary": "RFE and Donchian ideas stay separate",
              "disclosed rule": "No detector exit",
              "piece": "Exit"
            }
          ]
        },
        "title": "What is disclosed, and what is not",
        "type": "rules_table"
      },
      {
        "data": {
          "note": "The baseline uses every eligible fixture session. This is signal-outcome evidence, not a portfolio backtest.",
          "rows": [
            {
              "baseline mean": "1.86%",
              "baseline win": "70.0%",
              "horizon": "37 sessions",
              "signal mean": "1.11%",
              "signal n": 83,
              "signal win": "66.3%"
            },
            {
              "baseline mean": "4.14%",
              "baseline win": "74.1%",
              "horizon": "83 sessions",
              "signal mean": "3.06%",
              "signal n": 82,
              "signal win": "68.3%"
            },
            {
              "baseline mean": "5.92%",
              "baseline win": "76.2%",
              "horizon": "119 sessions",
              "signal mean": "4.99%",
              "signal n": 81,
              "signal win": "74.1%"
            },
            {
              "baseline mean": "7.57%",
              "baseline win": "80.0%",
              "horizon": "150 sessions",
              "signal mean": "6.58%",
              "signal n": 81,
              "signal win": "76.5%"
            }
          ]
        },
        "title": "Next-session outcomes versus every-session S&P baseline",
        "type": "robustness_table"
      },
      {
        "data": {
          "note": "The split was frozen at 2020; no weak cell was tuned away.",
          "rows": [
            {
              "baseline mean": "2.61%",
              "baseline win": "72.9%",
              "signal mean": "2.88%",
              "signal n": 34,
              "signal win": "76.5%",
              "signal-date period": "2015-2019"
            },
            {
              "baseline mean": "5.30%",
              "baseline win": "75.0%",
              "signal mean": "3.20%",
              "signal n": 48,
              "signal win": "62.5%",
              "signal-date period": "2020-2026"
            }
          ]
        },
        "title": "The 83-session result weakened after 2020",
        "type": "subperiod_table"
      },
      {
        "data": {
          "note": "The companion Other-indicators card exposes all 83 workbook-supplied trigger dates, the GTR level, a 20-session viewer window, pairing controls, and S&P overlay statistics. The viewer window is not a source-disclosed exit."
        },
        "title": "Exact buy dates are playable on Other indicators",
        "type": "signal_timeline"
      }
    ]
  },
  "generated_at": "2026-09-17T04:12:25Z",
  "id": "qm-09tp.22",
  "schema_id": "experiments/v1",
  "schema_version": 1
}
