Does The Predictive Voss Indicator Work?

The August 2019 issue of Technical Analysis of Stocks & Commodities magazine John Ehlers proposed an interesting looking indicator. This indicator is a cycle indicator that John called a Voss filter. The name of the article is "A Peek Into The Future." Of course, this indicator is not magic. We're not looking into the future at all. John puts it this way when describing his indicator, "While it can not really look into the future, it can provide signals in advance of signals used by other traders—and that may be enough to create a successful trading edge." So let's take a look at this indicator and see if it holds any value.

I'm not going into the details on how the indicator works. If you would like more detailed information about the Voss indicator, please review the original article in the August 2019 issue. The code is also available if you're a subscriber to the magazine. By the way, I do recommend a subscription to the magazine because it's an excellent source of trading ideas. Well worth the price!

In the original article, there is a demonstration of the indicator on the daily chart of SPY. Below is a screenshot of a daily chart of the Emini futures with the Voss indicator applied with the default values. A simple strategy is applied with the default values, as well. The strategy enters long when the Voss filter indicates a potential bullish turning point. Likewise, the strategy goes short when the Voss filter indicates a potential bearish turning point.

Before we look at the results here are the environmental settings used for this article. 

Environmental Settings

All the tests within this article are going to use the following assumptions:

  • Starting account size of $25,000
  • Dates tested are from January 1, 2006 through November 18, 2019
  • One contract was traded for each signal
  • The P&L is not accumulated to the starting equity
  • $30 was deducted per round trip for slippage and commissions
  • There are no stops

Baseline Results

Below is the equity curve for trading the E-mini futures contract based upon the default values of the Voss filter.  The Voss indicator has two input values. A lookback period (default 20) and predict period (default 3). 

The results don't look that great. The long side holds more promise than the short side. Poor performance on the short side is typical as the stock index markets have a long side bias. With that in mind, let's focus on the long side. We'll call the long-only trades our baseline (see table below).

Baseline

Net Profit

$47,837

Profit Factor

1.30

Total Trades

240

%Winners

50%

Avg.Trade Net Profit

199.32

Return on Capital

20.30%

Largest Losing Trade

$7,160

Adding A Regime Filter

My next step would be to add a simple moving average to act as a regime filter. In this case, I'm going to add a 200-period SMA and only take the trade when the price is above the SMA. Using this simple filter should keep us taking long trades only when the overall trend is up.

Baseline

Regime Filter

Net Profit

$47,837

$50,600

Profit Factor

1.30

1.48

Total Trades

240

185

%Winners

50%

52%

Avg.Trade Net Profit

$199.32

$273.51

Return on Capital

20.30%

202.40%

Largest Losing Trade

$7,160

$7,160

So we have a small improvement but an important one. We eliminate some unproductive trades, thus producing slightly more money, which generates a more significant profit per trade. Our most significant losing trade is still the same. Keep in mind; we don't have any stops.

Short-Term Weakness

From my experience, the Emini S&P favors those who open new long positions when the short-term price action is falling. Put another way, the Emini S&P is a short-term mean-reverting strategy. With this in mind, let's add another simple moving average with a shorter loopback period. With this new shorter-term SMA, we want price to be BELOW this moving average. When the price is below the SMA, this indicates price is a short term pullback.

I added this second simple moving average to the code and chose a value of 40 for the lookback period. Below are the results.

Baseline

Regime Filter

Short-Term Weakness

Net Profit

$47,837

$50,600

$35,340

Profit Factor

1.30

1.48

1.76

Total Trades

240

185

66

%Winners

50%

52%

61%

Avg.Trade Net Profit

$199.32

$273.51

$535.45

Return on Capital

20%

202%

141%

Largest Losing Trade

$7,160

$7,160

$7,160

Well, we reduced our overall profit but increased our profit factor and average net profit per trade. However, we're not getting very many trades. At this point, I started thinking; maybe this would work on an intraday chart?

Will This Work Intraday?

I next created a 240-minute chart and applied our baseline to it. The ugly results are below in the table.

Baseline

Net Profit

$33,410

Profit Factor

1.07

Total Trades

240

%Winners

47%

