Algo / High Frequency Trading Black Box Design and Optmization

Algo / High Frequency Trading Design and Optmization

Infrastructure Best-of-Breed Stack for HTF/Grid

BIOS/UEFI Changes

  • Disable Hyperthreading.
  • Disable Turbo-Boost.
  • Disable Virtualisation Support.
  • Disable Intel VT-d
  • Set HP Power Profile to Maximum Performance
  • Set HP Power Regulator to HP Static High Performance Mode.
  • Disable Core C-States
  • Disable Package Power States.

Trading Software

  • 2BITS – Preconfigured software for connectivity to major exchanges, trading networks and broker dealers worldwide.
  • CQG – An industry leader in fast, accurate and reliable market data plus advanced technical and graphical analysis.
  • OnixS – Pre-certified performance trading solutions.
  • OptionsCity – Metro is a fully configurable electronic trading platform for both floor and off-floor traders.
  • ORC Group – Provides significant functionality allowing traders to customize volatility management, pricing and automated quoting.
  • ProOpticus – Professional derivatives software arming traders with comprehensive solutions for futures trading.
  • QuantHouse – QuantHouse equips algo traders with an advanced suite of trade development and management tools backed by a high-performance infrastructure.
  • RTS Realtime Systems – RTD is an innovative application that provides access to exchange traded futures and options markets.
  • Stellar Trading Systems – Stellar Trading Systems specializes in producing fast and powerful trading systems for the high frequency, high volume trader.
  • Trading Technologies (TT) – X_Trader® lets you trade multiple products and multiple markets from one fully-customizable screen in real time.
  • Patsystems –

Linux and Windows Optimisation

  • Disable CPU C-States. This prevents the CPU from going into power saving mode, which can cause latency when the CPU needs to power back up. (Kernel parameter intel_idle.max_cstate=0)
  • Disable hyperthreading. This prevents other threads being scheduled onto your core and invalidating your cache. (Manually achieved by echo 0 > /sys/devices/system/node/node0/cpu1/online etc.)
  • Isolate CPUs from the scheduler. This prevents the scheduler from scheduling work onto isolcated CPUs, preventing your work from being scheduled off, cache invalidation etc. (isolcpus)
  • Pin threads to CPUs. This prevents threads from moving between cores and invalidating caches etc. (sched_setaffinity)
  • Lock memory pages and prefault the stack. This prevents minor page faults as memory pages are paged in. (mlockall)
  • Set the scheduler for realtime threads to FIFO / up the priority. This allows our threads to preempt other threads which could be on our cores (unlikely, given that we’ve used isolcpus) (sched_setscheduler)
  • Move interrupts onto a specific CPU (specifically ethernet IRQs local to the NUMA node that the NIC is on) (/proc/irq)
  • Use RDMA NICs and their associated zero copy APIs for out networking (solarflare)
  • Use profile guided optimization / lock-free data structures / busy reads etc
  • Oprofile, callgrind, smart order routing, false sharing, kernel bypass, linux thread to core affinity, approximate, difference between cache levels, memory perforamnce, c-states hardware perforance, enable hardware cache, interrrupt coalescing, linux behcarking of function excution low latency order book.

Research 

Machine learning

Strategies

TickData

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s