Backtesting Options: Selling SPY Puts on RSI(2)

Let’s try the good old strategy for RSI(2) mean reversion.
Buy on Rsi(2)<30
Sell on Rsi(2)>60
Execution is on the Open of the next day.
This is what trading the SPY etf looks like.

How about using the same signals and selling 10, 1-point away from the floor price, front month Puts.*
Again, we sell 10 Puts right below the SPY price. 
So if SPY is at 145.7 we would sell the (floor(145.7)-1) 144 strike Put.
We sell the front month before the 11th of the month, otherwise we shift to the next month.
We cover the position on an Rsi(2) sell signal or let it expire.
All Buy and sells are on the next day Close and on the ask for buy orders and bid for sell orders.**

Of course there are money management differences: The top chart reflects %-of-equity money management (hence, the compounding), while the bottom does not (it buys 10 contracts, rain or shine) . But otherwise, I am surprised at the similarity in the shape of the equity curve. Where is the extra time premium I would expect on buying the fear? 
How about selling further out of the money Puts. 1–>5 points away from the current price:

Similar results. Any thoughts?

*Many thanks to Dave. for his help.
**I will caution the reader that backtesting options is fairly involved and may contain errors including but not limited to: historical data errors, programming errors, underestimation of slippage and execution costs, unrealistic assumptions on price fills, etc. I use EOD data, so there is no information on the open/high/low of the day. 

8 thoughts on “Backtesting Options: Selling SPY Puts on RSI(2)”

  1. Hi Sanz:

    I have always wanted to test my equity signals on options but wasn't aware of a database to do this with. It looks like the database is giving you 1 – 5 points away from the money options. My questions are:

    1.) What data base did you use?
    2.) How difficult was it to do?

    Thanks for your excellent post.

  2. Did you use actual options data, or hypothetical prices based on VIX? If the latter, what assumptions did you use for skew?
    Regardless, the equity curve you've posted looks about right to me for that time frame and the system you've designed. The vol premium is much greater the further away you sell. But the biggest problem with using RSI(2) with selling options is that you're not letting theta work for you when you close out the trade so early. You only seem to be letting the option decay when it's below your strike. A much better way to use mean reversion is to sell >1SD below the market (or a strangle), knowing that a trend is unlikely to develop strongly enough to overcome time decay.

  3. I did not make assumptions and extrapolate, although that could be an interesting undertaking. The data I used originates from OPRA. Yes, there is quite a bit of work involved. As for RSI(2), I would think that even those few days of theta decay would "boost" performance to our favor. David, I could try to use bands (buy at -x*SD) and hold for longer. What I am seeing so far, is that selling options is riskier than I originally thought and you need protection. Feel free to email me for further questions.

  4. Hi,

    Did you use the RSI signals to build continuous option series (i.e. similar to Futures continuous series) and simulate a buy and hold of that series, or did you use a more dynamic approach that selects which option to trade during the process of backtesting?

    I've used the first approach to backtest SPX option strategies from 1990, but I'm still looking for a way to backtest more dynamic strategies.


  5. Hi Lex,
    I used the second approach. The backtester picks the correct contract to trade based on current date and underlying price. So it works normally with the usual rules, just trades options (month away, points away) instead of SPY. Downside is that I carry 12500 contracts in the DB just for SPY.

  6. Vlad,
    So far it seems that selling further OTM puts may be a better choice. But one would have to realistically try this to check slippage in buying low-priced options.
    I checked out your platform. Looks good. Maybe I'll try out. I always like to check out new things.


Leave a Comment