Skip to main content

Entry Filters: Underlying, VIX, and Custom Conditions

Last updated September 20, 2026

Entry filters let a bot check market conditions before it opens a trade. If any active filter says no, the bot stands down for that attempt and tries again later in its entry window.

Where filters live: the Trade Conditions section

The Trade Conditions section of the bot form is the bot's rulebook for when trading is allowed at all. The master Entry Filters toggle reveals the underlying, VIX, and custom filter panels described below. Around it sit standalone gates that work whether or not filters are on: Max Concurrent Trades (caps how many of the bot's trades can be open at once with staggered or Multi-Entry setups), Max Trades Per Day, Max Profit Targets Per Day, Max Stops Per Day, minimum and maximum trade value bounds, and more. Every gate in the section is documented field by field in Bot Settings: Trade Conditions and Entry Filters.

  Entry filters apply to the bot's scheduled entries. Trades you launch yourself with Launch Now, and trades opened by a webhook, skip the filter checks: when you pull the trigger manually, the bot assumes you mean it.

Event Day Filter: the days you select are the exception

The Event Day Filter has its own Enabled toggle in Trade Conditions, separate from the Entry Filters toggle. Enable it, pick a Filter Behavior, then select the event days that behavior applies to. Whichever behavior you pick, the days you select are the exception to it:

  • Do Not Trade Selected Days (the default): the bot trades as usual and skips only the event days you select.
  • Only Trade Selected Days: the bot trades only on the event days you select and skips every other day, ordinary days included.

For each of these events, you can select the Day Before, Day Of, and Day After:

  • FOMC Press Conferences
  • Monthly CPI Report
  • Monthly OPEX
  • Monthly Jobs Report
  • GDP Release

There are also selections for the Last Trading Day of the Non-Quarter-End Month and the Quarter. These two never overlap: a month that ends a quarter counts only as the Quarter, so selecting only Non-Quarter-End Month leaves March, June, September and December alone. Under Other Market Days there are two more single selections: First Trading Day of Month and Early Close Day, a day the market closes early. Filter Behavior determines what happens on every day outside your selections; there is no separate All Other Days toggle.

  Like the other entry filters, the Event Day Filter gates the bot's scheduled entries. Entries from Launch on Stop, Launch Now, a webhook or add-to-serial, and completions of a partial fill, are not blocked by it, so a bot can still open on an event day through one of those paths.

A day with multiple events counts as selected if any one of its events is selected. If CPI and OPEX coincide and you select only CPI Day Of, that day is selected: Do Not Trade Selected Days skips it, and Only Trade Selected Days allows it through this filter. Other entry gates must still pass.

For example, to skip the day of an FOMC press conference or CPI release, leave Filter Behavior on Do Not Trade Selected Days and select only those two Day Of boxes. To trade only on CPI release days, choose Only Trade Selected Days and select only Monthly CPI Report: Day Of.

Only the days you select are colored in the panel, because they are the exception the rule acts on: red with an x under Do Not Trade Selected Days (the days the bot skips) and green with a check under Only Trade Selected Days (the only days it trades). Every other day stays unhighlighted. The Filter Behavior button carries that same mark and color, so the behavior you pick and the days it acts on read as one rule. The key above the event boxes spells out both halves, and the live summary below them describes the finished rule in a sentence.

With no events selected, Do Not Trade Selected Days does not restrict trading at all. Only Trade Selected Days needs at least one event day selected, since with none the bot would never open a trade; the form asks you to pick one before saving. Selecting every event under Only Trade Selected Days still skips ordinary days. Turning the Event Day Filter off removes its restriction. Check the Event Days and Market Holidays calendar to confirm which dates your rule covers.

The Event Day Filter can also be set from a bot import file, through the entry_filter_special_days parameter. Its digit order and both Filter Behaviors are documented in the Bot Import Format Reference.

  Why skip the Day Of but allow the Day Before and Day After? Scheduled announcements land at a known time and routinely reprice the market within minutes; the days around them usually trade normally. Skipping only the event day keeps your bot's schedule intact while avoiding its most binary session.

Underlying Entry Filters

These eight filters read the bot's own underlying before entry. Most use a shared pattern: a greater than bound and a less than bound, each with its own on switch, entered as the change from the first time to the second time, positive if up and negative if down. Turn on one bound or both.

