# Methodology — Pivot Recommender (THv2 Lane 43)

**Version:** 43.0.0 · **Date:** 2026-04-28 · **Owner:** NEXUS COMMAND lane 43

---

## 1. Question being answered

> *"Where should marginal capital go right now, given everything we know?"*

Not just security-level signals — full cross-asset rotation across **9 levels**:
Macro → Cross-asset → Geography → Sector → Microsector → Style → Cap-tier → Instrument → Ticker.

User-named pivots in scope: stocks ↔ gold ↔ silver ↔ commodities ↔ BTC ↔ ETH ↔ SOL ↔ office REITs ↔ NFLX/NFXL ↔ GOOGL/GOOL ↔ TQQQ/SPY/BND.

## 2. Pivot taxonomy

| Tier | Level | Horizon (days) | Example pair |
|----:|---|---:|---|
| 0 | MACRO | 30–365 | SPY → BND |
| 1 | CROSS_ASSET | 30–365 | SPY → GLD |
| 2 | GEOGRAPHY | 60–365 | SPY → EEM |
| 3 | SECTOR | 20–180 | XLK → XLE |
| 4 | MICROSECTOR | 10–90 | BTC → ETH |
| 5 | STYLE | 30–252 | IWF → IWD |
| 6 | CAP_TIER | 20–180 | SPY → IWM |
| 7 | INSTRUMENT | 5–60 | NFLX → NFXL |
| 8 | TICKER | 3–30 | SPY → GOOGL |

## 3. Trigger taxonomy + sources

Each pair's trigger fires only when its predicate evaluates `true` AND the underlying state is fresh (≤ 6h staleness window). Trigger registry includes 70+ triggers. Source coverage:

- **Macro / regime**: yield-curve (FRED T10Y3M, T10Y2Y), recession-prob (lane 34 engine), credit spreads (FRED BAMLH0A0HYM2), leading indicators (lane 18), fed funds (FRED), CPI/breakeven (FRED).
- **Cross-asset signals**: real rates (FRED DFII10), DXY (ICE), VIX (CBOE), gold-silver ratio (LBMA), oil (EIA), DBC composite.
- **Crypto**: BTC dominance (TradingView), ETH/BTC, funding (CME/Deribit), on-chain burn rate, SOL active addresses + DEX share (DefiLlama).
- **Geography**: China PMI (NBS Caixin), JPM Global PMI, EM credit spreads (FRED EMBIG), DXY.
- **Equity micro**: ISM PMI, IBES earnings revisions, sector breadth, factor scores from lane 5.
- **Real estate**: Kastle Systems back-to-office, Green Street / CoStar cap rates.
- **Commodities (specific)**: BMI Lithium spot, IEA EV outlook, SMM inventory.
- **Leveraged-ETF guards** (lane 42): 50d streak, realized-vol-30d, breadth-pct-above-50d.

## 4. Information coefficients (IC)

Each pair publishes:
- `ic`: Spearman rank correlation of trigger-composite vs forward leg-2-minus-leg-1 return over `leadDays`.
- `n`: sample size (rolling-window count).
- `ciLow`, `ciHigh`: 95% bootstrap CI (1000 resamples).
- Source citation per claim.

**Highest-IC pairs (priors):**
1. BTC → SOL (IC 0.31, n=60, lead 14d)
2. BTC → ETH (IC 0.27, n=96, lead 21d)
3. SPY → BND (IC 0.24, n=480, lead 90d) — highest large-n IC
4. GLD → SLV (IC 0.21, n=240, lead 45d)
5. TQQQ → QQQ de-leverage (IC 0.21, n=144, lead 7d)

**Wide-CI / EXPERIMENTAL** (n<60): VNQ↔VNO office cycle, SPY→AEHR, GLD→LIT, GLD→UNG, ETH↔SOL.

**EVENT_DRIVEN_NO_SIGNAL** (algorithmic refusal): GLD → JO (orange juice). Per `feedback_no_defaults.md`, the engine **refuses to fire** because no general-purpose signal exists; it surfaces "WAIT — requires manual research signal".

## 5. Scoring algorithm

