Order Quantity Types

Imported from previous forum

Can we send other quantity types to FIX?
e.g currently we are sending SHARES.

Can we also send things like:
Contracts? USD equivalent.
Can we say something like an order worth $500 of MSFT ?

[ original email was from merlin beake - merlin.beake@reuters.com ]
As I understand it, OrderQty (tag 38) does not imply shares. Fix was originally used for Equity Trading, but can be used for other asset classes. SecurityType (tag 167) specifies which asset class you are trading. OrderQty is a quantity of whatever is being traded, which is not necessarily shares. Similarly (and perhaps more confusingly named) LastShares (tag 32) on an Execution Report is the executed quantity of whatever is being traded.

We happily trade without using “Shares” (tag 53) at all. Looking at the spec, tag 53 seems to be related to allocations; I can’t really comment on it further than that.

In Fix 4.3, CashOrderQty (tag 152), along with OrderQtyType (tag 9509), is used to trade "Collective Investment Vehicles", i.e. Mutual Funds, by value. That is, you can place an order for $5000 of a particular Mutual Fund. You can also choose to sell 50% of your holding in a particular Mutual Fund; OrderQtyType specifies whether CashOrderQty means a percentage of a holding or a cash amount.

The spec seems to allow the possibility of buying $500 of MSFT (152=500, I believe 9509 would not be present). I am unaware of this being common practice when trading equities however. Be aware that if it is allowed, you open yourself up to problems with the mandatory field LeavesQty (tag 151) on partial fills, as the calculation LeavesQty = OrderQty - CumQty simply doesn’t work if you specified a CashOrderQty and not an OrderQty.

I’ve yet to see a completely satisfactory solution to this problem. Comparing a quantity with a value doesn’t work; comparing a value with a value should work, but there may be issues with rounding, cross currency, and whether commission is or is not included in the value specified in CashOrderQty. In any case, the current Fix spec doesn’t cover this, so you are in uncharted waters.

LeavesQty on CashOrderQty trades is not really an issue with trading open ended Mutual Funds, because they never partially fill.

Hope this helps,

merlin

>
> Can we send other quantity types to FIX?
> e.g currently we are sending SHARES.
>
> Can we also send things like:
> Contracts? USD equivalent.
> Can we say something like an order worth $500 of MSFT ?
>
>

FIX 4.1 introduced CashOrderQty which can be used on the order to specify a monetary value (i.e. USD equivalent) “worth of” a security to purchase. Sellside support and rules for rounding, lot size, etc. would need to be arranged out-of-band. If CashOrderQty is used, the sellside effectively “translates” this value into a OrderQty (i.e. shares) quantity and uses that quantity as the basis for the order (order quantity does not increase/decrease if the security’s per-unit price changes).

The OrderQty, LastShares, Shares, etc. fields were renamed in FIX 4.3 to eliminate equity-specific names were applicable such that LastShares is now LastQty, Shares is now Quantity, etc. Prior to FIX 4.3 it was possible to provide a non-share quantity in these fields (such as contracts for futures), however, the spec did not provide a way to explicitly state the type of quantity representation. FIX 4.3 introduced the OrderQtyType field which allows for this.

>
> Can we send other quantity types to FIX?
> e.g currently we are sending SHARES.
>
> Can we also send things like:
> Contracts? USD equivalent.
> Can we say something like an order worth $500 of MSFT ?
>
>

[ original email was from merlin beake - merlin.beake@reuters.com ]
That’s very interesting, and (I think) explains my question about how LeavesQty is supposed to be dealt with. Can I just confirm the expected fields in the case of a Partial of a CashOrderQty order?

Order: CashOrderQty=5000

If there is a partial fill of 200 shares at 10, would you expect to see an OrderQty and a CashOrderQty on the Execution Report:

Execution: LastShares=200 LastPx=10 OrderQty=500 CashOrderQty=5000 CumQty=200 LeavesQty=300

And then a fill after the price has changed:

Execution: LastShares=300 LastPx=9 OrderQty=500 CashOrderQty=5000 CumQty=500 LeavesQty=0

