London Data

Platform case studySystematic tradingMinutes to days

Nexus.

A complete platform for running a systematic mid-frequency trading system.

Market data, data quality, research, execution, risk and operations on one stack, built and run by one engineer directing a fleet of AI agents. For a firm onboarding a systematic strategy that holds positions for minutes to days, Nexus is the whole path from vendor feed to broker order. It runs every day on a production host, with execution on a broker demo account.

Price bars≈1.10BTimescaleDB, 93 GB, 1-second to daily
Tickers11,13710 data sources, 9 asset classes
Agent seats30Claude, Codex and Grok on one board
Items done2,801of 3,044 work items on the board
Merged PRs3,911across 14 repositories
Deploys1,609in the deploy ledger, 12 services
Test functions≈17,900in 1,796 test files
CI runners25self-hosted on two hosts, 31 workflows

Read on 2026-10-01 between 18:27 and 18:40 UTC from GitHub, the work board, the deploy ledger and TimescaleDB catalog estimates (≈ marks an estimate).

01Platform
02System

One path from vendor feed to broker order

Fourteen repositories make up the platform. The core is a data path: vendor feeds and live broker ticks land in a time-series store, a data API serves them, a research service tests strategies against them, and a trader executes the book that research promotes.

Vendor feeds 10 sources Ingestion 37 check types market_data TimescaleDB 93 GB data-api FastAPI, 30 routers sim-api backtests, walk-fwd fetch append query prices IG broker API, demo trader scheduler, recon target-engine one sizing library prices frozen book imports imports orders, recon 1s tick capture
Research and live trading size positions with the same library, so a backtest and the live book cannot disagree about how a signal becomes a position. IG is both a data source (live 1-second capture) and the execution venue. The trading account is a demo account.
  • data-webReact and TypeScript console, about 80 pages
  • riskvolatility and correlation snapshots
  • pmsportfolio ledger with a UK and US tax-lot engine
  • hermesalert delivery through an outbox
  • system-monitorper-host collectors
  • backupdaily dumps, offsite copies and restore tests
03Market data

Range and depth: from 1969 to the last second

A mid-frequency system needs long daily history to test across many market regimes, and dense intraday bars to measure entries, exits and costs. Nexus holds both in one store: about 1.1 billion price bars across 11,137 tickers from ten sources.

History held, by source

Each bar runs from a source's earliest stored bar to its latest, as recorded in the store's coverage cache on 1 October 2026. A source's span is set by its longest series; many of its tickers start later. Hover or focus a row for the detail.

Pinnacle Data CLC39 futures markets · daily · 1969 to Jul 2026
Yahoo Finance6,479 tickers · daily · 1999 to Oct 2026
FRED42 economic and rate series · 2000 to Oct 2026
Dukascopy36 instruments · 1-minute · 2003 to Sep 2026
Cboe274 volatility series · 2004 to Sep 2026
Databento40 continuous futures, 3,982 contracts · 2010 to Oct 2026
CCXT526 crypto assets · 2017 to Oct 2026
IG (live capture)52 markets · 1-second · Jul 2026 to now

Two further public sources each supply one index series. Futures history includes individual contracts as well as continuous series.

Table view
SourceCoverageFromLatest storedResolution
Pinnacle Data CLC39 futures marketsJan 196917 Jul 2026daily
Yahoo Finance6,479 tickersJan 19991 Oct 2026daily; hourly from Apr 2024; 5- and 15-minute from Feb 2026
FRED42 seriesJan 20001 Oct 2026mainly daily
Dukascopy36 instrumentsMay 200324 Sep 20261-minute
Cboe274 volatility seriesJan 200430 Sep 2026daily
Databento40 continuous, 3,982 contractsJun 20101 Oct 2026daily and hourly; 1-minute for 5 markets to Aug 2023
CCXT526 crypto assetsAug 20171 Oct 2026daily and hourly; 5- and 15-minute
IG52 marketsJul 2026live (bars to 24 Sep)1-second live capture; bars

Price bars by resolution

Catalog estimates of raw bars held, in millions.

1-second309.8M
1-minute632.4M
5-minute75.1M
15-minute27.7M
Hourly35.9M
Daily20.8M

Compressed 7 to 13 times on disk, depending on resolution.

Tickers by asset class

Tickers with stored bars, each counted once, by the asset class in the instrument reference.

  • Equities 6,008
  • Futures 4,029
  • Crypto 526
  • Volatility 273
  • ETFs 199
  • Indices 46
  • Rates 36
  • FX 16
  • Spot commodities 4
  • 47 exchange calendars and 47 futures roll rules, with vendor symbols verified for 4,832 futures contracts.
  • Continuous futures are rebuilt from source contracts, roll rules and logged stitch operations, with one provider at any instant.
  • Live IG capture timestamps each tick on arrival and writes each bar once. Gaps are recorded, never filled in.

