Backtesting FAQ
Last updated
Last updated
Welcome! Thanks for checking out our frequently asked questions.
We get bid/ask from an OPRA data vendor. We use mid price when opening and closing trades, though you can add slippage to modify this value.
We use 1-minute historical data. The exception to the is IMSL (intra-minute stop loss, which is detailed in the next question.
IMSL is only available on limited backtests (SPX/SPY 0 day). At every one minute interval, the tester will use the high/low values for each contract to determine whether your stop loss was triggered. High/low values are comprised of both NBBO bid/ask and actual trades within each minute. You can select NBBO by itself, or NBBO + trades (with trades will result in the most stops) for IMSL.
Option Omega has a course on the backtester called . (Note: Academy requires a separate/additional login & PW from the OO backtester). This is the best way to get going on OO. If you have bespoke technical questions, we have backtest support on the Discord channel.
Sure do! Check out our growing . Of course, the absolute best way to visually learn OO is to do our . (Note: Academy requires a separate/additional login & PW from the OO backtester).
We use the previous trading day’s closing VIX, and the opening VIX during RTH (regular trading hours). The VIX price at market open doesn’t have a set time; the first print is typically 9:31 or 9:32, but sometimes even later.
In short, look at the previous days VIX RTH close (4:15) and compare to RTH open (first VIX print after 9:30). This explains the process visually.
The easiest way is to search this website– but we have a huge library of answered questions on Discord– and the Discord search works pretty well. If you can’t get an answer there quickly– you can post in the “help-questions” channel on the Discord.
The difference is that your slippages, fees, etc. are applied to a single “tranche” of the trade. The second setup (default each qty to 1) is what you want; this is how the software was designed to work. The per-leg quantities are for butterflies, etc., where the leg quantities are uneven (1-2-1, PRIC, CRIC, etc.)
Certain types of trades have wild moments of liquidity (illiquidity!) and odd price spikes. This is true of many multi-leg trades, including double calendars, butterflies, etc.
Fortunately, you can verify quickly using the trade replay in the trade log if there was a “spiky” trade.
The trade replay is the three lines at the left part of the trade log for each entry. For example, in this backtest, you can see several different spikes, such as 3/13 at 15:43
Typically, good use of the Punisher will help you dial in the backtest. Typically, “Two Hits at PT” and “Cap Profits”, along with accurate slippage, will help you get the best result.
The most common reasons tests don’t work are the following:
Not enough Margin to support the trade (typical mostly for selling puts & calls).
The exact DTE button is selected, and there were not trades that fit that DTE.
The padlock next to the strike legs is selected. This is the exact strike offset — it is padlocked by default but you can uncheck it. If it is left on (default), the trade will only execute if there is an option at that strike.
When one leg closes on this type of test (or any other test), the other legs will close as well.
You probably want $3.00, not $300.
No, we use market RTH (regular trading hours)– 9:30-4:00 market time. The first options datapoint we use is 9:32 (the previous two minutes are too noisy for high confidence).
No, we are using the standard End of Day (EoD) contracts on SPX only– no morning expiries.
The backtester uses 1 minute data. At the interval in which data is measured, often the SL/PT will be “past” the exit value.
If you prefer to have it stop on these values exactly, just select these choices under misc:
These choices do exactly what they say– cap non opening (i.e. intraday) losses or profits at the the value specified.
For example, if the price is 9.99 and your PT (or SL) is 10, the exit will not trigger. If the market moves and the price is 10.25, the PT (or SL) will trigger. If you have the profit (or loss) uncapped (default), it will show 10.25. If you have profits/losses capped (optionally, like above), the backtest will close at 10.
We get our deltas from a data vendor, and find them to be consistent with other brokers and tools. If you poke around the internet, we’ve been told you will find a lot of discussion per your particular question due to one certain broker’s display of deltas.
If you have a non-trailing stop of 100%, and a credit spread with initial credit of $2, then the stop would be $4 db.
If the stop is then trailed at $1 profit target, and the current value if your trade is $1 (thus triggering the trailing stop condition), then the trailing stop will initially $2 db and then will continue to adjust as your trade increases in profit.
A trailing stop will “follow” the price only upon profitable movement in trade’s price.
Also, the trailing stops (and profit actions) use the current premium value to calculate the SL
The most common method to achieve this is a long and short leg, and use fixed premium for both. You can do this by manually adding un-linked legs. In this example we asked for a $3.50 short and $1, long and got this result on a 0 DTE SPX short spread.
Additionally, you can use the min/max filter to get even more specific.
We update the app frequently. A best practice for the app is to do a refresh of your browser whenever new features are added. Reminder, the best place to get updates is our Discord server. They are posted under #releases.
We post them in the announcements channel on the Discord.
By default, When any leg is closed in OO, the whole trade closes.
Some users use portfolio and break down trades into component pieces. Keep in mind that margin will work differently in this setup, but breaking a 4 legged trade down into a portfolio of 2- 2 legged trades (or any similar ratios), does allow a more granular level of control.
The backtest data is updated overnight after the previous day. It is typically available by 6 a.m. Eastern time. Often times, it will be updated before then. Note: it's not updated "all at once" so you may see different pieces of data updated if you're running a backtest in the wee hours (again, relative to Eastern US time zone, a.k.a. "market time")
The Coronavirus global pandemic had a major impact on the market in 2020. During times of high volatility and rapid moves, many backtests will reflect this unique time. In addition to the normal suggestions (ignore wide bid-ask, two hits, etc. etc.), some people simply blackout the month or certain days if they want to ignore this time period.
Tariff/world news events prompted historic unstable markets, which promoted large moves. In addition to the normal suggestions (ignore wide bid-ask, two hits, etc. etc.), some people simply blackout the month or certain days if they want to ignore this time period.
We’re a backtester– not a trade service— that being said, we have plenty of folks exchanging ideas freely on the Discord.
If you want to get even wilder, you can use portfolio to put on MULTIPLE trades that have multiple exits!
Yes, you can do this yourself in the app. Profile=>settings=>billing will get you to subscription management.
The tester will find the closest delta, using decimal points if there is a “tie”.
Exact DTE uses only the exact expiration; if that expiration isn’t found, the trade isn’t executed.
If Exact DTE is toggled off, then the next available expiration further out in time is used; there is no limit to how far it will look
Sure– the max drawdown is per test, and thus, multi-trade. If a trade is open, then the EOD value is used for MDD calculations. If the trade closes, then the loss is used for MDD calculations. The max drawdown stat is EOD.
Drawdown is based upon current net liquidity, which means that if those trades had already lost most of their value in the preceding days, then the backtest completing won’t necessarily have much affect on drawdown– it’s the same calculation for drawdown in both tests and portfolios
In the trade log, it’s the maximum loss during the entire life of the trade as per our data resolution (1-min).
The max loss column on the trade log is intraday.
There are two easy ways to do this:
You can alternately do this in portfolio. Just setup a put spread and a call spread and run them! You can get even more granular this way, and using a variety of the single leg choices that prompt closing a trade (i.e. you could use an option to close the spread once the short leg is exceeded by “x” points, etc. etc.)
Sure, select “Cap Non-Opening Losses at Stop Loss” under misc features.
1DTE trades don’t exist on Friday. OO uses calendar dates for days to expiry (DTE). What most folks do if they have a 1DTE trade that they want to behave a certain way (or a trade that behaves a certain way on 1DTE, such as an early exit)— it is do two separate backtests: one for Fridays and one for other days.
Here’s some common terms you may see in the OO Discord:
BNB= Bed and Breakfast, a trade that is put on before end of day and taken off early the next morning (often a double calendar)
CRIC= Call Ratio Iron Condor
DC= Double Calendar
DD= might be either a Double Diagonal OR DrawDown (see question above for a breakdown on the draw down discussion)
EODIC= End of Day Iron Condor
IC= Iron Condor
HDIC= High Delta Iron Condor
JSP= Just Sell Puts
MEIC= Multiple Entry Iron Condor
PDIC = Paint Dry Iron Condor (generally lower delta)
PRIC= Put Ratio Iron Condor (I.E. more puts side spreads than call side spreads)
RAIC= Ratio Iron Condor
RIC= Inverse Iron Condor
RSS= Rolling Short Strangle
You’re welcome. If you have something you thing other people would like to see here, drop us a message on Discord (in feedback-suggestions) and we’ll get it added. We update the FAQ regularly!
Option Omega is a platform of free and paid courses that dive into different elements of options, backtesting and trading. You can subscribe to Option Omega backtesting without purchasing any Academy classes, and vice versa. We also offer some free Academy classes.
You can also use “Leg Groups” (a.k.a. Single Entry Multi Exit), which allows you to enter a trade at one time, then sub-group legs and exit those legs as a component part. .
Great! We’d love to hear it.
Yup. You can do this with profit actions.
You can set up a leg-group (single entry multi exit), which allows you to enter a PCS and CCS at the same time, and exit them separately. .
.