Is that correct? The order actually filled for less than $5000, but it filled for the OrderQty calculated by the broker at the prevailing market price at the time of the first partial?

merlin

> FIX 4.1 introduced CashOrderQty which can be used on the order to specify a monetary value (i.e. USD equivalent) “worth of” a security to purchase. Sellside support and rules for rounding, lot size, etc. would need to be arranged out-of-band. If CashOrderQty is used, the sellside effectively “translates” this value into a OrderQty (i.e. shares) quantity and uses that quantity as the basis for the order (order quantity does not increase/decrease if the security’s per-unit price changes).
>
> The OrderQty, LastShares, Shares, etc. fields were renamed in FIX 4.3 to eliminate equity-specific names were applicable such that LastShares is now LastQty, Shares is now Quantity, etc. Prior to FIX 4.3 it was possible to provide a non-share quantity in these fields (such as contracts for futures), however, the spec did not provide a way to explicitly state the type of quantity representation. FIX 4.3 introduced the OrderQtyType field which allows for this.
>
> >
> > Can we send other quantity types to FIX?
> > e.g currently we are sending SHARES.
> >
> > Can we also send things like:
> > Contracts? USD equivalent.
> > Can we say something like an order worth $500 of MSFT ?
> >
> >
>

Merlin, in your example you’re missing the Execution Rpt with OrdStatus=“New” that I think helps explain it. Assuming “the price” sellside will use for the CashOrderQty conversion upon receipt of the order is 10, then you would have:

-> New Order Single: CashOrderQty=5000

<- ExecutionRpt: OrdStatus="New", ExecType="New", CashOrderQty=5000, OrderQty=500, LeavesQty=500

<- ExecutionRpt: OrdStatus="Partially Filled", ExecType="Partial Fill", CashOrderQty=5000, OrderQty=500, LastShares=100, LastPx=10.25, LeavesQty=400, CumQty=100, AvgPx=10.25

Note that the partial fill had a price of 10.25. This would not "automatically" alter the OrderQty for the order, though.

I’m not sure that we currently have a CashOrderQty usage example in the “Order State Change Matrices” but we should add one.

> That’s very interesting, and (I think) explains my question about how LeavesQty is supposed to be dealt with. Can I just confirm the expected fields in the case of a Partial of a CashOrderQty order?
>
> Order: CashOrderQty=5000
>
> If there is a partial fill of 200 shares at 10, would you expect to see an OrderQty and a CashOrderQty on the Execution Report:
>
> Execution: LastShares=200 LastPx=10 OrderQty=500 CashOrderQty=5000 CumQty=200 LeavesQty=300
>
> And then a fill after the price has changed:
>
> Execution: LastShares=300 LastPx=9 OrderQty=500 CashOrderQty=5000 CumQty=500 LeavesQty=0
>
> Is that correct? The order actually filled for less than $5000, but it filled for the OrderQty calculated by the broker at the prevailing market price at the time of the first partial?
>
> merlin
>
> > FIX 4.1 introduced CashOrderQty which can be used on the order to specify a monetary value (i.e. USD equivalent) “worth of” a security to purchase. Sellside support and rules for rounding, lot size, etc. would need to be arranged out-of-band. If CashOrderQty is used, the sellside effectively “translates” this value into a OrderQty (i.e. shares) quantity and uses that quantity as the basis for the order (order quantity does not increase/decrease if the security’s per-unit price changes).
> >
> > The OrderQty, LastShares, Shares, etc. fields were renamed in FIX 4.3 to eliminate equity-specific names were applicable such that LastShares is now LastQty, Shares is now Quantity, etc. Prior to FIX 4.3 it was possible to provide a non-share quantity in these fields (such as contracts for futures), however, the spec did not provide a way to explicitly state the type of quantity representation. FIX 4.3 introduced the OrderQtyType field which allows for this.
> >
> > >
> > > Can we send other quantity types to FIX?
> > > e.g currently we are sending SHARES.
> > >
> > > Can we also send things like:
> > > Contracts? USD equivalent.
> > > Can we say something like an order worth $500 of MSFT ?
> > >
> > >
> >
>