Avg.Trade Net Profit

$20.96

Return on Capital

133%

Largest Losing Trade

$6,297

Just as before, let's add a simple moving average to act as a regime filter. Because we're now working on an intraday chart, I'm going to add the daily symbol to Data2, which allows me to calculate the regime filter on the daily data.

Baseline

Regime Filter

Net Profit

$33,410

$15,942

Profit Factor

1.07

1.05

Total Trades

1,594

1,207

%Winners

47%

46%

Avg.Trade Net Profit

$20.96

$13.21

Return on Capital

133%

63%

Largest Losing Trade

$6,297

$6,297

Adding the regime filter took our strategy in the wrong direction! We are making less money, a smaller profit per trade and our profit factor fell — time to be a bit creative. Just because our daily regime filter worked on the daily bar, does not mean it's going to work the same way (or at all) on our 240-minute chart.

What happens if we invert the regime filter? I did that and ran an optimization over the values 10 - 200. I found a stable region and picked the middle ground - 60 in this case. Below are the results.

Baseline

Inverted Regime Filter

Net Profit

$33,410

$55,12

Profit Factor

1.07

1.25

Total Trades

1,594

575

%Winners

47%

52%

Avg.Trade Net Profit

$20.96

$96.54

Return on Capital

133%

222%

Largest Losing Trade

$6,297

$3,972


Inverting the regime filter got us to the point where we're generating more profit with far fewer trades. That's moving in the right direction. We see a massive jump in the average profit per trade.

I then went added another simple moving average filter to the 240-bar chart to see if this would improve the performance. This second filter is similar to what we did with the daily chart when we looked at a shorter-term simple moving average. Well, I'm doing the same here but also moved to the primary data set - the 240-bar. Doing this should be suitable for a short-term price action filter. I tested both above and below this short-term moving average and below it produced the best results.

Below are the final results with our two moving averages added.

Baseline

Inverted Regime Filter

Inverted Short-Term Filter

Net Profit

$33,410

$55,120

$55,510

Profit Factor

1.07

1.25

1.35

Total Trades

1,594

575

429

%Winners

47%

52%

52%

Avg.Trade Net Profit

$20.96

$96.54

$129.39

Return on Capital

133%

222%

222%

Largest Losing Trade

$6,297

$3,972

$3,972

Optimized!

I then decided to run TradeStation's optimize across the two simple moving average input values and on the period value for the Voss indicator. Remember, the Voss inidcator has two inputs. One is a period and the other is a predict value. The predict value is recommended to not go byond three. I'm ignoring this value and keeping at three. So, here is what we're optimzing.

I'm also leaving the 40% of the most recent price history as out-of-sample data. After the optimization was complete I simple picked the best reforming based upon net profit. The optimized input values were:

  • Regime: 10
  • Regime 2: 80
  • Period:15


Baseline

In Sample Data

Out-Of-Sample Data

Net Profit

$33,410

$44,100

$23,710

Profit Factor

1.07

1.36

1.20

Total Trades

1,594

430

299

%Winners

47%

53%

54

Avg.Trade Net Profit

$20.96

102.56

$79.30

Return on Capital

133%

176%

131%

Largest Losing Trade

$6,297

$3,972

$6,297

Conclusion

The Voss indicator may hold some promise, but it's not overly impressive, in my opinion. At least, in the way, I'm using it I don't see much value. During this article, I was using the Voss indicator as the primary driver for my long signals. We know it's not great for locating shoring opportunities, which is a difficult task to pull off with stock index markets. Thus, it shows some promise on the long side. Feel free to experiment with it in your code as, for some situations, it may very well perform well as a filter. As always, experiment!

The Voss indicator code was downloaded from the Technical Analysis of Stocks & Commodities magazine.

About the Author Jeff Swanson

Jeff is the founder of EasyLanguage Mastery - a website and mission to empowering the EasyLanguage trader with the proper knowledge and tools to become a profitable trader. Join our EasyLanguage FaceBook group to interact with other EasyLanguage traders! Click the FaceBook icon to join.

follow me on:
  • Al says:

    Nicely done Jeff, a great example of how you execute your thinking process to the code…you teach great….thx

  • >