On a recent discussion on our EasyLanguage Mastery FaceBook group, a reader pointed out an interesting indicator called, VIX Fix. The VIX Fix was designed by Larry Williams to overcome the limitations of the VIX. What would that be? It's only available for the S&P 500, Nasdaq Composite, and DJIA. But what about the other markets?
Larry created a simulated or synthetic VIX to be used on other markets. This indicator was originally published in Active Trader, 2007. Below is the formula:
VIX Fix = (Highest (Close,22) – Low) / (Highest (Close,22)) * 100
The formula uses the price of the market to estimate volatility. To calculate it, you find the highest close of the past 22 bars and then subtract the low of the current bar. The result is divided by the highest close of the last 22 bars. Finally, the result is multiplied by 100 to scale the indicator readings. Williams chose the 22-day period because, like the VIX, it represents the maximum number of trading days in a month.
What does it look like?
I coded up this indicator and placed it on a chart of the S&P. I then added the Synthetic VIX and the real VIX. Thus, we can now compare the real VIX vs our synthetic VIX. The chart below is of the S&P futures (in green). Below it is our Synthetic VIX (in red). Finally, at the bottom is the real VIX (in orange).
So the Synthetic VIX looks like a fairly good representation. You can see that our Synthetic VIX follows the traditional VIX closely. We see VIX extremes tend to coincide with price lows. This makes sense as fear rises as the market plunges. As pointed out in the original article, fear is a strong emotion so you can clearly see buying opportunities as the Synthetic VIX spikes. Selling opportunities are a bit more difficult to discern.
Let's build a simple strategy based on the Synthetic VIX just to see how well it can capture buy and sell short opportunities.
Normalizing With Percent Rank
Before we build our strategy I want to first normalize the Synthetic VIX values. You will notice they are unbound, thus it's a bit more difficult to determine buy and sell signals. To fix this I'm going to use TradeStation's built-in function called, Percent Rank. This function can be used to evaluate the relative standing of a value within a data set. It does this by ranking today's Synthetic VIX value compared to the recent past.
Using the Percent Rank function generates a ranged value in the form of a percentage between 0 and 100. This makes it easier to locate our buy/sell signals.
VixFix = VIX_Fix( 22 );
Intportion( percentrank(VixFix, VixFix, 44 ) * 100);
In the code above, we are first computing our Synthetic VIX value by using our custom function, VIX_Fix with a look back of 22. Next, we use the Percent Rank function to rank the current Synthetic VIX value against the last 44 values. I chose 44 because it's simply a doubling of the default 22 lookback period of our Synthetic VIX function. Thus, our percent ranking of today's Synthetic VIX value will be ranked against the past 44 values in our data set. The percent rank is a percentage as a decimal number. I then multiply this number by 100 and drop the fraction (IntPortion function) to give us an integer between 0 and 100.
System Rules
- Go long when the ranked Synthetic VIX value is above 95%.
- Go short when the ranked Synthetic VIX value is below 5%.
Environmental Settings
I coded the above rules in EasyLanguage and tested it on the E-mini S&P futures market going back to 1998. Before getting into the details of the results let me say this: 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, 2000 through December 31, 2018
- One contract was traded for each signal
- The P&L is not accumulated to the starting equity
- No deductions for slippage and commissions
- There are no stops
We can see this indicator does pick the low points in price rather well. While there are some well-timed short trades in the image above, overall the sell side signals are not great. You can see that by looking at the performance report below. This fact is not too surprising when you have a long bias in the S&P.
Looking at this type of indicator it reminds me of the 2-Period RSI strategy I've worked on in other articles because we are doing something similar. That is, looking to fade price extremes. But with the 2-period RSI strategy, we used a short term exit based upon price crossing a 5-day moving average. Let's try that here.
SellSignal = Close > Average( Close, 5 );
CoverSignal = Close < Average( Close, 5 );
If ( SellSignal ) then Sell next bar at market;
If (CoverSignal ) then Buytocover next bar at market;
Below is an example of the short trades and it does a decent job of locating short-term opportunities.
This simple indicator worked well enough to actually show a small profit on the short side which is difficult to do on the S&P. This tells me that this indicator may very well be helpful in building a profitable trading system.
I've not tested this indicator on other markets such as gold or oil. Nor have I experimented much with testing other filters and exits. But I'm pleased with what I've seen given the first few tests on the S&P. So, can you use this in your trading? It may be worth your time to perform some tests.
You can download a copy of this indicator within our EasyLanguage Mastery Insider subscriber's area. Not a member? It's free when you join our email list! So worth it! 🙂
Also, join the discussion on our private Facebook Group. Discussions on this indicator and other conversations are happening right now. So join us!
Very nice article, thank you. I think there might be a tiny typo in there. The formula Intportion( percentrank(VixFix, VixFix, 200 ) * 100); should probably say 44 instead of 200. Cheers, Max
Thanks for pointing that ou Max! I corrected the article.
Also, if you use Tradestation and skip the Intportion and *100 “magnifier”, you can chart both, the VixFix and the %rank of it in the same indicator section.
Never thought of that. Thanks for the idea!
Is that percentile rank function using data only observed in the past? How long is the period percentile rank calculated over?
Yes, only using data from the past. The period is 200.