Modelling order execution for futures exchanges

Quote from topsy_1:

Questions now arises in that how can I use this to model limit orders? My strategy is very real-time and utilises limit orders for entry and exit.

I assume that a limit order remains as such until price hits that level and then it turns into a market order?

Anyone have any insights into how a limit order is treated in the book in a futures exchange?

They use first price and then time priority rules to match incoming orders with resting orders in the book. If the incoming order is a market order or a limit order that can trade immediately, it trades with the opposite order in the book at the best price. If there is more than one order at the best price, the one that was there first gets the fill. If the incoming order is a limit order and can't be matched, it goes into the book behind resting orders at that price that were there first.

There is a book by Larry Harris that has pretty good explanations of this stuff.
 
Futures Exchanges, I guess I know something about this.

In terms of Fill Priority, what Black Diamond described is called the FIFO (first-in-first-out) matching Algorithm. But a lot Futures products such as the EuroDollar and Treasury complex uses the Pro-Rata matching algorithm, which is essentially a first-price, then *size"-oriented allocation of the first FIFO "window". I will let the official CME description do the explanation.

http://www.cme.com/trading/get/abt/functionality/allocation.html

and FIFO

http://www.cme.com/trading/get/abt/functionality/fifo.html

Also, when the OP asked for a 10 contract trade at 99.00, where it is filled first a 5 contract, then a second contract, and some1 replied there will be two trade message in the raw tick. The real answer is, "not necessarily".

Yes, *in absence* of other fills at the same time, there will be 2 trade messages (in CME Globex, under RLC, these would be M6 messages). However, if there are other trades in 99.00 at the same time, this will NOT be the case, see the CME document on "M6 Message Compression":

http://www.cme.com/files/SDKMDPCore.pdf

Basically, *IF* the first 5 contract trade is the 1st order in the matching queue, then it will be disseminated, and then *IF* there are no other trades at 99.00, the 2nd trade message will be send out, otherwise, it will be grouped.

Let's say your 10 contract trade is still a 5-5 fill sequence, but there is a 100 contract fill immediately after (at the same time). The trade message sent out by Globex (or LIFFE or Eurex, they all behave pretty much the same) will be:

5 at 99.00
105 at 99.00

Oh, ALL of the above assumes you have access to the RAW exchange feeds (Globex, LIFFE Connect, etc). there are only a handful of brokers and vendors that does not filter the raw ticks from the exchange, and forward it to the clients.

Quote from black diamond:

They use first price and then time priority rules to match incoming orders with resting orders in the book. If the incoming order is a market order or a limit order that can trade immediately, it trades with the opposite order in the book at the best price. If there is more than one order at the best price, the one that was there first gets the fill. If the incoming order is a limit order and can't be matched, it goes into the book behind resting orders at that price that were there first.
 
Quote from topsy_1:

PocketChange (and all) many thanks for your contribution. It all makes sense and is a real eye opener- this discussion has led me to another level.

I've now written a quick n dirty (will fix up later) data engine which captures and stores real time Level II DOM data. This essentially gives me the executable size for each price level in market at a given time.

Next stage is to synthesise a theoretical executable price feed by sampling every x, where x is 'number of contracts'. This will give me 'intra tick' ticks! Which can be directly used to model executions. Great stuff.

Questions now arises in that how can I use this to model limit orders? My strategy is very real-time and utilises limit orders for entry and exit.

I assume that a limit order remains as such until price hits that level and then it turns into a market order?

Anyone have any insights into how a limit order is treated in the book in a futures exchange?

Why would you slow executions and use limit orders when you have built an executable price feed at market? The data you have is much more powerful. Focus on streamlining order execution and position management... ie. retrieving fill data and adjusting for rejects / spilage as fast as possible.

Execution at market is typically 1/10 of a second... Limit orders are delayed and matched based on fifo/exchange fill algos and/or broker counter party fullfillments.

Using Limit orders with algo trading introduce variables of chance of filling versus market orders definitive execution. The integrity and advantage of using realtime level II Dom data is compromised... Limit order fill delays render your pricing data historic rather than real time... Like using T&S data for trading decisions... few beats behind the market.

You have built a real time executable feed and being able to execute using market orders is to your advantage.
 
Quote from PocketChange:

Why would you slow executions and use limit orders when you have built an executable price feed at market?
...
You have built a real time executable feed and being able to execute using market orders is to your advantage.

“PocketChange” thank you again for the information.

Based on what you’ve said my reasons for exclusively using limit orders may be flawed. Let me explain why - I’m using limit orders to guarantee execution price. This is because by the time my system gets a tradable signal from the executable price feed and then acts upon it by sending a market order, the market may have moved and the order may get filled at a different price (highly probable) due to the latency between these events.

My thinking is a limit order will mitigate this risk by ensuring execution at a pre-defined price. However, if the limit order is not executed, i.e. the market has moved away. The system cancels the limit order.
 
Back
Top