How to execute a basket order only if all legs in the basket are execute else execute none?

lets say if i am executing a multi legged strategy like bull call spread, if i do not have enough margin/cash in my account i do not want any of the leg from this basket to execute, currently i do not see a way to enforce this.
this is what i had.
this is my case
before creating basket: already sold ATM call (x qty)

basket:

  1. y qty of ATM strike call: SELL
  2. (x+y) qty far OTM strike call: BUY
  3. toggle to mark to use the existing position: TRUE

expectations: since the existing positions are considered, the existing position will be converted to a bull call spread, and margin will be freed for the new y qty bull call spreads and the whole order will go through

actual: only the buy orders went thorough and the Y sell were rejected due to margin.
i am now sitting on just far OTM call BUY which i included only to hedge/reduce margin.

what i expected here was either the whole order will go through or no legs will execute.

i currently do not see an option to enforce all or none leg execution in the basket order in the mobile kite app.

@Arockiya_Raja does this option not exist?
if yes, where is it?
if No, can Zerodha consider adding it?

1 Like



In this case, the order of execution matters. Since the basket placed the sell orders before the corresponding buy orders, the required margin wasn’t available, which is why the sell leg was rejected.

To avoid this, arrange the basket so that the buy leg is placed before the sell leg. Once the buy order is executed, the spread is formed, and the required margin is reduced, allowing the sell leg to go through more smoothly.

Basket orders currently execute the legs sequentially based on the order you’ve arranged them; they don’t support all-or-none kind of execution.

@KarthikAcharya , would you please consider adding all or none?

Appreciate your feedback. We’ll share it with our team for review.