Expected returns — strategic track (Track A)
Generated 2026-09-26T16:41:24+00:00 · quarterly cadence (content refreshes with the data, not daily judgment)
Strategic inputs
Yale last official: 30.8 @ 2023-09
Posture bands
| Band | Posture | Condition |
|---|---|---|
| Defensive | 20–30% equities | ERP < 0% or CAPE > 95th percentile (since 1900) |
| Neutral | 40–50% equities | ERP 0–1.5% |
| Full | 55–65% equities | ERP > 1.5% |
Posture bands are judgment-calibrated, NOT backtested policy — see backtest below.
Current mechanical band (ESTIMATE — computed CAPE extension, not official Shiller data): Defensive 20–30% (ERP -0.32%, CAPE-ext 99th percentile since 1900, as of 2026-08).
CAPE extension methodology (estimate)
CAPE-ext estimates Shiller's CAPE on a pure Bloomberg as-reported earnings basis (basis switch 2026-09-26; the Yale series no longer feeds the window — it stays canonical for the percentile history and the backtest). Annual Bloomberg EPS is placed at year midpoints and interpolated monthly (Shiller's annual-era convention); past the last annual midpoint (2025-06), quarter-end anchors are 4-quarter trailing sums (2025Q4 235.4, 2026Q1 241.9, 2026Q2 263.0) — Yale's own TTM-based Real Earnings convention — interpolated monthly between anchors, with months past the latest anchor held flat (2 month(s) this run). The series is CPI-deflated (CPIAUCSL, 2026-08); the numerator is the FRED SP500 monthly average (2026-08), deflated the same way. Of the 120 window months, 106 sit in the annual-interpolated region and 12 in the quarterly trailing-anchor region. The Bloomberg basis runs ~3% below S&P's divisor basis (measured ~3% below S&P DJI divisor basis (CY2024 -3.93%, 2025-9M -2.72%)), so CAPE-ext reads ~3% high versus a pure-S&P basis — the conservative direction for a defensive threshold. The percentile ranks a Bloomberg-basis level against S&P-basis Yale history; the basis gap is immaterial at the 95th-percentile defensive threshold. Seed cross-check: FY2025 235.61 vs sum of quarters 235.39 (0.09%); newest earnings datum 2026Q2 (ended 2026-06-30, 88 days before this build; fail-closed past 150 days). FRED CPIAUCSL has no print for 2025-10; the deflator for that month is linearly interpolated between adjacent prints (source gap, not a fetch failure). The seed is owner-attested against the Bloomberg terminal; guards catch catastrophic entry errors, not earnings cycles. The band-rule backtest below is unaffected: it runs on the official Yale series only.
Meso layer — 6–12 month cyclical conditioners (context, not triggers)
SLOOS footnote: >+25% historically preceded weak returns; false signal 2023 — private credit substituted for banks. Net-liquidity caveat: post-2008 correlations inflated by QE regime. EBP and AIAE are levels context only; neither fires anything on any page.
Band-rule backtest (monthly, Shiller dataset)
| Strategy | CAGR | Vol | Max drawdown | CAGR/vol | Notes |
|---|---|---|---|---|---|
| Band rule (mechanical) | 7.9% | 8.8% | -51% | 0.90 | 48 band switches; time in band: defensive (25%) 13% / neutral (45%) 6% / full (60%) 80% |
| 100% S&P total return | 9.8% | 14.9% | -82% | 0.66 | |
| Static 60/40 (monthly rebalance) | 8.0% | 9.4% | -61% | 0.86 |
Monthly Shiller data 1910-02 → 2023-06 (1,361 monthly returns; the 10-year CPI warmup for estimated real yields sets the start). Band decided at month-end t−1 earns month t's return — no lookahead. Bands use the midpoints of the posture ranges (defensive 25%, neutral 45%, full 60% equities; remainder in the bond leg). S&P total return = month-end price change plus D/12 dividend income. Bond leg = GS10 carry plus a constant ~8-year-duration price response to the monthly yield change (approximation, labeled — not a measured Treasury total return series). Real yields are estimated throughout as GS10 − trailing 10-year CPI inflation (footnote: pre-2003 real yields estimated; the estimate is kept for the full window so the series is homogeneous). CAPE percentile is the trailing expanding percentile since 1900. Current mechanical band (as of the last dataset row): full. This backtest intentionally runs on the official Yale Shiller series only (through 2023-06); the computed CAPE extension above does not enter it.
Data lineage & fail-closed rules
- Shiller dataset (Yale
ie_data.xls): source used this run = live fetch;
last dataset row 2023-09; file last-modified
Tue, 17 Oct 2023 03:27:29 GMT. Cached
last-good at
/expected-returns/shiller_cache.json; a fetch failure uses the cache. The Yale series is the canonical historical record: all historical levels and the band-rule backtest read off it. A dataset older than 45 days engages the staleness bar; the current CAPE/ERP/band readings then come from the computed extension below (or fail closed when the extension is unavailable). - Computed CAPE extension (estimate; feeds only the current
CAPE/ERP/band readings above): pure Bloomberg as-reported earnings basis
(Bloomberg SPX Index FA) — annual EPS at year midpoints interpolated
monthly (Shiller's annual-era convention), quarter-end 12-month trailing
anchors (4-quarter sums) past the last annual midpoint (Yale's TTM-based Real
Earnings convention); CPI = FRED CPIAUCSL; price = FRED
SP500 daily closes averaged monthly (complete months only). The
seed
data/earnings_extension.jsonis owner-attested against the Bloomberg terminal; guards catch catastrophic entry errors, not earnings cycles (strict schema; quarterly EPS in [10, 500], annual in [40, 400]; FY vs sum-of-quarters ≤ 2%) and fail closed when the newest earnings datum is > 150 days old or CPI/price fetches fail. The Yale series no longer feeds the window (percentile history + backtest only). This run: CAPE-ext 39.6 as of 2026-08; pure Bloomberg as-reported basis, newest datum 2026Q2 (88d old). - ERP = CAPE-ext earnings yield (1/CAPE-ext) − FRED DFII10 (10y TIPS), same-date estimate with both component dates shown; suppressed when the extension fails closed. Footnote: pre-2003 real yields estimated (backtest only).
- HY OAS percentile: FRED BAMLH0A0HYM2, percentile vs the history FRED serves.
- EBP: Fed Board public CSV (ebp_csv.csv), monthly; fail-closed on fetch/parse failure.
- AIAE = equities MV ÷ (equities MV + total liabilities
of the five borrower sectors), the published Livermore methodology. Series IDs
verified against FRED titles 2026-09-26 (quarterly Z.1; fail-closed if any
component is missing or stale > 200 days):
BOGZ1FL883164105Q— All Domestic Sectors; Corporate Equities; Liability, LevelTLBSHNO— Households and Nonprofit Organizations; Total Liabilities, LevelTLBSNNCB— Nonfinancial Corporate Business; Total Liabilities, LevelSLGLIAQ027S— State and Local Governments; Total Liabilities, LevelFGTLBLQ027S— Federal Government; Total Liabilities, LevelBOGZ1FL264190005Q— Rest of the World; Total Liabilities, Level
- Net liquidity = WALCL − WTREGEN − RRPONTSYD (RRP converted $B → $M), weekly grid, 13-week change.
- Concentration (top-10 share, estimate): fetched at build
time from public, no-auth ETF holdings files
(iShares IVV holdings CSV first,
SSGA SPY holdings fallback; fund weights
approximate index weights — not index-administrator
data). Guards on every accepted value: schema valid, ≥
10 rows parsed, top-10 sum in [15%,
60%], no single weight > 25%. This panel
fails stale-visible (the one doctrine exception on this
page): on any failure the last-good cache
(
data/concentration_cache.json, committed back by a path-scoped workflow step) renders with its as-of date and a visible "concentration data stale" warning; no number is ever fabricated. Reference value for continuity: the manual constant this panel replaced was BofA's "AI Big 10" 41% (Sep 2026). This run: 38.8% as of 2026-09-24 (IVV; fresh fetch this run). Top 10: NVIDIA 8.2%, APPLE 7.4%, MICROSOFT 5.6%, AMAZON.COM INC 3.7%, ALPHABET CLASS A 3.0%, META PLATFORMS CLASS A 2.6%, BROADCOM INC 2.5%, ALPHABET CLASS C 2.4%, MICRON TECHNOLOGY 1.8%, TESLA INC 1.6%.