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 iwm nvda qqq spx spy tsla vix timeframe our backtests include historical quotes starting from january 2016 for every option under 130 days to expiration quote frequency our backtest engine records historical quotes every 10 seconds over the entire backtest duration multiple data points are analyzed over each 10 second interval, and the backtest will make trade decisions based on that very high sample rate this exactly mimics how our bots run, thus instilling confidence between backtest results and bot trading most data providers only use quotes every minute or every day and most of these backtest engines only use a single bid and ask quote inside of that minute or day this means that the quote over the entire minute/day 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 not only do we record quotes every 10 seconds, but inside of those 10 second intervals, we are sampling many quotes while prices move we analyze many data points above every 10 seconds 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 that 10 second interval whenever you see a bid/ask quote in a backtest, the values that you see are a result of our quote smoothing algorithm 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 docid 4carodbsaiwmkj4tra2tv 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