ndxlab
ndxlab · Rules-based investing, tracked in public

The “Dynamic Convexity” $1M plan, tracked live

One mechanical execution on the first trading day of each month, under rules fixed in advance — no discretion, ever. Refreshed every trading day · data through · how the strategy was chosen: research archive.
By default the page shows a full-history dry run of the same plan spec, monthly ledger included; drag the slider to the far right (2026-07, the actual start) for the live record.

The plan

Spec: total budget $1,000,000, first decision day 2026-07-01. The first month deploys $200,000; from 2026-08, $13,300 goes in on the first trading day of each month for 60 months through 2031-07 (the $2,000 remainder folds into the final month, so contributions total exactly $1,000,000). After that, contributions stop and the strategy runs on its own. Undeployed budget sits in an off-portfolio cash pool compounding at the 3-month T-bill rate.

This month’s signals

Total wealth (log scale)

Dynamic Convexity + cash pool Same cash flows → QQQ + cash pool NDX — $1M buy-and-hold, price only

Current state

Monthly ledger

Decision dayActionContributionBranch amountPortfolioCash poolTotal wealth

One row per decision day (normal DCA months included), newest first. “Branch amount” is the cash that month’s branch actually moved: deep bottom = total TQQQ purchase; mild bottom / normal = reserve deployed into QQQ; crash / overheat = sleeve proceeds; expensive = cash banked into the reserve. Cap trims are badged separately.

The rules — all fixed in advance, no discretion

Three signals (first trading day of each month, using data through the prior close — no lookahead):
  1. Cheap valuation: Shiller CAPE (S&P 500 proxy) below the 25th percentile of its rolling 30-year window
  2. Deep drawdown: NDX (5-day avg) more than 20% below its rolling 2-year high
  3. Panic: 5-day average VIX above 40
Six-branch decision tree (n = signals lit; first match from the top wins):
ConditionAction
n ≥ 2 (deep bottom)Contribution + the full reserve buys the TQQQ sleeve
n = 1 (mild bottom)Contribution buys QQQ, plus ⅓ of the reserve
25-day crash > 12%Sell half the sleeve into the reserve; contribution buys QQQ
Expensive (CAPE pct > 70% and near the 2-year high)Contribution goes to the reserve; no equity buy
Overheated ≥ 6 straight months (CAPE pct > 85% or VIX < 12)Trim the sleeve 1/12 into the reserve; contribution buys QQQ
OtherwiseNormal DCA: contribution buys QQQ + 1/6 of the reserve drips into QQQ
Two hard caps: reserve ≤ 30% of the portfolio (overflow force-buys QQQ); TQQQ sleeve ≤ 40% (checked every 6 months; excess trimmed into QQQ).

Full design rationale, five-start backtests and robustness checks: research archive.

The honest caveats