For your firmFutures, FX, equity, index, volatility and crypto history is already loaded. A new vendor is onboarded the same way as the ten here: registered as a source, checked by the same validators, and served through the same API.

04Data quality

Data quality you can audit

A backtest is only as good as the bars under it. Nexus never edits raw data. It checks every dataset, logs each correction as a reversible operation, and serves a clean view that can be rebuilt from raw at any time.

  1. Step 1

    Raw

    Every vendor bar is kept as delivered, in append-only tables.

  2. Step 2

    Validate

    37 check types run against each dataset and record what they flag.

  3. Step 3

    Clean

    Each fix is one logged, reversible operation with before and after statistics.

  4. Step 4

    Promote

    A dataset is marked clean only when its checks pass.

  5. Step 5

    Serve

    Research and trading read canonical series through the data API.

QuarantineA dataset that fails is held back, with its reason on record, until it is fixed or retired. 45 are held today.

249,543validation results recorded, across 6,642 datasets
6,631logged cleaning operations, each reversible
6,432datasets promoted to clean
38futures with a modelled trading-cost estimate, at two broker tiers

What the checks look for

A selection of the 37 check types.

  • OHLC integrity
  • gaps and duplicates
  • bar timing
  • bar completeness
  • robust outliers
  • out-of-hours bars
  • recency
  • cross-vendor coherence
  • peer coherence
  • quote conventions
  • adjustment consistency
  • roll-return excess
  • contract-symbol coverage
  • declared-spec conformance
  • liquidity adequacy
  • minimum history
  • The same robust outlier test runs in the batch cleaner and in the live guard, so research and trading reject the same bad prints.
  • Point-in-time revision tables hold broker parameters, costs, the trading universe and contract specifications, so a backtest sees what was known on the day.

For your firmWhen a result looks too good, you can trace every bar behind it back to the vendor's delivery and every change made to it.

05Research

Research support for trend, reversion and relative value

Nexus is not built around one strategy. Six simulation engines cover daily portfolio backtests, statistical arbitrage, minute-level and intraday simulation, and overlays. A strategy builder covers two of them today, trend books and target-position panels, and opens a saved strategy as its components and results. Every style runs under the same controls.

Days to weeks

Trend following

Diversified futures books across asset classes, tested on decades of daily history with a cost charged on every trade.

Minutes to days

Mean reversion

Intraday and daily books on minute and hourly bars, with costs charged before a trade is admitted.

Hours to days

Relative value

Spread and basket books across related instruments, simulated leg by leg with each leg's costs.

Your horizon

Your strategy

A new strategy is integrated through the builder's extension points, then follows the same governance path: register, authorise, test, decide.

  • Pre-registered verdicts

    Every campaign writes its accept rule before any result exists, and closes on that rule.

  • Authorisation gate

    No registered test runs without a one-shot, root-owned authorisation that binds the spec hash, the code SHA, the data IDs and the operator's sentence. No agent can write it.

  • Counted trials

    An append-only register is checked before any market-data read. A run larger than its reservation is refused, and retrospective bookings still count.

  • Sealed hold-out

    A read spends a look only if it produces a return, a fit or a selection. A sealed slice is spent once, with no refund after a crash.

  • Costs at admission

    A trade is admitted only if the forecast clears its uncertainty and a measured cost reserve. An unmeasured instrument never gets a default cost.

  • Look-ahead guards

    Tests check that no future data reaches a signal; 38 test files address look-ahead, from signal checks to the CI and deploy gates that run them. Walk-forward scoring uses deflated out-of-sample statistics.

For your firmYour strategy is tested the way a sceptical reviewer would want: trials counted, hold-out sealed, costs measured, and the verdict rule written down first.

06Your model

Bring your model. Nexus supplies the rest.

For a quant with a model, the expensive part is everything around it: clean history, a bar clock, sizing, turnover limits, risk caps, costs, honest statistics and a path to a broker. In Nexus a strategy is a document of named slots, and a model fills the forecast slot. Bringing a model in is integration work: it is registered as a forecast component through the builder's extension points and runs on an engine that already exists. It does not need a new backtester.

A strategy document, in outline
strategy
  sleeve
    universe    instruments, series
    clock       5-min, hourly, daily
    forecasts   <- your model
    blend       how forecasts combine
    sizing      forecast to position
    turnover    no-trade band, trades
    risk        caps and limits
    cost        charged per trade
  book
    allocation  across sleeves
    book risk   book-level limits
    band        weight band

Stored trend books hold several sleeves each. Composing changes a stored strategy's settings within bounded menus; it does not add or choose sleeves.

Way in 1

A forecast for a trend book

