Fix 4.3 LastQty

Imported from previous forum

Is lastqty ,tag 32 ,required on an execution filled trade. While in the doc. it has an “N” , that seems to apply only to certain types of trades such as
"29 - Order status request rejected for unknown order"
Looking at the very first item in the matrix , it seems it is required.

Does anyone do where I can get a definitive answer on this

Thanks
Howard

[ original email was from John Prewett - jprewett@lavatrading.com ]
> Is lastqty ,tag 32 ,required on an execution filled trade. While in the

doc. it has an “N” , that seems to apply only to certain types of trades
such as “29 - Order status request rejected for unknown order” Looking
at the very first item in the matrix , it seems it is required.

Does anyone do where I can get a definitive answer on this

Thanks Howard

LastQty is conditionally required in an ExecutionReport, depending on ExecType(Tag 150).

Using FIXimate for FIX.4.3 and displaying ExecutionReport, I can see the following text accompanying LastQty:

Quantity (e.g. shares) bought/sold on this (last) fill. Required if ExecType = Trade or Trade Correct. If ExecType=Stopped, represents the quantity stopped/guaranteed/protected for.

So if ExecType=Trade(F) or TradeCorrect(G), this field is required.

With regard to the examples (you quote example 29 from Chapter 4), I imagine for backwards compatibility (when it was called LastShares), you are welcome to set LastQty=0 for ExecType=New(0) as this is not a required field and indicates very little value.
Now I believe this is probably an error in example 29 as LastQty changed from being a mandatory field in an ExecutionReport in FIX.4.2 to being conditionally required in FIX.4.3. So you are welcome to send it in ExecTypes where it isn’t actually required or optional, but then it should contain zero and be of no consequence - at which point you would have been better to have not sent it!

I hope this helps.

JohnP

Is lastqty ,tag 32 ,required on an execution filled trade. While in
the doc. it has an “N” , that seems to apply only to certain types of
trades such as “29 - Order status request rejected for unknown order”
Looking at the very first item in the matrix , it seems it is
required.

Does anyone do where I can get a definitive answer on this

Thanks Howard

LastQty is conditionally required in an ExecutionReport, depending on
ExecType(Tag 150).

Using FIXimate for FIX.4.3 and displaying ExecutionReport, I can see the
following text accompanying LastQty:

Quantity (e.g. shares) bought/sold on this (last) fill. Required if
ExecType = Trade or Trade Correct. If ExecType=Stopped, represents the
quantity stopped/guaranteed/protected for.

So if ExecType=Trade(F) or TradeCorrect(G), this field is required.

With regard to the examples (you quote example 29 from Chapter 4), I
imagine for backwards compatibility (when it was called LastShares), you
are welcome to set LastQty=0 for ExecType=New(0) as this is not a
required field and indicates very little value. Now I believe this is
probably an error in example 29 as LastQty changed from being a
mandatory field in an ExecutionReport in FIX.4.2 to being conditionally
required in FIX.4.3. So you are welcome to send it in ExecTypes where it
isn’t actually required or optional, but then it should contain zero and
be of no consequence - at which point you would have been better to have
not sent it!

I hope this helps.

JohnP

Thanks,
One more question. What we actually get back is tag 150=2 and tag 32 is missing. There is no prior execution on the order (ack).

It seems we should always receive tag 32 on the last fill.

Thanks, let me know
Howard

[ original email was from John Prewett - jprewett@lavatrading.com ]
> Thanks, One more question. What we actually get back is tag 150=2 and

tag 32 is missing. There is no prior execution on the order (ack).

It seems we should always receive tag 32 on the last fill.

Thanks, let me know Howard

150=PartialFill(1) & 150=Filled(2) are deprecated with FIX.4.3 and have been replaced with 150=F(Trade).
So you shouldn’t receive them.
If you do receive them over a FIX.4.3 session, you should discuss the issue with the company that sent you the message.

Meanwhile, back in the real world, when you do happen to receive them, treat them as being 100% identical with 150=F(Trade), at which point LastQty(32) is a required field. So if you receive an ExecutionReport with 150=2 and the message doesn’t contain LastQty(32), that is an error and you should respond with a BusinessMessageReject(MsgType=j) or a session level Reject (MsgType=3). Preferably a BusinessMessageReject.

JohnP