Special market :NewOrderSingle(D)

Imported from previous forum

How to specify NewOrderSingle message parameters
for sending an order type(40)
like OrdType(40): K-Market With Left Over as Limit (market order with unexecuted quantity becoming limit order at last price)

but with unexecuted quantity becoming limit order
at last price increase/decrease 1 spread

Many thanks

This can (almost) be covered by the TriggeringInstruction component:
40 OrdType = 1 = Market
1100 TriggerType 5 = On Order Entry or order modification entry
1101 TriggerAction 2 = Modify
1110 TriggerNewPrice
1111 TriggerOrderType = 2 = Limit
You have to “cheat” a little bit with TriggerNewPrice because you want to express TriggerNewPriceOffset which does not exist. The Rules of Engagement could state that TriggerNewPrice is not an absolute price but a delta of 1 spread (tick?). You should also clarify that this trigger is only checked AFTER an attempt to execute the market order to get the effect of only the remaining qty being converted.
Regards,
Hanno.

How to specify NewOrderSingle message parameters
for sending an order type(40)
like OrdType(40): K-Market With Left Over as Limit (market order with unexecuted quantity becoming limit order at last price)

but with unexecuted quantity becoming limit order
at last price increase/decrease 1 spread

Many thanks

[ original email was from John Harris - john.harris@bondmart.com ]
I would just add to Hanno’s comments that this order type is non-sensical and should never have made it into the FIX protocol; using it is a bad idea and begs for trouble. Anyone using such an order is, sorry, an ass.

A market order is an instruction to buy (sell) a given quantity of a good immediately, at the best price possible, but without any specification as to price. This order type has no legitimate place in two-sided, continuous-auction market such as that implemented by most matching engines. At best, on arrival of such a stupid order, they can sweep through orders on the opposite side of the book to fill the order. These contra-orders may or may not be sufficient to fill the market order. If not, then defaulting to the “last price,” which could well be a terrible price in relation to the best prior price, could well violate the law and will certainly violate any reasonable facsimile of fiduciary duty.

This order type is in fact an artifact of poor market design and in particular, ill-conceived matching engines.

Using market orders is stupid in an electronic trading context, even without the limit conversion feature for unfilled quantities. This order type is best excluded from any FIX implementation.

How to specify NewOrderSingle message parameters
for sending an order type(40)
like OrdType(40): K-Market With Left Over as Limit (market order with unexecuted quantity becoming limit order at last price)

but with unexecuted quantity becoming limit order
at last price increase/decrease 1 spread

Many thanks

[ original email was from Greg Wood - greg.wood@credit-suisse.com ]
Hi John, Sayamol,

Market orders are always going to be controversial, but there are times when a trader needs to get done and will use a market instruction to facilitate that. The challenge is to provide protection so as not to cause adverse impact to the marketplace, or accidentally create a black hole that absorbs all liquidity because it sits unseen on the book.

In my experience there at least 5 ways of providing protection for trading a market order …

The 1st is to avoid market orders completely. Several exchanges, particularly in Asia take this approach. ASX24 and HKFE do not support this order type during continuous trading - you are forced to use limit orders.

The 2nd approach is to provide the type of protection that Sayamol actually describes. Market orders can be sent to the exchange, but they either convert to a limit order if partially filled, usually at the last traded price, or if unfilled they convert to a price defined as a tolerable percentage away from a reference price. This approach is taken by derivatives exchanges such as CME or Eurex. Note that the conversion from market to limit is handled on the matching engine and is not synthesized by a broker. Such orders are usually supported by a regular FIX 40=1 ordertype and may generate an unsolicited amend to 40=2 and 44 as the protection price.

The 3rd approach is to cancel the unfilled portion of a market order immediately. Implicitly this is an IOC order. This is used on exchanges such as NYSE LIFFE. Other exchanges offer market orders only with an explicit IOC instruction, such as Taiwan.

The 4th approach is to use an algorithm. You can use a variety of tools to work an order with a market instruction on a venue, choosing the appropriate algo according to your appetite for impact, signal, patience, etc. You are then leaving the order to the discretion of the algo to work on the venue intelligently without creating the aforementioned liquidity black hole. It is also common to use algos to facilitate market order instructions on exchanges that do not support them natively. Note

The 5th way is to send your market order to a broker to work manually on your behalf. Pay them the premium to get you done at a good price.

Of course depending on the asset class not all of the above are available/applicable, but the drive towards electronification is well underway outside of the listed space and approaches like (2) or (3) are being implemented in FX, fixed income, etc. As markets become electronic, so the use of algos becomes a possibility.

Finally, whilst it may be possible to build a market-to-limit instruction using a variety of FIX tags, it really comes down to whether the venue or the broker understands the instruction. Most will not, and if they do support such an ordertype then they will usually have their own specification for how such an instruction should be received.

Regards,

  • Greg

I would just add to Hanno’s comments that this order type is non-sensical and should never have made it into the FIX protocol; using it is a bad idea and begs for trouble. Anyone using such an order is, sorry, an ass.

A market order is an instruction to buy (sell) a given quantity of a good immediately, at the best price possible, but without any specification as to price. This order type has no legitimate place in two-sided, continuous-auction market such as that implemented by most matching engines. At best, on arrival of such a stupid order, they can sweep through orders on the opposite side of the book to fill the order. These contra-orders may or may not be sufficient to fill the market order. If not, then defaulting to the “last price,” which could well be a terrible price in relation to the best prior price, could well violate the law and will certainly violate any reasonable facsimile of fiduciary duty.

This order type is in fact an artifact of poor market design and in particular, ill-conceived matching engines.