Your model emits a signed forecast per market per bar and joins the trend engine as a new forecast. The engine sizes positions from the forecasts, applies the turnover band and risk caps, and charges costs per trade, on a daily clock.

Way in 2

A forecast for a cross-sectional panel

Your model scores a panel of markets on a five-minute or hourly clock. The target-position engine turns the scores into position targets, clips them to limits, holds small changes inside a no-trade band, trades the rest, and charges a measured cost on each trade and financing on each bar.

Either way

Same data, traceable code

The model reads the same clean series as research and trading. Every logged look records the deployed commit it ran on, and a saved strategy records its code version, so a result can be traced to the code that made it.

What comes back, bar by bar

The stages each path exposes, so you can see where a result was made or lost. Panel strategies show all of these; trend books show forecasts, positions, trades, costs and P&L, without the target stages.

  1. prices
  2. forecast
  3. raw target
  4. clipped target
  5. traded position
  6. trades
  7. cost per trade
  8. gross and net P&L

One report shape for both paths

The same sections whichever path ran, each in that path's own units.

  • Gross and net P&L with the cost between them: in basis points for trend books, and in dollars with a trade-cost and financing bridge for panels.
  • Sharpe never alone: always beside its standard error and the number of bars and years behind it.
  • Turnover, drawdown and hit ratio per bar, and P&L per leg for panels.
  • Forecast rank IC for panels, against the returns the forecast was meant to predict.
  1. 1

    Preview

    Score the strategy on the declared window for its clock. Warm-up history is loaded but never scored, and every look is logged.

  2. 2

    Compose and save

    Change a stored strategy's settings within bounded menus. Panel strategies can be saved today, under a name that is never reused; saving composed trend books is built and awaiting release.

  3. 3

    Long test

    Submit the document. The trial is booked in the register first, then the job queues with a runtime estimate and runs to a descriptive report, not a research verdict.

For a quantBring the model and keep it in one component. You get governed backtests on clean data, costs on every trade, statistics that state their own uncertainty, and a record of the code behind every look. Trading a new kind of model is a separate step: the trader runs trend books today, and another model type needs its trader integration built first.

07Production

Built to run every day, not just to backtest

The same platform that tests a strategy runs it: a per-market scheduler, pre-trade controls and reconciliation on the trading side, and checks, alerts and tested backups on the operations side.

Execution and risk

  • A per-market scheduler that is time-zone and daylight-saving correct, idempotent and dry-run by default.
  • Order and position limits staged from off to warn to block, which never block a risk-reducing order. Price collars and a margin cap.
  • An equity-drop halt that freezes every order, and a kill switch that runs outside the trading process.
  • Position and funding reconciliation against the broker, plus slippage and cost analysis.
  • The trader sizes positions with the same library as the backtest.

For your firmPre-trade controls in the spirit of MiFID II RTS 6 and SEC 15c3-5, and reconciliation that finds breaks early.

Operations and assurance

  • 41 registered checkers run on timers. Each red result opens one idempotent work item, and no item closes itself.
  • All 116 first-party system units have a failure alert wired. The coverage check counts wiring, not delivered alerts, and says so in its own output. The 113 user-level units are a separate layer that it does not measure.
  • Memory limits per workload class, and a per-job memory ceiling for heavy runs.
  • Daily database backups copied offsite, a monthly full restore of the market store and a weekly restore smoke test.
  • Self-assessed against FIA guidance, MiFID II RTS 6, SEC 15c3-5 and NIST CSF, from a prop firm's point of view: 2.2 to 3.4 out of 5 over three reviews.

For your firmOperational resilience you can evidence: checks that report, alerts that fire, and a maturity score with the gaps listed.

08AI fleet

An AI engineering fleet, under control

Thirty agent seats from three AI vendors build and maintain Nexus. The controls are the point: every change is a leased work item, made in its own worktree, reviewed by a different agent at the exact commit, tested on scoped CI and shipped through a deploy ledger.

3,044work items on the board, 2,801 done
4,403leases recorded in the claim ledger
3,911merged pull requests, 14 repositories
≈17,900test functions in 1,796 files
25self-hosted CI runners, 31 workflows
1,609deploys in the deploy ledger
  1. 01

    Item

    Work is an item on the board, not a chat message.

  2. 02

    Lease

    A seat takes the item for a fixed term and gets its own worktree. Leases expire on read, so no sweeper is needed.

  3. 03

    Change

    The agent works in its worktree and pushes a branch. Shared clones are never edited.

  4. 04

    Review

    A different seat, often from another vendor, approves the exact head SHA. An approval of any other SHA does not count.

  5. 05

    CI

    The diff is classified into test lanes on self-hosted runners. An unchanged tree reuses its green run.

  6. 06

    Merge

    Merge lanes serialise main. The research repository accepts merges only as tested batches.

  7. 07

    Deploy

    deploy-now ships the tested tree, runs the service's gate and a health check, and logs the result. It refuses dirty trees, stale clones and rollbacks.

  8. 08

    Watch

    Checkers turn anything red into a new item, and the loop starts again.

