A batch of 4.2 questions - mainly clarifying language in spec

Imported from previous forum

[ original email was from John Hardman - yiq12@dial.pipex.com ]
I just need to clarify various parts of the FIX 4.2 specification so that I can ensure that my validation code is correct. Mainly, but not exclusively, a case of clarifying language that is open to interpretation. Would be appreciated if each of these points could be answered, as well as those questions posted previously that remain unanswered.

Thanks in advance,

John Hardman.

Question #1

In the “Market Data - Snapshot / Full Refresh” and “Market Data - Incremental Refresh” messages, the comments for field 286 (OpenCloseSettleFlag) say “Used if MDEntryType = Opening Price(4), Closing Price(5), or Settlement Price(6)”.

I just want to confirm the meaning of the word “Used” – presumably in this context it means that field 286 MUST appear if MDEntryType is 4, 5 or 6 and MUST NOT appear otherwise. May seem a minor point but I want to get my validation right.

Question #2

In the Mass Quote message the comments for field 296 (NoQuoteSets) say “Defaults to 1 quote set if not set”. Given that this is a mandatory field what is meant by “if not set” – the field must exist and as has been stated previously fields cannot have empty values.

Question #3

In the Mass Quote message various fields (188, 189, 190, 191) have the comment “May be applicable for F/X quotes”. Presumably this means that these fields may be present if SecurityType = “FOR” but will not be present otherwise.

Similarly for fields (e.g. 64) where the comment says “Can be used with forex quotes” presumably this also means these fields may be present if SecurityType = “FOR” but will not be present otherwise.

Question #4

In the Execution Report message the comment for field 38 (OrderQty) says “Either CashOrderQty or OrderQty is required. Not required for a rejected cash order or an order ack for a cash order”. Is the intended meaning of this contradiction “Either CashOrderQty or OrderQty is required except in the cases of a rejected cash order or an order ack for a cash order” ?

Also, what is it in the Execution Report that identifies it as being a cash order or a rejected cash order ?

Question #5

In the Execution Report message the comment for field 32 (LastShares) says “Not required ExecTransType = 3 (Status)”. Does this mean that LastShares is required if ExecTransType <> 3 ?

Same question applies to field 31 (LastPx).

Question #6

In the text for Execution Reports a GT Order is defined by the following text;

“The underlying business assumption of orders that can trade over multiple days, such as GTC and Good Till Date orders expiring on a future trading date (henceforth referred to as GT orders)”

So if I look at TimeInForce (field 59), values of 1 and 6 are GTOrders. Do any of the other values represent GTOrders ?

Question #7

In various messages including “New Order – Single” the comment for the LocateReqd field (field id 114) says “Required for short sell orders”. To check for short sell orders I look at the Side field (field id 54), but do I need to check for just “Sell short” or do I also need to check for “Sell short exempt” ? What is the difference between “Sell short” and “Sell short exempt” ? Exempt from what ?

Question #8

In the “New Order – Single” message the comment for Price (field 44) says “Required for limit OrdTypes”. To check for limit OrdTypes do I just check for the value 2, or also 4, 7, 8, B, F and possibly I ?

Question #9

In the “New Order – List” message the comment for SymbolSfx says “Can be repeated multiple times if message is related to multiple symbols”. How is this field repeated ? Presumably by having another repeat of the order repeating group (i.e. NoOrders goes up by one), but the language used is very unclear.

Applies to other fields too.

Question #10

Field 83 (RptSeq) is described as “Sequence number of message within report series”. Is the base value of this sequence number 0 or 1 ? I would assume 1 to be consistent with message sequence numbers but this needs to be stated.

Question #11

In the List Execute message (MsgType = L) the comment for field 391 (ClientBidID) says “Used with BidType=Disclosed to provide the sell side the ability to determine the direction of the trade to execute”. Does this mean that there should also be a BidType field in the List Execute message ?

Question #12

In the Allocation message (MsgType = J) the comment for field 72 (RefAllocID) says “Required for AllocTransType = Calculated, Replace, or Cancel”. In this context does “Calculated” include both “4 = Calculated (includes MiscFees and NetMoney)” and “5 = Calculated without Preliminary (sent unsolicited by broker, includes MiscFees and NetMoney)” ?

Same question applies for field 29 (LastCapacity) for which the comment says “Can be specified by broker for AllocTransTyp=Calculated”.

