# Welcome

Welcome to Option Omega Documentation — your go-to resource for all things Option Omega!

#### Backtesting

Learn how to build and analyze strategies using the Option Omega backtester. You’ll discover how to:

* [Set up a backtest](/backtesting/backtest-setup) and make it robust and rigorous
* Understand the [results screen](/backtesting/backtest-results)
* Refine your backtest using [the Optimizer](/backtesting/optimizer)
* Combine backtests using [portfolios](/backtesting/portfolios)

#### Automation

Once you're confident in your backtesting and trading, explore our automation options. The automation section walks you through:

* [Connecting your broker](/automation/read-this-first-brokerage-details)
* Setting up your entry and exit [strategies](/automation/strategy-setup)
* [Managing active trades](/automation/trade-management) and reporting

#### Academy

Our free [**Option Omega Academy** ](/#academy)includes both a [**Backtesting Bootcamp**](https://academy.optionomega.com/course/backtesting-bootcamp) and [**Automation Bootcamp**](https://academy.optionomega.com/course/automation-bootcamp). These video courses walk you through key workflows to help you master the platform — fast.

#### 💬 Community

Join our active, free [Discord server](https://discord.gg/s5HG3ECUE4) to connect with other traders, ask questions, and share insights. This is also where technical support for the backtester and automation platform is provided.\
Our community guidelines will help you and others get the most out of the community.

#### New Users Start Here

We highly recommend new users follow the onboarding progression outlined below:

1. **Read This First**
2. **Academy**
3. **Written Documentation**
4. **Discord Community**

👉 **Get started with** [**Read This First**](/welcome/read-this-first)**.**


# Read This First

Welcome to the start of your journey with Option Omega!

#### 🎯 Our Vision

We’ve built a world-class, deeply flexible backtester — and we’re here to help you master it. This onboarding guide is designed to give you the confidence to explore Option Omega’s full feature set and understand how it all works.

#### 🧭 Why This Onboarding Flow Matters

Both the **Backtester** and **Automation** platforms are powerful, evolving tools. They’re actively maintained, with new user-requested features rolling out regularly. The **Option Omega Academy** and the **Written Documentation** are your go-to, always up-to-date sources for how things work.

One common challenge, especially for experienced traders, is expecting the backtester to behave like their preferred strategy setup. But the backtester isn’t rigid — it’s extremely flexible. You can model nearly any strategy imaginable — once you understand how it works.

### 🪜 Step-by-Step Progression

#### 1️⃣ **Start with the Backtesting Bootcamp**

Begin your journey in the **Option Omega Academy**. The free Backtesting Bootcamp walks you through the platform fundamentals and strategy setup.

> Note: The Academy requires a separate login and password.\
> All details on accessing the Academy are covered on the next page.

#### 2️⃣ **Use the Written Documentation**

Once you've completed the Academy, you’ll likely have built and saved your first few backtests. If you get stuck or need a refresher, the **written docs** are your best friend.\
They’re structured for speed — much easier than rewatching videos to answer a single question. Search is fast, accurate, and designed to be helpful.

#### 3️⃣ **Join the Discord Community**

The Discord server is the heart of OO — a space to share ideas, ask questions, and connect with other traders. It’s free to join, and OO subscribers get access to verified channels through a quick one-minute self-verification.

> ✅ **New User Tip**: You don’t need to wait to join — but we recommend completing the Bootcamp and reviewing the docs before asking for help.\
> This shows respect for others’ time and leads to more helpful, higher-quality discussions.

Our **Discord Guide** covers everything:

* How to set up your account and verify
* Channel structure
* Community guidelines
* A glossary of common abbreviations and acronyms used in discussion

#### 📺 Bonus: The OO Show on YouTube

Option Omega also creates **daily videos** through the OO Show, along with backtest deep dives, community challenges, year-end lookbacks, and interviews with active users. We’ve highlighted some of our favorite videos in the Welcome section.

Just note: As the platform evolves, screenshots or workflows in older videos may differ slightly from the current platform. For up-to-date answers, rely on the **Academy**, **written docs**, and the **feature update log** available in the Discord community.

#### 🚀 Ready to Begin?

The next stop is the Option Omega Academy!


# Academy

🎓 Getting Started with Option Omega Academy

### Overview

**Option Omega Academy** is our educational platform — a collection of trader-taught courses covering everything from trading mindset to tools, techniques, and actionable strategies.

Whether you're learning the backtester or exploring advanced automation, the Academy is designed to help you build practical skills with real-world relevance.

### 📝 How to Sign In and Get Started

1. **Go to** 👉 [https://academy.optionomega.com](https://academy.optionomega.com/)\
   *Consider bookmarking the Academy along with the Backtester and Written Docs for quick access.*
2. **Click “Sign In” and create an account.**
   * Your **Academy login is separate** from your Option Omega login.
   * Even if you already use the backtester, you'll need to register a **new Academy account**.
3. **Find the free Option Omega content.**

   * After logging in, you’ll see all available courses.
   * To filter only Option Omega content, **set the “Author” filter to “Option Omega.”**
   * The **Backtesting Bootcamp** will be prominently listed there — that's your starting point.

   <figure><img src="/files/3caTA6XjzHReqgYfit8K" alt=""><figcaption></figcaption></figure>

### ❓ Academy FAQ

**💵 Does the Academy cost money?**\
Creating an account is free. While some courses are paid, **all official Option Omega training content (like the Backtesting and Automation Bootcamps) is 100% free.**

**📊 How much are the paid classes?**\
Course prices vary. You’ll see pricing clearly listed on each course.

**🔐 Why can’t I use my regular Option Omega password?**\
The Academy is hosted separately from the backtesting and automation platforms. This means:

* Separate systems
* Separate accounts
* Separate logins

Your Academy account is different from your login for the backtester and automation.

**💬 Are there community features in Academy?**\
Yes! Some courses (especially premium ones) include **private Discord channels** where students can ask questions and interact directly with instructors.


# Written Documentation

If you prefer written content, or need a quick reference, this resource website is the place to be. The written documentation starts with [Backtest Setup](/backtesting/backtest-setup) and goes from there!

Also strongly recommended is the Option Omega Discord server — it has a wealth of written info, including many common questions and answers, literally hundreds of community-shared tests, a lively group of backtesters, and much more! Here’s a [quick video](https://youtu.be/-O89V1fcBT0?si=1kP3gpKK12dn4T80) on how to get onto Discord. All the action is in the verified channels, so make sure you get verified.

And of course, as the best place to start, we will always recommend [taking the Backtesting Bootcamp class on Option Omega Academy](https://academy.optionomega.com/course?courseid=backtesting-bootcamp). This will get you up to speed fast! Note: The class is free. It does require a login and password for Academy, which is separate from the login and password for the OO backtester.

### Sample Walkthrough of SPX Backtest

[You can also check out this video with a sample SPX backtest setup](https://youtu.be/cGPSgi43o_w)

Companion documentation is below.

We’re going to walk you through a simple backtest setup. 2023 has been an interesting market — we’re going to look at a simple 4 DTE Friday Put Credit Spread.

We’re going to click on “New Backtest” and set up the first portion like this:

<figure><img src="/files/RrgnTBdf5kIcqqJ7zH6K" alt=""><figcaption></figcaption></figure>

This will give us a test dated in the first few months of 2023. We picked a “Short Put Spread” and changed the legs to sell the 35 delta, 10 wide. We’re going to do a 4 DTE.

In the next section of the backtest setup, let’s change the entry time to 10:00. The other notable change is moving the test to only test Fridays, since different days perform differently on different tests. We do this by selecting the frequency dropdown and changing it to weekly, then selecting only F.

<figure><img src="/files/yDqVmJGwUK8AfflXGOgv" alt=""><figcaption></figcaption></figure>

On the next screen, let’s do both 50% for PT and SL.

<figure><img src="/files/zkaX9aP3Vah1M8QLGvSP" alt=""><figcaption></figcaption></figure>

Finally, for the Misc section, we have a few things to do here.

First, let’s add some standard commissions. Also, we’re going to use slippage to beat up the test a little bit. Finally, we’re going to cap profits at our profit target and require two hits on the PT to execute.

<figure><img src="/files/NvppTioLBEL5VvkcFWJo" alt=""><figcaption></figcaption></figure>

Let’s click run, and we’ll see how it goes!

<figure><img src="/files/Hg86xV5k9GNu0PseVUsw" alt=""><figcaption></figcaption></figure>

The backtest results screen gives you a wealth of information about how the test performed.


# Discord Community

The Option Omega Discord is where strategy meets community. It’s the heart of our platform — a space where traders at all levels collaborate, share insights, and help each other succeed.

### What to Know Before You Join

* **It’s free to join** — and Option Omega subscribers get access to private, verified channels through a quick one-minute self-verification.
* **We recommend completing the Academy Bootcamp** and reviewing the docs before asking for help — this improves the quality of conversations and makes it easier for experienced members to assist.
* **Everyone is welcome** — from first-time traders to seasoned pros, across all backgrounds and time zones.

### What You'll Find in This Section

* **Get Verified** – Step-by-step instructions for joining the server and unlocking full access
* **Rules & Expectations** – How to contribute constructively and support a collaborative environment
* **Verified Channel Guide** – Overview of all the channels and what belongs where
* **Common Abbreviations** – A glossary of trading and platform shorthand
* **Discord Tips & Tricks** – Practical advice for searching, sharing your work, and engaging effectively
* **Scam Awareness & Reporting** – How to identify impersonators, protect yourself, and report suspicious behavior. We’re proud of the community we’ve built — and we’re excited to have you join us.\
  **See you in Discord.**


# Get Verified

Unlock access to the full Option Omega Discord community, verified channels, and member discussions.

Verification is a one-time process for Option Omega subscribers and typically takes less than a minute. Please follow the steps below.

### Recommended Videos

We recommend new users watch the following two videos before proceeding. They provide a quick walkthrough of the process and explain how to navigate the community:

* **How to Verify Your Discord Account**\
  [https://www.youtube.com/watch?v=kWer1Vd\_PzI](https://www.youtube.com/watch?v=kWer1Vd_PzI\&utm_source=chatgpt.com)
* **Discord Community Overview**\
  [https://youtu.be/-O89V1fcBT0](https://youtu.be/-O89V1fcBT0?utm_source=chatgpt.com)

### Scam Warning

Please note that Discord has a known issue with impersonators and scam attempts.\
**OO staff will never send you direct messages or friend requests.**\
If you receive a suspicious message claiming to be from an OO team member, assume it is a scam — report and block the user.

### Written Instructions for Self-Verification

#### Step 1: Go to the Discord community by following the link: <https://discord.gg/s5HG3ECUE4>

#### Step 2: Find Your Discord Username (Not Your Display Name)

Click your profile in the bottom-left corner of Discord to bring up your account card.

> ⚠️ The most common mistake is copying your **display name**, which is not your actual username.

Your **Discord Username** appears directly under your display name and remains constant. It may include punctuation or numbers and must be copied **exactly**.

Example, in the image below:

<div align="left"><figure><img src="/files/PEc2kzGvnhS2NAem9R8i" alt=""><figcaption></figcaption></figure></div>

#### Step 3: Enter Your Username in Option Omega

1. Log in to [optionomega.com](https://optionomega.com/?utm_source=chatgpt.com)
2. Click the person icon in the top right corner, then select **Settings**
3. Go to the **Preferences** tab
4. Paste your full Discord username into the **Discord Username** field
   * Double-check for typos, punctuation, and spacing — it must match Discord exactly
5. Click **Update Preferences**

<figure><img src="/files/QoZCkc3oNHKaQzLUTvCp" alt=""><figcaption></figcaption></figure>

Once submitted, your Discord access will update automatically. Most users are verified within 1–2 minutes.

Once you're in, you're in! The next few pages in this section provide additional guidance and tips to help you make the most of your experience in the community.

**Step 4: Follow the** [**#known-issues**](https://discord.com/channels/882705067210317915/1377977525933834260) **channel on the server** *(especially important for automation users)*

Make sure you're following [#known-issues](https://discord.com/channels/882705067210317915/1377977525933834260). Important communications and time-sensitive information are posted there.

**Welcome — and enjoy!**


# Rules & Expectations

The following guidelines are here to help the community stay productive, respectful, and focused.

We kindly ask all our community members to:

### #1 Be Kind

This is a casual, collaborative space. Aggressive, antagonistic, or consistently negative behavior will not be tolerated. If something escalates, it may result in a warning or removal from the server.

Disagreement is fine — being difficult isn’t.

### #2 Respect Boundaries

Some members use real names, others remain anonymous. Both are welcome.\
Treat everyone with the same level of respect, regardless of experience or visibility.\
\
Participation in this Discord is a privilege, not a right. (Refer to Rule #1.)

### #3 No One Owes You a Backtest

Option Omega is a **backtesting and automation platform** — not a signal service or copy-trading community. There is **no expectation** that other users will share their backtests or trades.

Some members find value in sharing backtests that align with their own trading — whether for feedback, accountability, or simply to give back. Others post exploratory ideas or unrefined concepts to inspire discussion. **All of these approaches are valid.** It’s up to each member to decide **if**, **what**, and **how much** they want to share.

**Please do not pressure anyone to share trades or strategies.**

*Exception:* If you're asking for help or feedback on a trade or backtest, it's considerate to include a share link with your question. If not, you'll most likely be asked to share one — it's very difficult to provide meaningful help without seeing all the parameters and being able to quickly troubleshoot the setup.

If you prefer to keep the details private, we recommend modifying a few variables before sharing. That way, you can still get support without revealing your full backtest.

### #4 Lead by Example

You’ll get the most out of this community if you:

* Complete the Academy Backtesting Bootcamp and use the docs as your first line of help
* Use search to explore the 1,000+ backtests already shared in the server
* Share your own work and ask thoughtful questions
* Be patient — not everyone is online when you are

In short: do your homework, engage respectfully, and enjoy the process.\
The more you give, the more you’ll get in return.

### #5 Nothing Here is Financial Advice

This server exists for discussion and learning — not for investment recommendations. Assume anything you read is opinion only.

Options trading involves risk and is not suitable for all investors. Backtesting is backward-looking, not forward-looking. Speak with a qualified financial advisor before making any financial decisions. Nothing from Option Omega is financial advice. If you wish to read more, please see Option Omega's [Terms and Conditions](https://optionomega.com/terms).<br>


# Verified Channel Guide

This guide explains what each Discord channel is for so you can post in the right place, find relevant discussions, and get the most value from the community.

### Verified Channel Guide

### ***Text***

**Lobby:** The only posts that should go here are questions from non-subscribers.

### ***OO-Academy***

**Class-specific discussion channels** (only available to paid users of specific classes — not available for all classes)

### ***Verified-OO-Related***

**Tests-strats:** Discuss strategies and backtests here.

**Modeling-help-bugs:** Questions or issues related to the modeling platform.

**Help-questions-backtesting:** Need help or info about the app? If you’re asking a test-related question, please post a full screenshot of the setup with your question. Also, post a saved link to the specific test you’re asking about. [This video](https://youtu.be/8_S7hc5oET8) shows you how to save and share.

**Bugs-errors-backtesting:** This is for errors in the backtesting platform. Please reserve this for bugs only. “Why did my test do ‘X’?” questions should go in the help-questions channel.

**Help-questions-automation:** This is for the automation platform only. If you’re asking a strategy-related question, please post a full screenshot of the setup with your question, if you're comfortable sharing publicly.

**Bugs-errors-automation:** This is for the automation platform only. Please include a screenshot with all three rows. Please reserve this for bugs only. “Why did my test do ‘X’?” questions should go in the help-questions channel.

**Releases:** Updates on releases to the backtester and automation platform.

[**known-issues:**](https://discord.com/channels/882705067210317915/1377977525933834260) This is where time-sensitive information about the platform is posted. This is a must-follow for automation users.

**Releases (backtester):** Historical log of updates to the backtester.

(Archived) **Feedback-suggestions:** [We have a Canny site for feedback. Please make your suggestions there](https://optionomega.canny.io/feature-requests?selectedCategory=automation).

### ***Verified Trading***

**Stock-talk:** Non-index-related stock discussion.

**SPX-talk:** Index-related discussion.

**Actual-trades:** If you want to discuss actual trades and/or post screenshots, this is the place. As always, no pressure — do your own work. This is for discussion and education only.

**Trading-mindset:** Discussion of the mental side of trading.

**Other-tools:** Non-OO tools should be discussed here.

**Resources:** Helpful news, etc.

**Lounge:** Casual hangout.

### ***Option Omega Live***

**OO-Show:** Start your day with a strategic edge! Join us live every weekday morning at 8:45 AM EST for 'The OO Show', where veteran CBOE market maker Dan Sheridan teams up with the Matt and Troy from Option Omega to dissect the latest market trends and trading opportunities.

**Small-account-challenge:** Can a $5,000 account survive the current market? Join us every Tuesday at 3:30 PM EST as we trade a real-money account live. We aren't just showing you the profits — we’re showing you the math, the risk management, and the logic behind every single trade.

**Navigation-trading-show:** Join us Tuesdays from 12–1 PM ET as Steve from Navigation Trading teams up with Troy McNeil from Option Omega for a fast-paced, highly actionable market breakdown.

**Fix-my-backtest:** Is your trading edge real, or just a backtest fluke? Stop guessing and start quantifying. Join us every Tuesday at 10:30 AM EST as we bridge the gap between "good ideas" and "proven strategies." In this weekly series, we sit down with Mark Anderson, Managing Partner at MBH Capital Management and a veteran in the 0-DTE index options space. Known for his "anti-guru" philosophy and mathematical rigor, Mark helps retail traders audit their backtests and build robust, hedge-fund-grade systems.

Note: There may be additional archived channels that are still searchable but were archived for various reasons.


# Common Abbreviations

Many of the most common terms, abbreviations, and acronyms used on the OO Discord.

<table><thead><tr><th width="85">Term</th><th>Meaning</th></tr></thead><tbody><tr><td>ATH</td><td>All Time High - market high or a trading account high</td></tr><tr><td>ATM</td><td>At The Money - referring to option strike vs underlying market price</td></tr><tr><td>ATR</td><td>Average True Range</td></tr><tr><td>BABP</td><td>Build a Backtest Portfolio</td></tr><tr><td>BnB</td><td>Bed and Breakfast - a trade that is put on late in the day and taken off early the next morning</td></tr><tr><td>BOD</td><td>Blackout Days</td></tr><tr><td>BS</td><td>Black-Scholes - the popular option pricing model that OO uses</td></tr><tr><td>BS</td><td>Black Swan - low-probability event, fat-tail risk - read: Taleb</td></tr><tr><td>BTC</td><td>Buy To Close - buy back a short option to close an existing position</td></tr><tr><td>BTD</td><td>Buy The Dip</td></tr><tr><td>BTFD</td><td>Buy The Fudging Dip</td></tr><tr><td>BTO</td><td>Buy To Open - buy a long option to open a new position</td></tr><tr><td>CCS</td><td>Call Credit Spread</td></tr><tr><td>CDS</td><td>Call Debit Spread</td></tr><tr><td>CPI</td><td>Consumer Price Index - news event inflation reporting</td></tr><tr><td>CRIC</td><td>Call Ratio Iron Condor</td></tr><tr><td>CRRIC</td><td>Call Ratio Reverse Iron Condor</td></tr><tr><td>CS</td><td>Charles Schwab Brokerage</td></tr><tr><td>CSV</td><td>Comma-Separated Values - data format used for OO data export and import</td></tr><tr><td>DC</td><td>Double Calendar</td></tr><tr><td>DD</td><td>Double Diagonal</td></tr><tr><td>DD</td><td>Drawdown</td></tr><tr><td>DFTD</td><td>Done For The Day</td></tr><tr><td>DM</td><td>Direct Message, e.g. DM me so we can have a private conversation</td></tr><tr><td>DST</td><td>Drink Some Tea</td></tr><tr><td>ELI5</td><td>Explain it Like I'm 5</td></tr><tr><td>EOD</td><td>End Of Day - can precede trade type, e.g. EODIC, EODDC</td></tr><tr><td>EOM</td><td>End Of Month - usually referring to the last option chain expiration date of a given month</td></tr><tr><td>ERN</td><td>Early Retirement Now - inspired by the earlyretirementnow.com community, no affiliation to OO</td></tr><tr><td>FLA</td><td>Four Letter Acronym</td></tr><tr><td>FOMC</td><td>Federal Open Market Committee - interest rate announcements</td></tr><tr><td>FOMO</td><td>Fear Of Missing Out</td></tr><tr><td>FUD</td><td>Fear, Uncertainty, Doubt</td></tr><tr><td>FWIW</td><td>For What It's Worth</td></tr><tr><td>GTC</td><td>Good 'Til Canceled - type of broker order</td></tr><tr><td>HDIC</td><td>High Delta Iron Condor - subjective by short strikes, usually above 30 delta</td></tr><tr><td>HODL</td><td>Hold On for Dear Life</td></tr><tr><td>IB</td><td>Iron Butterfly</td></tr><tr><td>IBKR</td><td>Interactive Brokers</td></tr><tr><td>IC</td><td>Iron Condor</td></tr><tr><td>IF</td><td>Iron Fly</td></tr><tr><td>IMHO</td><td>In My Humble Opinion</td></tr><tr><td>IMSL</td><td>Intra-Minute Stop Loss</td></tr><tr><td>IRL</td><td>In Real Life</td></tr><tr><td>ITM</td><td>In The Money - referring to option strike vs underlying market price</td></tr><tr><td>IV</td><td>Implied Volatility</td></tr><tr><td>IVP</td><td>Implied Volatility Percentile - % of days in a rolling year with IV below current IV</td></tr><tr><td>IVR</td><td>Implied Volatility Rank - IV represented on a scale using rolling year min and max IVs</td></tr><tr><td>JFSP</td><td>Just Fudging Sell Puts</td></tr><tr><td>JSP</td><td>Just Sell Puts</td></tr><tr><td>LDE</td><td>Leg Delta Exit</td></tr><tr><td>LDIC</td><td>Low Delta Iron Condor - subjective, but usually short strikes below 10 delta</td></tr><tr><td>LEAPS</td><td>Long-Term Equity Anticipation Securities - options with >1 year until expiration</td></tr><tr><td>LFG</td><td>Let's Fudging Go!</td></tr><tr><td>MACD</td><td>Moving Average Convergence Divergence</td></tr><tr><td>MDD</td><td>Max Drawdown</td></tr><tr><td>ME</td><td>Multiple Entry - may appear in front of other strategy types</td></tr><tr><td>MEDC</td><td>Multiple Entry Double Calendar</td></tr><tr><td>MEIC</td><td>Multiple Entry Iron Condor</td></tr><tr><td>NDE</td><td>Net Delta Exit</td></tr><tr><td>NFP</td><td>Non-Farm Payrolls - market news event</td></tr><tr><td>NT</td><td>Navigation Trading - non-affiliated trading education provider</td></tr><tr><td>OCO</td><td>One Cancels the Other</td></tr><tr><td>OO</td><td>Option Omega!</td></tr><tr><td>OPEX</td><td>Option Expiration - refers to the day when monthly options contracts expire, usually the third Friday of each month</td></tr><tr><td>ORB</td><td>Opening Range Breakout</td></tr><tr><td>OTM</td><td>Out Of The Money - referring to option strike vs underlying market price</td></tr><tr><td>OTO</td><td>One Triggers the Other</td></tr><tr><td>PCR</td><td>Premium Capture Rate</td></tr><tr><td>PCS</td><td>Put Credit Spread</td></tr><tr><td>PDIC</td><td>Paint Dry Iron Condor - in reference to how exciting it is to watch paint dry - see LDIC</td></tr><tr><td>PDS</td><td>Put Debit Spread</td></tr><tr><td>PoO</td><td>Portfolio of One - running a portfolio with only one backtest, often to visualize intra-trade drawdowns</td></tr><tr><td>PPI</td><td>Product Price Index - inflation reporting</td></tr><tr><td>PRIC</td><td>Parity Reverse Iron Condor - equal short strikes and calls in RIC</td></tr><tr><td>PRIC</td><td>Put Ratio Iron Condor (i.e. more put-side spreads than call-side spreads)</td></tr><tr><td>PRRIC</td><td>Put Ratio Reverse Iron Condor</td></tr><tr><td>RAIC</td><td>Ratio Iron Condor</td></tr><tr><td>RH</td><td>Robinhood Brokerage</td></tr><tr><td>RIC</td><td>Reverse Iron Condor</td></tr><tr><td>RIF</td><td>Reverse Iron Fly, a subtype of a Reverse Iron Condor</td></tr><tr><td>RoD</td><td>Ride Or Die - trade with no exit conditions or stop loss, just let it expire</td></tr><tr><td>rOObot</td><td>Affectionate name for OO's trade automation platform</td></tr><tr><td>RSI</td><td>Relative Strength Indicator</td></tr><tr><td>RSS</td><td>Rolling Short Strangle</td></tr><tr><td>RTFM</td><td>Read the Fudging Manual - aka please check the documentation before asking for help</td></tr><tr><td>SAC</td><td>Small Account Challenge - trades for accounts that might be subject to pattern day-trading rules, etc.</td></tr><tr><td>SEME</td><td>Single Entry Multi Exit - where a trade is opened as a whole but exited in parts via leg groups</td></tr><tr><td>SHW</td><td>Short Holiday Weeks</td></tr><tr><td>SLR</td><td>Short-Long Ratio</td></tr><tr><td>STC</td><td>Sell To Close - sell a long option to close an existing position</td></tr><tr><td>STO</td><td>Sell To Open - sell a short option to open a new position</td></tr><tr><td>sus</td><td>Shorthand for "suspicious" or "suspect," e.g. Friend 1: "My PDIC MAR is 1000!", Friend 2: "sus"</td></tr><tr><td>TAT</td><td>Trade Automation Toolbox - non-affiliated trade automation platform</td></tr><tr><td>TBH</td><td>To Be Honest</td></tr><tr><td>TD</td><td>Tradier Brokerage</td></tr><tr><td>TLA</td><td>Three Letter Acronym</td></tr><tr><td>TLDR</td><td>Too Long Didn't Read</td></tr><tr><td>TOS</td><td>ThinkOrSwim Trading Platform - used with Schwab Broker</td></tr><tr><td>TS</td><td>Trade Steward - non-OO-affiliated trade automation platform</td></tr><tr><td>TT</td><td>tastytrade brokerage</td></tr><tr><td>TTBT</td><td>Trust The Backtest</td></tr><tr><td>TTFB</td><td>Trust The Fudging Backtest</td></tr><tr><td>TV</td><td>TradingView - non-affiliated charting platform</td></tr><tr><td>TWA</td><td>Trust Wizzy Also - proceed with caution when Wizzy frowns</td></tr><tr><td>VWAP</td><td>Volume Weighted Average Price</td></tr><tr><td>w.r.t.</td><td>Shorthand: With Respect To</td></tr><tr><td>WFA</td><td>Walk Forward Analysis - assess strategy robustness by simulating performance on a series of sequential, non-overlapping time periods</td></tr><tr><td>YMMV</td><td>Your Mileage Might Vary - you may do better or worse than others' experience</td></tr><tr><td>YOLO</td><td>You Only Live Once - usually designates a high-risk, all-in type trade</td></tr></tbody></table>


# Discord Tips & Tricks

Whether you're new to the Option Omega Discord or just looking to engage more effectively, the tips below will help you navigate the community and contribute with confidence.

### Getting Started

* Take time to observe the flow of conversation and get a feel for the culture of the server.
* Before posting, ask yourself: *"Has this already been answered?"* — often it has. Take the featured Academy Bootcamp courses, check the docs, and try a Discord search.
* Learn the best practices below for searching, navigating, and sharing work in Discord!

### Locate the Menu Bar

In the top-right corner of the Discord app, you'll see a menu bar with several helpful features. From left to right, these include: **Threads**, **Notifications**, **Pinned Messages**, **Member List**, and **Search**.

<figure><img src="/files/DHbkz78XU8QVh4JSR79C" alt=""><figcaption></figcaption></figure>

Each of these tools is covered in the sections that follow. Knowing where to find and how to use them will significantly improve your experience in the community.

### Use Search Effectively

The search bar in the top-right corner of Discord is one of your most powerful tools. You can filter by **keyword**, **user**, **channel**, and whether a post **includes a link** — making it the fastest way to surface previously shared backtests, strategy discussions, and community Q\&A.

#### A Note About Keywords

Discord search only supports **one keyword or exact phrase at a time**, unlike search engines like Google that are more flexible with combinations.

To narrow your results effectively, use filters like **channel**, **user**, and **date**. This helps you cross-reference conversations and locate specific messages more efficiently.

If you’re new to Discord search, it may feel limited at first — but with a bit of practice, it becomes quick and intuitive.

> Tip: The Common Abbreviations page provides a good list of potential keywords for search.

#### **A Note About Broken Links**

Frequently, you may come across shared backtests that no longer work. This usually means the author unshared or deleted the test — often unintentionally, such as during workspace cleanup.

To avoid contributing to this issue: **Always share a screenshot** along with your backtest link.\
This ensures others can still learn from your post, even if the link breaks in the future.

Despite the occasional dead link, there are **thousands of active backtest links and screenshots** to explore. With targeted searches and some sifting, there is no shortage of valuable ideas to review.

#### Some Example Searches:

**Find backtests from the OO Show:**\
`optionomega.com/share from:troymcneil in:oo-show-discussion`\
This will return all shared backtests posted by Troy in the OO Show discussion channel. Try the same search with other OO Show contributors like Matt to explore additional posts.

Tip: Use the **“Jump”** button on a search result to go directly to the original conversation and read community comments and other inspired backtests.

**Find 2–3 DTE Double Calendar backtests:**\
`2 3 has:link in:test-strats`\
This search returns any posts that include “2 3” and a backtest link in the `test-strats` channel. Discord ignores punctuation in search, so `2 3`, `2/3`, and `2-3` will all return the same results.

You can also try searching `actual-trades` for related posts, depending on whether you're looking for live trading examples or theoretical tests.

**Find backtests using a RSI filter:**\
`RSI has:link in:test-strats`\
This search returns any posts that include “RSI” and a backtest link in the `test-strats` channel.

{% hint style="info" %}
For further reading on search features see Discord's docs: <https://support.discord.com/hc/en-us/articles/115000468588-Using-Search>
{% endhint %}

#### **Tips for Browsing & Bookmarking**

* Use the **Jump** button in a search result to go directly to the original post and surrounding discussion.
* If you're reading through historical or long message threads, click the **three dots (more)** next to a message and select **Copy Message Link**. You can save this in your notes as a bookmark to revisit later or resume reading.

### Navigate Threads

**Threads** in Discord are sub-conversations that branch off from a specific message within a channel. They help keep the main discussion cleaner by allowing focused conversations to happen without cluttering the primary channel.

**How Threads Work**

* Threads can be started from **any message** in a channel
* By default, **you won’t see** activity in a thread unless you:
  * Start it
  * Reply to it
  * Or **“Join”** to follow it

**Finding Threads**

* First go to a channel of interest such as `test-strats`, or `actual-trades`, then click the Thread icon to **review the threads** in that channel.
* You will be able to see what threads have been recently active, then if a thread looks interesting, **click “Join”** to get notified of future replies and keep up with the discussion.

### Review Pinned Messages

Like threads, every channel may have pinned messages. These are messages the admins have deemed valuable and pinned to make them easier to find.

* Pinned messages often include important resources, links, or recent discussions worth reading.
* As a new user, you should review pinned messages for the primary channels, for example `test-strats`.

### Notification Settings

Managing your notification settings helps strike the right balance between staying informed and avoiding constant interruptions.

You can access notification settings in several ways:

* **Right-click** on any channel name, or the server in the sidebar, and select **Notification Settings**
* While inside a channel, click the **bell icon** in the top right corner

From there, you can customize:

* Whether you’re notified for **All Messages**, **Mentions Only**, or **Nothing**
* Whether to **mute** or **follow** the channel
* **Per-channel overrides** that differ from your global (server-wide) notification settings

**Important Note on Discord Behavior**

Discord handles server- and channel-level notifications in a non-intuitive way:

> If the **entire server is muted**, you will not receive badge counts or sounds—**even if individual channels are set to notify for All Messages.** The channel name will highlight when new messages arrive, but you will not hear a sound or see the notification badge.

To receive **audible and numbered notifications** (badge icons) for selected channels, you must:

1. **Right-click on the server** (OO icon on the left), and confirm these settings:
   1. **Server is not muted**
   2. **Notification Settings** is set to All Messages
   3. **Show All Channels** is checked
2. Then **mute each individual channel** you *don’t* want notifications for
3. Leave notification settings on “All Messages” for the channels you *do* want to monitor

{% hint style="warning" %}
If you're using **automation**, we recommend setting `known-issues`, and `releases` to **“All Messages”**

After adjusting your settings, always verify that notifications are functioning as intended.
{% endhint %}

A small investment in tuning your notifications can go a long way in making your Discord experience smoother and more productive.

### Follow [known-issues](https://discord.com/channels/882705067210317915/1377977525933834260)

This isn't really a tip — it's essential. However, in the interest of over-communicating, we're mentioning it here too. If you're a user of OO, follow [#known-issues on Discord](https://discord.com/channels/882705067210317915/1377977525933834260). For automation users especially, this is essential.

### Show Member List

Show and hide the list of community members currently active.

### Anatomy of a Great Backtest Share

<figure><img src="/files/UdcrvGlZFXcmVS3nerF7" alt=""><figcaption></figcaption></figure>

***

This page will continue to grow with more community-proven tips. If you have a suggestion or a common user mistake you’d like to see covered, let us know in the server.


# Scam Awareness & Reporting

Discord has a known problem with scammers. Learn how to identify impersonators, protect yourself, and report suspicious behavior.

You've just joined the Option Omega Discord, verified your account, and now—*you've received a friend request from someone on the OO Team!*\
Exciting, right? Not so fast...

Let’s make sure it’s legitimate before engaging.

### Quick Rule of Thumb:

Option Omega team members **do not send unsolicited DMs**. If you receive a private message or friend request that you weren't expecting, proceed with caution.

### Common Red Flags

Here are quick checks you can perform to identify potential scammers:

1. **Unexpected Friend Request**\
   Don’t accept requests you weren’t expecting—especially if you haven’t interacted publicly with the person before.
2. **No Mutual Servers**\
   If the user doesn’t share the Option Omega server with you, they are almost certainly an impersonator.
3. **Lookalike Names**\
   Scammers often copy profile pictures and use similar-looking names. For example, the real Matt uses the handle `corranth`. A scammer might use `corranth.` or `corranth8` to trick you. These differences can be easy to miss. Remember, a Discord display name is not the same as a username.
4. **Account Age**\
   Be wary of accounts created recently or with suspiciously generic profiles. If the member "joined Discord in 2023" but claims to be a long-time OO staffer from 2021, something doesn’t add up.

### Safer Ways to Engage Privately

If you want to message someone directly:

* **Click the user’s name from inside a channel**\
  This guarantees you’re messaging the *real* account that made the post—not an impersonator.
* **Never respond to random DMs that appear to reference Option Omega unless you initiated the contact.**

### What to Do If You Spot a Scammer

If someone is impersonating a member of the team:

1. **Do not engage.**
2. **Report the profile**:
   * Click the `···` (three dots) on the user’s profile or message
   * Select **"Report User Profile"**
   * On the next screens, select any relevant details (e.g., fake name, misleading image, scam messages)
3. **Tag a team member in a channel** if the scammer is posting publicly — we’ll remove the post and ban the user quickly.

### Example: Spotting a Scam

Let’s break down a real-world scam attempt and how to identify it quickly.

You receive a friend request from someone claiming to be **Matt (Option Omega)**.

At first glance, it may seem legitimate — but upon closer inspection, there are several red flags:

<figure><img src="/files/FnQpoiuShfvSHJyqKAop" alt=""><figcaption></figcaption></figure>

**1. “No Mutual Servers”**\
If you don’t share the Option Omega Discord server with the user, that’s a clear sign something’s wrong. Legitimate team members will always share the server with you.

**2. Account age: “Member Since 2023”**\
Option Omega was founded in 2021 — if someone claiming to be a long-standing team member has a fresh account, that’s suspicious.

**3. Username mismatch**\
In this example, the name shown is `corranth8`. This *looks* similar to Matt’s real username but may be spoofed. To verify a real team member, find one of their posts in a public channel and click their name directly from the message.

> ✅ **Pro tip:** Always check usernames by clicking through from an actual message inside the server. Don’t trust DMs that show up out of nowhere.

#### What to Do Next

If you’ve confirmed the account is a scammer:

1. **Do not accept or engage.**
2. Click the `···` (three dots) next to the message or on the user’s profile.
3. Select **"Report User Profile"**

<figure><img src="/files/oLglb7dYAklwo87hLgJ2" alt=""><figcaption></figcaption></figure>

**Select everything you are reporting:**

<figure><img src="/files/adiUfMsvzyMB3nNfAg0N" alt=""><figcaption></figcaption></figure>

**Select "Impersonating me or someone I know"**

<figure><img src="/files/z6Fw9B1E5gRjqO6n1hSr" alt=""><figcaption></figcaption></figure>

**Submit the report, then block the user:**

<figure><img src="/files/LtkLNTXIxIkZUnfsIL8u" alt=""><figcaption></figcaption></figure>

**You will see a confirmation that the report was submitted:**

<figure><img src="/files/st9AP1f9Li3AX0Xv1zaB" alt=""><figcaption></figcaption></figure>

**Thank you for helping clean up Discord!**

### Scam Awareness Q\&A

#### **Q: What if I accidentally block someone legitimate?**

No worries — go to your **User Settings > Privacy & Safety > Blocked Users** to view and unblock anyone you've blocked by mistake. It’s easy to reverse, and no harm is done.

#### **Q: What is the difference between "Ignoring" and "Blocking" a user?**

{% hint style="info" %}
For further reading on user ignore & blocking features see Discord's docs: <https://support.discord.com/hc/en-us/articles/28084948873623-How-to-Ignore-Users-on-Discord>
{% endhint %}


# Video Highlights

Resources.


# Video Resources

### New to Option Omega?

We have a wealth of written resources on this page, as well as short-form and long-form videos.

If you’re new to the platform, here are the first few things we recommend to get started.

The best first step is to [take the Backtesting Bootcamp class on Option Omega Academy](https://academy.optionomega.com/course?courseid=backtesting-bootcamp). This will get you up to speed. Note: The class is free. It does require a login and password for Academy, which is separate from the login and password for the OO backtester. The class is video-based.

Sign up for the Discord community — [this video](https://youtu.be/MyEkmc96t1E?si=j3lRl0IT8Sgl_Ns3) shows you how.

For quick videos of about 60 seconds, we have a whole series called [Real Quicks](/welcome/video-highlights/real-quicks), where a concept is explained quickly.

There is a wealth of [YouTube content on our channel](https://www.youtube.com/optionomega) — and if you prefer video, most users start with the Option Omega 101 video below.

From there, either the Profit and Loss Deep Dive or the Option Omega 201 video is a great next step.

Note: The profit and loss video has a BUNCH of the most common questions and tweaks.


# YouTube Instructional Videos

Option Omega regularly releases instructional videos featuring new aspects of the product. Stay subscribed for the latest updates.

The best way to get started on OO is the [Bootcamp](https://academy.optionomega.com/course?courseid=backtesting-bootcamp) on [Option Omega Academy](https://academy.optionomega.com/).

We also have an active YouTube channel: [youtube.com/optionomega](http://youtube.com/optionomega)

If you’re a new user, [watch our new user playlist](https://youtube.com/playlist?list=PLTOq6Tx9HnXIquOUNjmJlBfkys51WtBoW). The [OO101 video](https://youtu.be/LMVRH9236BU?si=fifI-lxOBzgyMsUh) is a shorter, less comprehensive getting-started video than the Bootcamp, but it will get you going nonetheless. After OO101, [Make Friend with the Punisher](https://youtu.be/fGp9cuBdRjE?si=Featwj5fDLhVkY_D) is strongly recommended.


# Real Quicks

### These are short, bite-sized videos built around one quick concept.

If you need a quick visual answer and don't want to watch a full-length video, Real Quicks might be the ticket.

{% embed url="<https://youtu.be/MyEkmc96t1E?si=uf189rUOyBXu5eGn>" %}
Discord
{% endembed %}

{% embed url="<https://youtu.be/ctnIzDKQxH8?si=6lia5iDhrpav9VOg>" %}
Fees
{% endembed %}

{% embed url="<https://youtu.be/D3aH_ET3beE>" %}
Specific Dates
{% endembed %}

{% embed url="<https://youtu.be/KU7wDKYtrV4?si=Tz8ySAWhYU4H6-DF>" %}
Tags
{% endembed %}

{% embed url="<https://youtu.be/gm2BRBDhTe4?si=OV_MFvbBlQ_jWiZk>" %}
Cap Profits (Non Opening)
{% endembed %}

{% embed url="<https://youtu.be/wpcEfTuYrvE?si=bF_yRD5cM2OFmABc>" %}
Use Exact DTE
{% endembed %}

{% embed url="<https://youtu.be/a4UsGQVSLqo?si=gnynFw28bE9YFJrE>" %}
Testing Both Side of an Iron Condor (PCS and CCS)
{% endembed %}

{% embed url="<https://youtu.be/hEQskRrPGZw?si=xN1mDsqmTgUKsjI7>" %}
Save and Share a Backtest
{% endembed %}

{% embed url="<https://youtu.be/Ly5UMpbJ00g>" %}
Floating Entry Time
{% endembed %}

{% embed url="<https://youtu.be/BBjvc9FAGAI>" %}
Stock Splits
{% endembed %}

{% embed url="<https://youtu.be/StMGY-1U2v4>" %}
Intra-Minute Stops (IMSL)
{% endembed %}

{% embed url="<https://youtu.be/r1UFynR0DYc>" %}
Days to Expiry
{% endembed %}

{% embed url="<https://youtu.be/3CqRYx1olPM>" %}
Double Calendar Resources
{% endembed %}

{% embed url="<https://youtu.be/vPyAOqIjd0Y>" %}
Bug Reporting
{% endembed %}

{% embed url="<https://youtu.be/owUtzFkXw_o>" %}
Auction Issues
{% endembed %}


# Cigar Lounge Interviews

In addition to the concept and backtesting breakdown videos, Troy has had an amazing group of guests on the [Cigar Lounge](https://discord.com/channels/882705067210317915/1081387582400770058), with more to come.

Here’s a growing list of Cigar Lounge guests, with videos:

[Eric from Alpha Crunching](https://youtu.be/Mg2C-JNHqEk)

[Tammy Chambless](https://youtu.be/U5LsAFx6GeM)

[Ben from Income Options Trading](https://youtu.be/g7zj7dDmX10)

[Steve from Navigation](https://youtu.be/wxLJ5DmArf4)

[Kirk from Speaking Greeks](https://youtu.be/xsGFKV1givQ)

[David from TradeBusters](https://youtu.be/o2O7eKTKDp0)


# Cigar Lounge Backtest & Concept Videos

Cigar Lounge is a free hangout on the Option Omega Discord. A subscription is not required. Cigar Lounge excerpts are edited for content, clarity, and length. It’s a casual discussion — not financial advice.

You can find the latest announcements of future Cigar Lounges, as well as discussion, in the free Discord channel [#cigar-lounge-discussion here](https://discord.com/channels/882705067210317915/1017437699273134141).

We’ve got a mix of Backtest/Concept videos on the CL (posted below), as well as a great series of interviews.

Some of our most popular topical Cigar Lounges include:

Discussion of Double Calendars: [Part 1](https://youtu.be/o2O7eKTKDp0?si=pjL4qJbxQ1kawQYH) and [Part 2](https://youtu.be/xENXo7yVCuY?si=_U_Ih-I5QJcyh6k7)

[Intraminute Stop Loss](https://youtu.be/zoei70u2P7s?si=UMH7qUHzWRD8mOFm)

2022 Backtests of the Year: [Part 1](https://youtu.be/lXw3kmTXH_o?si=IPBXJGcaqUX-_6q7) and [Part 2](https://youtu.be/5WyqcN5OKVU?si=i_-1Aiu68kw1AQdo)

2023 [Backtests of the Year](https://www.youtube.com/live/0Tz0VoTU1sA?si=5nsJU_EExXrTFB8o)


# Free Trial

During the checkout process, Option Omega subscribers will have the choice of doing a free trial.

The trial is optional and can try the Lite, Essential, or Plus tiers before subscribing (Premium is not included in the free trial).&#x20;

For users who want the free trial, make sure to select the bottom button that says "Start 7-day Free Trial\*". Selecting the top "Buy Subscription" button will result in a paid subscription without a free trial. You will need to select a preferred payment term (monthly, or annually) but will only be charged should you choose to continue with OO after the end of the trial period.&#x20;

<figure><img src="/files/yFaDMqHMHfqywiVItfsg" alt="" width="563"><figcaption></figcaption></figure>

The 7-day Free Trial is fully featured and contains all the tweaks, parameters, and possibilities that the standard subscription contains. However, the backtester on Essential and Plus trials is limited to the last three calendar years (January 1, 2023 to December, 31, 2025). This provides a recent range of dates to to experience all of the settings and options, though is not intended to be a comprehensive long-term backtest. The Optimizer is also limited to 50 tests/run and 1 test/day.

Trial users can also get access to extra channels on Discord.

You can self-verify by putting your Discord username in the **Discord Username** field on optionomega.com. That will grant you access to the verified channels. [Watch this 1-minute video to see how.](https://youtu.be/kWer1Vd_PzI?si=7kO3aUbN6LJ92QcN)

On Discord, verified users will have a green name. Trial users will have an orange name. Trial users have access to some verified channels, including the [#help-questions channel for backtesting](https://discord.com/channels/882705067210317915/1083424140813410396).


# Sample Backtests

We've got two choices for you:

The first is our series of 3 YouTube videos detailing increasingly complex features in the backtester. Check out [Part 1 here](https://youtu.be/jegui1J2wbs), [Part 2 here](https://youtu.be/9w8w9zZ5PS8), and [Part 3 here](https://youtu.be/ET155PiRaWA).

Second, if you prefer written learning, check out this sample QQQ backtest below.

For this backtest, we’re going to select QQQ as the ticker to test, and we are going to backtest a double calendar. We’ll be backtesting selling a call and put at 3 DTE, and buying the same strikes at 5 DTE. These backtests simulate a more complex style trade, with the Greeks and legs of the trade going in multiple directions.

<figure><img src="/files/fQvrm9VGC4jGn0L8aVok" alt=""><figcaption></figcaption></figure>

Let’s enter Friday mornings at 9:45. Reminder: To select Friday, click `Weekly => F` on the frequency\
dropdown.

<figure><img src="/files/mfK3Y8BP99xjd9haE95W" alt=""><figcaption></figcaption></figure>

Our PT will be 30%. We’re not going to set a stop loss right now, more on that later. We’re also going to\
use a profit action — this simulates scaling out of a trade. At 20% profit, we’ll close half the position.

<figure><img src="/files/n2DKdDX6or8NpwrtTTSk" alt=""><figcaption></figcaption></figure>

Now, let’s look at the exit conditions.

Instead of using a SL, we’ll have an early exit. Additionally, we’ll put some guide rails around movement,\
in this case exiting the trade if the short leg (either put or call) goes 1 “past” (-1 in the below fields) on\
the underlying QQQ.

<figure><img src="/files/sL89pKxtt4HU1ZReafEW" alt=""><figcaption></figcaption></figure>

Finally, we’ll add some “standard” misc options, including slippage, commissions, and more, as shown below.

<figure><img src="/files/PWLOy6D1PD7pweeQqs4g" alt=""><figcaption></figcaption></figure>

Then we’ll run the test!

<figure><img src="/files/INNGg6OsSfLesSUJMXan" alt=""><figcaption></figcaption></figure>

Here is the result!

<figure><img src="/files/E5GkwsHGfQmrTHP1gzOu" alt=""><figcaption></figcaption></figure>

Now, let’s save the backtest.

<figure><img src="/files/TXRXdOXRdEkM9C44FSQF" alt=""><figcaption></figcaption></figure>

Since we enabled sharing, we now have a link that other subscribers can use to view our backtest: <https://optionomega.com/share/jotBiMA6SNAP03brD6zD>

Once we’ve named and saved the backtest, we can now do something neat — we can run a portfolio of multiple tests!

### Let’s do a portfolio!

\
We’ll start with the backtest we just created: <https://optionomega.com/share/jotBiMA6SNAP03brD6zD> and put it in a portfolio with a second backtest that we have saved: <https://optionomega.com/share/wMO4VijkjmfMBnbjzyAv>\
\
Tip: If somebody shares a link like this, just click “New Backtest” and re-run the backtest yourself — you can then save or modify it however you like!

Now that we have 2 backtests saved, let’s click `Portfolio => New Portfolio`

<figure><img src="/files/IgEXkJKOkM8EC6CRyRM3" alt=""><figcaption></figcaption></figure>

We’re going to select both tests and run them at a 20% allocation, from May 16, 2022 to July 17, 2023. Note: With a portfolio, the dates you select in the portfolio screen, as well as allocation and max contracts, will override the test conditions.

<figure><img src="/files/IHm8csQ7ZdOqv5DSfnEv" alt=""><figcaption></figcaption></figure>

Run it and there you go — your first portfolio! It’s no problem to combine tickers, different styles, and more\
backtests in a portfolio.

<figure><img src="/files/N56R1XKvfv15PecQMATR" alt=""><figcaption></figcaption></figure>

In a portfolio, you can now easily review the individual strategies, along with the trade log from all the individual strategies, as well as the combined daily P/L and drawdown for all the strategies together. Finally, the portfolio can be saved and shared in the same way as the backtests.

As always, we have plenty more resources on our [YouTube channel.](http://youtube.com/optionomega)

This [one on portfolios is a good place to start](https://youtu.be/setuUdiYrFk), and here’s [one specifically on portfolio allocation](https://youtu.be/-pj-zXzuSak).


# Trial FAQ

### I want to end the trial and start my paid subscription. How do I do that?

No problem — you can end the trial and get full access by clicking the End Trial Now button on the yellow banner at the top of the screen.&#x20;

<figure><img src="/files/gJpmzDuzixdKKDew1djM" alt=""><figcaption></figcaption></figure>

You can also manage your subscription anytime in Settings > Billing including an "End Trial & Start Now" button for Trial users.

<figure><img src="/files/GLCtOD7yQybTtiDqtOpL" alt=""><figcaption></figcaption></figure>

If you run into any issues or have questions about your trial or subscription, you can always email <billing@optionomega.com>.

### My backtest won't run. What's wrong!?

The trial is limited to the last three calendar years (January 1, 2023 to December 31, 2025). Your test won't run if you have any dates outside of this.

### My backtest still didn't work? (a.k.a. my test worked, but it doesn't have a trade I think it should)

The most common reasons tests don’t run are the following:

1. Not enough margin to support the trade, typically for selling puts and calls.
2. The exact DTE button is selected, and there were no trades that fit that DTE.
3. 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.

<figure><img src="/files/cptusbhq5pEF1tN5tk5d" alt=""><figcaption></figcaption></figure>

4. If you are running a multi-DTE trade, only completed trades will be shown in the trade log by default. You can show trades in progress by closing them early with the "Close Open Trades on Test Completion" button, which is in the Misc Options at the bottom.

<figure><img src="/files/uGYoMYodcOfXVJsziIX3" alt=""><figcaption></figcaption></figure>

### ARRRRGGGH. It still didn't work?

No problem. We have technical backtest support — just follow the steps in this video to unlock the verified channels in Discord, and please make a post there. Share a screenshot of your setup.

{% embed url="<https://youtu.be/MyEkmc96t1E?si=j3lRl0IT8Sgl_Ns3>" %}

### Do you have any video resources?

Yes, the best way to get up to speed is Backtesting Bootcamp on Academy. Academy requires its own free login and password, and offers both free and paid courses.

\
We also have a [Trial 101 video here](https://youtu.be/I6a7wCWvdJQ).


# Backtest Setup

### Your First Backtest

To create a new backtest, click the “New Backtest” button on your dashboard.

<figure><img src="/files/PPGwu1YniHTtPWnUppbf" alt=""><figcaption></figcaption></figure>

### Dates

Users can test as far back as 2013-1-1, and as recently as yesterday. Backtesting covers regular trading hours (RTH) only. Data is updated before market open for the previous day. For example, by 2025-01-20 9:30 a.m., 2025-01-19 will be available in the backtester.

Since the stock market, and our tester, are based on US New York Time (GMT-5), international users should be mindful of the selected date and time.

<figure><img src="/files/z1qlSwfeaq0DJzHeXih2" alt=""><figcaption></figcaption></figure>

We have some convenient bubbles with popular timeframes that will auto-populate for you.

<figure><img src="/files/dVlHgibFe1JSDHC2e1qP" alt=""><figcaption></figcaption></figure>

If you notice the little arrow in the “End Date” field, that will populate the last available trading day.

<figure><img src="/files/dFzfrO7enj1Uq3rZXq9Q" alt=""><figcaption></figcaption></figure>

### Tickers

Available tickers for backtesting and automation are SPX (PM expirations only), SPY, QQQ, IWM, AAPL, AMZN, GLD, MSFT, NVDA, TLT, and TSLA.

*Note: XSP is available in automation but not in backtesting. See our FAQ for more information.*

<figure><img src="/files/aDK7OYy9IIqWXQ2H8XeM" alt=""><figcaption></figcaption></figure>

### Building Your Strategy

Under the “Strategy” section, we have a list of common strategies that you can choose from if you don’t want to create your own. Below is information about each one.

*Please note, all examples are from The Options Playbook and tastylive.*

* [Butterfly](https://www.optionsplaybook.com/option-strategies/long-call-butterfly-spread/)
* [Calendar](https://www.optionsplaybook.com/option-strategies/calendar-call-spread/)
* [Double Calendar](https://www.tastylive.com/concepts-strategies/calendar-spread)
* [Iron Condor](https://www.optionsplaybook.com/option-strategies/iron-condor/)
* [Iron Fly](https://www.optionsplaybook.com/option-strategies/iron-butterfly/)
* [Jade Lizard](https://www.tastylive.com/concepts-strategies/jade-lizard)
* [Long Call](https://www.optionsplaybook.com/option-strategies/long-call/)
* [Long Call Spread](https://www.optionsplaybook.com/option-strategies/long-call-spread/)
* [Long Put](https://www.optionsplaybook.com/option-strategies/long-put/)
* [Long Put Spread](https://www.optionsplaybook.com/option-strategies/long-put-spread/)
* [Ratio Spread](https://www.tastylive.com/concepts-strategies/ratio-spread)
* [Short Call](https://www.optionsplaybook.com/option-strategies/short-call/)
* [Short Call Spread](https://www.optionsplaybook.com/option-strategies/short-call-spread/)
* [Short Put](https://www.optionsplaybook.com/option-strategies/short-put/)
* [Short Straddle](https://www.optionsplaybook.com/option-strategies/short-straddle/)
* [Short Strangle](https://www.optionsplaybook.com/option-strategies/short-strangle/)

### Custom Strategy

You can create a custom strategy by clicking the Add Leg option. You can add up to 8 legs for backtesting in one test.

### Strike Selection Type <a href="#strike-selection-type" id="strike-selection-type"></a>

*Choose your default straike selection method. You can also override the strike selection method for different legs (see* [#mixed-strike-selection](#mixed-strike-selection "mention"))

<figure><img src="/files/mG1dUVQEosfXLmsqjA5J" alt="" width="563"><figcaption></figcaption></figure>

#### Delta

By default, the option legs will be based on delta. However, there are also options for % (OTM), Fixed Premium, Strike Offset, and Spread Premium.

When using Delta, it should always be a positive number between 0-100.&#x20;

<figure><img src="/files/Gm2XsIkQwLJvRHmvEl0E" alt=""><figcaption><p><em>Notice the delta symbol in the “type column” between the QTY and the DTE fields</em>.</p></figcaption></figure>

#### Percentage (OTM)

You can also use Percentage OTM (Out of the Money). The tester will pick the closest strike out of the money.

For example, if a user chooses a 5% put and the current SPX is 5000, then the tester will select 4750. If the user chooses a 5% call, the tester will select 5250.

<figure><img src="/files/ylS62zIhyVf4yWQo6Kkf" alt=""><figcaption><p><em>Notice the percentage symbol in the “type column” between the QTY and the DTE fields</em>.</p></figcaption></figure>

#### Fixed Premium

You can also use Fixed Premium. Fixed premium will choose the price closest to the selected premium.

<figure><img src="/files/CGvhNYUyiGICN3CvxmFj" alt=""><figcaption><p><em>Notice the dollar symbol in the “type column” between the QTY and the DTE fields</em>.</p></figcaption></figure>

#### Strike Offset

You can also use Strike Offset — if you select this, it will open up additional choices.

<div data-full-width="false"><figure><img src="/files/4hLtktMkqGUSQzZsghWA" alt=""><figcaption></figcaption></figure></div>

#### Spread Premium Target

The Spread Premium setting allows you to define a target premium value and fixed spread width, with OO choosing the strike based on those criteria. To use this feature, the parent option must have a single [linked leg](#linked-legs) with the same Qty and DTE as the parent. The parent leg's strike selection "unit" shows as Σ$ to indicate the premium target is a sum of the entire spread. The linked child leg's offset (spread width) follows the same guidelines detailed below under [#child-dependent-legs-width-based](#child-dependent-legs-width-based "mention") ).

<figure><img src="/files/ASFdHzSc6FAuiO2L5ZFc" alt=""><figcaption></figcaption></figure>

In the example above, OO will look for the 50-wide put credit spread that nets $3 credit for the entire spread. In the event of a tie, OO will choose the credit spread *further* from the money.

If trading a debit spread, OO will target the premium value for the *debit* of the entire spread. In the event of a tie, OO will choose the debit spread *closer* to the money.&#x20;

#### Mixed Strike Selection

You can also select multiple types of leg selection criteria.

Clicking on the delta icon in the 15 delta 1 DTE put short below, for instance, brings up a choice of the different strike selection criteria, allowing you to choose a different strike selection method for different legs in your strategy.&#x20;

<figure><img src="/files/wXa7OcTDLx3V5pTC8Y0d" alt=""><figcaption></figcaption></figure>

### Option Legs

What is an option leg? At the end of the day, a leg is made up of type (put or call), direction (buy or sell), and days to expiration (DTE).

You can choose the type (put or call)

<figure><img src="/files/oILTZPcSkfnhHqpgyF5X" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/BbzjtHB3edA6N9Py5qTA" alt=""><figcaption></figcaption></figure>

You can also choose the action, buy or sell.

<figure><img src="/files/12P99wyqytFB9QDJHAq5" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/p9juWGg9AnOYlDSXkwl3" alt=""><figcaption></figcaption></figure>

You can also choose the quantity, or qty, of each leg.

<figure><img src="/files/fj4XD90fPqggDmdylLxj" alt=""><figcaption></figcaption></figure>

### Leg Quantity

The leg quantity field should always be 1, unless the trade is a specific ratio trade, like a call butterfly. Users can adjust/set/cap quantities in a variety of ways explained below, but leg quantity is designed to be "One" structure of the trade.

### Linked Legs

There are some strategies that require different things. For instance, when you are backtesting selling a put spread that is 10-wide, you will need to know what the short leg’s strike is before you can buy a leg 10 points away. Another example would be if you are buying a calendar. You will need to know what the short strike is for the front month before you can purchase the long strike for the back month. To solve this, Option Omega uses the concept of “Linked Legs”.

In order to link a leg, we will use this link button here:

<figure><img src="/files/gr27dwtO1mRhI7GcvSIV" alt=""><figcaption></figcaption></figure>

When you click that button you will see that a new leg drops down underneath.

<figure><img src="/files/uC7BtU682PeAbTphFzZb" alt=""><figcaption></figcaption></figure>

Notice on the bottom leg that the spot where your selection type goes looks different than the one above.

<figure><img src="/files/MCNcJM8jqMfgzKNlX8dM" alt=""><figcaption></figcaption></figure>

#### Child/dependent Legs: Width-based

We default this to 0 for you. That means that, as it currently stands, the bottom leg will be the same strike price as the top leg. This is useful for time spreads where you have different option legs with different days to expiration. For example, a common long calendar strategy:

<figure><img src="/files/9fuLoVWhjhv08KmYgz6k" alt=""><figcaption></figcaption></figure>

Let’s say we wanted to sell a 25 delta put spread, and we wanted the spread to be 10 points wide. How would we go about setting that up?

<figure><img src="/files/uQoGbqZkfcg2gp0TsuoH" alt=""><figcaption></figcaption></figure>

The top leg shows us selling a 25 delta put, and the bottom leg has an offset of -10. It is important to remember that negative values in the offset mean down the option chain.

How about if we wanted to sell a 25 delta call spread and we wanted the spread to be 50 points wide? How would we go about setting that up?

<figure><img src="/files/HRMjx2Ssi2petvF9mpxF" alt=""><figcaption></figcaption></figure>

The top leg shows us selling a 25 delta call and the bottom leg has an offset of +50. It is important to remember that positive values in the offset mean up the option chain.

*Note: The offset of the Child/dependent Legs is done based on signed values and the option chain structure.*

**Put options with Child/dependent Legs:**

* if you want the Child/dependent Leg to be further OTM from the parent leg - you have to use a **negative** value for the width.
* if you want the Child/dependent Leg to be further ITM from the parent leg - you have to use a **positive** value for the width.

**Call options with Child/dependent Legs:**

* if you want the Child/dependent Leg to be further OTM from the parent leg - you have to use a **positive** value for the width.
* if you want the Child/dependent Leg to be further ITM from the parent leg - you have to use a **negative** value for the width.

Let’s say you want to use two delta variables to test a strategy instead of using linked legs. Just unlink the legs and select the deltas you want.

<figure><img src="/files/rc2980JyD0EZB2TmhalX" alt=""><figcaption></figcaption></figure>

#### Exact Strike Offset – Padlocked (Linked) Legs

The padlock next to the strike legs is on by default. You can click it to turn it off.\
In the default mode (on), the trade will only execute if there is an option at the strike.

<figure><img src="/files/FYEcJUZNZlV6rrpRfdPQ" alt=""><figcaption></figcaption></figure>

If the box is turned off (white, unlocked), then the tester will find the nearest strike *directionally* to preserve the intended side of the position.

<figure><img src="/files/ImRMicInLV1f9w7yBYHB" alt=""><figcaption></figcaption></figure>

For **Call options:**\
Legs with offset ≥ 0 are rounded up (to the next available strike ≥ parent).\
Legs with offset < 0 are rounded down (to the next available strike < parent).

For **Put options:**\
Legs with offset < 0 are rounded down (to the next available strike < parent).\
Legs with offset ≥ 0 are rounded up (to the next available strike ≥ parent).

If the Child/dependent Leg ([Child/dependent Legs: Delta- or Premium-based with Max Width](#child-dependent-legs)) uses $/delta + max width (distance from the parent leg), the backtest will choose the nearest available strike, but the max width will serve as a **ceiling** or **floor** based on the sign you choose for max width. Please refer to the section below for the detailed explanation.

#### Child/dependent Legs: Delta or Premium-based with Max Width

Child/dependent legs can be selected using either *fixed $ premium* or *delta* in conjunction with a maximum distance from the parent leg (Child/dependent Leg remains linked to Parent leg).

<figure><img src="/files/Fd10UjACHHM93G0yAS9W" alt=""><figcaption><p>Child/dependent Legs</p></figcaption></figure>

*E.g., Users can backtest selling a $3.50 put, and buy a $0.05 long put that is no more than 75 points away from the short. If a 0.05 put is closer than 75 points (e.g., 50 points out), then that strike will be selected. On the other hand, if there is no $0.05 put 75 points away, then the put closest to $0.05 that is within 75 points will be selected.*

<figure><img src="/files/0Ye91kObIDwxfgpUjKu2" alt=""><figcaption><p>Child/dependent Legs (Delta Child Leg)</p></figcaption></figure>

*E.g., Users can backtest selling a 25 delta put, and buy a 10 delta long put that is no more than 15 points away from the short. If a 10 delta put is closer than 15 points (e.g., 10 points out), then that strike will be selected. On the other hand, if there is no 10 delta put 15 points away, then the put closest to 10 delta that is within 15 points will be selected.*

[*This video on Child/dependent legs includes an example and more explanation.*](https://youtu.be/RYfflri_iIc)

*Note: by choosing this option, there is no Exact Strike Offset. The backtest will choose the nearest possible Child/dependent Legs respecting the max width settings.*

**Put options:**

* having \[0; +inf) positive max width - you add the **ceiling** to the max width. The backtest will not go up along the option chain from the parent, and will pick the nearest strike that satisfies the condition. The lower bound is not restricted.
* having (-inf; 0) negative max width - and 0 isn't part of the range - you add the **floor** to the max width. The backtest will not go down along the option chain from the Parent, and will pick the nearest strike that satisfies the condition. The upper bound is not restricted.

**Call options:**

* having \[0; +inf) positive max width - you add the **ceiling** to the max width. The backtester will not go up along the option chain from the parent, and will pick the nearest strike that satisfies the condition. The lower bound is not restricted.
* having (-inf; 0) negative max width - and 0 isn't part of the range - you add the **floor** to the max width. The backtester will not go down along the option chain from the parent and will pick the nearest strike that satisfies the condition. The upper bound is not restricted.

### Days to Expiry (DTE)

The backtester uses calendar days to expiry. This is similar to brokers like tastytrade, IBKR, TOS, and E\*TRADE. Here’s a [video](https://youtu.be/r1UFynR0DYc) on the subject.

**Use Exact DTE**

<figure><img src="/files/UsJ3vZq4JyHsrdS4Kjmw" alt=""><figcaption></figcaption></figure>

This little button says that we want to run our strategy only when there is an option contract that has our exact DTE. What does this mean?

Let’s look at a calendar strategy as an example.

<figure><img src="/files/lmr2sFS7QDAueoIMHAiq" alt=""><figcaption></figcaption></figure>

If you have the “Use Exact DTE” button toggled, this test will only run if there is both a 15 DTE and a 20 DTE available. Not 14 and 19. Not 16 and 21. Only a 15 DTE and a 20 DTE.

*Note: SPX is only afternoon contracts– no morning expiries!*

*Additional Note: If exact DTE is unchecked, and there is not an options expiry on the date selected, the backtester will pick the next available expiry date.*

### Round Strikes

**Strikes can be rounded to the nearest multiple**. – *This should be used to target higher liquidity strikes (e.g., xx00/25/50/75 on SPX, or whole numbers on SPY)*

<figure><img src="/files/CHGrnVyE16tzxyjFaAz5" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/KzlpCGQSajISMspHIGjL" alt=""><figcaption></figcaption></figure>

## Funds & Allocation

### Starting Funds

<figure><img src="/files/QYwGb1UlJSbNaHsJm7eW" alt=""><figcaption></figcaption></figure>

This is the amount of money you want to start the test with. It will obviously change as your p/l changes.

### Margin Allocation % Per Trade

<figure><img src="/files/PXiwLSKhJeFBOMgVCa8L" alt=""><figcaption></figcaption></figure>

This is the percentage of your starting funds that you want to use for each test. Let’s think through a couple of examples.

Let’s say you want to sell a call credit spread 5 points out. Assuming you are starting with over 1k in funds, you should be able to run through a couple of trades in the test before you were ever in danger of running out of funds.

Now, let’s say you wanted to sell a naked call with your starting funds at 1k. Would this run? No it would not. Why? Because naked options require more margin than spreads.

Quite often, we get asked why the number of contracts per trade seems to increase or decrease through the life of the trade. The reason is that Option Omega dynamically runs your strategy using the starting funds and the margin allocation % that you put in place. When in doubt, check these fields.

***Please note: While we have made every effort to have accurate and realistic margin modeling, margin requirements vary between brokerages, and not all trades are supported.***

### Max Open Trades

<figure><img src="/files/WlLjENxVxTbvvJ6JLrQO" alt=""><figcaption></figcaption></figure>

This is the amount of trades you want to have on at any one time through the life of the test.

Let’s say you are selling a put credit spread 120 days out and you are doing it everyday that you have the capital available to place the trade. If you start with a million dollars and you are allocating 2% of your margin allocation, you theoretically could have hundreds of trades on your book. This option allows you to put in place a limit on how many trades you can have on at any given time. With this you are basically saying that no matter how much money and how high an allocation I am using, never have open more than x-number of trades at any given time.

You may notice that little toggle to the right that says, “Prune Oldest Trades”. If you want to have x-number of trades on but you want to continue the strategy, you can toggle this on. What it will do is close the oldest trade on your books before opening a new one.

Note— there is a nuance in automation that the exit will be one minute, and the entry will be the following. In backtesting, the prune (entry/exit) happens the same minute.

### Max Contracts per Trade

<figure><img src="/files/yRINb7uNme6ov209ThAk" alt=""><figcaption></figcaption></figure>

If you would like to bypass all of the allocation work that is done through Option Omega, than you can simply put 1 (or another number) in this field. That way, the backtester will ever only use one contract per trade, no matter how much your allocation % is or what your starting funds are.

Another scenario where this comes in handy is if your strategy is hugely successfull over time! Let’s imagine a strategy that won 99.9% of the time while suffering only a 1% drawdown (If you find this please email us immediately!). If you are starting with 10k in funds and allocating 100% to this strategy, you would quickly be putting on thousands of contracts at one time. To be more realistic, you might want to limit the number of contracts to a reasonable representation of what you think you could get filled on.

Capping the contracts does have an impact on the performance metrics. It may limit both the number of winners and losers. Due to sequence-of-return risk, this can have a significant impact on the viability of a strategy. In other words, it will bias a backtest depending on when wins and losses occur. Many users choose to always leave this blank in order to see the maximum drawdown the backtester experienced during the selected timeframe.

### Ignore Margin Requirements

<figure><img src="/files/zYFsoCnbdXjeYYq6bZbe" alt=""><figcaption></figcaption></figure>

If Max Contracts Per Trade is enabled, an option to ignore margin requirements is available.\
This has been requested by community members who wish to completely disregard any margin simulations and just want to test a strategy without BP/margin limits.

Use cases: this will be helpful to those with portfolio margin, or if your brokerage’s requirements differ from the tester and you know precisely how many lots you will be trading each month, or if you want to test short straddles with reusable longs. Margin requirements vary by broker, but this toggle will allow the user to have an even more open sandbox.

### Max Allocation Amount per Trade

<figure><img src="/files/KY9BcGtO10gwRD2cLiKr" alt=""><figcaption></figcaption></figure>

Trades can be capped at a maximum allocation amount per trade. Note, unlike other fields in OO, this is measured in actual dollars. I.E. a $2000 max allocation amount per trade would be a $20.00 option. Furthermore, this is another gate to total contracts. For instance, if a user has a max allocation of $2000, and they are trading a $9 debit spread, this field would limit the tester to putting on Qty 2 spreads.

### Entry Conditions

Entry conditions allow you to run a backtest only when certain conditions are met.

Entry Time

<figure><img src="/files/2vtQWNReyqrSjzSpzcIE" alt=""><figcaption></figcaption></figure>

*Please note: The available entry times are between 9:32am and 3:59pm EST. This is for “market time” (i.e. New York time in the USA). International users may have to adjust their clocks accordingly. Browser or system settings may impact this.*

<figure><img src="/files/j67K77crrlMhvB0mM3V5" alt=""><figcaption></figcaption></figure>

#### A note on times/resolution in Option Omega

The entry time is based on 1-minute intervals. OO uses 1-minute data as the default for checking things like entries, technical conditions, movement filters, etc. The open is used, not OHLC.

### Frequency

<figure><img src="/files/tSLIoD1DEP9cIeYojUih" alt=""><figcaption></figcaption></figure>

How often you run your backtest is one of the most important questions you will need to think through when setting up your strategy.

Before diving into the frequencies available to run your backtests, we need to explain a very simple but very important toggle:

**Daily**

If you choose daily, Option Omega will run this strategy every day that you:

* Have the funds available to run it (more on this later)
* Have not exceeded the “max open trades” threshold that you set (more on this later)

**Weekly**

<figure><img src="/files/MdFtVfIAUWorFPbaaXqn" alt=""><figcaption></figcaption></figure>

If you choose weekly, Option Omega will run this strategy every weekday (that you select) where you:

* Have the funds available to run it (more on this later)
* Have not exceeded the “max open trades” threshold that you set (more on this later)

**Monthly**

<figure><img src="/files/hrJMhIxrsIbLT3IwJdFA" alt=""><figcaption></figcaption></figure>

If you choose monthly, Option Omega will run this strategy every day of the month, that you select, where you:

* Have the funds available to run it (more on this later)
* Have not exceeded the “max open trades” threshold that you set (more on this later)

**Specific Dates**

<figure><img src="/files/XPMOLCoOHIQQMAdBQxQi" alt=""><figcaption></figcaption></figure>

Specific dates allows you to choose a whitelist of dates that you want to trade.

Format is the same as blackout dates (i.e. Please use a list of comma-separated ISO-formatted dates! E.g.: 2022-05-25,2022-04-21).

All other conditions (VIX filters, TA, date range, etc.) still apply.

Note: Blackout dates are used only for initial entries, not re-entering.

[This video](https://youtu.be/tq_lG7qlUlc) may be helpful regarding the whitelist/blackout days features.

### Use Floating Entry Time

<figure><img src="/files/8zWWJPMZinCnUPOiDKhw" alt=""><figcaption></figcaption></figure>

As an alternate to a mechanical, timed trade, you can now choose to **open a trade whenever entry conditions are met, e.g. intraday movement, regardless of the specific time**. Toggle “Use Floating Entry Time” and optionally specify min and max entry times.

You must still specify a “range” of times during a day to use floating entry.

Note — this only works with certain entry triggers, such as an underlying point move.

### Multiple Entry

Tests can now have multiple entry times. This allows you to enter the same trade at various times throughout the day. Up to 20 additional entry times are allowed per test.

\
Notes: margin requirements, max contracts, etc. are applied per tranche. Also, multiple entries cannot be used with floating time entry nor trade reentry.

<figure><img src="/files/xMLuqkYY7DIAyLZ8eWTZ" alt=""><figcaption></figcaption></figure>

### Use **Blackout Days**

Sometimes the strategy you want to create requires uniform pricing upon entry. This toggle allows you to limit new trades to ONLY the credit(debit) you want to receive(pay).

<figure><img src="https://ootroy.github.io/OptionOmegaDocs/images/useBlackoutDays.png" alt=""><figcaption></figcaption></figure>

Maybe you have been trading awhile and know that there are certain dates in history that you know you would not have traded.

This allows you to enter a list of dates that will be ignored when the tester attempts to enter new trades.

*Please use a list of comma-separated ISO-formatted dates! E.g.: 2022-05-25,2022-04-21*

Here’s a [real quick video](https://youtu.be/D3aH_ET3beE) on specific dates.

For a real life example, fall of 2023 saw several auction issues between OPRA and CBOE. The option chains had major issues for short times. Some people choose to blackout these days. Here’s a [video ](https://youtu.be/owUtzFkXw_o)about it.

Remember, if you want to whitelist days, that option is available in Specific Days as an entry condition.

### Use VIX

#### Use Min/Max VIX

<figure><img src="/files/iBC5N3vTG9vs7JeHbrwI" alt=""><figcaption></figcaption></figure>

You can set a minimum or maximum VIX level as an entry condition. For instance, you are buying a double calendar but you only want to do it in environments where the VIX is under 20. Another example would be you are selling a put credit spread but you only want to enter if the VIX is over 40.

#### Use VIX overnight move

<figure><img src="/files/0SHs2owIQuYuX96jw89o" alt=""><figcaption></figcaption></figure>

**VIX overnight movement can be used as an entry condition**, similar to gaps.

*Note: Overnight movement is defined as the 4:15 PM VIX price on the previous trading day vs VIX price at market open (first VIX print can be at 9:30, though VIX is sometimes delayed to 9:31-9:33.)*

[*Here is a video about the VIX overnight move.*](https://youtu.be/gikrzd0Jsj4)

*Additional note: if a backtest or automation is scheduled to go on early in the morning, and the VIX has not printed, the backtester or automation will use the last premarket VIX print, typically 9:25, as the opening print to determine whether or not to enter the backtest.*

#### VIX Intraday Move

<figure><img src="/files/eXPVfalMOwJ0rTEOQgXT" alt=""><figcaption><p>VIX Intraday Move</p></figcaption></figure>

Intraday VIX movement is similar to the underlying movement entry condition. Intraday VIX movement will enter a trade when the current VIX price has moved a specified amount (% or points) from the opening (RTH) VIX price.

#### VIX9D/VIX Ratio

VIX9D / VIX ratio is also available as both entry and exit conditions. This ratio is useful for trading when short-term volatility is especially high or low. Toggle “Use VIX” to enable these filters.

<figure><img src="/files/V9BAQLXCrBUV0wMznR79" alt=""><figcaption></figcaption></figure>

VIX9D/VIX ratio uses the respective values of VIX9D and VIX at the top of the minute — open value for the minute at 1-minute bar.

*Note: if a backtest is scheduled to go on in the morning and the VIX has not printed, the backtester will use the last premarket VIX print (typically 9:25) as the opening print to determine the value of VIX9D/VIX ratio.*

*Additional note: VIX9D usually prints by 9:32 – the starting time of backtester/automation platform. If VIX9D/VIX is used as an entry condition, and the VIX9D hasn't printed, then the trade will not enter. If VIX9D/VIX is used as an exit condition, and the VIX9D hasn't printed, then the trade will not exit based on VIX9D/VIX condition, but this will not affect other exit conditions (e.g. Timed Exit, Short-Long ratio, etc.) that could cause an exit.*

### Use Technical Indicators

<figure><img src="/files/GyQ2p3iXyFdiU9FnEEyR" alt=""><figcaption></figcaption></figure>

*RSI and SMA are calculated at 1 minute intervals.*

### RSI

<figure><img src="/files/iWnEn1h0lMFXjWlNM6XR" alt=""><figcaption></figcaption></figure>

The Relative Strength Index (RSI), developed by J. Welles Wilder, is a momentum oscillator that measures the speed and change of price movements. The RSI oscillates between zero and 100. Traditionally the RSI is considered overbought when above 70 and oversold when below 30.

We use the 14-day rolling minute RSI - the current value on the day of the trade (continuously updated during the day), and the closing price of the previous 13 days.

### SMA

Simple moving averages calculate the average of a range of prices by the number of periods within that range.

We use the current value on the day of the trade, and the closing price of the previous days. For example, a 3-day SMA on July 11 at 1:00 p.m. would be the average of the current price at 1 p.m. on the 11th of July, plus the daily closing price for the two previous trading days.

This is often used for a multi-day strategy, whereas EMA (below) is typically used for an intraday strategy.

### A note on viewing SMA/RSI:

There are a variety of ways to calculate many technical indicators, including SMA and RSI. Option Omega uses 1-minute resolution, daily SMA and RSI, and calculates the value on the current day. Charting, broker, and modeling software can be set up in different ways. For a user who wishes to match OO, the chart, in TradingView for example, should be on the daily timeframe even though the value is updated on a minute basis.

### EMA

Exponential moving averages is a type of moving average that calculates price data with weighting to more current data. It is often used for intraday entries/exits, and is in minutes.

<figure><img src="/files/ACRqZjppKis83f15bKMX" alt=""><figcaption></figcaption></figure>

Note, for SPX the post-close settlement candles are used to calculate EMA. For SPY, QQQ, etc. — non-index tickers — the pre- and post-market data is used for the EMA calculation. TradingView users have had good results matching the EMA calculation by setting the ticker to display Extended Trading Hours, in TV: select ticker ⇒ settings ⇒ symbol ⇒ session.

### Use Gaps

***NB:** Option Omega calculates all SPX-based filters using the official CBOE SPX index data. Refer to FAQ for detailed information (*[*Backtesting FAQ*](/backtesting-faq#why-didnt-a-trade-trigger-in-my-trade-log-even-though-my-spx-chart-shows-it-should-have)*)*

*Please note: Use positive numbers for all values.* *Value can be in either points or a percentage, depending on which setting the user has selected.*

If you want to trade when the market moves a certain amount up or down, you can enter values into both “min” fields, as shown below, and the condition will trigger when either are true.\*

<figure><img src="/files/2shEVpOVLjHPy6iBKbjK" alt=""><figcaption></figcaption></figure>

This will enable you to open trades when the market either moves a minimum amount up or down, or conversely under a certain amount, from the previous close to the open of the current day, or a combination of the two. Specifically, it measures the overnight gap from the previous trading day close to the official RTH open the following trading day.

### Use Intraday movement

<figure><img src="/files/dwtfbpiV4soa462erCEb" alt=""><figcaption></figcaption></figure>

Only trade when the underlying price moves a certain amount from open of day to entry time. Note: movement can be specified in either percent or points

Min Move/Intraday movement uses the default 1-minute OO data resolution, based on candle open.

The daily open is used for the calculation.

#### Use SqueezeMetrics™ (Gamma / Dark Pool) Indicators <a href="#use-squeezemetrics-tm-gamma-dark-pool-indicators" id="use-squeezemetrics-tm-gamma-dark-pool-indicators"></a>

<figure><img src="/files/Q33Ln5fNJBu7ebYIttVR" alt=""><figcaption></figcaption></figure>

SqueezeMetrics provides open access to DIX and GEX values, which can be used as entry conditions. These are end-of-day values, so they serve as the entry condition for the *next* trading day. E.g. the DIX and GEX values logged for Dec 1 are evaluated for trades opening Dec 2. Please see [SqueezeMetrics](https://squeezemetrics.com/) for more information.

Note: SqueezeMetrics has stopped updating GXV values so they are no longer supported in backtesting.

**Min DIX/Max DIX**

Dark Index (percentage). “Relative amount of trade volume marked ‘short’ in off-exchange (dark) trading.” [DIX Video (YouTube Link)](https://youtu.be/dGsAdXFUzIY)

**Min GEX/Max GEX**

Market Makers’ Gamma Exposure (billions $)

### **Use Opening Range Breakout**

<figure><img src="/files/92EtH2njXnFo13WLescu" alt=""><figcaption></figcaption></figure>

Opening Range Breakout (ORB) is an entry condition that compares price action against a defined price range. OO calculates the opening range based on price movement from the open to the end of the defined time.&#x20;

At trade entry OO will check the underlying's current price against the calculated opening range to evaluate the breakout condition. When used with a floating entry, OO checks each minute during the entry window. With fixed entry time(s), OO will check once at each specified time. The trade is only opened if the condition is met at time of entry (or during the entry window).\
\
The following breakout conditions are available:

* **High and Low** – at time of trade entry, has the price broken above the high or below the low of the opening range?
* **High-Only** – at time of trade entry, has the price broken above the high of the opening range?
* **Low-Only** – at time of trade entry, has the price broken below the low of the opening range?
* **No Breakout** – at time of trade entry, is the price within the opening range?

#### **Opening Range Calculation**

The ORB range is calculated starting from the **RTH open** (the open of the 9:30 a.m. candle) and ending at the **user-specified time**.

> *While OO's options pricing data starts at 9:32 a.m., the underlying price data used to calculate ORB begins at 9:30 a.m. In the event of large market movement on open, that data will be included in calculating the ORB range.*

By default, the ORB range is based on **one-minute open price data**. If “**Use High-Low Values to Calculate Opening Range**” is selected (as shown in the image above), the ORB range will instead include the **high and low** (wicks) of the candles.

> Even when wicks are used to calculate the ORB range, the **trigger condition** is still based on **one-minute open price data**. After the ORB range has been defined, if the underlying price exceeds the range **intra-minute** but returns within the range before the **next bar opens**, the trade will **not** fire.

Another important consideration is the **backtest entry time**. The trade entry time — or the start of the floating time entry window — **should begin after** the ORB range window has closed. If the ORB range is still updating with price, trades will not trigger reliably.

[This class covers setting up an ORB backtest](https://academy.optionomega.com/course/orb-breaking-out-of-losing) on Option Omega Academy (free class, requires Academy username/pw).

{% hint style="info" %}
If the price of the underlying breaches the ORB condition prior to the entry time / entry window, but then retreats back within the range, OO does not consider the ORB condition satisfied and the trade will not be opened.
{% endhint %}

### Use **Min/Max Entry Premium**

Filter trades that open for premium between these values. Use positive numbers for both values, regardless of whether the strategy is a credit or a debit.

<figure><img src="https://ootroy.github.io/OptionOmegaDocs/images/useMinMaxEntryPremium.png" alt=""><figcaption></figcaption></figure>

*Note: the backtest applies this filter to the premium of the position after the entry slippage (if any is indicated).*

### Use **Entry Short/Long Ratio**

Filter trades that open short/long ratio between these values. The ratio is the total short premium divided by the total long premium.

<figure><img src="/files/iGtguTBqGcVudnS3kQ3M" alt=""><figcaption></figcaption></figure>

### Re-**Enter Trades After Exit**

This feature will allow you to automatically re-enter a trade after specified exit conditions are triggered (stop loss, short tested, etc). You can optionally add a delay before re-entry, as well as a minimum and maximum time of day (most useful for 0 DTE). \* *Note: the re-entered trade will use the same entry criteria (deltas, widths, DTEs, entry conditions) as the original trade.*

Note: Blackout dates are used only for the initial entry of dates, not re-entering — i.e. if a multi-day trade is opened, and re-entry is selected, which would be a niche case, the re-entry condition will override the blackout.

[Here’s a video on trade re-entry.](https://youtu.be/ssSFaIYd81Y)

<figure><img src="/files/fnPMhtUcN9KrMv5SwLj4" alt=""><figcaption></figcaption></figure>

## Leg Groups (Single Entry Multi Exit a.k.a. SEME)

Legs can be grouped, allowing for separate exit conditions per group. E.g., enter a condor, but exit the call and put sides separately. Or enter as a credit spread, but exit the short upon SL and leave the long as a runner. This should allow for increased accuracy for margin requirements and improved speed of iteration on testing in general.

The backtest will enter as a single trade, and then manage per leg group (i.e. each leg group is counted as it's own trade in the log).

To use leg groups, simply make the selection, and click on the leg or legs to group them. Note — the tester will not currently check for margin requirements if you happen to exit, for example, the long leg of a spread before the short leg.

Note: this feature acts as single entry -> multi exit; thus, if you choose to use “reenter trades upon exit” for one leg group, the entire trade will be reentered.

[This video on Leg Groups may be helpful](https://youtu.be/PRIHozdcJ9c).

<figure><img src="/files/sc8yIKGcTGKGRtHzwh4H" alt=""><figcaption><p>Leg groups (single entry, multi exit)</p></figcaption></figure>

## Profit & Loss <a href="#exit-conditions" id="exit-conditions"></a>

### Profit Target <a href="#profit-target" id="profit-target"></a>

<figure><img src="/files/dkyXd4bLUyxolFWqzOz3" alt=""><figcaption></figcaption></figure>

When testing a strategy, you can set a profit target using three different methods:

<figure><img src="/files/sOFLbUjrYOgGBz0J7vbq" alt=""><figcaption></figcaption></figure>

1. Percentage
   1. Let’s say you have a put credit spread you are selling. You want to close the trade when the spread has lost 10% of its value.
   2. Perhaps you have a put debit spread that you bought. You want to close the trade when the spread has gained 10% of its value.
2. Fixed Profit
   1. If you buy $1 calls and want to make $5 profit, then enter 5 for the profit target. Note that, as in the rest of the tester, this is similar to the way a broker treats the option (x100). So, in this case a $5 PT would be $500.
3. Closing Order
   1. You want to set a closing order at a certain price and get out when that price is filled.

Note: by default, we require two hits at the profit target to record a profit target exit in the backtest result. This can be configured to only require a single hit under the Misc settings. See: [Require Two Consecutive Hits at Profit Target](#require-two-consecutive-hits-at-profit-target).

Here’s more detail on the profit targets: [Profit Targets (YouTube Link)](https://youtu.be/zFv_VlEpkrc?si=23JsOiBzbRrr_iGa)

### Stop Loss <a href="#stop-loss" id="stop-loss"></a>

<figure><img src="/files/cjnDxXvVSZMIzKf49zPf" alt=""><figcaption></figcaption></figure>

You can also set a stop loss using the same three methods.

1. Percentage
   1. Let’s say you have a put credit spread you are selling. You want to close the trade when the spread has gained 10% of its value.
   2. Perhaps you have a put debit spread that you bought. You want to close the trade when the spread has lost 10% of its value.
2. Fixed Profit
   1. If you buy $1 calls and want to lose $4 max, then enter 4 for the stop loss. Note that, as in the rest of the tester, this is similar to the way a broker treats the option (x100). So, in this case a $4 max loss would be $400.
3. Closing Order
   1. You want to set a closing order at a certain price and get out when that price is filled.

<figure><img src="/files/sOFLbUjrYOgGBz0J7vbq" alt=""><figcaption></figcaption></figure>

### Per-Leg Stop Loss

Selecting this option will tell OO to monitor the value of each selected leg individually against the defined stop loss level. Once the stop loss is triggered, the tester closes the entire leg group, or the full trade if no leg groups exist.

In order for the per-leg stop loss choice to appear, you first need to enter a value into the stop loss field.

[For more information on this option, check out this video.](https://youtu.be/vtvRhVjqovw?t=171\&si=QDTbBCSIj-mPL9PY)

Note: This is a niche option, and should only be used if you have a specific use case. It is off by default.

<figure><img src="/files/JeELxCBfrqphErBHMxrf" alt=""><figcaption></figcaption></figure>

### Use Trailing Stop Loss

If a stop loss is enabled, the backtester will give the option to trail stops. You can trail immediately, or after a minimum profit target is reached.

<figure><img src="/files/9P4IHWA9rx05VRX9ynpr" alt=""><figcaption></figcaption></figure>

There are two different trailing percentage types. If trailing stops are used with a percentage-based stop, then the trail will be recalculated as a percentage of current premium if ‘recalculated’ is selected. If ‘fixed’ is selected, then the trail is instead based upon a percentage of the initial premium.

<figure><img src="/files/0qyy1bqBozxu1Dx8iTM3" alt=""><figcaption></figcaption></figure>

### Use 0-DTE Intra-Minute Stops

For SPX and SPY backtests with an active stop loss, you have the option to enable Intra-Minute Stops (IMSL) for significantly higher precision.

* If your backtest is exclusively 0 DTE, IMSL applies to the entire test.
* For longer DTE backtests, IMSL automatically activates only on days when all remaining legs have reached 0 DTE.
* Strategies with mismatched expirations, such as calendar spreads, are not eligible for IMSL.

While the standard backtester uses 1-minute interval mid-prices to determine options pricing, IMSL evaluates your stop loss using high-resolution 1-second quote data. The tester checks these 1-second intervals and triggers stops based on the calculated mid price.\
Because this 1-second data replaces the old 1-minute OHLC method, *the previous toggle to choose between "NBBO-only" and "NBBO + Trades" has been removed.*

<figure><img src="/files/TsWEbKTSdoAW2df2qwPZ" alt=""><figcaption></figcaption></figure>

**Important:** Due to the vastly increased data resolution and precision of 1-second calculations, it is highly recommended not to use "Cap Losses" when IMSL is enabled.

### Use Profit Actions

<figure><img src="/files/yvMKln9jUApCEL1Qe5fs" alt=""><figcaption></figcaption></figure>

Profit actions allow you to scale out of a percentage of each trade at certain profit targets, adjust your stop loss, or both.

* Any remaining allocation will fall back to the main PT/SL parameters (if specified) and/or remaining exit conditions.
* The trade log will show each time a partial profit is taken, as well as the quantity closed

[This video on profit actions may be useful](https://www.youtube.com/watch?v=gyuCE_kamnE\&t=86s).

## Exit Conditions <a href="#use-early-exit" id="use-early-exit"></a>

In addition to profit targets and stop losses, OO can exit trades based on a variety of other conditions.

### Use Early Exit <a href="#use-early-exit" id="use-early-exit"></a>

<figure><img src="/files/lBnNwiJCFuGSmoVGiWLU" alt=""><figcaption></figcaption></figure>

This toggle is used for when you want to exit the trade before expiration. Users can select from Days to Expiry, Days in Trade, or Minutes in Trade as the Type.

<figure><img src="/files/mDchbAgwA0DY8impeCJj" alt=""><figcaption></figcaption></figure>

**Using DTE (Days to expiry)**

Let’s say you have a 45 DTE put spread. You can use this to say you would like to exit at a certain number of days before expiration. Note, on OO, as in other tools (i.e. broker), the DTE is calendar days, not trading days.

**Using DIT (Days in Trade)**

Let’s say you have a 45 DTE or another long term put spread. Users can can exit once they have been in the trade a certain number of days.

**Using MIT (Minutes in Trade)**

Exits a trade after a certain number of minutes in the trade. This setting should be used for intra-day trades (same day exit) only!

**Early Exit Time**

You can also specify the time you would like to get out.

*Please note: best practice is to have an early exit date. If you don’t have an early exit date, the tester will default to using the 0 DTE, or closing date, as the date.*

<figure><img src="/files/RhVoMahRcje2R9KX0se1" alt=""><figcaption></figcaption></figure>

#### Weekends and holidays <a href="#use-techincal-indicators" id="use-techincal-indicators"></a>

Early exit dates may land on weekends, holidays, or other days that the market is closed. For more information on how OO handles early exit during market closures, see: [Early Exits during Holidays and Weekends](https://docs.optionomega.com/backtesting/early-exits-during-holidays-and-weekends).

### Use Time Actions <a href="#use-techincal-indicators" id="use-techincal-indicators"></a>

Time actions are a way to make adjustments to a trade based on specific times. You can close a percentage of the trade, adjust the PT, or adjust the SL at certain DTE, DIT, MIT, or at a given time. If no action type is specified, the tester uses 0 DTE.

* *Note: both PT and SL adjustments are based upon the initial premium, not the premium at the time of adjustment, unlike profit actions.*

<figure><img src="/files/7HvcbUs1PmoOqGqht8au" alt=""><figcaption></figcaption></figure>

#### Weekends and holidays <a href="#use-techincal-indicators" id="use-techincal-indicators"></a>

Early exit dates from Time Actions may land on weekends, holidays, or other days that the market is closed. For more information on how OO handles early exit during market closures, see: [Early Exits during Holidays and Weekends](https://docs.optionomega.com/backtesting/early-exits-during-holidays-and-weekends).

### Use VIX <a href="#use-techincal-indicators" id="use-techincal-indicators"></a>

VIX and VIX9D exit conditions are available, supporting either a percentage or point-based exit. You can also exit when the ratio of VIX9D to VIX hits a certain number.

Note, these measurements are based upon the change *from* the time the trade opened in the backtest.

<figure><img src="/files/1ywKJD59fswcimhsQD6W" alt=""><figcaption></figcaption></figure>

### Use Technical Indicators <a href="#use-techincal-indicators" id="use-techincal-indicators"></a>

<figure><img src="/files/M4q5uKaDuqTaNZAb4FN9" alt=""><figcaption></figcaption></figure>

As is with entry conditions, you can also exit the trade when certain technical indicators are set. Please see “Entry Conditions” for more detail.

For example:

If you're using Min RSI 60 as an exit, then the trade will exit when the RSI is below 60.

If you're using Max RSI 70 as an exit, then the trade will exit when the RSI is above 70.

If you're using Below SMA Exit 5, then the trade will exit if the SMA is below 5.

### Exit When Underlying Price Moves

<figure><img src="/files/kfRU2fAYyql5VWp4w8M6" alt=""><figcaption></figcaption></figure>

Trades will be closed when the underlying price moves up or down the specified amount — use positive numbers.

Both exit when tested and exit when underlying price moves also have **%/point toggles** to allow better testing of multi-year strategies

<figure><img src="/files/MeQzWEnM8eyPpfJMtDlW" alt=""><figcaption></figcaption></figure>

#### Exit When OTM Short Put/Call is touched (or approached) aka “Exit When Tested” <a href="#exit-when-otm-short-leg-is-touched-or-approached" id="exit-when-otm-short-leg-is-touched-or-approached"></a>

You can also exit when the out of the money short is touched or approached on your trade. Let’s say you are selling a put credit spread. You can choose to exit when the short in that spread is touched. You can also specify how many points before or after it is touched that you want to exit.

Users can use a negative number to denote an exit past the underlying.

Note: This is an exit — it is not a stop loss. Like the default data in Option Omega, it is on a one-minute timeframe, meaning that the level is sampled on the same 1-minute data, i.e. it does not look at the OHLC of the minute.

<figure><img src="/files/b96ACr2KRzwTEhg4PKEI" alt=""><figcaption></figcaption></figure>

### Use Delta

Delta exits are available in position delta and leg delta. Since deltas in OO can use both positive and negative numbers, it is often helpful to visualize using a number scale (i.e. -50 is below -45).

#### Exit Below/Above Position Delta

Trades will be closed when the delta of the entire position is below/above the specified amount; use positive for long delta and negative for short delta.

#### Leg Delta Exit

You can add leg deltas to exit below or above leg deltas.

Here is an example. This is a 40 delta, 1 /3 Call Calendar. It is set to exit the sold call below leg delta of -75.

<figure><img src="/files/yVcluOmp7bMDf28PpSxS" alt=""><figcaption></figcaption></figure>

We can see in the example that, as the market moved up above the strike, the backtest exited when the short call, originally 40 delta, was below that leg's delta of -75. A simple way to think about it is this: as the calendar in the example moved into the money, the short leg that the delta exit is based on would have gotten shorter and shorter delta. So, once it got past short -75 delta, the exit was triggered.

<figure><img src="/files/XFN2iHHOCAYcJrxVYV2L" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/yUq1rA7wlxLA2eW3OpeT" alt=""><figcaption></figcaption></figure>

[Here is the saved backtest link](https://optionomega.com/share/8sVIHRgfkn7oXLA3aIcl) if you would like to view the full backtest.

If you would like to watch a video dealing with deltas, [check it out here](https://www.youtube.com/live/9UM2WlUT7go?si=fz1wY6EjPrYqO5cs).

### Use Short/Long Ratio

Short/long ratio is calculated by dividing total short premium by total long premium. Trades can be closed when S/L ratio falls below or breaks above a certain ratio, or when S/L ratio moves down or up a certain percentage.

## Misc Options (A.K.A. "The Punisher")

This section has been affectionately called “The Punisher” — and contains a variety of toggles meant to make your tests more robust.

[This video](https://youtu.be/zFv_VlEpkrc) may be helpful, as many of the features are covered in it.

### Use **Commissions & Fees**

If you know ahead of time what your per-contract fees and commissions are, you can put them here and we will account for those costs in your test.

Here’s a [real quick](https://optionomegadocs.com/wp-content/uploads/2023/02/Real-Quick-Fees.mp4) on fees, and you can also [watch the video linked just above and here (the deep dive)](https://youtu.be/zFv_VlEpkrc).

<figure><img src="/files/dqSgXMZg4YIflW7qtDVr" alt=""><figcaption></figcaption></figure>

### Slippage

Slippage can be optionally added to entry, exit, or both. This price affects the chosen parameter by the amount listed. This can be especially useful on nearly all backtests, and certainly on high- and low-delta or lower-liquidity strikes.

Note: *Slippage is per position. Thus, if you have an Iron Condor, a .10 slippage would apply across all 4 legs.*

More details on slippage can be found here: [Slippage Video (YouTube Link)](https://youtu.be/BT5oDKmKfn0?si=U8F4P_IywjLBiDvK)

<figure><img src="/files/2bsPslNTCLG0vJ69AnWa" alt=""><figcaption><p>Entry Slippage</p></figcaption></figure>

If you enable a stop loss, the option for Stop Loss Slippage will appear, allowing you to customize this for stopped exits. Note, you can have both exit and stop loss slippage. Exits will use exit slippage, and stop loss slippage will only be used for stop losses.

<figure><img src="/files/NqakEWj6a0ukmlmzK3gW" alt=""><figcaption></figcaption></figure>

***Note: Slippage for fixed premium trades was updated in early 2025. Previously, the strikes considered slippage when selecting premium. As of this change though, the fixed premium slippage now works like other slippages. I.E. If you're selling a $3 fixed premium leg, and have $.05 of entry slippage, the strike will be the same and the slippage will be applied so you would receive $2.95 for the leg.***

***An additional note about FP entry slippage: if there is entry slippage on a leg groups, it will be applied to each leg. For example, if there is a backtest with 3 leg groups and $.15 entry slippage, $.15 will be applied to each leg. If you want $.15 total, in this example you'd use $.05 entry slippage ($.05 x 3= $.15)***

[***Here's a video that on Fixed Premium Entry Slippage***](https://youtu.be/BT5oDKmKfn0?si=YHjLsY7sqMeW2e3W)***.***

### Ignore Wide Bid-Ask Spread

There are times when the market gets wonky (Covid Crash, Volmageddan, Vixzilla, etc). If you toggle this, we will ignore trades where the bid/ask widened over 10k basis points (100%). This is also useful for deep ITM/OTM strikes.

Wide bid-ask is calculated using a standard formula, where if the bid-ask spread on any leg is greater than 10,000 bps, we flag the trade as “wide bid-ask.”

<figure><img src="https://ootroy.github.io/OptionOmegaDocs/images/ignoreTrades.png" alt=""><figcaption></figcaption></figure>

### Close Open Trades on Test Completion

Let’s say you sell a 90 DTE put spread every day. This test runs from January 1st to January 31st. Presuming you had enough capital, at the end of January 31st, you might have over 30 trades still on.

Toggling this tells Option Omega to close those trades win, lose, or draw when the test date ends.

<figure><img src="https://ootroy.github.io/OptionOmegaDocs/images/closeOnTestCompletion.png" alt=""><figcaption></figcaption></figure>

### Cap Non-Opening Profits at Profit Target

This option limits profit target fills to the defined (or calculated) profit target, essentially functioning as a "limit order'" in the backtest. For example, if your profit target is $7 and at one minute the profit is actually at $7.75, selecting this will cap the profits at $7. This is setting applies to profit target fills AFTER the opening (i.e. 9:33 or later). Opening values (9:32) are not capped.

<figure><img src="/files/WAp96tiPALJtIcWUBHSy" alt="" width="310"><figcaption></figcaption></figure>

This setting is enabled by default to produce more realistic fill prices and reduce market noise. For more information, see this [quick video](https://youtu.be/gm2BRBDhTe4?si=ifPqe3G9OmoBjR5X) on it.&#x20;

### Require Two Consecutive Hits at Profit Target

One of the chief ways you can strengthen the rigidity of your tests is to make sure you are getting accurate fills.

When this toggle is on we will only exit trades when the max profit is hit for two consecutive time intervals. The trade still exits at the first time interval and price, however. In general, this will make your backtest less forgiving (more robust).

<figure><img src="/files/zK9Fr4mdzhMuSLv8jkXh" alt="" width="366"><figcaption></figcaption></figure>

This setting is enabled by default when profit targets are used to simulate high probability fills.&#x20;

### Cap Non-Opening Stop Outs at User-Defined Stop Amount

*(Formerly known as "Cap Non-Opening Losses at Stop Loss")*

The Cap Non-Opening Stop Outs at User-Defined Stop Amount limits losses incurred during a stop-loss breach. INstead of using the price during the minute or second when the stop is triggered, it artificially "caps" the loss at the user-defined limit (dollar or percentage value) prior to adding any configured stop-loss slippage. Opening values (9:32) are not capped.

<figure><img src="/files/KlNEVoozMbP06vio0l2n" alt="" width="375"><figcaption></figcaption></figure>

{% hint style="danger" %}
Note: Markets do not cap losses in real-life. This choice (like all choices in the backtester), should only be used with a clear understanding of what it does. By capping losses, stop loss amounts may become overly optimistic and backtests results may be unrealistic. Use this setting with caution.&#x20;
{% endhint %}

[For more information on "Cap Non-Opening Losses," see this video.](https://youtu.be/vtvRhVjqovw?t=495\&si=92wpEeLLTDjEhTDJ)

### Ignore Single Bar Stop Loss Breach

*(Formerly known as "Require Two Hits At Stop Loss")*

When Ignore Single Bar Stop Loss Breach is enabled, the backtester will only exit trades when the stop loss level has been breached for two consecutive time intervals. While the second bar breach is used to confirm the stop out, the trade still exits at the first time interval and price (note: this differs from the "multi-hit" stop loss setting found in the automation platform or offered by some brokers, which stops you out at the market price during the 2nd (or *n*th) bar).&#x20;

<figure><img src="/files/HlgY1QuQKlfXuPxCgden" alt="" width="300"><figcaption></figcaption></figure>

This setting may help filter out stop losses from transient price spikes that can occur during brief moments of illiquidity. It may be useful for some complex, longer dated trade (15–30+ DTE) being managed with a "mental stop," which have more time to wait for confirmation before closing at a loss.

{% hint style="danger" %}
Note: Stop outs cannot be selectively ignored in real-life. This choice (like all choices In the backtester) should only be used with a clear understanding of what it does. By ignoring single bar stop loss breaches, there may be fewer stop outs leading to backtest results that are overly optimistic or unrealistic. Use this setting with caution.&#x20;
{% endhint %}

[For more information on "Ignore Single Bar Stop Loss Breach," see this video.](https://youtu.be/vtvRhVjqovw?t=541\&si=-2CzG-um9-sGVlwq)

## CSV File Upload Settings

A CSV file can be used to test custom entry and exit conditions or signals. See: [Custom Signals Tester via CSV](/backtesting/advanced-options/custom-signals-tester)

## Managing Backtests — Save, Share, Review

### Save and share a backtest

<figure><img src="/files/uj60wocxX2DjNbLzGobl" alt=""><figcaption></figcaption></figure>

If you select the down arrow next to the New Backtest button, you will have the ability to save (and share) a backtest.

<figure><img src="/files/Ks82TP9RBN2roLfWgAzq" alt=""><figcaption></figcaption></figure>

Shared tests are read-only for others, but will allow others to re-run or save their own copies of said tests. Shared tests are “live”, so when you update the original test, others will see the changes.

You can create a new backtest, or replace an existing backtest.

<figure><img src="/files/FrOMEsYIGjCe3JKpXQOz" alt=""><figcaption></figcaption></figure>

Share tests by toggling the option in the “save/edit” backtest slider. The “link” icon will copy the shared URL to your clipboard.

[Here’s a video on saving & sharing a backtest.](https://youtu.be/8_S7hc5oET8)

### Recent Test Runs

<figure><img src="/files/hE07jXkPTNj2ZKWgUTDC" alt=""><figcaption></figcaption></figure>

If you select the clock next to the share backtest button, you will see the recent test run cards — useful for those who iterate rapidly. After running a test, you should see a clock icon in the test header that will open a slider with a list of recent test runs. Selecting a test from the slider will load all details from that test, including the trade log. The 20 most recent test runs per session are stored.

<figure><img src="/files/3AwmL0V1Uu2rhJvJFP9o" alt=""><figcaption></figcaption></figure>


# Backtest Results

Congratulations — you’ve made it to the backtest results screen.

Unless you’ve triggered this screen below, you should have a bunch of data. [If you've triggered the screen below, here's a list of common reasons why that may have happened](https://docs.optionomega.com/backtesting/backtesting-faq#my-trade-didnt-work...why-not-another-version-is-this-my-test-worked-but-it-doesnt-have-a-trade-i-th).

<figure><img src="/files/mt1T24LE7SD4O1FXvxUv" alt=""><figcaption></figcaption></figure>

## Primary Metrics

<figure><img src="/files/iJZfKqJKl9pESGxWutWJ" alt="An example backtest results screen for an SPX trade, showing key metrics."><figcaption><p>Example backtest results screen</p></figcaption></figure>

The Backtest Name (if saved) is displayed at the top, along with sharing link (if enabled), tags, and backtest description. Below, you will see key metrics from the backtest:

* **Strategy Setup**
  * **Underlying**: This displays the tickers for the options being backtested.
  * **Dates:** The range the test ran.
  * **Legs:** Shows the leg(s) of the test.
  * **Entry Conditions:** Details the entry conditions selected.
  * **Exit Conditions:** Details the exit conditions selected.
  * **Misc:** Details any Misc conditions.
* **Backtest Results**
  * **P/L:** Shows the overall realized profit or loss of the strategy during the time range. Unrealized P/L from open trades will not be included. To include open trades in the trade log and in realized P/L use: ‘Close Open Trades on Test Completion’
  * **CAGR:** The compound annual growth rate of the strategy during the test. CAGR is based upon net liquidity, which uses EOD values including any open trades. See: [CAGR](https://www.investopedia.com/terms/c/cagr.asp). To include any open trades in the trade log, use: ‘Close Open Trades on Test Completion’
  * **Max Drawdown:** The max drawdown at EOD. 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. (Please note: This is different from the max loss column on the trade log, which is intraday).
  * **MAR Ratio:** CAGR / MDD. See: [MAR Ratio](https://www.investopedia.com/terms/m/mar-ratio.asp).
  * **Sharpe:** The calculated Sharpe Ratio, or realized returns in excess of the risk-free rate, per unit of total volatility, computed on the same net-liquidity, end-of-day basis as CAGR. The Sharpe Ratio can be negative when excess returns are negative. See: [Sharpe Ratio](https://www.investopedia.com/terms/s/sharperatio.asp).
  * **Sortino:** The calculated Sortino Ratio, or realized returns in excess of the risk-free rate, per unit of downside volatility, computed on the same net-liquidity, end-of-day basis as CAGR. The Sortino Ratio can be negative when excess returns are negative. See: [Sortino Ratio](https://www.investopedia.com/terms/s/sortinoratio.asp).
  * **Win Percentage:** % of trades that are profitable
  * **Total Premium**: The total amount of credit or debit.
  * **Capture rate:** The % of the trade value that was realized. The capture rate only shows if net premium is positive.
  * **Starting capital:** The amount of $ at the beginning of the backtest.
  * **Ending capital:** Starting capital +/- profit loss from closed backtests.
  * **Average per trade:** The average amount of $ either profited or lost during the backtest period.
  * **Average winner per lot:** Average amount collected during a winning trade per lot.
  * **Average loser per lot:** Average amount lost during a losing trade per lot.
  * **Max winner:** Highest amount profited during any closed trade (or an ongoing trade if one is open at test completion).
  * **Max loser:** Highest amount lost during any closed trade (or an ongoing trade if one is open at test completion).
  * **Average days in trade:** The average amount of time spent with an open trade.
  * **Trades:** Total number of trades, including an ongoing trade if one is open at test completion.
  * **Open Trades:** This indicates the presence of open trades in the backtest. Open trades will not appear in the trade log, but their EOD values are used for NLV-based metrics including CAGR, MDD, and MAR. Use ‘Close Open Trades on Test Completion’ to report these trades in the trade log and include their final values in the total realized P/L.
  * **Winners:** Total number of winning trades, including an ongoing trade if one is open at test completion.
  * **Net Liquidity (Net Liq)**: The sum of the portfolio’s cash, added to the mid-value of any open options position

## Secondary tabs

Below the primary metrics, you'll see a few different tabs at the bottom:

* **Summary** - a snapshot of P/L over time as well as annualized return and max drawdown per calendar year
* **Trade log** - a detailed breakdown of every trade that was run as part of the backtest
* **Analyze** - various analytics and visuals to glean deeper insights into the backtest results
* **Optimizations** - recently run parameter sweeps that originated from the backtest

### Summary Screen

At the bottom of the backtest results screen is the summary screen. It has two main tabs, the Summary and the Trade Log. The summary section has two parts:

<figure><img src="/files/7FKi8BksSeRaQsskgNfT" alt=""><figcaption></figcaption></figure>

The first part is a graph visually representing the trading funds by date in the backtest. For a backtest, the graph will only update when trades close. Tip: In order to see intra-trade drawdowns of a multi-day trade, you can put the backtest into a portfolio.

Annual metrics bar chart. This is the return of the backtest as well as its maximum drawdown. If the test is multi year, the metric will display the yearly return and the maximum cumulative drawdown in that year (e.g. if the test ends the year 2023 with a 10% MDD, and the drawdown continues an additional 5% in 2024 before recovering, then the MDD shown in the annual metrics bar for 2024 would be 15%). Said another way, the MDD in the annual metrics bar will match the highest MDD reported in the daily log for that year.

### Trade Log

The Trade Log lists out every simulated trade that was run in the backtest.&#x20;

<figure><img src="/files/L4X7C5Lw2wpfGZBvYQWc" alt=""><figcaption></figcaption></figure>

At the top right of the screen there are several options for customizing the trade log.

<figure><img src="/files/CaqSRrGnGIhLFfisTyCp" alt=""><figcaption></figcaption></figure>

* Sort: Tests can be sorted by opened, closed and P/L, with results ascending or descending.
* Filter: The log can be filtered to view only winners or only losers.

#### **Trade Replay**

<figure><img src="/files/gnhZjGZ9YnscPF8Ct1RZ" alt=""><figcaption></figcaption></figure>

If you click the three vertical lines on the left, you will be able to see the Trade Replay — how the trade behaved over time. The graph also shows VIX and the underlying.

<figure><img src="/files/48fpeGRrvaTYWlQMYYY7" alt=""><figcaption></figcaption></figure>

A few notes about the Trade Replay chart:<br>

1. The trade replay is based on 1 minute data, so if you’re using IMSL, that will not be reflected.
2. You can click on the Trade, Underlying, and VIX blocks on the upper legend to show or hide each of these plots.
3. You can also mouseover nodes on the line chart to see the exact trade value, underlying price, or VIX level at each point:<br>

   <figure><img src="/files/sMW45qEmw24R9DRvuUaz" alt="" width="563"><figcaption></figcaption></figure>
4. For longer duration trades, the chart defaults to an Overview of the entire trade, scaled appropriately based on the duration. You can switch a Weekly View using the selector on the bottom left to zoom in for a minute-by-minute analysis:<br>

   <figure><img src="/files/dO7pNwrvXfc4VxCeN5mg" alt="" width="328"><figcaption></figcaption></figure>

#### Export to CSV

This will export the trade log to a `.csv` file, so it can be opened and used in Microsoft Excel, Google Sheets, iOS, etc.

When a backtest is exported to CSV, the context given in the visual trade log on the backtest results screen is lost. Specifically, if you’re wondering about a certain value, for example why your max profit is that number, it is helpful to refer to the trade log to see which values are percentages vs. raw numbers.

#### Trade Log Settings

The gear icon will open up a screen with additional customization choices.

<figure><img src="/files/lGS5i35EpUaMYQGxYVYg" alt=""><figcaption></figcaption></figure>

Clicking the red and green eye option on the right side of the screen will allow the selection to be turned on or off in the trade log. The selections are described below:

* **Opened On:** The day, date and time the trade opened.
* **Opening Price:** Price of the underlying at the time the trade opened.
* **Strategy**: The name of the strategy, for use when analyzing multiple strategies on a spreadsheet.
* **Legs:** The quantity, date, strike and type (put/call) of the leg.
* **Premium:** The amount of debit or credit at the time of trade open (impacted by slippage if used).
* **Closing Price:** Price of the underlying at the time the trade closed.
* **Closed On:** The day, date, and time the trade was closed.&#x20;
* **Days In Trade:** The number of whole days the trade was open. 0 DTE trades will show 0 DIT.&#x20;
* **Closing Cost:** The amount of debit or credit at the time of trade close (impacted by slippage if used).
* **Reason for close:** The trigger that exited the trade. Reasons may include specified exit conditions (e.g. Above Delta, VIX9D Move Down), profit targets, stop losses, closure due to exercise/assignment risk, or expiration.&#x20;
* **P/L:** The amount the trade profited or lost (measured in $)
* **P/L %:** P/L expressed as a percentage of initial premium (for credit trades, max profit = 100%; for debit trades, max loss = –100%).
* **Max Loss:** The maximum loss the trade was “down” (measured in %)
* **Max Profit:** The maximum gain the trade was “up” (measured in %)
* **Margin Req’d:** While we have made every effort to have accurate and realistic margin modeling, margin requirements DO vary between brokerages.
* **Funds at close:** Current funds after the trade closed.
* **Opening S/L ratio**: Total short premium divided by total long premium at time of trade open.
* **Closing S/L ratio:** Total short premium divided by total long premium at time of trade close.
* **Opening VIX:** VIX at time of trade open (will not display unless VIX is an entry condition).
* **Closing VIX:** VIX at time of trade closed (will not display unless VIX is an exit condition).
* **Gap:** Underlying price gap from close of previous day to opening of current day
* **Movement:** Underlying price movement from open of day to opening the trade

#### Sorting the trade log

It is possible to sort the trade log using several filters, including Max Profit/Loss, P/L, and Opening /Closing.

You can also sort ascending or descending, and filter winners or losers.

<figure><img src="/files/Ct2xNf0YYNlY8ERhiSed" alt=""><figcaption></figcaption></figure>

### Analyze

The Analyze tab goes beyond the summary numbers to help you drill down into other considerations before trading the strategy live. It there real edge, or could it just be luck? How big were the losers, or how long are the losing streaks? How does it behave when it is sized diﬀerently or if results are sequenced diﬀerently?&#x20;

<figure><img src="/files/XyV4gawNNEEn1MqLhBjF" alt=""><figcaption><p>The Analyze tab contains a number of metrics, charts, and simulation tools for deeper analysis.</p></figcaption></figure>

* **Sizing Mode:** Both Analyze views include a Sizing Mode toggle at the top. When Normalize to 1-lot is on, trade-level panels treat every trade as a single contract, so position sizing and compounding don't skew the per-trade picture. When it is oﬀ, panels use your trades exactly as sized in the test. Each section is labeled with a badge — PER 1 LOT or ACTUAL SIZING — so you always know which basis you're looking at. Account-level panels (drawdowns, position sizing, Monte Carlo) always retain actual position sizes, no matter the toggle.
* **Strategy Health Verdict:** A quick health check of your strategy. Each card grades one trait — green is good, gold means watch it, red flags a concern. Hover any card in the app to see how it is graded.
  * **Sample Size**: How many trades the test produced. Small samples make every other number less trustworthy.
  * **Profit Factor**: Gross profits divided by gross losses.
  * **Sharpe Ratio**: Risk-adjusted return computed from the daily equity curve.
  * **Max Drawdown**: The worst peak-to-trough decline in end-of-day net liquidity.
  * **Tail Risk**: How large the worst losses are relative to typical results.
  * **Recovery Factor**: Total profit relative to max drawdown — how well the strategy earns its way out ofits worst stretch.
  * **Edge Margin**: How far the strategy's win rate sits above the break-even win rate implied by its payoﬀ ratio.
* **Advanced Performance Metrics**: Additional metrics beyond the summary screen. Each card includes a definition and a scale showing how your value compares.
  * **Ulcer Index**: Penalizes both the depth and the duration of drawdowns. A long, shallow grind hurts more here than a quick, sharp dip. Under 2 is calm; over 5 is psychologically uncomfortable.
  * **Time in Drawdown**: The share of days spent below a previous account high. Lower means the account recovers quickly and spends more of its life making new highs.
  * **Probabilistic Sharpe**: A screening estimate of the probability that the trade-level Sharpe is above zero, adjusted for skew and kurtosis. Treat it as supporting evidence, not proof.
  * **Skewness**: The shape of your P/L distribution. Negative = many small wins with occasional big
  * losses (typical for premium sellers). Positive = many small losses with occasional big winners.
  * **Payoﬀ Ratio**: Average winner divided by average loser. Premium-selling strategies often sit below 1 — combine with win rate to assess true edge.
  * **Expectancy / Trade**: Average dollar P/L per trade. Must exceed your typical fees plus slippage to be truly profitable live.
  * **Trade Eﬃciency**: The average percentage of peak unrealized profit captured on winning trades. Low eﬃciency suggests exits are coming too early.
  * The **Edge Trend** tile below the metrics compares per-lot expectancy in the first and second halves of the test, with a bootstrap interval that tells you whether the change is signal or noise.
* **Drawdown Over Time**: Percentage drawdown from the running peak, plotted across the entire test. The curve sits at 0% whenever the account is at an all-time high. Drawdown is measured on end-of-day net liquidity, so open positions are marked to market — this is the drawdown you would have actually experienced.&#x20;
  * The **Top Drawdown Periods** table below it lists the five worst declines with how long each took to bottom out and how long to recover to a new high.
* **Monthly P/L Heatmap & Performance Table**: Total P/L per calendar month, color-coded by magnitude — useful for spotting seasonal patterns and year-over-year consistency. Expand the Monthly Performance Table for trade count, P/L, win rate, intra-month drawdown, and best/worst trade per month. Months with fewer than five trades are dimmed: not enough data to draw conclusions.
* **Trade Streaks**: Your longest consecutive winning and losing streaks, in the order trades closed. Reveals how wins andlosses cluster — and what a bad stretch actually looks like for this strategy.
* **Performance by VIX Regime:** Trades bucketed by the VIX level at entry. Shows how dependent the strategy's edge is on the volatility regime it was tested in — and what might happen if the regime flips.
* **P/L Distributions**:
  * **P/L Distribution**: A histogram of trade-level P/L showing the shape of returns. Long left tails are the classic "nickels in front of a steamroller" profile.
  * **P/L Cumulative Distribution**: The curve at any point tells you what percentage of trades made at most that amount. This chart is always per-lot, because compounded dollar sizes would dominate the distribution.
* **MAE / MFE Distribution**
  * **MFE** (Maximum Favorable Excursion) is the peak unrealized profit during a trade; **MAE** (Maximum Adverse Excursion) is the deepest unrealized loss. Together they help refine profit targets and stop-loss levels based on where trades actually peaked and bottomed.
* **Return on Margin & Holding Duration**
  * **Return on Margin**: Profit as a percentage of buying power required, per trade — how much you earned per dollar tied up.
  * **Holding Duration**: The distribution of how long trades stayed open. Often surprising — many traders assume their hold time diﬀers from reality.
* **Exit Reason Breakdown**: Trades grouped by why they closed — expired, profit target, stop loss, and so on. Reveals which exit conditions actually drive your returns.
* **Win Rate vs Payoﬀ Breakeven**: Plots the win rate required to break even at any payoﬀ ratio. Your strategy is the green dot — anywhere above the red curve is profitable territory.
* **Position Sizing Simulator**: What would this exact trade sequence have done at a diﬀerent allocation? Drag the slider to re-run the equity curve live — contract rounding, compounding, drawdowns, and blow-ups included. This panel always uses actual recorded position sizes as its starting point.
*

```
<figure><img src="/files/2uLMZS6YXmhTcmXXiZJN" alt=""><figcaption><p>Build confidence with the Monte Carlo simulation, which randomizes trade sequence to estimate "worst case" scenarios with optionally injected additional losses.</p></figcaption></figure>
```

* **Monte Carlo Simulation**: Reorders your fixed historical dollar P/L using random or block resampling, with optional injected losses. It measures how sensitive the result is to trade order and reports how often the stressed balance reaches zero. It is a stress test of sequencing — not a forecast of future returns.

### Optimizations

The Optimizations tab will show recently run Optimizations. See [Optimizer](/backtesting/optimizer) for more information.

<figure><img src="/files/Gca3D05wc0evtZGFtTPk" alt=""><figcaption><p>Optimizer results can be found and accessed from the Optimizations tab</p></figcaption></figure>

### Save, Tag & Share a backtest

If you have a backtest that you want to save, click the down arrow at the backtest results screen.

<figure><img src="/files/sPStlrGomnntHDLUhDSi" alt=""><figcaption></figcaption></figure>

This will bring up the Save Backtest screen, which lets you either save a new backtest, or save over, or replace, an existing backtest.

<figure><img src="/files/ZgdkmiH9jfayFlBIcY1W" alt=""><figcaption></figcaption></figure>

If you select the “Create New Backtest” button, you can now name the backtest, along with a description, tags, and sharing settings.

<figure><img src="/files/eicNGLc7mXMxONaT3STt" alt=""><figcaption></figcaption></figure>

### Adding Tags

Tags are an easy way of organizing your backtests. You can add a new tag by typing and then hitting the plus button

<figure><img src="/files/z28wA0QskhKXxk77MDuG" alt=""><figcaption></figcaption></figure>

The tag will then show up in your backtest name (we have two tags here “Add new tags here!” and “CL” in this example).

[Here’s a video on tagging.](https://youtu.be/KU7wDKYtrV4?si=MFEX7-ekMA3rkwN6)

<figure><img src="/files/hka16hfIDExUea0tBGBM" alt=""><figcaption></figcaption></figure>

### Sharing a test

To share a test, select share test with others when you’re saving the backtest

<figure><img src="/files/XR6KQ12DU0vPkSBl8aLi" alt=""><figcaption></figcaption></figure>

To get the link to the test, just click the chain link button near the test name

<figure><img src="/files/gdydPTiKBacjWPwtzDRx" alt=""><figcaption></figcaption></figure>

[Here’s a video on saving & sharing a backtest](https://youtu.be/hEQskRrPGZw)


# Portfolios

### What are Portfolios?

Portfolios are an extremely powerful tool that allows users to run multiple backtests dynamically over a period of time and analyze the aggregate results. This enables simulation of real-world trading, where several strategies are traded concurrently.

If you prefer a video summary, [this may be helpful](https://youtu.be/setuUdiYrFk).

## Setting up a Portfolio

In the web app, select **Portfolios** from the **Test** dropdown.

<figure><img src="/files/K2uXBkXNxRgqHa7Vj2xs" alt=""><figcaption></figcaption></figure>

This opens the main screen to create and manage the portfolio.

<figure><img src="/files/deHjyLTQ4bNffsfFBmOz" alt=""><figcaption></figcaption></figure>

You will at first see fewer options than the backtest creation screen.

Starting funds and a date range are required to be selected. NOTE: the starting funds and date range for the portfolio will OVERRIDE the starting funds and date range for the saved tests (it won’t actually change the saved tests, but for the purposes of the portfolio, it will use the portfolio starting funds and date range).

Note: When running a portfolio, you can override “Close Tests on Completion”, to close any open backtests.

After selecting these two items, the fun part begins!

You will see a list of saved backtests that you can select to include in the portfolio — up to 30 backtests can be run at a time. Note that portfolios are built from saved backtests, so if you want to create one from scratch, you will need to save the backtests that you want to incorporate first.

For users with an abundance of saved backtests, you can filter down the list by searching by the backtest name or by using tags to narrow down the tests, since many users like to run portfolios on a certain type of shared strategy.

The allocation field is critical. Similar to the starting funds, the allocation for the portfolio will OVERRIDE whatever the individual test(s) have as an allocation.

Importantly, the allocation does NOT have to add up to 100%. It can sometimes be more than 100% (depending on the length of tests, etc.). It may often be less than 100% as well.

[This video on portfolio allocation may be helpful.](https://youtu.be/-pj-zXzuSak)

There is now also a choice to cap contracts at the portfolio level.

<figure><img src="/files/DA9VHyRCakjnYm6ju7FH" alt=""><figcaption><p><strong>Max contracts can now be overridden when creating portfolios</strong>, similar to allocation percentage. If allocation and max contracts are both used and they are different amounts, as would normally be the case, whichever is smaller will be the deciding value.</p></figcaption></figure>

To add tests to the portfolio, simply select the checkbox. Once a test has been selected, it will be filled with an arrow, showing the test is part of the portfolio.

<figure><img src="/files/hPEhJqWqqmZxhPa5HXr7" alt=""><figcaption></figcaption></figure>

Once all the desired tests have been selected, it’s time to hit run, just like with a backtest.

## Portfolio Results Screen

<figure><img src="/files/aZCBRnVh5w1VYv8qrKrE" alt=""><figcaption></figcaption></figure>

The portfolio results screen will display many of the same metrics that the [backtest results screen](https://optionomegadocs.com/?docs=docly-documentation/getting-started/backtest-results#displayed-metrics) does:

* **Dates:** The range the test ran.
* **P/L:** Shows the overall profit or loss of the strategy during the time range. Note: Portfolio P/L is net liquidity end of day (EOD); the trade log PnL is closed trades only.
* **CAGR:** The compound annual growth rate of the strategy during the test. CAGR is based upon net liquidity, so it involves open trades.
* **Max Drawdown:** The max drawdown at EOD. 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. (Please note: This is different from the max loss column on the trade log, which is intraday).
* **MAR Ratio:** CAGR / MDD
* **Sharpe / Sortino**: The Sharpe Ratio and Sortino Ratio (volatility adjusted risk-free returns) of the portfolio test results.
* **Total Premium**: The total amount of credit or debit.
* **Capture rate:** The % of the trade value that was realized.
* **Starting capital**: The amount of $ at the beginning of the backtest.
* **Ending capital:** The amount of $ at the end of the backtest.

## Portfolio results screen graphs

<figure><img src="/files/VRpC5lucSbGQbigY7epl" alt=""><figcaption></figcaption></figure>

The bottom of the portfolio screen displays two summary graphs. The one on the left graphs net liquidity against the benchmark, and the one on the right graphs the performance and max drawdown of both the portfolio and the benchmark.

The Daily Log and Trade Log columns both function similarly to these columns in backtests. The Strategies tab is unique to portfolios.

<figure><img src="/files/NMX25d3Ku5HcR4sfKqG8" alt=""><figcaption></figcaption></figure>

Selecting strategies will provide a snapshot of which backtests were selected, including the details of the allocation in the portfolio.

The **Daily Log** report is also unique to portfolios. Each column in the daily log summarizes the end-of-day values for the combined total impact of all open and closed trades in the account.

**Net Liquidity:** Account NLV value, includes EOD value of open trades, includes withdrawals, used to calculate P/L and drawdowns

**Current Funds:** Account value not including P/L of open trades, only updated when trades close, includes withdrawals

**Total Withdrawn:** Running total amount withdrawn when using monthly account withdrawal options

**Trading Funds:** Account value not including P/L of open trades, only updated when trades close, does not include withdrawals, used for % account position sizing

**P/L:** P/L at end of day, measured from prior day Net Liquidity

**P/L %:** P/L at end of day measured relative to prior day Net Liquidity

**Drawdown %:** Calculated from the maximum prior Net Liquidity value compared to the current Net Liquidity. Note, if running a PoO (Portfolio of One), you will find the max Drawdown % will match the Max Drawdown on the report page.

## Sharing the Portfolio

Saving a portfolio is easy. It is a similar process to saving a backtest.

<figure><img src="/files/SCUXb2Xaq1HQvhInMErp" alt=""><figcaption></figcaption></figure>

Select the icon next to New Portfolio. This will bring up the Save Portfolio choices. The process works the same as with backtests, including tagging and sharing the portfolio with other OO users.

## Recent Portfolio Runs

Similar to recent runs in a backtest, users can navigate and view recent portfolio runs for quick analysis.

<figure><img src="/files/06ivPdZSTJO0w2U7Yuw5" alt=""><figcaption></figcaption></figure>


# Advanced Options


# Custom Signals Tester

The CSV file upload is an advanced feature that allows you to upload a CSV file which OO can use as a custom signal file for trade entries, strike selection, and trade exits.&#x20;

### Heads-up!

The CSV tester is an advanced option. We strongly recommend [watching this video on it](https://youtu.be/tmDN7BSbGdU) before you do anything else.&#x20;

{% hint style="warning" %}
If you are using a spreadsheet tool such as Excel or Google Sheets to compile your CSV data, please note that these tools often auto-format dates and times. If the dates/times are formatted into anything other than ISO 8061 format, they will NOT work OO. See our suggested steps to [Maintain ISO Date/Time Formatting in Spreadsheet Tools](#maintaining-correct-iso-date-time-formatting-in-spreadsheet-tools).&#x20;
{% endhint %}

{% embed url="<https://youtu.be/tmDN7BSbGdU>" %}

### Unlocking the Advanced Options

This feature is gated behind the advanced options toggle. To get to it, click on the portrait in the upper right hand corner of the app, as noted by the white arrow in the screen shot below.

<figure><img src="/files/qQCRHWFfc4plKU1rVFoH" alt=""><figcaption></figcaption></figure>

Then, click **Preferences**, and toggle on **Show Advanced Options**.

Then, please click **Update Preferences**.

<figure><img src="/files/0Wwbg25NCkZb6rd0Clax" alt=""><figcaption></figcaption></figure>

### Custom Signals Tester Basics

The custom signals tester is a CSV upload option that replaces some of the standing backtesting options. It allows you to bring some amount of information into the tester, and backtest those user-generated signals.

Common use cases include:

1. Special indicators developed for certain combinations of market movements and/or timing
2. Advanced TA situations
3. Custom charting applications

In real terms, this section allows the user to bring in their own data via a CSV upload and backtest it in order to tweak profitability, exit conditions, position sizing, etc.

It is considered an advanced feature, and because it requires a higher level of technical expertise, it is not turned on by default.

Before we get into the four different choices for the tester, let’s look at the maximum amount of information required.

<figure><img src="/files/O89yLW6EZJwDmB4e72HQ" alt=""><figcaption></figcaption></figure>

Above is a custom list of signals for SPY. When the correct procedure is followed (as detailed below– this is the final option when all three choices on the signals settings are selected), the user will be testing entry and exit times, along with a mixed strategy of buying and selling puts and calls at various strikes. This is the most complicated format, and simpler variations are available.

The signals tester is extremely powerful — it allows deep testing of multiple intraday trades, mixing and matching various strategies and situations. It is not for the faint of heart or new testers, but it can provide optimization at a high level.

Some basics:

The formats must be followed exactly. This is essential. Improper formatting, including punctuation, will result in a lot of frustration and time wasted. In each section we’ve provided sample CSV files, where the data can be removed and customized for individual requirements. Some tools, including Excel, may open the provided CSVs and default them to a different format. A settings change may be required, most typically to keep the date in ISO format.

The OPEN\_DATETIME and CLOSE\_DATETIME columns must be exactly formatted. The requirement is an ISO formatted date, a space, and then 24 hour time format with hours and minutes only. Example: `2022-10-26 13:45`

The BUY\_SELL column must be either a B or S.

The CALL\_PUT column must be either a C or P.

The STRIKE must be numerical– please make sure this strike exists at this date and time!

The EXPIRATION column must be an ISO formatted date. Example: `2022-10-26`

The QUANTITY must be a positive whole integer.

### CSV File Upload Settings

This section is now unlocked and displayed at the very bottom of the backtest creation screen.

<figure><img src="/files/daYeiqVxUVHa5nSFmWUy" alt=""><figcaption></figcaption></figure>

Once you select the option to use it, you will then see two additional choices.

<figure><img src="/files/Gfy0ZF7PJyPupXBTtX9V" alt=""><figcaption></figcaption></figure>

The custom signals tester allows several different versions of data upload, at the user’s discretion.

### Testing entry times only

The most basic use of the custom signals tester is for an entry time only. When the first option is selected, this allows the user to upload a CSV which specifies the trade open date and time ONLY. The date and time MUST be in the below picture format.

Click below for a sample .CSV file that can be used and modified.

{% file src="/files/LTNAUTNuxV2LcFDav81Q" %}

{% hint style="warning" %}
If you open the template file in a spreadsheet tool such as Excel or Google Sheets it may auto-format the dates and times to something other than ISO 8061 format which will NOT work OO. See our suggested steps to [Maintain ISO Date/Time Formatting in Spreadsheet Tools](#maintaining-correct-iso-date-time-formatting-in-spreadsheet-tools).&#x20;
{% endhint %}

<figure><img src="/files/dazJjyuxZi2LcEraqsdk" alt=""><figcaption></figcaption></figure>

Please note — when using this option, all of the normal minimum selections that are required to run a backtest still need to be entered in the backtester, including ticker, strikes, etc.

### Testing entry and exit times

<figure><img src="/files/g48o0hrMEbiFXGq7Ke4m" alt=""><figcaption></figcaption></figure>

When the first two options are selected, the custom signals tester will use both entry AND exit times. This allows the user to upload a CSV which specifies the dates and times ONLY. The date and time MUST be in the below picture format.

Click below for a sample .CSV file that can be used and modified.

{% file src="/files/7QaUqu80GDe5icP1HzYb" %}

{% hint style="warning" %}
If you open the template file in a spreadsheet tool such as Excel or Google Sheets it may auto-format the dates and times to something other than ISO 8061 format which will NOT work OO. See our suggested steps to [Maintain ISO Date/Time Formatting in Spreadsheet Tools](#maintaining-correct-iso-date-time-formatting-in-spreadsheet-tools).&#x20;
{% endhint %}

<figure><img src="/files/WIBpUdWb7jW30b6UFY7a" alt=""><figcaption></figcaption></figure>

Please note — when using this option, all of the normal minimum selections that are required to run a backtest still need to be entered in the backtester, including ticker, strikes, etc.

### Testing Entry Times and Strikes

<figure><img src="/files/M5CGuyOvOBrLZCA0uOuC" alt=""><figcaption></figcaption></figure>

When the first and third options are selected, the user can test the entry time, and strike selection.

The information below is required, and it must be in the exact format detailed below.

Click below for a sample .CSV file that can be used and modified.

{% file src="/files/jQPppYPhlzBhnuvYnymM" %}

{% hint style="warning" %}
If you open the template file in a spreadsheet tool such as Excel or Google Sheets it may auto-format the dates and times to something other than ISO 8061 format which will NOT work OO. See our suggested steps to [Maintain ISO Date/Time Formatting in Spreadsheet Tools](#maintaining-correct-iso-date-time-formatting-in-spreadsheet-tools).&#x20;
{% endhint %}

<figure><img src="/files/ZMDEJIu1Sfzv9LecWpg3" alt=""><figcaption></figcaption></figure>

As in the sections above, all of the normal minimum selections that are required to run a backtest still need to be entered, including test date range, ticker, etc.

### Testing Entry times, Exit times & Strikes

<figure><img src="/files/VS8K63BGDwPnoK8MMvjp" alt=""><figcaption></figcaption></figure>

When all three choices are selected, the user can test the entry time, exit time, and strikes. This choice requires the most amount of data in the .CSV file.

The information below is required, and it must be in the exact format detailed below.

Click below for a sample .CSV file that can be used and modified.

{% file src="/files/UZEeX268uwHZ0O7mkCfK" %}

{% hint style="warning" %}
If you open the template file in a spreadsheet tool such as Excel or Google Sheets it may auto-format the dates and times to something other than ISO 8061 format which will NOT work OO. See our suggested steps to [Maintain ISO Date/Time Formatting in Spreadsheet Tools](#maintaining-correct-iso-date-time-formatting-in-spreadsheet-tools). d
{% endhint %}

<figure><img src="/files/MvnENdvPm5k89ewURdTW" alt=""><figcaption></figcaption></figure>

## Misc Notes

Proper date/time formatting is critical for CSV signal files to work correctly. This sections covers the correct ISO 8061 date/time formatting and tips for working with CSV files in popular spreadsheet tools to maintain the correct formatting.

### ISO date/time formatting

CSV signal files must use [ISO 8601 date/time formatting](https://en.wikipedia.org/wiki/ISO_8601): `YYYY-MM-DD HH:mm`. A trade opening February 14, 2025 at 1:15 PM would be formatted as `2025-02-14 13:15` in the OPEN\_DATETIME column.

* **Date**: There are four digits for the year (e.g. 2025), followed by a hyphen, then two digits for the month (e.g. 02 for February), followed by another hyphen, then two more digits for the date (e.g. 14 for the 14th). Single digit months and dates require the leading zero to maintain two digits (e.g. February needs to be 02, not 2.
* **Time**: After the date, a single space is used and then the time is written in 24-hour format with two digits each for hours and minutes. For example, `13:30` for 1:30 p.m., `14:00` for 2:00 p.m., and `15:55` for 3:55 p.m.

### Maintaining Correct ISO Date/Time Formatting in Spreadsheet Tools

Most popular spreadsheet tools like Microsoft Excel or Google Sheets will automatically re-format date/time values into a format other than ISO 8601. The spreadsheet tool attempts to show the date/time in a more customary localized format. For example, `2025-02-14 13:15` may get converted to `2/14/2025 1:15 PM` in the US or `14 Feb 2025, 13:15` in certain European regions. If the CSV file is saved with the re-formatted dates, OO will be unable to properly ingest the file. To preserve ISO date/time formatting, try the steps below, depending on the tool you are using to.

#### Excel

1. Open a blank workbook in Excel.&#x20;
2. Do not open the template CSV file direct. Instead, click File > Import.
3. Select CSV and choose the CSV template to upload.
4. In Text Import Wizard, choose the following:
   1. Step 1: Delimited
   2. Step 2: Under delimiters, check "Comma" and uncheck all others.
   3. Step 3: Click each column in the preview window and set column data format to Text (do NOT use General or Date).<br>

      <figure><img src="/files/RE5hWnvuefesX5BOl4Jx" alt="" width="563"><figcaption></figcaption></figure>
5. Import the data to the existing sheet.
6. Select ALL cells (top left corner button).&#x20;
7. Change date formatting for all cells to Text.
8. This will ensure that both the imported data and any data that is subsequently input or pasted will be formatted as text which cannot be automatically re-formatted to another date/time format. <br>

   <figure><img src="/files/rPle1z30DOlTmPCmuflb" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Note: exact steps may differ depending on the version of Excel you are using.&#x20;
{% endhint %}

#### Google Sheets

1. Open a Blank sheet.
2. Go to File > Import and upload your CSV template file.
3. In the Import file confirmation modal, uncheck the box that says "Convert text to numbers, date, and formulas."

<figure><img src="/files/vHMtCxaCoOAtTJiMNgV2" alt="" width="563"><figcaption></figcaption></figure>

4. Import the data.
5. Select ALL cells (top left corner button).
6. Change date formatting for all cells to Text.
7. This will ensure that both the imported data and any data that is subsequently input or pasted will be formatted as text which cannot be automatically re-formatted to another date/time format.&#x20;

<figure><img src="/files/TyYdUfiQan22vHU2idtD" alt="" width="563"><figcaption></figcaption></figure>

{% hint style="info" %}
Note: exact steps may differ depending on the version of Sheets you are using.&#x20;
{% endhint %}

#### Conversion using AI / LLMs

An alternative method is to let your spreadsheet tool re-format the date/time values but then use an AI / LLM tool to process the file and convert date/time cells back to ISO 8061 format.&#x20;


# Early Exits during Holidays and Weekends

For both backtesting and automation, OO can close a trade prior to expiration, without having to rely on a stop loss or profit target. This can be done through the [Early Exit](https://docs.optionomega.com/backtesting/backtest-setup#use-early-exit-1) setting, which closes the entire trade, or the [Time Actions](https://docs.optionomega.com/backtesting/backtest-setup#use-techincal-indicators) setting, which closes portions of the trade.

Early exits can be specified as DTE (Days to Expiration), DIT (Days In Trade) and MIT (Minutes In Trade). While MIT (Minutes in Trade) is used for intraday management<sup>1</sup>, DTE and DIT exits can sometimes fall on days the market is closed, such as holidays and weekends. OO uses different logic to select DTE and DIT dates when trading cannot occur on the "true" DTE or DIT.

The following table shows the difference between DTE and DIT date selection over a holiday, New Year’s Day, as well as a weekend. In this example, a 7 DTE trade opens on Tuesday, 30 Dec 2025, and expires on Tuesday, 06 Jan 2026. The DTE and DIT columns show the "true" value, and the Early Exit Date columns show the value that OO would select if the "true" value lands on a market closure.

<table data-header-hidden="false" data-header-sticky data-first-column-sticky><thead><tr><th width="142.26953125">Date</th><th width="133.953125">Event</th><th width="99.58203125">DTE</th><th width="138.68359375">Early Exit Date (DTE)</th><th width="95.6796875">DIT</th><th>Early Exit Date (DIT)</th></tr></thead><tbody><tr><td>Tue 30 Dec 25</td><td><mark style="color:$success;">Opening Trade</mark></td><td>7</td><td>Tue 30 Dec 25 (7 DTE)</td><td>0</td><td>Tue 30 Dec 25 (0 DIT)</td></tr><tr><td>Wed 31 Dec 25</td><td></td><td>6</td><td>Wed 31 Dec 25 (6 DTE)</td><td>1</td><td>Wed 31 Dec 25 (1 DIT)</td></tr><tr><td><mark style="color:$info;">Thu 01 Jan 26</mark></td><td><mark style="color:$info;">Closed for New Years</mark></td><td>5</td><td>Wed 31 Dec 25 (6 DTE)</td><td>2</td><td>Fri 02 Jan 26 (3 DIT)</td></tr><tr><td>Fri 02 Jan 26</td><td></td><td>4</td><td>Fri 02 Jan 26 (4 DTE)</td><td>3</td><td>Fri 02 Jan 26 (3 DIT)</td></tr><tr><td><mark style="color:$info;">Sat 03 Jan 26</mark></td><td><mark style="color:$info;">Closed for Weekend</mark></td><td>3</td><td>Fri 02 Jan 26 (4 DTE)</td><td>4</td><td>Mon 05 Jan 26 (6 DIT)</td></tr><tr><td><mark style="color:$info;">Sun 04 Jan 26</mark></td><td><mark style="color:$info;">Closed for Weekend</mark></td><td>2</td><td>Mon 05 Jan 26 (1 DTE)</td><td>5</td><td>Mon 05 Jan 26 (6 DIT)</td></tr><tr><td>Mon 05 Jan 26</td><td></td><td>1</td><td>Mon 05 Jan 26 (1 DTE)</td><td>6</td><td>Mon 05 Jan 26 (6 DIT)</td></tr><tr><td>Tue 06 Jan 26</td><td><mark style="color:$danger;">Expiration Day</mark></td><td>0</td><td>Tue 06 Jan 26 (0 DTE)</td><td>7</td><td>Tue 06 Jan 26 (7 DIT)</td></tr></tbody></table>

## Early Exit - DTE

* When an Early Exit with DTE is used, OO will close the trade by the specified number of days prior to expiration day.
* If the calculated date falls on a holiday or weekend, OO will select the *closest* date, while biasing an *earlier* exit / greater DTE where needed. For example:
  * If an option expires on Tuesday, 06 Jan 26, and a 2 DTE early exit is specified that lands on a weekend (Sunday), OO will select Monday, 05 Jan 26 (1 DTE) rather than Friday, 02 Jan 26 (4 DTE) to exit.
    * If Monday is a holiday (three day weekend), OO will select the next Tuesday<sup>2</sup>.
  * If an option expires on Tuesday, 06 Jan 26, and a 3 DTE early exit is specified that lands on a weekend (Saturday), OO will select Friday, 02 Jan 26 (4 DTE) rather than Monday, 05 Jan 26 (1 DTE) to exit.
    * If Friday is a holiday (three day weekend), OO will select the previous Thursday<sup>2</sup>.
  * If an option expires on Tuesday, 06 Jan 26, and a 5 DTE early exit is specified that lands on a holiday (New Year's Day, Thursday, 01 Jan 26), OO will select Wednesday, 31 Dec (6 DTE) rather than Friday, 02 Jan 26 (4 DTE)
* The logic for selecting the exit date looks at whole days, rather than the exit time. Once the date is selected, the early exit will initiate at the specified time.

## Early Exit - DIT

* When an Early Exit with DIT is used, OO will close the trade only *after* the specified number of days in trade.
* If the calculated date falls on a holiday or weekend, OO will select the *closest* date that ensures a *minimum* of the specified DIT has been fulfilled, so the DIT value serves as a trade duration *floor.*
  * If a trade opens on Tuesday, 30 Dec 25, and a 5 DIT early exit is specified that lands on a weekend (Sunday), OO will select Monday, 05 Jan 26 (6 DIT).
  * If a trade opens on Tuesday, 30 Dec 25, and a 4 DIT early exit is specified that lands on a weekend (Saturday), OO will still select Monday, 05 Jan 26 (6 DIT) rather than Friday, 02 Jan 26 (3 DIT), to ensure the trade was open at least 4 days.
  * If a trade opens on Tuesday, 30 Dec 25, and a 2 DIT early exit is specified that lands on a holiday, New Year’s Day, Thursday, 01 Jan 26, OO will select Friday, 02 Jan 26 (3 DIT) rather than Wednesday, 31 Dec 25 (1 DIT) to ensure the trade was open at least 2 days.
* The logic for selecting the exit date looks at whole days, rather than the exit time. Once the date is selected, the early exit will initiate at the specified time.

## Notes

1. Early exit via Minutes In Trade (MIT) should be limited to 0DTE / intra-day trades only. Using a Minutes In Trade value that extends past market close of the day can result in unpredictable trade management behavior.
2. During three day / holiday weekends, a "tie" scenario can occur where the specified DTE lands on the 2nd day of a 3-day market closure period. OO first applies the weekend check logic, which may land on the holiday, then selects the closest date from there using the holiday date selection logic.
3. When [CSV Signal files](https://docs.optionomega.com/backtesting/advanced-options/custom-signals-tester) are used and the Use CSV Exit Times setting is enable, Early Exit and Time Actions are ignored. Exits are determined by the dates/times on the CSV file.


# Optimizer

## Overview

The Optimizer is a powerful addition to backtesting that allows you to iterate over one or more parameters as you refine the strategy and optimize performance.

For example, you may want to test various stop loss levels for a premium selling strategy and find which level performed best against historical data. Rather than having to choose a starting stop loss level, run a single test, log the result, adjust the level, re-run the test, and repeat for each stop loss, the Optimizer allows you to define your starting and ending values and step size then run tests against each stop loss level to compare and analyze results.

You can even optimize against multiple dimensions at once, testing different put side and call side stop levels, combining entry times with other entry conditions, or analyzing different combinations of short strike delta values and wing widths together.

Depending on your account tier, you can test up to 500 test iterations in a single run and run up to 250 optimizations per day. See [Optimizer Availability and Daily Limits](#optimizer-availability-and-daily-limits) for more information on what's available in each OO tier.

## Your First Optimization

An Optimization run starts with a [saved backtest](/backtesting/backtest-setup#save-and-share-a-backtest). If you have not yet created and saved one, please start with [your first backtest](/backtesting/backtest-setup#your-first-backtest). From the saved backtest page, click on the Puzzle icon (<img src="/files/ZVHu9oeC8xvoTMzQ79SW" alt="" data-size="line">) in the top right, next to the Recent Test Runs shortcut.

<figure><img src="/files/r1vkmZli2H6ZNSBI3HqP" alt="" width="563"><figcaption></figcaption></figure>

### Setup

The Optimizer will preload the start and end dates and starting funds of your base backtest. You can override the dates and starting funds here. For optimization runs with many concurrent tests, we recommend limiting the date range.

### Sweep Dimensions

Under Sweep Dimensions, use the dropdown menu to select your first Parameter to sweep over for the optimization. The list will include strategy setup parameters such as Strike Deltas, Leg Offsets, any entry criteria that are present on the base backtest, such as entry time, VIX conditions, or technical indicators, and exit conditions such as stop losses, profit targets, or early exit rules. Note that certain more complex conditions, such as profit actions or time actions are cannot be swept.&#x20;

{% hint style="info" %}
If you want to sweep over a parameter that is not shown on the list, you must first add it to the base backtest and save it. You can use a value on the extreme end of the range (such as Min VIX = 1) to enable the parameter in the optimizer without changing the results of the base backtest.
{% endhint %}

#### Parameter Sweep Range

For a selected parameter, the Base value and unit are displayed — this the value used on the base backtest. You can then specify a Start and End value and Step size. For example, if you are optimizing on delta for a short put, you might have a base value of 25 delta. You might want to test delta values from 10 to 40 in 5 delta steps. Set Start at 10, End at 40, and a Step size of 5, and the Optimizer will test 10, 15, 20, 25, 30, 35, and 40 delta, or 7 tests within the optimization run.

<figure><img src="/files/qsRL4RQddtlblVuszen5" alt=""><figcaption></figcaption></figure>

#### Offset Parameters

When testing strike offset parameters, values are relative to the reference value (such as the strike of the parent leg, or the spot price of the underlying). You will need to use negative values to sweep through lower strikes. For example, a 25-wide short vertical put spread has an offset of -25. To sweep through various wing widths, you may want to use a starting value of -10, ending value of -50, and step size of -5. The Optimizer will then test offsets of -10, -15, -20, -25, -30, -35, -40, -45, and -50, or 9 total tests within the optimization run.

<figure><img src="/files/XVgt2goRGjXN18ls8alt" alt=""><figcaption></figcaption></figure>

#### Fixed value parameters

Some parameters, such as SMA and EMA, use fixed values from a picklist. Rather than inputting numerical start and end values and a step size, the Optimizer will allow you to define the start and ending values from the fixed list and OO will step through each value within the range.

<figure><img src="/files/jQon7CV0k0Hpv3mKZuxy" alt=""><figcaption></figcaption></figure>

Note that the Optimizer currently supports Above and Below for SMA and EMA. We do not support Compare at this time (e.g. Enter when SMA\_X > SMA\_Y).&#x20;

### Multiple Parameters

You can sweep across multiple parameters (up to 5) in a single optimization run. Just click the Add Dimension button to add a new parameter row. Combining the two examples above, the Optimizer will run 63 total tests in a single run, as shown in the total test counter on the bottom right.

<figure><img src="/files/WLFcBeCNcI545ijOmnP7" alt=""><figcaption></figcaption></figure>

### Running an Optimization

Once the parameters are selected with start/end values and step sizes entered, click Run to proceed with the Optimization. A modal will appear with a progress bar as the optimization is being run. You can leave this running to wait for the results. Optionally, click Continue in Background to keep the Optimization running in the background. This will allow you to navigate elsewhere or even close the browser tab while the test continues to run.&#x20;

<figure><img src="/files/FJVOKngpAPsslh2WDczQ" alt="" width="375"><figcaption></figcaption></figure>

If Continue in Background is chosen, the Optimization progress can be viewed under the Optimizations tab on the base backtest. When completed, you can also click on the row to access the Optimization results.

<figure><img src="/files/Fi1aBlhbKwasQMIlk90c" alt="" width="563"><figcaption></figcaption></figure>

In the event an Optimization fails to run, see [Troubleshooting Possible Errors](#troubleshooting-possible-errors).

## Optimization Results

When complete, Optimization Results are displayed in a slider. The slider also opens if you click on a previous Optimization from the Backtest Results > Optimizations tab, where you'll find runs that were set to "Continue in Background" or any previously run Optimizations.

<figure><img src="/files/5oizlF0RfVUUjL5esGNv" alt=""><figcaption></figcaption></figure>

At the top left, you'll see the strategy name, the number of test iterations within the optimization run, the date range, starting capital, and the chips showing the parameter(s) optimized in this run. On the top right, you'll be able to download a CSV of the results (<img src="/files/IkMJcZmTFZFQZxRtCUKx" alt="" data-size="line">) as well as set up another optimization run (<img src="/files/ZVHu9oeC8xvoTMzQ79SW" alt="" data-size="line">) pre-filled with the same parameters.

### Robustness

For each Optimization, OO attempts to calculate the Robustness of the results to estimate whether test improvements from adjusting parameters are likely from curve fitting to historical data (lower curve-fit resistance) or if the improved results are likely to hold up to future trading (higher curve-fit resistance).

Expanding the Robustness section provides more information on how the score is calculated. OO looks at the top 10% of tests for the chosen performance metric, averaging the stability of neighboring parameter combinations. The Curve-Fit Resistance score is a composite of four weighted measures, scaled down when nearby tests are missing or errored:

* **Retention** (45%) - when evaluating the best parameter combination, do neighboring parameter values retain performance improvement (more robust)?
* **Plateau** (30%) - is the optimal parameter value part of a broader high-performing region (more robust) or an isolated peak (less robust)?
* **Smoothness** (15%) - does performance change gradually (more robust) or abruptly (less robust) as we iterate across parameter values?
* **Multi-metric** (10%) - does the best parameter combination for the chosen performance metric also perform consistently strong across other performance metrics (more robust)? Or does it trade-off performance (less robust)?

{% hint style="warning" %}
It's important to note that the Curve-Fit Resistance and other Robustness measures are generalized estimates. As with any backtesting results, past performance is NOT a guarantee of future results.
{% endhint %}

### Best Results

Below the expandable Robustness section, you'll see the best test results for Sharpe, Sortino, MAR, P/L, CAGR, Win %, Lowest Max DD, and Premium Capture %. Note that the best parameter combination for one metric is likely to be a different parameter combination for another. These are the best possible results for each individual metric across all tests in the optimization. Clicking on any of the metric panes will take you to the table view, sorting the test runs by the respective performance metric. See Table.

### Charts View

Below the Best Results panes, you can visualize Optimization results via Charts (default) or the raw data in a Table.

#### Single Barchart

This bar chart allows you to choose one performance metric and a single parameter (if the optimization contains more than one) from the controls on the top left. The chart will show performance on the Y-axis and parameter values on the X-axis.

By isolating a single parameter, you can more easily visualize how neighboring values perform, identify peaks/plateaus, and gauge smoothness of results to see if the optimization is robust or curve-fit.

Hover the mouse over a specific bar for more details on that specific parameter. You can also click on the bar to go to the table view, where the relevant backtest (for that parameter value) will be highlighted, allowing you to see more information on that specific test run. Note that if you have a multi-parameter optimization, each bar on the single parameter heat map aggregates the results across all other un-selected parameters.

<figure><img src="/files/q7hdslhbqEgMOAMvrb0w" alt="Single parameter bar chart"><figcaption><p>The highest Sortino values are centered around 40 delta. We also see performance retention in neighboring values, a broad plateau, and relatively smooth falloff on either side of the peak, suggesting that optimizing on Delta for this strategy is fairly robust and resistant to curve-fitting.</p></figcaption></figure>

#### Dual Parameter Heat Map

The dual parameter heat map is available when two or more parameters have been added to the optimization. Choose the performance metric and the X and Y-axis parameters using the controls on the top right.

The matrix shows all possible combinations of the two selected parameters and the color scale shows the best performing combinations in green and the worst performing (negative values) in red. The performance measure is also shown in each cell.

By visualizing two parameters in one matrix, you can find regions with the highest performance and also assess robustness — are the strongest (green) results in an orderly region (more robust) or are they scattered (random / curve fit)?

Hover the mouse over specific cells to see other performance results for that parameter combination at the bottom of the chart. You can also click on any cell to go to the table view, where the relevant backtest (for that parameter value combination) will be highlighted.

If more than two parameters are in the optimization, each cell will aggregate the results across any un-selected parameters.

<figure><img src="/files/PDmNE5PEWdu0NNxHmgqa" alt=""><figcaption></figcaption></figure>

#### Parameter Impact Analysis

The Parameter Impact analysis is shown when two or more parameters are present on the optimization. This section helps to identify which parameter(s) in the optimization make the biggest impact(s) in the results. By using ANOVA ([analysis of variance](https://en.wikipedia.org/wiki/Analysis_of_variance)), we can evaluate each parameter's relative influence on performance. This allows you to focus energy on optimizing for parameters that make the biggest impact.

In this example, we can see that Leg 1 Delta has a large effect on P/L, while the Profit Target has minimal impact. This leads to further investigation on whether the appropriate profit target range was tested, or if a profit target is even needed — perhaps other forms of exit (early exit, stop loss, or even holding to expiration) may produce a better result.

<figure><img src="/files/CsafxRUlyygD9OFdtTdC" alt=""><figcaption></figcaption></figure>

On the other hand, when we look at parameter impact for the same parameters but for a different strategy, we see both Profit Target and Leg 1 Delta contributing to performance, with the Profit Target having a great impact. This strategy may perform across a wider range of delta values but focusing on refining the Profit Target might yield better results against historical data.

<figure><img src="/files/pCPDI0rWv35HtMEucDCO" alt=""><figcaption></figcaption></figure>

### Table View

The table view allows you to see performance metrics for ALL tests (every possible combination of parameter values) in the optimization. Click any of the column headers to sort, or use the Best Metrics panes above.

The highlighted row shows the best test for a chosen performance metric. Or, if you clicked from one of the charts, it shows the relevant test that was clicked to get to the table.

The row representing the base test is shown with a "Baseline" chip, allowing you to see which results were better and which were worse than the base test.

<figure><img src="/files/D4J5BMMQPSYJbsKnFlep" alt=""><figcaption><p>The highlighted top row shows the "best" result for a chosen metric, while the Baseline shows the reference base backtest for comparison. </p></figcaption></figure>

#### Saving a Backtest with Optimized Parameters

To the far right on each row, clicking the triangle (<img src="/files/VMntmdl4tCQu4xo0VoLs" alt="" data-size="line">) icon will allow you to run a new backtest using the optimized parameters of that particular test row.

This is a shortcut that opens the [backtest setup](/backtesting/backtest-setup) slider, pre-populating it with the optimized values from the test to run a new backtest. You can then further analyze the backtest with trade log or CSV export as well as [saving the test](/backtesting/backtest-setup) to either update the base backtest or create a new backtest.

## Optimizations Tab

Once an Optimization has been run for a backtest (remember — Optimizations must originate from a *saved* base backtest), it can be found under the Optimizations tab on the backtest. Here you'll see completed, backtests, cancelled backtest, failed backtests, and any backtests that are in progress. In addition to the Optimization creation date and Status columns, you can find the dimensions / parameters which were tested, the number of tests, and the best result for various performance metrics.

You are able to click on a Completed backtest to review results, iterate through new Optimizations, or run New Backtests from the table view.

<figure><img src="/files/TUAb7NSTapqc2wQkh5RM" alt=""><figcaption><p>Example Optimization tab showing optimizations that are In progress, completed, failed, and canceled. </p></figcaption></figure>

Optimization runs are stored for 7 days, after which they are cleared from the Optimizations tab. If you encounter optimization results you wish to keep, the best practice is to run the backtest for the best result and either update the original base backtest or save it as a new one. You can use the description field to log notes on what optimizations have been performed.

## Optimizer Availability and Daily Limits

The Optimizer is available for Essential, Plus, and Premium OO tiers, as well as Trial accounts for Essential and Plus. The maximum number of concurrent tests per optimization and daily limits vary by account tier:

<table><thead><tr><th width="236.18359375">Account Tier</th><th width="154.234375" align="center">Max Parameters</th><th width="183.99609375" align="center">Max Tests per Optimization Run</th><th align="center">Daily Optimization Run Limit</th></tr></thead><tbody><tr><td>Trial (Essential and Plus)</td><td align="center">5</td><td align="center">50</td><td align="center">1</td></tr><tr><td>Essential, Plus*</td><td align="center">5</td><td align="center">50</td><td align="center">10</td></tr><tr><td>Premium</td><td align="center">5</td><td align="center">500</td><td align="center">250</td></tr></tbody></table>

* For all tiers, only one Optimization can be run at a time.
* The daily Optimization limit reset daily at 12am ET.
* Users on Essential or Plus tiers can upgrade to Premium at anytime to gain access to higher limits.
* Optimizations may run up to 20 minutes before timing out. See [possible errors](#possible-errors) for help troubleshooting timeouts or other failures.

## Troubleshooting Possible Errors

There are several reasons why an Optimization may fail to run.

Optimizations are resource intensive and are limited depending on tier. Your current daily usage and daily limit is shown at the bottom of the New Optimization slider:

<figure><img src="/files/b7Hz0t10IhyNFflhkPo3" alt="" width="563"><figcaption></figcaption></figure>

If you exceed the daily limit (10 for Essential and Plus tiers, 250 for Premium) you'll also see an error message. You can upgrade your tier to instantly unlock additional Optimizations.

<figure><img src="/files/jhIjvwYDkCA1Dtweg8zX" alt="" width="375"><figcaption></figcaption></figure>

Users may only run 1 Optimization at a time. If you attempt to run concurrent optimizations (such as in separate tabs) you'll get an error:

<figure><img src="/files/MGircyHz6p81Gybk95HV" alt="" width="375"><figcaption></figcaption></figure>

If the Optimization is projected to exceed the timeout limit of 20 minutes, you'll receive an error. You can try reducing the number of parameters, increasing the step size, and/or shortening the date range to reduce the compute load before re-attempting the Optimization.

<figure><img src="/files/GLdJ8BuBvA3w4ckZU5sJ" alt="" width="375"><figcaption></figcaption></figure>

In some cases, the projected runtime may not exceed the timeout limit so the test begins to run, but does not anticipate a timeout and the test may begin running, but the test takes longer than projected and it times out before completing. When this happens, the error will be shown under the Status column in the Optimizations tab. Try shortening the date range or reducing the number of tests by removing parameters, narrowing the start/end range, or increasing the step size.


# Backtesting FAQ

Welcome! Thanks for checking out our frequently asked questions.

### I'm new to Option Omega. What's the best way to get up to speed?

Option Omega has a course on the backtester called [Backtesting Bootcamp on Option Omega Academy](https://academy.optionomega.com/course/backtesting-bootcamp). Note: Academy requires a separate login and password from the OO backtester. This is the best way to get going on OO. If you have specific technical questions, we have backtest support on the Discord channel.

### I’m more of a visual learner? Do you have any videos?

Sure do. Check out our growing [YouTube Library](https://www.youtube.com/optionomega). Of course, the absolute best way to visually learn OO is to take our [free Backtesting Bootcamp on Option Omega Academy](https://academy.optionomega.com/course/backtesting-bootcamp). Note: Academy requires a separate login and password from the OO backtester.

### Can you give me basics of how you come up with the price? Is it mid?

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 is IMSL, or intra-minute stop loss, which is detailed in the next question.

### How does IMSL (intra-minute stop) differ from the normal 1-minute data?

When trading SPX or SPY 0DTE trades, IMSL (intra-minute stop loss) is available to determine stop loss fills with higher precision. IMSL pricing works the same as the standard 1-minute pricing data, but uses the mid-price for *each second* instead of each minute. The final fill price will be calulcated from the 1-second mid-price value and any stop loss slippage that has been set in the backtest.&#x20;

### Are min / max conditions using > / < (greater than / less than) or ≥ / ≤ (greater than or equal to / less than or equal to)? What about above / below conditions?

Entry conditions using a "min" value (such as VIX, intraday move, or GEX) use "non-strict" inequalities, requiring the indicator to be *greater than or equal to* (≥) the value specified for the trade to trigger. Conversely, when a "max" value Is used, the indicator will need to be *less than or equal to* (≤) the value specified for the trade to trigger.

Entry conditions using an "above" value (such as SMA, EMA) use "strict" inequalities, requiring the indicator to be *greater than* (>) the value specified for the trade to trigger. Conversely, when a "below" value is used, the indicator will need to be *less than* (<) the value specified for the trade to trigger).

### How does the VIX gap condition work? When are you measuring the close of VIX and the open of VIX?

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 day’s VIX RTH close, 4:15, and compare it to the RTH open, the first VIX print after 9:30. This [video](https://youtu.be/gikrzd0Jsj4) explains the process visually.

### What data resolution is used?

OO uses 1-minute data as the default for backtesting and automation. There are some exceptions to this, since ORB and IMSL have some additional options. Additionally, automation users will want to review the [profit target and stop loss settings](/automation/profit-target-and-stop-loss-order-types), as there are many choices beyond a 1-minute check.

### What’s the OO Academy?

Option Omega [Academy](https://academy.optionomega.com/) 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.

### I have a question about the tester that I can’t find an answer to?

The easiest way is to search this website — but we also have a huge library of answered questions on Discord, and Discord search works pretty well. If you can’t get an answer there quickly, you can post in the “help-questions” channel on Discord.

### I have a trade that looks very different when I test with qty 5 of each contract, rather than a qty 1 of each contract. Why?

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.)

### My backtest is producing a weird result. I’m testing a butterfly. Can you help?

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.

<figure><img src="/files/6GZ5fIBXu1yjn1wlCfnK" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/EcoN8mfZZICBs5KQd3pw" alt=""><figcaption></figcaption></figure>

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.

[This video on the Punisher directly addresses this issue.](https://youtu.be/fGp9cuBdRjE?si=-nAfJ3XFU2BFKGAd)

### My trade didn’t work…why not? (another version is this: My test worked but it doesn’t have a trade I think it should. Can you explain?)

The most common reasons tests don’t work are the following:

1. Not enough margin to support the trade, typically for selling puts and calls.
2. The exact DTE button is selected, and there were no trades that fit that DTE.
3. The trade is still ongoing ("Close Open Trades on Test Completion" will include those trades).
4. Max Open Trades is limiting the number of simultaneous open trades.
5. 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.

<figure><img src="/files/gFJnsFMUlsp4ZmkoeYHp" alt=""><figcaption></figcaption></figure>

Tip: To check if margin issues are limiting trades set max contracts to 1 with Ignore Margin Requirements checked and remove any limit for Max Open Trades. This will show you the total # of available trades that meet your other entry criteria.

Also, SPX daily expirations started in May 2022. SPY and QQQ daily expirations started in November 2022. Short days and holiday weeks can also impact market and option chain availability.

### I have a diagonal (or calendar) with different dates. What happens when the earlier date is reached?

When one leg closes on this type of test (or any other test), the other legs will close as well. This applies specifically to **time spreads** — positions with legs at different expiration dates (calendars, double calendars, diagonals, double diagonals). Same-DTE multi-leg trades (e.g. vertical spreads, iron condors) are handled identically in Backtesting and Automation and aren't affected by anything below.

The backtester automatically closes the entire trade at the earliest expiration among the legs — you'll need to define this behavior separately in Automation (see the [Automation FAQ](/automation/automation-faq#how-are-calendar-or-diagonal-spreads-handled-at-expiration)).

What happens depends on whether the near-dated leg is ATM/ITM at its own expiration, and whether the underlying is cash-settled (e.g. SPX) or physically-settled (e.g. SPY, QQQ, AAPL, TSLA). This is the same regardless of whether the near-dated leg is short (a long calendar) or long (a short calendar) — direction doesn't change the mechanism, only moneyness and settlement type do. In every case, the close uses the actual quoted price of the contracts at that time.

* **Near-dated leg OTM** — shown as **Expired**, for both cash- and physically-settled underlyings. The short expires worthless; the remaining long is reported at its actual quoted price at 4:00 PM (16:00) ET, without incorporating closing fees or slippage.
* **Near-dated leg ATM/ITM, cash-settled** — shown as **Expired**, reported at the position's actual price at 4:00 PM (16:00) ET, without incorporating closing fees or slippage.
* **Near-dated leg ATM/ITM, physically-settled** — shown as **Would Have Exercised** instead. Priced and dated at 3:59 PM (15:59) ET — whether already ITM at 15:59 or only turning ITM sometime before the 4:15 PM ET settlement cutoff — and this close *does* include fees and slippage.

Example: in a long double calendar (near-dated leg short), if the short expires OTM it's marked Expired and the long is closed at its 16:00 price. In a short calendar (near-dated leg long), the same OTM/Expired treatment applies to the long, and the remaining short is closed at its 16:00 price instead. The direction of the near-dated leg only determines which leg is "the one expiring" and which is "the one being closed" — not the underlying mechanism.

The trade-log label, close time, and fee treatment depend on the near-dated leg's moneyness and the underlying's settlement type — not on which leg expired first or whether it was short or long. The price used at close is always the contract's real quoted price at 16:00 or 15:59.

### I have a stop loss (and/or profit target) on for $300… but it’s not hitting?

You probably want $3.00, not $300.

### Do you have extended hours?

No, we use market RTH, or regular trading hours, from 9:30 to 4:00 market time. The first options datapoint we use is 9:32, since the previous two minutes are too noisy for high confidence.

### Do you have morning expiries, like on SPX?

No, we are using the standard End of Day, or EoD, contracts on SPX only — no morning expiries.

### I see XSP in Automation but not Backtesting. Why can't I backtest XSP?

XSP has historically been too illiquid to model realistically. Wide bid-ask spreads and inconsistent fills — especially away from the money or during fast markets — make it difficult to estimate where, or if, trades would execute.

Backtesting depends on simulated fills, and with XSP those assumptions break down. Results may not be representative of real trading, leading to risk of false confidence. Rather than provide misleading results, we don’t support XSP in backtesting.

You can approximate XSP strategies using SPX or SPY, but you’ll need to adjust for sizing, slippage, and execution expectations to reflect XSP’s relative illiquidity, such as avoiding trades that rely heavily on stop losses or early exits for risk management.\
\
For more information, see our [video on XSP automation](https://youtu.be/hW0W8597Kkk).

### My test is constantly blowing by the stop-loss (or profit-target). Why is this?

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:

<figure><img src="/files/yOYNhMVpOa1DNEjjZ9F4" alt=""><figcaption></figcaption></figure>

These choices do exactly what they say — cap non-opening, i.e. intraday, losses or profits at 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.

### I use a big, popular broker that people commonly abbreviate with 4 letters. I’ve noticed that my deltas are slightly different that OO? What is **causing this?**

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, you’ll find a lot of discussion about this due to one certain broker’s display of deltas.

### I’m confused about trailing stops. Can you explain how they work?

If you have a non-trailing stop of 100%, and a credit spread with an initial credit of $2, then the stop would be $4 debit.

If the stop is then trailed at a $1 profit target, and the current value of your trade is $1, thus triggering the trailing stop condition, then the trailing stop will initially be $2 debit and 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, trailing stops, and profit actions, use the current premium value to calculate the SL.

### I want to find a 2 legged spread that’s about $2.50. How do I do this?

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.

<figure><img src="/files/BG5dJ8ai5tr7BI7jKoir" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/LIlyxpHSiHqxH6zejOtw" alt=""><figcaption></figcaption></figure>

Additionally, you can use the min/max filter to get even more specific.

### There is a feature that people are talking about, but it’s not working in my app?? What is going on?

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.

### How do I know when new features are added?

We post them in the releases channel on the Discord. If you're not on the Discord, [you should join](https://docs.optionomega.com/welcome/discord-community)!

### I’ve got a two leg trade. How do I close just one side and let the other one run?

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.

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. [Here’s a video on SEME (leg groups)](https://www.youtube.com/live/tEv3pFA1o94?si=CrDzamx-LBhL1BK2).

### When does the backtest data update?

The backtest data is updated overnight after the previous day, often between 3-5 a.m. Eastern time. It is available before market open. Most times, it will be updated before 6 a.m.

Note: Data updates occur gradually, not all at once. During backtests—especially in the early morning hours (relative to market time)—you may encounter partially updated data. If a backtest runs while updates are in progress, be aware of this behavior.

### I have a feature suggestion. Where does it go?

Great! We’d love to hear it. [You can post on Canny, and the suggestion will be reviewed by the OO team.](https://optionomega.canny.io/feature-requests?selectedCategory=automation)

### I’m noticing some unique or odd behavior in a lot of my tests around specific dates. What’s going on?

In periods of extreme volatility, rapid price movement, and market instability, backtest results can be skewed by outlier market events. These events can cause extremely wide bid-ask spreads, uncertain execution, and price movements that are not representative of typical market conditions.

Some notable examples include:

* **February 5, 2018 — “Volmageddon” —** Unexpected VIX spike and volatility ETN collapse.
* **February–March 2020 — COVID market sell-off —** Pandemic fears drove massive sell-off with several circuit breakers (temporary trading halts) triggered during this period.
* **December 26, 2023** — Not a broader market volatility event, but QQQ issued a special dividend as a downstream effect of July 2023 re-balancing of the NASDAQ 100. The special dividend shifted all strikes down by $0.21584. Trades that span this corporate event (opening before and closing after) will experience errors in backtesting results.&#x20;
* **August 5, 2024 — Yen carry trade unwind —** Rapid FX-driven deleveraging across global markets causing VIX spike.
* **April 2025 — Tariff announcements —** Policy-driven sell-off and corresponding VIX spikes.
* **October 14, 2025 — “Stoppageddon” —** Extreme intraday price swings, driven in part by heavy 0DTE options flows, resulting in widespread stop-loss triggers and abnormal execution behavior.
* **November 28, 2025— OPRA data outage—** OPRA had a data outage in the morning connected to a failure at the CME overnight data processing.

Some users may prefer to exclude or smooth the impact of these extreme periods when evaluating strategy performance. The following settings are sometimes used to help reduce the noise:

* [Use Blackout Days](https://docs.optionomega.com/backtesting/backtest-setup#use-blackout-days) - this will allow you to exclude specific dates
* [Ignore Wide Bid-Ask Spreads](https://docs.optionomega.com/backtesting/backtest-setup#ignore-wide-bid-ask-spread) - this will exclude trades where bid-ask spread widens over 100%

Remember to exercise caution when adjusting backtests. While removing outlier events can improve statistical stability and reduce data artifacts, **these events are real market conditions that can materially impact live trading performance**. Excluding them may overstate historical performance and underestimate tail risk.

### What’s your favorite trade?

We’re a backtester– not a trade service— that being said, we have plenty of folks exchanging ideas freely on the Discord.

### Can I tranche out of tests?

Yup. You can do this with profit actions. [Here’s a great video on it.](https://youtu.be/gyuCE_kamnE)

If you want to get even wilder, you can use portfolio to put on MULTIPLE trades that have multiple exits!

### Can I upgrade my subscription from monthly to annual?

Yes, you can do this yourself in the app. **Profile => Settings => Billing** will get you to subscription management.

### I am backtesting using delta to find the strike — how does OO select the delta when the one I want isn’t available?

The tester will find the closest delta, using decimal points if there is a “tie”.

### I have unchecked exact DTE. How does OO find the date I want? I’m trading really far out options.

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.

### I’m confused by the drawdowns stat and what it measures. Can you shed some more light?

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 on 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 effect 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.

### I trade iron condors. I want to only exit one side of the trade, put spread or call spread. How do I do this?

There are two easy ways to do this:

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. [Here’s a video on SEME leg groups that may be helpful](https://www.youtube.com/live/tEv3pFA1o94?si=CrDzamx-LBhL1BK2).

You can alternately do this in a portfolio. Just set up a put spread and a call spread and run them. You can get even more granular this way, 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.

[Here’s a 90 second video on how to test a PCS and CCS as a condor using portfolio](https://youtu.be/a4UsGQVSLqo).

### Like the question above, I also trade iron condors. I do 0DTE. I’ve got a stop loss of 300% on this trade, and my losses blow by the stop. I realize that’s due to the gamma movement, but is there a way to NOT blow by the stops in the test?

Sure, select “Cap Non-Opening Losses at Stop Loss” under misc features.

### I’m having issues with my 1DTE trades on Friday’s. Why is it working differently?

1 DTE trades don’t exist on Friday. OO uses calendar dates for days to expiry, or DTE. What most folks do if they have a 1 DTE trade that they want to behave a certain way, or a trade that behaves a certain way on 1 DTE, such as an early exit, is do two separate backtests: one for Fridays and one for other days.

### Why didn’t a trade trigger in my Trade Log even though my SPX chart shows it should have?

Option Omega calculates all SPX-based filters using the official CBOE SPX index data. To mirror our signals, particularly in TradingView, chart `CBOE:SPX` specifically — not SPX/US500 variants, SPY, or ES futures. Using a different symbol or data source can show price prints we don’t use, so a trade may appear to trigger on your chart but not in Option Omega. We apply official CBOE SPX data to these filters: *Technical Indicators, Gaps, Intraday Movement, and ORB.*

Quick checks:

* In TradingView, switch the symbol to CBOE:SPX
* Make sure your chart’s session and timezone match your strategy settings, RTH vs. extended.
* Avoid comparing against SPY/ES or TVC/SP:SPX tickers - they will differ from CBOE SPX.

### I have an Early Exit / Time Actions on my strategy. What happens if the Exit Date falls on a Holiday or Weekend?

Depending on the Early Exit or Time Action type, DTE vs DIT, OO will attempt to select an approximate date. The behavior can vary based on single-day holidays, weekends, or extended weekends. We have an entire article that discusses how this is handled over different scenarios: [Early Exits during Holidays and Weekends](/backtesting/early-exits-during-holidays-and-weekends).

### On the Discord there are a bunch of abbreviations I don’t understand… can you help me?

[Here is a glossary of common terms, abbreviations, and acronyms used by the OO community.](/welcome/discord-community/common-abbreviations)

### Wow, what a great list of questions. Thanks!

You’re welcome. If you have something you think 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.


# Read This First — Brokerage Details

## What brokers are supported?

Tradier, Schwab (ToS), and tastytrade are supported. All symbols available in OO backtesting are also available across supported brokers on the automation platform.

One login per broker is permitted. There is no OO platform limit on broker sub-accounts within a single broker login.

OO uses a cloud-based system for the automation platform. Users can log in to their broker, the automation platform, both at the same time, or neither. Broker login status does not affect the platform’s ability to automate.

No papertrading is available.

## Recommended steps before going live with a strategy

While we can’t offer personalized trading advice, we strongly encourage the following steps to set yourself up for success:

* Complete [Backtesting Bootcamp](https://academy.optionomega.com/course/backtesting-bootcamp)
* Complete [Automation Bootcamp](https://academy.optionomega.com/course/automation-bootcamp)
* Review the written documentation, especially the [Automation FAQ](/automation/automation-faq) and [Trade Smart: InfoStation](/automation/trade-smart-infostation)
* Share your strategy on [Discord](https://discord.com/channels/882705067210317915/961355812297666691) — get feedback from experienced users. If you're worried about privacy, consider changing a few details.
* Make sure you're following the [#known-issues](https://discord.com/channels/882705067210317915/1377977525933834260) Discord channel

## What bot limit and contract caps are in place?

Users are allowed 100 opening executions per day. There is no limit on strategies.

There are no contract caps. Different brokers may route or process orders differently depending on size. Users are responsible for understanding order sizing and their chosen brokerage's order routing process.

## What happens if there is an automation platform outage?

In the event of an automation platform outage, a large banner or error message will be displayed on the dashboard. All automations will be paused. Users will be notified by email.

When the outage is resolved, automations will resume and users will be notified by email.

Note: There are various types of outages. Partial outages, market data issues, or broker API issues will not trigger this response. In those situations, the [#known-issues](https://discord.com/channels/882705067210317915/1377977525933834260) Discord channel will be updated.

Again, users should follow the [#known-issues](https://discord.com/channels/882705067210317915/1377977525933834260) Discord channel. This is where real-time updates are posted for automation users.

## What is the process with Schwab API access?

Users must reauthorize OO platform access every 7 days. This is a brokerage API requirement. When access expires, the user will see a red banner in the automation platform with a link to reconnect. A warning notification appears on the platform before expiration. The platform also sends email reminders the night before and the morning of Schwab access expiration.

<figure><img src="/files/mWPtcInaSsxyhST8glRs" alt=""><figcaption><p>Expiration Notice on the platform</p></figcaption></figure>


# Getting Started

*Note: Broker setup is covered at the end of this page — it must be enabled before a strategy will automate.*

This page provides a step-by-step guide for setting up a sample automation strategy. In addition, [Automation Bootcamp on Option Omega Academy](https://academy.optionomega.com/course/automation-bootcamp) is designed as a visual companion to the written docs. It helps to have a solid grasp of both backtesting and strategies, along with familiarity with the material in [Backtesting Bootcamp](https://academy.optionomega.com/course/backtesting-bootcamp) and [Automation Bootcamp](https://academy.optionomega.com/course/automation-bootcamp).

Strategies can be created in one of two ways: from scratch or from your saved backtests.

Let’s look at creating one from a backtest.

Start by clicking **Test → Tests** and opening a saved backtest. You’ll see a large purple button labeled **Create Automated Strategy**. Select it, and a new window will open that auto-populates certain values based on the backtest.

<figure><img src="/files/Pz4c0KIuRR5JQ0ObewRF" alt=""><figcaption></figcaption></figure>

The first thing to note is the **Is Active** button. This is off by default. You can create and edit strategies, but to automate them, this button must be selected.

<figure><img src="/files/hOlAYzJwKtmZdokONsys" alt=""><figcaption></figcaption></figure>

You can name, describe, and tag your strategy. You also need to link a brokerage account for it to be automated.

Instead of stepping through every single variable, let’s look at a few key items that are unique to the strategy creation screen.

Under funds and allocations, you must select one of three allocation types: percentage, fixed value, or fixed quantity. This is set up differently in a backtest, where you can have multiple limiters.

<figure><img src="/files/z41IDeEsPNvyNSfQe6mw" alt=""><figcaption></figcaption></figure>

Other key items to review are [Profit Target and Stop Loss Order Types](/automation/profit-target-and-stop-loss-order-types) and [Trade Management](/automation/trade-management).

Also, take a look at the **Execution Parameters** at the bottom. You can set the price increment and speed interval to control how aggressively the automation tool enters and exits trades. You can also add **Exit Execution Overrides** if you want a specific exit condition to behave more or less aggressively.

<figure><img src="/files/tJLdS1fr2yTxJi6S82mV" alt=""><figcaption></figcaption></figure>

Lastly, to set up a broker, go to **Settings** in the upper right, then **Trading**. You can add a broker there and configure email alerts.

If you try to launch a strategy before setting up the broker, the platform will not function properly.

<figure><img src="/files/CWRWYZthK56KweF4IFY4" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/WQxJSjrWDx6gfCsGYmJp" alt=""><figcaption></figcaption></figure>

Note: OO uses a standard email alert service. There are several reasons a user may not receive an email, including service-level, user-level, or company-level settings. Users should verify that they are receiving all alert emails. A good way to do this is to cross-reference them with activity log entries. Many users also set up a filter for alert emails to avoid spam.

Finally, and this is important, users of the platform should follow the [#known-issues](https://discord.com/channels/882705067210317915/1377977525933834260) channel on Discord. That’s where technical support discussion and time-sensitive updates are posted. It’s the fastest way to stay up to date.


# Strategy Setup

## Getting Started

The automation platform can be found under the **Trade** dropdown in Option Omega.

You can choose:

* Live — to view the current activity of the platform
* Strategies — to view and manage your strategy library
* Reporting — to generate and view information about the automations

<figure><img src="/files/RDHeMTx1tU4z1egZvieq" alt=""><figcaption></figcaption></figure>

## Strategy Creation

The automation process begins with creating a strategy. There are two choices: create a strategy from scratch or create one from a backtest.

## Creating a Strategy from scratch

If you want to create a strategy from scratch, click **+ New Strategy** on the **Trade → Strategies** page.

<figure><img src="/files/G3FIA9H7YCYDvuPknZ6q" alt=""><figcaption></figcaption></figure>

## Creating a Strategy from a backtest

<figure><img src="/files/t4b6JWDdQyA3pxsfCcYG" alt=""><figcaption></figcaption></figure>

If you want to create a strategy from a backtest, click **Create Automated Strategy** from a backtest.

<figure><img src="/files/TvTMsuKL4aYNQRXCUKvL" alt=""><figcaption></figcaption></figure>

The first option when a new strategy is created is whether the strategy is active. An active strategy will be managed by the automation platform. An inactive strategy will not.

<figure><img src="/files/RSrYWA432wVvxQfi3Ot6" alt=""><figcaption></figcaption></figure>

After naming the strategy, you can select which brokerage account you want it automated in.

Like a backtest on the platform, you can choose to apply an existing tag or add a new tag to the strategy.

## Funds & Allocations

<figure><img src="/files/g2zo9Svf3tnJkTX0yZpQ" alt=""><figcaption><p>Percentage</p></figcaption></figure>

In the automation platform, you must choose one of three allocation types: percentage, fixed value, or fixed quantity.

*Note: The calculations in the automation platform use the same architecture as the backtester. They are based on Reg-T, not portfolio margin or other margin account types.*

Percentage uses a percentage of the specified account. The calculation is based on account NLV, but the user must also meet brokerage buying power requirements.

<figure><img src="/files/LqtEyWCNhUAaSkwuOMrL" alt=""><figcaption><p>Fixed Value</p></figcaption></figure>

Fixed value will use a Max Allocation for the trade. This will cap the value of the entire trade regardless of the contract quantity.

<figure><img src="/files/EMbR7oWBMEMMB3FxJmKa" alt=""><figcaption><p>Fixed Quantity</p></figcaption></figure>

Fixed Quantity caps the number of contracts at the specified amount in the **Max Contracts Per Trade** field.

*Note: Both the automation platform and brokers have allocation checks. These must pass before a strategy is traded. If a check fails in the OO platform, the user will receive an **Insufficient buying power to open trade** message. If a check fails at the broker, the log will show a broker-generated message.*

## Strike Conflict

The user has multiple choices for strike conflict resolution. If any strikes are conflicted, the default behavior is to skip the trade. However, the user can also select **Move Conflicted Strikes**, which is detailed in the in-app tooltip. This allows the software to attempt to move any conflicted strikes to the next nearest strike using the leg selection criteria, such as fixed price, offset, or delta. For parent and child legs, if a parent conflicts, any children automatically move with it. If a child conflicts, the parent only moves if **Exact Offset** is enabled with the green padlock.

<figure><img src="/files/lfgPjhs3Xsrxp6ofgGXS" alt=""><figcaption><p>Move conflicted strikes</p></figcaption></figure>

## Entry Execution

<figure><img src="/files/EtwJxYm2VMgXnxAqFkxP" alt=""><figcaption><p>Entry Execution</p></figcaption></figure>

The entry price that the automation platform submits as a limit order is determined by the NBBO at trade entry. The **Entry Execution** field lets you configure the speed and price adjustment. For example, you can set a trade to adjust by `0.10` every 10 seconds.

*Note: The interval and max attempts fields must total less than 55 seconds when multiplied together.*

*Additional note: Entry time can also be configured in Entry Execution, as detailed in* [*Entry Time Configuration*](/automation/entry-time-configuration)*.*

## Exit Execution

<figure><img src="/files/JaJC917hhbIXG1hD6BKF" alt=""><figcaption><p>Exit Execution</p></figcaption></figure>

The exit price that the automation platform submits as a limit order is determined by the NBBO when the exit begins. The **Exit Execution** field lets you configure the speed and price adjustment. For example, you can set a trade to adjust by `0.10` every 10 seconds. You also have the option to switch to a market order after a certain number of attempts. See [Switch to Market Order](#switch-to-market-order).

*Note: The interval and max attempts fields must be less than 55 seconds when multiplied together.*

If a trade does not exit while using a platform-managed exit or stop, the platform resets the order price to the current mid price at the top of the next minute and re-attempts the fill progression sequence.

## Switch to Market Order

When enabled, the platform automatically converts the limit order to a market order after a specified number of exit attempts. Unlike a limit order, a market order has no price level. It will fill at the current market price, which may differ significantly from the last mid price.

Support for market orders on exit varies by broker:

* **Tradier** and **ToS/Schwab** APIs support market closing orders for both individual options and spreads or multi-leg strategies.
* **tastytrade’s** API supports market closing orders for individual options, including single-option leg groups, but does not currently support market orders for spreads or multi-leg strategies. For tastytrade accounts, this option has no effect on spreads or other multi-leg positions. The platform will continue adjusting the limit order price until filled, or the position will reset at the top of the next minute. Consider adjusting your exit progression if a timely exit is required.

Use this feature with caution. Market orders on options can result in unfavorable fills, especially for spreads with wider bid-ask spreads or lower liquidity.

## Ignore Bidless Longs

<figure><img src="/files/Zu1BMCzWc1zmW5bkUNfW" alt=""><figcaption><p>Ignore Bidless Longs</p></figcaption></figure>

Selecting **Ignore Bidless Longs** allows the platform to bypass closing bidless long legs during exit execution.

*Note: This option is applicable only for spread-type trades. If you turn it on for a single-leg trade, the platform WILL NOT ignore the bidless long and will attempt to exit the trade.*

## Avoid Wide Bid-Ask Spreads

<figure><img src="/files/qizwaqCNfIKhD3mGP5j6" alt=""><figcaption></figcaption></figure>

**Avoid Wide Bid-Ask Spreads** attempts to avoid momentary illiquidity by delaying execution of any platform-managed exit, whether it’s a stop loss, profit target, or early exit. This setting does not apply to trade entry or broker resting orders.

The bid-ask spread is calculated at each trade interval — 1 minute, or 1 second if using [intra-minute stop losses](/automation/profit-target-and-stop-loss-order-types#intra-minute-stops). The trade exits only if the bid-ask spread falls below the defined **Max Bid-Ask Spread Width**.

#### Max Bid-Ask Spread Width

The Bid-Ask spread is calculated for the *entire trade* (as defined by your exit and/or leg groups) using either a Percentage or Fixed Amount:

* A **Percentage**-based Bid-Ask spread is calculated by subtracting the Bid from the Ask, dividing by the Mid price, and converting the result to a percentage. For example, a Bid of `$1.00` and Ask of `$1.50` produce a Mid of `$1.25`. Spread Width (%) = `(1.50 - 1.00) / 1.25 = 0.4 = 40%`.
* A **Fixed Amount** Bid-Ask spread is calculated by simply subtracting the Bid from the Ask. In the example above, Spread Width = `1.50 - 1.00 = 0.50`.

In the examples above, a max percentage width of `35%` or a fixed amount of `$0.45` would exceed the max width. The spread width is re-evaluated each trade interval — 1 minute, or 1 second if using [intra-minute stop losses](/automation/profit-target-and-stop-loss-order-types#intra-minute-stops). The exit triggers only once the spread width no longer exceeds the defined maximum.

{% hint style="info" %}
**Backtesting** also includes a filter to Ignore Wide Bid-Ask Spreads. The calculation in Backtesting differs slightly and uses a `100%` width on individual legs. See [Backtest Setup](/backtesting/backtest-setup#ignore-wide-bid-ask-spread).
{% endhint %}

#### Max Attempts

If you specify **Max Attempts**, the platform reverts to the standard exit progression after that number of attempts. This acts as a fallback to exit the trade even if spread widths do not narrow below the maximum.

{% hint style="danger" %}
Delaying an exit to wait for a narrower spread can result in a larger loss, especially in fast-moving markets. If **Max Attempts** is left blank, the platform will continue avoiding the trade exit as long as the spread width exceeds the maximum, and positions may even be held into expiration.
{% endhint %}

## Execution Override

<figure><img src="/files/jkNnssGoxyie5gA3jYAu" alt=""><figcaption><p>Execution Override</p></figcaption></figure>

Execution Override allows you to set a custom exit if you have an exit condition that should be handled differently from the standard exit execution.

## Starting Offset

<figure><img src="/files/4zr7WydiAOpq5xWJdtpk" alt=""><figcaption><p>Starting Offset</p></figcaption></figure>

Users can specify a **Starting Offset** for both entry and exit execution parameters. This value can be positive or negative and instructs the automation platform to start the order fill sequence above or below the current mid price by the amount specified.

*Note: This adjustment is an absolute value, not a directional offset.*

The platform does not adjust for credit or debit. It simply adds the offset to the current mid price at entry.

**Entry execution examples:**

* If you are selling a $3.00 credit spread (STO), a $0.10 offset will result in a $3.10 initial (relaxed) entry, whereas a $-0.10 offset will result in a $2.90 (aggressive) entry.
* Conversely, if you are buying a $3.00 debit spread (BTO), a $0.10 offset will result in a $3.10 initial (aggressive) entry, whereas a $-0.10 offset will result in a $2.90 (relaxed) entry.

**Exit execution examples:**

* If you are exiting with a $3.00 credit spread (STC / closing a DC), a $0.10 offset will result in a $3.10 initial (relaxed) exit, whereas a $-0.10 offset will result in a $2.90 (aggressive) exit.
* If you are exiting with a $3.00 debit spread (BTC / closing an IC), a $0.10 offset will result in a $3.10 initial (aggressive) exit, whereas a $-0.10 offset will result in a $2.90 (relaxed) exit.


# Profit Target and Stop Loss Order Types

## Profit Target Types

The standard profit target type, and the default, is the 1-minute platform-managed check.

You can also choose a resting profit target by selecting that option. This places a brokerage GTC resting limit order for the specific PT.

Note: As described below, you can alternatively have a resting SL order on a **single leg only**. If a user chooses a resting PT, they cannot also have a resting SL. This is a broker limitation.

<figure><img src="/files/EKFPnqJm1prN20gcU29p" alt=""><figcaption></figcaption></figure>

## Stop Loss Types

The default stop loss is a 1-minute platform-managed check, and it is submitted as a limit order.

### Intra-Minute Stops

For `0DTE` SPX and SPY, you can also choose **Use 0-DTE Intra-Minute Stops**.

<figure><img src="/files/lF1FxDwqtgJijVglcDhQ" alt=""><figcaption><p>IMSL on 0DTE SPX/SPY</p></figcaption></figure>

If this option is selected, the automation platform checks stops at 1-second intervals.

<figure><img src="/files/wn1qDC1X16X8Xf2yDnx4" alt=""><figcaption></figcaption></figure>

There is also an option to select **Minimum Consecutive Hits**. For example, if the user wants to execute the stop only after it is reached for 15 consecutive seconds, the user would enter `15` in this field.

<figure><img src="/files/N7zKgbLsUXFJ9M0752gq" alt=""><figcaption><p>Minimum Consecutive Hits</p></figcaption></figure>

### Resting Stop

There is also an option for resting stops at the broker on single legs only. This is a stop-market order placed at the brokerage rather than a platform-managed stop loss.

Note: As described above, a user can alternatively have a resting PT at the broker. If a user chooses a resting PT, they cannot also have a resting SL.

<figure><img src="/files/gzFblyjVdCuSdYKUhau3" alt=""><figcaption><p>Resting Stop</p></figcaption></figure>

#### OTO (One Triggers Other)

The automation platform can close one leg after a resting stop has been triggered on another leg. This feature lets users place an OTO (One Triggers Other) order, which sets a resting stop market order on one short leg of a trade and triggers a contingent market order on another long leg when the first order executes.

The OTO order rests at the broker. The stop-market order remains active at the exchange, and the second market order is held by the broker in a contingent state until the stop order fills.

To use this feature, you must be using leg groups and resting stop-market orders on the initiating leg group, as shown below.

Note: tastytrade limits the number of concurrent OTO orders per symbol. This maximum varies by account and margin type. Contact your broker directly to confirm the limit for your specific trading account.

<figure><img src="/files/qSqlL0LAgTrGX9GyLKLv" alt=""><figcaption></figcaption></figure>


# Entry Time Configuration

Floating Entry Time and Entry Window

There are multiple ways to configure entry times in Option Omega when you want to allow a range of entry times. The default is to enter based on your settings within a one-minute timeframe. If you want to allow a longer timeframe, there are two choices, detailed below. There is also a video segment in [Automation Bootcamp](https://academy.optionomega.com/course/automation-bootcamp) that covers these options.

#### Floating Entry Time

First, for strategies that rely on a time range to determine whether a certain event takes place during that range, **Floating Entry** is available. Floating entry in strategies works the same way it does in the backtest. It rechecks the entry conditions every minute, so the strikes and entry prices are also recalculated every minute.

<figure><img src="/files/0OSv0tchtSctmKh95H0T" alt=""><figcaption><p>Floating Entry (found in Entry Conditions)</p></figcaption></figure>

Typical use cases for Floating Entry include an ORB, a technical level such as an EMA, a pricing filter, or intraday movement. The software is designed so that if a backtest uses Floating Entry, the strategy behaves similarly.

If a user wants an entry window but does not need Floating Entry, the Entry Window option below is another choice.

#### Entry Window

Second, **Entry Window** in minutes is also available as an entry execution parameter. This allows the automation platform to continue trying to enter a trade for `[x]` minutes after all entry conditions have been satisfied. At each minute, the strikes, and therefore the entry price, are recalculated. The entry conditions are checked only once. After those conditions are satisfied, the platform continues trying to enter each minute during the specified window. This is useful for strategies with multiple time tranches or additional entry times, especially when the platform fails to get a fill or there is a temporary interruption in service.

Note: If a multi-lot trade is partially filled, OO continues incrementing price and attempting to complete the fill *within the minute*. However, the platform does **not** recalculate strikes or continue trying for the remainder of the entry window, since that would most likely result in a new trade at different strikes.

<figure><img src="/files/YasHJb0V2vF1tUIUdrHf" alt=""><figcaption><p>Entry Window (found in Entry Execution)</p></figcaption></figure>

Typical use cases for Entry Window include tranche or multiple-entry strategies. Users may also want to specify an entry window to allow more time for a fill due to market movement, an API blip, or similar conditions.


# Trade Management

There are several trade management options if you want to manually adjust a trade. Video coverage for trade management is included in [Automation Bootcamp on Academy](https://academy.optionomega.com/course/automation-bootcamp).

<figure><img src="/files/RMA78hQD7hhVbQ1yia9p" alt=""><figcaption><p>Trade Management</p></figcaption></figure>

## Deactivate a Strategy

<figure><img src="/files/zqrsDCxjpOXeBw8fvtjh" alt=""><figcaption><p>Deactivate a Strategy</p></figcaption></figure>

You can choose to deactivate a strategy from the **Edit Strategy** slider. If you deactivate an active strategy, any remaining trades become unmanaged by the automation platform. Any currently open trades will no longer be reported in the automation platform. Future trades will not be opened.

## Close Trade Now

<figure><img src="/files/RDTkbXSfndWYW4DQsHUA" alt=""><figcaption><p>Close Trade Now</p></figcaption></figure>

If you click the three dots next to an active trade on the **Live** page, you will see an option to **Close Trade Now**. This affects only that trade. After closing it at the brokerage, future trades continue to be automated, and the closed trade appears in reporting.

When you select **Close Trade Now**, additional options appear.

<figure><img src="/files/cqZjKoQ0FFNQjO5Mbasc" alt=""><figcaption><p>Close Trade Options</p></figcaption></figure>

You can select a partial position, or the entire position.

Additionally, you can use a market order.

Alternatively, you can use a limit order, and set the execution parameters, with an option to switch to a market order after "x" attempts are exceeded.

## Halt Management

<figure><img src="/files/ly8dWTLBd0IceKCNNhxI" alt=""><figcaption><p>Halt Management</p></figcaption></figure>

If you click the three dots next to an active trade on the **Live** page, you will see an option to **Halt Management**.

<figure><img src="/files/mtzNRsKNQ6ODhHha478h" alt=""><figcaption></figcaption></figure>

You will get a confirmation prompt informing you that the automation will halt management and reporting of the current trade, but future trades will still be automated. Resting broker orders are not affected by halting management.

*Note: Halt Management will irreversibly stop the automation from managing the trade, and there will be no way to re-enable the management again.*

If the user has a halted order, the exit price can later be entered manually by clicking the **Management Halted** field under the **Reason for Close** column on the strategy page. The user can enter the closing price and other details if desired.

<figure><img src="/files/IFF9jnRartoqtfqaT8aR" alt=""><figcaption></figcaption></figure>

## Pause All Trading

<figure><img src="/files/cZRYCCWVB3Dx8NmGf9Vx" alt=""><figcaption><p>Pause All Trading</p></figcaption></figure>

If you click the three dots to the right of the purple icons on the **Live** page, you will get an option to **Pause All Trading**.

<figure><img src="/files/wHi32joadsRlCfJg7srJ" alt=""><figcaption><p>Pause All Trading dialog</p></figcaption></figure>

**No** open trades will be managed by the automation platform as long as "*Pause All Trading*" is active.\
**No** new positions will be opened by the automation platform as long as "*Pause All Trading*" is active.

*Note: When **Pause All Trading** is active, broker resting orders are **not impacted**. The automation does not run resting-order health checks while this setting is active. If an order was closed while **Pause All Trading** was active, the automation will pick up the closing order after **Reactivate Trading**.*

*Note: After **Reactivate Trading** is selected, the automation will resume active trade management.*

### Pause Opening Trades (Pause an Individual Strategy)

You can also pause individual strategies from the strategy screen by selecting **Pause Opening Trades**. All currently open or live trades will continue to be managed by the platform.

<figure><img src="/files/Fw2cyH5KXjDu3OM19phH" alt=""><figcaption><p>Pause Opening Trade</p></figcaption></figure>

## Pause Opening New Trades

Users can select this to stop the platform from opening new trades while continuing to allow the platform to manage open positions.

<figure><img src="/files/7hTLKyconvcSIlol7REh" alt=""><figcaption></figcaption></figure>

## Edit Exit Conditions

Users can edit the exit conditions, including execution parameters, for live trades. This is done by clicking the three dots and selecting **Edit Exit Conditions**.

*Note of caution: Certain variables, such as the current profit target and current stop loss, are tracked and modified over time due to trailing stops, time or profit actions, and similar logic. If the user modifies the P/L or Time Actions section of a live trade, those tracked variables will be reset.*

<figure><img src="/files/ZvxhGWJPYde4Q0QL5iEi" alt=""><figcaption><p>Edit Exit Conditions</p></figcaption></figure>

## Open Trade Now

<figure><img src="/files/anUAZ2fh2eae8kYN1vvT" alt=""><figcaption></figcaption></figure>

If you want to manually open a trade, click **Open Trade Now**. This option appears when a strategy is saved and active, even if it is paused.

**Open Trade Now** skips the normal entry conditions and launches the strategy immediately.

*Note: "Open Trade Now" will respect "Use Exact DTE"*

You can set the quantity or allocation, along with the entry execution parameters.

<figure><img src="/files/QPMsJ9JczxYVoYtsB2g8" alt=""><figcaption></figcaption></figure>

## Underlying opening and closing price after manual entry or exit

When the user initiates a manual entry or exit of a trade, the automation platform uses the opening or closing price values for that specific minute.\
For example, if the user clicks **Open Trade Now** or **Close Trade Now** at `09:59:58`, the automation uses the underlying value at `09:59:00` for the opening or closing price, along with leg-selection conditions such as strike offset or delta.


# Automation FAQ

Frequently asked questions for the automation platform

## I want to understand what happened with a trade. Is there a way to see what the automation platform did or did not do?

Yes. Most questions can be answered with the **Activity Log**. Select **Include Debug** at the bottom of the panel to get additional details, such as which entry filters were met or not met. This can also provide more information about fills, error messages, and related events.

Note: There is an activity log on the main page, but it has fewer details than the activity log on the strategy page itself. If a user is trying to diagnose what happened with a trade, the first step is to open the strategy itself, then select **Activity Log w/ Debug**.

If a user wants to see log entries for a previous day’s strategy, the easiest way is to open the individual strategy and select **View Activity Log**. As above, selecting **Include Debug** provides additional context.

<figure><img src="/files/mgKaNDLfTQVuaxXK0Axv" alt=""><figcaption><p>Activity Log (Clock Button, second from left)</p></figcaption></figure>

<figure><img src="/files/JXOuKAUh5UODRSPDyMW9" alt=""><figcaption></figcaption></figure>

## Is there a way to alert me?

You can configure email alerts in **Settings → Trading**.

<figure><img src="/files/T6hfMUGFQlMbPt1WYy7v" alt=""><figcaption></figcaption></figure>

Additionally, the platform displays an error message with a yellow triangle. When you click it, it provides more details. Note that the platform alerts each minute that conditions exist during a multi-minute entry. If the user has configured one of the entry-time options to allow multiple minutes, the software may send an alert and later still enter the trade based on the user’s settings. The alert applies to that minute.

Note: Email alerts do **not** send emails for trade opens and closes. Those come from the broker.

Finally, users should follow the [#known-issues](https://discord.com/channels/882705067210317915/1377977525933834260) channel on the Discord server. If you use automation on OO, this is essential.

<figure><img src="/files/cKRQTa2TWvm3d5S1oEhF" alt=""><figcaption><p>Sample error</p></figcaption></figure>

## When does the automation platform start?

Like the backtester, the platform begins automations at `9:32`.

*Note: If a user has a resting GTC order at the broker, it remains open on a multi-day trade. For example, it will still be open at `9:30` or `9:31`.*

## Are there any limits on number of trades?

Users can make up to 100 opening trades each trading day, across any number of strategies. A counter has been added to the **Trade → Live** dashboard to keep track of your daily trade count.

<figure><img src="/files/h41YtLoQMSrJg2pVVX3Z" alt="" width="563"><figcaption></figcaption></figure>

If you need more than 100 opening trades per day, you can subscribe to additional Option Omega accounts, which can connect to the same or different brokerage accounts. Please keep in mind the [390 Professional Orders Rule](/automation/trade-smart-infostation#390-professional-orders-rule-390-rule).

## What happens to a live trade if I adjust a strategy while it's on?

The live trade will continue based on the original parameters.\
Note that there is an option to **Edit Exit Conditions**, which changes a live trade but not the strategy itself. [More information here](/automation/trade-management).

## What if I have an existing position on and the automation tries to open a conflicting position?

The automation platform's default behavior skips the trade if a conflicting position is detected. There is an option to "Move Conflicted Strikes" for the user to enable. If this option is selected by the user, the platform will move any conflicted strikes to the nearest available strikes based upon the strike selection criteria. If the user has selected the green padlock (use exact strike offset), the offset strikes will move in tandem.

<figure><img src="/files/fdwVpSUiBdzPpO5K2uy4" alt=""><figcaption></figcaption></figure>

## In the main automation screen, I have an active strategy with a negative percentage, but it’s green. Why?

This can happen when a strategy has partial exits. If the user has partially exited a live strategy, they will see the open-position percentage, which could be positive or negative, along with green or red to indicate overall profit and loss. It is possible to have a red strategy with a currently positive open position, or a green strategy with a currently negative open position.

## I had an automation that reached an exit condition, but it didn’t exit because of my exit execution settings. The next minute, it didn’t try again. Is that why?

Correct. The platform checked the conditions in the second minute and saw that the exit conditions were no longer met.

## Is there an easy way to compare a backtest and a strategy?

Yes, if you are looking at a strategy, clicking on the lightbulb will bring up the backtest that you used to create the strategy.

<figure><img src="/files/qXeDicyjaUiW79BddfoW" alt=""><figcaption></figcaption></figure>

Note that if you change a backtest or strategy after creating a strategy from a backtest, the other item will **not** also change. For example, if you used a `10:01` entry time on a backtest and created a strategy from it, then later changed the strategy to `10:02`, the backtest would remain at `10:01`.

## What happens to a backtest when I want to change a strategy?

The user can create a strategy in two ways: from scratch or from one of their saved backtests. If a strategy is created from a backtest, the backtest auto-fills conditions in the strategy. After the strategy is created, changes to the strategy affect only the strategy. Changes to the backtest affect only the backtest.

## Does the automation platform support delta exits? What about underlying exit when tested? What about short leg ratios? Can I set profit actions?

Yes. These are all supported. They are checked at 1-minute intervals, just like in backtests.

In general, the choices available in backtesting are also available in automation, with the obvious exceptions of backtest-specific choices such as slippage or Punisher settings like two hits. In addition, SqueezeMetrics are not available in the automation platform.

## How are calendar or diagonal spreads handled at expiration?

This applies specifically to **time spreads**. Same-DTE multi-leg trades are handled identically to Backtesting and aren't affected by anything below.

For a time spread, the far-dated leg is not automatically closed just because the near-dated leg expires worthless. This differs from the backtester, which always closes the entire trade at the earliest expiration at 4:00 PM (16:00) ET regardless of moneyness. Automation does step in whenever the near-dated leg is at risk of finishing ATM/ITM — **it does not allow an ITM near-dated leg to expire in a time spread**.

**Long calendar** (near-dated leg short, far-dated leg long):

* **Near-dated short OTM** — expires worthless as expected, but the long leg remains open at the broker and is no longer tracked by Automation from that point. The trade is recorded as **Expired** with $0.00 premium. You're responsible for managing the remaining long leg yourself.
* **Near-dated short ATM/ITM** — the *whole position* (both legs) is closed by Automation at 3:59 PM (15:59) ET, for both cash- and physically-settled underlyings. If a physically-settled leg is still OTM at that check but turns ITM before 4:15 PM ET, Automation keeps monitoring and will still close it in the extended end-of-day window (see "[OO closed a position after 4 PM](#oo-closed-a-position-after-4-pm-but-i-thought-it-only-traded-between-9-32-am-3-59-pm-et.-why-did-thi)" below).

**Short calendar** (near-dated leg long, far-dated leg short):

* **Near-dated long OTM** — the long expires worthless, same as Backtesting. The short leg is abandoned at the broker as described above.\
  \
  ***Note:** if the near-dated long leg expires OTM, the remaining short leg is not closed by Automation — it's left open, abandoned at the broker. Because the protective long leg is gone, this is now a naked short carrying unlimited risk (short call) or substantial risk (short put). If you trade short calendars in Automation, define an explicit exit or use leg groups — don't rely on this being handled for you.*<br>
* **Near-dated long ATM/ITM** — rather than letting the long go to assignment/exercise unmanaged, Automation closes the whole position at 3:59 PM (15:59) ET as **Would Have Exercised**, regardless of settlement type:
  * **Physically-settled** — matches Backtesting exactly.
  * **Cash-settled** — differs from Backtesting, which shows **Expired** at 4:00 PM (16:00) ET for the same scenario instead.

**If you split the spread into leg groups** (short and long managed as separate trades), each group is treated independently instead of following the whole-position behavior above: an OTM near-dated leg group is recorded as **Expired**, with the other group continuing as its own separate, tracked trade; an ATM/ITM near-dated leg group follows the same Expired/Would Have Exercised logic as Backtesting. This applies the same way for short calendars.

To manage the far-dated leg separately, use leg groups. Alternatively, define an early exit to close the entire spread yourself, e.g. at `0 DTE` and `3:49 PM`.

Example: you sell a `2 DTE` put and buy a `3 DTE` put. On the third day you have a short `0 DTE` put and a long `1 DTE` put. If the short is OTM, it expires worthless, the trade is recorded as Expired with $0.00 premium, and the long remains open at the broker, untracked by Automation — unless the legs were grouped, in which case the long continues as its own tracked trade. If the short is instead ATM/ITM, Automation closes the whole position at 3:59 PM ET.

See below for more on expiration and assignment.

## How does the automation platform deal with expiration and assignment?

This section covers same-DTE multi-leg trades (iron condors, vertical spreads, butterflies — all legs sharing one expiration). For time spreads with different-DTE legs (calendars, diagonals), see "[*How are calendar or diagonal spreads handled at expiration?*](#how-are-calendar-or-diagonal-spreads-handled-at-expiration)" above — the mechanics differ there because one leg is always still open after the near-dated leg's own expiration, which isn't the case here. Whether Automation intervenes depends on settlement type, not on which specific leg happens to be ITM:

* Cash-settled underlyings (e.g. SPX, XSP) — the trade expires unconditionally, with no intervention from Automation. A cash-settled contract settles to a cash difference automatically regardless of moneyness, so there's no physical assignment risk to manage in the first place.
* Physically-settled underlyings (e.g. SPY, QQQ, and single-name equities) — if any leg is ATM/ITM at expiration, Automation closes the entire position — not just the ITM leg(s) — at 3:59 PM (15:59) ET, labeled Would Have Exercised. If the position still looks OTM at the 3:59 PM check but moves ITM before the 4:15 PM ET settlement cutoff, Automation keeps monitoring and will still close it (see "[*OO closed a position after 4 PM*](#oo-closed-a-position-after-4-pm-but-i-thought-it-only-traded-between-9-32-am-3-59-pm-et.-why-did-thi)" below).

If you split the position into leg groups (e.g. the put spread and call spread of an iron condor as two separate trades), each group is evaluated and closed independently based on its own moneyness — the same behavior leg groups produce for time spreads.

## I received this message in the log: "One or more preflight checks failed - Account does not have sufficient buying power available for this order due to Expiration Risk." What does that mean?

Preflight check messages come directly from the broker. The automation platform simply passes them along. If you do not understand the context of the message, contact the broker directly.

## I have an account with Schwab, and I received this message in the log: "Open order preview failed with error: No trades are currently allowed." What does that mean?

You need to enable thinkorswim trading for the specific account.\
You can do this on Schwab.com under the **Trade** page for the thinkorswim platform.\
It can take up to one full day for the account to be enabled.

## I'm trading SPY (or QQQ or IWM) and I've had a variety of error messages near the end of the day. The broker tells me that strikes can't be closed, or I will be oversold. Why?

Near the end of the day, brokers can run into a variety of issues with `0DTE` SPY, QQQ, or IWM options, often with errors like “strikes can’t be closed” or “you will be oversold.” They may enforce strict internal cutoffs, typically between `3:30 PM` and `4:00 PM ET`, to process trades, prevent unwanted assignment on American-style contracts, avoid pin risk and margin violations, and protect against the extreme illiquidity and wide spreads that appear in the final minutes before `4:15 PM ET` expiration. Groupings viewed by the broker are often not the same as the groupings viewed by the trader, or the order in which the spreads may have been opened. Remember, a single SPY contract represents more than `$60,000` in notional value.

## I received this message in the log: "Insufficient buying power to open trade." Why?

The strategy must pass both the funds and allocation checks in OO automation and the broker’s buying power requirements. Either the automation platform or the broker can trigger a buying power message. Review your strategy and allocation in OO first. If that checks out, reach out to your broker to clarify margin requirements. Margin requirements vary by broker and can change based on account type and other factors.

## I want to switch from annual to monthly, cancel, or move from Essential (Backtesting) to Premium (Automation). How do I do that?

Users can change subscription tiers or billing timeframes at any time in **Settings → Billings → Manage Subscription** on the main OO website. If you need additional help, email `support@optionomega.com`. [Here’s a video detailing the process](https://youtu.be/zPU9WGgk2a8).

If a user wants to cancel automation, it is best to do one of the following while the subscription is still active: pause all live trading, pause all new trades, deactivate strategies, or remove account linkages. Once a user has canceled or downgraded from their Premium (automation) plan, the OO platform will no longer automate their strategies or manage existing ones.

## Will OO Automation select AM-settled SPX expirations?

No. Automated SPX strategies will only select PM-settled SPX expirations, consistent with backtesting.

## How does OO handle partial fills for multi-lot trades?

It is possible for a multi-lot trade to be partially filled. When this happens, OO continues incrementing price and attempting to complete the fill *within the minute* of the execution progression. Depending on increment size and timing, this will usually lead to filling the remaining lots.

However, once the end of the minute is reached, the platform will **not** recalculate strikes or continue attempting entry the next minute, or for the remainder of the entry window. This behavior is intended to avoid chasing an unfavorable fill price or a position that may be significantly different from the original entry conditions. It also avoids creating a *new* trade at different strikes.

Once a trade has been partially filled and the entry sequence has concluded, management for the respective contracts (including OTO orders, stops, and profit targets) will begin immediately.

## OO closed a position after 4 PM, but I thought it only traded between 9:32 AM – 3:59 PM ET. Why did this happen?

While the OO automation platform actively trades from `9:32 AM` to `3:59 PM ET`, there are a couple of scenarios where trades may occur after regular trading hours, especially for ETF options that continue trading until `4:15 PM ET`, such as SPY, QQQ, IWM, TLT, and GLD:

1. Broker resting orders may be filled after regular hours. This depends on the specific broker. See [Profit Target order being filled out of RTH](/automation/trade-smart-infostation#profit-target-order-being-filled-out-of-rth).
2. For assignable ETF options that settle at `4:15 PM ET`, such as SPY, QQQ, IWM, TLT, and GLD, OO will continue checking every minute between `3:59 PM and 4:14 PM ET` for trades that are expiring *that same day,* and attempt to exit any options expiring ITM by following the defined exit execution progression until `4:15 PM ET`. This is intended to reduce exercise and assignment risk.


# Trade Smart: InfoStation

This page contains information not necessarily specific to OO, but relevant for options trading in general.

## 390 Professional Orders Rule ("390 Rule")

The 390 Professional Orders Rule classifies options traders as "Professional" based on their order volume. This requirement, imposed by U.S. options exchanges, ensures retail traders maintain order execution priority over high-volume traders.

Averaging 390 or more options orders across all exchanges per day during any calendar month triggers "Professional" classification for the following calendar quarter. All submitted orders count toward this threshold, including filled, canceled, and rejected orders. Multi-leg spread strategies count as single orders.

Orders from traders classified as "Professional" are treated the same as broker-dealer orders for execution priority and fees. [Additional information can be found here.](https://support.tastytrade.com/support/s/solutions/articles/43000435379#:~:text=What%20does%20this%20magic%20number,390%20in%20the%20rule's%20title.)

*Note: The 390 threshold corresponds to the 390 minutes in a standard trading day (9:30 AM to 4:00 PM Eastern Time), representing the theoretical maximum of one order per minute throughout the trading session.*

## Trading U.S. options as a non-U.S. citizen

Non-U.S. citizens trading U.S. options typically need tax-residency documentation on file with their broker, such as W-8 series forms. Without that documentation, brokers may be required by law to apply withholding taxes on certain U.S.-based payments or income. Treatment can vary by instrument type and by any applicable tax treaties. Specific requirements, rates, and processes are determined by applicable laws, regulations, and your broker’s policies, and they may change over time.\
\
*Note: This section is for general information only and is not tax, legal, or investment advice.*

## Quantity 50 Orders on Schwab

Users have reported cases where Schwab (ToS) manually fills orders over quantity 50. This may affect automation. Users may want to limit sizing below 50 or contact Schwab for clarification on their individual account settings for manual fills.

## API/Broker/Platform issues

Users of the automation platform should follow the [#known-issues](https://discord.com/channels/882705067210317915/1377977525933834260) channel on Discord.

## Assignable Tickers

Automating options trades with assignable tickers, meaning non-index options such as SPY, IWM, QQQ, Apple, or Tesla, carries inherent complexity due to assignment risk. Brokers handle this differently. End-of-day trading or holding in these symbols can increase complexity and risk depending on the user’s account size.

Some American-style ETF options continue to trade past regular hours and do not settle until `4:15 PM ET`, including SPY, QQQ, IWM, TLT, and GLD. For these symbols, OO will attempt to exit any expiring ITM options until `4:15 PM ET` to reduce exercise and assignment risk.

## Execution Speed

The OO automation platform allows rapid order iterations. One-second modifications for entry or exit may be too fast for some brokers, depending on the user’s location and connection quality.

## Profit Target order being filled out of RTH

By default, the automation platform submits profit target limit orders that rest on the broker side, which can occasionally result in fills outside regular trading hours, or `RTH`.

Where a fill lands relative to RTH depends on the settlement type of the product (see [CBOE: Equity Options Extended Trading Hours FAQ](https://www.cboe.com/document/tech-spec/document/technical-specifications/equity-options-extended-trading-hours-faq)):

<table><thead><tr><th width="242.20001220703125">Product type</th><th width="137.60009765625">Examples</th><th>RTH</th><th>Curb</th></tr></thead><tbody><tr><td>Cash-settled index options</td><td>SPX and XSP</td><td><code>9:30 AM</code>–<code>4:15 PM</code> ET</td><td><code>4:15 PM</code>–<code>5:00 PM</code> ET</td></tr><tr><td>Physically-settled, select designated ETFs/ETNs</td><td>SPY, QQQ, IWM, TLT, GLD</td><td><code>9:30 AM</code>–<code>4:15 PM</code> ET</td><td>N/A</td></tr><tr><td>Physically-settled, standard equities/ETF options</td><td>AAPL, TSLA, AMZN, MSFT, NVDA</td><td><code>9:30 AM</code>–<code>4:00 PM</code> ET</td><td><code>4:00 PM</code>–<code>4:15 PM</code> ET</td></tr></tbody></table>

For **standard physically-settled options** (AAPL, TSLA, AMZN, MSFT, NVDA, and similar tickers), RTH ends at `4:00 PM`, followed by a brief **Curb** session through `4:15 PM`. This is part of the standard closing process for these options on the exchange side, not a broker-enabled extended-hours feature, so it applies to fills across all three supported brokers (Tradier, tastytrade, and Schwab). When a profit target order fills during Curb, the automation platform detects and records it normally.

**Select designated ETFs/ETNs** (SPY, QQQ, IWM, TLT, GLD) don't hit this Curb window — their RTH already extends through `4:15 PM` (see *Assignable Tickers* above), so a fill anytime up to `4:15 PM` is still a normal RTH fill.

**Cash-settled index options** (SPX and XSP) also carry RTH through `4:15 PM`, with any Curb session running `4:15 PM`–`5:00 PM` ET. Trading these outside RTH depends entirely on the broker:&#x20;

Tradier’s extended-hours trading is available only on SPX and XSP (see [Trading in the Pre and Post Market Sessions @Tradier Brokerage](https://blog.tradier.com/blog/2018/05/trading-in-the-pre-and-post-market-sessions-tradier-brokerage.html)):

* **Pre-market:** 8:10 AM – 9:30 AM ET
* **Post-market:** 4:15 PM – 5:00 PM ET (Curb)

tastytrade’s Global Trading Hours (GTH) is available on SPX and XSP (see [Global Trading Hours: 24 Hours Trading on Cboe Index Options](https://support.tastytrade.com/support/s/solutions/articles/Global-Trading-Hours)):

* **GTH:** 8:15 PM – 9:25 AM ET
* **Curb:** 4:15 PM – 5:00 PM ET

Schwab does not support extended-hours trading on any product, so no fills are possible for Schwab beyond `4:15 PM`.

Any fills after `4:15 PM` will not be picked up until the next market open, once active management resumes. In all cases, the recorded premium reflects the value reported by the broker for the closed resting order.

*Note: Automation platform **does not manage** trades after 4:00 PM ET (see* [When does the automation platform start?](/automation/automation-faq#when-does-the-automation-platform-start) and [OO closed a position after 4 PM, but I thought it only traded between 9:32 AM – 3:59 PM ET. Why did this happen?](https://docs.optionomega.com/automation/pages/mSGXzVGLI1s2UKDLhZE9#oo-closed-a-position-after-4-pm-but-i-thought-it-only-traded-between-9-32-am-3-59-pm-et.-why-did-thi)*). Please refer to your brokerage's website for detailed information on which order types are supported out of RTH.*

## Changing Account/Updating Active Strategies with Open Trades

To modify account assignment or update an active strategy with open trades:

* Create or copy and activate your new strategy with the desired changes and account assignment
* Select *"Pause Opening Trades"* on the original active strategy with open trades
* Wait for all existing trades to close in the original strategy
* Deactivate the original strategy\
  Use *"Halt Management"* only if you plan to manually manage any remaining trades

*Note: Ensure your new strategy is active before pausing the original one. After deactivating the original strategy, you can archive it. This keeps the results in Reporting. If you remove the deactivated strategy, you will permanently delete all associated data from Reporting.*

*Note: For an active strategy that does not have live trades, you can simply choose **Edit Strategy** and **Save**.*

## XSP — automation and modeling only, no backtesting

XSP is available for modeling and automation. It is not available for backtesting due to liquidity.

For more information, [watch this.](https://youtu.be/hW0W8597Kkk)

## Knowledge Base

Since the automation platform launched, we’ve seen a few situations that are not common enough for the FAQ but still warrant a mention. They are listed below, and we will keep adding to this list.

| User Question                                                                     | Insight                                                                                                                                                                  |
| --------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Two trades canceled each other and I have Move Exact Strike Offset selected. Why? | This can happen if the user has trades that overlap and enter in the same minute. Users can change the timing or account assignment of a trade where this could happen.  |
| Pricing is different between OO and the broker on spreads. Why?                   | Brokers typically use average cost for the same strike across multiple trades. OO uses the actual price paid for the option.                                             |
| Why did my trade not open?                                                        | Go to the strategy page, click **Activity Log**, then **Show Debug**. This is the first step and usually contains the answer.                                            |
| Why did my order fail a preflight check?                                          | The preflight check is not related to the API. You should usually find the answer by following the Activity Log instructions above. If not, call your broker.            |
| Why did my order fail an order preview?                                           | The order preview is not related to the API. You should usually find the answer by following the Activity Log instructions above. If not, call your broker.              |
| Why did my order get canceled by the broker?                                      | Reasons vary. Call your broker.                                                                                                                                          |
| The broker closed my order early on SPX. Why?                                     | Reasons vary. Call your broker. Brokers evaluate risk differently. They typically assess total account risk, not groupings of individual trade structures.               |
| The broker closed my order early on QQQ, SPY, or similar symbols. Why?            | Reasons vary. Call your broker. Assignable securities carry additional risks. Brokers typically assess total account risk, not groupings of individual trade structures. |
| Management was halted. Why?                                                       | Reasons vary. Once an automated strategy is halted, the automation platform no longer manages it, and the user must manage it manually.                                  |


# Webhooks

## Overview

Webhooks allow a third-party signal service, such as [TradingView](https://www.tradingview.com/), to trigger trade entries and exits in Option Omega (OO). Webhooks are configured at the ***strategy*** level. The strategy setup remains as specified in OO, but the Entry webhook ***replaces*** any existing entry criteria OO, becoming the sole signal for initiating that trade, while the Exit webhook ***supplements*** any existing exit criteria, serving as an additional signal to exit a trade. Multiple entries / copies of a strategy can be initiated from the entry webhook, while the exit webhook will initiate closing of ALL open positions / copies of that strategy.&#x20;

## Requirements

To use webhooks, you must have:

* An active subscription of Option Omega's [Premium Tier](/support/subscription-tiers).
* An authorized and connected brokerage account where the strategy will be traded.
* A saved [automation strategy](/automation/strategy-setup) in OO from which you want to manage via webhook.
* A signal service or platform that can send a custom JSON Payload via HTTP POST request to OO's webhook URL

## Configuring Webhooks

To configure webhooks, start from your saved automation strategy. Click on the chain link icon on the top right, next to the clock (view activity log) icon to open the Webhooks slider.

<figure><img src="/files/D6qYADO1rV6apFi2C0yd" alt="" width="375"><figcaption></figcaption></figure>

### Enabling Webhooks

Click Enable Entry Webhook to activate webhooks for this strategy.

<figure><img src="/files/d4gFM99JOBAtw6QieSHU" alt="" width="375"><figcaption></figcaption></figure>

This will activate the Webhook URL and the Entry Webhook message.&#x20;

<figure><img src="/files/vVpsnSwXfBv2CXOWcEJs" alt="" width="375"><figcaption></figcaption></figure>

The signal service must send a JSON payload via an HTTP POST request to the **OO Webhook URL**. Click the **Copy** icon next to the URL to copy it and paste it into your third-party tool.

The **Entry Webhook** is enabled by default. OO generates a unique Entry message containing a token. Copy this message and configure your signal service to send it to the OO Webhook URL whenever your entry conditions are met.

You can optionally enable an **Exit Webhook** by clicking **Enable Exit Webhook**.

<figure><img src="/files/lloj5tHR2tm8AfP68cL2" alt="" width="375"><figcaption></figcaption></figure>

Once enabled, an Exit message will appear below the Entry Webhook. Copy this message and configure your signal service to send it whenever your exit conditions are met.

### Webhook Entries

The Entry Webhook **replaces any existing Entry Criteria configured on the strategy**.

OO generates a unique Entry token that must be sent by the third-party signal service. You can copy and paste the generated Entry message directly into your signal configuration.

Whenever OO receives the Entry message at the Webhook URL, it treats the request as an entry signal and attempts to open a new position, or copy, of the strategy.

The strategy's trade construction settings are still retained, including:

* Put and call legs
* Leg quantities
* Strike selection
* DTE selection
* Position sizing and capital allocation
* Max Open Positions

However, **all other Entry Criteria are ignored while the Entry Webhook is active**. The webhook becomes the sole signal that determines when the strategy enters.

Each valid Entry Webhook signal can open a new copy of the strategy.

#### Daily Execution Limit

You can specify the number of **Maximum Daily Executions** to limit the number of webhook-initiated entries for that strategy each day.

Each entry is sized according to the strategy's configured position sizing or capital allocation settings. Once the daily execution limit has been reached, OO will ignore additional entry signals for the remainder of the trading day. Note that buying power limitations or max open positions, as defined in the strategy setup, may be reached before the daily execution limit.&#x20;

#### Managing the Entry Webhook

You can:

* Temporarily disable entries using the **Is Paused** toggle.
* Generate a new Entry token using the **Refresh** icon.
* Remove the webhook using the **Trash** icon.

Generating a new token invalidates the previous token, so your third-party signal configuration will need to be updated with the newly generated Entry message.

### Webhook Exits

The Exit Webhook is optional and **supplements the strategy's existing Exit Criteria** rather than replacing them.

OO will continue to monitor each open position using any Exit Criteria configured on the strategy, including:

* Profit targets
* Stop losses
* Early exit rules
* Profit actions
* Time actions
* Delta-based exits
* Short/long ratio exits
* Technical indicator exits

If OO receives the Exit Webhook message, it will attempt to exit **all open positions or copies of that strategy**.

The Exit Webhook applies at the **strategy level**, not to an individual position or copy of the trade. It is therefore best suited for broader external exit signals, such as a change in market conditions, rather than P/L management of a specific position.

For example, a strategy could continue using its normal profit target and stop loss for each individual position while also using an external TradingView signal to close every open position if broader market conditions change.

#### Managing the Exit Webhook

You can:

* Temporarily disable webhook exits using the Exit Webhook's **Is Paused** toggle.
* Generate a new Exit token using the **Refresh** icon.
* Remove the Exit Webhook using the **Trash** icon.

Pausing or removing the Exit Webhook does not affect the Entry Webhook.

## Disabling or Removing Webhooks

* Entry and Exit Webhooks can be temporarily disabled using their respective **Is Paused** toggles.
* You can also generate a new Entry or Exit token using the **Refresh** icon.&#x20;
  * This is useful if a token has been compromised or is associated with a signal configuration that can no longer be disabled or updated.
  * After generating a new token, copy the updated Entry or Exit message into your third-party signal configuration. The previous token will no longer be valid.
* You can permanently remove a webhook using the **Trash** icon.
  * Removing the **Exit Webhook** leaves the **Entry Webhook** active.
  * Removing the **Entry Webhook** removes both the **Entry** and **Exit Webhooks**.


# Setup and Use

The modeling tool is intuitive by design and allows users to save, modify, and track trades throughout the life of the trade. [Here is a video covering the basic functions](https://youtu.be/OHAX2HuH-ig).

To start, navigate to **Model** at the top of the site and select either **Model** for saved models or **Create New Model**.

<figure><img src="/files/LSH54rydn4QNXVeQ4POl" alt=""><figcaption></figcaption></figure>

It’s easy to create a new model. Let’s use a call debit spread with one long call and one short call. Simply left-click **Mid (Buy)** to add the long call leg.

<figure><img src="/files/7gF4eXmMVsNYpRfy2tQx" alt=""><figcaption></figcaption></figure>

Then left-click **Mid (Sell)** to add the short call leg.

<figure><img src="/files/4hsU7sG8zw2tvM98Cqw7" alt=""><figcaption></figcaption></figure>

You will see the legs added to the chain and listed on the right. To view the trade visually, click **View Chart** on the right or **Chart** at the top.

<figure><img src="/files/8L5QFdoscAdIq41GX0Rb" alt=""><figcaption></figcaption></figure>

Greeks can be added at the top right. Let’s add Delta and Charm.

<figure><img src="/files/WDPXgozaYuMxFXWHIdXV" alt=""><figcaption></figcaption></figure>

Users can click **3D** to model in three dimensions.

<figure><img src="/files/LqV1lNbwSq3p9xM2YvOL" alt=""><figcaption></figcaption></figure>

Greeks are also displayed along the bottom of the screen.

If the user selects **2D**, they can adjust the time, range, and IV of the model.

<figure><img src="/files/TDzDoqgB2Gm5pkOZUMtt" alt=""><figcaption></figcaption></figure>

To save the model, click **Save**.

<figure><img src="/files/P08Gg7jzghhNHAtZYm41" alt=""><figcaption></figcaption></figure>

Users can change the pricing, give the model a name and description, and choose to enable sharing if they want to share the model with a friend.

<figure><img src="/files/lUpUFyNzrH9jdhjFqHYv" alt=""><figcaption></figcaption></figure>

Saved models will now appear under the **Model** page.

<figure><img src="/files/HVOPkdzSuoHnthXIhFbY" alt=""><figcaption></figcaption></figure>

That’s the basics. We’ll continue adding more modeling documentation over time.


# Modeling FAQ

### Where can I talk about modeling with other OO members?

We have a discussion channel on Discord called [#tests-strats](https://discord.com/channels/882705067210317915/961355812297666691) for strategy discussion. That’s a great place to start.

If you're not on Discord, [join the community](/welcome/discord-community).

### How do I know when new features are added?

We post them in the [releases](https://discord.com/channels/882705067210317915/882705067210317919) channel on Discord. If you're not on Discord, [join the community](/welcome/discord-community).

### I have the Essential (Backtesting) tier but want to add Modeling. How do I do that?

The self-service portal in the web app lets users change their subscription status or tier at any time. [Check it out](https://youtu.be/zPU9WGgk2a8?si=RQaLrzkYl9vEbUXm).

### What pricing model does the platform use?

The platform uses the **Black-Scholes model** to calculate estimated option prices and Greeks (Delta, Gamma, Theta, Vega, and Rho).\
The Implied Volatility (IV) values used in these calculations are sourced from the OPRA data provider.

### Why is there a difference between the P/L shown on the chart and in the right sidebar?

The discrepancy you may notice between these two displays is due to different data sources:

* **Right Sidebar**: Shows real-time profit and loss based on live market data directly from the OPRA data provider. This reflects current option prices.
* **Chart**: Displays profit and loss calculated using the Black-Scholes model. This provides theoretical pricing based on the model's assumptions and parameters.


# OO Office Hours

### ***Option Omega Office Hours***

Join our next Office Hours session Tuesday, July 14 from 12:30 PM – 1:30 PM ET (tune in at your convenience during this time).&#x20;

This is a live, freeform Q\&A session that will cover anything related to the OO platform. It's your opportunity to chat with the OO team, ask questions about the platform, from modeling to backtesting to automation, and walk through sample backtest setups. Whether you're brand new or already exploring strategies, this session will help you maximize your ROI in Option Omega.

To attend, join using this Zoom link: [https://us06web.zoom.us/j/83112754338?pwd=EF2mYEietGJjLUmphwCFuVtQbOpcOu.1](<https://us06web.zoom.us/j/83112754338?pwd=EF2mYEietGJjLUmphwCFuVtQbOpcOu.1 &#xA;>) \
\
**Note**: this session is focused on the Option Omega platform and is intended for educational and informational purposes only. It does not constitute financial, investment, or trading advice; all backtesting results and strategy examples are hypothetical and do not guarantee future performance.


# Contact Us / Support

Option Omega does not offer phone support, but we are easy to reach.

If you need help upgrading or changing your plan, resetting a password, or handling other account or subscription issues, email us at `billing@optionomega.com`.

Have feedback or ideas to improve the product? Browse and upvote feature requests or submit your own ideas here on our [Canny Feature Request Board](https://optionomega.canny.io/feature-requests).

If you need backtesting or technical support, please do not email technical questions. We have staffed Discord channels for chat support. [Join here](https://discord.gg/s5HG3ECUE4).

If you're on the automation platform, please also follow [#known-issues](https://discord.com/channels/882705067210317915/1377977525933834260).

You can self-verify by entering your Discord username in the **Discord Username** field on `optionomega.com`. That grants you access to the verified channels. Watch this one-minute video for the steps:

{% embed url="<https://youtu.be/MyEkmc96t1E?si=j3lRl0IT8Sgl_Ns3>" %}


# Subscription Tiers

Option Omega has 4 subscription tiers, each available in monthly or annual subscriptions.

* **Lite** (formerly Modeling) — includes modeling
* **Essential** (formerly Backtesting)— includes backtesting
* **Plus** (formerly Backtesting+Modeling)— includes backtesting and modeling
* **Premium** (formerly Trading)— includes backtesting, modeling, and automation

For more details on what's included in each tier, see the [tier comparison table](#tier-comparison).

Users only need one subscription. Users can switch between subscription types or billing periods, annual or monthly, at any time. Existing subscriptions are prorated and discounted against the new subscription at the time of the switch.

A video detailing the upgrade or switching process is here:

{% embed url="<https://youtu.be/23nsRR6DNzs>" %}

### Additional notes

Optional free trials are available on all tiers except Premium. [More information about the free trial can be found here](/welcome/free-trial).

If a user is on the Premium tier and wants to downgrade to another tier, they should remove broker connections, pause opening new trades, and close existing trades first. The automation system will not manage trades without an active Premium subscription.

Users with subscription questions can email `billing@optionomega.com`.

### Tier Comparison

<table><thead><tr><th valign="top">Feature</th><th align="center" valign="top">Lite 

(Formerly Modeling)</th><th align="center" valign="top">Essential

(Formerly Backtesting)</th><th align="center" valign="top">Plus

(Formerly Backtesting+ Modeling)</th><th align="center" valign="top">Premium

(Formerly Trading)</th></tr></thead><tbody><tr><td valign="top">Create 2D & 3D Models</td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td align="center" valign="top"></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td></tr><tr><td valign="top">Save, Share & View Models</td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td align="center" valign="top"></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td></tr><tr><td valign="top">Model Individual and Aggregated Live Trades</td><td align="center" valign="top"></td><td align="center" valign="top"></td><td align="center" valign="top"></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td></tr><tr><td valign="top">Backtest Strategies</td><td align="center" valign="top"></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td></tr><tr><td valign="top">Optimize Backtests</td><td align="center" valign="top"></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span><br>50 tests/run, 10 runs/day</td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span><br>50 tests/run, 10 runs/day</td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span><br>500 tests/run, 250 runs/day</td></tr><tr><td valign="top">Backtest Portfolios</td><td align="center" valign="top"></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td></tr><tr><td valign="top">Save, Share & View Backtests</td><td align="center" valign="top"></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td></tr><tr><td valign="top">Automate Backtested Strategies</td><td align="center" valign="top"></td><td align="center" valign="top"></td><td align="center" valign="top"></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td></tr><tr><td valign="top">Manage Trades Automatically or Manually</td><td align="center" valign="top"></td><td align="center" valign="top"></td><td align="center" valign="top"></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td></tr><tr><td valign="top">Report on Live Trading Results</td><td align="center" valign="top"></td><td align="center" valign="top"></td><td align="center" valign="top"></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td></tr><tr><td valign="top">Access to OO Discord Community</td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td></tr></tbody></table>


