Working on some execution optimisation related backtesting. I have so far been executing with market orders only. Going towards higher lot sizes, I'd like to optimise for minimal slippage.

First off, on NSE, if you place a market order, you get filled at the best bid/ask right?

If we want to optimise this, the first non-creative idea one can think of is, slicing the order into different lot sizes, and placing a limit order for each slice at the mid point of current best bid & ask.

But this requires your latency to be the least.
Why would latency affect it?

I looked at tick historical data, and there are more than 18-20 ticks in a second (auction and quote combined).

Even if you keep 10 ticks per second, your best bid/ask can shift from the time you place to the time exchange receives the order.
So, the next best thing that people can do is place tranches of orders every 1s, 3s, 5s, 10s, 15s - in their preferred time range, and get filled at the midpoint or best-bid+1/2/3/4/5 in the depth.

What you need is liquidity.
But if you're trading breakouts, then it's highly likely that your limit orders may not get filled if the action is too fast.

So, a retry mechanism is required in such cases.

If nothing works, you convert your orders to marketable and get filled at worse slippage.
But such scenario happens like once or maybe twice a month. 90% days, you would have your limit orders filled - this is what I have learnt from other people.

Now, what I am trying to do is to understand whether I can minimise slippage working with market orders only.

More from Shravan Venkataraman 🔥🚀💰

More from Trading

You May Also Like