Skip to content

Trading & Finance

kdb+ performance. Standard SQL. Zero license cost.


5.52M events/sec

Lock-free MPMC ring buffer ingests full-depth L2 order book feeds without dropping a tick.

272μs queries

LLVM JIT compiled execution — ASOF JOIN, VWAP, EMA at microsecond latency.

522ns Python

Zero-copy NumPy/Pandas views for quant notebooks. No serialization overhead.

kdb+ compatible

ASOF JOIN, Window JOIN, xbar — familiar temporal operations, standard SQL syntax.


  • Real-time tick ingestion from FIX 4.4, ITCH, and exchange WebSocket feeds
  • Sub-microsecond event timestamping with nanosecond precision columns
  • Lock-free pipeline: feed handler → ring buffer → column store → query
  • Python zero-copy: query result → NumPy array in 522ns
  • ASOF JOIN for point-in-time correct backtests
  • Parquet HDB for historical data on S3 — query decades of tick data
  • Real-time P&L aggregation with window functions
  • Audit logging for MiFID II / SOC2 compliance
  • RBAC with 5 roles — isolate trading desks from compliance views

Market Data Feeds ZeptoDB Consumers
───────────────── ───────────────────── ─────────────────
FIX 4.4 ──→ │ Feed Handler │
ITCH ──→ │ ↓ │
Binance WS ──→ │ Ring Buffer (MPMC) │──→ Python (522ns)
Kafka ──→ │ ↓ │──→ SQL (HTTP/Flight)
│ Column Store │──→ C++ Pipeline
│ ↓ │──→ Grafana
│ Parquet HDB (S3) │
─────────────────────

-- Join trades with latest quote at each trade timestamp
SELECT
t.sym,
t.ts,
t.price,
t.size,
q.bid, q.ask,
xbar(1m, t.ts) AS bucket,
vwap(t.price, t.size) OVER (PARTITION BY t.sym ORDER BY t.ts ROWS 100 PRECEDING) AS vwap_100
FROM trades t
ASOF JOIN quotes q ON t.sym = q.sym AND t.ts >= q.ts
WHERE t.ts > now() - interval '1 hour'

Already running kdb+? ZeptoDB supports the same temporal operations with standard SQL:

kdb+ZeptoDB SQL
aj[\sym`time; trades; quotes]`trades ASOF JOIN quotes ON sym, ts
xbar[0D00:01; time]xbar(1m, ts)
ema[20; price]ema(price, 20)
mavg[50; price]mavg(price, 50)

See the Migration Guide to get started.