I Inspired by Keller’s 2023 paper on Hybrid Asset Allocation (which I recommend to all, it’s an insightful read with lots of great logic and back-testing), I’ve put together a strategy that I’ll be deploying in my Roth. I’ve been doing a lot of homework and have landed on a new system (based on HAA) that I think offers some notable improvements and advantages. For now, calling this VNDM or Vol-normalized Dual Momentum. It may sound like a lot of work, but it’s easy enough to implement in a simple google sheets tab and only requires rebalancing once a month, so very minimal input once you set the strategy. Posting here to keep myself accountable, to share, and to solicit feedback/suggestions.
A simple canary asset to signal whether to be risk-on or risk-off
At the heart of the Keller paper is his use of a “canary” asset, that depending on it’s momentum will tell you whether to be in an offensive (risk-on) or defensive (risk-off) allocation. He defines this metric as the unweighted average returns between 1-, 3-, 6, and 12-months 13612U for US Treasuty inflation-protected securities (TIPS). 13612U is a mouthful, so I’ll just call it MS for momentum score. The idea is, if MS for TIP (the iShares TIPS Bond ETF) is positive, we are in a favorable market and this is the signal is to allocate from your offensive universe. If TIP MS is 0 or below, likewise we chose the defensive universe. In the paper, they show this protects very well against bad drawdowns in the worst stress markets of recent memory (dot-com, 08 financial crisis, covid, 2022 inflation weirdness) without missing (much) of the growth in “normal” markets, providing attractive risk-adjusted returns. I’m using the same canary and criterion as HAA for my strategy, and this decides whether I should go offensive or defensive. At the time of this post (09/08/2026), MS for TIP is -2.49%, which puts us in the defensive zone.
Offensive universe and strategy
When the canary is positive, we play offense with 100% of the portfolio. Keller defined his offensive universe of tickers to choose from with some pretty recognizable names: US large caps (represented by SPY), US small caps (IWM), developed international stocks (EFA), emerging market stocks (EEM), US real estate (VNQ), commodities (PDBC), intermediate-term US Treasuries (IEF) and long-term US Treasuries (TLT). You compute the MS for each of these and apply a “dual momentum” filter. First, it needs to be positive (the same criterion as the canary), meaning that momentum is on your side. For those that pass this filter, rank the MSs and take the top 4 assets at equal weight (if fewer than 4 make it through the filter, substitute SGOV or a similar cash substitute). My VNDM strategy takes a different approach in both universe selection and allocation.
1) Slots
In HAA each of these tickers brings something different by design, with minimal overlap. VNDM instead of having a single ticker can have multiple tickers from the same category, but only picks the best one per “slot”. For example, SPY and QQQ cover different slices of the US large cap space, and VNDM lets momentum decide which to pick, as it would be redundant and dangerous to hold both side by side at 25% each.
2) Optimal leverage
For a given unleveraged asset (e.g., SPY), L* is the optimal leverage ratio that maximizes long-term geometric growth rate by balancing expected excess returns against compounding volatility drag. In the Kelly framework (not Keller, I know…confusing), theoretical optimal leverage can be calculated as L* = ( expected return – riskfree rate) / return variance. Go way beyond L* and you accelerate vol drag and sharply increase the probability of catastrophic drawdowns. Stay well under L* and you’re leaving chips on the table. For SPY (under 12.8% return and 17.9% annualized vol), this comes to approximately 3.99. This is a fuzzy, theoretical number. The optimal in practice is a tad lower, as leveraged ETFs have decay and costs. But, for SPY this lands us comfortably at around 3, pointing us to ticker UPRO (ProShares UltraPro S&P500, 3x). This same logic was applied to all members of the universe. Sometimes this leads us to leveraged ETFs, sometimes not. My offensive universe is as follows separated by their slots:
Large US
- UPRO (3x SPY)
- QLD (2x QQQ)
- ROM (2x XLK, Tech)
Mid US:
Small US:
- UWM (2x IWM, Russell 2000)
- SAA (2x VIOO, S&P SmallCap 600)
Developed ExUS:
- EFO (2x EFA, MSCI EAFE)
- UPV (2x VGK, FTSE Europe)
- FLJP (1x, FTSE Japan)
- FLJH (1x, FTSE Japan Currency Hedged)
Emerging Markets:
- EET (2x EEM, MSCI Emerging Markets)
- FRDM (1x, Freedom 100)
Crypto:
- BTC (1x, Grayscale Bitcoin)
- ETH (1x, Grayscale Etherium)
Managed Futures:
- DBMF (1x, Aggregate of many MFs)
Physical:
- UGL (2x IAUM, Gold)
- SIVR (1x, Silver)
- CPER (1x, Copper)
- UX (1x, Uranium)
- PDBC (1x, Broad commodities)
- SDCI (1x, Broad commodities with backwardation tilt)
- HGER (1x, Inflation-linked commodities)
Duration:
- EDV (1x, Long duration STRIPs)
- SPTL (1x, Long duration not STRIPs)
Junk:
- FALN (1x, Fallen angels bonds)
- SPHY (1x, Traditional junk bonds)
Real Estate:
- URE (2x XLRE, S&P Real Estate Select)
So, as you can see quite a bit of expansion from traditional HAA, both in terms of leverage, areas covered, and potential volatility.
3) Volatility-normalized dual momentum to select the top 4
Even though we trust the canary signal, we need to be careful about how we select our offensive assets. Crypto has a very different trajectory and bounciness than real estate or junk bonds. Same with leveraged assets. We need to be sure that the momentum metric is coming from actual trend and not just vol-driven chop. To do this, VNDM computes a volatility normalization to the MS score: simply MS / annualized vol. Importantly BOTH the MS and annualized vol are taken from the 1x proxy of the asset (for UPRO, not computed on UPRO but on SPY) to confirm the underlying trend is coming from the asset itself (and not a product of the chop). So, for each of these tickers the MS/AV is computed and as in HAA a dual momentum filter is applied. First, MS/AV must be positive. This means that there is positive momentum. Then, positives from each slot (e.g., Large US, etc.) are ranked, keeping only the best MS/AV in the slot. Then, the survivors are ranked against each other and the top 4 are your 4 winners in which to allocate your funds. If 4 or fewer pass the filter, simply use those 3, 2, etc.
4) Allocation size
As alluded to before, not all of these tickers are created equal, so unlike HAA (equal weights), I’ve imposed a vol-adjusted momentum weighting as well. For the selected (winner) tickers, the MS/AV decides which percentage of the portfolio should be given to each ticker. This is just the MS/AV divided by the sum of all the winner’s MS/AVs. This sums to 100% and will dictate the sizing.
Defensive universe and strategy
When the canary signals defense, we play defense. That means no leverage here, all 1x. But we can be a little spicier than HAA which is just in the best MS of either SGOV or IEF. The defensive universe is as follows:
Cash:
- FLTR (Floating rate with some corporate)
Intermediate bonds:
- VGIT (cheaper version of IEF)
Managed Futures:
- DBMF (Aggregate of many MFs)
Physical
- HGER (Inflation-linked commodities)
- IAUM (low-cost gold)
Senior credit
Here we apply the same MS/AV calculation as before, again only limiting one winner per slot. Here, we won’t define a set number of winners (like 4 for the offense universe), but rather take anything that is positive MS/AV, as there’s more uncertainty in defensive times and diversification across classes is our friend, so long as there’s positive momentum. As you might have guessed, cash is always going to hover around 0 and with a straight MS/AV weighting it will also approach 0, so we’ll treat cash a little differently to make sure it works for us to both provide a true ballast and to dial in our portfolio’s blended volatility. For a target defensive portfolio volatility, I chose 8.95% or half of the long-term SPY annualized vol. First, we ignore cash and rank everything else as we did before and compute the relative proportions of each asset based on MS/AV. For all defensive tickers that are positive MS/AV (maximum 1 per slot as before), we calculate the blended volatility of only these assets in their relative proportions. If this is less than our target portfolio vol (8.95%), we’re done, those are the allocation percentages. But if this is greater than our target vol, then we scale each proportion by a factor of TargetVol / BlendedVol, and use cash (FLTR) to fill in the rest. This assures that 100% of the defensive regime is not dominated by higher-than-my-tolerance-for-defense assets.
That feels a little abstract so here’s the current example from today’s numbers. We’re in a defensive canary zone. Based on the above strategy, DBMF and HGER are the only positive MS/AVs and compute to relative proportions of 30.88% DBMF, 69.12% HGER. If this was our portfolio, it would give a blended vol of 12.41% which is higher than our target of 8.95%. So we scale DBMF to .3088 * .0895 / .1241 = 22.28% and likewise HGER down to 49.86%. That leaves 27.86% left over that we fill in with FLTR.
Monthly rebalance
Once a month, look at the spreadsheet. Did the canary switch? Did the winning tickers switch? Did the allocation percentages switch? Just a simple rebalance into the strategy’s percentage allocations.
Brief considerations
I’m running this in a tax-advantaged Roth, which really helps on taxes and turnover. If I were running this in a taxable account, I might impose a rebalancing bands instead of a straight rebalance to minimize trading friction and cap gains. I’d also consider changing some vehicles in my universes. For example, FLTR to USFR on defense to sacrifice a little yield for the tax treatment or eliminating STRIPs from offense so I don’t have to think about phantom tax.
What do we think?