London DataTrading systems technology

Nexus deep diveStep 5 · ProductionCompanion to the case study

Production.

The platform that tests a strategy runs it every day: each market on its own clock, a rehearsal before the first order, a reconciliation after the last, four layers of watching, and backups that are restored.

A backtest runs once. Production runs every day, including the day a feed stalls, a broker changes its dealing rules or a job fails at three in the morning. Nexus is run by one operator and a fleet of AI agents, so the system has to notice its own faults and put each one where someone will act on it. This page follows one day: what runs when, how the trading day is checked before and after, what watches the jobs, what happens when something goes red, and how the data is kept. Each part is marked with what runs today.

Units watched355services and timers in the unit registry, each naming what watches it
Automated checks5043 registered checkers, 42 of them run twice a day on the production host, and 7 fast checks every 15 minutes
Day ledger31checks scored each day on the trading before it: pass, warn, fail or skip
Restore drill661chunks of the market store restored in 8 min 59 s, the first monthly full restore, 2 September 2026

Read on 2026-10-22 from the main branch of each service: the timer and unit files, the checker and unit registries and the trader's check code, with the schedule checked against the production host's installed timers at 14:42 UTC. Restore figures are from the drill's record.

01The day

One day on one clock

Every scheduled job is a systemd timer set to a fixed UTC time or to a local time, and the order scheduler is a resident service that fires each market at its exchange's time. There is no crontab and no workflow engine, as set out in Scheduled by systemd. Data is refreshed and backed up overnight, the checks report in the morning, and orders go out in the afternoon, UTC.

One day of production jobs, in UTC Four lanes across 24 hours of UTC. Data: an overnight refresh from 00:30 to 05:00, the validation battery at 05:50, Databento at 13:30, risk snapshots at 18:00 and the Cboe volatility complex at 23:45. Backups: dumps, restore drills and the offsite copy from 00:10 to 05:00. Trading: reconciliation, the day ledger, dealing rules and roll readiness from 05:30 to 06:15, the pre-trade test at 14:37, orders at 16:03, 17:03, 18:03 and 19:03, and fills and funding from 22:00 to 23:30. Checks: morning reports from 06:20, and the checker registry at 07:07 and 19:07. Beneath, a strip of jobs that run every 15 minutes all day. 000306091215182124 UTC DATA overnight refresh 00:30–05:00 Databento 13:30 risk VIX BACKUPS dumps · drills · offsite 00:10–05:00 · ○ restore drill TRADING recon · ledger · rolls 05:30–06:15 pre-trade test 14:37 orders 16:03–19:03 fills · funding 22:00–23:30 CHECKS checker registry reports 06:20 · checkers 07:07 checker registry 19:07 EVERY 15' fast checks · trading-database dump · live-capture export · host collectors · series and feed health
Thursday 22 October 2026, in UTC. The shaded column is the order window. Jobs set to a market's local time move by an hour when that market's clocks change: London on 25 October, the US on 1 November.
UTCTradingDataChecks and backups
00:00–05:00—Gaps in the live capture refilled from the broker's history, 03:37 on weekdays. Contract symbols and their check, Databento contract legs and continuous series, index constituents, futures carry and its check, the IG price blend recomputed in full, the crypto universe, DukascopyDaily dumps 00:10, weekly on Sundays 01:10, monthly on the 1st 02:10, offsite copy 04:00. Restore drills on the 2nd at 02:30 and on Mondays at 03:00 and 03:30
05:30–07:50Reconciliation and the day ledger 05:30, the broker's dealing rules 05:38, roll readiness 06:07, measured spreads 06:15The 25-check validation battery 05:50, a sweep for minute data with no hourly bar 07:50Morning reports from 06:20, the checker registry 07:07
13:30–19:07The pre-trade test 14:37, orders 16:03 to 19:03, a target-only snapshot 16:30, the live book run beside its point-in-time twin 18:25Databento 13:30, realised volatility and correlation 18:00 and 18:10The checker registry 19:07
22:00–23:45Fills into the book of record 22:00, the broker's transactions and funding 23:15, the portfolio snapshot 23:30The Cboe volatility complex 23:45—
Fixed-time jobs from the timer files on each service's main branch, checked against the production host's installed timers on 22 October 2026. The capture refill, the pre-trade test and the afternoon snapshots run on weekdays; weekly and monthly jobs on the days shown.
  • 1 min the trader's scheduler
  • 5 min market status
  • 15 min fast checks, dumps, capture export, collectors, health
  • 20 min sweep for failed units
  • 30 min account snapshot
  • hourly the IG blend, host staleness, series coverage
