We provide Direct Market Access (DMA) to Stock, Bond and Commodity Markets.
Our software solutions enable exchange connectivity,
market data and order routing to EUREX, ICE, NYMEX and other markets.
We utilise our high performance server infrastructure to integrate with clients trading systems through proprietary
APIs or industry standard FIX protocol.
Our solutions for Hedge Funds, Asset Management and Proprietary Trading Groups.
Our proprietary trading solutions include high-frequency trading (HFT) and statistical arbitrage algorithms.
We can seamlessly integrate into your existing infrastructure, risk management system or broker account.
We provide financial software solutions in the City of London over the past ten years. During this time we acquired unique knowledge in financial products, mathematics and computer systems.
As a result, we are able to provide solutions that go beyond the scope of simple computer systems development. Most of our server-side code was designed to run on a specific hardware and use very low level programming languages to access hardware specific calls. They often run directly on the hardware (no operating system) or with the help of real-time executives or real-time operating systems. We use carefully selected computation algorithms and data structures to provide ultra low-latency and our own implementation of the priority based algorithm (rate-monotonic scheduler) to provide real-time scheduling. We also benefit from using distributed, loosely coupled service architecture that allows the system to perform load balancing and restore fail-over components.
As well as a traditional Linux-based development and kernel-tuning we run a number of cutting edge R&D projects. The aim of these project is to run our services directly on the hardware, without the aid of the operating system.
We believe that a new paradigm is emerging in the world of software development. For a long time software developers were trying to make their components reusable. This lead to a plethora of generic design patterns being developed. The problem is - these patterns are designed to solve common problems in a very generic way. This approach provides a template but does not capture the specific needs of the problem being solved. At the same time the programming languages and the operating systems were designed in a generic way to run on different hardware and abstract from low level system calls. These general purposes programming languages and operating systems allow systems to run on any hardware equally smoothly. However they are unaware of their hardware, resources and are not able to take full advantage of their computation power. If the operating system is generic then apart from running your program it will also monitor I/O ports, provide memory virtualization, schedule thread on a CPU, etc. So why run a program designed for a specific job on a general purpose operating system?
We believe that any software has to be written for a specific hardware to solve a specific problem. In other words specialization not generalisation should be the developer's main concern. For example, many general purpose operating systems utilise priority based scheduling algorithms where thread are being given a slice of time to run on a processor (while other threads are yielding) before being interrupted. In the our case would be only two threads running on a multi-core processor machine. One thread will be doing the job it was design for and running on the first processor, the second thread serving and monitoring the first thread will be running on the second processor and sharing the data via L3 cache. This can be achieved by writing a single process and loading it via bootloader bypassing the operating system. This way you don't need to worry about memory isolation, processor scheduling and thread prioritisation since you only have one thread per processor. So you get the best performance of out your processor while cutting costs on third-party kernels and operating systems.