Skip to content
Don Mendelson edited this page Apr 22, 2016 · 3 revisions

Vision

Timpani is part of an effort to demonstrate FIX semantics running everywhere for financial applications -- FIX over all transports and all popular message encodings. Timpani demonstrates both a transport, namely WebSocket, and an encoding, JavaScript Object Notation (JSON).

To learn more about FIX, see FIX Trading Community.

Project name

"Timpani" has no intrinsic meaning. FIX Trading Community is developing orchestration tools for FIX, and we just decided to use musical instruments as project names.

Business layer

Although this project was conceived mainly as a technology demonstration, the real value of FIX is mostly in its semantics. Everyone familiar with FIX has a shared understanding of important business concepts, such as order states, instrument identifiers, and various kinds of participants in markets.

Timpani demonstrates FIX semantics of reference data about securities to trade. A client submits a Security Definition Request, and the server responds with every Security Definition that matches the request criteria. The client may just ask for all the characteristics of one security with a given symbol, or may request all securities within these categories: Security Type, CFI Code, Product, Security Group, Trading Session ID, Market ID, Market Segment ID or Security Exchange. Such a request may return hundreds or even thousands of securities.

Technologies

WebSocket

Timpani demonstrates WebSocket as a session layer for FIX.

"WebSocket is a protocol providing full-duplex communication channels over a single TCP connection. The WebSocket protocol was standardized by the IETF as RFC 6455 in 2011, and the WebSocket API in Web IDL is being standardized by the W3C."

WebSocket is enhances the HTTP request/response paradigm by keeping the TCP connection open after the initial response for delivery of subsequent unsolicited messages. The client side usually operates within a web browser.

There are two principle use cases:

  1. Unsolicited stream of data such as market data updates to a web UI.

  2. Pipelined delivery of large query result sets. For example, a request for security definitions by market or security type might return hundreds or thousands of records. It is desirable to flow the results to a web client rather than collect it for one synchronous blast.

JSON

At the presentation layer, JSON is an alternative to existing FIX encodings, including tag=value, FIXML, FAST, SBE and Google Protocol Buffers. JSON encoding of FIX is optimized for operations in a web browser without the need for other software distribution to clients.

JavaScript is the predominant language for developing client-side logic in web applications. JavaScript is supported by all popular web browsers. A built-in feature of the language is JavaScript Object Notation (JSON). JSON syntax is identical to the code for creating JavaScript objects. It minimizes development effort while avoiding the complexity and greed for resources of XML parsers and the like.

An important characteristic of JSON is that it is self-describing. Elements have readable symbolic names. Therefore, message handlers can process message elements without looking up metadata in a data dictionary or schema. JSON wire format can readily be parsed and encoded in other programming languages. There are several popular libraries for that purpose in Java, C#, C++, and so forth. These JSON implementations interoperate with JavaScript.

Clone this wiki locally