I'm curious how others deal with this situation:
You submit an order to IB to short 10,000 shares of XYZ. However, there are only 9,900 shares available to short. Rather than execute the 9,900 and then attempt to locate the remaining 100, IB holds the entire 10,000 share order until (if/when) it can find the final 100 shares. I assumed there must be a setting somewhere to elect for partial execution in this circumstance while remaining shares are located / cancelled, but according to customer service, there is no such option.
I was told that I can download a 'shares available' .txt file from the ftp site which gets updated hourly. So I guess one somewhat convoluted and imperfect solution is to:
1. Submit the order
2. Get a 'locate' value from the whyHeld field in orderStatus()
3. Scrape the ftp site to check how many shares are available and hope that the number hasn't changed since the last hourly update
4. Modify the order size to the # of shares in Step 3 and submit a new order for the remaining amount
*I suppose an alternative to step 3 is to iteratively reduce the order size by x # of shares until it submits
Anyhow, this seems like a lot of nonsense for something that could easily be added as a checkbox. That said, there could very well be a reason for this that I'm not aware of. Regardless, anyone have a better way of dealing with this?
You submit an order to IB to short 10,000 shares of XYZ. However, there are only 9,900 shares available to short. Rather than execute the 9,900 and then attempt to locate the remaining 100, IB holds the entire 10,000 share order until (if/when) it can find the final 100 shares. I assumed there must be a setting somewhere to elect for partial execution in this circumstance while remaining shares are located / cancelled, but according to customer service, there is no such option.
I was told that I can download a 'shares available' .txt file from the ftp site which gets updated hourly. So I guess one somewhat convoluted and imperfect solution is to:
1. Submit the order
2. Get a 'locate' value from the whyHeld field in orderStatus()
3. Scrape the ftp site to check how many shares are available and hope that the number hasn't changed since the last hourly update
4. Modify the order size to the # of shares in Step 3 and submit a new order for the remaining amount
*I suppose an alternative to step 3 is to iteratively reduce the order size by x # of shares until it submits
Anyhow, this seems like a lot of nonsense for something that could easily be added as a checkbox. That said, there could very well be a reason for this that I'm not aware of. Regardless, anyone have a better way of dealing with this?