Research and development
How the strategies on this site were found: every test run on the way, including the many ideas that did not work. All of it is a backtest, the rules applied to past prices after the fact, with trading costs included.
Overview
Key findings
- The signal: 12-1 momentum, a stock’s gain from twelve months ago to one month ago, beat every other measure of trend tested, including 3-, 6- and 9-month look-backs and blends of them.
- The stock pool: the 500 most actively traded US stocks. The same rules on the 500 largest companies, or on the S&P 500, did far worse.
- Quality: keeping only companies with positive free cash flow cut the largest drop from about 49% to about 34% in an early test, with no loss of return.
- Concentration and speed: fewer stocks, more money in the strongest and weekly rebuilds raised returns, and raised the falls with them.
- Protection: market-timing rules cost more than they saved; holding a fixed share in T-bills is the simplest dependable way to fall less.
- Timing: trading at the close of the day after each decision gave the best results; trading earlier did not help.
- Caution: every result is a backtest chosen after many tries on one decade; expect less in the future.
How every test was run
- Prices from September 2016 to September 2026. The first year only feeds the first momentum reading, so trading runs from October 2017: almost nine years, also checked in two halves (2017–21 and 2022–26).
- The pool: the 500 most traded US stocks and ADRs, priced over $5, not over the counter, trading at least $10 million a day. Companies that later disappeared stay in the test.
- The signal: 12-1 momentum, a stock’s gain from twelve months ago to one month ago.
- Timing: decide on one day’s closing prices, trade at the next day’s close. From test 13 on, every rule is run on every possible rebuild day of the month (or week) and the average is reported, so no result rests on one lucky day.
- Costs: 0.10% on every purchase and sale. From test 15 on, scored the realistic way: holdings drift with prices between rebuilds and every change of weight pays the cost. No borrowing. Taxes ignored.
- The yardstick, SPY (the S&P 500 fund), over the same nine years: +248.0% in all, 15% a year, a worst fall of −33.7%, Sharpe 0.84. (The first tests used a slightly shorter span, where SPY made +241.7%.)
- Sharpe: return for each unit of day-to-day ups and downs. Higher is a smoother ride for the money made.
Where it ended up
The tests produced the strategies on this site, each tracked every trading day since its go-live date. Each one’s page shows its full record. The figures in this research come from the research runs, averaged over every possible rebuild day, so they differ from the single record shown on each strategy’s page.
| Strategy | Its rules |
|---|---|
| Core Momentum | The 500 most traded US stocks with positive free cash flow; buy the 15 with the strongest 12-1 momentum, at most 2 per sector, equal amounts; rebuild monthly. |
| Quality Momentum | Core Momentum plus gross margin higher than a year ago and nothing up over 40% in the last month; 10 stocks weighted by momentum; rebuild monthly. |
| Weekly Quality Momentum | Quality Momentum, rebuilt every week. |
| Weekly Leaders | Weekly Quality Momentum weighted by momentum squared, never less than 3% in any of the 10 stocks. |
| Weekly Full Stack (15) | Weekly Leaders with 15 stocks, only the top half of gross-margin improvers, no new buys in the week before a stock's expected results, and less money in stocks that move with the biggest holding. |
| Broad Momentum 30 | The 500 most traded US stocks with positive free cash flow; buy the 30 with the strongest 12-1 momentum, at most 3 per sector, equal amounts; rebuild monthly. |
| Quality Momentum (every 2 weeks) | Quality Momentum, rebuilt every other week. |
| Weekly Leaders (max 25%) | Weekly Leaders with no stock above 25% of the book. |
The tests, in order
Each test changed one thing and compared it with what came before. Open a test for the question, what was tried and the result. “Kept” means the change went into the strategies; “Did not work” means it was dropped. SPY, the S&P 500 fund, is the yardstick throughout. In the charts, green marks the option the strategies went on to use and grey is SPY.
1. Where it started: momentum in single stocks Kept
The question: ETF rankings found no edge, so does momentum work on individual stocks, where it is best documented?
What was tested:
- 12-month return skipping the latest month (12-1)
- weighted alpha
- risk-adjusted momentum
- last month's losers
- all ~2,000 liquid stocks vs the 250-1,000 most traded
What happened: Across all ~2,000 liquid stocks momentum was weak and no portfolio beat SPY. Among the 250-1,000 most traded, plain 12-month momentum beat SPY in both halves and survived removing the ten biggest winners, though it crashed in 2021 (-35% while SPY made +22%). Weighted alpha was weaker than plain 12-month momentum, and skipping the latest month helped.
2. Which measure of trend picks the best stocks? Kept
The question: Do ready-made stock metrics pick better stocks than 12-month momentum computed from prices?
What was tested:
- 12-1 momentum
- 6-1 momentum
- 3-month momentum
- risk-adjusted 12-1
- stored 120/60/30-day weighted alpha
- stored acceleration, composite score, overall rank
What happened: Top 50 of the 500 most traded, equal weight, monthly. Plain 12-1 momentum made +582.4% (Sharpe 0.76) against SPY's +241.7%. Stored 120-day weighted alpha made +277.3%, the composite score +188.4%, and the shorter readings were worse again. Risk-adjusted momentum made less (+467.8%) but fell 10 points less (-38.4% vs -48.8%).
Show these numbers as a table
| Tested | Total return 2017-2026 |
|---|---|
| 12-1 momentum | +582% |
| Risk-adjusted 12-1 | +468% |
| 6-1 momentum | +412% |
| Weighted alpha 120d | +277% |
| Composite score | +188% |
| Weighted alpha 60d | +144% |
| 3-month momentum | +109% |
| Weighted alpha 30d | +68.5% |
| SPY | +242% |
3. Is it the ranking or just the stock pool? Kept
The question: Out of the same 500 stocks, how much of the return comes from the momentum ranking itself?
What was tested:
- best 50 by 12-1 momentum
- all 500 held equally (no ranking)
- worst 50 by 12-1 momentum
What happened: Out of the same 500 names, weighted the same way: the best 50 made +515.4%, holding all 500 made +168.6%, and the worst 50 made +1.9% over nine years. The ranking is doing the work, not the universe.
Show these numbers as a table
| Tested | Total return 2017-2026 (month-end figures) |
|---|---|
| Best 50 (momentum leaders) | +515% |
| All 500, no ranking | +169% |
| Worst 50 | +1.9% |
| SPY | +242% |
4. Trend filters and other ways to shrink the fall Did not work
The question: Can a 200-day trend rule or a calmer book cut the 49% worst fall without killing the return?
What was tested:
- only while SPY is above its 200-day average
- only stocks above their own 200-day average
- both 200-day rules
- inverse-volatility weights
- drop the most volatile fifth
- 100 names instead of 50
- 20% volatility target
What happened: The 200-day rule, the best idea in the ETF work, was destructive on stocks: holding only while SPY was above its 200-day average made +113.6% instead of +582.4%, and the worst fall got deeper (-55.6%). Every version cost more return than the drawdown it saved, because the winners are exactly the stocks that run far above their averages. Inverse-volatility weights were the one cheap improvement (+549.5%, worst fall -40.9%).
Show these numbers as a table
| Tested | Total return 2017-2026 |
|---|---|
| 12-1, as it stands | +582% |
| Inverse-volatility weights | +550% |
| Own 200-day only | +402% |
| 100 names | +338% |
| Drop most volatile fifth | +258% |
| 20% volatility target | +210% |
| SPY above 200-day only | +114% |
| Both 200-day rules | +86.4% |
| SPY | +242% |
5. How far back should momentum look? Mixed
The question: Is 12 months the right look-back, or would 3 to 24 months do better?
What was tested:
- momentum over 3, 6, 9, 12, 18 and 24 months, with and without skipping the last month
- weighted alpha over 30 to 504 sessions
What happened: The Sharpe forms a hill: too short is noise, too long is stale. The peak sits between six and twelve months; past 18 months every version gets worse and worst falls pass -55%. The best horizon was not stable between the two halves (the first half preferred shorter, the second longer), so the horizon was later re-tested on the final strategies (test 25).
Show these numbers as a table
| Tested | Total return (window from 2018-09-28), momentum skipping the last month (SPY: +191.0% over this shorter span) |
|---|---|
| 3 months | +239% |
| 6 months | +394% |
| 9 months | +360% |
| 12 months | +293% |
| 18 months | +270% |
| 24 months | +218% |
| SPY | +191% |
6. What defines the stock pool Kept
The question: Does the window used to measure trading volume (and the $10M floor) matter?
What was tested:
- dollar-volume windows of 5, 20, 30, 60, 120 and 252 sessions
- a 60-session median
- floor and ranking on different windows
- three months of eligibility
What happened: Anything from a week to six months lands in the same place (Sharpe 0.68 to 0.77); only the year-long window is clearly worse (+385.2%). The $10M floor never binds for the 500 most traded. The one change worth keeping: a stock must have cleared the floor three months running, which gave +606.8% at Sharpe 0.78, the best of the round.
Show these numbers as a table
| Tested | Total return 2017-2026 |
|---|---|
| 5 sessions | +569% |
| 20 sessions (stored) | +562% |
| 30 sessions | +585% |
| 60 sessions | +526% |
| 120 sessions | +497% |
| 252 sessions | +385% |
| 20 sessions + 3 months eligibility | +607% |
| SPY | +242% |
7. Seven ways to raise the Sharpe Mixed
The question: On prices alone, can any lever lift the risk-adjusted return above SPY's?
What was tested:
- inverse-volatility weights
- risk-adjusted momentum
- blended rank
- 75 or 100 names
- correlation caps
- four weekly sleeves
- volatility targets 20/25/30%
- drop the most extreme fifth
- closest to 52-week high
- calmest of the top 100/150
- quarterly rebuild
What happened: Baseline +635.2% at Sharpe 0.79, worst fall -49.4%. Only the volatility target raised the Sharpe: at 20% it matched SPY's 0.83 (+449.6%, worst fall -38.9%). Everything else bought a smaller fall with a bigger cut in return; ranking by closeness to the 52-week high made a calm book that simply did not earn (+123.9%). On prices alone the Sharpe stopped at about SPY's.
Show these numbers as a table
| Tested | Sharpe ratio |
|---|---|
| Base 12-1, top 50 | 0.79 |
| Inverse-volatility weights | 0.80 |
| Risk-adjusted momentum | 0.80 |
| 100 names | 0.71 |
| Correlation cap 0.7 | 0.74 |
| Four weekly sleeves | 0.74 |
| Volatility target 20% | 0.83 |
| Quarterly rebuild | 0.69 |
| Closest to 52-week high | 0.60 |
| SPY | 0.83 |
8. Company data: quality, sectors and valuation Kept
The question: With fundamentals, sectors and valuation available, can filters fix the risk?
What was tested:
- at most 5/8/10/15 per sector
- drop the dearest fifth (sales multiple, EV/EBITDA)
- cheapest 50 of the strongest 100/150
- profitable last quarter
- positive free cash flow
- debt below median
- S&P 500 members only
What happened: Quality pays and cheapness does not. Positive free cash flow alone cut the worst fall from -49.4% to -34.1%; with at most five per sector the book made +420.0% at Sharpe 0.92 with a -32.5% worst fall, against SPY's +241.7%, 0.83 and -33.7%: the first rule in the study to beat SPY on all three. Every valuation filter lost money, and the real S&P 500 was a worse pool (+250.5% vs +608.3%).
Show these numbers as a table
| Tested | Sharpe ratio |
|---|---|
| Base (test 7 book) | 0.78 |
| Max 5 per sector | 0.77 |
| Drop dearest fifth (sales) | 0.72 |
| Cheapest 50 of top 100 | 0.60 |
| Profitable | 0.74 |
| Positive free cash flow | 0.80 |
| Debt below median | 0.59 |
| S&P 500 only | 0.71 |
| Free cash flow + max 5 per sector | 0.92 |
| SPY | 0.83 |
9. Was it real? A fair re-test and four new data sets Mixed
The question: If the filters are chosen on 2017-21 only and then scored on unseen 2022-26, does an edge survive, and do insider, fund-holder, industry or sales data help?
What was tested:
- fair greedy filter search on 2017-21 only
- strongest industries first
- insider buying/selling filters
- 13F fund holders rising
- sales growth
- costs of 0.25% and 0.50% a side
- 30 or 75 names
- mid-month rebuild
What happened: Chosen fairly, the search picked different filters and scored Sharpe 0.77 on 2022-26 against SPY's 0.73: a real but much smaller edge than test 8 showed (0.97). None of the four new data sets improved test 8's rule; ranking industries first, the best ETF idea, was worse in every version. The rule survived 0.25% costs and a mid-month rebuild, but at 0.50% a side its Sharpe fell to 0.77, below SPY's 0.83.
Show these numbers as a table
| Tested | Sharpe ratio, whole period |
|---|---|
| Test 8 rule | 0.92 |
| + 13F holders rising | 0.91 |
| + revenue up on a year | 0.84 |
| + no heavy insider selling | 0.82 |
| Industries first + free cash flow | 0.85 |
| Holding 30 names | 0.97 |
| At 0.50% a side | 0.77 |
| SPY | 0.83 |
10. Fewer names Kept
The question: Does holding fewer than 50 stocks (with at most 2 per sector) do better?
What was tested:
- 10, 15, 20, 25, 30, 40, 50 names
- 15/20 names with 3 per sector or no cap
- higher costs
- mid-month rebuild
- 1/volatility weights
What happened: Fewer names was the biggest improvement since test 8: 15 names made +1163.8% at Sharpe 1.07 (worst fall -34.1%), 20 names +761.4% at 1.03, against 50 names' +420.0%. Chosen on 2017-21 alone, 15 names scored 1.11 on 2022-26 against SPY's 0.76. The sector cap is essential: with no cap the 15-name book fell -45.0%.
Show these numbers as a table
| Tested | Total return 2017-2026 |
|---|---|
| 10 names | +1,633% |
| 15 names | +1,164% |
| 20 names | +761% |
| 25 names | +675% |
| 30 names | +559% |
| 40 names | +484% |
| 50 names | +420% |
| SPY | +251% |
11. More cash flow is not better Did not work
The question: Is a stronger free-cash-flow screen (yield, margin, consistency, growth) better than just 'positive'?
What was tested:
- top half / top third by free cash flow yield
- free cash flow margin above 10%
- positive free cash flow four quarters running
- free cash flow up on a year
- blended momentum + free cash flow-yield ranks
- free cash flow yield alone, no momentum (control)
What happened: Nothing beat plain 'positive' over the whole period (+420.0%). The yield filters were an era effect: poor in 2017-21 (Sharpe about 0.6), excellent in 2022-26 (about 1.1). The control with no momentum made +273.3%: momentum does the work, cash flow is a safety screen.
Show these numbers as a table
| Tested | Total return 2017-2026 |
|---|---|
| free cash flow just positive | +420% |
| Top half by free cash flow yield | +278% |
| Top third by free cash flow yield | +252% |
| free cash flow margin > 10% | +369% |
| Positive 4 quarters running | +295% |
| free cash flow up on a year | +362% |
| 70% momentum / 30% free cash flow yield | +342% |
| free cash flow yield alone (no momentum) | +273% |
| SPY | +251% |
12. Half stocks, half ETFs Mixed
The question: Does mixing the stock book with the earlier ETF niche book give a smoother ride?
What was tested:
- 70/30, 50/50 and 30/70 stock/ETF mixes
- with and without 1.5x borrowing on the ETF book
- a 20-name book in four weekly sleeves + ETF book
What happened: The two books move together only partly (correlation 0.63). Half the 20-name stock book and half the unlevered ETF book made +419.7% at Sharpe 1.11 with a -20.7% worst fall, ahead of SPY in both halves; it was the smoothest result in the study and was paper-traded for a time. It was not carried into the live strategies, which aim for maximum stock return without ETF blends.
Show these numbers as a table
| Tested | Worst fall |
|---|---|
| 20-name stocks alone | -32.6% |
| 70% stocks / 30% ETF | -25.6% |
| 50% / 50% | -20.7% |
| 30% / 70% | -15.7% |
| ETF book alone | -13.8% |
| SPY | -33.7% |
13. Does the trading day matter? Mixed
The question: Was test 10's month-end result a lucky day?
What was tested:
- each book run on all 21 trading days of the month
- four weekly sleeves
- 10 to 50 names
What happened: Yes, partly. The same 15-name rule had a Sharpe anywhere from 0.88 to 1.08 depending on the day, and month-end (1.08) was near the top. Averaged over all days, fewer names still earned more but by less, and the fair size chosen on 2017-21 was 30 names. From here on every result is the average over every rebuild day.
Show these numbers as a table
| Tested | Total return, average of all 21 trading days |
|---|---|
| 10 names | +1,307% |
| 15 names | +935% |
| 20 names | +647% |
| 25 names | +557% |
| 30 names (3 per sector) | +526% |
| 50 names (5 per sector) | +396% |
| SPY | +248% |
14. Signal, patience, size and speed Kept
The question: Averaged over every trading day: which signal, should winners be held longer, how many names, monthly or weekly?
What was tested:
- 12-1, 9-1, 6-1, 3-1, 12-0 momentum
- closeness to 52-week high
- blends
- sell buffers (rank 20/30/45)
- 5, 8, 10, 12, 15 names
- weekly rebuild
What happened: 12-1 won (+934.7% for 15 names); 9-1 and 12-0 were close, 6-1 and 3-1 fell away, and the 52-week-high rule made +141.0%. Every sell buffer lowered the return. Fewer names multiplied the money (5 names +2547.5%, 10 names +1307.1%) but deepened the fall (5 names -55.1%). Weekly matched monthly on money with half the day-to-day spread.
Show these numbers as a table
| Tested | Total return, 15 names, average of all days |
|---|---|
| 12-1 momentum | +935% |
| 9-1 | +864% |
| 12-0 (no skip) | +881% |
| 6-1 | +605% |
| 3-1 | +308% |
| Average of 12-1 and 6-1 ranks | +688% |
| Closeness to 52-week high | +141% |
| 12-1, sell past rank 30 | +772% |
| SPY | +248% |
15. Nine more ideas on the 10-name book Mixed
The question: What makes the 10-name book earn more, and what cuts its falls?
What was tested:
- bigger pool (1,000/1,500)
- momentum beyond the market
- rank or momentum weights
- hot-sector allowance
- stop-losses
- crash guards
- skip lottery spikes
- net income / gross margin / net margin up
- company size
What happened: Three ideas helped in both halves: money in proportion to momentum (+2691.8% vs +1307.1%), gross margin up on a year (+1621.0%, the best single filter) and skipping stocks up over 40% last month (+1478.9%). Stacked: +4492.6% at Sharpe 1.19, worst fall -48.5%. Every stop-loss and crash guard gave up hundreds of percent without reducing the worst fall, and a bigger pool made half as much.
Show these numbers as a table
| Tested | Total return, average of all days |
|---|---|
| Base: 10 names, equal weight | +1,307% |
| Momentum weights | +2,692% |
| Gross margin up on a year | +1,621% |
| Skip names up >40% last month | +1,479% |
| 1,000 most traded | +605% |
| Ranked by return beyond market | +991% |
| Stop 15% below cost | +805% |
| To T-bills if down 10% in a month | +597% |
| Net income up on a year | +924% |
| Larger half by market value | +434% |
| SPY | +248% |
16. Robustness checks: luck, hindsight or one lucky stock? Kept
The question: Is the stacked book real, or luck, hindsight or one rocket stock?
What was tested:
- re-scoring with drifting weights and full costs
- removing AXTI and the five biggest winners
- fair stack chosen on 2017-21 only
- 300 random books from the same filtered candidates
- 10,000 reshuffled histories
- each January, pick the best rule so far and use it for the year
What happened: Realistic scoring cost only about 5-10% of the gain. Without the five biggest winners the 10-name stack still made +1733.8%; chosen fairly on 2017-21, the stack made +452.3% on 2022-26 against SPY's +73.5%. 300 random books had a median of +241.7% and none reached the stack's +4492.6%; 98.7% of 10,000 reshuffled histories beat SPY; picking each January the best rule so far made +6148.9% (by return) or +3314.3% (by Sharpe).
Show these numbers as a table
| Tested | Total return 2017-2026 |
|---|---|
| The stack (10 names) | +4,493% |
| Stack without 5 biggest winners | +1,734% |
| Walk-forward, chosen on return | +6,149% |
| Walk-forward, chosen on Sharpe | +3,314% |
| Random books: best of 300 | +2,068% |
| Random books: median | +242% |
| Bootstrap: unlucky 5th percentile | +557% |
| SPY | +248% |
17. Sixteen more ideas Mixed
The question: What else improves the stack: weights, margin measures, sales, smoothness, volume, industries, timing?
What was tested:
- momentum squared
- weight caps 20/25/35%
- other gross-margin measures
- sales accelerating
- reaction to results
- spike filter at 30%/50%
- smooth or accelerating momentum
- volume rising
- industry filters
- mid-month loser check
- every two weeks
- 5 names / 15 names / split
What happened: Five ideas made more money in both halves: rebuilding every two weeks (+6160.1%, Sharpe 1.26, the same worst fall), momentum squared (+10480.3% but -59.6%), 5 names (+8537.4%), half 5/half 15 names, and 5 names above SPY's 200-day/15 below. Capping a stock at 25% kept +3576.8% with a smaller fall. Other margin measures, sales acceleration, smooth momentum, volume, industry filters and mid-month checks did not help.
Show these numbers as a table
| Tested | Total return, average of all days |
|---|---|
| Test 15 stack | +4,493% |
| Momentum squared | +10,480% |
| Every two weeks | +6,160% |
| 5 names | +8,537% |
| Capped at 25% a name | +3,577% |
| Gross margin rising faster | +1,261% |
| + sales accelerating | +1,670% |
| + 8 of 11 months up | +2,425% |
| + industry rising | +3,912% |
| Mid-month sell below rank 30 | +4,314% |
| SPY | +248% |
18. Speed and concentration Kept
The question: Combining the winners: how often to rebuild, and how hard to lean into the leaders?
What was tested:
- monthly, three-weekly, two-weekly, weekly
- momentum to the power 1, 1.5, 2, 3
- 3, 5, 7 names
- caps at 25%/35%
- trims, sector limits, breadth cash guard, price floors, pool sizes
What happened: Rebuilding more often raised return and Sharpe without deepening the fall: monthly +4492.6%, two-weekly +6160.1%, weekly +6596.3% (momentum weights). Momentum squared rebuilt weekly made +21700.6% at Sharpe 1.35, but concentration is risk, not skill: higher powers or fewer names raise return and worst fall together (momentum squared about -60%). A breadth-based cash guard again gave up return without reducing the worst fall.
Show these numbers as a table
| Tested | Total return, momentum weights, 10 names |
|---|---|
| Monthly | +4,493% |
| Every three weeks | +4,869% |
| Every two weeks | +6,160% |
| Weekly | +6,596% |
| Weekly, momentum squared | +21,701% |
| SPY | +248% |
19. Why the 500 most traded? Kept
The question: Is the edge about size, index membership or how heavily a stock trades?
What was tested:
- 300, 400, 450, 550, 600, 750 most traded
- 500 largest by market value
- the real S&P 500
- rising trading rank
- placebo: 500th-1,000th most traded
- $10/$20 price floors
What happened: It is trading activity. On the same 7 rebuild days the 500 most traded made +4731.3%; the 500 largest by value +1540.4%, the S&P 500 +509.1%, and the placebo tier (500th-1,000th most traded) +197.8%, below SPY. 400-500 is a plateau and the return fades beyond 500. This is the study's biggest caveat: everything found lives in the 500 most traded stocks.
Show these numbers as a table
| Tested | Total return, monthly reference, 7 rebuild days |
|---|---|
| 500 most traded | +4,731% |
| 400 most traded | +4,829% |
| 450 most traded | +5,117% |
| 550 most traded | +3,923% |
| 600 most traded | +3,494% |
| 300 most traded | +2,605% |
| 750 most traded | +2,137% |
| 500 largest by value | +1,540% |
| S&P 500 | +509% |
| Placebo: 500th-1,000th | +198% |
| SPY | +248% |
20. Pushing the weekly book Mixed
The question: On the weekly momentum-squared book, which refinements help, and is weekly the right speed?
What was tested:
- top half of gross-margin improvers
- no new buys in the week before expected results
- 5 or 15 names
- 35% cap, 3% floor
- every 3 sessions, daily
- 12-0 and other signal timings
- weights on 6-1/3-1
- correlation-aware weights
- insider and 13F filters
- stop-like trims
What happened: Top-half margin improvers (+27113.5%), skipping the week before results (+26814.4%, Sharpe 1.39) and correlation-aware weights (+23200.3%) worked in both halves; 5 names made +32783.2%. Weekly is the peak: every 3 sessions earned less and daily fell 66%. Insider filters hurt badly (+1420.9%, -72.5% fall) because insiders sell into big runs. A 3% floor (+17127.2%, -49.0%) traded some money for a smaller fall.
Show these numbers as a table
| Tested | Total return, weekly book |
|---|---|
| Weekly reference (mom. squared, 10) | +21,701% |
| + top-half margin improvers | +27,114% |
| No buys week before results | +26,814% |
| Correlation-aware weights | +23,200% |
| 5 names | +32,783% |
| 3% floor per name | +17,127% |
| Every 3 sessions | +17,454% |
| Daily | +8,459% |
| 12-0 signal | +14,034% |
| + insider bought | +1,421% |
| SPY | +248% |
21. Stacking the winners, and the hardest checks for over-fitting Kept
The question: Do the winners add up, and is the result overfitted or dependent on one sector?
What was tested:
- full stack at 5/10/15 names with caps or a 3% floor
- results-timing variants
- pool by trading intensity
- sensitivity map of 48 books
- deflated Sharpe
- capacity
- every three-year window
- every start month
- leave one sector out
- probability of backtest overfitting (PBO)
What happened: The winners add up: the full stack made +34785.1% with 10 names (Sharpe 1.41); the 15-name version with a 3% floor made +13333.2% at -45.6%. The sensitivity map is a smooth slope, after allowing for how many rules were tried, the chance of a real edge is 0.98, and every start month from 2017 to 2023 beat SPY. But without technology the book kept only 8% of its return, and the a standard over-fitting test (0.5953 on a 0-to-1 scale) says that picking between the fine-tuned versions is mostly luck.
Show these numbers as a table
| Tested | Total return, weekly reference with one sector removed |
|---|---|
| All sectors | +21,701% |
| Without Industrials | +28,223% |
| Without Financials | +25,925% |
| Without Healthcare | +20,591% |
| Without Energy | +17,997% |
| Without Consumer Cyclical | +15,040% |
| Without Technology | +1,784% |
| SPY | +248% |
22. Which kinds of idea work again and again? Kept
The question: Across 174 tests in test 14-28, which kinds of idea work again and again?
What was tested:
- every test sorted into a family and scored: more money in both halves (hit), one half (mixed), safer, or miss
What happened: Real: avoiding buys just before results (5 of 5 hits), rebuilding faster (76%), combining winners (71%), weighting towards leaders (69%), fewer stocks (64%). Not real: other momentum signals (5%), holding longer, stop-losses, market timing, insider/fund data, sector rules (all 0%). The five strategies were built only from the real families, with mid-plateau settings.
Show these numbers as a table
| Tested | Hit rate (share of tests that made more money in both halves) |
|---|---|
| Avoid buys before results | 100% |
| Rebuild faster | 76% |
| Combine winners | 71% |
| Weight to leaders | 69% |
| Fewer stocks | 64% |
| Gross-margin variants | 33% |
| Different stock pools | 12% |
| Other momentum signals | 5% |
| Stop-losses | 0% |
| Market timing | 0% |
23. Market timing and market breadth guards Did not work
The question: Can a market signal (SPY's 200-day EMA, other averages, breadth of every stock) move money to T-bills before the falls?
What was tested:
- SPY 200-day EMA/SMA, bands, month-end, Faber 10-month, golden cross
- QQQ trend
- own-curve trend
- drawdown exits
- volatility targets 30-60%
- A/D line, McClellan, High-Low index, new highs/lows, share above 50/200-day, Zweig thrust
- leaders' breadth
- split market (Hindenburg-style)
What happened: Every market-timing rule kept only 20-70% of the money without cutting the worst fall in both halves: on Weekly Quality Momentum, SPY's 200-day EMA made +2890.7% instead of +6596.3% with the same -46.4% fall. Momentum crashes happen while SPY is flat, and shocks are over before the gate fires. Only volatility targeting (50%: -41.3% instead of -46.5%) and the split-market rule (+7185.3%, -34.8%) cut the fall.
Show these numbers as a table
| Tested | Total return, Weekly Quality Momentum |
|---|---|
| No filter | +6,596% |
| SPY above 200-day EMA | +2,891% |
| SPY above 200-day SMA | +3,053% |
| Golden/death cross | +3,042% |
| QQQ above 200-day EMA | +3,497% |
| Own curve above 200-day EMA | +2,001% |
| A/D line above 200-day EMA | +3,601% |
| Volatility target 50% | +4,101% |
| Split market, half out | +7,185% |
| SPY | +248% |
24. Is a guard worth what it costs? The fixed-mix yardstick Mixed
The question: Does any guard beat simply holding a fixed share in T-bills, and can guards be made cheaper?
What was tested:
- fixed 90/10, 80/20, 70/30 in T-bills or the S&P 500
- froth and take-profit rules
- QQQ short hedges
- crash brake
- guards parking money in SPY, a basket, TLT or gold
- borrowing back
- votes of several warnings
- trimming only stretched stocks
What happened: Any guard falls less and earns less, so the fair comparison is against a fixed mix. SPY's 200-day EMA was 8 points a year worse than simply holding less. The split-market rule and the volatility target beat a fixed mix; the cheapest unlevered guard is half into T-bills when two of three warnings agree (volatility, split market, froth): on Weekly Quality Momentum 60.1% a year at -38.6% vs 60.2% at -46.5% unguarded. Trimming only stretched stocks was worse than cutting the whole book.
Show these numbers as a table
| Tested | A year (CAGR), Weekly Quality Momentum |
|---|---|
| No guard | +60.2% |
| 90% / 10% T-bills | +54.5% |
| 80% / 20% T-bills | +48.7% |
| 70% / 30% T-bills | +42.9% |
| SPY above 200-day EMA | +46.4% |
| Volatility target 50% | +52.0% |
| Split market, half out | +61.7% |
| 2-of-3 vote, half into T-bills | +60.1% |
| SPY | +15.0% |
25. Is 12-1 the right horizon for the final strategies? Kept
The question: Would 3-1, 4-1, 6-1 or 9-1 momentum, or blends, do better than 12-1 in the five strategies?
What was tested:
- 3-1, 4-1, 6-1, 9-1, 12-1 momentum
- 12-1 + 6-1 blend
- 12-1 + 6-1 + 3-1 blend
What happened: 12-1 was best for all five original strategies tested (the first five on this site) on yearly return, Sharpe and worst fall. Weekly Quality Momentum: 20% a year at 3-1, 29% at 6-1, 48% at 9-1, 60% at 12-1. Chosen on 2017-21 alone, 12-1 is the pick for four of five; 9-1 is the only close second, and blends land between their parts.
Show these numbers as a table
| Tested | A year (CAGR), Weekly Quality Momentum |
|---|---|
| 3-1 | +20.0% |
| 4-1 | +19.0% |
| 6-1 | +29.0% |
| 9-1 | +48.0% |
| 12-1 | +60.0% |
| Blend 12-1 + 6-1 | +52.0% |
| Blend 12-1 + 6-1 + 3-1 | +51.0% |
| SPY | +15.0% |
Protecting against losses
Two ways to fall less were tested on all 8 strategies: keeping a fixed share of the account in T-bills, and moving money into T-bills only when a warning signal fires. Each part below opens for its heat maps and full results.
Fixed T-bill splits, from 100/0 to 10/9010 splits on all 8 strategies: largest drop and return a year
The simplest protection: keep a fixed share of the account in T-bills and the rest in the strategy. The map shows every split in steps of 10 for all 8 strategies. A split makes the largest drop smaller and the return lower in close proportion: for Core Momentum, a 50/50 split took the largest drop from −36.3% to −19.1% and the return from 29.4% to 16.5% a year. That steady rate is the price of protection the warning signals below are measured against.
Largest drop: green is a smaller drop, red a bigger one. Tap, click or hover over a square for its loss protection and profit given up against 100% in the strategy.
Swipe sideways to see all 8 strategies.
| Split | Core Momentum | Quality Momentum | Weekly Quality Momentum | Weekly Leaders | Weekly Full Stack (15) | Broad Momentum 30 | Quality Momentum (every 2 weeks) | Weekly Leaders (max 25%) |
|---|---|---|---|---|---|---|---|---|
| 100% strategy, no T-bills | ||||||||
| 90% strategy, 10% T-bills | ||||||||
| 80% strategy, 20% T-bills | ||||||||
| 70% strategy, 30% T-bills | ||||||||
| 60% strategy, 40% T-bills | ||||||||
| 50% strategy, 50% T-bills | ||||||||
| 40% strategy, 60% T-bills | ||||||||
| 30% strategy, 70% T-bills | ||||||||
| 20% strategy, 80% T-bills | ||||||||
| 10% strategy, 90% T-bills |
Show the numbers as a table
Largest drop, by split
| Split | Core Momentum | Quality Momentum | Weekly Quality Momentum | Weekly Leaders | Weekly Full Stack (15) | Broad Momentum 30 | Quality Momentum (every 2 weeks) | Weekly Leaders (max 25%) |
|---|---|---|---|---|---|---|---|---|
| 100% strategy, no T-bills | −36.3% | −48.5% | −46.5% | −49.0% | −45.6% | −33.5% | −48.1% | −45.9% |
| 90% strategy, 10% T-bills | −33.0% | −44.4% | −42.5% | −45.0% | −41.8% | −30.4% | −44.0% | −41.7% |
| 80% strategy, 20% T-bills | −29.7% | −40.1% | −38.4% | −40.8% | −37.8% | −27.2% | −39.8% | −37.3% |
| 70% strategy, 30% T-bills | −26.2% | −35.7% | −34.1% | −36.5% | −33.7% | −23.9% | −35.4% | −32.8% |
| 60% strategy, 40% T-bills | −22.7% | −31.1% | −29.6% | −31.9% | −29.4% | −20.7% | −30.8% | −28.1% |
| 50% strategy, 50% T-bills | −19.1% | −26.4% | −25.0% | −27.1% | −25.0% | −17.3% | −26.0% | −23.4% |
| 40% strategy, 60% T-bills | −15.4% | −21.4% | −20.3% | −22.1% | −20.3% | −13.9% | −21.1% | −18.7% |
| 30% strategy, 70% T-bills | −11.6% | −16.3% | −15.4% | −16.9% | −15.4% | −10.5% | −16.0% | −14.2% |
| 20% strategy, 80% T-bills | −7.7% | −10.9% | −10.4% | −11.4% | −10.4% | −7.0% | −10.8% | −9.5% |
| 10% strategy, 90% T-bills | −3.7% | −5.5% | −5.1% | −5.8% | −5.2% | −3.4% | −5.4% | −4.8% |
Return a year, by split
| Split | Core Momentum | Quality Momentum | Weekly Quality Momentum | Weekly Leaders | Weekly Full Stack (15) | Broad Momentum 30 | Quality Momentum (every 2 weeks) | Weekly Leaders (max 25%) |
|---|---|---|---|---|---|---|---|---|
| 100% strategy, no T-bills | 29.4% | 53.4% | 60.2% | 77.8% | 72.9% | 22.4% | 58.6% | 56.6% |
| 90% strategy, 10% T-bills | 26.9% | 48.6% | 54.5% | 70.3% | 65.6% | 20.6% | 53.1% | 51.3% |
| 80% strategy, 20% T-bills | 24.4% | 43.6% | 48.7% | 62.6% | 58.3% | 18.7% | 47.5% | 45.9% |
| 70% strategy, 30% T-bills | 21.8% | 38.6% | 42.9% | 54.9% | 51.0% | 16.8% | 41.8% | 40.4% |
| 60% strategy, 40% T-bills | 19.2% | 33.5% | 37.1% | 47.2% | 43.7% | 14.8% | 36.1% | 35.0% |
| 50% strategy, 50% T-bills | 16.5% | 28.3% | 31.2% | 39.5% | 36.6% | 12.8% | 30.4% | 29.5% |
| 40% strategy, 60% T-bills | 13.8% | 23.2% | 25.4% | 31.8% | 29.5% | 10.8% | 24.8% | 24.0% |
| 30% strategy, 70% T-bills | 11.0% | 18.0% | 19.6% | 24.3% | 22.5% | 8.8% | 19.1% | 18.6% |
| 20% strategy, 80% T-bills | 8.2% | 12.8% | 13.8% | 16.9% | 15.7% | 6.7% | 13.5% | 13.1% |
| 10% strategy, 90% T-bills | 5.4% | 7.7% | 8.1% | 9.6% | 9.0% | 4.6% | 8.0% | 7.8% |
Every warning signal tested
52 warning signals that move money into T-bills when they fire were tested on all 8 strategies. Any rule that holds T-bills part of the time will usually fall less and earn less, so what matters is the deal: how much smaller the largest drop became, and how much return was given up for it.
The simplest way to fall less is to hold a fixed share of the account in T-bills. For each strategy, that sets a price for protection: how much yearly return a T-bill split gives up for each point of smaller drop. Each signal is measured against that price.
The heat maps show one number per strategy and signal: the edge over a fixed T-bill split, in percentage points of return a year. It is the signal’s return change minus what a T-bill split would have cost for the same protection. Green means the signal protected more cheaply than holding T-bills (the deeper, the better), grey means about the same, red means a worse deal or no protection. ★ marks free protection (a smaller drop and a higher return), ✕ marks no protection (the drop did not get smaller). Tap, click or hover over a square for its loss protection and profit given up.
The outcome: the Hindenburg-style split-market signal, built from all US stocks, was green for every strategy, on average 23 points a year better than a T-bill split, with free protection for every. A few volatility targets were green for some strategies. Nearly every other signal was red: a worse deal than simply holding T-bills.
At a glance: the signals that protected at all13 signals on all 8 strategies, best first
Each square: the edge over a fixed T-bill split for that strategy, in points of return a year. Tap, click or hover over a square for its loss protection and profit given up.
Swipe sideways to see all 8 strategies and the average.
| Signal | Core Momentum | Quality Momentum | Weekly Quality Momentum | Weekly Leaders | Weekly Full Stack (15) | Broad Momentum 30 | Quality Momentum (every 2 weeks) | Weekly Leaders (max 25%) | Average |
|---|---|---|---|---|---|---|---|---|---|
| Hindenburg-style split: this site’s signal → half out for 30 days (all US stocks) | +22.6 | ||||||||
| Volatility target 60%, checked weekly, in 25% steps | +2.9 | ||||||||
| Volatility target 40% (20-day, never above 100%) | +1.8 | ||||||||
| Volatility target 50%, checked weekly, in 25% steps | +0.9 | ||||||||
| Volatility target 40%, checked weekly, in 25% steps | -0.2 | ||||||||
| Volatility target 40% (60-day, never above 100%) | -0.3 | ||||||||
| Hindenburg-style split: 2.5% new highs AND 2.5% new lows → half out for 30 days (500 most traded) | -0.3 | ||||||||
| Volatility target 30% (60-day, never above 100%) | -2.5 | ||||||||
| Narrow rally: SPY up 20 days but A/D line down → half out | -3.0 | ||||||||
| High-Low index: out below 30, back above 50 | -4.3 | ||||||||
| 200-day EMA, only half to cash | -4.7 | ||||||||
| Below 200-day EMA AND volatility over 25% → out | -5.1 | ||||||||
| More new lows than new highs (10-day) → out | -5.6 |
The Hindenburg-style signal: when to get out, when to get back in264 versions on all 8 strategies
The one signal that worked for all 8 strategies was the Hindenburg-style split market: on the same day, many US stocks make a new 52-week high and many make a new 52-week low, while SPY is still above its 50-day average. The market is splitting apart under a rising index. This site’s version also requires the split to be broad: more than 3.0% of companies worth over $300 million at new highs and more than 2.0% at new lows, and at least 3 sectors at each end. As first tested, half the account moved into T-bills when it fired and came back 30 trading days after the last firing. Neither number was tuned.
To find the best timing, 264 versions were tested on all 8 strategies: 6 ways to get out, 11 ways to get back in and 4 sizes. Every version is traded one session after the reading, because the count of new highs and lows needs every stock’s closing price, so the earliest possible trade is the next close. That delay changes the rule as tested only a little: an edge of +21.9 points a year instead of +22.6. Since late 2017 the signal fired on 59 days, in 16 separate episodes.
What the tests found
- When to get back in decides almost everything. Coming back 30 sessions after the last firing scored +21.9 points a year on average. 20 sessions scored +12.4 and 45 sessions +12.4. Waiting 90 sessions or more gave up more return than the protection was worth.
- Waiting for the market to heal does not work. The four “healing” re-entry rules scored between -4.0 and +3.4. They bring the money back within days, often just before the real fall: in late 2021 the damage came weeks after the first firing.
- Waiting a few sessions before getting out helped. Going out at the next close (as tested) scored +21.9; waiting 2 sessions +24.2; waiting 5 sessions +26.0, with the same protection and more return kept. Markets often bounce in the first days after a firing. The gain is smaller and less certain than the re-entry’s: it rests on only 16 episodes. Waiting for a second firing kept more return but protected less.
- Size matters less than timing. Moving 50% scored +21.9, 75% +25.3 and everything +27.0. A bigger move protects more in a real fall and costs more in every false alarm.
- The timing is real, but there are few events. Sliding the same T-bill spells to 200 sets of random dates never matched the real signal (the rule as tested beat 100% of them). Still, there are only 16 episodes: four real falls (autumn 2018, February 2020, late 2021, April 2022) and several false alarms, mostly in 2023 to 2025.
- Chosen on 2017 to 2021, tested on 2022 to 2026. Picking each strategy’s best version on the first half alone, then running it on the second half, gave a smaller largest drop for 7 of 8 strategies and a higher Sharpe ratio for 8 of 8, and more total return for 8 of 8. Count on the protection more than on extra return.
Each square below uses the same scale as the maps above: the edge over a fixed T-bill split, in points of return a year. Tap, click or hover over a square for its loss protection and profit given up.
When to get back in
Out at the next close after the first firing, half the account. Each row is a re-entry rule.
Swipe sideways to see all 8 strategies and the average.
| Rule | Core Momentum | Quality Momentum | Weekly Quality Momentum | Weekly Leaders | Weekly Full Stack (15) | Broad Momentum 30 | Quality Momentum (every 2 weeks) | Weekly Leaders (max 25%) | Average |
|---|---|---|---|---|---|---|---|---|---|
| 10 sessions after the last firing | +4.7 | ||||||||
| 20 sessions after the last firing | +12.4 | ||||||||
| 30 sessions after the last firing (as tested) | +21.9 | ||||||||
| 45 sessions after the last firing | +12.4 | ||||||||
| 60 sessions after the last firing | +9.3 | ||||||||
| 90 sessions after the last firing | +0.8 | ||||||||
| 120 sessions after the last firing | -1.2 | ||||||||
| When the McClellan oscillator is back above zero | -1.5 | ||||||||
| When new lows are back under 1% of stocks | +3.4 | ||||||||
| When new highs outnumber new lows (10-day average) | -4.0 | ||||||||
| When SPY is back above its 20-day average | +1.3 |
When to get out
Back 30 sessions after the last firing, half the account. Each row is an exit rule.
Swipe sideways to see all 8 strategies and the average.
| Rule | Core Momentum | Quality Momentum | Weekly Quality Momentum | Weekly Leaders | Weekly Full Stack (15) | Broad Momentum 30 | Quality Momentum (every 2 weeks) | Weekly Leaders (max 25%) | Average |
|---|---|---|---|---|---|---|---|---|---|
| At the next close after the first firing (as tested) | +21.9 | ||||||||
| 2 sessions after the first firing | +24.2 | ||||||||
| 5 sessions after the first firing | +26.0 | ||||||||
| Only after a second firing within 30 sessions | +20.8 | ||||||||
| Only if SPY closes below its 50-day average within 30 sessions | +10.8 | ||||||||
| Only if the McClellan oscillator turns negative within 30 sessions | +22.3 |
How much to move into T-bills
Out at the next close after the first firing, back 30 sessions after the last firing.
Swipe sideways to see all 8 strategies and the average.
| Rule | Core Momentum | Quality Momentum | Weekly Quality Momentum | Weekly Leaders | Weekly Full Stack (15) | Broad Momentum 30 | Quality Momentum (every 2 weeks) | Weekly Leaders (max 25%) | Average |
|---|---|---|---|---|---|---|---|---|---|
| 25% of the account | +13.6 | ||||||||
| 50% of the account (as tested) | +21.9 | ||||||||
| 75% of the account | +25.3 | ||||||||
| All of the account | +27.0 |
Every exit with every re-entry
Half the account. Each square is the average over the 8 strategies; rows are the ways to get out, columns the ways to get back in.
Swipe sideways to see every re-entry rule.
| Get out | 10 sessions | 20 sessions | 30 sessions | 45 sessions | 60 sessions | 90 sessions | 120 sessions | McClellan above zero | New lows under 1% | More highs than lows | SPY above 20-day | Average |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Out: Next close (as tested) | +5.4 | |||||||||||
| Out: 2 sessions later | +8.8 | |||||||||||
| Out: 5 sessions later | +10.4 | |||||||||||
| Out: After a second firing | +6.9 | |||||||||||
| Out: SPY below its 50-day | +3.3 | |||||||||||
| Out: McClellan negative | +6.0 |
Every episode, with the rule as tested
The day it first fired, the close at which half the account moved into T-bills, the close at which it came back, and how each strategy moved in between. Green: the strategy fell while half the money was safe, so the signal helped. Red: the strategy rose, so the signal cost return. Averaged over every rebuild day.
| First fired | Half out | Back in | Sessions | Firings | SPY | Core Momentum | Quality Momentum | Weekly Quality Momentum | Weekly Leaders | Weekly Full Stack (15) | Broad Momentum 30 | Quality Momentum (every 2 weeks) | Weekly Leaders (max 25%) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2017-11-07 | 2017-11-08 | 2017-12-29 | 35 | 2 | 3.5% (the signal cost return) | −1.1% (the signal helped) | −3.8% (the signal helped) | −1.8% (the signal helped) | −1.8% (the signal helped) | −2.0% (the signal helped) | 0.3% (the signal cost return) | −3.6% (the signal helped) | −2.1% (the signal helped) |
| 2018-08-15 | 2018-08-16 | 2018-11-13 | 62 | 5 | −3.8% (the signal helped) | −10.9% (the signal helped) | −14.1% (the signal helped) | −13.4% (the signal helped) | −14.2% (the signal helped) | −13.9% (the signal helped) | −8.2% (the signal helped) | −13.5% (the signal helped) | −14.2% (the signal helped) |
| 2019-07-22 | 2019-07-23 | 2019-09-16 | 38 | 2 | 0.0% | −4.2% (the signal helped) | −6.5% (the signal helped) | −7.7% (the signal helped) | −8.7% (the signal helped) | −7.9% (the signal helped) | −2.0% (the signal helped) | −7.0% (the signal helped) | −6.4% (the signal helped) |
| 2020-01-29 | 2020-01-30 | 2020-03-18 | 33 | 2 | −26.8% (the signal helped) | −28.6% (the signal helped) | −20.3% (the signal helped) | −24.8% (the signal helped) | −19.2% (the signal helped) | −22.3% (the signal helped) | −26.5% (the signal helped) | −21.0% (the signal helped) | −25.6% (the signal helped) |
| 2021-11-18 | 2021-11-19 | 2022-02-23 | 64 | 6 | −9.7% (the signal helped) | −23.0% (the signal helped) | −19.5% (the signal helped) | −21.2% (the signal helped) | −29.9% (the signal helped) | −24.7% (the signal helped) | −19.0% (the signal helped) | −18.9% (the signal helped) | −18.4% (the signal helped) |
| 2022-04-08 | 2022-04-11 | 2022-05-24 | 30 | 1 | −10.5% (the signal helped) | −10.1% (the signal helped) | −4.0% (the signal helped) | −4.4% (the signal helped) | −2.2% (the signal helped) | −4.6% (the signal helped) | −10.4% (the signal helped) | −3.6% (the signal helped) | −5.1% (the signal helped) |
| 2022-11-07 | 2022-11-08 | 2023-02-01 | 57 | 2 | 8.0% (the signal cost return) | −3.4% (the signal helped) | −4.6% (the signal helped) | −8.4% (the signal helped) | −3.9% (the signal helped) | −0.7% (the signal helped) | −0.6% (the signal helped) | −5.3% (the signal helped) | −10.2% (the signal helped) |
| 2023-04-12 | 2023-04-13 | 2023-07-12 | 61 | 15 | 8.3% (the signal cost return) | 12.6% (the signal cost return) | 28.2% (the signal cost return) | 23.6% (the signal cost return) | 37.1% (the signal cost return) | 33.3% (the signal cost return) | 7.7% (the signal cost return) | 24.9% (the signal cost return) | 23.0% (the signal cost return) |
| 2023-11-10 | 2023-11-13 | 2023-12-28 | 31 | 2 | 8.7% (the signal cost return) | 17.4% (the signal cost return) | 23.8% (the signal cost return) | 27.1% (the signal cost return) | 41.6% (the signal cost return) | 36.9% (the signal cost return) | 13.2% (the signal cost return) | 25.4% (the signal cost return) | 26.4% (the signal cost return) |
| 2024-06-18 | 2024-06-20 | 2024-08-21 | 43 | 2 | 2.8% (the signal cost return) | 1.0% (the signal cost return) | 3.3% (the signal cost return) | 5.6% (the signal cost return) | 6.3% (the signal cost return) | 5.8% (the signal cost return) | 0.5% (the signal cost return) | 4.7% (the signal cost return) | 6.4% (the signal cost return) |
| 2024-11-18 | 2024-11-19 | 2025-02-03 | 49 | 2 | 1.6% (the signal cost return) | 7.4% (the signal cost return) | 6.0% (the signal cost return) | 12.8% (the signal cost return) | 10.0% (the signal cost return) | 8.8% (the signal cost return) | 5.6% (the signal cost return) | 10.7% (the signal cost return) | 12.4% (the signal cost return) |
| 2025-02-07 | 2025-02-10 | 2025-03-28 | 33 | 4 | −7.9% (the signal helped) | −17.9% (the signal helped) | −23.4% (the signal helped) | −19.2% (the signal helped) | −19.0% (the signal helped) | −15.8% (the signal helped) | −14.1% (the signal helped) | −20.4% (the signal helped) | −19.4% (the signal helped) |
| 2025-07-31 | 2025-08-01 | 2025-09-15 | 30 | 1 | 6.3% (the signal cost return) | 11.7% (the signal cost return) | 23.4% (the signal cost return) | 28.4% (the signal cost return) | 29.2% (the signal cost return) | 28.4% (the signal cost return) | 8.3% (the signal cost return) | 25.7% (the signal cost return) | 28.4% (the signal cost return) |
| 2025-10-29 | 2025-10-30 | 2025-12-24 | 38 | 6 | 1.8% (the signal cost return) | −8.4% (the signal helped) | −9.3% (the signal helped) | −10.6% (the signal helped) | −17.3% (the signal helped) | −13.7% (the signal helped) | −2.7% (the signal helped) | −11.7% (the signal helped) | −9.6% (the signal helped) |
| 2026-02-03 | 2026-02-04 | 2026-03-27 | 36 | 2 | −7.3% (the signal helped) | −6.8% (the signal helped) | −1.0% (the signal helped) | 9.2% (the signal cost return) | 13.6% (the signal cost return) | 11.2% (the signal cost return) | −5.6% (the signal helped) | 6.9% (the signal cost return) | 7.9% (the signal cost return) |
| 2026-05-11 | 2026-05-12 | 2026-08-10 | 61 | 5 | 5.0% (the signal cost return) | −12.4% (the signal helped) | −30.5% (the signal helped) | −29.2% (the signal helped) | −29.8% (the signal helped) | −24.5% (the signal helped) | −4.8% (the signal helped) | −32.1% (the signal helped) | −19.1% (the signal helped) |
Chosen on 2017 to 2021, tested on 2022 to 2026
For each strategy, the version that made the most money in 2017 to 2021 among those that cut that half’s largest drop by 2 points or more, then run unchanged on 2022 to 2026. Total return, largest drop and Sharpe ratio in 2022 to 2026, without and with the signal.
| Strategy | Chosen on 2017 to 2021 | Total return | Largest drop, no signal | With the signal | Sharpe |
|---|---|---|---|---|---|
| Core Momentum | 5 sessions after the first firing; back 30 sessions after the last firing; 100% | 301% → 547% | −33.9% → | ▼ −21.5% (smaller than without the signal) | 1.08 → 1.76 |
| Quality Momentum | Only after a second firing within 30 sessions; back 30 sessions after the last firing; 100% | 880% → 1,353% | −46.0% → | ▼ −39.7% (smaller than without the signal) | 1.28 → 1.83 |
| Weekly Quality Momentum | Only after a second firing within 30 sessions; back 30 sessions after the last firing; 100% | 1,104% → 1,424% | −45.4% → | ▼ −42.4% (smaller than without the signal) | 1.36 → 1.80 |
| Weekly Leaders | Only after a second firing within 30 sessions; back 30 sessions after the last firing; 100% | 1,759% → 2,079% | −47.7% → | ▼ −45.9% (smaller than without the signal) | 1.41 → 1.80 |
| Weekly Full Stack (15) | Only after a second firing within 30 sessions; back 30 sessions after the last firing; 100% | 1,576% → 1,732% | −41.1% → | ▼ −35.2% (smaller than without the signal) | 1.51 → 1.92 |
| Broad Momentum 30 | 5 sessions after the first firing; back 30 sessions after the last firing; 100% | 173% → 289% | −27.2% → | ▼ −17.4% (smaller than without the signal) | 0.99 → 1.63 |
| Quality Momentum (every 2 weeks) | Only after a second firing within 30 sessions; back 30 sessions after the last firing; 100% | 1,079% → 1,465% | −45.3% → | ▼ −38.0% (smaller than without the signal) | 1.36 → 1.85 |
| Weekly Leaders (max 25%) | Only after a second firing within 30 sessions; back 30 sessions after the last firing; 100% | 929% → 1,050% | −39.4% → | ▲ −43.7% (bigger than without the signal) | 1.35 → 1.70 |
Random-date check: the rule as tested scored +21.9 points a year. The same spells in T-bills, slid to 200 sets of random dates, scored -6.2 at the median and +5.0 at best one time in twenty; the real signal beat 100% of them. Backtest results, November 2017 to September 2026, every rebuild day averaged, 0.10% on every move, traded at the close after the reading.
Every detection, and did each one pay?
Readings run from 2017-09-18 to 2026-10-09 (2,278 trading days): a 52-week high or low needs a full year of prices first. The signal fired on 59 days in 16 episodes. Many firing days fall inside one episode, and a firing while half the account is already in T-bills only extends the stay, so the rule moved money 16 times.
There is no single official definition of the Hindenburg Omen, so every tool counts differently. Versions built the same way fire about as often: the classic conditions on all US stocks 91 days, a published tracker 119 days over the same years, and the classic New York Stock Exchange version 88 days.
Of the 16 times the rule moved half the account into T-bills, 11 helped 6 or more of the 8 strategies, including every real fall in the period, and 4 were false alarms that cost money while the market kept rising (April to July 2023, November to December 2023, November 2024 to February 2025, August to September 2025). Over the whole record every strategy ended with more money and a smaller worst fall with the rule: avoiding the crashes compounds forward and outweighed the false alarms.
Each time the rule moved money: half in T-bills against staying fully invested
Points of the account, after the 0.10% cost of each move. Green: the move helped; red: it cost money.
| Half out to back in | SPY | Core Momentum | Quality Momentum | Weekly Quality Momentum | Weekly Leaders | Weekly Full Stack (15) | Broad Momentum 30 | Quality Momentum (every 2 weeks) | Weekly Leaders (max 25%) | Helped |
|---|---|---|---|---|---|---|---|---|---|---|
| 2017-11-15 to 2017-12-29 | +4.6% | −0.46 (cost money) | +1.97 (helped) | +0.44 (helped) | +0.74 (helped) | +1.52 (helped) | −1.28 (cost money) | +1.45 (helped) | +1.00 (helped) | 6 of 8 |
| 2018-08-23 to 2018-11-13 | -4.4% | +5.60 (helped) | +6.64 (helped) | +9.28 (helped) | +10.03 (helped) | +10.37 (helped) | +4.84 (helped) | +9.52 (helped) | +10.03 (helped) | 8 of 8 |
| 2019-07-30 to 2019-09-16 | -0.2% | +1.24 (helped) | +3.60 (helped) | +5.38 (helped) | +5.69 (helped) | +6.81 (helped) | +0.76 (helped) | +4.12 (helped) | +3.93 (helped) | 8 of 8 |
| 2020-02-06 to 2020-03-18 | -28.1% | +13.08 (helped) | +10.92 (helped) | +11.89 (helped) | +9.57 (helped) | +11.20 (helped) | +12.79 (helped) | +12.81 (helped) | +11.83 (helped) | 8 of 8 |
| 2021-11-29 to 2022-02-23 | -8.9% | +10.63 (helped) | +6.42 (helped) | +9.23 (helped) | +12.68 (helped) | +10.52 (helped) | +8.50 (helped) | +9.67 (helped) | +7.11 (helped) | 8 of 8 |
| 2022-04-19 to 2022-05-24 | -11.5% | +6.61 (helped) | +7.45 (helped) | +6.36 (helped) | +7.55 (helped) | +8.08 (helped) | +6.61 (helped) | +8.69 (helped) | +6.00 (helped) | 8 of 8 |
| 2022-11-15 to 2023-02-01 | +3.6% | +1.32 (helped) | +2.84 (helped) | +5.43 (helped) | +4.05 (helped) | +2.37 (helped) | +0.19 (helped) | +4.70 (helped) | +6.74 (helped) | 8 of 8 |
| 2023-04-20 to 2023-07-12 | +8.7% | −5.56 (cost money) | −17.99 (cost money) | −10.04 (cost money) | −16.94 (cost money) | −15.18 (cost money) | −3.75 (cost money) | −8.89 (cost money) | −9.81 (cost money) | 0 of 8 |
| 2023-11-20 to 2023-12-28 | +5.4% | −5.27 (cost money) | −6.49 (cost money) | −11.28 (cost money) | −20.52 (cost money) | −17.45 (cost money) | −4.04 (cost money) | −7.99 (cost money) | −9.11 (cost money) | 0 of 8 |
| 2024-06-27 to 2024-08-21 | +2.6% | +0.25 (helped) | +0.40 (helped) | −0.71 (cost money) | −0.19 (cost money) | +0.38 (helped) | +0.18 (helped) | +0.22 (helped) | −0.64 (cost money) | 5 of 8 |
| 2024-11-26 to 2025-02-03 | -0.1% | −2.03 (cost money) | −1.47 (cost money) | −4.41 (cost money) | −2.85 (cost money) | −2.13 (cost money) | −1.15 (cost money) | −4.99 (cost money) | −4.04 (cost money) | 0 of 8 |
| 2025-02-18 to 2025-03-28 | -8.9% | +12.01 (helped) | +15.27 (helped) | +14.40 (helped) | +17.23 (helped) | +14.75 (helped) | +8.99 (helped) | +15.28 (helped) | +14.89 (helped) | 8 of 8 |
| 2025-08-08 to 2025-09-15 | +3.7% | −3.04 (cost money) | −6.98 (cost money) | −9.10 (cost money) | −8.80 (cost money) | −8.69 (cost money) | −2.21 (cost money) | −8.35 (cost money) | −7.89 (cost money) | 0 of 8 |
| 2025-11-06 to 2025-12-24 | +3.3% | +1.97 (helped) | +2.70 (helped) | +1.44 (helped) | +5.07 (helped) | +4.80 (helped) | −0.56 (cost money) | +5.49 (helped) | +1.97 (helped) | 7 of 8 |
| 2026-02-11 to 2026-03-27 | -8.1% | +3.69 (helped) | +1.39 (helped) | +0.83 (helped) | −1.94 (cost money) | −0.99 (cost money) | +3.89 (helped) | +2.64 (helped) | +1.23 (helped) | 6 of 8 |
| 2026-05-19 to 2026-08-10 | +5.6% | +3.42 (helped) | +15.40 (helped) | +10.35 (helped) | +11.30 (helped) | +10.09 (helped) | +0.18 (helped) | +13.83 (helped) | +5.14 (helped) | 8 of 8 |
The whole record, with and without the rule
Return a year and worst fall, and $10,000 put in on November 1, 2017, to the close of 2026-10-09: the same calculation as each strategy’s page with the Hindenburg rule box ticked.
| Strategy | Without: a year / worst fall | With the rule | $10,000 without | $10,000 with |
|---|---|---|---|---|
| Core Momentum | 34.0% / −35.4% | 42.4% / −25.5% | $136,665 | $234,620 |
| Quality Momentum | 65.6% / −50.8% | 77.4% / −33.9% | $905,295 | $1,676,087 |
| Weekly Quality Momentum | 70.2% / −44.7% | 81.5% / −29.8% | $1,159,964 | $2,053,642 |
| Weekly Leaders | 94.8% / −47.2% | 108.2% / −32.2% | $3,866,901 | $6,997,143 |
| Weekly Full Stack (15) | 82.0% / −41.3% | 94.3% / −29.4% | $2,107,886 | $3,779,374 |
| Broad Momentum 30 | 23.3% / −32.5% | 29.1% / −21.9% | $64,725 | $97,774 |
| Quality Momentum (every 2 weeks) | 60.1% / −47.3% | 74.8% / −36.0% | $669,379 | $1,466,416 |
| Weekly Leaders (max 25%) | 65.1% / −42.2% | 75.5% / −34.2% | $883,197 | $1,518,529 |
Compared with the NYSE versions
- This site’s version: All US common stocks and ADRs over $5 (not over the counter); more than 2.5% at a new 52-week closing high and more than 2.5% at a new 52-week closing low on the same day; SPY above its 50-day average; more than 3.0% of companies worth over $300 million at new highs and more than 2.0% at new lows; at least 3 sectors (each with 20+ stocks) with more than 2.0% of their stocks at new highs and at least 3 with more than 2.0% at new lows.
- All US stocks, classic conditions: All US stocks over $5; new highs and new lows each at least 2.2%; new highs no more than twice new lows; the McClellan oscillator below zero; SPY above its 50-day average (the version breadth trackers publish).
- NYSE classic: Every issue listed on the New York Stock Exchange, including preferred shares, closed-end funds and ETFs; intraday 52-week highs and lows; each at least 2.2% of issues traded; new highs no more than twice new lows; the NYSE McClellan oscillator below zero; the market higher than 50 sessions earlier.
- NYSE classic, confirmed: NYSE classic days with a second NYSE classic day within 36 sessions.
- NYSE, 2.5% conditions: More than 2.5% new highs and new lows with SPY above its 50-day average, on NYSE-listed stocks only, without the $300 million and sector checks.
| Firing days by year | 2017 | 2018 | 2019 | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 | 2026 | Total |
|---|---|---|---|---|---|---|---|---|---|---|---|
| This site’s version | 2 | 5 | 2 | 2 | 4 | 5 | 17 | 4 | 11 | 7 | 59 |
| All US stocks, classic conditions | 0 | 10 | 3 | 4 | 6 | 5 | 12 | 21 | 18 | 12 | 91 |
| NYSE classic | 2 | 18 | 15 | 3 | 1 | 5 | 7 | 7 | 15 | 15 | 88 |
| NYSE classic, confirmed | 2 | 17 | 14 | 3 | 0 | 5 | 6 | 7 | 14 | 15 | 83 |
| NYSE, 2.5% conditions | 2 | 14 | 3 | 5 | 2 | 7 | 16 | 6 | 13 | 14 | 82 |
| The Trading Tools (published) | 7 | 17 | 11 | 4 | 10 | 3 | 5 | 27 | 16 | 19 | 119 |
Each version run through this site’s rule, on every strategy’s whole record. Helped and hurt: times the rule moved money that helped, or cost, 6 or more of the 8 strategies. The last two columns: the average change in return a year and in the worst fall, in points, with the rule against without it.
| Version | Firing days | Moves | Helped | Hurt | Days half out | More money | Return a year | Worst fall |
|---|---|---|---|---|---|---|---|---|
| This site’s version | 59 | 16 | 11 | 4 | 27% | 8 of 8 | +11.0 | +12.3 |
| All US stocks, classic conditions | 91 | 14 | 9 | 5 | 32% | 8 of 8 | +4.8 | +12.0 |
| NYSE classic | 88 | 21 | 12 | 8 | 34% | 6 of 8 | +0.7 | +6.0 |
| NYSE classic, confirmed | 83 | 16 | 10 | 5 | 28% | 8 of 8 | +2.5 | +5.3 |
| NYSE, 2.5% conditions | 82 | 20 | 10 | 7 | 34% | 6 of 8 | +2.5 | +12.4 |
This site’s all-stock version protected best. The classic NYSE version fires about as often but in different weeks and added little; confirmed NYSE clusters helped every strategy, but less.
Show every detection
Episodes (a new one after more than 30 trading days without a firing)
| First firing | Last firing | Firing days |
|---|---|---|
| 2017-11-07 | 2017-11-14 | 2 |
| 2018-08-15 | 2018-10-01 | 5 |
| 2019-07-22 | 2019-08-01 | 2 |
| 2020-01-29 | 2020-02-03 | 2 |
| 2021-11-18 | 2022-01-07 | 6 |
| 2022-04-08 | 2022-04-08 | 1 |
| 2022-11-07 | 2022-12-15 | 2 |
| 2023-04-12 | 2023-05-25 | 15 |
| 2023-11-10 | 2023-11-13 | 2 |
| 2024-06-18 | 2024-07-09 | 2 |
| 2024-11-18 | 2024-12-16 | 2 |
| 2025-02-07 | 2025-02-12 | 4 |
| 2025-07-31 | 2025-07-31 | 1 |
| 2025-10-29 | 2025-11-10 | 6 |
| 2026-02-03 | 2026-02-11 | 2 |
| 2026-05-11 | 2026-06-25 | 5 |
Every firing day
| Date | Stocks counted | New highs | New lows | Highs | Lows |
|---|---|---|---|---|---|
| 2017-11-07 | 3,946 | 222 | 99 | 5.63% | 2.51% |
| 2017-11-14 | 3,947 | 215 | 102 | 5.45% | 2.58% |
| 2018-08-15 | 4,008 | 125 | 145 | 3.12% | 3.62% |
| 2018-09-06 | 4,032 | 192 | 107 | 4.76% | 2.65% |
| 2018-09-11 | 4,021 | 211 | 103 | 5.25% | 2.56% |
| 2018-09-27 | 4,044 | 122 | 108 | 3.02% | 2.67% |
| 2018-10-01 | 4,051 | 136 | 129 | 3.36% | 3.18% |
| 2019-07-22 | 3,883 | 105 | 112 | 2.70% | 2.88% |
| 2019-08-01 | 3,881 | 105 | 160 | 2.71% | 4.12% |
| 2020-01-29 | 3,911 | 196 | 99 | 5.01% | 2.53% |
| 2020-02-03 | 3,894 | 140 | 98 | 3.60% | 2.52% |
| 2021-11-18 | 5,609 | 205 | 185 | 3.65% | 3.30% |
| 2021-11-19 | 5,605 | 149 | 199 | 2.66% | 3.55% |
| 2021-11-22 | 5,585 | 157 | 228 | 2.81% | 4.08% |
| 2021-11-23 | 5,580 | 173 | 211 | 3.10% | 3.78% |
| 2022-01-06 | 5,545 | 222 | 179 | 4.00% | 3.23% |
| 2022-01-07 | 5,544 | 228 | 185 | 4.11% | 3.34% |
| 2022-04-08 | 5,466 | 196 | 185 | 3.59% | 3.38% |
| 2022-11-07 | 4,950 | 355 | 137 | 7.17% | 2.77% |
| 2022-12-15 | 4,803 | 265 | 148 | 5.52% | 3.08% |
| 2023-04-12 | 4,497 | 267 | 135 | 5.94% | 3.00% |
| 2023-04-14 | 4,504 | 275 | 161 | 6.11% | 3.57% |
| 2023-04-18 | 4,500 | 328 | 149 | 7.29% | 3.31% |
| 2023-04-21 | 4,483 | 287 | 121 | 6.40% | 2.70% |
| 2023-04-24 | 4,477 | 282 | 118 | 6.30% | 2.64% |
| 2023-05-01 | 4,471 | 323 | 138 | 7.22% | 3.09% |
| 2023-05-03 | 4,453 | 282 | 274 | 6.33% | 6.15% |
| 2023-05-04 | 4,447 | 252 | 385 | 5.67% | 8.66% |
| 2023-05-08 | 4,468 | 285 | 126 | 6.38% | 2.82% |
| 2023-05-09 | 4,464 | 290 | 170 | 6.50% | 3.81% |
| 2023-05-10 | 4,467 | 312 | 165 | 6.98% | 3.69% |
| 2023-05-11 | 4,456 | 279 | 261 | 6.26% | 5.86% |
| 2023-05-12 | 4,454 | 264 | 194 | 5.93% | 4.36% |
| 2023-05-16 | 4,450 | 246 | 195 | 5.53% | 4.38% |
| 2023-05-25 | 4,441 | 251 | 132 | 5.65% | 2.97% |
| 2023-11-10 | 4,092 | 223 | 106 | 5.45% | 2.59% |
| 2023-11-13 | 4,084 | 189 | 113 | 4.63% | 2.77% |
| 2024-06-18 | 3,953 | 190 | 123 | 4.81% | 3.11% |
| 2024-07-09 | 3,955 | 163 | 123 | 4.12% | 3.11% |
| 2024-11-18 | 3,879 | 221 | 106 | 5.70% | 2.73% |
| 2024-12-16 | 3,898 | 203 | 119 | 5.21% | 3.05% |
| 2025-02-07 | 3,886 | 132 | 126 | 3.40% | 3.24% |
| 2025-02-10 | 3,888 | 190 | 99 | 4.89% | 2.55% |
| 2025-02-11 | 3,878 | 166 | 103 | 4.28% | 2.66% |
| 2025-02-12 | 3,883 | 171 | 132 | 4.40% | 3.40% |
| 2025-07-31 | 3,935 | 117 | 116 | 2.97% | 2.95% |
| 2025-10-29 | 4,076 | 198 | 186 | 4.86% | 4.56% |
| 2025-10-30 | 4,065 | 133 | 153 | 3.27% | 3.76% |
| 2025-11-03 | 4,062 | 152 | 137 | 3.74% | 3.37% |
| 2025-11-06 | 4,014 | 155 | 202 | 3.86% | 5.03% |
| 2025-11-07 | 4,023 | 181 | 104 | 4.50% | 2.59% |
| 2025-11-10 | 4,038 | 267 | 113 | 6.61% | 2.80% |
| 2026-02-03 | 4,098 | 473 | 183 | 11.54% | 4.47% |
| 2026-02-11 | 4,094 | 450 | 126 | 10.99% | 3.08% |
| 2026-05-11 | 4,241 | 250 | 142 | 5.89% | 3.35% |
| 2026-05-12 | 4,232 | 151 | 128 | 3.57% | 3.02% |
| 2026-05-13 | 4,226 | 210 | 165 | 4.97% | 3.90% |
| 2026-06-22 | 4,259 | 263 | 129 | 6.18% | 3.03% |
| 2026-06-25 | 4,241 | 398 | 108 | 9.38% | 2.55% |
Definitions and published counts:
- The Trading Tools: Hindenburg Omen tracker
- The Trading Tools: Hindenburg Omen manual and record
- StockCharts ChartSchool: Hindenburg Omen
- SentimenTrader: Ultimate guide to the Hindenburg Omen
- McClellan Financial: Hindenburgs are back
Summary: the best rule in these tests
| Signal | On the same day, more than 2.5% of US stocks over $5 close at a new 52-week high and more than 2.5% close at a new 52-week low, while SPY closes above its 50-day average. The split must also be broad: more than 3.0% of the companies worth over $300 million at new highs and more than 2.0% at new lows (market cap at the previous month’s last trading day), and at least 3 sectors with more than 2.0% of their stocks at new highs and at least 3 with more than 2.0% at new lows (counting sectors with 20 or more stocks that day). The day it fires is day 0; it is known after that day’s close. |
|---|---|
| Get out | Half of the account moves into T-bills at the close of day 6 after the first firing. |
| Get back in | The full position returns at the close of day 31 after the last firing. Each new firing restarts the count. |
Across the 8 strategies, this rule raised the return by 10.8 percentage points a year on average and made the largest drop 11.6 points smaller, an edge of +26.0 points a year over a fixed T-bill split. The drop was smaller in both halves of the period for all 8 strategies. Half the account was in T-bills on 28% of trading days, over 16 episodes.
Why the signal checks companies over $300 million and 3 sectors
Counting every US stock over $5 lets small companies, or one corner of the market, make a split on their own. In April 2024 that happened: the new highs came mostly from small companies, few larger companies were at new highs, the market kept rising, and moving half the account into T-bills cost every strategy money. On the first day of that warning, only 0.46% of companies worth over $300 million were at a new high.
The signal therefore also requires more than 3.0% of the companies worth over $300 million at new highs and more than 2.0% at new lows, and at least 3 sectors with more than 2.0% of their stocks at each end. Every result on this page uses it.
The re-entry 31 days after the last firing is the most reliable part of the rule. Waiting until day 6 to get out is less certain, as it rests on only 16 episodes. Moving more than half scored higher (75%: +31.4, 100%: +34.9) but costs more in every false alarm. Backtest results; past results do not predict future results.
Warning signals by type
Each group’s heat map uses the same scale. Below it, “Show the numbers as a table” gives each strategy’s largest drop and return a year with every signal. Moving averages are written as, for example, “200-day EMA”: the average price over the last 200 trading days, weighted toward the most recent days.
The market’s trend15 signals; green squares: 1 of 120
Rules based on the S&P 500 (or Nasdaq-100) price against its moving average, the most common timing signals. When the market is below its average, money moves to T-bills.
Swipe sideways to see all 8 strategies and the average.
| Signal | Core Momentum | Quality Momentum | Weekly Quality Momentum | Weekly Leaders | Weekly Full Stack (15) | Broad Momentum 30 | Quality Momentum (every 2 weeks) | Weekly Leaders (max 25%) | Average |
|---|---|---|---|---|---|---|---|---|---|
| 200-day EMA, only half to cash | -4.7 | ||||||||
| Below 200-day EMA AND volatility over 25% → out | -5.1 | ||||||||
| Market calm: SPY 20-day volatility under 30% | -7.3 | ||||||||
| SPY 10% off its high → out until back above 50-day EMA | -9.7 | ||||||||
| 50-day above 200-day (golden/death cross) | -11.7 | ||||||||
| SPY 200-day EMA AND QQQ 200-day EMA both below → out | -12.1 | ||||||||
| QQQ (Nasdaq-100) above its 200-day EMA | -14.1 | ||||||||
| 200-day EMA with a 2% band (out 2% below, back 2% above) | -14.1 | ||||||||
| Breadth: over 40% of stocks above their 200-day | -14.3 | ||||||||
| SPY above its 200-day EMA | -14.3 | ||||||||
| SPY above its 100-day EMA | -14.8 | ||||||||
| SPY above its 200-day simple average | -15.2 | ||||||||
| 200-day EMA read once a month (month-end) | -17.3 | ||||||||
| 10-month average, month-end (Faber 2007) | -21.8 | ||||||||
| SPY above its 50-day EMA | -30.3 |
Show the numbers as a table
Largest drop, by strategy
| Signal | Core Momentum | Quality Momentum | Weekly Quality Momentum | Weekly Leaders | Weekly Full Stack (15) | Broad Momentum 30 | Quality Momentum (every 2 weeks) | Weekly Leaders (max 25%) |
|---|---|---|---|---|---|---|---|---|
| No signal | −36.3% | −48.5% | −46.5% | −49.0% | −45.6% | −33.5% | −48.1% | −45.9% |
| 200-day EMA, only half to cash | ▼ −35.6% (smaller than without the signal) | ▼ −48.4% (smaller than without the signal) | ▼ −46.3% (smaller than without the signal) | ▼ −48.3% (smaller than without the signal) | ▼ −42.6% (smaller than without the signal) | ▼ −29.3% (smaller than without the signal) | ▼ −47.6% (smaller than without the signal) | ▼ −43.9% (smaller than without the signal) |
| Below 200-day EMA AND volatility over 25% → out | ▼ −36.0% (smaller than without the signal) | ▼ −48.4% (smaller than without the signal) | ▼ −46.1% (smaller than without the signal) | ▼ −48.1% (smaller than without the signal) | ▼ −40.5% (smaller than without the signal) | ▼ −29.3% (smaller than without the signal) | ▼ −47.3% (smaller than without the signal) | ▼ −42.7% (smaller than without the signal) |
| Market calm: SPY 20-day volatility under 30% | −36.3% (about the same) | ▲ −50.8% (bigger than without the signal) | −46.5% (about the same) | ▼ −48.6% (smaller than without the signal) | ▼ −41.5% (smaller than without the signal) | ▼ −30.8% (smaller than without the signal) | ▲ −48.5% (bigger than without the signal) | ▲ −47.3% (bigger than without the signal) |
| SPY 10% off its high → out until back above 50-day EMA | ▲ −36.9% (bigger than without the signal) | ▲ −53.2% (bigger than without the signal) | ▲ −47.7% (bigger than without the signal) | ▲ −50.8% (bigger than without the signal) | ▼ −42.2% (smaller than without the signal) | ▼ −30.4% (smaller than without the signal) | ▲ −52.0% (bigger than without the signal) | ▲ −47.4% (bigger than without the signal) |
| 50-day above 200-day (golden/death cross) | ▼ −36.1% (smaller than without the signal) | ▼ −46.8% (smaller than without the signal) | ▼ −45.5% (smaller than without the signal) | ▼ −48.9% (smaller than without the signal) | −45.6% (about the same) | −33.5% (about the same) | ▼ −46.6% (smaller than without the signal) | ▼ −42.2% (smaller than without the signal) |
| SPY 200-day EMA AND QQQ 200-day EMA both below → out | ▲ −37.4% (bigger than without the signal) | ▲ −51.1% (bigger than without the signal) | ▲ −46.8% (bigger than without the signal) | ▲ −51.1% (bigger than without the signal) | ▲ −45.9% (bigger than without the signal) | ▼ −31.5% (smaller than without the signal) | ▲ −49.4% (bigger than without the signal) | ▲ −46.2% (bigger than without the signal) |
| QQQ (Nasdaq-100) above its 200-day EMA | ▲ −36.8% (bigger than without the signal) | ▲ −52.7% (bigger than without the signal) | ▲ −48.8% (bigger than without the signal) | ▲ −55.1% (bigger than without the signal) | ▲ −46.7% (bigger than without the signal) | ▼ −28.9% (smaller than without the signal) | ▲ −51.7% (bigger than without the signal) | ▲ −48.9% (bigger than without the signal) |
| 200-day EMA with a 2% band (out 2% below, back 2% above) | ▲ −39.5% (bigger than without the signal) | ▲ −50.9% (bigger than without the signal) | ▼ −46.1% (smaller than without the signal) | ▼ −48.0% (smaller than without the signal) | ▼ −43.0% (smaller than without the signal) | ▲ −34.5% (bigger than without the signal) | ▲ −48.2% (bigger than without the signal) | ▼ −43.9% (smaller than without the signal) |
| Breadth: over 40% of stocks above their 200-day | ▲ −39.5% (bigger than without the signal) | ▲ −53.6% (bigger than without the signal) | ▲ −48.3% (bigger than without the signal) | ▲ −51.1% (bigger than without the signal) | ▼ −41.6% (smaller than without the signal) | ▼ −29.6% (smaller than without the signal) | ▲ −52.4% (bigger than without the signal) | ▲ −47.6% (bigger than without the signal) |
| SPY above its 200-day EMA | ▲ −37.4% (bigger than without the signal) | ▲ −49.6% (bigger than without the signal) | ▼ −46.4% (smaller than without the signal) | ▲ −50.5% (bigger than without the signal) | ▼ −45.5% (smaller than without the signal) | ▼ −32.6% (smaller than without the signal) | ▲ −48.2% (bigger than without the signal) | ▼ −44.8% (smaller than without the signal) |
| SPY above its 100-day EMA | ▼ −33.7% (smaller than without the signal) | ▲ −50.6% (bigger than without the signal) | ▲ −47.6% (bigger than without the signal) | ▲ −50.9% (bigger than without the signal) | ▼ −40.7% (smaller than without the signal) | ▼ −26.4% (smaller than without the signal) | ▲ −50.3% (bigger than without the signal) | ▲ −48.2% (bigger than without the signal) |
| SPY above its 200-day simple average | ▼ −34.8% (smaller than without the signal) | ▲ −51.3% (bigger than without the signal) | ▲ −48.4% (bigger than without the signal) | ▲ −55.3% (bigger than without the signal) | ▲ −45.9% (bigger than without the signal) | ▼ −29.2% (smaller than without the signal) | ▲ −50.9% (bigger than without the signal) | ▲ −47.8% (bigger than without the signal) |
| 200-day EMA read once a month (month-end) | ▲ −37.3% (bigger than without the signal) | ▲ −51.8% (bigger than without the signal) | ▼ −46.4% (smaller than without the signal) | ▼ −48.7% (smaller than without the signal) | ▼ −40.6% (smaller than without the signal) | ▼ −32.9% (smaller than without the signal) | ▲ −48.6% (bigger than without the signal) | ▼ −45.5% (smaller than without the signal) |
| 10-month average, month-end (Faber 2007) | ▲ −38.7% (bigger than without the signal) | ▲ −53.5% (bigger than without the signal) | ▲ −47.2% (bigger than without the signal) | ▲ −50.9% (bigger than without the signal) | ▼ −43.0% (smaller than without the signal) | ▼ −33.4% (smaller than without the signal) | ▲ −50.1% (bigger than without the signal) | ▲ −47.8% (bigger than without the signal) |
| SPY above its 50-day EMA | ▲ −38.7% (bigger than without the signal) | ▲ −57.6% (bigger than without the signal) | ▲ −55.5% (bigger than without the signal) | ▲ −59.3% (bigger than without the signal) | ▲ −47.2% (bigger than without the signal) | ▼ −29.6% (smaller than without the signal) | ▲ −58.0% (bigger than without the signal) | ▲ −57.8% (bigger than without the signal) |
Return a year, by strategy
| Signal | Core Momentum | Quality Momentum | Weekly Quality Momentum | Weekly Leaders | Weekly Full Stack (15) | Broad Momentum 30 | Quality Momentum (every 2 weeks) | Weekly Leaders (max 25%) |
|---|---|---|---|---|---|---|---|---|
| No signal | 29.4% | 53.4% | 60.2% | 77.8% | 72.9% | 22.4% | 58.6% | 56.6% |
| 200-day EMA, only half to cash | ▼ 24.0% (lower than without the signal) | ▼ 46.2% (lower than without the signal) | ▼ 54.0% (lower than without the signal) | ▼ 70.4% (lower than without the signal) | ▼ 65.5% (lower than without the signal) | ▼ 18.0% (lower than without the signal) | ▼ 51.7% (lower than without the signal) | ▼ 50.6% (lower than without the signal) |
| Below 200-day EMA AND volatility over 25% → out | ▼ 22.5% (lower than without the signal) | ▼ 44.6% (lower than without the signal) | ▼ 52.8% (lower than without the signal) | ▼ 68.6% (lower than without the signal) | ▼ 64.5% (lower than without the signal) | ▼ 17.5% (lower than without the signal) | ▼ 50.5% (lower than without the signal) | ▼ 49.8% (lower than without the signal) |
| Market calm: SPY 20-day volatility under 30% | ▼ 22.4% (lower than without the signal) | ▼ 44.2% (lower than without the signal) | ▼ 52.4% (lower than without the signal) | ▼ 67.7% (lower than without the signal) | ▼ 64.1% (lower than without the signal) | ▼ 17.6% (lower than without the signal) | ▼ 50.0% (lower than without the signal) | ▼ 49.2% (lower than without the signal) |
| SPY 10% off its high → out until back above 50-day EMA | ▼ 22.3% (lower than without the signal) | ▼ 42.9% (lower than without the signal) | ▼ 52.5% (lower than without the signal) | ▼ 67.9% (lower than without the signal) | ▼ 62.7% (lower than without the signal) | ▼ 17.1% (lower than without the signal) | ▼ 48.4% (lower than without the signal) | ▼ 49.6% (lower than without the signal) |
| 50-day above 200-day (golden/death cross) | ▼ 19.4% (lower than without the signal) | ▼ 39.2% (lower than without the signal) | ▼ 47.3% (lower than without the signal) | ▼ 60.4% (lower than without the signal) | ▼ 56.8% (lower than without the signal) | ▼ 14.8% (lower than without the signal) | ▼ 45.2% (lower than without the signal) | ▼ 44.9% (lower than without the signal) |
| SPY 200-day EMA AND QQQ 200-day EMA both below → out | ▼ 21.1% (lower than without the signal) | ▼ 41.2% (lower than without the signal) | ▼ 49.4% (lower than without the signal) | ▼ 63.8% (lower than without the signal) | ▼ 59.3% (lower than without the signal) | ▼ 15.7% (lower than without the signal) | ▼ 46.8% (lower than without the signal) | ▼ 46.5% (lower than without the signal) |
| QQQ (Nasdaq-100) above its 200-day EMA | ▼ 21.8% (lower than without the signal) | ▼ 41.7% (lower than without the signal) | ▼ 49.5% (lower than without the signal) | ▼ 63.7% (lower than without the signal) | ▼ 59.2% (lower than without the signal) | ▼ 16.5% (lower than without the signal) | ▼ 46.9% (lower than without the signal) | ▼ 46.2% (lower than without the signal) |
| 200-day EMA with a 2% band (out 2% below, back 2% above) | ▼ 17.1% (lower than without the signal) | ▼ 36.5% (lower than without the signal) | ▼ 46.0% (lower than without the signal) | ▼ 61.0% (lower than without the signal) | ▼ 56.4% (lower than without the signal) | ▼ 12.6% (lower than without the signal) | ▼ 42.5% (lower than without the signal) | ▼ 42.5% (lower than without the signal) |
| Breadth: over 40% of stocks above their 200-day | ▼ 19.5% (lower than without the signal) | ▼ 39.3% (lower than without the signal) | ▼ 47.2% (lower than without the signal) | ▼ 61.1% (lower than without the signal) | ▼ 58.0% (lower than without the signal) | ▼ 15.6% (lower than without the signal) | ▼ 44.0% (lower than without the signal) | ▼ 44.5% (lower than without the signal) |
| SPY above its 200-day EMA | ▼ 18.1% (lower than without the signal) | ▼ 37.8% (lower than without the signal) | ▼ 46.4% (lower than without the signal) | ▼ 60.8% (lower than without the signal) | ▼ 56.5% (lower than without the signal) | ▼ 13.2% (lower than without the signal) | ▼ 43.4% (lower than without the signal) | ▼ 43.3% (lower than without the signal) |
| SPY above its 100-day EMA | ▼ 17.9% (lower than without the signal) | ▼ 37.4% (lower than without the signal) | ▼ 45.0% (lower than without the signal) | ▼ 57.7% (lower than without the signal) | ▼ 54.9% (lower than without the signal) | ▼ 13.3% (lower than without the signal) | ▼ 42.3% (lower than without the signal) | ▼ 42.1% (lower than without the signal) |
| SPY above its 200-day simple average | ▼ 20.6% (lower than without the signal) | ▼ 40.3% (lower than without the signal) | ▼ 47.3% (lower than without the signal) | ▼ 60.3% (lower than without the signal) | ▼ 56.5% (lower than without the signal) | ▼ 15.4% (lower than without the signal) | ▼ 44.8% (lower than without the signal) | ▼ 44.9% (lower than without the signal) |
| 200-day EMA read once a month (month-end) | ▼ 16.3% (lower than without the signal) | ▼ 34.1% (lower than without the signal) | ▼ 41.0% (lower than without the signal) | ▼ 54.0% (lower than without the signal) | ▼ 50.7% (lower than without the signal) | ▼ 12.2% (lower than without the signal) | ▼ 39.2% (lower than without the signal) | ▼ 39.4% (lower than without the signal) |
| 10-month average, month-end (Faber 2007) | ▼ 15.3% (lower than without the signal) | ▼ 32.0% (lower than without the signal) | ▼ 38.6% (lower than without the signal) | ▼ 50.0% (lower than without the signal) | ▼ 47.0% (lower than without the signal) | ▼ 11.6% (lower than without the signal) | ▼ 36.9% (lower than without the signal) | ▼ 37.2% (lower than without the signal) |
| SPY above its 50-day EMA | ▼ 16.0% (lower than without the signal) | ▼ 31.9% (lower than without the signal) | ▼ 35.7% (lower than without the signal) | ▼ 48.1% (lower than without the signal) | ▼ 47.1% (lower than without the signal) | ▼ 11.7% (lower than without the signal) | ▼ 34.3% (lower than without the signal) | ▼ 35.0% (lower than without the signal) |
The strategy’s own trend and drops5 signals; green squares: 0 of 40
Rules based on the strategy’s own value: step aside when it falls below its own moving average, or after a set fall from its high.
Swipe sideways to see all 8 strategies and the average.
| Signal | Core Momentum | Quality Momentum | Weekly Quality Momentum | Weekly Leaders | Weekly Full Stack (15) | Broad Momentum 30 | Quality Momentum (every 2 weeks) | Weekly Leaders (max 25%) | Average |
|---|---|---|---|---|---|---|---|---|---|
| Own 20% off its high → half out until back above 50-day EMA | -9.0 | ||||||||
| Own curve above its 50-day EMA | -22.0 | ||||||||
| Own curve above its 200-day EMA | -24.9 | ||||||||
| Own curve above its 100-day EMA | -29.5 | ||||||||
| Own 25% off its high → out until back above 50-day EMA | -32.7 |
Show the numbers as a table
Largest drop, by strategy
| Signal | Core Momentum | Quality Momentum | Weekly Quality Momentum | Weekly Leaders | Weekly Full Stack (15) | Broad Momentum 30 | Quality Momentum (every 2 weeks) | Weekly Leaders (max 25%) |
|---|---|---|---|---|---|---|---|---|
| No signal | −36.3% | −48.5% | −46.5% | −49.0% | −45.6% | −33.5% | −48.1% | −45.9% |
| Own 20% off its high → half out until back above 50-day EMA | ▲ −37.7% (bigger than without the signal) | ▲ −49.5% (bigger than without the signal) | ▲ −48.4% (bigger than without the signal) | ▼ −48.9% (smaller than without the signal) | ▼ −42.5% (smaller than without the signal) | ▲ −33.8% (bigger than without the signal) | ▼ −47.5% (smaller than without the signal) | ▲ −48.8% (bigger than without the signal) |
| Own curve above its 50-day EMA | ▲ −37.1% (bigger than without the signal) | ▲ −51.9% (bigger than without the signal) | ▲ −51.8% (bigger than without the signal) | ▲ −50.1% (bigger than without the signal) | ▲ −47.3% (bigger than without the signal) | ▲ −37.6% (bigger than without the signal) | ▼ −47.7% (smaller than without the signal) | ▲ −54.4% (bigger than without the signal) |
| Own curve above its 200-day EMA | ▲ −38.0% (bigger than without the signal) | ▲ −59.7% (bigger than without the signal) | ▲ −53.2% (bigger than without the signal) | ▲ −55.2% (bigger than without the signal) | ▲ −49.8% (bigger than without the signal) | ▲ −34.0% (bigger than without the signal) | ▲ −56.2% (bigger than without the signal) | ▲ −53.9% (bigger than without the signal) |
| Own curve above its 100-day EMA | ▲ −45.2% (bigger than without the signal) | ▲ −59.1% (bigger than without the signal) | ▲ −55.0% (bigger than without the signal) | ▲ −52.0% (bigger than without the signal) | ▼ −44.2% (smaller than without the signal) | ▲ −40.2% (bigger than without the signal) | ▲ −59.8% (bigger than without the signal) | ▲ −54.3% (bigger than without the signal) |
| Own 25% off its high → out until back above 50-day EMA | ▲ −49.5% (bigger than without the signal) | ▲ −65.4% (bigger than without the signal) | ▲ −67.0% (bigger than without the signal) | ▲ −59.0% (bigger than without the signal) | ▼ −41.8% (smaller than without the signal) | ▲ −35.3% (bigger than without the signal) | ▲ −64.8% (bigger than without the signal) | ▲ −64.6% (bigger than without the signal) |
Return a year, by strategy
| Signal | Core Momentum | Quality Momentum | Weekly Quality Momentum | Weekly Leaders | Weekly Full Stack (15) | Broad Momentum 30 | Quality Momentum (every 2 weeks) | Weekly Leaders (max 25%) |
|---|---|---|---|---|---|---|---|---|
| No signal | 29.4% | 53.4% | 60.2% | 77.8% | 72.9% | 22.4% | 58.6% | 56.6% |
| Own 20% off its high → half out until back above 50-day EMA | ▼ 23.0% (lower than without the signal) | ▼ 44.6% (lower than without the signal) | ▼ 50.3% (lower than without the signal) | ▼ 64.3% (lower than without the signal) | ▼ 62.4% (lower than without the signal) | ▼ 18.1% (lower than without the signal) | ▼ 49.8% (lower than without the signal) | ▼ 48.5% (lower than without the signal) |
| Own curve above its 50-day EMA | ▼ 16.1% (lower than without the signal) | ▼ 38.0% (lower than without the signal) | ▼ 39.3% (lower than without the signal) | ▼ 51.2% (lower than without the signal) | ▼ 48.7% (lower than without the signal) | ▼ 11.7% (lower than without the signal) | ▼ 42.0% (lower than without the signal) | ▼ 37.2% (lower than without the signal) |
| Own curve above its 200-day EMA | ▼ 19.1% (lower than without the signal) | ▼ 33.2% (lower than without the signal) | ▼ 40.6% (lower than without the signal) | ▼ 54.6% (lower than without the signal) | ▼ 54.2% (lower than without the signal) | ▼ 14.6% (lower than without the signal) | ▼ 37.6% (lower than without the signal) | ▼ 40.9% (lower than without the signal) |
| Own curve above its 100-day EMA | ▼ 12.4% (lower than without the signal) | ▼ 32.6% (lower than without the signal) | ▼ 36.6% (lower than without the signal) | ▼ 49.5% (lower than without the signal) | ▼ 47.7% (lower than without the signal) | ▼ 9.5% (lower than without the signal) | ▼ 34.5% (lower than without the signal) | ▼ 34.8% (lower than without the signal) |
| Own 25% off its high → out until back above 50-day EMA | ▼ 18.0% (lower than without the signal) | ▼ 34.9% (lower than without the signal) | ▼ 37.5% (lower than without the signal) | ▼ 50.6% (lower than without the signal) | ▼ 54.5% (lower than without the signal) | ▼ 14.7% (lower than without the signal) | ▼ 35.9% (lower than without the signal) | ▼ 37.2% (lower than without the signal) |
Volatility targets6 signals; green squares: 23 of 48
Hold less of the strategy when its recent day-to-day swings are large, so the portfolio’s swings stay near a set level.
Swipe sideways to see all 8 strategies and the average.
| Signal | Core Momentum | Quality Momentum | Weekly Quality Momentum | Weekly Leaders | Weekly Full Stack (15) | Broad Momentum 30 | Quality Momentum (every 2 weeks) | Weekly Leaders (max 25%) | Average |
|---|---|---|---|---|---|---|---|---|---|
| Volatility target 60%, checked weekly, in 25% steps | +2.9 | ||||||||
| Volatility target 40% (20-day, never above 100%) | +1.8 | ||||||||
| Volatility target 50%, checked weekly, in 25% steps | +0.9 | ||||||||
| Volatility target 40%, checked weekly, in 25% steps | -0.2 | ||||||||
| Volatility target 40% (60-day, never above 100%) | -0.3 | ||||||||
| Volatility target 30% (60-day, never above 100%) | -2.5 |
Show the numbers as a table
Largest drop, by strategy
| Signal | Core Momentum | Quality Momentum | Weekly Quality Momentum | Weekly Leaders | Weekly Full Stack (15) | Broad Momentum 30 | Quality Momentum (every 2 weeks) | Weekly Leaders (max 25%) |
|---|---|---|---|---|---|---|---|---|
| No signal | −36.3% | −48.5% | −46.5% | −49.0% | −45.6% | −33.5% | −48.1% | −45.9% |
| Volatility target 60%, checked weekly, in 25% steps | ▼ −35.4% (smaller than without the signal) | ▼ −43.2% (smaller than without the signal) | ▼ −39.7% (smaller than without the signal) | ▼ −45.6% (smaller than without the signal) | ▼ −37.3% (smaller than without the signal) | ▼ −30.5% (smaller than without the signal) | ▼ −42.1% (smaller than without the signal) | ▼ −42.6% (smaller than without the signal) |
| Volatility target 40% (20-day, never above 100%) | ▼ −34.7% (smaller than without the signal) | ▼ −41.4% (smaller than without the signal) | ▼ −38.8% (smaller than without the signal) | ▼ −42.3% (smaller than without the signal) | ▼ −36.3% (smaller than without the signal) | ▼ −29.0% (smaller than without the signal) | ▼ −39.9% (smaller than without the signal) | ▼ −41.7% (smaller than without the signal) |
| Volatility target 50%, checked weekly, in 25% steps | ▼ −34.7% (smaller than without the signal) | ▼ −42.6% (smaller than without the signal) | ▼ −41.3% (smaller than without the signal) | ▼ −43.0% (smaller than without the signal) | ▼ −36.8% (smaller than without the signal) | ▼ −30.4% (smaller than without the signal) | ▼ −41.8% (smaller than without the signal) | ▼ −44.0% (smaller than without the signal) |
| Volatility target 40%, checked weekly, in 25% steps | ▼ −34.8% (smaller than without the signal) | ▼ −38.3% (smaller than without the signal) | ▼ −36.5% (smaller than without the signal) | ▼ −42.8% (smaller than without the signal) | ▼ −35.2% (smaller than without the signal) | ▼ −28.9% (smaller than without the signal) | ▼ −37.1% (smaller than without the signal) | ▼ −40.5% (smaller than without the signal) |
| Volatility target 40% (60-day, never above 100%) | ▼ −35.6% (smaller than without the signal) | ▼ −41.3% (smaller than without the signal) | ▼ −38.3% (smaller than without the signal) | ▼ −41.8% (smaller than without the signal) | ▼ −36.7% (smaller than without the signal) | ▼ −32.8% (smaller than without the signal) | ▼ −40.1% (smaller than without the signal) | ▼ −40.4% (smaller than without the signal) |
| Volatility target 30% (60-day, never above 100%) | ▼ −34.1% (smaller than without the signal) | ▼ −36.9% (smaller than without the signal) | ▼ −34.0% (smaller than without the signal) | ▼ −35.7% (smaller than without the signal) | ▼ −34.3% (smaller than without the signal) | ▼ −30.7% (smaller than without the signal) | ▼ −35.1% (smaller than without the signal) | ▼ −35.6% (smaller than without the signal) |
Return a year, by strategy
| Signal | Core Momentum | Quality Momentum | Weekly Quality Momentum | Weekly Leaders | Weekly Full Stack (15) | Broad Momentum 30 | Quality Momentum (every 2 weeks) | Weekly Leaders (max 25%) |
|---|---|---|---|---|---|---|---|---|
| No signal | 29.4% | 53.4% | 60.2% | 77.8% | 72.9% | 22.4% | 58.6% | 56.6% |
| Volatility target 60%, checked weekly, in 25% steps | ▼ 27.0% (lower than without the signal) | ▼ 50.6% (lower than without the signal) | ▼ 54.8% (lower than without the signal) | ▼ 72.0% (lower than without the signal) | ▼ 70.5% (lower than without the signal) | ▼ 21.1% (lower than without the signal) | ▼ 54.3% (lower than without the signal) | ▼ 53.4% (lower than without the signal) |
| Volatility target 40% (20-day, never above 100%) | ▼ 27.1% (lower than without the signal) | ▼ 47.8% (lower than without the signal) | ▼ 52.3% (lower than without the signal) | ▼ 63.9% (lower than without the signal) | ▼ 64.4% (lower than without the signal) | ▼ 20.9% (lower than without the signal) | ▼ 52.4% (lower than without the signal) | ▼ 49.5% (lower than without the signal) |
| Volatility target 50%, checked weekly, in 25% steps | ▼ 27.0% (lower than without the signal) | ▼ 48.4% (lower than without the signal) | ▼ 52.0% (lower than without the signal) | ▼ 69.1% (lower than without the signal) | ▼ 64.6% (lower than without the signal) | ▼ 20.3% (lower than without the signal) | ▼ 52.7% (lower than without the signal) | ▼ 49.9% (lower than without the signal) |
| Volatility target 40%, checked weekly, in 25% steps | ▼ 25.7% (lower than without the signal) | ▼ 46.2% (lower than without the signal) | ▼ 49.3% (lower than without the signal) | ▼ 54.5% (lower than without the signal) | ▼ 58.4% (lower than without the signal) | ▼ 20.2% (lower than without the signal) | ▼ 49.5% (lower than without the signal) | ▼ 45.2% (lower than without the signal) |
| Volatility target 40% (60-day, never above 100%) | ▼ 25.8% (lower than without the signal) | ▼ 45.9% (lower than without the signal) | ▼ 49.5% (lower than without the signal) | ▼ 62.6% (lower than without the signal) | ▼ 62.0% (lower than without the signal) | ▼ 20.5% (lower than without the signal) | ▼ 49.5% (lower than without the signal) | ▼ 46.5% (lower than without the signal) |
| Volatility target 30% (60-day, never above 100%) | ▼ 22.4% (lower than without the signal) | ▼ 39.4% (lower than without the signal) | ▼ 42.4% (lower than without the signal) | ▼ 47.9% (lower than without the signal) | ▼ 50.1% (lower than without the signal) | ▼ 19.0% (lower than without the signal) | ▼ 42.5% (lower than without the signal) | ▼ 39.3% (lower than without the signal) |
Market breadth: all US stocks10 signals; green squares: 10 of 80
Measures of how many stocks are rising or falling, built from every US stock over $5: the advance/decline line, the McClellan oscillator, new highs against new lows, and the share of stocks above their moving averages. It includes a version of the Hindenburg Omen, a well-known warning introduced by Jim Miekka in the 1990s: a split market, in which many stocks make new 52-week highs and many make new 52-week lows at the same time while the index is still rising. Here it fires when, on any day in the last 30 sessions, more than 2.5% of US stocks over $5 made a new high and more than 2.5% a new low, with SPY above its 50-day average, and moves half the account into T-bills for 30 trading days.
Swipe sideways to see all 8 strategies and the average.
| Signal | Core Momentum | Quality Momentum | Weekly Quality Momentum | Weekly Leaders | Weekly Full Stack (15) | Broad Momentum 30 | Quality Momentum (every 2 weeks) | Weekly Leaders (max 25%) | Average |
|---|---|---|---|---|---|---|---|---|---|
| Hindenburg-style split: this site’s signal → half out for 30 days (all US stocks) | +22.6 | ||||||||
| More new lows than new highs (10-day) → out | -5.6 | ||||||||
| McClellan oscillator: out below -50, back above 0 | -9.6 | ||||||||
| A/D line above its 200-day EMA | -10.4 | ||||||||
| A/D line above its 50-day EMA | -11.5 | ||||||||
| High-Low index: out below 30, back above 50 | -17.6 | ||||||||
| Share above 50-day: out below 30%, back above 50% | -19.2 | ||||||||
| Share above 200-day below 40% → out; back on a Zweig thrust or above 50% | -19.7 | ||||||||
| Share above 200-day: out below 40%, back above 50% | -20.7 | ||||||||
| McClellan summation index rising (above its 20-day avg) | -39.3 |
Show the numbers as a table
Largest drop, by strategy
| Signal | Core Momentum | Quality Momentum | Weekly Quality Momentum | Weekly Leaders | Weekly Full Stack (15) | Broad Momentum 30 | Quality Momentum (every 2 weeks) | Weekly Leaders (max 25%) |
|---|---|---|---|---|---|---|---|---|
| No signal | −36.3% | −48.5% | −46.5% | −49.0% | −45.6% | −33.5% | −48.1% | −45.9% |
| Hindenburg-style split: this site’s signal → half out for 30 days (all US stocks) | ▼ −28.0% (smaller than without the signal) | ▼ −38.2% (smaller than without the signal) | ▼ −34.4% (smaller than without the signal) | ▼ −36.0% (smaller than without the signal) | ▼ −31.4% (smaller than without the signal) | ▼ −23.3% (smaller than without the signal) | ▼ −37.3% (smaller than without the signal) | ▼ −36.4% (smaller than without the signal) |
| More new lows than new highs (10-day) → out | ▲ −36.5% (bigger than without the signal) | ▲ −55.0% (bigger than without the signal) | ▲ −49.8% (bigger than without the signal) | ▲ −51.7% (bigger than without the signal) | ▼ −43.5% (smaller than without the signal) | ▼ −30.4% (smaller than without the signal) | ▲ −53.6% (bigger than without the signal) | ▲ −52.8% (bigger than without the signal) |
| McClellan oscillator: out below -50, back above 0 | ▼ −34.6% (smaller than without the signal) | ▼ −47.8% (smaller than without the signal) | ▼ −45.7% (smaller than without the signal) | ▼ −47.4% (smaller than without the signal) | ▼ −40.8% (smaller than without the signal) | ▼ −29.3% (smaller than without the signal) | ▼ −46.4% (smaller than without the signal) | ▼ −43.5% (smaller than without the signal) |
| A/D line above its 200-day EMA | ▲ −36.8% (bigger than without the signal) | ▲ −50.4% (bigger than without the signal) | ▲ −47.0% (bigger than without the signal) | ▲ −51.5% (bigger than without the signal) | ▼ −43.7% (smaller than without the signal) | ▼ −29.1% (smaller than without the signal) | ▲ −50.5% (bigger than without the signal) | ▲ −47.3% (bigger than without the signal) |
| A/D line above its 50-day EMA | ▼ −36.1% (smaller than without the signal) | ▲ −52.0% (bigger than without the signal) | ▲ −47.7% (bigger than without the signal) | ▼ −48.0% (smaller than without the signal) | ▼ −40.5% (smaller than without the signal) | ▼ −30.3% (smaller than without the signal) | ▲ −49.6% (bigger than without the signal) | ▲ −48.0% (bigger than without the signal) |
| High-Low index: out below 30, back above 50 | ▲ −45.8% (bigger than without the signal) | ▲ −60.5% (bigger than without the signal) | ▲ −54.0% (bigger than without the signal) | ▲ −56.9% (bigger than without the signal) | ▲ −49.6% (bigger than without the signal) | ▲ −39.4% (bigger than without the signal) | ▲ −57.2% (bigger than without the signal) | ▲ −57.8% (bigger than without the signal) |
| Share above 50-day: out below 30%, back above 50% | ▲ −37.5% (bigger than without the signal) | ▲ −56.5% (bigger than without the signal) | ▲ −53.2% (bigger than without the signal) | ▲ −56.4% (bigger than without the signal) | ▲ −46.7% (bigger than without the signal) | ▼ −28.3% (smaller than without the signal) | ▲ −54.3% (bigger than without the signal) | ▲ −58.1% (bigger than without the signal) |
| Share above 200-day below 40% → out; back on a Zweig thrust or above 50% | ▲ −40.0% (bigger than without the signal) | ▲ −53.5% (bigger than without the signal) | ▲ −51.6% (bigger than without the signal) | ▲ −56.3% (bigger than without the signal) | ▼ −45.5% (smaller than without the signal) | ▼ −30.1% (smaller than without the signal) | ▲ −53.7% (bigger than without the signal) | ▲ −51.8% (bigger than without the signal) |
| Share above 200-day: out below 40%, back above 50% | ▲ −40.0% (bigger than without the signal) | ▲ −53.5% (bigger than without the signal) | ▲ −51.6% (bigger than without the signal) | ▲ −56.3% (bigger than without the signal) | ▼ −45.5% (smaller than without the signal) | ▼ −30.0% (smaller than without the signal) | ▲ −53.7% (bigger than without the signal) | ▲ −51.8% (bigger than without the signal) |
| McClellan summation index rising (above its 20-day avg) | ▲ −43.8% (bigger than without the signal) | ▲ −51.9% (bigger than without the signal) | ▼ −45.4% (smaller than without the signal) | ▲ −49.6% (bigger than without the signal) | ▲ −47.9% (bigger than without the signal) | ▲ −38.7% (bigger than without the signal) | ▼ −47.4% (smaller than without the signal) | ▲ −50.7% (bigger than without the signal) |
Return a year, by strategy
| Signal | Core Momentum | Quality Momentum | Weekly Quality Momentum | Weekly Leaders | Weekly Full Stack (15) | Broad Momentum 30 | Quality Momentum (every 2 weeks) | Weekly Leaders (max 25%) |
|---|---|---|---|---|---|---|---|---|
| No signal | 29.4% | 53.4% | 60.2% | 77.8% | 72.9% | 22.4% | 58.6% | 56.6% |
| Hindenburg-style split: this site’s signal → half out for 30 days (all US stocks) | ▲ 37.5% (higher than without the signal) | ▲ 63.3% (higher than without the signal) | ▲ 69.0% (higher than without the signal) | ▲ 87.1% (higher than without the signal) | ▲ 79.8% (higher than without the signal) | ▲ 27.9% (higher than without the signal) | ▲ 67.8% (higher than without the signal) | ▲ 63.8% (higher than without the signal) |
| More new lows than new highs (10-day) → out | ▼ 27.9% (lower than without the signal) | ▼ 50.8% (lower than without the signal) | ▼ 57.8% (lower than without the signal) | ▼ 75.9% (lower than without the signal) | ▼ 70.0% (lower than without the signal) | ▼ 21.3% (lower than without the signal) | ▼ 55.2% (lower than without the signal) | ▼ 54.3% (lower than without the signal) |
| McClellan oscillator: out below -50, back above 0 | ▼ 21.4% (lower than without the signal) | ▼ 41.5% (lower than without the signal) | ▼ 46.6% (lower than without the signal) | ▼ 61.4% (lower than without the signal) | ▼ 56.0% (lower than without the signal) | ▼ 15.5% (lower than without the signal) | ▼ 45.4% (lower than without the signal) | ▼ 44.4% (lower than without the signal) |
| A/D line above its 200-day EMA | ▼ 22.6% (lower than without the signal) | ▼ 43.0% (lower than without the signal) | ▼ 49.9% (lower than without the signal) | ▼ 65.5% (lower than without the signal) | ▼ 61.2% (lower than without the signal) | ▼ 17.3% (lower than without the signal) | ▼ 47.8% (lower than without the signal) | ▼ 47.1% (lower than without the signal) |
| A/D line above its 50-day EMA | ▼ 22.5% (lower than without the signal) | ▼ 41.0% (lower than without the signal) | ▼ 47.8% (lower than without the signal) | ▼ 62.4% (lower than without the signal) | ▼ 55.8% (lower than without the signal) | ▼ 15.6% (lower than without the signal) | ▼ 45.6% (lower than without the signal) | ▼ 45.2% (lower than without the signal) |
| High-Low index: out below 30, back above 50 | ▼ 23.4% (lower than without the signal) | ▼ 45.3% (lower than without the signal) | ▼ 52.7% (lower than without the signal) | ▼ 69.2% (lower than without the signal) | ▼ 64.8% (lower than without the signal) | ▼ 17.9% (lower than without the signal) | ▼ 50.5% (lower than without the signal) | ▼ 49.0% (lower than without the signal) |
| Share above 50-day: out below 30%, back above 50% | ▼ 21.4% (lower than without the signal) | ▼ 40.0% (lower than without the signal) | ▼ 47.2% (lower than without the signal) | ▼ 62.0% (lower than without the signal) | ▼ 57.2% (lower than without the signal) | ▼ 16.3% (lower than without the signal) | ▼ 45.2% (lower than without the signal) | ▼ 42.9% (lower than without the signal) |
| Share above 200-day below 40% → out; back on a Zweig thrust or above 50% | ▼ 18.7% (lower than without the signal) | ▼ 37.9% (lower than without the signal) | ▼ 44.9% (lower than without the signal) | ▼ 58.3% (lower than without the signal) | ▼ 56.0% (lower than without the signal) | ▼ 14.7% (lower than without the signal) | ▼ 42.4% (lower than without the signal) | ▼ 42.0% (lower than without the signal) |
| Share above 200-day: out below 40%, back above 50% | ▼ 18.0% (lower than without the signal) | ▼ 37.0% (lower than without the signal) | ▼ 43.8% (lower than without the signal) | ▼ 56.8% (lower than without the signal) | ▼ 54.7% (lower than without the signal) | ▼ 14.2% (lower than without the signal) | ▼ 41.3% (lower than without the signal) | ▼ 40.8% (lower than without the signal) |
| McClellan summation index rising (above its 20-day avg) | ▼ 9.1% (lower than without the signal) | ▼ 15.9% (lower than without the signal) | ▼ 19.8% (lower than without the signal) | ▼ 27.3% (lower than without the signal) | ▼ 24.3% (lower than without the signal) | ▼ 6.4% (lower than without the signal) | ▼ 18.9% (lower than without the signal) | ▼ 16.9% (lower than without the signal) |
Market breadth: the 500 most traded stocks10 signals; green squares: 5 of 80
The same breadth measures, built only from the strategies’ own stock pool.
Swipe sideways to see all 8 strategies and the average.
| Signal | Core Momentum | Quality Momentum | Weekly Quality Momentum | Weekly Leaders | Weekly Full Stack (15) | Broad Momentum 30 | Quality Momentum (every 2 weeks) | Weekly Leaders (max 25%) | Average |
|---|---|---|---|---|---|---|---|---|---|
| Hindenburg-style split: 2.5% new highs AND 2.5% new lows → half out for 30 days (500 most traded) | -0.3 | ||||||||
| High-Low index: out below 30, back above 50 | -4.3 | ||||||||
| Share above 50-day: out below 30%, back above 50% | -18.0 | ||||||||
| A/D line above its 200-day EMA | -22.0 | ||||||||
| McClellan oscillator: out below -50, back above 0 | -24.1 | ||||||||
| Share above 200-day: out below 40%, back above 50% | -27.3 | ||||||||
| Share above 200-day below 40% → out; back on a Zweig thrust or above 50% | -28.4 | ||||||||
| McClellan summation index rising (above its 20-day avg) | -28.4 | ||||||||
| More new lows than new highs (10-day) → out | -28.9 | ||||||||
| A/D line above its 50-day EMA | -30.8 |
Show the numbers as a table
Largest drop, by strategy
| Signal | Core Momentum | Quality Momentum | Weekly Quality Momentum | Weekly Leaders | Weekly Full Stack (15) | Broad Momentum 30 | Quality Momentum (every 2 weeks) | Weekly Leaders (max 25%) |
|---|---|---|---|---|---|---|---|---|
| No signal | −36.3% | −48.5% | −46.5% | −49.0% | −45.6% | −33.5% | −48.1% | −45.9% |
| Hindenburg-style split: 2.5% new highs AND 2.5% new lows → half out for 30 days (500 most traded) | ▼ −35.4% (smaller than without the signal) | ▼ −42.0% (smaller than without the signal) | ▼ −41.6% (smaller than without the signal) | ▼ −46.6% (smaller than without the signal) | ▼ −44.9% (smaller than without the signal) | −33.5% (about the same) | ▼ −41.1% (smaller than without the signal) | ▼ −42.2% (smaller than without the signal) |
| High-Low index: out below 30, back above 50 | ▲ −46.2% (bigger than without the signal) | ▲ −56.2% (bigger than without the signal) | ▲ −48.9% (bigger than without the signal) | ▲ −49.3% (bigger than without the signal) | ▼ −41.5% (smaller than without the signal) | ▲ −40.2% (bigger than without the signal) | ▲ −53.1% (bigger than without the signal) | ▲ −51.4% (bigger than without the signal) |
| Share above 50-day: out below 30%, back above 50% | ▲ −45.2% (bigger than without the signal) | ▲ −57.6% (bigger than without the signal) | ▲ −50.7% (bigger than without the signal) | ▲ −52.6% (bigger than without the signal) | ▼ −42.8% (smaller than without the signal) | ▲ −36.6% (bigger than without the signal) | ▲ −54.7% (bigger than without the signal) | ▲ −53.3% (bigger than without the signal) |
| A/D line above its 200-day EMA | ▲ −48.4% (bigger than without the signal) | ▲ −58.2% (bigger than without the signal) | ▲ −54.7% (bigger than without the signal) | ▲ −57.7% (bigger than without the signal) | ▲ −52.0% (bigger than without the signal) | ▲ −42.1% (bigger than without the signal) | ▲ −57.7% (bigger than without the signal) | ▲ −56.0% (bigger than without the signal) |
| McClellan oscillator: out below -50, back above 0 | ▲ −47.0% (bigger than without the signal) | ▲ −56.9% (bigger than without the signal) | ▲ −55.9% (bigger than without the signal) | ▲ −53.1% (bigger than without the signal) | ▼ −44.2% (smaller than without the signal) | ▲ −39.6% (bigger than without the signal) | ▲ −55.1% (bigger than without the signal) | ▲ −58.2% (bigger than without the signal) |
| Share above 200-day: out below 40%, back above 50% | ▲ −45.8% (bigger than without the signal) | ▲ −56.8% (bigger than without the signal) | ▲ −51.7% (bigger than without the signal) | ▲ −56.6% (bigger than without the signal) | ▲ −48.3% (bigger than without the signal) | ▲ −37.5% (bigger than without the signal) | ▲ −54.8% (bigger than without the signal) | ▲ −54.4% (bigger than without the signal) |
| Share above 200-day below 40% → out; back on a Zweig thrust or above 50% | ▲ −47.0% (bigger than without the signal) | ▲ −57.2% (bigger than without the signal) | ▲ −52.2% (bigger than without the signal) | ▲ −56.9% (bigger than without the signal) | ▲ −49.1% (bigger than without the signal) | ▲ −39.3% (bigger than without the signal) | ▲ −55.3% (bigger than without the signal) | ▲ −54.7% (bigger than without the signal) |
| McClellan summation index rising (above its 20-day avg) | ▼ −33.8% (smaller than without the signal) | ▼ −44.2% (smaller than without the signal) | ▼ −39.4% (smaller than without the signal) | ▼ −43.3% (smaller than without the signal) | ▼ −32.9% (smaller than without the signal) | ▼ −28.3% (smaller than without the signal) | ▼ −40.4% (smaller than without the signal) | −45.9% (about the same) |
| More new lows than new highs (10-day) → out | ▲ −51.4% (bigger than without the signal) | ▲ −64.3% (bigger than without the signal) | ▲ −57.7% (bigger than without the signal) | ▲ −58.3% (bigger than without the signal) | ▲ −51.8% (bigger than without the signal) | ▲ −47.3% (bigger than without the signal) | ▲ −61.8% (bigger than without the signal) | ▲ −61.0% (bigger than without the signal) |
| A/D line above its 50-day EMA | ▲ −43.1% (bigger than without the signal) | ▲ −59.7% (bigger than without the signal) | ▲ −58.2% (bigger than without the signal) | ▲ −58.8% (bigger than without the signal) | ▲ −47.2% (bigger than without the signal) | ▲ −34.6% (bigger than without the signal) | ▲ −60.0% (bigger than without the signal) | ▲ −61.1% (bigger than without the signal) |
Return a year, by strategy
| Signal | Core Momentum | Quality Momentum | Weekly Quality Momentum | Weekly Leaders | Weekly Full Stack (15) | Broad Momentum 30 | Quality Momentum (every 2 weeks) | Weekly Leaders (max 25%) |
|---|---|---|---|---|---|---|---|---|
| No signal | 29.4% | 53.4% | 60.2% | 77.8% | 72.9% | 22.4% | 58.6% | 56.6% |
| Hindenburg-style split: 2.5% new highs AND 2.5% new lows → half out for 30 days (500 most traded) | ▼ 28.4% (lower than without the signal) | ▼ 49.2% (lower than without the signal) | ▼ 54.6% (lower than without the signal) | ▼ 70.9% (lower than without the signal) | ▼ 65.2% (lower than without the signal) | ▼ 21.6% (lower than without the signal) | ▼ 53.6% (lower than without the signal) | ▼ 51.6% (lower than without the signal) |
| High-Low index: out below 30, back above 50 | ▼ 27.0% (lower than without the signal) | ▼ 51.5% (lower than without the signal) | ▲ 60.4% (higher than without the signal) | ▲ 79.4% (higher than without the signal) | ▲ 73.6% (higher than without the signal) | ▼ 20.7% (lower than without the signal) | ▼ 57.3% (lower than without the signal) | ▲ 56.7% (higher than without the signal) |
| Share above 50-day: out below 30%, back above 50% | ▼ 17.7% (lower than without the signal) | ▼ 38.6% (lower than without the signal) | ▼ 47.5% (lower than without the signal) | ▼ 65.2% (lower than without the signal) | ▼ 60.2% (lower than without the signal) | ▼ 13.5% (lower than without the signal) | ▼ 44.4% (lower than without the signal) | ▼ 43.7% (lower than without the signal) |
| A/D line above its 200-day EMA | ▼ 21.2% (lower than without the signal) | ▼ 42.7% (lower than without the signal) | ▼ 48.8% (lower than without the signal) | ▼ 64.2% (lower than without the signal) | ▼ 59.4% (lower than without the signal) | ▼ 15.5% (lower than without the signal) | ▼ 47.0% (lower than without the signal) | ▼ 45.6% (lower than without the signal) |
| McClellan oscillator: out below -50, back above 0 | ▼ 18.7% (lower than without the signal) | ▼ 38.6% (lower than without the signal) | ▼ 41.5% (lower than without the signal) | ▼ 57.1% (lower than without the signal) | ▼ 51.1% (lower than without the signal) | ▼ 14.1% (lower than without the signal) | ▼ 40.9% (lower than without the signal) | ▼ 39.6% (lower than without the signal) |
| Share above 200-day: out below 40%, back above 50% | ▼ 13.8% (lower than without the signal) | ▼ 33.0% (lower than without the signal) | ▼ 40.8% (lower than without the signal) | ▼ 53.3% (lower than without the signal) | ▼ 49.9% (lower than without the signal) | ▼ 10.4% (lower than without the signal) | ▼ 38.3% (lower than without the signal) | ▼ 37.4% (lower than without the signal) |
| Share above 200-day below 40% → out; back on a Zweig thrust or above 50% | ▼ 13.4% (lower than without the signal) | ▼ 32.8% (lower than without the signal) | ▼ 40.5% (lower than without the signal) | ▼ 53.0% (lower than without the signal) | ▼ 49.4% (lower than without the signal) | ▼ 10.0% (lower than without the signal) | ▼ 38.0% (lower than without the signal) | ▼ 37.2% (lower than without the signal) |
| McClellan summation index rising (above its 20-day avg) | ▼ 11.3% (lower than without the signal) | ▼ 16.7% (lower than without the signal) | ▼ 18.6% (lower than without the signal) | ▼ 26.0% (lower than without the signal) | ▼ 25.3% (lower than without the signal) | ▼ 8.0% (lower than without the signal) | ▼ 18.3% (lower than without the signal) | ▼ 15.7% (lower than without the signal) |
| More new lows than new highs (10-day) → out | ▼ 18.3% (lower than without the signal) | ▼ 37.5% (lower than without the signal) | ▼ 45.4% (lower than without the signal) | ▼ 61.2% (lower than without the signal) | ▼ 57.3% (lower than without the signal) | ▼ 13.5% (lower than without the signal) | ▼ 42.4% (lower than without the signal) | ▼ 42.0% (lower than without the signal) |
| A/D line above its 50-day EMA | ▼ 14.0% (lower than without the signal) | ▼ 32.4% (lower than without the signal) | ▼ 38.1% (lower than without the signal) | ▼ 54.8% (lower than without the signal) | ▼ 53.6% (lower than without the signal) | ▼ 10.0% (lower than without the signal) | ▼ 36.0% (lower than without the signal) | ▼ 35.5% (lower than without the signal) |
The momentum leaders themselves6 signals; green squares: 1 of 48
Signals read from the strongest stocks or from a momentum long-short portfolio, which might weaken before the market does.
Swipe sideways to see all 8 strategies and the average.
| Signal | Core Momentum | Quality Momentum | Weekly Quality Momentum | Weekly Leaders | Weekly Full Stack (15) | Broad Momentum 30 | Quality Momentum (every 2 weeks) | Weekly Leaders (max 25%) | Average |
|---|---|---|---|---|---|---|---|---|---|
| Narrow rally: SPY up 20 days but A/D line down → half out | -3.0 | ||||||||
| Leaders: share above 50-day: half out below 50%, back above 60% | -7.4 | ||||||||
| Leaders: over 20% at a 20-day low → out, back under 5% | -10.8 | ||||||||
| Leaders: share above 50-day: out below 40%, back above 60% | -16.9 | ||||||||
| Momentum long-short down 10% in 20 days → out, back when 20-day is positive | -17.2 | ||||||||
| Momentum long-short above its 50-day EMA | -18.4 |
Show the numbers as a table
Largest drop, by strategy
| Signal | Core Momentum | Quality Momentum | Weekly Quality Momentum | Weekly Leaders | Weekly Full Stack (15) | Broad Momentum 30 | Quality Momentum (every 2 weeks) | Weekly Leaders (max 25%) |
|---|---|---|---|---|---|---|---|---|
| No signal | −36.3% | −48.5% | −46.5% | −49.0% | −45.6% | −33.5% | −48.1% | −45.9% |
| Narrow rally: SPY up 20 days but A/D line down → half out | ▼ −35.7% (smaller than without the signal) | ▼ −47.1% (smaller than without the signal) | ▼ −46.1% (smaller than without the signal) | ▼ −48.3% (smaller than without the signal) | ▼ −44.6% (smaller than without the signal) | ▼ −32.5% (smaller than without the signal) | ▼ −46.3% (smaller than without the signal) | ▼ −44.8% (smaller than without the signal) |
| Leaders: share above 50-day: half out below 50%, back above 60% | ▲ −39.8% (bigger than without the signal) | ▲ −52.3% (bigger than without the signal) | ▲ −48.0% (bigger than without the signal) | ▲ −49.3% (bigger than without the signal) | ▼ −38.1% (smaller than without the signal) | ▲ −34.1% (bigger than without the signal) | ▲ −49.6% (bigger than without the signal) | ▲ −52.4% (bigger than without the signal) |
| Leaders: over 20% at a 20-day low → out, back under 5% | ▼ −35.2% (smaller than without the signal) | ▲ −49.0% (bigger than without the signal) | ▼ −44.9% (smaller than without the signal) | ▲ −51.8% (bigger than without the signal) | ▼ −42.8% (smaller than without the signal) | ▼ −28.5% (smaller than without the signal) | ▼ −44.9% (smaller than without the signal) | ▲ −49.4% (bigger than without the signal) |
| Leaders: share above 50-day: out below 40%, back above 60% | ▲ −47.3% (bigger than without the signal) | ▲ −55.8% (bigger than without the signal) | ▲ −50.2% (bigger than without the signal) | ▲ −49.4% (bigger than without the signal) | ▼ −40.3% (smaller than without the signal) | ▲ −42.1% (bigger than without the signal) | ▲ −51.4% (bigger than without the signal) | ▲ −55.3% (bigger than without the signal) |
| Momentum long-short down 10% in 20 days → out, back when 20-day is positive | ▲ −41.1% (bigger than without the signal) | ▲ −48.9% (bigger than without the signal) | ▲ −49.0% (bigger than without the signal) | ▲ −55.0% (bigger than without the signal) | ▲ −47.3% (bigger than without the signal) | ▲ −36.5% (bigger than without the signal) | ▼ −47.8% (smaller than without the signal) | ▲ −51.7% (bigger than without the signal) |
| Momentum long-short above its 50-day EMA | ▲ −37.1% (bigger than without the signal) | ▼ −42.0% (smaller than without the signal) | ▼ −41.6% (smaller than without the signal) | ▼ −45.5% (smaller than without the signal) | ▼ −44.9% (smaller than without the signal) | −33.5% (about the same) | ▼ −40.3% (smaller than without the signal) | ▼ −42.2% (smaller than without the signal) |
Return a year, by strategy
| Signal | Core Momentum | Quality Momentum | Weekly Quality Momentum | Weekly Leaders | Weekly Full Stack (15) | Broad Momentum 30 | Quality Momentum (every 2 weeks) | Weekly Leaders (max 25%) |
|---|---|---|---|---|---|---|---|---|
| No signal | 29.4% | 53.4% | 60.2% | 77.8% | 72.9% | 22.4% | 58.6% | 56.6% |
| Narrow rally: SPY up 20 days but A/D line down → half out | ▼ 27.4% (lower than without the signal) | ▼ 49.1% (lower than without the signal) | ▼ 56.0% (lower than without the signal) | ▼ 71.9% (lower than without the signal) | ▼ 66.4% (lower than without the signal) | ▼ 20.3% (lower than without the signal) | ▼ 54.5% (lower than without the signal) | ▼ 52.0% (lower than without the signal) |
| Leaders: share above 50-day: half out below 50%, back above 60% | ▼ 23.7% (lower than without the signal) | ▼ 46.8% (lower than without the signal) | ▼ 53.0% (lower than without the signal) | ▼ 70.8% (lower than without the signal) | ▼ 65.2% (lower than without the signal) | ▼ 17.4% (lower than without the signal) | ▼ 51.9% (lower than without the signal) | ▼ 48.9% (lower than without the signal) |
| Leaders: over 20% at a 20-day low → out, back under 5% | ▼ 20.8% (lower than without the signal) | ▼ 41.1% (lower than without the signal) | ▼ 46.8% (lower than without the signal) | ▼ 65.7% (lower than without the signal) | ▼ 61.8% (lower than without the signal) | ▼ 14.9% (lower than without the signal) | ▼ 46.1% (lower than without the signal) | ▼ 42.0% (lower than without the signal) |
| Leaders: share above 50-day: out below 40%, back above 60% | ▼ 20.2% (lower than without the signal) | ▼ 41.9% (lower than without the signal) | ▼ 46.2% (lower than without the signal) | ▼ 62.2% (lower than without the signal) | ▼ 57.8% (lower than without the signal) | ▼ 14.6% (lower than without the signal) | ▼ 45.3% (lower than without the signal) | ▼ 41.2% (lower than without the signal) |
| Momentum long-short down 10% in 20 days → out, back when 20-day is positive | ▼ 21.8% (lower than without the signal) | ▼ 43.6% (lower than without the signal) | ▼ 43.6% (lower than without the signal) | ▼ 57.9% (lower than without the signal) | ▼ 54.5% (lower than without the signal) | ▼ 16.0% (lower than without the signal) | ▼ 45.6% (lower than without the signal) | ▼ 40.9% (lower than without the signal) |
| Momentum long-short above its 50-day EMA | ▼ 14.8% (lower than without the signal) | ▼ 32.0% (lower than without the signal) | ▼ 35.3% (lower than without the signal) | ▼ 46.0% (lower than without the signal) | ▼ 42.4% (lower than without the signal) | ▼ 11.1% (lower than without the signal) | ▼ 34.7% (lower than without the signal) | ▼ 32.5% (lower than without the signal) |
How it was testedbacktests, every rebuild day averaged, 0.10% on every move
All figures are backtests. Each strategy’s daily value from November 2017 to September 2026 was rebuilt on every possible rebuild day (21 starting days for the monthly strategies, 10 for the two-weekly one, 5 for the weekly ones) and the results averaged, so no figure depends on one lucky day. Each signal was then applied day by day: when it fired, part or all of the money moved into T-bills earning BIL’s return, and every move paid 0.10%. The fixed T-bill splits (90/10, 80/20, 70/30 and 50/50) that set each strategy’s price of protection were built from the same daily values, rebalanced every day, and scored the same way; the price is the average of the four splits. The split map (100/0 down to 10/90) uses the same daily values, with the two parts set back to the target split on every trade day, paying 0.10% on the money moved, the way the split menu on each strategy’s page works, so its figures differ slightly from the daily-rebalanced splits. Because the figures are averaged over every rebuild day, they differ slightly from the single record shown on each strategy’s page.
When the trades are filled
How the site fills its trades
Each strategy makes its decision after the market closes on its rebuild day: the last trading day of the month for the monthly strategies, of every other week for the two-weekly one, and of the week for the weekly ones. It ranks the stocks using that day’s closing prices, so nothing is used that was not known at the time.
The trades are then filled at the next trading day’s closing price, usually a Monday for the weekly strategies. Every buy, sale and resize pays 0.10% of the amount traded. All figures on this site, and in the newsletter, use this method.
The test
Filling at the close of the next day leaves one full trading session between the decision and the trade. To see what that choice is worth, all eight strategies were re-run with exactly the same decisions on the same days, changing only when the trades are filled, from November 1, 2017 to September 21, 2026. As a check, the next-day close version reproduced the published engine to the cent.
Two alternatives were tested. Filling at the decision day’s own close (Friday’s close for the weekly strategies) is a day earlier than the site. It is a best case that cannot be matched exactly, because the decision needs the closing price; in practice it would mean deciding on prices shortly before the close. Filling at the next day’s opening price is what an investor placing orders before the market opens would get.
| Strategy | Next-day close (site) | Same-day close | Difference | Next-day open | Difference |
|---|---|---|---|---|---|
| Broad Momentum 30 | 23.4% | 24.1% | +0.7 pts | 23.8% | +0.4 pts |
| Core Momentum | 34.0% | 33.5% | −0.5 pts | 33.8% | −0.2 pts |
| Weekly Leaders (max 25%) | 65.7% | 61.3% | −4.4 pts | 62.9% | −2.8 pts |
| Quality Momentum (every 2 weeks) | 60.9% | 57.0% | −4.0 pts | 56.8% | −4.1 pts |
| Weekly Quality Momentum | 71.4% | 64.7% | −6.6 pts | 65.7% | −5.6 pts |
| Quality Momentum | 67.8% | 61.4% | −6.4 pts | 62.2% | −5.6 pts |
| Weekly Full Stack (15) | 83.7% | 75.5% | −8.2 pts | 75.7% | −8.1 pts |
| Weekly Leaders | 96.7% | 84.8% | −11.9 pts | 86.1% | −10.6 pts |
Return a year, filled at the next day’s close (as on this site), at the decision day’s own close, and at the next day’s open, November 2017 to September 2026. Backtest results.
Show these numbers as a table
| Tested | Return a year: same-day close minus next-day close |
|---|---|
| Broad Momentum 30 | +0.7% |
| Core Momentum | -0.5% |
| Weekly Leaders (max 25%) | -4.4% |
| Quality Momentum (every 2 weeks) | -4.0% |
| Weekly Quality Momentum | -6.6% |
| Quality Momentum | -6.4% |
| Weekly Full Stack (15) | -8.2% |
| Weekly Leaders | -11.9% |
Show these numbers as a table
| Tested | Return a year: next-day open minus next-day close |
|---|---|
| Broad Momentum 30 | +0.4% |
| Core Momentum | -0.2% |
| Weekly Leaders (max 25%) | -2.8% |
| Quality Momentum (every 2 weeks) | -4.1% |
| Weekly Quality Momentum | -5.6% |
| Quality Momentum | -5.6% |
| Weekly Full Stack (15) | -8.1% |
| Weekly Leaders | -10.6% |
What it shows
- Filling at the next day’s close, as the site does, gave the best results of the three for the weighted strategies. Filling a day earlier, at the decision day’s own close, did not help: it came out close to the next-day open, 4 to 12 percentage points a year below the site’s method.
- The equal-weight strategies, Core Momentum and Broad Momentum 30, gave almost the same result whichever fill was used, within about half a percentage point a year.
- The same-day close and the next-day open differ only by the night (and weekend) in between, and they came out nearly level, so that gap is not the cause. The difference sits in the first trading session after the decision: during it, the newly chosen stocks, and those given more money, tended to give back part of their recent gains, while the stocks being sold held up. Waiting for that session’s close before trading avoided it.
- The difference is not a steady cost. In some years the earlier fills did better; most of the gap comes from 2020 and 2026, when a few very large holdings moved sharply on rebuild days.
What other research has found
This matches what academic research has found. A stock’s return over the past week or month tends to partly reverse in the short run, the “short-term reversal” effect. And for momentum stocks specifically, the gains tend to arrive overnight and to be partly given back during the trading day, as institutional investors trade against the trend in regular hours.
- Lou, Polk and Skouras (2019), “A tug of war: Overnight versus intraday expected returns,” Journal of Financial Economics 134(1): momentum profits are earned overnight and partly reverse intraday.
- Jegadeesh (1990), “Evidence of predictable behavior of security returns,” Journal of Finance 45(3): stocks’ returns over the past month tend to reverse the next month.
- Lehmann (1990), “Fads, martingales, and market efficiency,” Quarterly Journal of Economics 105(1): short-term reversals over a week or a month.
To match this site’s results, trade at the closing price on the trading day after each rebuild. Figures end on September 21, 2026, so they differ slightly from the live pages. All results are backtests and hypothetical.
What did not work
- Stored weighted alpha and composite scores as the signal: 120-day weighted alpha +277.3%, composite +188.4%, against +582.4% for 12-1 momentum (test 2).
- SPY 200-day trend gate on the stock book: +113.6% instead of +582.4%, with a deeper worst fall of -55.6% (test 2).
- Sell buffers / letting winners run: holding until a stock falls past rank 20, 30 or 45 lowered the return every time (15 names: +934.7% with no buffer vs +772.5% selling past rank 30, test 14).
- Valuation filters: dropping the dearest fifth by sales multiple cut the return from +608.3% to +315.5%; cheapest 50 of the strongest 100 made +255.9% (test 8).
- Restricting to the real S&P 500: +250.5% against +608.3% for the 500 most traded (test 8); +509.1% vs +4731.3% later (test 19).
- Ranking industries first (the best ETF idea): worse in every version, e.g. top 15 industries x 4 stocks +380.6% at Sharpe 0.74 (test 9).
- Stronger free-cash-flow screens: top half by free cash flow yield +278.3% vs +420.0% for just 'positive' (test 10).
- Shorter momentum: 3-1 made +307.8% vs +934.7% for 12-1 (test 14); in the final five, Weekly Quality Momentum earns 20% a year at 3-1 vs 60% at 12-1 (test 25).
- Closeness to the 52-week high: +141.0% vs +934.7% for 12-1 (test 14).
- Stop-losses: 15% below cost +804.6%, 20% trailing +635.4%, vs +1307.1% for the base, without a meaningfully smaller worst fall (test 15).
- Crash guards: book to T-bills after a 10% monthly fall +597.1% vs +1307.1% (test 15).
- Bigger pool: the 1,000 most traded +605.4% and 1,500 +518.4% vs +1307.1% for 500 (test 15).
- Other gross-margin measures: margin above sector median +542.7%, margin rising faster +1260.8%, vs the stack's +4492.6% (test 16).
- Smooth or accelerating momentum, sales acceleration, volume confirmation: +1398.8% to +3967.0%, all below the stack's +4492.6% (test 16).
- Insider filters: requiring insider buying made +1420.9% with a -72.5% fall vs the weekly reference's +21700.6% (test 19).
- Rebuilding faster than weekly: every 3 sessions +17454.0%, daily +8459.4% with a -66.0% fall, vs weekly +21700.6% (test 19).
- Pool by trading intensity (dollar volume / market value): +109.6% with a -71.0% fall (test 21).
- Halving holdings in their results week: +17955.0% vs +21700.6% (test 21).
- Every market-timing gate (SPY/QQQ trend, golden cross, Faber 10-month): Weekly Quality Momentum +1734.7% to +3497.4% vs +6596.3% unguarded, with no smaller worst fall in both halves (test 23).
- Timing on the strategy's own curve: out below its own 100-day EMA kept 24% of the money with a -55.0% fall on Weekly Quality Momentum (test 23).
- Market breadth rules (A/D line, McClellan, High-Low index, Zweig thrust): kept 5-90% of the money without cutting the fall in both halves (test 23).
- Trimming only the most-stretched stocks: selling the 3 most stretched cost 16.9 points a year for 3.8 points of fall, worse than a fixed mix on all five (test 24).
Read this with care
- Expect far less than these totals. They are the best results found after hundreds of tries on one decade of prices. Even the robustness checks use the same ten years. The edge over SPY looks real, but it is likely much smaller than shown.
- 478 rules were tried. Allowing for that, the chance that the weekly book’s edge is real still comes out at 0.98 (on a 0-to-1 scale).
- The core idea holds up; the fine-tuning does not. A standard over-fitting test scores 0.5953 (0 to 1) when choosing among the 39 refined weekly versions: which of them looks best is mostly luck.
- Technology did most of the work. Without technology stocks the weekly book keeps only 8% of its return. If technology stops leading, every strategy earns much less; the ones holding more stocks are the least exposed.
- Everything found lives in the 500 most traded stocks. The same rules on the next 500 (the 500th to 1,000th most traded) made +197.8%, less than SPY.
- Falls of 35–55% happened in every version, and no timing rule, stop-loss or cash guard prevented them without costing more than it saved. Momentum crashes (2021, mid-2026) came while SPY was flat or rising.
- Picked fairly, edges shrink. When filters were chosen using only 2017–21 and scored on 2022–26, the lead over SPY was real but much smaller. Most of the lead came in 2022–26.
- A few rocket stocks carry a lot. Without the five biggest winners (APP, AXTI, CVNA, SNDK, WDC) every book loses a third to three-fifths of its money.
- The weekly strategies make 128–171 trades a year, which would be taxed at short-term rates; taxes are ignored. Doubling the trading costs keeps 77–84% of the weekly returns.
- Ten years, one country, in a decade when large growth stocks led almost throughout. The only clean test left is running the rules forward, which is what this site does every trading day.
This is research for education. It is not investment advice, and nothing here is an offer to buy or sell any security. Past results, real or simulated, do not predict future results.
The Bull Rhythm Weekly · every Friday after the close
Follow the strategies as they run live
Eight strategies with fixed rules, every decision made at the day’s close. Each Friday, see where the record stands: what each one made, what it bought and sold, and why.
- This week’s result and the running total since going live, next to the S&P 500
- Every buy and every sale, with the reason in plain words
- What each one holds now, with charts
- The good weeks and the bad ones, reported the same way