Bankable ETF Strategy: VIX Rotation

By Lawrence

I am going to present a different kind of swing trading strategy this time using the CBOE Volatility Index VIX to trade S&P 500 ETF (SPY) and Dow 30 ETF (DIA).

CBOE VIX is a measure of the implied volatility of the index options on the S&P 500 cash index. Traders give it the nickname "fear index" as it shows the traders’ expectation of volatility in the stock market over the next 20 to 30 days time span. The special characteristics of VIX make it a perfect candidate for the construction of breadth based trading models.

The Performance

Following chart shows the approximate net points gained on SPY since 1996.

SA VIX Rotation_20121108_130401

Notable characteristics of the model:

1. Impressive overall performance

2. It does not produce much profit when VIX is locked in tight range

3. No significant drawdown from #2 implies driving bias is very strong

4. Performs well in both long and short trades

5. Average duration per trade is about 6 trading days

6. Combined win rate stands at around 66%

7. Stable win rate across many years

8. As good as price based models

9. Works equally well on DIA due to the high correlation between SPY and DIA.

10. To control risk from news shock, a 2.5% stop can be employed. The performance on the model with stop is about the same as the raw model as the 2.5% stop is rarely triggered.

 Members only content, login now or sign up to view the rest of this article.


  • MidKnight November 12, 2012 at 6:32 pm

    Thanks for the article Lawrence. I wonder, do you have any hints for possible breadth(s) in FX? I’ve tried a few basic unweighted Euro or Sterling baskets with simple calculations such as 3 or 5 day highs/lows but not really finding much yet. Any ideas/hints?

    With kind kind regards,

    • Lawrence Chan November 12, 2012 at 7:14 pm

      I have a rotation model on FX for long term switching.

      In a sense it is breadth study of the pairs.

      Need some time to write up an explanation of what to look for and how it works.

  • MidKnight November 13, 2012 at 6:44 pm

    That’d be swell, Lawrence. Due to the 24hour nature of FX, I like to try and find swing trade or mechanical tendencies in these markets. I eagerly look forward to it!

    As an aside, some feedback for this site. I’ve been a long time “fan” of your efforts to the trading community and try to read everything you write. Your recent more frequent postings about usable ideas was my primary reason for signing up into the premium services.

    Thank you Lawrence.

  • zeke April 23, 2013 at 11:55 pm

    Can you possibly give pesudo-code for this?
    that is, you write
    3. Go long when both 5 period simple moving average on VIX and VIX itself are rising for 1 bar at the same time, while SPY close for the day is below its midpoint

    so I want BAR[CLOSE,D,SPY]<(BAR[HIGH,D,SPY]+BAR{LOW,D,SPY])/2 (that is SPY close for the day is below its midpoint) now what does "VIX rising for 1 bar mean"?? 1 bar = 1 DAY for daily date so it should be BAR[CLOSE,D,VIX] > BAR[CLOSE,D,VIX,1] (where ,1 means 1 day ago).

    am i on the right track here?

    • Lawrence Chan April 24, 2013 at 8:42 pm

      “rise” is visual description where the value moved higher from one day to next.

      not sure about the syntax you are using so cannot telll if it is what I mean.

      will probably post the actual code in the download area.

  • zeke June 6, 2013 at 7:11 am

    Thanks for all your great work Lawrence!

    Some questions if possible when you have the time to answer.

    On your signals page you say this Bankable etf strategy has a 41% annualized return.

    But if I look at your equity graph above, say it was 66 in 2001 and 280 in 2011 (rough guesses). That’s around 15.5% annualized. How are you getting 41%?

    (The same questions hold for your other ETF strategies too, btw).

    Also, for the strategy above, do you know how its done YTD? I coded it up (I think!) and this year it doesn’t seem to be working well.


    • Lawrence Chan June 6, 2013 at 8:22 pm

      The annualized return is based on where the starting point is with the model.

      e.g. If the testing period starts from early year 2000, the percentage gain will be below 10% due to the initial starting point is way up there.

      I standardized my backtest to all start from the same period long time ago thus the initial value can be quite low thus the higher percentage.

      • Lawrence Chan June 6, 2013 at 8:32 pm

        The goal is to see if a model is all terrain or just a short term (i.e. 4-5 yrs, single cycle) phenomenon. Hence testing a daily model in 1990s is necessary to establish the baseline behaviour.

    • Lawrence Chan June 6, 2013 at 8:54 pm

      Re: Performance this year

      It’s been doing fine until the blow-off top in May. And this is also the inherited issues with a basic model showcasing just the driver because the model will tank thru all situations. For refined models, you put in filters and money management rules to stop the model from trading this type of environment.

      Once this special time period is over, I am sure this model will return to its normal self.

      The eventual goal is to have the performance of various models updated periodically (and automatically) so that I do not need to do it myself. =)

      • Manishhttp August 13, 2015 at 7:09 am

        hi – do you somewhere have a history / trail of the model signals ?

      • Lawrence August 13, 2015 at 7:16 pm

        Have a plan to release them as special reports.

  • eminibandit May 8, 2018 at 8:12 am

    have you ever released these special report updates? thanks

    • Lawrence May 30, 2018 at 11:19 pm

      Lots of things happened over the past 2 years. Am going to have major updates to the site soon.

  • You must be logged in to comment. Log in