tag851-Liquidity Indicator

Hi,

Given a broker regularly doesn’t always know the value to set in tag851, i’m curious to know why there is not a valid FIX value of 0, for unknown.

It seems brokers regularly send this value of “0 Unknown” anyway in the FIX message, then this string needs to be handled in software expecting a positive integer.

Curious to know if there’s a reason for opting out of such an option.

Thanks!

Welcome!

Sending “0 Unknown” seems arbitrary and unnecessarily confusing.

I think, not withstanding the aim of FIX generally being to adopt industry usage, it’s more likely that a new int value or single char would be picked, (e.g. -1 or U (which is Undisclosed)).

But we don’t generally have the ability to specify “unknown” for any FIX tag, because that’s what is meant by the outright omission of the tag.

To me this value smells of “this tag is mandatory but I don’t know what to do” and instead of changing it to not be mandatory they’ve invented a solution which isn’t in the style of FIX.

Regardless, the FIX spec can and does change in response to requirements - indeed 0 was added thanks to an SEC requirement and technical specs in EP252. The correct process is a Gap Analysis in co-ordination with the appropriate working group - the last was from the “FIF/FIX Regulatory Reporting Working Group & FIX Execution Venue Working Group”

@hanno.klein helped write that EP 252 and undoubtedly has a view on “0 Unknown” as an option here.

But if I was handling this on a system level, I’d just put and remove this sort of value in as a counter-party conformance solution for the brokers that expect/send this sort oddity, at the edge of my platform.

1 Like

@davet, FIX cannot enforce compliance, hence brokers sometimes invent their own valid values and risk an inconsistency with the official FIX standard. As @philipwhiuk mentioned, value 0 has now been defined by EP252 and it is not “Unknown” but “Neither added nor removed liquidity”, which means it is not totally unknown but none of the specific values apply. FIX Latest now has 9 different specific values.

“Unknown” can always be expressed by omitting a field as @philipwhiuk already points out. Mandatory fields cannot be omitted because a “known” value is required from a business point of view. Defining a new value to represent “unknown” defeats the purpose. There are very few exceptions to this rule in FIX, e.g. TradSesStatus(340) = 0 (Unknown).