Learn more about our incredible SmartPricing feature and how to use the different settings in any automation.

SmartPricing is an exciting feature unique to the Option Alpha autotrading platform. This video discusses how SmartPricing works and how you can use different settings in your automations for all order types.

SmartPricing places timed limit orders in a sequence, traversing the bid-ask spread until you reach your final price. Orders are sent and canceled based on the SmartPricing settings you choose until the optimal price is filled.

SmartPricing enables you to execute multiple order types throughout the intervals, working through the bid-ask spread to find the most favorable pricing. 

All order actions now include our SmartPricing controls. By default, order pricing is set to Normal SmartPricing and 100% of the bid-ask spread.

You have complete control over SmartPricing for all order actions in every automation. You can change the SmartPricing settings at any time, and each order action can use different custom settings.

Example (:35)

SmartPricing can be used in any automation type inside your bots. You can access the SmartPricing feature through an open position action in a scanner automation’s editor.

Open position action details

There is a variable field for the price setting. Pricing defaults to 100% of the bid-ask spread.

SmartPricing views the bid-ask spread in a range from 0% to 100%. The bid is the best price to buy (0% of the range), and the ask (100% of the range) is the most unfavorable price to buy. 

Conversely, the ask is the best price to sell and would be 0% for a credit order; the bid would be 100% of the defined range.

Select the field to open the settings for SmartPricing and Final Price.


The settings page allows you to set specific parameters for when the order is sent to your broker for execution.

There are four settings for SmartPricing. The dropdown menu displays the different settings.

SmartPricing settings

You can choose between the three speeds -- normal, speedy, and patient -- or turn off SmartPricing and set a single limit price.

Normal is the default setting for SmartPricing. Normal identifies a starting point near the mid-price of the bid-ask spread and works toward the bid (credit orders) or ask (debit orders) with a maximum of four price steps. 

The automation will wait 10 seconds to see if a price step order has been filled. If the price is not filled, the order is canceled, and it moves to the next price. 

The four price steps are evenly distributed between the 50% and 100% points in the bid-ask spread.

The speedy setting uses the same starting point near 50% and 100% for its limit but has a maximum of three price steps. 

It waits 5 seconds for a fill before moving to the next price. The three price steps are also evenly distributed between the 50% and 100% levels.

Speedy moves through the spread much quicker than normal and patient, and checks less prices that are wider apart. This may be helpful if you want to enter or exit a position more aggressively, while normal and patient may be better if you want to optimize your fill price.

Patient uses a maximum of five price steps beginning at approximately 33% of the bid-ask range and waits 20 seconds at each price for a fill. 

The price steps are not evenly distributed like they are for Normal and Speedy. Patient starts with small steps and expands the distance between each price as it moves toward its 100% limit.

(We typically suggest the patient SmartPricing setting to try more prices at longer intervals).

You can always turn SmartPricing off. When off, the automation does not use a price sequence. By default, a limit order is set at 100% of the bid-ask spread. You set the limit price or use a percentage of the bid-ask spread between 50-100%. 

By setting the price limit at 100%, you indicate a willingness to accept the current bid (when selling) or ask price (when buying). Market conditions at position closing may cause increased capital allocations beyond the calculated maximum risk at position entry. If the market is illiquid or bid-ask spreads are wide, bots have the potential to risk more capital at position exit than was allocated at position entry.

For example, if there is a wide bid-ask spread for a credit spread position, the ask price to close the spread may exceed the spread’s width. As always, you have the ability to manually override positions, SmartPricing settings, exit criteria, and orders at any time.

When SmartPricing is turned off, the order will time out after five minutes.

Scanner Automation Open Position Actions (4:20)

Choose your SmartPricing setting.

For this open position action, the normal price setting will be used with a Final Price of 100% of the bid-ask spread.

SmartPricing details

As a reminder, when targeting for liquid securities, you can always use a decision recipe to filter for minimum volume and bid-ask spread values.

