Fully automated futures trading

Again thanks for the insights GAT.

1) Yup I do believe your in-house algos will do better than outsourced solutions. Even if someone has a slightly better algo, I doubt it's worth what they charge you for.

2) Interesting to see ultimately who's holding opposite positions against CTAs. I have no idea, but my guess is that there are enough random players out there to absorb the flow over a long enough time?

3) Yes I agree with looking at SR/instruments makes the most sense. I'm not sure if this can always be calculated/estimated though, depending on how your 'signal' is generated. E.g. Say I believe there is mean-reversion in ES/NQ spread, but splitting the SR in half may not really make sense.

In the case of (3) I'd treat the spread as a synthetic instrument, and calculate it's costs accordingly.

GAT
 
- so you mean there's never a good reason to use market orders, and even if you just want a fast guaranteed fill it's still better to submit a limit order which crosses the spread but will not get out of it by a catastrophic amount? (e.g. if the spread is 110/112 and I want to buy at market, it's better to submit a limit order at, say 114, and I'll still most likely get a fill at 112, and if something goes wrong I get a partial fill at 112\113\114 but never worse than that)? - Sure, makes sense..
In fact, I'm thinking that at some point I'll add ICE-futures into the system, without paying for the real-time data (the only way they get that 200$\month is from my cold dead hands! :) )., which means I will have 15 minute delays for every bid\ask update and will have to deal with this somehow.. One simple approach could be to actually change nothing and keep using the same algo, and just pretend that I have a reeeally big internet latency from my provider. Or I could use some IB's algo orders, or just as you're proposing here, submit limit-orders just outside of the spread (towards a worse price from my perspective), but at least limiting the worst-case..

For this scenario, you might want to look into Market-to-Limit (MTL) orderTypes, at IB, if you haven't already. This ensures that any subsequent fills after a initial partial fill will be no worse than the initial fill. It doesn't deal with spoofing, but I will leave that to the SEC to deal with.
 
I've had similar thoughts about adding futures without real time data. Problem is, if your price is too far away from the current spread (which you can't see) the order will be rejected. Do IB have an order type which is just 'put in a limit at the current side eg buy at the offer, sell at the bid'? Because that would solve the problem.

GAT

For this scenario, you might want to look into Market-to-Limit (MTL) orderTypes, at IB, if you haven't already. This ensures that any subsequent fills after a initial partial fill will be no worse than the initial fill. It doesn't deal with spoofing, but I will leave that to the SEC to deal with.

Yes, there's actually several order types which seem suitable. Though, with all of them there will be a risk that in that 15 minute delay the price(whole spread) moved to some "very wrong direction" and we don't actually want to buy\sell at this price this anymore., But if the signal is calculated only daily anyway, 15 minute is really nothing.

here's the IB's general description page (filer by "futures"):
https://www.interactivebrokers.ca/en/index.php?f=4985
and the actual API code for how to submit these different types:
https://interactivebrokers.github.io/tws-api/basic_orders.html

Market-to-Limit seems exactly what Rob is describing, it attempts to execute at current market and converts to limit if only partially filled (https://www.interactivebrokers.ca/en/index.php?f=597)
But there's also these 2 order types which allow to specify an offset (towards a better price) from either bid\ask or mid-point:
Snap to Market: https://www.interactivebrokers.ca/en/index.php?f=5933
Snap to Midpoint: https://www.interactivebrokers.ca/en/index.php?f=5934

- I also checked if it's possible to make the offset negative (to essentially allow a limited worse-than-market execution) - TWS doesn't allow this, but it does allow 0 offset, which essentially transforms "Snap to Market" to "Market-to-Limit" and allows to place limit order to the exact current mid-point with "Snap to Midpoint".

Interestingly, "peg" order types which continue to move with the price aren't available for futures, these "snap" orders don't move with the price but stay at the same level that existed during submission., which is still good enough for us..

But, there should still be some logic to cancel\resubmit these orders if they don't execute in a certain amount of time, although, I'd imagine that Market-to-Limit or Snap-to-Market with zero offset should almost always execute immediately if we're just buying 1-3 contracts at a time..
 
Hello Rob,

Suppose you were starting trading today. A lot of commodity markets had a good run up and are at "inconvenient" highs right now. You would get max signals on a lot of stuff. Would you follow it blindly and enter the markets as the system tells you or would you consider another approach? Why?
 
Hello Rob,

Suppose you were starting trading today. A lot of commodity markets had a good run up and are at "inconvenient" highs right now. You would get max signals on a lot of stuff. Would you follow it blindly and enter the markets as the system tells you or would you consider another approach? Why?

I'd do what the system tells me.... having said that I wouldn't deploy all my money in one go; I'd probably add instruments and potentially risk capital gradually. But that's about reducing operational risk rather than market risk.

GAT
 
I'd do what the system tells me.... having said that I wouldn't deploy all my money in one go; I'd probably add instruments and potentially risk capital gradually. But that's about reducing operational risk rather than market risk.

GAT

Thank you for your response. Would you mind elaborating on what you mean by operational risk? A risk of mistakes having to open so many positions in one day?
 
@globalarbtrader do you use any sort of position check?
1. you should be invested in X, but you're not (reason: bad connection, maintenance, holiday ...)
2. you shouldn't be invested in X anymore, but you still are (reason: bad connection, maintenance, holiday ...)
 
Back
Top