Strategies
Volatility-Managed QQQ Exposure (Moreira-Muir): Size the Nasdaq-100 ETF Inversely to Its Trailing 21-Day Realized Vol, Re-struck Every 21 Sessions (USEQ 1-DAY, Reg-T up to 1.8x, 2 parameters)
Outcome: Abandoned
VolatilityManagedQqqExposure
Outcome Summary
VolatilityManagedQqqExposure scaled QQQ exposure inversely to trailing realized vol, citing a pre-study with Sharpe 0.72 and about 22% drawdown. Over two iterations, the full backtest produced Sharpe 0.57, a 637% total return over 264 trades and a 45.3% drawdown from the 2000-02 bear market. That drawdown was well above the pre-registered 25%, and the information ratio against buy-and-hold was slightly negative (-0.09). The analyst still sent it to optimization, where no candidate passed inner validation in any of the 7 nested walk-forward windows, so it was abandoned without reaching the analyst or risk review.
Hypothesis
This fills the under-used USEQ venue (4.8%) with a mechanism whose economic cause (volatility persistence) has not been used in the factory's equity runs. Before proposing, I pre-studied it alongside three negative controls (sector momentum, a trend gate and a short leg), and all three were rejected on the data. It sits far from the fee graveyard: ~1% gross per trade against a ~0.04% round trip. I predict Sharpe modestly (0.6 against the 0.72 pre-study figure) because the edge is widely published and depends on the regime.
optimization_rejected:nested_validation_incomplete: nested validation incomplete: window 0: no candidate passed inner validation and neighborhood risk checks; window 1: no candidate passed inner validation and neighborhood risk checks; window 2: no candidate passed inner validation and neighborhood risk checks; window 3: no candidate passed inner validation and neighborhood risk checks; window 4: no candidate passed inner validation and neighborhood risk checks; window 5: no candidate passed inner validation and neighborhood risk checks; window 6: no candidate passed inner validation and neighborhood risk checks
Implementation
Long-only QQQ daily strategy. It holds target_vol / realized_vol_N times equity, capped at 1.8x on the 2x Reg-T account, closes and re-strikes the position every 21 held sessions, and exits early on a 12% close-based disaster stop.
This implements Moreira-Muir volatility-managed exposure. Iteration 2 changes only the Layer-1.5 config. Every fixed plan key, including leverage=2.0 as a float, is now in parameters with its exact plan value and type. config.leverage is 2.0. The exposure cap reads parameters['leverage'] (falling back to config.leverage) together with max_leverage=1.8. Signal, entry, exit and sizing logic are unchanged.
Verification Results
Acceptable as a risk overlay, and it is fixed in the optimization plan. The analyst should report how many of the 69 exits were stops versus scheduled re-strikes, so the result stays comparable with the pre-study.
The hypothesis does not mention the 12% close-based disaster stop (disaster_stop_pct). It adds an exit the hypothesis does not specify. The pre-study numbers (Sharpe 0.72, DD ~22%) were for pure vol scaling without a stop. At up to 1.8x exposure, a 12% QQQ close-to-entry loss is about 21.6% of equity. A stop also restarts the 21-bar period from the re-entry bar.
Optional: exit at 20 held bars to keep a 21-session cycle, or accept the gap as part of the measurable-trade design.
Each period's exit is submitted on its 21st held bar. Re-entry only happens on the NEXT bar, when the base template sees the position flat. The book is therefore flat one session in every ~22, which matches exposure_pct of 93%. This is a small departure from 'close and reopen' at the same instant: one daily return per period is missed and a period is effectively 22 sessions.
None required. Optionally cap at ~1.75x to leave room for gap slippage.
The exposure is capped at 1.8x by min(max_leverage, parameters.leverage, config.leverage). Gross notional at the cap is 1.8x equity on a single leg, within the venue's 2.0 Reg-T limit, so the lesson L156 check passes. The order is sized at the signal bar's close and fills on the next print, so a gap up of more than ~11% at the 1.8x cap could exceed 2x margin. This is unlikely on QQQ.
None.
min_bars_required overrides the base method on purpose: max(70, lookback+2, 20). The 'unbounded append' warning from static analysis is a false positive because _rets is a deque with maxlen. The division by n-1 is safe because n >= vol_lookback >= 10 over the tunable range. rv has a floor of 0.02 and price is guarded above 0.
In the sandbox, Sharpe was 1.06 and drawdown 22.5% across 69 trades. The stressed-vol tercile was negative (Sharpe -0.19, -10.9%) and the 2022 rate shock lost 18.5%. This is consistent with Moreira-Muir: a 21-day trailing vol reacts slowly to vol regime changes. Beta is 0.65 and benchmark correlation 0.84, so much of the return is QQQ beta in a strong 2019-2026 window. The full-history backtest should check performance pre-2016 and in 2000-02 (the pre-study's own split was 0.50 pre-2016 against 1.04 post-2016). It should also check the pre-registered 25% drawdown constraint, which this sandbox already nearly reaches (22.5%). The 150-trade minimum is only reachable on the full 1999-2026 history: about 27 years x 252/22 gives about 310 trades.
Backtest Review
- Sharpe
- 0.57
- Total return
- 637.05%
- Max drawdown
- 45.34%
- Trades
- 264
- Win rate
- 64.8%
- Profit factor
- 1.81
Trades implement the hypothesis: 264 long-only QQQ re-strikes of about 21 sessions each, no shorts. Exposure moves inversely with trailing vol (0.49-0.64x into the 2022 and 2000-02 stress, up to 1.8x in calm 2017/2019).
Sample is adequate: 264 trades from 1999 to 2024, holdout about 50 trades.
Per-trade return 0.82% against the 0.05% USEQ floor; PF 1.81; win rate 0.65; negligible impact cost (2.5% of gross).
Sharpe 0.57 with CI [0.15, 0.96] and PSR 0.996; 73% of calendar years profitable.
Not beta: drawdown is 0.55x of QQQ buy-and-hold (about 83%); beta 0.49.
QA concern partly borne out: stressed tercile is flat (Sharpe 0.07) and 2022 lost 18.5%, but calm and normal regimes carry Sharpe of about 0.83.
Drawdown of 45.3% against a pre-registered 25% (pre-study claimed about 22%). It comes from the 2000-02 bear, and the gap to the pre-study is not explained.
Thin edge over buy-and-hold: Sharpe 0.57 against about 0.50, information ratio -0.09; the pre-study's 0.72 is not reproduced.
With max_leverage fixed, target_vol cannot realistically bring drawdown to 25%.
Walk-forward OOS Sharpe of 0.5 or more is not assured.
Iteration History
Verification failed (Layer 1.5 — hypothesis/config consistency) [class=hypothesis_mismatch]: - optimization_plan fixes leverage at 2.0
Outcome Summary
The pre-study's numbers (Sharpe 0.72, ~22% max DD) did not reproduce in the engine backtest (Sharpe 0.57, 45.3% DD). Reconcile that gap first, and make sure the tunable range can meet the drawdown constraint (max_leverage was fixed), before spending an optimization run.
The backtest review approved it for optimization, but nested walk-forward validation failed: in all 7 windows (0-6), no candidate passed inner validation and the neighborhood risk checks. The run was abandoned as optimization_rejected:nested_validation_incomplete before the analyst and risk stages.
A long-only, single-instrument volatility-timing strategy (Moreira-Muir 2017): hold QQQ.USEQ at a notional of target_vol / trailing 21-day realized vol, capped at 1.8x, re-struck every 21 sessions, with no price-direction signal.
The 1999-2024 backtest returned 637% (CAGR 8.48%) over 264 long trades with Sharpe 0.57 (CI 0.15-0.96), profit factor 1.81, win rate 0.65 and avg trade return 0.82% of notional. Max drawdown was 45.3%, against a pre-registered 25%, and the stressed-vol tercile was flat (Sharpe 0.07).
Backtest and paper results are hypothetical. Trading involves risk of loss.