1
$\begingroup$

I know this is kind of a very open ended question but I am struggling with the following problem:

I have a futures trading system (operating on very liquid markets) that generates a prediction every hour. My current execution strategy starts with placing a limit order on the best bid or ask (depending on direction) and waiting for n minutes (currently 5) before the order switches to a market order. If within those 5min the price is moving too many ticks away, the algo immediately switches to a market order.

Let's assume for now that the best bid/ask size can usually absorb my order size.

I am constantly getting quite severe slippage of 2-4 times the spread. So I am wondering about some general approaches for improving an execution strategy.

First there would be the question on how to improve the parameters for the current execution algorithm (i.e. how long to wait, where to place the initial limit, etc.). Here, I already analyzed tick data and checked the statistics how often certain levels are hit, etc. From that I inferred the parameters for the live system. Since the live systems seems to execute worse than expected, I assume that my participating in the market is recognized and exploited.

Are there some general guidelines, books, papers that give hands-on advice on how to improve execution? Especially if some heuristics can already be learned from past tick data because testing every variation with real money is a bit expensive.

Thanks a lot!

$\endgroup$
1
  • $\begingroup$ A strategy that is/used to be popular is start with a limit buy at the ask, raise the limit if the ask moves up, after a few minutes if still not filled raise the limit to the bid. Dont use market order. (Don't know if this would work well for you, though. The markets are ever changing). Another thing: are you buying ever hour on the hour? Maybe have an offset such as 3.5 minutes before the hour, just so you are more random in what you do. $\endgroup$
    – nbbo2
    Nov 9, 2023 at 13:48

1 Answer 1

0
$\begingroup$

Sometimes there's nothing you can do about it. In order to know if this is one of those situations, you should take into account your latency and order size.

  • If your order size is negligible compared to the average trade size, then send a market order instantly.
  • If your order size is large compared to the average trade size, then you should expect some market impact and take this into account in your backtest.
  • If your latency is large, then you should consider placing your orders at different prices. That would be the signal price +- how much the market moves during your latency. For safety, you can add one or two ticks to the best bid/ask and if you are still profitable then it's just your transaction cost.

The issue I see with your approach is that if the market is moving in your favor you are getting filled in very unfavorable prices (due to market order and that 5 min wait), and if it is moving against you, you are getting filled. So, if you have high win ratio, a simple market order is a solution here.

I personally prefer sending aggressive limit order over market order almost all the time.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.