I have to share how frustrated I am with the API. It seems like options trading isn't well thought out. I've spent so much time debugging obscure error messages and trying to find example code than on the results of the backtests. As much time as I've spent on it, I don't feel like I understand it any better. It's the opposite, the more time I've spent with, the more confusing and undocumented intermediate to advanced parts are. Your only hope is maybe a discussion post maybe talking about it.

At first, I thought the issue was Python, so I switched to C#. That helped a little with the various runtime errors.

Why is it so difficult to manage the legs of an options strategy? For example, closing one side of an IronCondor should be a single API call. Maybe these should even be built into the OptionStrategy object itself.

I often ask myself, why isn't this built-in? Why do I have to write a get-by-delta method? Why do I have to write a find-by-strike price method? There is so much repeated code in the examples that someone should realize there's a need to have this be common code in the API.

Some of these problems could be improved with better documentation. There are common option actions like rolling where there could be better documentation or, better yet, should be built into the API. There is documentation for HelloWorld-level strategies but nothing for even intermediate-level strategies. Where is the example of an IronCondor with basic stop loss and profit taking?

Then you get to weird object differences such as OptionLeg and Option.Leg. I can understand the need for two different objects, but are there no API helper functions to convert between them? If OptionStrategy stores as OptionLeg but ComboLegLimitOrder requires Option.Leg, why isn't there a good way to convert them?