02Trading day

Rehearsed before, reconciled after

The trader runs as a resident loop that reads the schedule every minute. Each market trades at its own exchange's local time, so the order slots follow each exchange's daylight saving and holidays. Around the slots sit a rehearsal of the whole book before the first order and a reconciliation of the day after the last. Times below are UTC for this week.

  1. 1

    Reconcile the day before

    00:30 Chicago time, 05:30 UTC this week

    One job runs in a fixed order: the slippage bridge from model to live prices, the day ledger, a breakdown of any gap between the model's positions and those held, the bridge from simulation to live, the reconciliation of the trader's book against research's targets, a check that the ledger was written, and a proposed verdict on the session.

    Can halt tradingOnly the book reconciliation, and only when the weight gap is more than a tenth of the book's gross weight or the two sides' configuration signatures disagree. A halt freezes new orders and keeps positions.

    Runs

    Every day, with a failure alert on the job.

  2. 2

    Refresh the broker's terms and the rolls

    05:38 to 06:15 UTC

    The broker's dealing rules for each market, such as minimum size and margin, are read and kept as dated observations. Roll readiness is checked for every dated contract; it detects and never trades. Measured spreads are recorded for the cost model.

    Runs

    Every day.

  3. 3

    The pre-trade test

    14:37 UTC, Monday to Friday, before the first slot

    The pre-trade test logs in to the broker for real and reconciles the trader's book against the broker's positions. Then it runs the live trading path over every active market with orders switched off: market status, prices, contract and roll-pair resolution, then the margin cap, the halt and the kill switch, and the position and order limits, price collars and self-match check on every order. Each would-be order is recorded with any limit it touched. When trading is halted or the kill switch is set, the test skips and records why.

    Found a fault in itselfOn 27 August 2026 the rehearsal wrote a simulated position onto the working book, and the 18:03 slot then sent an opening order with no closing one, on the demo account. Since 28 August a dry run never touches holdings, and roll pairs are checked on every tick.

    Runs

    Since 24 August 2026. An unclean reconciliation, a halted path, an error or any would-be flip, open or close sends an alert; a broken path also fails the job. A book that has drifted is caught again by the first slot's own reconciliation, which stops that slot.

  4. 4

    Orders, each market at its own time

    16:03, 17:03, 18:03 and 19:03 UTC this week

    Slots are set by market group: metals at 11:03 Chicago time, sugar at 17:03 London, grains, FX, livestock and the other softs at 12:03 Chicago, rates at 13:03 Chicago, energy at 14:03 New York and equity indices at 14:03 Chicago. A slot missed by a restart is caught up within two hours, and an exchange holiday is skipped. Before each cycle the book is reconciled with the broker, and every order passes the staged limits, collars, margin cap, halts and kill switch set out in Execute.

    Runs

    On an IG demo account. The position and order limits and the price collars run at warn: they flag a breach without stopping the order.

  5. 5

    After the close

    22:00 to 23:30 UTC

    The day's fills are copied into the book of record, the broker's transactions are pulled to reconcile overnight funding, and the portfolio is snapshotted.

    Runs

    Every day.

The day ledger

31 checks on the trading before it, each scored pass, warn, fail or skip. One fail makes the day fail and sends an alert.

Plan and execution, including the pre-trade reconciliation8
Slippage, model against live6
Model and its inputs5
Feed health5
Risk and controls: halt, parameters, margin, rolls4
FX quoted the other way up2
Whether there was any activity1
Brakes that act on their own