The Intraday Change filter enabled with a Greater Than bound of -1 percent and a Less Than bound of 1 percent
Both bounds on: this bot only enters while the underlying is within 1 percent of flat on the day.
  • Intraday Change: how far the underlying has moved since today's open, in percent. Example: enter only if the market is down less than 1 percent on the day.
  • One-Day Change: the move from yesterday's close to the current price, in percent.
  • Overnight Gap: the gap from yesterday's close to today's open, in percent. Example: stand down after a large gap in either direction by requiring the gap to sit between -0.5 and +0.5 percent.
  • Market Value Between: the underlying's price itself must fall inside a range you set.
  • Moving Average Range: the price must sit a chosen percent above or below a moving average you define: Simple or Exponential, measured Daily at Close, Daily at Current Time, Hourly, or by Minute, with your period count.
  • Moving Average Crossover: one moving average must be above or below another, a classic trend check built from the same period controls.
  • RSI: the Relative Strength Index over your chosen periods must be above or below your bounds, a common overbought or oversold gate.
  • Opening Range Breakout: the bot tracks the underlying's high and low over an Opening Time Period you set (60 means the first hour) and will not enter until that period has elapsed. Then the Breakout Direction (Higher, Lower, Either, or Both) and Breakout Condition decide whether entries require the price to be outside the range right now, to have crossed it at any point since the range formed, or, for fade styles, to have stayed inside it. The ORB percentage range widens or tightens the breakout threshold.
The Opening Range Breakout filter with Breakout Direction Higher, a 30 minute opening period, a 0.1 percent range, and the Is Broken Out condition
An ORB filter: wait out the first 30 minutes, then only enter while price sits 0.1 percent above the opening range high.

Each filter has its own enable switch, so you can combine checks: an overnight gap limit plus a moving average trend check plus an RSI bound all have to agree before the bot enters.

  By default, filters are re-checked on every entry attempt, not just once. A bot blocked at the open can still enter later in its window if conditions come back into bounds, which is why a filter pairs naturally with a generous Entry Time Window. To stop after the first failed check instead, turn on Filter the Day.

Volatility Index (VIX) Entry Filters

Six of the same filter types are available against the VIX rather than the bot's underlying, so a bot can require calm or elevated volatility before it trades: Intraday Change, One-Day Change, Overnight Gap, a Range Between bound on the VIX level itself, a Moving Average Range, and a Moving Average Crossover. There is no RSI or Opening Range Breakout filter for the VIX. VIX filters are popular for keeping premium-selling bots out of fast markets, for example by requiring the VIX to be below a level you choose before entering.

Filter the Day

Filter the Day decides what happens after an entry filter says no. With it off, the bot keeps checking on every attempt through its entry window and enters as soon as conditions come back into bounds. With it on, the first failed filter ends the bot's automated entry attempts for the rest of the day.

  • What counts: any underlying or VIX filter that reads the market and fails, and a User-Hosted Entry Filter that answers with a filterStatus of false.
  • What does not count: a check that could not run. If market data is not available yet, a moving average or RSI cannot be calculated, or your endpoint cannot be reached or sends back an invalid response, the bot tries again on its next attempt.
  • Overnight Gap filters always end the day's attempts when they fail, whether or not Filter the Day is on, because the gap is set at the open and cannot change.

Use it when a single "no" should mean "not today." A bot that should only enter if the market is calm at 10:00 AM, and never later, is a good fit: turn on Filter the Day and the bot will not chase an entry once conditions drift back into range in the afternoon. The flag resets before the next trading day, and Launch Now still opens a trade for that bot whenever you choose.

Custom Entry Filters

User-Hosted Entry Filters hand the final entry decision to you. The bot calls a web address you host, and your endpoint answers with a simple yes or no trade decision in a JSON response with a filterStatus value of true or false. You can compute anything you like behind that endpoint before answering.

  An invalid response from your endpoint results in an error and the bot will not open the trade on that attempt; it tries your endpoint again on its next attempt. tradeSteward support can confirm your bot is calling the endpoint and applying its answer, but cannot help build or debug the logic behind your custom filter.

How filters fit the entry flow

Filters run at entry time, after the bot's schedule says go and before any order is sent. They never close an open trade; exits remain the job of your profit target, timed exit, and stop settings. If a filter blocks an attempt and the entry window is still open, the bot simply re-checks on its next attempt. To see the exact live numbers your filters are evaluating right now, open the Bot Filter Values page, covered in its own guide. For the scheduling side of entries, see Entry Timing: Windows, Days, Speed, and Staggering; for exits, start with Profit Targets and Timed Exits.