Once you’ve established your SmartPricing settings, select “Save.” Confirm the order type, ticker, amount of shares or contracts, and custom inputs. Select “Save” to return to the automation editor.

Open position details with SmartPricing

This Macro Trend w/ Stocks scanner automation evaluates if the ticker price is above the 200-day SMA. If it is, a long equity position is opened using the normal SmartPricing setting.

SmartPricing enables you to use different settings for different order types within the same automation.

The same bot has multiple scanner automations. The RSI Swing w/ Spreads scanner automation has two open position actions. Each order action uses a different custom SmartPricing setting.

Automation editor credit spreads

The short call spread uses the patient setting:

Patient SmartPricing

This short put spread uses the speedy setting:

Speedy SmartPricing

Monitor Automation Closing Position Actions (7:21)

SmartPricing is not limited to scanner automations; monitor automations are equipped with the same settings to exit trades with closing position actions.

An additional final price level can be set anywhere from 50% to 100% of the bid-ask range.

It can also be set as a fixed dollar amount.

This example uses the patient setting with a 0.50 multiplier to close the call spread with a 50% or better profit. Because the closing action looks to take a profit, it uses the patient setting to optimize the exit order price. It will check more prices in longer intervals.

Close position SmartPricing patient setting

This close position action looks to exit a trade if it is challenged. Therefore, the speedy setting is used to expedite the process of closing the position. It will check fewer prices in shorter intervals, wider through the bid-ask spread. 

This is useful if your priority is to close the position instead of checking more quotes to find a better price.

Close position SmartPricing speedy setting

Manual Trade Entry Example (9:27)

For this example, we will open a short call spread position in XLF.

Remember, you can always open a new position manually with the “+” icon in the Position Statement.

Manual open position

You can select the SmartPricing settings on the position details page.

SmartPricing short call spread

This example will use the default (Normal) price settings.

Normal SmartPricing 100%

The bot will work through 100% of the bid-ask spread across four prices at ten seconds each.

When the trade has been placed, you can view the position’s status in the Position Statement. You can select the position to see the details of the working order.

Position details

You can select the order field to see the order’s details, including the SmartPricing information.

Filled order details with SmartPricing

Note that it started at the best possible price of $0.22, where the order was filled. SmartPricing recognized that the bid-ask spread was $0.06 wide between $0.26-$0.20, so it started above the ask price, and would have worked to $0.21, then $0.20, if the order was not filled within ten seconds.

When a bot assesses the bid-ask spread using SmartPricing, it automatically calculates risk and return values based on the worst possible fill price at the time of execution.

For example, if you allocate $500 of risk to a long call position, and the SmartPricing range is $4.90-$5.10, the bot will not open the position because it assumes a worst-case scenario of a $510 debit.

Manual Trade Exit Example (12:25)

You can manually close a position using the button on the position details page.

Close position manually

When the “Close Position” button is selected, you can again enter the SmartPricing settings for this specific order. This time, we will use the Patient setting and stop at 50% of the bid-ask spread, ensuring that SmartPricing won’t go beyond the mid-price of the spread.

Patient SmartPricing 50%

You can always see the progress of an order that hasn't been filled.

Unfilled order SmartPricing details

If SmartPricing reaches the bid or ask price without a fill, it will stay on that price for five minutes. If the order is not filled at the highest or lowest acceptable price, it will time out. You can use the Close Position button to re-enter the order and try new settings.

Unfilled orders

This order was not filled per the SmartPricing settings. This is logical because the estimated fill price was $0.24. However, since the settings did not allow for price discovery to extend beyond 50% of the bid-ask spread, this price was never attempted.

The unfilled order is displayed as a canceled order in the order details.

Canceled unfilled orders

The order was submitted again with the settings changed to 100% of the bid-ask spread. You can select the order to see its history.

Filled order

Note that the first price attempted was $0.24 (where it was filled) because that was the best estimated price identified by the algorithm.

*The above examples were all performed in a paper trading account. The Option Alpha platform is created to mimic market conditions as closely as possible when paper trading, including pricing. 