Trading halts after three tick errors in a row, three failed orders in a row on open markets, or a fall in equity from its peak deeper than a threshold derived from the book. It also halts after a set number of days with no authenticated action from the operator. A kill switch outside the trading process stops it, and one that cannot be read counts as set.


Every halt keeps positions. Closing them is a decision for a person. Each brake in detail →

For your firmA rehearsal of the whole book before the first order and a scored ledger of the day after the last are two of the cheapest controls a systematic desk can add. How execution works →

03Live data

Prices checked while they arrive

The live feed is checked in the same rhythm as everything else, every fifteen minutes and every night. The checks themselves are set out in Capture and Validate and clean; here is when they run.

  • Written once. Broker ticks are stamped on arrival and written once as 1-second and 1-minute bars. A second with no ticks stays a gap, and gaps are refilled from the broker's history at 03:37 UTC on weekdays.
  • Feed health, every 15 minutes. The trader measures tick age, heartbeat, quote delay, 1-second coverage, crossed spreads and jumps in the mid, for the operator's console.
  • Series health, every 15 minutes. The data service snapshots the health of each series and checks which way each FX rate is quoted against an independent reference.
  • The blend, hourly. The IG price blend is rewritten every hour and verified by a full recompute at 02:50 UTC.
  • The battery, each morning. At 05:50 UTC the 25-check validation battery runs and records a result for each dataset and check, as set out in Validate and clean.
  • Gaps, each morning. At 07:50 UTC a sweep finds minute data that has no hourly bar.
  • Staleness, twice a day. A checker in the registry opens a work item for any feed whose data has stopped arriving.
04Watching

Four layers of watching

A failed job is only useful if someone hears about it. Nexus watches at four speeds, and every service and timer in the unit registry names the layer that watches it.

LayerHow oftenWhat it watchesWhen redState
Failure handlersOn failure, and a sweep every 20 minutesEvery system service and timer on the production host. A unit that fails sends its last log lines to the alert bus; the sweep catches any unit left failed.A post to the operations channel in Slack, at most once an hour for each unitRuns
Fast checksEvery 15 minutesSeven checks on the machinery of change: the release installer, the coordinator's turns, the merge backstop, and GitHub's quota and statusOpens or updates an S3 incident, and pages once when it opens and once when it recovers; delivery of those pages is not yet on recordNew since 18 October 2026
Checker registry07:07 and 19:07 UTC43 checks, 42 of them on the production host and one in CI: alert wiring, deploy and release drift, data and trading correctness, database grants and audit rules, capacity, CI, and the work board's own recordsOne work item per finding, reused while it stays open; no item closes itselfRuns
Host collectorsEvery 15 minutes; staleness hourlyDisk, memory, swap, unit states, database sizes and logs on each host. A host that stops reporting fails the hourly check.A post to Slack after two bad readings in a row, at most once a day for each check. Memory above 75% or swap above 50% for two readings counts as bad.Runs
From the checker registry, the fast-check roster, the unit registry and the host collector's thresholds on their main branches, read 22 October 2026.

The unit registry

Every service and timer on the production host, and those the collectors report on two others, each with its owner, the signal that matters, its threshold and what watches it.

Services and timers listed355
Naming what watches them355
With a failure handler wired321
Caught by the sweep7
Watched by a checker or a collector, without a page of their own27

A wired handler is not a delivered page. The alert bus made 8,934 deliveries to Slack in the 30 days to 27 August 2026, and none failed. Of the production host's 126 user-level units, 112 have a handler on a route added on 11 October 2026; delivery from them is not yet on record, and a checker opens a work item for any that fails.

Slack, one way

Alerts reach Slack through Hermes, which commits each one to its database before a separate loop posts it.

  • One operations channel takes the alerts from every layer; digests have channels of their own.
  • Nothing comes back in. Slack is read by a person. No agent reads it, and nothing posted there is an instruction.
  • Deduplicated at the source. The main senders key their alerts, so a fault that persists posts at most hourly or daily, not every cycle.
