Pulse is synthetic orderbook data for training

Millisecond-resolution L1/L2 quotes, depth, trades, and order flow — via a Python SDK. Free to get started.

Simulation run in Pulse · 700.HK 09:30:01

Order book · 700.HK
PriceSize
609.5014,600
609.005,500
608.503,800
608.0014,900
607.504,700
607.004,800
Spread 1.00Mid 606.50
606.002,500
605.506,200
605.0023,100
604.503,300
604.002,000
603.502,400
L3 message feed
  • Waiting for messages…

Simulators

Two ways to simulate markets

PulseABM

Available now

Agent-based market simulator generating synthetic tick data at millisecond resolution. Access order books, L1/L2 quotes, orders, and trades via a Python SDK.

  • L1 & L2 order book data
  • Order flow & trade data
  • Python SDK with Polars DataFrames
  • Run custom simulations
  • Test algos & measure market impact
  • SoonTrain online reinforcement learning agents

Pulse Foundation Model

Coming soon

A generative model for financial markets. Like an LLM predicts the next word, the Large Market Model predicts the next order, generating realistic synthetic order books and market scenarios on demand.

  • SoonSynthetic order book generation
  • SoonScenario generation
  • SoonExpanded universe of symbols & venues
  • SoonAPI access

Use cases

What can Pulse do?

  1. 01 · Algo backtesting

    Replay your algo over synthetic markets

  2. 02 · Market impact

    Measure impact in a market that reacts realistically

  3. 03 · Pre-trade TCA

    Estimate cost before you trade

  4. 04 · Stress scenarios

    Trade through crises that never happened

  5. 05 · Training data

    Unlimited tape for models that need more than history

cached run 0000 — 50k TWAP sell replay (unreactive)

execution window604.50604.90605.30
09:3010:3011:3012:3013:30
mid pricebid / askchild fills (on bid)avg fill 604.86 (dashed)

arrival slippage (bps) by parent-order size — mean ± 1 s.d., 10 runs

051015202.110k5.850k14.6250k

reactive VWAP execution, 11:00 window (Pro tier)

VWAP working — order reacts with the market604.76605.12605.49605.85
09:3010:3011:3012:3013:30
mid pricebid / askchild fills (on ask)arrival 605.17 → avg fill 605.53 (+5.9 bps)

cost vs arrival by window — 09:30: 8.4 bps · 11:00: 6.1 bps (lowest, shown above) · 14:00: 7.3 bps

mid price — scenario=flash_crash, 8 of 25 runs

59459960411:00:00 shock
10:3011:0011:3012:0012:30
individual runsmedian run

mid_price_by_min — 14 Monte Carlo runs, one calibration

604605606
09:3011:0812:4514:2316:00

Pull a cached Pulse run and backtest your strategy against synthetic data. A classic replay backtest, but on unlimited synthetic days instead of one historical tape. The market doesn't react to your orders here; when you need impact, the same data model goes reactive on Pro.

Inject orders into a live synthetic market and watch impact emerge from the simulation.

Run the same order through different execution windows and schedules to build a pre-trade cost curve.

Historical data only contains the crashes that occurred. See how your strategy behaves if the market drastically turns against it.

One trading day happens once. Pulse generates as many statistically realistic variations of the market as your models need.

FIX connectivity

Trade against Pulse over a real FIX session

Pulse exposes its simulated exchange over standard FIX 4.4 point your algo at the simulator before running on a live market. You can run it at up to 20× speed, and get a pre-trade cost report before you risk the alpha for real.

FIX.4.4 session · ALGO_042 → PULSE_FIXCHART
FIX wire0/10

Waiting for messages…

Order book · 700.HK
609.5014,600
609.005,500
608.0014,900
607.004,800
606.005,500
spread 1.00
605.0023,100
604.503,300
604.002,000
603.502,400

Sample Data

See what the data looks like

Download a real Pulse output. 5 Monte Carlo runs for 700.HK under a baseline scenario, calibrated to HKEX market microstructure. No account needed.

sim_data.parquet · mid price
5 REAL RUNS · 700.HK · MARKET OPEN · MS RES.
run_0000run_0001run_0002run_0003run_0004
09:30:1009:31:2509:32:4009:33:5509:35:10
pulse_sample_data.zip
  • 700.HK_2025-09-02_…_baseline_0000/
  • mid_price_by_min.parquet
  • sim_data.parquet
  • 700.HK_2025-09-02_…_baseline_0001/
  • 700.HK_2025-09-02_…_baseline_0002/
  • 700.HK_2025-09-02_…_baseline_0003/
  • 700.HK_2025-09-02_…_baseline_0004/

Symbol

700.HK

Exchange

HKEX

Scenario

baseline

MC runs

5

Date

2025-09-02

Resolution

tick-level

Orderbook

Full L2, 10 levels

Session

09:30 – 16:00

Quick start

Your data in six lines

example.py
from simudyne import PulseABM client = PulseABM(api_key="pk_live_...") # Discover available cached simulationscached_simulations = client.simulation.list_cached() # Find a cached sim IDsim_id = cached_simulations['simulations'][0]['example_sim_id'] # Fetch full data (messages + LOB)df = client.simulation.get_sim_data(sim_id, 'sim_data.parquet') print(df.head())

Cite Pulse

Using Pulse in your research?

If you use Pulse data in a publication, please cite us. Copy the BibTeX entry below.

citation.bib
@misc{simudyne2025pulse,  title        = {Pulse: Synthetic Market Microstructure Data                  from Agent-Based Simulation},  author       = {Simudyne},  year         = {2026},  howpublished = {\url{https://pulse.simudyne.com}},  note         = {Tick-level synthetic order book data generated                  by PulseABM, calibrated to real exchange                  microstructure},}

Foundation Model

Join the waiting list

Be the first to know when the Pulse Foundation Model is available.

FAQs

Frequently asked questions

Pulse is Simudyne's platform for synthetic market data generation. It provides APIs and a Python SDK to access simulated market data for research, model training, algo development, and backtesting.

PulseABM is an agent-based market simulator. It generates realistic synthetic market data at millisecond resolution by modelling individual market participants and their interactions. You can access the resulting data through the Pulse API and Python SDK, including order books, L1/L2/L3, trades, and orders.

The Pulse Foundation Model is an upcoming large market model calibrated with real market data. Just as a Large Language Model predicts the next word in a sequence, the Pulse Foundation Model predicts the next order in a market, generating realistic synthetic order books and market scenarios on demand. Join the waiting list to get early access.

PulseABM currently supports HKEX and LSE, with venues and symbols growing rapidly. Available data includes synthetic order books, L1/L2/L3 data, individual order events, and executed trades. All data is generated at millisecond time resolution and returned as Polars DataFrames. To request new symbols or venues, reach out to support@simudyne.com.

Sign up for a free account, then go to your dashboard to generate an API key. You can create multiple keys, label them for different projects, and revoke them at any time.

Install the SDK with: pip install git+https://github.com/simudyne/pulse-api.git (or uv pip install git+https://github.com/simudyne/pulse-api.git). Then import the client with `from simudyne import PulseABM` and pass your API key to get started.

Yes, Pulse is currently free to use. Create an account to get started.

Yes. PulseABM data is designed for training trading agents and financial models. The SDK returns data in Polars DataFrames that integrate smoothly with ML workflows.