开云体育

ctrl + shift + ? for shortcuts
© 2025 开云体育

Define “NOT for AM-settled” SPX option contracts


 

When defining an option contract in python, what code should I write in the script to ensure that I am trading SPX option contracts that are PM-settled instead of AM-settled (I don’t want to trade AM-settled SPX options but not sure my code would finally point to it instead of PM-settled one)


 

Sorry, the subject title was badly written. Should be “How to define afternoon-settled SPX options”


 

One of the contract fields has SPX vs SPXW. You want to filter so you only have SPXW.


On Tue, Jan 21, 2025, 8:41?AM Lewis_Tang via <lewis91960127=[email protected]> wrote:
Sorry, the subject title was badly written. Should be “How to define afternoon-settled SPX options”


 

Thanks leop for your reply. I did use "SPXW" (and always use it) in the tradingClass specification. The following was exactly how I define the option contract :
opt_contract = Option(symbol='SPX', lastTradeDateOrContractMonth='20250116', strike=6005.0, right='C', multiplier=100, exchange='SMART', currency='USD', tradingClass='SPXW')
?
And after ib.qualifyContracts(opt_contract), I print the contents of opt_contract and got the following :
Option(conId=750912933, symbol='SPX', lastTradeDateOrContractMonth='20250117', strike=6005.0, right='C', multiplier='100', exchange='SMART', currency='USD', localSymbol='SPXW ?250116C06005000', tradingClass='SPXW')
?
Then, I tried to find out why the lastTradeDateOrContractMonth between the above two (20250116 vs 20250117) and later I noticed that 202250116 was a trade day where both AM and PM settlement existed for SPX/SPXW. I therefore searched over the web and noticed in Reddit that some traders suggested never trade AM-settled SPX options as the settlement time is set at the morning of next day. As my algo trades 0DTE SPX and expects settlement price to be set at market close on the same day, so this is why I do not want to trade AM-settled SPX options.


 

Oh, I remember now. A few days ago IBKR screwed up something with AM vs PM expiration chain data. Lots of people had an issue on that date and could not trade. I think there was a separate thread about that. First time I saw an issue like that at IBKR. They knew about it (I called to inquire) but probably didn't fix it. I wonder if the issue you are getting is for that specific date?


On Tue, Jan 21, 2025, 10:20?PM Lewis_Tang via <lewis91960127=[email protected]> wrote:
Thanks leop for your reply. I did use "SPXW" (and always use it) in the tradingClass specification. The following was exactly how I define the option contract :
opt_contract = Option(symbol='SPX', lastTradeDateOrContractMonth='20250116', strike=6005.0, right='C', multiplier=100, exchange='SMART', currency='USD', tradingClass='SPXW')
?
And after ib.qualifyContracts(opt_contract), I print the contents of opt_contract and got the following :
Option(conId=750912933, symbol='SPX', lastTradeDateOrContractMonth='20250117', strike=6005.0, right='C', multiplier='100', exchange='SMART', currency='USD', localSymbol='SPXW ?250116C06005000', tradingClass='SPXW')
?
Then, I tried to find out why the lastTradeDateOrContractMonth between the above two (20250116 vs 20250117) and later I noticed that 202250116 was a trade day where both AM and PM settlement existed for SPX/SPXW. I therefore searched over the web and noticed in Reddit that some traders suggested never trade AM-settled SPX options as the settlement time is set at the morning of next day. As my algo trades 0DTE SPX and expects settlement price to be set at market close on the same day, so this is why I do not want to trade AM-settled SPX options.


 

Oh no ! Never thought this was caused by IBKR. I will search for the relevant thread about this issue. Thanks for pointing me to the right direction.
However, I am afraid the issue actually occurs every day.
I looked into yesterday's situation (i.e. 20250121) where I traded as usual the 0DTE SPX options. Here are the details :

opt_contract = Option(‘SPX’, ’20250121’, 6015, ‘P’, ‘SMART’, currency=‘USD’, tradingClass=‘SPXW’)

Then, after ib.qualifyContracts(opt_contract), I got the contents of opt_contract as follows :

Option(conId=750913196, symbol='SPX', lastTradeDateOrContractMonth='20250122', strike=6015.0, right='P', multiplier='100', exchange='SMART', currency='USD', localSymbol='SPXW? 250121P06015000', tradingClass='SPXW')

So, I started wondering whether this is IBKR's screw-up or ib_insync's problem.