Bots do not share an order ID with your broker. Each bot has a unique ID maintained by Option Alpha. Positions are tracked and managed independently of the broker. We submit a buy-to-close or sell-to-close order and the broker performs the reconciliation to determine whether or not the order is valid.
The broker reconciles a buy or sell-to-close order against existing positions. The closing order won't automatically reverse the order if it does not exist, it will error out.
When adding to an existing position, he bot will only manage the quantity it knows about. The additional quantity that was opened manually will need to be closed manually. You can manually override a position in the platform and the bot will no longer manage the position; you will need to manage the position through your broker.
The bot will honor any instructions to close the position in your automations (or at expiration if ITM) as if it was still open. However, since you've externally closed the position, the broker will produce an error with a message informing you the position does not exist. At that point, you can still manually override the position in the bot so it doesn't try again.
Users are encouraged to reach out to the broker for questions on their reconciliation process.
Bot Positions can be in four different states, Open, Opening, Closed, and Closing. When an order is passed from the automation to the broker service it changes state, and in the process is released from the bot temporarily until returned with an updated state. During this time, the bot is unaware of this position and will not be recognized as Open by other automations.
Positions that are in a Closing state are not recognized by other automations as Open while undergoing the closing process.
All orders are submitted as timed limit orders. If a partial fill event is returned, we wait for the remaining position to be filled. On the subsequent partial fill(s) we reset the timeout, default to 5 minutes.
If no new partial fill event is received after the timeout expires, the remaining order is simply canceled, and the position status changes from "opening" to "open" with the partial quantity.
Bots are unaware if an assignment occurs as this event is not reported back to us by the broker API. The bot will continue to track what it views as the original pre-assignment position. If the bot’s exit conditions are met, it will attempt to close the position.
Traders should monitor their broker platform for any positions that carry assignment risk and will need to manage the position from that end if assignment occurs. Override the position to remove it from the bot's management following an assignment.
Tax Lot Selection
A tax lot is a record of a transaction and its tax implications, including the purchase date and the number of shares. Each time you purchase a security, the new position is a distinct and separate tax lot, even if you already owned shares of the same security. A tax lot identification method is the way your broker will determine which tax lots are to be sold when you have a position consisting of multiple purchases made on different dates at differing prices, and you enter a trade to sell only part of the position. Your choice of tax lot ID method can have a significant impact on the amount of taxes you may pay when you sell an asset.
Option Alpha does not pass tax lot information with the specific order to any of the brokers. Bots submit closing order requests for the options symbol used to open the position. Your brokerage account settings will determine tax lot treatment. If you have any questions on tax lot treatment, please reach out to your broker.
Option Expiration Protocol
Positions expiring in-the-money are subject to assignment and/or broker intervention based on the contract type and your account balance. Out-of-The-Money (OTM) positions are not released and will be left to expire at market close.
In your Settings, you can select how you want your bots to handle expiring In-The-Money positions 10 minutes before market close on expiration day:
- Close position with a market order (Paper trading default)
- Override position and manually enter results (Live trading default)
It is the trader's sole responsibility to update their position's ending value with the Position Editing function and to ensure the bot's performance accurately reflects the outcome of expired positions that were released due to being In-The-Money.
The import system checks the position for 1) strategy compatibility 2) symbol compatibility 3) non-zero cost basis 4) non-zero quantity. In the event your position is not being recognized when importing it is likely because it violates one of those requirements.