The Triple Moving Average Filter Trading Strategy: Rules and Risk

The Triple Moving Average Filter takes a trade only where price sits above the 20, 50 and 200-day averages. Here are the rules, the exits and the arithmetic.

Tyson PNovember 29, 2025Last reviewed September 13, 20266 min read
Back to Blog

A single moving average produces a signal every time price crosses it, which in a sideways market is often. The Triple Moving Average Filter asks for three conditions at once instead of one. Because every trade that satisfies three conditions also satisfies each one alone, the filter can never produce more setups than any single average would, and normally produces far fewer. That reduction is the point of it.

What the triple moving average filter is

The strategy uses three simple moving averages of the daily close: the 20-day, the 50-day and the 200-day. A simple moving average is the arithmetic mean of the last n closes, so the 20-day average is the mean of the last 20 closes and the 200-day average the mean of the last 200.

Those three windows describe three different spans of the same price history. Twenty trading sessions is about four calendar weeks. Fifty is about ten trading weeks. Two hundred is most of a trading year. Price above all three means the latest close sits above the mean of each of those windows at the same time.

That is the whole claim. Where price sits relative to an average is arithmetic, not evidence about who is buying. Statements about what institutions do at the 200-day line are not observable from a chart, and this article does not make them.

The entry test

Consider a long only where all three hold at the close.

  1. Price is above the 20-day SMA. The latest close is above the mean of the last 20 closes.
  2. Price is above the 50-day SMA. The same test over 50 closes.
  3. Price is above the 200-day SMA. The same test over 200 closes, and the one that rules out a stock in a year-long decline.

A hypothetical case, with invented numbers and no company named: price prints $150.00 while the 20-day average is $142.00, the 50-day $135.00 and the 200-day $120.00. All three conditions hold.

Note what the test does not require. The averages themselves stacked in order (20 above 50 above 200) is a stricter condition than price being above each of them. Price can sit above all three while the 50-day average is still below the 200-day, because the averages lag the price that feeds them. If you want the stacked version, that is a fourth rule you are adding, and it changes which trades you get.

Exits

Two exits.

The first is a close below the 50-day SMA. A close below the 20-day would trigger more often on the same price path, because the shorter window reacts more to each new close. The 50-day is chosen to sit through a shallower pullback.

The second is a stop 4% below entry, which covers the case where price falls far enough to matter before any average has caught up. Four percent is this article's parameter.

Position sizing: allocation and risk are not the same number

Two different rules both get written as "2.5%", and they produce positions that differ by a factor of 25.

2.5% as allocation. On a $100,000 portfolio you put $2,500 into the stock. A 4% stop on $2,500 loses $100, which is 0.1% of the portfolio. Ten losses in a row cost $1,000, or 1% of the portfolio.

2.5% as risk. On a $100,000 portfolio you accept a $2,500 loss. With the stop 4% below entry the position is $2,500 / 0.04 = $62,500, nearly two thirds of the portfolio in one stock. Ten losses in a row cost $25,000.

Neither is wrong as a rule. Writing one and calculating the other is. Decide which number you mean before you size anything, because the two are not close.

A worked example

Invented figures, no real company, no trade that happened.

A stock prints $10.50 with its 20-day average at $10.10, its 50-day at $9.80 and its 200-day at $8.50. All three entry conditions hold. Entry is $10.50 and the stop sits at $10.08, 4% below, so risk per share is $0.42. On a 2.5% allocation of a $100,000 portfolio, $2,500 buys 238 shares and puts $99.96 at risk.

Two weeks later price reaches $12.00 and the 50-day average has risen to $10.50, level with the entry. A trade in that position is not risk free. The exit rule fires on a close below the average, and an overnight gap can open below it, so the realised exit can land under the entry price whatever the average says.

Six weeks on, price closes at $11.20 with the 50-day at $11.35. The close is below the average, so the exit triggers: $11.20 - $10.50 = $0.70 per share, which is $0.70 / $0.42 = 1.67R, and 238 shares makes $166.60 before costs.

Keeping the record

Swingfolio ships a strategy template under this exact name. On the new-strategy page, press "Import from Library" and the Strategy Library sheet lists "Triple Moving Average Filter". Hover the row and press Preview. The modal prints three entry rules, "Price is above 20-day SMA", "Price is above 50-day SMA" and "Price is above 200-day SMA", none of them optional. The exit rules read "Price closes below 50-day SMA" and "Price hits stop loss", and the Risk Management block reads Stop Loss 4%, Target R-Multiple 2R and Position Size 2.5%.

The template requires price above each average and says nothing about the averages being stacked, which matches the test above rather than the stricter version.

Trades carry no tags. The trade form has a select labelled Strategy that reads "No Strategy" until you pick one. Picking this one on a new trade writes a stop 4% from the entry price you typed, and a target 2R out from that stop. It leaves either field alone once you have edited it. It does not size the position, and it does not act on the 2.5%. That figure is stored on the strategy and shown in the preview modal, the New Strategy form and the strategy's own page, but it is applied to nothing. The form's risk block shows Exp. Risk, Exp. Reward, R:R Ratio and Port. Risk, all worked from the units you entered. For shares from a risk percentage, the calculator at /tools/position-calculator takes Entry Price, Stop Loss Price, Account Value and Risk Percentage.

Once the trades close, the Strategy Performance page prints one row per strategy: Win, Avg R, Trades, Rules, P&L and PF. That row answers whether this rule set made money and at what hit rate. It does not report how long you held, so a question about exiting early needs the trade dates, not the strategy row.

Where this goes wrong

  • Buying below the 200-day average. Two of three conditions is not the test. The third one is what removes the year-long decliners.
  • Reading the averages as a floor. An average is the mean of past closes. Nothing enforces it.
  • Anticipating the cross. The rules are read at the close, so a stock that spends the session above the 20-day average and closes below it has not triggered.
  • Calling the allocation a risk cap. See the arithmetic above.

Settle whether your 2.5% is allocation or risk and write the answer next to the rules. Then assign the next run of these trades to one strategy, so the Win and Avg R figures describe a single test. Start the 30-day trial if you want that record kept as you go.

Share this article

Share:

Ready to improve your swing trading?

Track your trades, follow your strategies, and get AI-powered insights to become a better trader.

Related Articles