Beginning at the 16:33 mark, Kirk demonstrates SmartPricing examples in a live trading account.

Live Trading Example (16:33)

Orders executed or working in the platform, SmartPricing or otherwise, are immediately visible in your brokerage account with the same information that is displayed in your bot’s dashboard. 

In this example, you’ll notice that the canceled SmartPricing orders are shown in the brokerage platform, and the live working trade is also shown.

Canceled and working orders in live account

The same canceled orders are displayed on the platform with a red “X” next to the order. The current open working order is also visible.

Working orders in autotrading platform

Because the estimated price is $0.21, the order probably will not get filled at the current 50% setting. It will be canceled after five minutes.

Once the order is canceled and the settings are changed, the order is filled. It is instantly shown in the brokerage account.

Filled orders in live brokerage account

When the position is closed, the same information will be displayed in the Option Alpha platform as your brokerage account. The position will be closed and removed, and the order details is displayed on both platforms.

Filled closing order

Of course, you don’t have to track your orders in your brokerage account. All relevant order information is always available in the Option Alpha platform in your bot’s Position Statement.

SmartPricing now gives you the ability to attempt better order execution and optimal price fills in an automated setting.

Learn more with our SmartPricing blog

Was this helpful?


Why is the SmartPricing sequence outside the range of the Bid-Ask Spread?

The bot sets the max (or min) price for smart pricing at 100% (or an alternative percent chosen by the user) of the bid-ask at the time the automation runs to ensure the math used by the automation is honored/enforced. In the half-second to one second between that moment and the time when the order is sent and SmartPricing captures the displayed bid-ask spread, the prices can change and this creates a discrepancy.

The bid-ask spread displayed is the one at the time the automation runs. This is for the user's protection.

For example, a bot may check for a minimum return of 50% on a position, set a max price that reflects that and in that half-second to one second something can happen that moves the price drastically to a completely different bid-ask. If the new bid-ask spread were allowed and it moved significantly, a user might get only 35% or even worse, take a loss. Setting the max/min price in advance ensures that will never happen.

What happens if SmartPricing does not fill an order?

If SmartPricing does not fill an order and is timed out, the order will be canceled. The canceled order is displayed as "Canceled" in the Closed Positions section. The bot will place the order again at the next interval if the automation's conditions are met.

What if I place a limit order and the order does not fill?

A limit order will time-out after five minutes and will appear as a canceled position in the Closed Positions section. The bot will place the order again at the next interval if the automation's conditions are met.

Is the full range of 0%-100% available for the Bid-Ask Spread?

No, you can use a range of 50-100% of the bid-ask spread when using SmartPricing.

What is the best range to traverse of the Bid-Ask spread?

This answer will vary for different traders and is a function of preference. The SmartPricing settings allow you to choose between different speeds and prices.  

For example, if you are entering a trade that is 40-60 days out, you may not mind waiting for a fill, so you might use the patient setting.  

If you are looking to enter a shorter term position, it may be more important to achieve a quick fill, so the speedy setting may be better. 

It is important to think about your bot and how your trade strategy would fit into these scenarios.

How does SmartPricing define Bid-Ask Spread?

The bid-ask spread is defined by the parameters selected for increments and time. The options vary and more detail can be found in the Option Alpha Technical Documents: Pricing - Option Alpha Docs

What are the differences between the Normal, Speedy, and Patient SmartPricing options?

The Normal, Speedy, and Patient settings differ in the number of pricing intervals and the time between those intervals. For more information., please see the Technical Documents found here: Pricing - Option Alpha Docs

How does a bot use SmartPricing to assess risk, allocation, and return?

When a bot assesses the bid-ask spread using SmartPricing, it automatically calculates risk and return values based on the worst possible price.

For example, if you allocate $500 of risk to a long call position, and the SmartPricing range is $4.90-$5.10, the bot will not open a position because it assumes a worst-case scenario of a $510 debit.