For your firmAdopting AI coding agents with the controls a regulated team needs: leases, isolation, independent review, a cost meter and a deploy ledger you can query.

09Onboarding

Onboarding a systematic strategy

Each step below uses a part of Nexus that runs today. A firm can take the whole path, or only the parts it is missing.

  1. 1

    Map

    Agree the markets, horizons and data. Each instrument gets its source, calendar, roll rule and a trading-cost estimate.

  2. 2

    Load and check

    History is loaded raw, validated, cleaned with logged operations and promoted only when its checks pass.

  3. 3

    Test

    The strategy or model is registered with its accept rule, authorised, and run on the simulation engines against a sealed hold-out.

  4. 4

    Paper-trade

    The book runs through the trader on a broker demo account, sized by the same library as the backtest and reconciled against the broker. The trader runs trend books today; another model type gets its trader integration first.

  5. 5

    Operate

    Pre-trade limits, the halt and the kill switch stay on. Checkers and alerts watch data, jobs and positions.

See it appliedThe systematic trend programme is an example running on Nexus today. It was researched and tested on the platform, and it has run every day in forward incubation on a broker demo account since 12 August 2026. It has no live track record yet, and its case study says what that means for the results. Read the trend programme case study →

10Incidents

Hardened by incidents

Each of these happened in production, and each left a rule or a tool behind.

Release safety

Why rollback is refused

A rollback deploys an older commit, and that commit passes its own tests. The gate goes green on the way down while the service moves backwards past fixes. The deploy tool now refuses it, and fixes go forward.

Release safety · fix-forward practice

Resource isolation

The host that stalled

Three agent sessions exhausted memory. With unbounded swap, no OOM kill fired: the host ground for about 100 minutes and was unreachable for about ten. The fix was per-slice memory caps, a guaranteed floor for Postgres and CI, and a per-job ceiling.

Linux resource isolation · incident forensics

Concurrency

Two agents, one identity

Two shells reported the same agent id, and one released the other's live claim with no audit trail. The lease tool now refuses a second claim under a shared id and flags the collision.

Concurrency control · fail-closed design

Monitoring

Green is not delivered

Every first-party system unit now has a failure alert wired. A green check proves the wiring exists, not that anyone is paged, so the checker prints that limit in its own output.

Testing safety controls · honest monitoring

11Scope

What this is, stated plainly

  • The trader runs against IG demo accounts. Of its 2,028 order records, 826 reached the broker, all on demo accounts; the rest are dry runs and orders that never got a broker deal reference. The one live account is disabled and has no orders. It has not traded real money.
  • One operator and one production host. The bus factor is one, and no human other than me has reviewed the code; agents from different vendors review each other.
  • AI agents write most of the code. My part is the architecture, the controls, the review standards and the rulings on what ships and what a result means.
  • This page describes the framework. It shows no strategy returns and makes no performance claim.
  • The maturity score is a self-assessment. A 5 needs independent verification, so it is out of reach by construction.

Sources, read 2026-10-01 between 18:27 and 18:40 UTC: GitHub for merged pull requests, runners and workflows across the 14 platform repositories; git on each repository's main branch for test files and functions, routers, pages, checkers and seats; the work board and its claim ledger; the deploy ledger, excluding test-fixture rows; TimescaleDB catalog estimates, compression statistics and the coverage cache for bars, tickers, sources and history; the instrument reference for asset classes; the validation, cleaning and dataset tables for data quality; the trader's account and order tables; the unit-alert coverage checker; and the dated review and incident records.

12Deep dives

Closer looks

Case study

Thirty agents, one board

How the AI fleet works day to day: the seat roster, the Postgres work board, the lease a seat takes before it edits anything, the dispatcher's eleven gates, review by a different agent, and the lessons each control came from.

Read →

Reference

Stack by example

53 technologies, each with where it lives in the code, what that code does and the detail that matters.

Read →

Explainer

The Hermes alert path

How an alert gets from any service to Slack without blocking the caller: a 202, a transactional outbox and a delivery loop.

Read →

Explainer

Scheduled by systemd

No Celery, no Airflow, no crontab: every service and job is a systemd unit, and Postgres does the queueing.

Read →

Explainer

One host, many tenants

How accounts, cgroups and scheduling keep the database and trading running whatever else the server is doing.

Read →

Explainer

The Nexus CI system

How each change pays only for the tests it needs, on self-hosted runners, with one writer to main.

Read →

Onboarding a systematic trading system?

I can set up this framework, or the parts you are missing, around your strategy or your model: the data platform, the research controls, execution and risk, and the agent fleet that maintains it.