Featured post

Fixed Income Trading: New venues ( How many Fixed Income trading venues are there? )

How many Fixed Income trading venues are there?  [152]  A simple question came up recently in a conversation – how many new Fixed Income t...

Sunday, 1 March 2020

Meta-Programming & FIX Orchestra


But how do we add value when using FIX Orchestra?  One technique is something that is a little difficult to grasp conceptually at first - meta-programming.

The best way to describe this is "code that writes code".  Let's take an example.  A client supplies an SBE.xml file that contains details of the SBE encoded FIXP messages that they support.  The SBE.xml file includes a reference to http://fixprotocol.io/2016/sbe which links to http://fixprotocol.io/2016/sbe/sbe.xsd

If you can consume the SBE.xml file then you can generate a series of message classes in your chosen language.

So, if you use Java, write some code and shazam - you have a complete set of classes to use with that FIXP session.

Here's the interesting bit - your Java code can be used (with modifications) to create message classes in lots of different languages.  

For a recent project we have taken an SBE.xml file and created classes in:

Java
Python
F#
C#
Erlang

What can stop a firm using the power of meta-programming to allow new rules-of-engagement to be implemented on the same-day as their counterparty releases their new rules-of-engagement?

Hint - nothing!


2 comments:

  1. I'm confused by that last statement - how does generating messages classes automatically enable me to implement something on the same day the spec is released? I presumably still have to write the code which processes those messages, write the tests for that code, integration test it and deploy it. This assumes the change in rules of engagement didn't actually change the relevant state machines - if it does, it's a lot harder than this.

    What you're describing is what a basic IDL for an RPC mechanism achieved 30 years ago. Sure, it's helpful not to have to reinvent the wheel for parsing, but it doesn't make handling new business logic magic.

    ReplyDelete
  2. I agree, you are somewhat confused. IDL is static, FIX Orchestra and it's intellectual ancestor FIX Interactive Interface Definition Language (FIIDL) define workflows, rather than just the messages that are passed around that workflow.
    Hence if you build your code in the right way, you can handle new workflows.

    If you mean - when a RoE changes to add in program trading on top of single stock trading then do I need to code something then yes. But you are not seriously expecting otherwise?

    I'm contactable by email, send an email to "enquire" at this domain along with your name and contact details and we can discuss further.

    Please note, full name, real contact details, not an anonymous gmail or similar account...

    ReplyDelete