Entry Filters
When a bot closes all existing positions, it will evaluate whether or not to enter into a new position. There are some rules and filters that you can apply to bots to force the bot to wait until certain criteria are met before entering a new position. Those criteria are discussed below.
You can specify any combination of days of the week (Monday through Friday) that your bot is eligible to enter a new position.
These represent days of the week that the bot is eligible to enter a new position. It does not mean that your bot will enter a new position on each of these days. The bot will only enter a new position when the prior one closes, and only if all other entry conditions are met.
If you would like for your bot only to enter positions after a certain time during the day, you can specify that time here. With this set, a bot will not enter any new positions before this time. Instead, it will enter a new position the first time it runs beyond your latest entry time. If this field is left blank, a bot will enter a new position the next time it runs with no open position.
If you would like for your bot only to enter positions before a certain time during the day, you can specify that time here. With this set, a bot will not enter any new positions after this time. Instead, it will enter a new position at the start of the next market session. If this field is left blank, a bot will enter a new position the next time it runs with no open position.
If your bot is set up to enter multiple times per day, and you only want to enter a new position based on the profit/loss result of the previous position, you can specify that here. This will restrict your bot from subsequent entries each day only when the last position closes at a profit or a loss (based on your choice). This filter is not analyzed for the first position each day, so the bot will not go back and look at a position closed on a prior day. This is only used when cycling into new positions intraday.
If you would like to ensure that the starting price for your new order is at least a certain amount, you can do that here. After selecting your target strike(s), the bot will ensure that the first order submission price is at least this amount. If it is not, the bot will not enter a new order at that moment and will continue to monitor the market for when the bot's entry conditions are met.
Minimum Starting Premium is only enforced for the very first order submission. The minimum starting premium is not enforced if the bot has to cancel and replace the order to get a fill.
If the selected strikes do not meet your minimum starting premium, the bot will not adjust the strike prices to those that meet your minimum premium. Instead, the bot will not enter a new position and will wait for the market to move and all entry criteria are met.
If you would like to ensure that the starting price for your new order is no more than a certain amount, you can do that here. After selecting your target strike(s), the bot will ensure that the first order submission price is less than or equal to this amount. If it is not, the bot will not enter a new order at that moment and will continue to monitor the market for when the bot's entry conditions are met.
Maximum Starting Premium is only enforced for the very first order submission. The maximum starting premium is not enforced if the bot has to cancel and replace the order to get a fill.
If the selected strikes do not meet your maximum starting premium, the bot will not adjust the strike prices to those that meet your maximum premium. Instead, the bot will not enter a new position and will wait for the market to move and all entry criteria are met.
This filter will check the current at-the-money (ATM) implied volatility for your target options chain. This is at-the-money implied volatility, not implied volatility for your actual strike(s). If at-the-money implied volatility is at least this minimum amount, the bot will allow entry.
Implied volatility is an estimation and is not consistent between different sources (ie: Whispertrades and brokers). The implied volatility that you see at Whispertrades will not match exactly what you see at your broker. The gap will be larger for high IV and/or options that are near expiration.
Whispertrades has its own implied volatility formula (using Bisection) and uses actual time to expiration rather than whole days to expiration. This better reflects how IV changes as you approach expiration. Additionally, both Whispertrades bots and backtests use the same implied volatility formula, providing a consistent experience when comparing backtest performance to live trading.
This filter will check the current at-the-money (ATM) implied volatility for your target options chain. This is at-the-money implied volatility, not implied volatility for your actual strike(s). If at-the-money implied volatility is lower than this maximum amount, the bot will allow entry.
Implied volatility is an estimation and is not consistent between different sources (ie: Whispertrades and brokers). The implied volatility that you see at Whispertrades will not match exactly what you see at your broker. The gap will be larger for high IV and/or options that are near expiration.
Whispertrades has its own implied volatility formula (using Bisection) and uses actual time to expiration rather than whole days to expiration. This better reflects how IV changes as you approach expiration. Additionally, both Whispertrades bots and backtests use the same implied volatility formula, providing a consistent experience when comparing backtest performance to live trading.
If you wish to only enter a new position after the underlying stock/index/ETF price has only moved a certain percentage for the day, you can specify that here. This is the % move from the prior close. When it is time to enter a new position (prior position closes and all other entry conditions are met), the bot will check % move of the underlying and only enter a new position if the underlying has moved at least this amount.
If you wish to only enter a new position if the underlying stock/index/ETF price has moved less than certain percentage for the day, you can specify that here. This is the % move from the prior close. When it is time to enter a new position (prior position closes and all other entry conditions are met), the bot will check % move of the underlying and only enter a new position if the underlying has moved less than this amount.
If you wish to only enter a new position after the underlying stock/index/ETF price has only moved a certain percentage since the market open, you can specify that here. This is the % move from the opening price for the current day. When it is time to enter a new position (prior position closes and all other entry conditions are met), the bot will check % move of the underlying and only enter a new position if the underlying has moved at least this amount.
If you wish to only enter a new position if the underlying stock/index/ETF price has moved less than certain percentage since the market open, you can specify that here. This is the % move from the opening price for the current day. When it is time to enter a new position (prior position closes and all other entry conditions are met), the bot will check % move of the underlying and only enter a new position if the underlying has moved less than this amount.
If you wish to only enter a new position if the current VIX value is less than a certain amount, you can specify that here. When it is time to enter a new position (prior position closes and all other entry conditions are met), the bot will check the current VIX value and only enter a new position if VIX is under that level.
If you wish to only enter a new position if the current VIX value is greater than a certain amount, you can specify that here. When it is time to enter a new position (prior position closes and all other entry conditions are met), the bot will check the current VIX value and only enter a new position if VIX is above that level.
If you'd like to only enter a new position when two moving averages cross each other, you can do that with this setting. This takes two moving averages (your choice) for the underlying and requires that one of them be above or below the other (your choice) before allowing entry.
Simple Moving Averages (SMA)
SMAs all use days for the period. 200-day SMA represents the average closing price over the last 200 days. For the current day that the bot is trading, the bot will include the current underlying price for that day's price. If you are using the 200-day SMA, the average will come from the current intraday underlying price and the 199 daily closing prices before that.
SMAs use unadjusted prices, which can lead to false signals following stock splits.
Exponential Moving Averages (EMA)
EMAs all use minutes for the period. 50-minute EMA represents the average price over the last 50 minutes, with multiple readings sampled per minute to determine an average price for each minute.
EMAs reset daily and do not include prices from the prior session. This means that your EMA is not complete until the number of minutes in the EMA length have occurred for the current session. If using a 50-minute EMA while only 5 minutes into the session, the EMA at that point in time will only reflect the average for the first 5 minutes, not 50 minutes. You may wish to restrict bot entry until a time of day when your EMA calculations are complete for your selected length.
If you'd like to only enter a new position when the underlying price is above or below a specific moving average, you can do that with this setting. You'll choose the moving average and also the percentage above or below to compare against. If the underlying is at least your specified percentage above or below the moving average you select, the bot will allow entry.
Simple Moving Averages (SMA)
SMAs all use days for the period. 200-day SMA represents the average closing price over the last 200 days. For the current day that the bot is trading, the bot will include the current underlying price for that day's price. If you are using the 200-day SMA, the average will come from the current intraday underlying price and the 199 daily closing prices before that.
SMAs use unadjusted prices, which can lead to false signals following stock splits.
Exponential Moving Averages (EMA)
EMAs all use minutes for the period. 50-minute EMA represents the average price over the last 50 minutes, with multiple readings sampled per minute to determine an average price for each minute.
EMAs reset daily and do not include prices from the prior session. This means that your EMA is not complete until the number of minutes in the EMA length have occurred for the current session. If using a 50-minute EMA while only 5 minutes into the session, the EMA at that point in time will only reflect the average for the first 5 minutes, not 50 minutes. You may wish to restrict bot entry until a time of day when your EMA calculations are complete for your selected length.
If you would like to avoid entering new positions around major FOMC interest rate announcements, you may do so with this filter.
This only controls and prevents new positions that are opened during the event. Any existing position that was entered before your time window here will still be held and managed through the FOMC event if it does not expire or close before so. This filter will not forcefully close positions that were already open.
If you would like to avoid entering new positions before, during, or after FOMC interest rate announcements, here are a few different settings that may work for you:
Once a bot closes all existing positions, it will check for any "Avoid FOMC" filters if there's an FOMC event coming up. If there is an Avoid FOMC filter in place, the bot will wait until your designated number of days have passed before entering a new position.