Idea in brief
The portfolio is split in advance into asset class buckets, and each bucket has its own share of capital. A bucket holds two to six ETFs of the same class. Once a month the ETF with the strongest momentum is chosen in each bucket. We hold it only if its momentum is positive or higher than that of cash. Otherwise the bucket's share stays in cash. There are no trades within the month and no stops.
Cesar Alvarez splits capital into three buckets: stocks, bonds and real assets, roughly 40/40/20. Each bucket has two ETFs, and the choice is made by two different ranking methods. So a bucket can be entirely in one ETF, split equally between two, half in cash or fully in cash.
In the Australian version of the All Weather strategy, Nick Radge uses two buckets of six ETFs each: growth (stock indices) and defensive (gold, bonds, commodities). The two strongest ETFs are taken from the growth bucket and one from the defensive bucket. Every month the weights return to their targets.
The idea shares the "does it beat cash" check with the "Dual momentum" card, but the two are built differently. In Antonacci's version all capital sits in one asset, and bonds serve as a safe haven without any check. Here capital is split across asset classes in advance, selection happens within each class, and defensive assets also have to pass the momentum check. In a year like 2022, when both stocks and bonds fell, this scheme can keep both buckets in cash.
Why it might work
Both authors built the strategy for one task: small drawdowns in a retirement account. Alvarez says they are willing to give up a noticeable part of the return for that. Radge moved the entire retirement account into the strategy after a drawdown of about 30% across Radge's accounts in 2022. Radge explains the decision with sequence risk: a large drawdown shortly before retirement reduces the income from capital for a long time.
Radge describes the mechanics as follows. Ray Dalio's classic all-weather allocation holds every asset class at all times and rebalances periodically. The tactical version holds an asset only while it is rising. Gold and stocks usually move in different directions, so the growth and defensive buckets rarely fall at the same time. Monthly rebalancing to target weights keeps any one position from growing too large. A monthly step, according to Radge, lets a trend develop and filters out noise.
Alvarez adds a view on cash. Alvarez used to dislike holding cash and now treats it as a short position, that is, a separate view on the market.
A caveat: both authors admit that recent years have been favorable. Radge speaks directly about a tailwind, when gold, stocks and bitcoin rose together on excess liquidity. The interviews contain no test figures for the strategy.
Rules
Main version (Alvarez)
// decision at the close of the last trading day of the month, trades at the open of the new month
// author: trades at the start of the month, no stops or targets within the month
Equity = [VTI, VBR] // author: total US market and small cap value; Finetiq: tickers
Bonds = [HYG, TLT] // author: high yield and long-term bonds; Finetiq: tickers
Real = [GLD, DBC] // author: gold and commodities; Finetiq: tickers
Weights = Equity 40%, Bonds 40%, Real 20% // author: "something like 40/40/20"
Cash = SHY // author: short-term Treasuries
RankA(x) = return of x over 3 months (63 bars) // Finetiq: the author did not disclose method 1
RankB(x) = return of x over 12 months (252 bars) // Finetiq: the author did not disclose method 2
FOR each Bucket with weight W
FOR each Rank in [RankA, RankB]
Best = ETF from Bucket with the highest Rank // relative momentum (author)
IF Rank(Best) > Rank(Cash) // does it beat cash (author)
Target(Best) += W / 2
ELSE
Target(Cash) += W / 2
// Finetiq: each method controls half of the bucket. This produces the outcomes
// the author names: 100% in one ETF, 50/50 in two, part or all in cash
bring positions to Target AT NEXT BAR OPEN
// Finetiq: return weights to Target every month, even if the choice did not change
Variant B. Radge: growth and defensive
// Australian version of All Weather, decisions and trades only at the end of the month (author)
Growth = 6 ETFs on stock indices of Australia, the US and the world // author
Defensive = 6 ETFs: gold in AUD and in USD, bonds, commodities, fixed income // author
Mom(x) = return of x over 6 months (126 bars) // Finetiq: measure and window not named
G1, G2 = two ETFs from Growth with the highest Mom // author
D1 = ETF from Defensive with the highest Mom // author
Target(G1) = IF Mom(G1) > 0 THEN 30% ELSE cash // author: 30% each for the two strongest
Target(G2) = IF Mom(G2) > 0 THEN 30% ELSE cash
Target(D1) = IF Mom(D1) > 0 THEN 60% ELSE cash // author: 60% for the strongest defensive ETF
// author: hold an asset only while momentum is positive; Finetiq: threshold Mom > 0
// 30 + 30 + 60 = 120%, this is how the weights are named in the interview
// Finetiq: without leverage we normalize to 25/25/50. This matches the author's words
// that the Australian portfolio is structured as 50/50
// every month weights return to Target: trim the position that grew, top up the one that fell (author)
// in the US version the author also holds about 5% in bitcoin through IBIT (author)
Version for one to three symbols
// S1. One asset, binary. This is how Radge's US version works:
// 6 ETFs, each either in a position at its own weight or with that weight in cash (author),
// adding up to about 60/40 growth and defensive (the author is not sure whether it is 60/40 or the reverse)
IF Mom(GLD) > 0 THEN hold GLD at its weight ELSE its weight in cash // Finetiq: ticker and window
// S2. One Alvarez bucket on three symbols
Best = ETF from [GLD, DBC] with the highest RankA // Finetiq: example bucket
IF RankA(Best) > RankA(SHY) THEN hold Best ELSE hold SHY
Parameters
| Parameter | Value | Source |
|---|---|---|
| Buckets (main version) | stocks, bonds, real assets | author |
| Bucket weights | about 40/40/20 | author (from memory) |
| Bucket contents | total market and small cap value, high yield and long bonds, gold and commodities | author |
| Tickers | VTI, VBR, HYG, TLT, GLD, DBC | Finetiq |
| Cash | SHY | author |
| Ranking methods | two different ones | author |
| Method windows | 3 and 12 months | Finetiq |
| Weight per method | half of the bucket | Finetiq |
| Absolute check | beats cash | author |
| Frequency | once a month, trades at the start of the month | author |
| Stops and targets within the month | none | author |
| Variant B: buckets | 6 growth and 6 defensive ETFs | author |
| Variant B: selection | 2 strongest growth ETFs, 1 strongest defensive | author |
| Variant B: weights | 30%, 30%, 60% (as named) | author |
| Variant B: weights without leverage | 25%, 25%, 50% | Finetiq |
| Variant B: momentum measure | 6-month return above 0 | Finetiq |
| Variant B: rebalancing | to target weights at the end of the month | author |
What to test
- Ranking methods. One window versus two: 3 and 12 months, 6 and 12, 1 and 6. Count how often a bucket splits 50/50. If the two methods almost always agree, the second one adds nothing.
- Overfitting the lineup. Alvarez warns that ETF selection is easy to overfit. Replace each ETF with another fund of the same class, and in the stock bucket take US and international stocks instead of small cap value (the author notes that in 2025 this would have been better). If the result depends on a single fund, it is overfitting.
- Weights. 40/40/20 versus equal thirds. In variant B, 25/25/50 versus 20/20/60 and 30/30/40.
- Rebalancing to weights. Monthly rebalancing versus changing positions only when the choice changes. Compare volatility, number of trades and taxable turnover.
- Stress years. 2008, 2022 (stocks and bonds fell together) and 2023-2025 (everything rose). Look at how many months each bucket spent in cash.
- Radge's drawdown rule. Calculate the strategy's annual volatility and maximum drawdown over the full history and in five-year windows. If the drawdown exceeds 2 volatilities, the rule does not hold for your configuration.
- Day of the month and cash yield. End of month versus mid-month. Cash in SHY versus cash without interest (as it will be on an MT5 account).
Platform notes
TradingView (Pine Script)
- A strategy trades only the chart symbol, so buckets of several ETFs cannot be tested as a strategy. The signals can be calculated, but the equity curve will cover only the chart symbol.
- Version S1 can be tested: one ETF at its share of capital via
default_qty_type = strategy.percent_of_equity. The tester shows months out of the position as cash without interest. - Returns on closed months without lookahead:
request.security(sym, "M", close[1], lookahead = barmerge.lookahead_on). On history the decision shifts to the first bar of the new month, which matches Alvarez's rule of trading at the start of the month. - For bond ETFs a noticeable part of the return comes from distributions. Enable dividend adjustment (
adjustment.dividendsinticker.modify), otherwise bonds will lose the ranking more often than they actually do.
MultiCharts and TradeStation (EasyLanguage)
- Orders go only to Data1. Buckets are built in a portfolio module (TradeStation Portfolio Maestro, MultiCharts Portfolio Trader) or with a separate strategy for each ETF that reads its bucket neighbor and SHY as Data2 and Data3.
- With separate strategies, the weight is calculated from each strategy's own capital. Rebalancing to target weights requires the value of the whole portfolio, otherwise the weights will drift away from the rules.
- Rebalancing means partly selling or adding to an already open position. Allow multiple entries in the same direction in the strategy properties and send the difference in shares, not a whole new position.
- Start of the month on daily bars:
Month(Date) <> Month(Date[1])fires on the first bar of the month. If the decision is calculated on this bar, the trade goes through on the second day of the month. - Check whether your data vendor's ETF series are adjusted for dividends.
MetaTrader 5 (MQL5)
- A multi-symbol EA can handle 6-12 symbols. The difficulty is the symbols themselves: ETFs are rare at MT5 brokers and usually trade as CFDs with short history. Australian funds are almost never available.
- Substituting CFDs changes the strategy. Some brokers offer gold in AUD as spot XAUAUD, but it is not an ETF: a swap accrues instead of distributions. On a CFD on a bond ETF, the swap may exceed the interest income that is the reason to hold bonds in the first place.
- Cash on an MT5 account earns no interest. The "does it beat cash" check gives different decisions with SHY and with a zero rate.
- Take monthly data from the closed bar:
iClose(sym, PERIOD_MN1, 1). Month boundaries follow the broker's server time.
Where the idea can break
- Alvarez did not disclose the ranking methods or windows and named the bucket weights from memory. Radge did not name the momentum measure, the window or the ETF tickers. The only exception is IBIT for the bitcoin share in the US version. All other settings here are ours.
- The variant B weights in the interview add up to 120%. We normalized them, but how the author actually allocates capital cannot be determined from the conversation.
- The results are supported only by the account of 2025, with no test figures. The words about a holy grail come at the end of the interview, where Radge invites investors into Radge's fund.
- ETF selection is easy to overfit, and Alvarez says so. Few funds have history going back before 2008, and a test from 2009 runs mostly on rising markets. Radge suggests extending the history with the underlying index or the spot gold price.
- A monthly decision gives no protection within the month. The portfolio takes a sharp drop in the first weeks of the month in full.
- The scheme relies on asset classes not falling at the same time. When that breaks down, only a move to cash helps, and it lags by up to a month.
- Monthly rotation produces few position changes. The statistical weight of the test is small even if the history is long.