05When red

Red becomes a work item or an incident

An alert that only says something is wrong is forgotten by the next morning. In Nexus a red result becomes a record that someone has to close.

  • Work item Runs

    A checker's red finding opens one row on the work board, keyed by the check and the finding. The next sweep finds the same row open and adds nothing, so a fault that persists does not flood the board, and a finding about an open row is added to it as a note. No row closes itself: an agent or the operator closes it with an outcome.

  • Incident Runs

    The fast layer opens an S3 incident instead. The register grades every incident: S1: money at risk, or a control that keeps it safe not working. S2: a protective control failing with nothing saying so. S3: detection or diagnosis degraded, the fault contained. S4: latent, found by inspection before it could act. The register went into use in mid-October 2026; earlier incidents were entered afterwards.

  • Who acts Rule

    Work items are picked up like any other work on the board: leased by one agent seat, fixed in its own worktree, reviewed by a different agent unless the fix is trivial, and deployed on the operator's word. See Agents.

One red, start to finish 6 h

From the checker's red to green, 4 September 2026, in UTC.


06:35 The job that renders the status board fails.

07:07 The morning checker sweep finds it and opens a work item.

13:03 The fix merges and is installed.

13:04 The job runs again and exits clean. The checker reads 0 failed of 83 user units.

06Backups

Backups that are restored, not just taken

A backup nobody has restored is a hope. Nexus dumps the trading database every fifteen minutes and every database each night, copies them offsite, and restores them on a schedule to prove the data comes back.

CopyWhen (UTC)Kept on the hostKept offsite
The trading databaseEvery 15 minutes24 hours24 hours
The live price captureEvery 15 minutes, the last hour, overlapping7 days, one per hour7 days, one per hour
Every database, daily00:106 days7 days
WeeklySunday 01:103 weeks4 weeks
Monthly1st, 02:103 months12 months
The offsite copy runs nightly at 04:00 UTC. A digest at 05:00 reports the night's dumps, and a coverage check each morning confirms that nothing on the host has been left out of the backup set. From the backup service's timers and retention settings, read 22 October 2026.
  1. 1

    Weekly smoke restore

    Mondays, 03:00 UTC

    The book of record is restored from its latest weekly dump into a scratch database. The drill passes when the restore completes.

    Runs
  2. 2

    Weekly file read-back

    Mondays, 03:30 UTC

    Each archived file tree is checked against the SHA-256 recorded when it was written, then opened and read to its end.

    Runs
  3. 3

    Monthly full restore of the market store

    The 2nd of each month, 02:30 UTC

    The TimescaleDB market store is restored in full from that night's daily dump, and its hypertables and chunks are counted against the live database.

    Runs

    First run on 2 September 2026: 12 hypertables and 661 chunks in 8 minutes 59 seconds.

07Change and access

One way to ship, one rule for writes

Most production faults arrive with a change. Nexus has one path for a change to reach production and one rule for who may write production data.

  • One deploy tool. It runs the service's tests, ships the exact tree, restarts and health-checks the service and logs the result. It refuses a dirty tree, a stale clone, an unmerged head and a rollback; fixes go forward. See Test, merge, ship.
  • Jobs by name. A one-off job is started by name from an allow-list, under a memory ceiling, and its result is logged.
  • Three ways to write. Production data is written by a service through its interface, by an allow-listed job, or by a schema migration. Nothing else is sanctioned.
  • Agents read. The agents' database account reads, and raw price tables need a separate role taken for the session. It writes coordination records, such as the work board and the incident register.
  • Heavy work capped. Sweeps and batch runs go into a memory-capped slice with no swap, so a runaway job is stopped rather than stalling the host. See One host, many tenants.
  • Freezes on the board. A deploy freeze is a row on the work board, so every agent that reaches for a deploy sees it.
08Agents

Where the AI agents sit in production

