Projects/Liquitrader

Liquitrader

Pioneering Automated Cryptocurrency Trading at Scale

Sep 2016 – Dec 2017
Role: Co-Creator & Lead Developer
ReactPythonCythonTA-LibWebSocketsREST APIsPostgreSQL

Overview

In 2016-2017, cryptocurrency trading was exploding — but the tooling was primitive. Traders who wanted to automate their strategies across multiple exchanges had no unified platform. Existing bots were locked to single exchanges, offered a handful of indicators, and required programming knowledge to configure. Meanwhile, professional trading firms were running sophisticated algorithms that retail traders couldn't access.

Liquitrader closed that gap. We built an automated trading platform that unified 100+ cryptocurrency exchanges behind a single interface, offering 140 configurable technical indicators and a real-time React dashboard for portfolio monitoring. Retail traders could define complex strategies using the same indicators that professional quant firms relied on — without writing a line of code.

The Challenge

Building a trading platform at this scale presented three fundamental engineering problems:

1

Performance at Scale

Processing real-time tick data for hundreds of trading pairs across 100+ exchanges, while simultaneously computing 140 technical indicators for each, required processing millions of data points per minute. Python — the preferred language for quantitative finance — was too slow for production workloads.

2

Exchange API Chaos

Every cryptocurrency exchange implemented its API differently. Different authentication schemes, different rate limits, different data formats, different WebSocket protocols, different error codes. There was no standard.

3

Reliability Under Pressure

Trading bots can't go down. A missed order during a volatile market move can mean thousands of dollars in losses. The system needed zero-downtime operation with automatic recovery from every failure mode.

Architecture

Trading Engine

Python core with Cython-compiled hot paths. The indicator calculation engine, order matching logic, and data normalization pipeline were all rewritten in Cython for maximum performance. This achieved a 100x speedup over the pure-Python implementation.

Exchange Integration Layer

Unified API abstraction supporting 100+ exchanges (Binance, Bitfinex, Kraken, Poloniex, Coinbase Pro, and dozens more). Each exchange adapter handled authentication, rate limiting, data normalization, WebSocket management, and automatic reconnection.

Frontend Dashboard

React single-page application with real-time WebSocket updates. Featured interactive candlestick charts, portfolio performance tracking, trade history, strategy configuration UI with drag-and-drop indicator composition, and live paper trading mode.

Technical Analysis Engine

140 indicators implemented using TA-Lib bindings — RSI, MACD, Bollinger Bands, Ichimoku Cloud, Stochastic Oscillator, EMA crossovers, and more. Each indicator had configurable parameters and could be composed into multi-condition strategies.

engine.pyx
cimport numpy as cnpimport numpy as npcimport cython@cython.boundscheck(False)@cython.wraparound(False)cpdef cnp.ndarray[cnp.double_t, ndim=1] calculate_ema( cnp.ndarray[cnp.double_t, ndim=1] prices,int period ):cdef int n = prices.shape[0]cdef cnp.ndarray[cnp.double_t, ndim=1] ema = np.empty(n, dtype=np.double)cdef double multiplier = 2.0 / (period + 1.0)cdef int i ema[0] = prices[0]for i in range(1, n): ema[i] = (prices[i] - ema[i-1]) * multiplier + ema[i-1]return ema

Key Technical Challenges

Challenge 1: 100x Performance Through Cython

Pure Python couldn't keep up with real-time indicator calculations across hundreds of trading pairs. We profiled every bottleneck, identified the hot paths (indicator computation, data normalization, order book processing), and rewrote them in Cython with typed memoryviews and C-level array operations. The result: 100x speedup that turned an unusable prototype into a production platform.

Challenge 2: Taming 100+ Exchange APIs

Every exchange was a snowflake. Binance used HMAC-SHA256 auth, Bitfinex used custom nonce-based signing, Kraken required a different hash per endpoint. Rate limits ranged from 6 requests/minute to 1200/minute. We built a unified adapter layer that normalized all of this — one consistent interface for placing orders, fetching balances, and subscribing to market data, regardless of the underlying exchange.

Challenge 3: Zero-Downtime Trading

A trading bot that crashes during a market crash is worse than useless — it can leave open positions unmanaged. We implemented persistent state tracking (every order, every position, every strategy state written to database), automatic WebSocket reconnection with exponential backoff, and a recovery system that could reconstruct full platform state from the database after any failure.

Results & Impact

100+
Exchanges Supported
140
Technical Indicators
100x
Performance Boost
OSS
Core Contributed

Built an active community of traders using the platform daily. The Cython optimization over pure Python allowed retail traders to run complex strategies previously reserved for institutional quant firms.

Ask about Kyle
AI-powered resume assistant

Ask me about Kyle's skills, experience, or projects