MARKET
Start from zero · 11 min read

What is a trend filter — and does “only buy above the 200-day” actually fix a breakout?

Quick answer. A trend filter is a rule that lets a setup trade only when the bigger trend points the same way — the classic version is “only go long when price is above the 200-day moving average.” We added that filter to every 20-bar breakout on the BTC/USDT 4-hour chart from January 2022 to September 2026. It cut the trades from 122 to 69, but the result went from +1.2R to −1.7R: it skipped the 2022 losses and also the start of the 2023 rally. Some other filters did better, but not by enough to trust.

If you read our page on hindsight bias, you saw a plain breakout rule on Bitcoin roughly break even over 122 trades. The first fix almost everyone suggests is a trend filter: stop buying breakouts in a downtrend. It sounds so obviously right that most people never test it. This page tests it — the textbook 200-day version and eight variations — on the same real candles, then shows the trap that makes the best-looking variation the one you should trust least.

Horizontal bar chart of nine versions of the same BTC/USDT 4-hour breakout rule, January 2022 to September 2026, total result in R before fees, on a linear scale. No filter: 122 trades, +1.2R. Daily close above the 200-day moving average: 69 trades, minus 1.7R. 50-day above 200-day: 64 trades, minus 0.9R. 200-day rising: 81 trades, +7.4R. 4-hour close above the 4-hour EMA 200: 90 trades, +11.7R. Below a dividing line, the daily-close filter with other lengths: 50-day +19.4R, 100-day +7.9R, 150-day +0.5R, 250-day +1.9R.
The same breakout rule with nine different trend filters. Bars are drawn to scale. Calculated by TradingPrimer from Binance BTC/USDT 4-hour and daily candles.

KEY TAKEAWAYS

  • A trend filter does not create edge. It only decides which signals you are allowed to take, so it can only help if the signals it removes were worse than the ones it keeps.
  • The textbook filter — daily close above the 200-day MA — took 69 of the breakouts instead of 122 and finished at −1.7R, against +1.2R with no filter. Its win rate was 24.6%, no better than 25.4% without it.
  • It worked as intended in 2022 (it skipped 17 breakouts worth −5.1R) and failed in 2023: Bitcoin had to rally 26% off the November 2022 low before the filter allowed a single long.
  • Around the line it flips constantly: 9 crossings of the 200-day in 20 days in March 2025, 10 between July and October 2024.
  • The best variation (above the 50-day MA, +19.4R) looks great until you check its neighbours: the 150-day version made +0.5R. Treat any filter you picked after looking at the results as a hypothesis, not a finding.

What is a trend filter, in one paragraph?

A trend filter is a yes/no condition, checked on a slower chart or a slower average, that has to be true before your entry signal is allowed to trade. “Only take long breakouts when the daily close is above the 200-day moving average” is the most quoted one; others use the slope of an average, two averages crossing, or market structure on a higher timeframe. The filter does not tell you when to enter. Your setup does that. The filter only says “not now” to some of the setup’s signals.

That framing matters, because it tells you exactly what a filter can and cannot do. It can never turn a losing signal into a winning one. It can only remove signals. So it helps only if the signals it removes lose more, on average, than the ones it keeps — which is a claim you can check.

Does the 200-day filter fix the breakout?

Not on this data. We used the same breakout rule as the hindsight-bias test and simply refused any signal unless the last completed daily close was above the 200-day simple moving average:

  • Signal: a 4-hour candle closes above the highest high of the previous 20 candles (and the candle before had not).
  • Stop and target: stop at the lowest low of the last 10 candles, target 2R, trade closed at market after 60 candles (10 days). Stops under 0.3% or over 6% skipped.
  • One trade at a time. When the filter says no, the rule keeps scanning; a refused signal frees the slot for a later one.
  • Filter: only completed daily candles are used, so the test never peeks at a day that has not closed yet.
BTC/USDT 4H, Jan 2022 – Sep 2026No filterAbove 200-day MA
Trades12269
Hit the 2R target31 (25.4%)17 (24.6%)
Total result+1.2R−1.7R
Worst peak-to-trough run−11.7R−11.7R
Longest losing streak109

The filter halved the number of trades and changed almost nothing else. The win rate stayed at a quarter, the worst drawdown was identical, and the total slipped below zero. Split by year, you can see where it helped and where it hurt:

YearNo filterAbove 200-day MA
202217 trades, −5.1R0 trades, 0R
202328 trades, +6.2R20 trades, −2.7R
202428 trades, +6.6R24 trades, +4.1R
202530 trades, −5.1R23 trades, −2.8R
2026 (to Sep)19 trades, −1.4R2 trades, −0.2R

2022 is the year the filter is famous for: Bitcoin spent the whole year below its 200-day average and the filter kept you out of 17 breakouts that lost 5.1R between them. In 2023 it handed all of that back and more.

A cleaner way to judge a filter is a veto audit: take the 122 trades the plain rule actually made and sort them into “filter would have allowed” and “filter would have refused”. The 200-day filter refused 55 of them. Those 55 netted +0.8R and included 14 trades that hit the target. The 67 it allowed netted +0.3R, with a 25.4% win rate — exactly the same as the rule without any filter. The refused pile was not worse than the kept pile. That is what “the filter has no information” looks like.

Why did the filter miss the best stretch?

Because a 200-day average is, by construction, 100 days behind on average. It confirms a new uptrend only after a large part of it has happened. The screenshot shows the daily chart from October 2022 to November 2023 with the 50-day (blue) and 200-day (red) averages.

Screenshot of the TradingPrimer live chart, BTC/USDT daily candles from October 2022 to November 2023 with the 50-day moving average in blue and the 200-day in red. Circle 1 marks early January 2023, where price breaks up from about 16,700 while still under the falling 200-day line near 19,600. Circle 2 marks mid-October 2023, where price breaks up from about 27,000 while sitting just under the 200-day near 28,000, before running above 34,000. A red note reads: Under the 200-day: filter says no.
Screenshot: the live chart, BTC/USDT 1D with MA50 and MA200, Oct 2022 – Nov 2023. Circle 1: the 2 and 10 January 2023 breakouts (4H entries 16,721 and 17,433), both reached 2R; daily close was about 17,200 against a 200-day of about 19,600. Circle 2: the 15–16 October 2023 breakouts (entries 27,154 and 28,064), both reached 2R while the last daily close sat under the 200-day near 28,000. Taken 7 October 2026.

The numbers behind the picture:

  • Bitcoin’s lowest daily close of the cycle was 15,781 on 21 November 2022. The first daily close back above the 200-day was 19,930 on 13 January 2023 — 26.3% higher. Every breakout in between was refused, including the two in circle 1 that both reached their 2R target.
  • In August–October 2023 price sat just under a flat 200-day for two months. Of the 2023 breakouts the plain rule took, the filter would have refused 8, and those 8 netted +8.9R — more than the entire year’s result.
  • In 2026 the filter refused 17 of 19 breakouts, because Bitcoin was below its 200-day from early November 2025 until 19 August 2026. Those 17 lost 1.1R, so here staying out cost little — but it also means the filter was simply switched off for most of the year.

This is the core trade-off of any slow filter. The slower it is, the fewer fake signals it lets through in a bear market — and the more of the next recovery it misses. Our moving averages lesson measures how far behind price each length sits.

What happens when price sits on the line?

The filter flips back and forth, and every flip is a coin toss about which signals you are allowed to take. Counting daily closes that crossed the 200-day average from one side to the other:

PeriodCrossings of the 200-day
4 Jul – 14 Oct 202410
9 – 28 Mar 20259 (in 20 days)
17 Oct – 3 Nov 20257 (in 18 days)

Over the whole period Bitcoin closed above its 200-day on 51.8% of days — close to a coin flip in itself. In those choppy stretches the filter is not describing a trend; it is describing which side of a line the last close happened to land on. A breakout on a Tuesday is allowed, the same breakout on Wednesday is not. If you trade a filter like this, write down in advance what you do when it flips while you are in a trade (most people keep the trade and only use the filter for new entries, which is what this test did).

Which filter worked best — and should you believe it?

Several did better than no filter. None of them did well enough, or consistently enough, to believe without more evidence. Here is every version we ran, same rule, same candles:

Filter (long only when…)TradesHit 2RTotalWorst run
No filter12225.4%+1.2R−11.7R
Daily close above 200-day MA6924.6%−1.7R−11.7R
50-day MA above 200-day MA6423.4%−0.9R−9.5R
200-day MA rising vs 20 days ago8128.4%+7.4R−9.1R
4H close above 4H EMA 2009030.0%+11.7R−6.7R
Daily close above 50-day MA7230.6%+19.4R−4.7R
Daily close above 100-day MA6625.8%+7.9R−7.5R
Daily close above 150-day MA6825.0%+0.5R−8.5R
Daily close above 250-day MA7625.0%+1.9R−9.1R

The 50-day line is the obvious headline. Before you adopt it, run three checks we ran:

1. Look at its neighbours. If 50 days captured something real about Bitcoin’s trend, 100 and 150 days should capture a fair part of it too. Instead the result falls from +19.4R to +7.9R to +0.5R. A real effect usually degrades smoothly as you move the setting; a lucky one drops off a cliff.

2. Ask how often chance does this well. We drew 72 trades at random from the plain rule’s 122, twenty thousand times — a filter that knows nothing. 0.4% of random draws reached +19.4R, so the 50-day result is unlikely to be pure luck as a single test. But we did not run a single test. We ran nine. Taking the best of nine random filters each time, 2.7% of tries reached +19.4R. Rare, not impossible — and nine is a small number compared with what a trader tries in a few evenings of tinkering.

3. Choose on old data, judge on new. Pretend it is 1 January 2025 and you only have 2022–2024. The 50-day would have been your pick (+12.4R in those three years, best of all lengths). In 2025–2026 it made +7.0R on 27 trades while the unfiltered rule lost 6.4R on 49. That is encouraging. It is also +0.26R per trade with a standard error of about 0.25R — one standard error from zero. Twenty-seven trades cannot tell a real edge from a good run.

The honest summary: a short trend filter on the daily chart may help this breakout rule, the 200-day textbook version did not, and nothing here is strong enough to bet size on. That is a normal outcome of a real test. It is also exactly the outcome that a chart-scrolling “test” never produces.

How do you test a filter without fooling yourself?

Write it down before you look, count every signal, and change one thing at a time. A routine you can run with a spreadsheet and a chart:

  1. Fix the setup first. Entry, stop, target and time limit in one sentence, unchanged for the whole test. A filter test that also tweaks the stop is two tests mixed together.
  2. Choose the filter and its setting before you see any result. If you end up trying several, write down how many. The best of ten tries needs far stronger evidence than a single planned test.
  3. Run a veto audit. List the signals the filter refuses and total them separately. If the refused pile did about as well as the kept pile, the filter is not reading anything.
  4. Check the neighbours. Move the setting 25–50% either way. If the result collapses, you found noise.
  5. Hold back the last year or two. Pick on the older data, then look at the recent data once. If you go back and re-pick after looking, the held-back data is no longer held back.
  6. Practise reading the filter live. On a finished chart the trend is obvious. On the hard right edge it is not.
Screenshot of the TradingPrimer chart replay drill on a phone, BTC 4-hour with MA20, MA50, MA200, volume and RSI, dates hidden and nothing to the right of the current bar. Box 2 marks the instruction: Bar 1. Read every frame first, mark your levels, check the MAs and RSI on the higher frame, then decide: long, short, or wait. Dates are hidden on purpose. Box 1 marks the higher-timeframe panel, which describes the daily RSI and whether price is above or below its daily 50-period average. A red note reads: Read the trend first.
Screenshot: the chart replay drill on a phone, BTC 4H. Box 1: the higher-timeframe (1D) read, which tells you where price sits against the daily averages before you decide. Box 2: the instruction, with dates hidden. The window is random each time, so your screen will show different candles and numbers. Taken 7 October 2026.

In replay, apply your filter the way you would live: check the daily picture first, then decide whether the 4-hour signal is allowed, then step forward one bar. You will notice quickly how often, near the line, you are not sure which side you are on — which is exactly the problem the March 2025 numbers describe.

What a trend filter is NOT

  • It is not a signal. “Price is above the 200-day” tells you nothing about when to buy. It only decides whether some other signal is allowed.
  • It is not free. Every filter costs you trades, and in a recovery the trades it costs are often the best ones. Our test lost 8.9R of good 2023 trades to the 200-day filter.
  • It is not a second opinion. A rising average and a breakout above recent highs are both ways of saying “price went up lately”. Our lesson on combining indicators shows why two tools that read the same thing are one tool counted twice.
  • It is not a stop-loss. The filter turning off while you are in a trade does not protect the trade. Only your stop does.