```
triggerCoverage = firingTriggers / totalTriggers
rawScore        = ic × triggerCoverage         (bounded 0..1)
ciWidth         = ciHigh − ciLow
confidence      = max(0, 1 − ciWidth − tierPenalty)
```

Tier penalties: `STANDARD 0`, `CONDITIONAL 0`, `EXPERIMENTAL 0.15`, `EVENT_DRIVEN 0.20`, `EVENT_DRIVEN_NO_SIGNAL 1.0` (refused).

**Verdict thresholds:**
- `PIVOT` if coverage ≥ 0.5 AND ic ≥ 0.10 AND adjConfidence ≥ 0.3
- `WATCH` if coverage ≥ 0.33 AND ic ≥ 0.07
- `WAIT` otherwise

**Magnitude:**
```
baseMagnitude = 0.05 + 0.10 × triggerCoverage × min(1, ic/0.20)
magnitudeFraction = min(0.20, baseMagnitude)
```

Hard cap of 20% of from-asset per single pivot (charter §16 Capital Allocation Framework: $1k/mo cap, $75/mo per-project seed).

## 6. Honesty + non-overconfidence guards

- **Stale-signal guard** (`feedback_silent_failures.md`): any state slot older than 6h disables that trigger; if all triggers stale → WAIT.
- **No-default guard** (`feedback_no_defaults.md`): empty state → WAIT, never fabricate.
- **CI-tightness gate** (`feedback_scientific_rigor_portfolio_wide.md`): wide CI → low confidence → unlikely PIVOT.
- **Tilt suppression** (lane 25 decision-journal): when user tilt ≥ 0.7, suppress all but top-1 pivot with note.
- **Aggregator pattern** (`feedback_aggregator_display.md`): page surfaces top-3 PIVOT, top WATCH, total WAIT count, and lowest-confidence (heatmap floor).
- **Leveraged-ETF guard** (lane 42): NFLX→NFXL / GOOGL→GOOL / QQQ→TQQQ require **all three** of {≥30d streak above 50d MA, realized vol < threshold, top-decile factor score sustained 30d}. Vol-drag override on de-leverage is REQUIRED.

## 7. Backtest harness

`tests/pivot-backtest.js` implements lane 16 walk-forward envelope:
- No look-ahead.
- Transaction-cost neutral.
- Per-pair: hit-rate, mean lead-period excess, max DD, Sharpe, episode count.
- Synthetic seeded series for shape-validation; production wires real EOD.
- Refuses to fabricate when historical data missing → emits `INSUFFICIENT_DATA`.

## 8. Verdict-Modal attestation (lane 26)

Each `recommend()` result embeds an 8-char FNV-1a hash of `{version, asOf, topPivots[].(pairKey, verdict, score, confidence)}` for replay verification.

## 9. Literature base

- **Faber, M.T. (2007, 2013)** — Tactical Asset Allocation; GTAA-13.
- **Asness, Moskowitz, Pedersen (2013)** — *Value and Momentum Everywhere*, J. Finance 68(3).
- **Erb & Harvey (2006)** — Strategic and Tactical Value of Commodity Futures, FAJ.
- **Gorton & Rouwenhorst (2006)** — Facts and Fantasies about Commodity Futures, FAJ.
- **Estrella & Mishkin (1998)** — Predicting US Recessions, RES.
- **Cheng & Madhavan (2009)** — Dynamics of Leveraged and Inverse ETFs, JOIM.
- **Avellaneda & Zhang (2010)** — Path-Dependence of Leveraged ETF Returns, SIAM J. Fin. Math.
- **Stovall, S. (2014)** — Seven Rules of Wall Street.
- **Moskowitz, Ooi, Pedersen (2012)** — Time Series Momentum, JFE 104.
- **AQR (2020)** — Half Century of Macro Momentum.
- **Damodaran A.** — sector multiples / ERP tables.
- **Pedersen, L.H. (2015)** — *Efficiently Inefficient*, Princeton.

## 10. What this engine does NOT do

- Does not auto-execute pivots (charter constraint).
- Does not buy data feeds (charter §16 cap).
- Does not pivot when signals are weak / stale / missing.
- Does not present GLD→JO or other event-driven-no-signal pairs as algorithmic.
- Does not amend canonical engines (read-only contract).
