FUEL – FIX Universal Expression Language

FIX Universal Expression Language – FUEL

While the workflows may be complex, the FIX messaging itself is not. FIX is a purpose-built semantic language and protocol with a well defined format. But, FIX is also a specialized protocol, requiring specialized tools to work with effectively. Flyer makes enterprise FIX software, and also manages an extensive FIX network: FIX is our daily bread and butter. Thus, we’ve developed over the years these specialized tools to do what we do better. And it’s time to share.

FUEL is a simple way to express FIX message content. Used for filtering, searching, troubleshooting, even programming, it is designed with the FIX user in mind.

Basic Syntax Examples

1=xyz

Messages where Tag 1 (Account) is equal to ‘xyz’

11=Foo*

Any message with a Tag 11 (ClOrdId) value that begins with ‘Foo’

35=D && 38>1000

Any new order (35=D) where the order quantity is greater than 1000 (38>1000)

55=IBM || 55=CSCO

Any message where Tag 55 equals either ‘IBM’ or ‘CSCO’

Operators

tag > value
greater than
tag >= value
greater than or equal to
tag < value
less than
tag <= value
less than or equal to
tag = value
equal to
tag != value
not equal to
tag = *
‘*’ matches any content

Tag Presence/Absence

tag = ?
Tag is present in the message
tag = !?
Tag is not present in the message

Grouping

Parentheses can be used to group filters into arbitrarily complex logic. Items within parentheses will be evaluated as a group with precedence over outer items. For example:
35=8 && (39=1 || 39=2)
The above will match all Tag 35=8 messages where Tag 39 is equal to either “1” or “2” – execution reports that are partial or complete fills.
(35=8 && (39=1 || 39=2 )) || 35=Q
The above will match all Tag 35=8 messages where Tag 39 is equal to either “1” or “2” AND all Tag 35=Q messages – execution reports that are partial or complete fills and DK Trade messages.

To negate a group’s match, you can preface it with a !.
(35=8 && !(39=1 || 39=2))

Repeating Groups

If a tag from a repeating group is used in an expression, it will by default be true if it matches any instance of the tag. To evaluate only within a particular repeating group, use { } to enclose the expression. When { } are used, then the entire expression between the braces must match within one instance of the repeating group.

Example:
35=D && { 452=1 && 448=FOOBAR }
This will match 35=D messages where the party role “1” (Executing Firm) is “FOOBAR”. The expression 452=1 && 448=FOOBAR must match within one instance of the parties repeating group block.

Regular Expressions

Any tag can be matched against a regular expression by enclosing it in forward slashes.

tag = /regex/

Use Cases for FUEL

FUEL can be used to perform historical searches for specific messages or workflows, forming even very complex queries.  Flyer’s Daytona Trade Monitor can raise alerts based on messages matching individual filters. The language is also used for FIX certification requirements, validation rules, and specifications.

  • Share

About FIX Flyer

With over 120 clients worldwide, FIX Flyer develops advanced technology for managing complex, multi–asset, institutional securities trading using highly scalable software and network technologies.

Learn More