For the complete documentation index, see llms.txt. This page is also available as Markdown.

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.

Heads-up!

The CSV tester is an advanced option. We strongly recommend watching this video on it before you do anything else.

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.

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

Then, please click Update Preferences.

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.

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.

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

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.

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

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.

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

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.

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

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.

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: 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.

  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).

  5. Import the data to the existing sheet.

  6. Select ALL cells (top left corner button).

  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.

Note: exact steps may differ depending on the version of Excel you are using.

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."

  1. Import the data.

  2. Select ALL cells (top left corner button).

  3. Change date formatting for all cells to Text.

  4. 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.

Note: exact steps may differ depending on the version of Sheets you are using.

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.

Last updated