Question #13

There are some contradictions about when field 64 (FutSettDate) is required.

In the Field Definitions it says
“Required when SettlmntTyp = 6 (Future) or SettlmntTyp = 8 (Sellers Option)”

This is consistent with comments in the “New Order – Single”, “Execution Report” and “Order Cancel/Replace Request” messages.

However, neither the “Quote Request”, “Quote” nor “Mass Quote” messages contain a SettlmntTyp field (or SettlmntType as it is spelt in some places). These messages contain the comment “Can be used with forex quotes to specify a specific value date”, where a forex quote is presumably identifiable by checking the SecurityType field.

The “Allocation” message, contains the comment “Required with SettlmntTyp other than regular” which is also very different from what is stated in the Field Definitions.

A number of other messages contain the FutSettDate and SettlmntTyp fields but do not within the message description state anything about whether fields are required, presumably defaulting to the requirements stated in the Field Definitions.

Can this please be clarified.

[ original email was from Ryan Pierce - rpierce@taltrade.com ]
> Question #1
>
> In the “Market Data - Snapshot / Full Refresh” and “Market Data - Incremental Refresh” messages, the comments for field 286 (OpenCloseSettleFlag) say “Used if MDEntryType = Opening Price(4), Closing Price(5), or Settlement Price(6)”.
>
> I just want to confirm the meaning of the word “Used” – presumably in this context it means that field 286 MUST appear if MDEntryType is 4, 5 or 6 and MUST NOT appear otherwise. May seem a minor point but I want to get my validation right.
>

The original intent is that field 286 MAY appear if MDEntryType is 4, 5, or 6. Field 286 MUST NOT appear otherwise.

I.e. you can specify MDEntryType 4, 5, or 6 without specifying OpenCloseSettleFlag. However OpenCloseSettleFlag has no meaning if MDEntryType != 4, 5, or 6.

> Question #5
>
> In the Execution Report message the comment for field 32 (LastShares) says “Not required ExecTransType = 3 (Status)”. Does this mean that LastShares is required if ExecTransType <> 3 ?
>
> Same question applies to field 31 (LastPx).

Correct. Standard practice is to set the fields to 0 if it isn’t relevent and ExecTransType != 3.

> Question #6
>
> In the text for Execution Reports a GT Order is defined by the following text;
>
> “The underlying business assumption of orders that can trade over multiple days, such as GTC and Good Till Date orders expiring on a future trading date (henceforth referred to as GT orders)”
>
> So if I look at TimeInForce (field 59), values of 1 and 6 are GTOrders. Do any of the other values represent GTOrders ?

Possibly GTX. I’ve heard some debate back and forth on the subject on whether GTX orders are valid only for the current day, or behave like GTC. I’m not sure I recall whether there was a definitive answer, hence in writing that part of the spec we didn’t explicitly list GT TimeInForce values.

> Question #7
>
> In various messages including “New Order – Single” the comment for the LocateReqd field (field id 114) says “Required for short sell orders”. To check for short sell orders I look at the Side field (field id 54), but do I need to check for just “Sell short” or do I also need to check for “Sell short exempt” ? What is the difference between “Sell short” and “Sell short exempt” ? Exempt from what ?

LocateReqd is conditionally required for Sell short exempt in addition to Sell short. Both are “short sell orders” as both are selling shares of stock you don’t own.

US equities exchanges impose rules that prevent people from selling short on a downtick and driving prices down.

Certain people are exempt from that restriction, hence the need for Sell short exempt. I don’t know the specifics, but I believe specialists are exempt, as are options market makers hedging their options positions by shorting the underlying stock.

> Question #8
>
> In the “New Order – Single” message the comment for Price (field 44) says “Required for limit OrdTypes”. To check for limit OrdTypes do I just check for the value 2, or also 4, 7, 8, B, F and possibly I ?

Price is required for all the OrdType values you mention, including I. It can be specified optionally for P (Pegged). I’m not sure about some of the other types. (I.e. I have no idea what the On Close value means, given that both Market On Close and Limit On Close are defined.)

Also, on the subject of pegged orders, there’s an omission in the 4.2 spec. It states in the description of OrdType in New Order-Single that if OrdType = P: (requires ExecInst = L, R, M, P or O)

This list must be expanded to include T and W, two new pegging types introduced in FIX 4.2.