How it works

How Pulse simulates the market

Pulse turns a real trading day into as many realistic alternative days as you need — order by order, trade by trade. Use them to test an algorithm before it meets a live market, stress a strategy against a crash that never happened, or train models on far more market data than history can give you.

01

Real market data in

Pulse starts from the recorded order books of real exchanges — every order placed, amended, cancelled and traded on HKEX and LSE symbols.

02

Two engines generate

An agent-based simulator and a family of foundation models each learn how that market behaves, then generate new trading days from it.

03

Synthetic markets out

You get back full order books and every trade — as many alternative days as you ask for — checked against the real day before you rely on them.

Two engines

Simulate the traders, or learn the market

Pulse generates markets two different ways. They answer different questions, and because both return the same order-book format, you can run the same analysis on either.

Agent-based simulation

ABM

A market built from the bottom up. A population of trader agents — liquidity providers, fundamental traders, momentum traders and noise traders — place, cancel and trade orders against each other in a simulated limit order book.

Each agent's appetite is written down explicitly and fitted to the chosen symbol and day during calibration, then run on a highly optimised C++ matching engine. Because the market is made of agents, it reacts: push a large order into it and the book pushes back.

Reach for it when
  • You want to ask “what if?” — a crash, a panic, a trend
  • You're testing an execution algorithm against a market that responds to it
  • You need to explain why the market did what it did

Foundation models

FM

A market learned from data. Trained on real order-book activity, a foundation model reads a real market's recent history and generates what happens next — continuing from the actual state of the book rather than simulating the traders behind it.

Pulse runs several model families — diffusion and autoregressive — on GPUs, and can stream generated frames live instead of writing a file. Output comes back in exactly the same format as an agent-based run, so the same tools read both.

Reach for it when
  • You want the most lifelike continuation of a real market
  • You want to pick up from the book as it stands right now
  • You want generated order flow streamed live

What Pulse can do

Ask the market questions it can't answer on its own

History only happened once. Pulse lets you rerun the day under different conditions and see the full range of what could have happened. The figures below are real Pulse output — the same runs behind the MCP demo.

Scenarios

Inject an event into the day and watch the book absorb it. Here, the same 700.HK session run normally and with a flash crash: a rapid sell that tears through the bids at 10:30, and a market that never quite recovers the gap.

normalflash crashbuy panicgradual sell-offtrending uptrending down
586594602609617lunchcrash hits09:3013:0015:57mid price, HK$
Normal · 25 runsFlash crash · 24 runsLine: median path · band: middle 80% of runs · 700.HK, one trading day

Execution algorithms

Put your order into the simulated market and measure what it costs. Every algo run is benchmarked against a baseline of the same scenario without it, splitting the cost into slippage, market impact and risk.

TWAPVWAPcustom schedulesslippagemarket impactrisk
Selling 100 lots through a flash crash
TWAP
HK$8.30
VWAP
HK$8.32
Selling 500 lots through a flash crash
TWAP
HK$20.68
VWAP
HK$23.13
Average slippage per lot across 25 Monte Carlo runs each. At 100 lots the two schedules tie; at 500 lots VWAP chases a volume curve the crash has torn up, and TWAP comes out HK$2.45 a lot cheaper.

Monte Carlo paths

One backtest is one story. Run the same day dozens of times on independent seeds and you get the whole distribution — every path a strategy could have faced, not just the one that happened.

700.HK09:30604.25604.50+0.25
580.00590.00600.00610.00620.00630.0009:3010:0011:0013:0014:0015:00
Normal · 25 runsFlash crash · 24 runs

Is it realistic?

Every run can be checked against the real day

Synthetic data is only useful if it behaves like the real thing. Pulse-Check scores a simulation against the same historical window it was calibrated to — how the order book is shaped, how prices move, how the market responds to trading — so you know how far to trust a run before you use it.

stylised factsL1-norm and Wasserstein distanceimpact response
For the curious: what the agents are made of
q_f = κ·(F − P_t)Fundamental demand: the gap between fundamental value and price
q_m = β·ΔP_tMomentum demand: the recent price trend
q_n ~ N(0, σ²)Noise demand: random order flow

κ fundamental responsiveness · β momentum responsiveness · F fundamental value · σ noise scale. Each is fitted per symbol during calibration.

Ways in

Use it however you work

The same simulations, from a chat, a browser, your code or your trading stack.

Ask Claude

Connect Pulse to Claude or any MCP client and describe the market you want in plain English. Pulse picks the right tools, runs the jobs and reads back the results.

See a Pulse MCP session →

Console

Configure runs, explore results, compare scenarios and inspect the order book second by second in the browser.

Quickstart

Python SDK & API

Everything in the Console is an API call. Pull results straight into Polars and into your own research.

API reference

FIX

Point your algo at Pulse's simulated exchange over standard FIX 4.4 — at up to 10× speed — before it meets a live market.

Pulse over FIX

Plans

Start with results, grow into the full pipeline

Free tier

Skip straight to results

No queue and no configuration: browse a library of pre-run simulations across HKEX and LSE symbols, dates and scenarios.

  • Six scenarios, up to 10 Monte Carlo runs each
  • The same order book history a Pro job returns
  • Download as a Polars DataFrame or a bulk ZIP
Start free

Pro tier

Your market, your question

Pick the symbol, the trading day, the scenario and the algorithm, and run either engine against a day of your choosing.

  • Agent-based simulations and foundation-model runs
  • TWAP, VWAP and your own custom schedules
  • Execution results benchmarked against a baseline
  • Pulse-Check validation against the real day
Compare plans

See it for yourself

Every simulation returns the Level 3 order book — every message, in sequence, at individual-order granularity. Browse the free library, or watch Pulse answer a real question in Claude.