Backtests
Quotes and Data Quality

Historical Data

We put a lot of energy and focus into where our historical data comes from and how we transform that data to provide the most realistic picture of what each option contract is worth at a specific point in time. This page explains where our data comes from and how we use it.

Symbols

The following symbols can be backtested:

AAPL, ADBE, AMD, AMZN, GLD, GOOG, IWM, META, MSFT, NFLX, NVDA, QQQ, RUT, SPX, SPY, TLT, TSLA, USO, VIX, VXX, WMT

Timeframe

Our backtests include historical quotes every minute starting in January 2016 for every option under 130 days to expiration.

Smoothing Bid/Ask Quotes for One "Average Quote"

Most data providers only provide a single bid and single ask for each interval (whether that be minutely or daily). Likewise, most backtest engines only use a single bid and ask quote per interval. This means that the quote over the entire minute is represented by the option's value at just one tick. In reality, the value of that option changed many times over the prior minute, and as such, its fair value varied from that one tick.

To provide a realistic picture of an option's value every minute, rather than use a single bid and single ask to form a quote, we actually use all of the following:

  • Opening Bid
  • Opening Ask
  • High Bid
  • High Ask
  • Low Bid
  • Low Ask
  • Closing Bid
  • Closing Ask
  • Opening Trade Price
  • High Trade Price
  • Low Trade Price
  • Closing Trade Price

We analyze all of the data points above every minute and smooth them out to determine what we consider an "average quote" which is fair value for that option not just at one tick in time but over the entire interval. Whenever you see a bid/ask quote in a backtest, the values that you see are a result of our quote smoothing algorithm:

Document image




Quotes and Fills at "Invalid" Prices

When trading an index option (SPX, RUT, NDX), your actual trade prices must be at $0.05 increments. You cannot trade an SPX option for $0.07, but rather, it must be $0.05 or $0.10. Because of our backtest quote smoothing, we do publish and fill quotes at all increments (ie: $0.07) and not just round $0.05 increments.

This is okay and by design!

If we were to force all trades at their designated increments, this can cause a certain "pull" on a backtest in one direction. When an SPX quote is $0.05 to $0.10, sometimes you will fill at $0.05 and sometimes you will fill at $0.10. If our backtester rounded, it would always round one direction and pull your results that way. Instead, we'll fill you at the mid, $0.07 (and adjust for slippage as necessary). The final result with hundreds or thousands of trades will more accurately reflect actual trading.

Liquidity Filters

One of the most common shortcomings of retail backtesters is unrealistic fill prices. Many options contracts do not provide very high liquidity. Getting fills in live trading is difficult by itself, while simulating or forcing fills in a backtest is extremely easy to do and therefore very error prone.

To prevent our backtests from unrealistic fills, we exclude extreme deltas and wide bid/ask spreads from all of our backtests. If an option contract is deemed illiquid by our algorithm, then our backtester will simply not use that quote. You can read more about this in our section on Liquidity Filters

Symbol Availability

IWM

  • January 1, 2016
    • Expiration every Friday
  • October 13, 2021
    • Expiration every Wednesday and Friday
  • October 18, 2021
    • Expiration every Monday, Wednesday, and Friday

QQQ

  • January 1, 2016
    • Expiration every Friday
  • May 3, 2021
    • Expiration every Monday and Friday
  • May 5, 2021
    • Expiration every Monday, Wednesday, and Friday
  • November 22, 2022
    • Expiration every Monday, Tuesday, Wednesday, and Friday
  • November 24, 2022
    • Expiration every Monday, Tuesday, Wednesday, Thursday, and Friday

SPXW

Our SPXW quotes represent SPX Weekly options. These are afternoon (PM) expirations and do not include the monthly (AM) expirations.

  • January 1, 2016
    • Expiration every Friday except for the third Friday each month
  • February 23, 2016 - Wednesday expirations introduced
    • Expiration every W/F except for the third Friday each month
  • August 22, 2016 - Monday expirations introduced
    • Expiration every M/W/F except for the third Friday each month
  • May 19, 2017 - Third Friday every month includes a PM expiration
    • Expiration every M/W/F
  • April 26, 2022 - Tuesday expirations introduced
    • Expiration every M/Tu/W/F
  • May 19, 2022 - Thursday expirations introduced
    • Expiration every day of the week

SPY

  • January 1, 2016
    • Expiration every Friday
  • September 7, 2016
    • Expiration every Wednesday and Friday
  • February 26, 2018
    • Expiration every Monday, Wednesday, and Friday
  • November 22, 2022
    • Expiration every Monday, Tuesday, Wednesday, and Friday
  • November 24, 2022
    • Expiration every Monday, Tuesday, Wednesday, Thursday, and Friday

VIX

Our VIX quotes include VIX contracts under the "VIX" identifier, which does not include weeklies under the "VIXW" identifier. Before December 2018, VIX options included both weeklies and monthlies. After December 2018, VIX options were only monthly, and weeklies were under VIXW. Because of this, our backtester has weekly VIX quotes before December 2018 but only monthly quotes after December 2018.