Using market orders is stupid in an electronic trading context, even without the limit conversion feature for unfilled quantities. This order type is best excluded from any FIX implementation.

How to specify NewOrderSingle message parameters
for sending an order type(40)
like OrdType(40): K-Market With Left Over as Limit (market order with unexecuted quantity becoming limit order at last price)

but with unexecuted quantity becoming limit order
at last price increase/decrease 1 spread

Many thanks

[ original email was from John Harris - john.harris@bondmart.com ]
Greg,

Sorry for my slow reply - thank you for yours.

Market orders never made sense outside of physical trading floors populated with “crowds” of traders. Even then, arguably, they made no sense.

With respect to presenting market orders to electronic matching engines, there is no reasonable controversy on the subject. One must misunderstand either market orders, matching engines, or both to have any doubt on the matter.

A market order is a primitive type. It takes no conditions, whether “fill or kill,” “immediate or cancel,” or other. It is a simple instruction. “Get me out (in) now.” It takes as arguments only instrument, side, and quantity. It allows no fills for less than the full, stated quantity. It admits of no delay in execution, other than the time required to communicate the order to the crowd and to receive the crowd’s response, which is always execution in full, at the best price the crowd offers. The entire point of a market order is a total concession of price to time, or - if you will - the unconditional elevation of time over price as priority for the order maker.

Once one knows what a market order is, if he also understands electronic matching engines, then he knows that market orders make no sense in electronic matching engines. They cannot be implemented as such.

Yes, sure, exchanges and other intermediaries today take other order types and call them market orders, but in doing so, they are in league with people who identify a dog as a cat.

Market orders are compatible with electronic trading only to the extent electronic means are used to route market orders to a real human being who can actually see a crowd of traders before him and present the order to the crowd. The people responsible for the FIX protocol should never have allowed into the protocol the routing of market orders to electronic matching engines, not one of which on earth is capable of executing them as commonly understood.

Of the five approaches you explicated, only the first is sensible. The second, fourth, and fifth having nothing in common with true market orders. The third comes closest, but is what you said it is: an IOC order, which is most definitely not a market order (which allows of immediacy, but not of cancellation).

Best,
John

Hi John, Sayamol,

Market orders are always going to be controversial, but there are times when a trader needs to get done and will use a market instruction to facilitate that. The challenge is to provide protection so as not to cause adverse impact to the marketplace, or accidentally create a black hole that absorbs all liquidity because it sits unseen on the book.

In my experience there at least 5 ways of providing protection for trading a market order …

The 1st is to avoid market orders completely. Several exchanges, particularly in Asia take this approach. ASX24 and HKFE do not support this order type during continuous trading - you are forced to use limit orders.

The 2nd approach is to provide the type of protection that Sayamol actually describes. Market orders can be sent to the exchange, but they either convert to a limit order if partially filled, usually at the last traded price, or if unfilled they convert to a price defined as a tolerable percentage away from a reference price. This approach is taken by derivatives exchanges such as CME or Eurex. Note that the conversion from market to limit is handled on the matching engine and is not synthesized by a broker. Such orders are usually supported by a regular FIX 40=1 ordertype and may generate an unsolicited amend to 40=2 and 44 as the protection price.

The 3rd approach is to cancel the unfilled portion of a market order immediately. Implicitly this is an IOC order. This is used on exchanges such as NYSE LIFFE. Other exchanges offer market orders only with an explicit IOC instruction, such as Taiwan.

The 4th approach is to use an algorithm. You can use a variety of tools to work an order with a market instruction on a venue, choosing the appropriate algo according to your appetite for impact, signal, patience, etc. You are then leaving the order to the discretion of the algo to work on the venue intelligently without creating the aforementioned liquidity black hole. It is also common to use algos to facilitate market order instructions on exchanges that do not support them natively. Note

The 5th way is to send your market order to a broker to work manually on your behalf. Pay them the premium to get you done at a good price.

Of course depending on the asset class not all of the above are available/applicable, but the drive towards electronification is well underway outside of the listed space and approaches like (2) or (3) are being implemented in FX, fixed income, etc. As markets become electronic, so the use of algos becomes a possibility.

Finally, whilst it may be possible to build a market-to-limit instruction using a variety of FIX tags, it really comes down to whether the venue or the broker understands the instruction. Most will not, and if they do support such an ordertype then they will usually have their own specification for how such an instruction should be received.

Regards,

  • Greg

I would just add to Hanno’s comments that this order type is non-sensical and should never have made it into the FIX protocol; using it is a bad idea and begs for trouble. Anyone using such an order is, sorry, an ass.

A market order is an instruction to buy (sell) a given quantity of a good immediately, at the best price possible, but without any specification as to price. This order type has no legitimate place in two-sided, continuous-auction market such as that implemented by most matching engines. At best, on arrival of such a stupid order, they can sweep through orders on the opposite side of the book to fill the order. These contra-orders may or may not be sufficient to fill the market order. If not, then defaulting to the “last price,” which could well be a terrible price in relation to the best prior price, could well violate the law and will certainly violate any reasonable facsimile of fiduciary duty.

This order type is in fact an artifact of poor market design and in particular, ill-conceived matching engines.

Using market orders is stupid in an electronic trading context, even without the limit conversion feature for unfilled quantities. This order type is best excluded from any FIX implementation.

How to specify NewOrderSingle message parameters
for sending an order type(40)
like OrdType(40): K-Market With Left Over as Limit (market order with unexecuted quantity becoming limit order at last price)

but with unexecuted quantity becoming limit order
at last price increase/decrease 1 spread

Many thanks