# Writing an Options Strategy Backtester

I've been doing some digging, and this question has been asked many times in various forms over the years -

In particular I am interested in spread trading. From these I've gathered backtesting these strategies is pretty much relegated to commercial tools, or professionals writing their own. I understand the basic idea of backtesting, and I'd like to make my own. Partially because right now I'm just a hobbyist who doesn't yet have the capital to afford a really nice tool, and partially because I would like to learn exactly how it works from the inside.

One post mentions that an options backtester is not much different than an equity backtester. It's possible that this is true - but I don't understand how. For options backtesting, we'd need historical options data (to get the bid/ask, strike, expiration, delta, imp. vol., etc), and also historical data for the underlying contract in order to generate signals. We would also need to properly expire the options. Perhaps I am over-complicating it.

Is there any resources that really dive in depth to how their backtester was made? Some of the papers in the 4th link go into it a little bit in the methodology section, but it seemed to me there wasn't too much to chew on in most of them. Most likely because discussion of the backtester itself is tangential to the actual paper.

Alright this is a good question. I've been there before. As you said, backtesting options will be almost the same as stocks, but with more data to play with (Greeks, volatility, theoretical prices, etc)

The most important thing here will be your historical data. Your source of data. In order to backtest options, usually you need to have the whole historical option chain.

You won't find this on Internet for free (Don't even try it) However, there are some companies offering this, and let me tell you is not cheap at all.

Personally, I ended up writing another software that periodically will scan the whole option market, collecting the data from the chains. This is a "huge" database that I hold for my backtesting projects.

So I suggest you do the same. First focus on the data.

Good luck

• Where do you scrape your options data from? – user20664 Jun 28 '16 at 7:45
• I think pandas can do it pandas.pydata.org/pandas-docs/stable/… – Taylor Jun 28 '16 at 16:02
• There are many sites where you can scrape options. Ivolatility.com is the one I use – Ariel Silahian Jun 28 '16 at 16:04
• @ArielSilahian gave another answer below and connected w you on Linkedin. Let me know what you think. – jason m May 30 at 20:58

In terms of computational difficulty, I do not see Options backtesting in the same league as equity backtesting. There are more variables involved, and the dataset is much larger. But the bottom line though is that Options Backtesting will always cost money whether you purchase the data and develop the model yourself or use a third party solution.

I find backtesting to be an integral part of my Options Trading. To me, it's an essential part of the process. So, together with my business partner, we developed a tool to backtest Options. We then thought that other traders might find it useful too and began promoting it as a commercial tool.

We would love for you to try it out and have your feedback. Here is an invite for special beta testing - no cost- so you can post here your impressions.

For whoever stumbles upon this, as I did.

The dimensionality of the problem is so much larger. If someone tells you backtesting options is the same as backtesting stocks or any delta-1 underlying, they are entirely missing the point.

1. Data - Option data is expensive. The biggest favor you can do yourself is to start gathering data as early as possible. There are various ways to do this either as a student or as a practitioner, or both. Scrape, get vendor data for backfill or just be patient.
2. Read books about how to think about options. Options are a different mindset and different dynamic than underlying (delta-1).
3. Start by building a backtest on a simple structure (spread, etc). Find ways to explain your PnL to yourself in the backtest (is it due to delta, gamma, theta, etc). Does your math make sense? Can you convince yourself that you are correct?
4. Build a more complicated structure and repeat step 3.
5. Build ways to test any arbitrarily complex structure and find ways to determine what predicts the outcome of your structure. When do you exit, when do you roll, etc. This, part 5, is incredibly difficult and takes extreme amounts of time and care.

I think this is an unfortunately very difficult problem.

To make some of the above easier, you may want to use open source solutions such as quantlib but even that is not free (time and learning curve, etc).

These are all quite hard problems that may take you months to solve.