Thirty-four agent seats build Nexus, as set out in Agents. In production they read, report and fix through the same board as any other change. They do not trade, and nothing they write reaches production without the deploy tool and the operator's word.

  • Morning review On request

    An agent reads the 16-job overnight roster, the day ledger, the last batch sent to the broker and any drift between what is merged and what is deployed. It opens a work item for each finding and can post one digest to the operations channel on a morning with something to follow up. It never deploys.

  • Trade check On request

    A read-only review of the latest batch: orders, fills, the touch at the time of each order, round-trip time and the reconciliation. It never places, cancels or closes an order.

  • Fixing what goes red Runs

    A checker's work item is ranked by the coordinator, an agent itself, and taken by one seat under a lease. Unless the fix is trivial, a different agent reviews the exact commit before it merges.

  • Deploys Rule

    An agent runs the deploy tool only on the operator's word, and the tool's refusals apply to agents and the operator alike.

  • Shared state Designed

    A shared layer for the agents: acknowledged messages between roles, and one live view of every seat for the coordinator. The role inboxes are live; the coordinator does not read the seat view yet.

09Stated plainly

What runs, stated plainly

Each line here was checked against the code, the timer files or the registries on 22 October 2026.

Runs today
  • The per-market scheduler, the pre-trade test, reconciliation with the broker before every cycle and against research's targets overnight, the 31-check day ledger, and the funding reconciliation.
  • 43 registered checkers, 42 of them twice a day on the production host, each red finding opening one work item that does not close itself.
  • Failure handlers on the production host's system services and timers, a sweep every 20 minutes, and host collectors with a staleness check.
  • Dumps of the trading database and the live capture every 15 minutes, daily, weekly and monthly dumps copied offsite, and weekly and monthly restore drills.
  • One deploy tool with its refusals, and one rule for writing production data.
Runs, with limits
  • Demo account. The trader runs on an IG demo account.
  • The rehearsal is of the path, not the orders. Signals can change between 14:37 and the slots, and sending and confirming orders is not rehearsed.
  • Reviews on request. The morning review and the trade check are run by an agent when asked, not on a timer.
  • Feed health is shown, not acted on. No order waits on the 15-minute feed measurements.
  • The fast layer is new. It has run since 18 October 2026, and its incident step was added on 20 October. Delivery of its pages is not yet on record.
  • User-level units. 112 of the 126 have a failure handler on a route added on 11 October 2026, and delivery from them is not yet on record.
  • One person. Alerts go to one channel read by one operator. There is no on-call rota.
Not built
  • Service-level objectives and error budgets.
  • A way back in from Slack. Alerts go out; acknowledgements and commands do not come back.
  • Scheduled agent reviews. The morning review has no timer of its own.
  • This page describes how the platform is operated. It shows no strategy returns and makes no performance claim.
  • Times are UTC for the week of 22 October 2026. Jobs set to a market's local time move when that market's clocks change.

Sources, read 2026-10-22: the production host's installed system and user timers, read at 14:42 UTC; the timer and unit files on the main branch of the trader, data, backup, book-of-record, risk, research, console and host-monitoring services and of the tooling repository; the checker registry, the fast-check roster and the unit registry; the trader's pre-trade, reconciliation, day-ledger, limit and halt code; the backup service's retention settings and restore-drill code; the database write-authority standard; and the dated status records for the restore drill of 2 September 2026, the incident of 27 August 2026, the work item of 4 September 2026 and the alert deliveries to 27 August 2026.

10Reading

Reading

Running production systems

  • Beyer, B., Jones, C., Petoff, J. and Murphy, N. R. (eds.) (2016). Site Reliability Engineering: How Google Runs Production Systems. O'Reilly Media.
  • Nygard, M. T. (2018). Release It! Design and Deploy Production-Ready Software, 2nd edition. Pragmatic Bookshelf.

On this site

Running a book every day?

I can put a pre-trade rehearsal, a daily reconciliation ledger and alerting that someone acts on around your trading, or review the ones you run now.