Inspiration

MORTIMER examines whether volatility persistence can improve risk allocation in a diversified portfolio. Equity, credit, duration, and commodity exposures respond differently across market regimes, while realised volatility exhibits sufficient persistence for near-term risk forecasts to contain useful information.

We therefore combined equal-risk-contribution allocation with a causal volatility overlay and tested a deliberately narrow hypothesis: whether dynamic exposure scaling can reduce realised portfolio volatility and drawdown after transaction costs without imposing excessive return drag. Rather than attempting to forecast return direction, MORTIMER forecasts the risk of the portfolio it already holds and adjusts aggregate exposure in response.

What it does

MORTIMER is a six-asset equal-risk-contribution (ERC) strategy with a dynamic volatility-targeting overlay.

The portfolio allocates across:

  • QQQ: growth equities
  • IWM: small-cap equities
  • HYG: high-yield credit
  • TLT: Treasury duration
  • GLD: gold
  • DBC: broad commodities

At each monthly rebalance, MORTIMER estimates the covariance structure of these assets and constructs a long-only portfolio designed to equalise their contributions to total portfolio variance.

For base weights \(b\) and covariance matrix \(\Sigma_t\), the allocation solves

$$ \min_b \sum_{i=1}^{6} \left( b_i(\Sigma_t b)_i - \frac{b^\top \Sigma_t b}{6} \right)^2 $$

subject to

$$ \mathbf{1}^\top b = 1, \qquad 0 \leq b_i \leq 0.35 $$

The 35% upper bound limits concentration while preserving sufficient flexibility for the optimiser to respond to changes in relative volatility and cross-asset correlation.

MORTIMER then estimates the volatility of the resulting portfolio using fast and slow exponentially weighted variance estimates:

$$ \hat{\sigma}_t = \sqrt{252 \max(\mathrm{EWMA}(x_t^2,20), \mathrm{EWMA}(x_t^2,63))} $$

The desired fraction invested in the risky ERC portfolio is

$$ k_t=\min\left(1,\frac{0.10}{\hat{\sigma}_t}\right) $$

When forecast volatility exceeds the 10% target, risky exposure is reduced and residual capital is allocated to cash; as forecast risk declines, exposure is restored. To limit unnecessary turnover, the overlay trades only when the target risky allocation changes by at least five percentage points. Because the overlay functions strictly as a risk-scaling mechanism, MORTIMER remains fully unlevered throughout, never exceeding 100% gross exposure, borrowing capital, or taking short positions.

How we built it

We implemented MORTIMER in Python and JupyterLab as a causal portfolio research and backtesting pipeline covering NYSE trading sessions from January 2008 through October 2026. ETF prices and volume are obtained from Yahoo Finance, while cash returns use initial-release observations of the three-month Treasury yield from ALFRED so that historical portfolio decisions are not informed by subsequently revised macroeconomic data.

At each monthly decision point, covariance is estimated from the previous 126 completed daily observations using Ledoit-Wolf shrinkage, which reduces sampling noise before the constrained ERC optimisation is performed. For each current base portfolio, we then reconstruct its historical returns using only information available through the relevant signal date, after which the volatility overlay applies the 20- and 63-session EWMA estimators and uses the larger forecast.

Execution timing is modelled explicitly so that signal formation and realised returns remain causally separated. Information available through close \(t\) generates an order executed at close \(t+1\), and the resulting holdings begin earning returns only after that execution.

Transaction costs are incorporated directly into portfolio accounting. For pre-trade risky holdings \(h_i\), desired weights \(w_i\), portfolio value \(V\), and proportional transaction cost \(c\), post-trade NAV satisfies

$$ V_{\mathrm{post}} = V - c \sum_i \left| V_{\mathrm{post}} w_i - h_i \right| $$

Our primary specification charges five basis points on risky notional bought and sold, while transfers into and out of cash incur no separate transaction charge.

The experiment is strictly chronological, with a 550-session estimation period preceding scored returns. Training ends on 31 December 2018, validation runs from 1 January 2019 through 1 October 2024, and the held-out out-of-sample period runs from 2 October 2024 through 2 October 2026. MORTIMER is evaluated against the same six-asset ERC portfolio without volatility scaling, with both strategies using identical instruments, dates, covariance estimates, execution assumptions, and transaction-cost conventions.

