Skip to content
All strategies

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

A single-instrument volatility-timing strategy on QQQ.USEQ daily bars. Every 21 trading sessions, the strategy closes its QQQ position and reopens it at a new notional: target_vol / realized_vol_21d of equity, capped at 1.8x on the 2x Reg-T margin account. Realized vol is the annualized standard deviation of the trailing N daily close-to-close returns (sqrt(252)). The mechanism comes from Moreira & Muir (2017), 'Volatility-Managed Portfolios', Journal of Finance. Equity-index volatility clusters strongly, but……Show moreShow less

A single-instrument volatility-timing strategy on QQQ.USEQ daily bars. Every 21 trading sessions, the strategy closes its QQQ position and reopens it at a new notional: target_vol / realized_vol_21d of equity, capped at 1.8x on the 2x Reg-T margin account. Realized vol is the annualized standard deviation of the trailing N daily close-to-close returns (sqrt(252)). The mechanism comes from Moreira & Muir (2017), 'Volatility-Managed Portfolios', Journal of Finance. Equity-index volatility clusters strongly, but expected returns do not rise in proportion to it. Cutting exposure when recent vol is high and adding it when vol is low therefore raises the return per unit of risk. The economic cause is the leverage effect plus volatility persistence. It is not price momentum: no trend, breakout or signal on price direction is used. The 21-session re-strike is a fixed bar count from the first tradable bar, NOT a calendar date (lesson L179), and it exists only so each holding period is a separately measurable trade. POINT-IN-TIME PRE-STUDY on the local catalog (QQQ.USEQ 1-DAY, 1999-2026, net of 3 bp of turnover cost): buy-and-hold had Sharpe 0.50 and peak-to-trough DD ~83% (2000-02). VM21 with a 15% target had Sharpe 0.72 full-sample (0.50 pre-2016, 1.04 post-2016) and max DD ~22%. Lookbacks of 10, 21 and 42 sessions all gave 0.68-0.72, so there is no parameter cliff. On SPY the same rule raised Sharpe from 0.55 to 0.61, which confirms direction but is weaker, so QQQ (higher vol clustering) is the primary. NEGATIVE CONTROLS from the same pre-study, which I am NOT proposing: dollar-neutral sector-ETF 3-12 month momentum (9 SPDR sectors) gave Sharpe -0.25 to +0.05 everywhere. Adding a 150/200-SMA trend gate, a TLT defensive sleeve or a short leg to VM21 did not improve it (0.52-0.67). The edge is the vol scaling alone, so only that is proposed. Venue rationale: USEQ is 4.8% of the corpus; QQQ has decades of daily history; execution is commission-free. It is long-only (an over-represented bucket) because the pre-study showed the short-side variants lose Sharpe.

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.