Fixisoft - IdeaFIX - High-Frequency Trading made simple

FAQ

Get all the answers you need

Under what licence is IdeaFIX published ?

IdeaFIX is a time-limited commercial product, currently free of charge. It’s provided with NO WARRANTY. Its components are free of any licence requirements.

But isn’t JAVA slow ? how can you achieve a 5.5µs RTT ?

The reality is JVM-based languages are far from slow. The focus has been made on quality data structure, threading & memory model, object pooling, and algorithmic. SIMD and bit manipulations have offered a lot of speed-ups and are not specific to JAVA or any programming language for that matter.

Porting IdeaFIX to Rust or low-level C could provide improvements but would likely break the portable nature of the code. We definitely wanted to make things easy for a developer at an average financial firm running Windows desktops, heterogeneous Linux servers and tight user security.

VM-based languages like JAVA or C# are a must in that case.

What are the hardware requirements ?

For best results, recommendation is to allocate at least 2 cores per instance. An instance runs under less than 4G of RAM, and way less depending on the consumption rate of the remote counterparty and the size & complexity of the messages.

If you are so inclined, under Linux, pinning 2-3 cores to the process with isolcpus & taskset would be beneficial.

How IdeaFIX deal with the slow consumer problem (i.e. excess back-pressure) ?

The channel context class exposes a method isWritable. It returns false when the write buffer has reached its high watermark limit, most likely because the remote process has not been able to catch up with the rate of messages. It will eventually return true when the write buffer has reached its low watermark limit.

Does IdeaFIX support High-Availability and fail-over ?

The recommended route for High-Availability and fail-over is to run a script which periodically copies the message history to the IdeaFIX message history of a cold fail-over box. A simple VFS mount will work very well thanks to OS caching.

In case of missing incoming messages, the FIX protocol will automatically fill the missing gaps.

Unix tool rsync is highly recommended. More examples will be uploaded to GitHub later on.

This method is reliable because it runs on tried and tested tools, with a visible syntax as opposed to an embedded mechanism. In case of (rare) JVM issues, it’s good to rely on old fashioned bash and cron.

Does IdeaFIX support secure connections with SSL ?

Yes, examples are included in the SDK. They should be easy enough to understand as they follow existing JDK conventions. However, the IdeaFIX uses the latest BoringSSL implementations by Google. This comes with excellent security and performance characteristics.

Any tips to achieve ultra low-latency ?

GraalVM has shown superior performances in recent benchmarks.

For best latencies, it’s useful to disable security-related modules if your current policies allow it. For instance, on Linux, switch off AppArmor, Yama, Landlock , etc. Alternatively on Windows antiviruses, firewalls and low-level monitoring tools are best kept at a minimum.

Many of them cause far more context switches and pauses than modern garbage collectors even if they are written in C. It’s understandable given they have to control most I/Os on a given box. IdeaFIX has a low or zero allocation rate but its I/Os massively outweight it.

Make sure you are running at the highest CPU clock rates. Switching C-state is disastrous for latencies which makes most laptops inappropriate for accurate measurements.

Download View on GitHub

Zip-archive includes the development kit, documentation, benchmark scripts and examples

fix trading