Challenges we ran into

The portfolio combines monthly base-weight updates with more frequent changes in aggregate exposure, which makes execution timing and portfolio accounting particularly important. A close-derived signal cannot legitimately earn the return occurring before its execution, so we separate signal formation, execution, and return attribution explicitly: close-\(t\) information generates a close-\(t+1\) order, and the new holdings participate only in subsequent returns.

Portfolio drift also has to be preserved between trades, since assuming that weights continuously reset to their targets would alter both realised exposure and turnover. Transaction costs present a similar issue; rather than applying a generic penalty to a turnover statistic, MORTIMER charges costs against the actual risky notional bought and sold and carries the resulting reduction in NAV into subsequent position sizing.

Liquidity introduces a further implementation constraint. We therefore measure each order relative to trailing average daily dollar volume and examine how participation and estimated market impact change with portfolio size.

Our impact scenario follows the square-root relation

$$ I = Y\sigma \sqrt{\frac{Q}{\mathrm{ADDV}}} $$

where \(Q\) is trade notional, \(\mathrm{ADDV}\) is trailing average daily dollar volume, \(\sigma\) is lagged volatility, and \(Y\) controls assumed impact severity.

The corresponding portfolio-level cost is

$$ \mathrm{NAV\ cost} = I \frac{Q}{\mathrm{NAV}} $$

Together, these diagnostics allow us to distinguish statistical performance from the amount of capital that could plausibly be deployed under the stated execution assumptions.

Accomplishments that we’re proud of

MORTIMER’s held-out out-of-sample test produced:

  • 9.52% annualised return
  • 7.47% annualised volatility
  • 0.714 Sharpe ratio
  • 7.00% maximum drawdown
  • 1.119 annual turnover

All reported results are net of the primary transaction-cost assumption. Relative to the matched unscaled ERC portfolio, out-of-sample volatility was 8.2% lower and maximum drawdown was 9.9% smaller, indicating that the volatility overlay continued to reduce realised risk on data that was not used in strategy development.

The strongest reduction in risk appeared during validation, where annualised volatility declined from 9.78% to 7.93% and maximum drawdown improved from 19.14% to 16.63%, while annualised return declined by only 15 basis points.

The volatility forecast itself also contained substantial information about subsequent realised risk. Validation Pearson and rank information coefficients were 0.537 and 0.668, respectively, providing evidence that the overlay was responding to an informative risk signal rather than merely producing favourable portfolio statistics mechanically.

The out-of-sample Sharpe ratio was lower than that of unscaled ERC, at 0.714 versus 0.827, so we interpret MORTIMER as a successful risk-control mechanism rather than as evidence of superior risk-adjusted return. Beyond the headline backtest, we also evaluated transaction costs, turnover, forecast quality, parameter sensitivity, factor exposures, liquidity, capacity, bootstrap uncertainty, and performance across different market periods.

What we learned

In validation, the volatility forecast was informative about subsequent realised volatility, while the held-out test showed that this information did not translate into an improvement in risk-adjusted return. MORTIMER reduced both volatility and drawdown, but it also reduced return, which sharpens the distinction between forecasting risk and forecasting returns.

MORTIMER does not need to predict whether the market will rise or fall; it requires only that its estimate of future portfolio risk be sufficiently informative to justify changing the amount of capital exposed. This distinction became central to how we interpreted the strategy’s performance.

We also found that implementation assumptions are inseparable from strategy evaluation, since signal timing, portfolio drift, transaction costs, cash returns, and liquidity can materially alter the economics of an otherwise identical trading rule. MORTIMER therefore has to be evaluated across return, downside risk, turnover, forecast quality, and implementation costs rather than through any single performance statistic.

What’s next for MORTIMER

The next stage is to test MORTIMER under progressively more realistic data and execution assumptions. A point-in-time fund universe would account for historical membership changes and discontinued instruments, while order-level or higher-frequency execution data would support direct estimation of spreads, slippage, and market impact rather than relying on scenario assumptions.

We would also extend the same research protocol to broader asset universes and alternative volatility estimators while preserving chronological evaluation, explicit execution timing, and the same causal treatment of information availability.

Most importantly, further development should be prospective, since the relevant test for MORTIMER is whether its risk-control behaviour persists in market regimes that were not available when the strategy was designed.

Share this project:

Updates

Submission history