If
you are using FPGA or the current third party providers for trading where
microseconds really matter then please consider evaluating SubMicroTrading
(TM). This is not vapourware or empty promises. It’s a trading framework almost
5 years in the making that I am preparing for open source with a target date
August 2015.
Java
can be used for ultra low latency.
Just because someone doesn’t know how to do
something, doesn’t mean its not possible
Key
stats measured wire to wire in an independent lab using TipOff
800,000+
CME fast fix messages decoded per core per second
4
micros average tick to trade, wire to wire at 800,000 ticks/second (MAX
tcpreplay) includes :-
Read
packet from wire using Solarflare openonload and deliver to main memory (1
micro)
decode
market data tick into a normalised POJO event (<1micro)
update
book and invoke algo container (<1micro)
simple
algo which crosses spread every X ticks and creates order POJO
Encode
order to CME fix order request and ready to write to socket buffer (<1micro)
write
packet to wire using Solarflare openonload (1 micro)
In
process latency is measured at 2 micros with 2 micros in/out of
Solarflare/OpenOnload
Note
latency is highly dependant on configuration and data topology (which is why
concurrency is so important)
Whats
in open release
Current
model and generated codecs including ETI, UTP, Millenium, Fix, FastFix, CME MDP
All
market data and exchange codecs convert from external wire format to normalised
common internal POJO events
Possibly
fastest standard Fix engine on planet
Possibly
fastest FastFix implementation on planet
Possibly
fastest log engine on planet
Possibly
fastest memory mapped index paged persistence
Possible
fastest OMS on planet
Custom
exchange session engines for ETI, UTP, Millenium, Fix, FastFix
Exchange
trading simulator (works with any of the generated codecs like ETI)
Complete
core of SubMicroTrading including thread core affinity
Component
architecture for easy configuration of flow pipelines
Ability
to extend and customise the source code of any component
Whats
not in open first release
Encoder/Decoder
and model generator
Exchange
and market data agnostic Algo container
CME
dynamic on the fly session generation
Book
Manager and Book Conflation for optimal concurrent update processing
Sample
spread algo implementation really shows the power of Java algos.
Note
when comparing SubMicroTrading with other products, remember you have the
source, you have full control. Don’t compare apples and oranges …
SubMicroTrading converts wire messages to appropriate normalised domain objects
allowing a clean and simple to use algo container.
To
really compare performance you must test wire to wire within a controlled
network. For really high throughput and to avoid exchange test environment
throttling, run the exchange trading simulator and market data replay on a
separate server. You can then run SubMicroTrading on the trading server then
switch to an alternative implementation. Try the T1 benchmark at different TCP
replay rates.
Try
it, its pretty amazing to run the market data back using tcpreplay, the trading
application and exchange simulator all on a low power laptop. To see the true
power run on tuned CentOS linux with custom NIO and thread affinity configured.
Follow
the blog or register on the website
for confirmation on the open launch.