Bull Rhythm

Broad Momentum 30

30 strong trends in equal amounts, rebuilt once a month: the most spread-out of all.

How it works

Broad Momentum 30 holds 30 of the 500 most actively traded US stocks: those with the strongest price trends over the past year, among companies that generate cash. It puts the same amount in each and rebuilds the portfolio once a month. Each rule is listed below in the order it is applied.

The rules, step by step

  1. When it decides. After the market closes on the last trading day of each month, using that day’s closing prices and only information available by then.
  2. The stock pool. US-listed common stocks and ADRs, not traded over the counter, closing at $5 or more. Each must have traded at least $10 million a day on average over 20 trading days at this decision and at each of the previous two month-end decisions. Of those, the 500 with the highest 20-day average trading value form the pool.
  3. Cash flow. Keeps only companies whose latest quarterly report, filed by the decision day, shows positive free cash flow.
  4. The ranking. Ranks the remaining stocks by 12-1 momentum: the price change from twelve months ago (252 trading days) to one month ago (21 trading days), using prices adjusted for splits and dividends. The latest month is left out on purpose.
  5. The selection. Takes the 30 highest-ranked stocks, with at most three from any one industry sector: when a sector is full, the next-ranked stock from another sector takes the place. Stocks already held get no preference; each rebuild starts from the ranking.
  6. How much in each. The same amount in every stock: 1/30 of the portfolio each (3.33%).
  7. The trades. Made at the next trading day’s closing price: stocks no longer selected are sold, new ones bought, and those that stay are resized to their new amounts. Every buy, sale and resize pays 0.10% of the amount traded.
  8. Between rebuilds. No trades. The holdings’ shares of the portfolio drift as their prices move until the next decision.

These rules are frozen (rules version 1) and are exactly what the record uses, every day since go-live and throughout the backtest. Changing any of them would make a new strategy with its own record. Key terms explained.

What to expect: The most cautious: no stock above a few percent, and the smallest falls, at a lower return than the others.

What would your money have done?

