Hi,
Previously I have been able to find the proposal documents for different tags / repeating groups on the FIX protocol website, but it appears these did not make it over to the new site. I am looking for any detail on the StrategyParameters repeating group (957-960) - specifically how some types are encoded in the value tag. For example, how are Data type (23) parameters encoded in the StrategyParameterValue (960) tag?
All proposals that have been published can be found under FIX Extension Packs – FIX Trading Community v2.1. Publications started after version FIX 5.0 SP2. You are referring to an extension made to FIX 4.4 which became an integral part of FIX 5.0. It is included in the release notes of FIX 5.0 as follows and was not published separately:
EP2 - Algorithmic Trading Extension
The Algorithmic Trading Extension provides a more complete and flexible way of specifying and identifying strategies for order execution. For most firms, there are a growing number of strategies that need additional parameters. Several firms have come up with a variety of implementations and have been adding custom tags to support their requirements. In order to standardize the passing of additional parameters for strategies and create a more flexible implementation to support algorithmic trading a repeating group has been added to capture the parameters of a strategy. This repeating group will be added to all messages that currently have the TargetStrategy tag.
* Added new fields NoStrategyParameter (957), StrategyParameterName (958), StrategyParameterType (959), StrategyParameterValue (960) to form the new NoStrategyParameters repeating group
* Added the NoStrategyParameters repeating group to the following messages as “not required”: New Order Single, New Order Corss, New Order Multileg, Order Cancel/Replace Request, Cross Order Cancel/Replace Request, Multileg Order Cancel/Replace Request and New Order List.
I see your point regarding StrategyParameterType(959)=23 (data) which requires a preceding length field for StrategyParameterValue(960). There is no length field in the repeating group. FIX 5.0 was released more than 11 years ago, maybe you are the first one wanting to use the data type “data” for a strategy parameter. What is the actual content? You will hit a problem if you use the tag=value encoding and tag 960 contains the field delimiter for this encoding (ASCII “SOH”: #001, hex: 0x01).
As a workaround you could add a user-defined field prior to StrategyParameterValue (960) and call it StrategyParameterValueLen.
Thanks for your thorough response.
Actually there is a “Length” type (959=2) which maybe could be used - although the parsing would be quite difficult. StrategyParameterValue tag (960) would need to be string-parsed in some cases and data-parsed in others - with the the length depending on the associated length parameter.
Apologies for the continued questions - is there any guidance/restrictions around things like uniqueness of StrategyParameterName values for instance? There seems to be a NumInGroup (959=3) type - is the implication that repeated strategy parameters must be preceded by an associated NumInGroup value?
The data type “Length” cannot be used as this is an encoding issue. This is a repeating group containing one or more strategy parameters. Not all data types are applicable in my view and I think NumInGroup is one of them. The group is highly generic and it is up to bilateral agreement on how to use it. Uniqueness of names seems like a good idea to me. One name should stand for one semantic.
Makes sense. So just to confirm there is no documentation on the initial thinking behind these StrategyParameterType values? I agree that some of them don’t seem very usable without requiring complicated modifications to the parser that probably violate the protocol specification.
I will weigh in here, as I was involved in the FIX 4.4 spec production back in 2003/2004 when these were added. The challenge, at the time, was that each broker wanted to ask customer firms to support a series of user-defined tags for the various attributes of their differing algo strategies. This became an issue in terms of both the amount of extra work to add support for extra fields, as well as a problem in terms of depleting the universe of “user defined fields” that were available via the FIX website.
The idea was, that instead of simply adding 5 or 10 algo parameter fields for each broker’s algo, we could define a single repeating group that would be flexible and capable of representing a set of parameter fields, without having to use extra FIX tag number fields. Although brokers needed their strategy parameters, they did not want to share what they were with others (eg standardize in the spec), due to competitive concerns.
The reality was that brokers never fully adopted the StrategyParameters repeating group, and stuck with individual parameter fields. The main improvement came with FIXatdl whereby that provided a standardized way of expressing algo definitions, their parameters/rules, as well as screen display. FIXatdl did encourage support of the StrategyParameter repeating group from the spec, and makes that easy to use/leverage. My firm requires all of our algo brokers to provide FIXatdl xml files, and that works well.
If you really want some of the FIX spec prep documentation re: the Target Strategies, I do have some (dated 2003-2004).
1 Like