Developing Software with Market Data - Part 1

Developing Software with Market Data - Part 1

Earlier this month, I was invited to take part in an international webinar panel discussion on Developing Software with Market Data, organised by FISD. Sinara Consultants have worked in the market data space for over 30 years, and built large-scale systems for clients around the world, so we are always pleased to be invited to share our thoughts and experiences with industry colleagues.

In this article, I'll summarise some of the key topics we talked about in the webinar, from Sinara's perspective. We'll cover the critical elements you need to consider when building software with market data (whether as producer or consumer) and the skillset your development team or supplier needs to have. In Part 2, we'll look at the issues to think about when replacing a legacy system and touch on the shift to cloud and how that affects your choices.

Critical elements in market data systems

First of all, when looking to consume a market data feed in your application, you need to make sure that it has the content you need. Are all the specific fields you need available? Might a critical field in fact be missing or unavailable (for commercial reasons, for example)? A consolidated feed may not include certain exchange-specific fields; an alternative data source may not have the coverage or granularity your application needs.

You also need to look at what format the data is delivered in (e.g. FIX, XML, CSV, etc), and determine how much effort it will take to extract it into usable information for your application. Unstructured data (like many alternative data sources) can prove especially challenging and this needs to be taken into account when planning the project.

Latency is obviously a huge topic in itself, as with all the other aspects here. Critically, you need to consider whether the latency offered by the feed in question is suitable for your application; clearly the needs of a real-time trading algorithm are going to be very different to those of an end-of-day compliance system. It is also of little point to pick the feed with lowest latency if your downstream systems are much slower; your system is only as fast as your slowest link. What do you really need to do the job?

On a related note, understand what the volumes will be of the feed you are receiving and what resources your application will need to handle them. Can it cope with the volumes without being overwhelmed? Can your downstream systems? If not, consider what kind of throttling or mitigation mechanism will you need to introduce to make sure the larger volumes can be reduced to something more manageable. You don't want to end up with the classic problem of a fast producer and slow consumer, with queues of messages building up or being lost. Indeed, dealing with missed messages (which may or may not be critical, depending on the feed and application) is a related issue to consider.

As touched on already, it is likely the information extracted from the feed will be integrating into other business systems or even distributed to large numbers of downstream applications (internal or external). A key consideration is to know what data formats those systems in turn expect and how much work will be needed to perform that conversion. Finally, with market data of any kind, there will inevitably be issues around entitlements and how they are managed. You want to avoid the problem of data being passed between your systems without control and no way of tracking where a piece of data originated and for what it can be used.

All these considerations apply equally when you are building a system that will actually produce market data. What will your consumers expect? What applications is it designed for? What kind of latency, format and volume can you offer?

The skillsets needed

The development team building your market data system, whether as a consumer or producer, needs to have a fundamental grasp of all the topics above. A good understanding of the associated data model and reference data is also important, both in terms of the technical aspects of the feed and relevant domain knowledge. This makes it much easier to have conversations with business users about what the system needs to do, and ensure that requirements aren't 'lost in translation' between business and IT. At Sinara, we regularly have our development teams talk with our end-users, making sure we have good lines of communication and developers have a good understanding of the business processes they are implementing.

A vital skill in building many large-scale market data systems is being able to design a database that will be able to store the data in such a way it can be retrieved efficiently later on, whether by a software application or by a database user running a query tool. Can the design be successfully extended in future to incorporate new types of data as the model evolves? Can new fields or data types be added easily? What are the performance characteristics? Of course, the last thing you want to do is tie your design too closely to the specific market data feed you are consuming. What happens if it must be replaced by another feed in future? It is important to create a separation in design, so that if the format changes, changes to the rest of your application can be minimised.

It is also invaluable to have experience building high performance, realtime systems, in which every millisecond (or indeed microsecond) counts. Building this kind of application is very different from building many other types of business systems in which these considerations do not apply. Some market data distribution components have to manage large amounts of data very fast and push them out via different channels. A good example of this is Sinara's own MDP, which has served as the foundation for many of the market data systems we have delivered.

Finally, as with any professional software build, good software engineering principles apply: good design in terms of the components/libraries; separation of concerns; abstraction; testing; good project management, and so on. We champion these at Sinara and they are a key part of everything we do.

Continued in Part 2.

Innovation in software development is like sailing against the wind - challenging but thrilling. Remember, Aristotle believed we are what we repeatedly do; excellence, then, is not an act, but a habit. 🚀 #softwaredevelopment #innovation

Like
Reply

It was great having you (Sinara) on that panel - better still reading your thoughts that build on what was discussed.

Like
Reply

To view or add a comment, sign in

More articles by Hamish Adourian

  • Introducing SinaraTLC

    Sinara are pleased to announce SinaraTLC, our end-to-end software component suite that provides a framework for new…

    1 Comment
  • Developing Software with Market Data - Part 2

    In this article, continued from Part 1, we'll continue our recap of some of the topics discussed in the recent FISD…

  • IDX-V 2020

    Introduction The International Derivatives Exchange (IDX) conference is normally held in London every June. This year…

  • Challenges in the post-trade ecosystem

    At a recent webinar on post-trade systems hosted by BT Radianz, there was a panel discussion on key challenges facing…

  • FIA IDX 2019

    At the FIA International Derivatives Expo 2019 in London last week, there was much discussion on the challenges and…

  • Euronext Inventory Management System

    Introduction Euronext wanted to expand its range of offerings in the commodities space to participants across the…

  • Blockchain - Part 3 - Smart Contracts

    Introduction In this final post in Sinara's three part series on Blockchain, we discuss an important idea in this…

  • Blockchain - Part 2 - Applications

    Introduction This is the second in a three part series on blockchain, focusing on some of its potential applications…

  • Blockchain - Part 1 - Technology Overview

    Introduction In recent years, two of the major drivers of change in the financial industry have been regulation and…

Others also viewed

Explore content categories