Idea in brief
A regime filter answers one question: are new buys allowed right now. The strategy itself, its entries and exits stay the same. Here are two versions of such a filter. Both look at the index, not at the traded stock.
Jack Corsellis looks at the monthly chart of the NASDAQ Composite (ticker IXIC) and its monthly EMA 10. The month closed above the average: green zone, continuation breakouts can be traded. Below: red zone. Jack shows the same coloring on the Dow Jones over 120 years.
The author of the Financial Wisdom channel looks at the index's weekly chart. If the 10-week EMA crosses below the 20-week EMA, the market, in their words, enters a hostile phase. The opposite crossover means the uptrend is back. On a negative crossover or a break of recent lows, the author goes back to cash and trades cautiously.
Why it might work
A continuation breakout requires the stock to already be in a trend and to have built a base. In a rising market there are many such stocks, in a falling one few. Jack shows this with a self-built database of breakouts from 1986–2022: according to Jack's data, 91% of them fell in months when the NASDAQ Composite closed above the monthly EMA 10.
This figure is easy to misread. It says when breakouts happen, not how they end. The table on the slide has neither the average trade nor the win rate. Besides, 74% of months were green. If you recalculate the author's table per month, you get about 8.4 breakouts per green month versus 2.4 per red one. The difference in frequency is roughly 3.5 times, not ten. Whether breakouts in the red zone are worse cannot be seen from this data. That is the main question to test.
The Financial Wisdom logic is simpler. The market rises most of the time, and losses pile up when a trader keeps buying into a correction. The filter does not predict a correction, it switches off buying when one is already underway. The video has no test results, only examples on the chart.
Rules
How to read the month and the week without look-ahead (Finetiq)
Jack assigns a breakout to the month that closed above the average. On the day of the breakout, that month's close is not yet known. You cannot trade this way, so the filter takes the last closed month or week.
// the strategy runs on daily bars of the traded stock
// the index is read as a second symbol, the higher timeframe only from closed bars
M_Close[1] = the index's close for last month
M_EMA10[1] = EMA(monthly closes, 10) as of last month
// the new value appears on the first trading day of the following month
Variant A. NASDAQ Composite monthly EMA 10 (Jack Corsellis)
Index = NASDAQ Composite (IXIC) // author
GreenZone = M_Close[1] > M_EMA10[1] // author: the month closed above the monthly EMA 10
RedZone = NOT GreenZone
IF GreenZone THEN new strategy entries allowed // author: continuation breakouts in the green zone
IF RedZone THEN new entries forbidden // Finetiq: a ban, not a size reduction
// Finetiq: open positions are managed by their own exit rules
// Finetiq, fast reading for testing: the current month, today's close as provisional
EMA_live = M_EMA10[1] + 2 / 11 * (DailyClose - M_EMA10[1])
GreenLive = DailyClose > EMA_live // uses only data known today
Variant B. Weekly EMA 10 and 20 (Financial Wisdom)
Index = S&P 500 // author: the examples in the video are on the S&P 500
// Finetiq: for NASDAQ stocks also test the NASDAQ Composite
W10 = EMA(weekly closes, 10) as of the last closed week
W20 = EMA(weekly closes, 20) as of the last closed week
Hostile = W10 < W20 // author: after a downward crossover and until the opposite one
Uptrend = W10 > W20 // author: the trend is back
// additional exit to cash (author): a break of the index's recent lows
IF W_Close[1] < Lowest(W_Low, 10)[2] THEN CashFlag = TRUE // Finetiq: 10-week window, the author did not name it
IF W_Close[1] > W10 THEN CashFlag = FALSE // Finetiq: reset
EntryAllowed = Uptrend AND NOT CashFlag
What to do with open positions
Mode = BLOCK_NEW // Finetiq, base reading: only a ban on new entries
Mode = GO_FLAT // author (Financial Wisdom): go back to cash
// IF NOT EntryAllowed THEN EXIT long positions AT NEXT BAR OPEN
Plugging into cards in the base (Finetiq)
// example 1: qullamaggie-breakout. There the regime is based on the NASDAQ Composite daily EMA 10 and 20
EntryAllowed = RegimeOK AND GreenZone
// compare three runs: only RegimeOK, only GreenZone, both
// example 2: new-high-breakout-ma10-exit on NASDAQ-100 stocks
IF Close > Highest(High, 200)[1] AND Uptrend AND NOT CashFlag
BUY AT NEXT BAR OPEN
// the exit on a close below MA10 does not change: the filter controls only entries
Parameters
| Parameter | Value | Source |
|---|---|---|
| Index, variant A | NASDAQ Composite | author |
| Monthly average | EMA 10 | author (the line on Jack's chart is a simple average) |
| Which month to use | the last closed one | Finetiq |
| Index, variant B | S&P 500 | author (examples in the video) |
| Weekly averages | EMA 10 and EMA 20 | author |
| Recent lows window | 10 weeks | Finetiq |
| Action in a bad regime | ban on new entries | Finetiq |
| "To cash" variant | close long positions | author (Financial Wisdom) |
| Average warm-up | 30–40 months, 60–80 weeks | Finetiq |
What to test
- Frequency or outcome. Take your breakout strategy and label each trade with the zone on the entry date. Compare the average trade, win rate and profit factor in the green and red zones. Jack's statistics answer only the question of how many breakouts happened where.
- Look-ahead in the original figure. Label the same trades in two ways: by the close of the month in which the entry occurred (as in the author's table) and by the close of the previous month. If the share in the green zone drops noticeably, part of the 91% is explained by a strong month generating breakouts itself.
- EMA versus SMA. The table on the slide is labeled EMA, the line on the chart is a simple average, and in the second video Jack says outright that the Excel chart uses an SMA. Run the filter with both and count the months where the zones differ.
- Parameter neighborhood. Monthly average 8, 10, 12. Weekly pairs 8/17, 10/20, 12/26. If the result holds only at 10 and 10/20, the filter is fitted to the examples.
- Blocking entries or going to cash. Compare BLOCK_NEW and GO_FLAT by maximum drawdown, return and number of extra trades. Going to cash pays costs on every false switch.
- Speed and errors. Count regime changes per year and the lag in weeks relative to the tops of 2000, 2007 and 2021 and the bottoms of 2009 and 2022. The monthly filter reacts more slowly, the weekly one switches in vain more often.
- Which index. For NASDAQ stocks compare IXIC, NASDAQ-100 and S&P 500. A filter on someone else's index can block entries while your group of stocks is rising.
Platform notes
TradingView (Pine Script)
- The index month on a stock's daily chart:
request.security(idx, "M", close[1] > ta.ema(close, 10)[1], lookahead = barmerge.lookahead_on), whereidxis the index symbol. Without[1]underlookahead_onthe backtest will see the current month's close, which is exactly the error sitting in the original statistics. - Calculate the EMA inside
request.security, on the monthly series. An EMA 10 of monthly values stretched across daily bars will give different numbers. - The weekly variant works the same way: timeframe
"W"and a[1]shift on both averages. - A strategy trades only the chart symbol. The filter reads the index without problems, but a basket of stocks with it cannot be tested in Pine, only one stock at a time.
MultiCharts and TradeStation (EasyLanguage)
- The index is added as a second data stream with a monthly or weekly interval (
Close of Data2). - Recalculate the EMA on Data2 only when a new Data2 bar appears. If
XAverageis called on every daily bar of Data1, you get an average over daily bars with a repeated monthly value. - Plot the filter value on the chart and check the zone change dates against the index's monthly chart. In the middle of a month the filter should see last month, not the current one.
XAveragestarts from the first value on the first bars. A monthly EMA 10 needs 30–40 months of history, otherwise the zones at the start of the test will be wrong.
MetaTrader 5 (MQL5)
- The NASDAQ Composite is almost never offered by CFD brokers. Usually there is the Nasdaq-100 (USTEC, NAS100) or the S&P 500. These are different indices: the zones must be recalculated, not carried over from the author's dates.
- Take the average
iMA(symbol, PERIOD_MN1, 10, 0, MODE_EMA, PRICE_CLOSE)and the month's close from the bar with index 1. Bar 0 is not closed yet, and on history the signal will see an unfinished month. - Weekly and monthly bars are built on the broker's server time. Check the zone change dates against TradingView, at least for 2008 and 2020.
- Monthly CFD history is often shorter than 15 years. Three years will go to EMA warm-up, and the test will include only one or two bear markets.
Where the idea can break
- Jack's statistics describe breakout frequency. The video has no trade results by zone, so an improvement of the strategy from the filter is not proven.
- The table assigns a breakout to a month whose close is not yet known on the day of the breakout. A filter based on the previous month lags by a month, and its share of breakouts in the green zone is most likely below 91%.
- The breakout database was compiled by the author from book examples. How the charts were selected is not explained, and there is no open data.
- On the slide the table is labeled EMA, while the line on the chart is an SMA. Which average is behind the figures is unclear.
- The Financial Wisdom variant is shown on selected episodes: the dot-com era, 2008, 2022, March 2025. The "recent lows" window is not named. The video ends with an ad for the author's scanner and community.
- The monthly filter switches rarely. By the time a month closes below the average, the index may already have fallen 10–15%, and after a V-shaped bottom the permission to buy arrives a month or two late.
- An index filter knows nothing about your group of stocks. Individual sectors rise even in the red zone.