Hi team,

This algorithm is simply intended to buy a fixed dollar amount of a 40 delta SPY LEAP once a month. I select the first expiry that is at least 380 days out, and then find the contract that is closest to 0.4 delta. 

You can see that initially it found the right contracts, but over time the orders show that the selected contract drifted more and more ITM. Towards the end of backtest (Jun 2021) it is trading almost 70 delta calls instead of the intended 40. Am I not updating the universe correctly?

I can't figure out what's wrong.

I had to set the options universe filter to get (-10000, 10000) strikes because it seemed like the strikes were only chosen once in the beginning and that universe was never updated again. If I keep (-20, 20) strikes in the filter functions it fails to get closer to 40 delta.

Also for an algo that is meant to trade once a month, invoking OnData every minute seems excessive. Hence I added the check which skips rest of OnData compute if the current time is not 9:38am. 

Thanks

Author