Imported from previous forum
[ original email was from John Harris - john.harris@bondmart.com ]
What is the proper use of the default value “0” (for “Successful”) for tag 751 (“TradeReportRejectReason”) in the Trade Capture Report Ack (“AR”) message?
As a related matter, if the value of the TrdRptStatus field (tag 939) is set to “1” (“Rejected”), is “0” a sensible value for TradeReportRejectReason?
Thank you for your help.
I can only guess. 751 is optional and defaults to 0 if absent, meaning that everything is ok, no actual rejection. However, the default has an impact when rejecting a TCR.
Setting 939 to 1=Reject implicitly forces you to send a reject reason with 751 as you would be sending 0=Successful if you omitted 751 which does not make sense.
Newer fields have been designed to be more generic, i.e. the response comes with XXXStatus and XXXResult fields. XXXStatus responds on a high level (e.g. accepted, rejected) whereas XXXResult gives you details. 0=Successful is typically the only detail for XXXStatus being “accepted”. Other values are usually only for the negative case, i.e. XXXStatus being rejected. However, it is more generic to use XXXResult than XXXRejectReason as it allows you to model flavors. It also gets philosophical when you start to debate whether not finding an entity should be a rejection reason or not. The request is perfectly valid, it just happens to return the empty result set. This is more acceptable for mass requests than for single entity requests (e.g. OrdRejReason=5=Unknown order).
Existing (old) fields are left alone, leading to a lack of symmetry across messages. That is part of the price to pay for using a standard, i.e. you never again get the chance to start from a clean slate. Therefore one should not be too harsh with FIX and see its benefits rather than its deficiencies ![]()
What is the proper use of the default value “0” (for “Successful”) for tag 751 (“TradeReportRejectReason”) in the Trade Capture Report Ack (“AR”) message?
As a related matter, if the value of the TrdRptStatus field (tag 939) is set to “1” (“Rejected”), is “0” a sensible value for TradeReportRejectReason?
Thank you for your help.
[ original email was from John Harris - john.harris@bondmart.com ]
Thank you, Hanno. I wasn’t actually complaining about FIX (though I’ve done plenty of that in the past). I was just puzzled by a particular implementation I’m working on and wanted some expert perspective. As always, you’ve been kind enough to provide it, and thoughtfully so.
I can only guess. 751 is optional and defaults to 0 if absent, meaning that everything is ok, no actual rejection. However, the default has an impact when rejecting a TCR.
Setting 939 to 1=Reject implicitly forces you to send a reject reason with 751 as you would be sending 0=Successful if you omitted 751 which does not make sense.
Newer fields have been designed to be more generic, i.e. the response comes with XXXStatus and XXXResult fields. XXXStatus responds on a high level (e.g. accepted, rejected) whereas XXXResult gives you details. 0=Successful is typically the only detail for XXXStatus being “accepted”. Other values are usually only for the negative case, i.e. XXXStatus being rejected. However, it is more generic to use XXXResult than XXXRejectReason as it allows you to model flavors. It also gets philosophical when you start to debate whether not finding an entity should be a rejection reason or not. The request is perfectly valid, it just happens to return the empty result set. This is more acceptable for mass requests than for single entity requests (e.g. OrdRejReason=5=Unknown order).
Existing (old) fields are left alone, leading to a lack of symmetry across messages. That is part of the price to pay for using a standard, i.e. you never again get the chance to start from a clean slate. Therefore one should not be too harsh with FIX and see its benefits rather than its deficiencies
What is the proper use of the default value “0” (for “Successful”) for tag 751 (“TradeReportRejectReason”) in the Trade Capture Report Ack (“AR”) message?
As a related matter, if the value of the TrdRptStatus field (tag 939) is set to “1” (“Rejected”), is “0” a sensible value for TradeReportRejectReason?
Thank you for your help.