Where this reasoning breaks down

  1. One rule, one coin, one timeframe. This is a 20-bar breakout on BTC 4-hour candles from 2022 to 2026. A filter that did nothing here might help a slower setup, a different coin, or a market that trends for longer.
  2. Small samples. 64 to 122 trades per version. Differences of a few R between versions are well inside the noise.
  3. The order of trades matters. Because the rule holds one trade at a time, refusing a signal frees the slot for a different, later one. That is why the 50-day filter shows +19.4R when the rule is re-run, but the 66 trades it would have allowed out of the original 122 netted only +7.7R. Both numbers are correct; they answer slightly different questions.
  4. No costs. Fees and slippage of about 0.03R per trade would cut every total by roughly 2–4R. The 200-day version would be worse; the best versions would still be positive.
  5. Long only. We did not test shorting breakdowns below the average, which is where a trend filter is often meant to earn its keep.
  6. Random-draw checks are approximate. They sample from the original trades and do not re-run the one-trade-at-a-time logic.

Where should you go from here?

If you use a trend filter today, run the veto audit on your own journal: total the trades your filter would have refused and compare them with the ones it allowed. Then practise applying it bar by bar in the chart replay drill, where the trend is not obvious yet. For the background, read hindsight bias (the same 122 breakouts without any filter), false breakouts, and position sizing, so that a 25% win-rate rule cannot hurt you while you find out whether your filter is real.

FAQ

What is a trend filter in trading?

A trend filter is a condition on a slower chart or slower average that must be true before an entry signal is allowed to trade, for example only taking long trades when the daily close is above the 200-day moving average. It does not create entries; it only removes some of them.

Does the 200-day moving average filter work for crypto breakouts?

Not in our test. On every 20-bar breakout on the BTC/USDT 4-hour chart from January 2022 to September 2026, adding a daily-close-above-200-day filter cut the trades from 122 to 69 and changed the result from +1.2R to minus 1.7R. It avoided 2022 losses but missed the start of the 2023 rally, because Bitcoin rose 26% from its low before the filter turned on.

Which moving average is best as a trend filter?

There is no reliably best one. In our test the 50-day version made +19.4R, but the 150-day made +0.5R and the 200-day lost 1.7R. When a result swings that much with the setting, the best setting is probably partly luck. Pick one before testing and check that nearby settings behave similarly.

How do I know if my trend filter actually helps?

Run a veto audit: list the trades your filter would have refused and total their results separately from the trades it allowed. If the refused trades did about as well as the allowed ones, the filter is not adding information. Then hold back recent data, choose on the older part and check once on the newer part.

Should I close a trade when price drops below the 200-day?

That is a separate rule, not part of a trend filter. Most traders use the filter only for new entries and let the stop and target manage open trades, which is how this test was run. If you want an exit rule based on the average, test it on its own.

Risk reminder: education, not advice. Crypto is volatile; most retail traders lose money, and you should never commit money you need.

Every figure on this page is calculated by TradingPrimer, not quoted from a source. Data: Binance BTC/USDT spot 4-hour candles, 31 December 2021 to 30 September 2026 (10,406 candles), signals from 1 January 2022; Binance BTC/USDT daily candles from 1 January 2021 for the daily averages. Breakout rule: close above the highest high of the previous 20 candles after the prior candle had not; entry at that close; stop at the lowest low of the last 10 candles including the signal candle; stops under 0.3% or over 6% skipped; target 2R; stop counts first if both are touched in one candle; trades open after 60 candles closed at that candle’s close; one trade at a time. Filters use only daily candles that had closed before the 4-hour signal candle closed. Moving averages are simple averages of daily closes; the 4-hour EMA 200 starts after 600 candles of warm-up. “Worst run” is the largest fall in cumulative R from a previous peak. Random-filter checks: 20,000 random draws of 72 trades from the plain rule’s 122; 5,000 rounds of the best of nine random filters with 64–90 trades each. No fees, funding or slippage. Times are UTC.