Libtrading
Libtrading is an open source API for high-performance, low-latency trading applications. It implements network protocols used for communicating with exchanges, dark pools, and other trading venues. The API supports FIX, FIX/FAST, and many proprietary protocols such as ITCH and OUCH used by NASDAQ.
Features
- C API
- High performance, low latency
- FIX dialect support
- SystemTap/DTrace probes
Install
Install prerequisite packages:
Debian
$ apt-get install pkg-config libxml2-dev libglib2.0-dev libncurses5-dev \
python-yaml libevent-dev
Fedora
$ yum install zlib-devel libxml2-devel glib2-devel vim-common ncurses-devel \
python-yaml libevent-devel
OSX
$ brew install libevent glib pkgconfig
$ pip install pyyaml
Then run:
$ make install
You can also run the test harness:
$ make check
Usage
To measure FIX engine performance locally, start a FIX server:
$ ./tools/fix/fix_server -m 1 -p 7070
Server is listening to port 7070...
and then run the FIX client latency tester against it:
$ ./tools/fix/fix_client -n 100000 -m order -p 7070 -h localhost
Client Logon OK
Messages sent: 100000
Round-trip time: min/avg/max = 15.0/16.8/129.0 μs
Client Logout OK
Documentation
Performance
Protocol | RTT (μs) |
---|---|
FAST | 13 |
FIX | 6 |
The following above were obtained by running Libtrading messaging ping-pong tests on a 4-way Intel Haswell 3.60 GHz CPU running Fedora 21 with Linux 3.19.7-200. The processes were pinned to separate physical cores and the numbers include time spent in the Linux TCP/IP stack.
FIX engine round-trip time frequency plot for the above looks as follows:
License
Copyright (C) 2011-2014 Pekka Enberg and contributors
Libtrading is distributed under the 2-clause BSD license.
Contributors
- Denis Ivaykin
- Marat Stanichenko
- Jussi Virtanen