The amount you picture putting in. It only scales the dollar figures: the percentages are the same for $1,000 or $1,000,000.
How much of the account follows the strategy. The rest sits in BIL, a fund of US Treasury bills that mature in 1 to 3 months: close to cash, earning short-term interest. Every time the strategy rebuilds, the account is put back to your split. With 70/30, if the stocks have risen, some of the gain moves into T-bills; if they have fallen, some T-bills are used to buy stocks. A smaller strategy share means smaller falls and smaller gains.
Hindenburg ruleThe best rule from the Hindenburg research: when more than 2.5% of US stocks over $5 make a new 52-week high and more than 2.5% a new 52-week low on the same day, with SPY above its 50-day average, and the split also shows among companies worth more than $300 million (more than 3.0% at new highs and more than 2.0% at new lows) and in at least 3 sectors at each end (more than 2.0% of a sector's stocks), half of the strategy part moves into T-bills at the close six trading days later, and returns 31 trading days after the last such day. Every move appears in the ledger and pays 0.10%. Backtest before go-live, applied day by day after it.
The day your pretend account starts. “Since go-live” counts only the time the strategies have run live, each decision made at that day’s close with the rules unchanged. Earlier periods are a backtest: the same rules applied to past prices.

$10,000 put in at the close of Nov 1, 2017, worth at the close of Oct 16, 2026:

Broad Momentum 30$63,049+530.5% · +22.9% a year
SPY over the same time$34,044+240.4% · +14.7% a year
Worst fall on the way-32.5%$6,749 at the lowest point after a high
Sharpe (SPY 0.82)0.952250 trading day(s)

Growth of $10,000 against SPY

Fall from the highest value so far

Returns over set periods

Returns over set periods, Broad Momentum 30 and SPY
Strategy1 month3 monthsThis year1 year3 years5 yearsSince 2017Since go-live
Broad Momentum 30-1.8%+3.6% (ahead of SPY)+24.0% (ahead of SPY)+14.8%+209.3% (ahead of SPY)+186.7% (ahead of SPY)+530.5% (ahead of SPY)-1.9%
SPY (buy and hold)+0.3%+3.1%+12.8%+16.0%+81.4%+86.4%+240.4%-0.1%

Year by year

Each calendar year on its own, newest first: the return (bold when ahead of SPY), the worst fall from a high within that year, how much the value swung (volatility, as a yearly figure), Sharpe, the best and worst month, the share of months that ended higher, and beta (how much it moved for each 1% SPY moved). The first and the current year are partial; years before going live are a backtest.

Each calendar year, Broad Momentum 30 against SPY: return and risk
YearReturnSPYWorst fallSPY worst fallVolatilitySharpeBest monthWorst monthUp monthsBeta
2026
(partial) · live from Sep 29, 2026
+24.0% (ahead of SPY)+12.8%-13.4%-8.9%24.7%1.23+14.5%-7.9%70%1.36
2025+41.5% (ahead of SPY)+17.7%-27.3%-18.8%31.4%1.27+14.5%-8.3%67%1.32
2024+57.7% (ahead of SPY)+24.9%-12.9%-8.4%23.1%2.09+17.7%-9.9%67%1.50
2023+12.0%+26.2%-15.2%-10.0%16.6%0.77+10.7%-5.6%58%1.05
2022-10.3% (ahead of SPY)-18.2%-19.6%-24.5%24.6%-0.32+8.7%-9.9%58%0.88
2021+18.6%+28.7%-16.7%-5.1%25.3%0.80+9.1%-5.0%58%1.39
2020+46.5% (ahead of SPY)+18.4%-32.5%-33.7%35.2%1.26+19.4%-12.1%67%0.89
2019+32.8% (ahead of SPY)+31.2%-9.2%-6.6%15.5%1.91+10.7%-6.3%83%0.92
2018-5.4%-4.6%-26.4%-19.3%22.8%-0.13+7.9%-11.1%50%1.21
2017
(partial)
+4.0%+4.2%-3.6%-1.0%12.1%2.09+3.3%+0.6%100%1.21

The account, as a ledger

The strategy shown as one account that started with $10,000 on Nov 1, 2017 (change the amount above) and followed every trade. Shares are fractional; share counts include stock splits and reinvested dividends. Gains are measured on average cost. With a split chosen above, part of the account sits in BIL (a 1–3 month T-bill fund) and is put back to the split at every rebuild: each move is one BIL row below, and it buys or sells the same slice of every stock held.

Account value today$62,986+$52,986 on the $10,000 put in
Realized gains (from sales)+$48,607
Unrealized gains (still held)+$4,378
Trading fees paid (0.10% a trade)$2,280already taken out of the account value

What it holds now

At the close of Oct 16, 2026. It decides after the close on the last trading day of each month and trades at the next day's close. The weights drift with prices between rebuilds. This is the model’s position, published for education, not a recommendation to buy these stocks: a portfolio started today would differ in entry prices and results.

What Broad Momentum 30 holds now, for an account that started with $10,000
StockSectorWeightSharesAvg costCost basisPriceValueGain on costSince first boughtFirst boughtAtWhy
DINOEnergy3.8%19.130$88.34$1,690$125.29$2,397+$707+42.2%Aug 3, 2026$88.65new: ranked 16 of 30, 12-1 momentum +73%
VLOEnergy3.7%5.278$217.89$1,150$444.71$2,347+$1,197+108.8%Mar 2, 2026$214.91new: ranked 28 of 30, 12-1 momentum +45%
NUEBasic Materials3.7%9.136$250.19$2,286$256.29$2,341+$56+2.0%Sep 1, 2026$251.92new: ranked 18 of 30, 12-1 momentum +74%
MNSTConsumer Defensive3.7%51.160$47.94$2,453$45.73$2,340−$113-6.0%Jul 1, 2026$97.35new: ranked 26 of 30, 12-1 momentum +43%
TRVFinancial Services3.7%5.961$361.93$2,158$389.54$2,322+$165+7.7%Oct 1, 2026$361.64new: ranked 29 of 30, 12-1 momentum +34%
EATConsumer Cyclical3.6%11.094$194.48$2,158$204.14$2,265+$107+5.0%Oct 1, 2026$194.33new: ranked 18 of 30, 12-1 momentum +72%
CRLHealthcare3.6%7.516$287.06$2,158$300.15$2,256+$98+4.6%Oct 1, 2026$286.83new: ranked 13 of 30, 12-1 momentum +96%
ADMConsumer Defensive3.6%27.111$79.58$2,158$82.61$2,240+$82+3.9%Oct 1, 2026$79.52new: ranked 26 of 30, 12-1 momentum +39%
SNConsumer Cyclical3.6%11.992$179.92$2,158$186.51$2,237+$79+3.7%Oct 1, 2026$179.78new: ranked 17 of 30, 12-1 momentum +81%
WELLReal Estate3.5%9.500$215.79$2,050$234.85$2,231+$181+9.0%May 1, 2026$216.91new: ranked 28 of 30, 12-1 momentum +33%
PBFEnergy3.5%26.183$82.41$2,158$84.52$2,213+$55+2.6%Oct 1, 2026$82.34new: ranked 6 of 30, 12-1 momentum +142%
ROKUCommunication Services3.5%14.253$146.56$2,089$154.54$2,203+$114+6.0%Aug 3, 2026$145.84new: ranked 23 of 30, 12-1 momentum +53%
MRKHealthcare3.5%14.991$143.92$2,158$145.95$2,188+$30+1.5%Oct 1, 2026$143.81new: ranked 14 of 30, 12-1 momentum +92%
FIVEConsumer Cyclical3.4%9.748$221.35$2,158$222.72$2,171+$13+0.7%Oct 1, 2026$221.17new: ranked 20 of 30, 12-1 momentum +59%
JBHTIndustrials3.4%9.489$227.38$2,158$228.78$2,171+$13+0.7%Oct 1, 2026$227.20new: ranked 12 of 30, 12-1 momentum +99%
FCXBasic Materials3.4%31.185$69.19$2,158$69.54$2,169+$11+0.6%Oct 1, 2026$69.28new: ranked 10 of 30, 12-1 momentum +106%
BNYFinancial Services3.4%14.980$158.44$2,373$143.30$2,147−$227-10.7%Sep 1, 2026$160.51new: ranked 24 of 30, 12-1 momentum +50%
ILMNHealthcare3.4%8.113$207.46$1,683$262.54$2,130+$447+26.7%Sep 1, 2026$207.13new: ranked 10 of 30, 12-1 momentum +107%
TGTConsumer Defensive3.4%13.758$163.43$2,248$154.26$2,122−$126-5.8%Sep 1, 2026$163.75new: ranked 22 of 30, 12-1 momentum +54%
AGNCReal Estate3.3%240.882$8.96$2,158$8.72$2,100−$57-2.6%Oct 1, 2026$8.95new: ranked 30 of 30, 12-1 momentum +25%
ATIIndustrials3.3%11.279$200.41$2,260$185.59$2,093−$167-7.6%Sep 1, 2026$200.95new: ranked 5 of 30, 12-1 momentum +139%
IBKRFinancial Services3.3%25.124$90.12$2,264$82.69$2,078−$187-8.5%Sep 1, 2026$90.39new: ranked 28 of 30, 12-1 momentum +41%
GEVUtilities3.2%2.183$581.96$1,271$921.20$2,011+$741+141.6%May 1, 2025$382.29new: ranked 9 of 30, 12-1 momentum +100%
HLBasic Materials3.1%126.817$15.80$2,003$15.30$1,940−$63-1.8%Jul 1, 2026$15.59new: ranked 8 of 30, 12-1 momentum +205%
TWLOCommunication Services2.8%7.156$209.62$1,500$244.37$1,749+$249+16.8%Jul 1, 2026$209.28new: ranked 22 of 30, 12-1 momentum +55%
MUTechnology2.7%1.965$831.52$1,634$878.84$1,727+$93+6.0%Aug 3, 2026$829.50new: ranked 2 of 30, 12-1 momentum +801%
BEIndustrials2.7%7.767$161.30$1,253$221.31$1,719+$466+55.4%Nov 3, 2025$142.37new: ranked 1 of 30, 12-1 momentum +768%
SNDKTechnology2.5%1.206$853.35$1,029$1,299.30$1,567+$538+109.9%Mar 2, 2026$619.08new: ranked 1 of 30, 12-1 momentum +1033%
AXTITechnology2.2%26.352$56.20$1,481$51.47$1,356−$125-8.3%Sep 1, 2026$56.11new: ranked 2 of 30, 12-1 momentum +1970%

Every trade

4,539 trades in all; the latest 50 below, newest first (up to 300 here; the download has them all). Download the full ledger (CSV). A trade is decided at one day’s close and made at the next day’s close.

Every trade of Broad Momentum 30, newest first, for an account that started with $10,000
DateStockActionWeightSharesPriceAmountFeeRealized gainAccount valueGain vs startWhy
Oct 5, 2026WBDsell3.3% → to 0.0%69.657$30.95+$2,156 received$2.16+$180$65,583+$55,583delisted or acquired: sold at its last close
Oct 1, 2026WELLadd3.0% → to 3.3%0.889$226.94−$202 paid$0.20$64,677+$54,677rebalance to target weight
Oct 1, 2026WBDtrim3.5% → to 3.3%3.452$30.95+$107 received$0.11+$9$64,677+$54,677rebalance to target weight
Oct 1, 2026VLOtrim3.6% → to 3.3%0.442$408.46+$180 received$0.18+$84$64,677+$54,677rebalance to target weight
Oct 1, 2026TWLOtrim4.2% → to 3.3%1.900$301.27+$572 received$0.57+$174$64,677+$54,677rebalance to target weight
Oct 1, 2026TRVbuy0.0% → to 3.3%5.966$361.64−$2,158 paid$2.16$64,677+$54,677new: ranked 29 of 30, 12-1 momentum +34%
Oct 1, 2026TGTadd3.1% → to 3.3%1.115$156.70−$175 paid$0.17$64,677+$54,677rebalance to target weight
Oct 1, 2026STLDsell3.1% → to 0.0%8.873$226.17+$2,007 received$2.01−$67$64,677+$54,677left the 500 most traded (or under $5)
Oct 1, 2026SPGsell3.1% → to 0.0%9.887$200.81+$1,985 received$1.99+$7$64,677+$54,677no longer in the top 30 (ranked 190)
Oct 1, 2026SNDKtrim3.7% → to 3.3%0.141$1,787.69+$253 received$0.25+$132$64,677+$54,677rebalance to target weight
Oct 1, 2026SNbuy0.0% → to 3.3%12.001$179.78−$2,158 paid$2.16$64,677+$54,677new: ranked 17 of 30, 12-1 momentum +81%
Oct 1, 2026RYsell3.1% → to 0.0%10.183$195.36+$1,989 received$1.99−$122$64,677+$54,677left the 500 most traded (or under $5)
Oct 1, 2026ROSTsell3.3% → to 0.0%9.056$234.10+$2,120 received$2.12+$182$64,677+$54,677Consumer Cyclical already has 3 stronger names
Oct 1, 2026ROKUadd3.1% → to 3.3%0.942$151.26−$142 paid$0.14$64,677+$54,677rebalance to target weight
Oct 1, 2026PBFbuy0.0% → to 3.3%26.204$82.34−$2,158 paid$2.16$64,677+$54,677new: ranked 6 of 30, 12-1 momentum +142%
Oct 1, 2026NUEadd3.0% → to 3.3%0.898$235.98−$212 paid$0.21$64,677+$54,677rebalance to target weight
Oct 1, 2026MUtrim3.8% → to 3.3%0.254$1,097.39+$278 received$0.28+$68$64,677+$54,677rebalance to target weight
Oct 1, 2026MRKbuy0.0% → to 3.3%15.003$143.81−$2,158 paid$2.16$64,677+$54,677new: ranked 14 of 30, 12-1 momentum +92%
Oct 1, 2026MPCsell3.5% → to 0.0%5.410$420.15+$2,273 received$2.27+$614$64,677+$54,677Energy already has 3 stronger names
Oct 1, 2026MNSTadd3.0% → to 3.3%5.146$42.14−$217 paid$0.22$64,677+$54,677rebalance to target weight
Oct 1, 2026KOsell3.2% → to 0.0%23.686$86.10+$2,039 received$2.04−$34$64,677+$54,677Consumer Defensive already has 3 stronger names
Oct 1, 2026JBHTbuy0.0% → to 3.3%9.496$227.20−$2,158 paid$2.16$64,677+$54,677new: ranked 12 of 30, 12-1 momentum +99%
Oct 1, 2026JAZZsell3.1% → to 0.0%8.502$233.01+$1,981 received$1.98−$93$64,677+$54,677left the 500 most traded (or under $5)
Oct 1, 2026ILMNtrim4.1% → to 3.3%1.884$265.72+$501 received$0.50+$110$64,677+$54,677rebalance to target weight
Oct 1, 2026IBKRadd3.0% → to 3.3%2.221$85.81−$191 paid$0.19$64,677+$54,677rebalance to target weight
Oct 1, 2026HLadd2.8% → to 3.3%18.492$17.00−$314 paid$0.31$64,677+$54,677rebalance to target weight
Oct 1, 2026GMsell3.0% → to 0.0%24.247$79.31+$1,923 received$1.92−$200$64,677+$54,677Consumer Cyclical already has 3 stronger names
Oct 1, 2026GEVtrim3.5% → to 3.3%0.121$987.45+$119 received$0.12+$49$64,677+$54,677rebalance to target weight
Oct 1, 2026FIXsell3.5% → to 0.0%1.333$1,685.29+$2,247 received$2.25+$1,056$64,677+$54,677Industrials already has 3 stronger names
Oct 1, 2026FIVEbuy0.0% → to 3.3%9.755$221.17−$2,158 paid$2.16$64,677+$54,677new: ranked 20 of 30, 12-1 momentum +59%
Oct 1, 2026FCXbuy0.0% → to 3.3%31.143$69.28−$2,158 paid$2.16$64,677+$54,677new: ranked 10 of 30, 12-1 momentum +106%
Oct 1, 2026EATbuy0.0% → to 3.3%11.103$194.33−$2,158 paid$2.16$64,677+$54,677new: ranked 18 of 30, 12-1 momentum +72%
Oct 1, 2026DINOtrim3.5% → to 3.3%0.784$112.70+$88 received$0.09+$19$64,677+$54,677rebalance to target weight
Oct 1, 2026CRLbuy0.0% → to 3.3%7.522$286.83−$2,158 paid$2.16$64,677+$54,677new: ranked 13 of 30, 12-1 momentum +96%
Oct 1, 2026CNCsell3.0% → to 0.0%31.765$60.99+$1,937 received$1.94−$92$64,677+$54,677Healthcare already has 3 stronger names
Oct 1, 2026CASYsell2.6% → to 0.0%2.702$619.50+$1,674 received$1.67−$621$64,677+$54,677Consumer Cyclical already has 3 stronger names
Oct 1, 2026BNYadd2.9% → to 3.3%2.083$143.92−$300 paid$0.30$64,677+$54,677rebalance to target weight
Oct 1, 2026BEtrim4.2% → to 3.3%1.926$277.58+$535 received$0.53+$224$64,677+$54,677rebalance to target weight
Oct 1, 2026AXTItrim4.7% → to 3.3%10.555$81.81+$863 received$0.86+$271$64,677+$54,677rebalance to target weight
Oct 1, 2026ATIadd3.0% → to 3.3%0.977$191.14−$187 paid$0.19$64,677+$54,677rebalance to target weight
Oct 1, 2026AGNCbuy0.0% → to 3.3%241.073$8.95−$2,158 paid$2.16$64,677+$54,677new: ranked 30 of 30, 12-1 momentum +25%
Oct 1, 2026ADMbuy0.0% → to 3.3%27.133$79.52−$2,158 paid$2.16$64,677+$54,677new: ranked 26 of 30, 12-1 momentum +39%
Live forward test starts here: Sep 29, 2026. Above: decided each day from that day’s data. Below: backtest.
Sep 1, 2026WELLtrim3.4% → to 3.3%0.070$240.42+$17 received$0.02+$2$62,161+$52,161rebalance to target weight
Sep 1, 2026WDCsell2.8% → to 0.0%3.830$450.44+$1,725 received$1.73−$365$62,161+$52,161Technology already has 3 stronger names
Sep 1, 2026WBDbuy0.0% → to 3.3%73.222$28.32−$2,074 paid$2.07$62,161+$52,161new: ranked 8 of 30, 12-1 momentum +118%
Sep 1, 2026VLOtrim3.8% → to 3.3%0.838$361.99+$303 received$0.30+$121$62,161+$52,161rebalance to target weight
Sep 1, 2026TWLOtrim3.8% → to 3.3%1.203$228.65+$275 received$0.28+$23$62,161+$52,161rebalance to target weight
Sep 1, 2026TGTbuy0.0% → to 3.3%12.664$163.75−$2,074 paid$2.07$62,161+$52,161new: ranked 22 of 30, 12-1 momentum +54%
Sep 1, 2026TDsell3.2% → to 0.0%16.669$119.50+$1,992 received$1.99−$30$62,161+$52,161left the 500 most traded (or under $5)
Sep 1, 2026STRLsell2.4% → to 0.0%3.303$456.10+$1,506 received$1.51−$961$62,161+$52,161Industrials already has 3 stronger names