Pulse is an intraday market simulation platform
Simulators
Three ways to simulate markets
PulseABM
Available nowAgent-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 Flow
Available on ProA flow-matching foundation model that treats the order book as an image. Conditioned on the last 33 seconds, it generates the next 32 seconds of the full 10-level book from noise, rolling forward on its own output.
- ✓L2 order book generation (10 levels)
- ✓Conditioned on real market regime
- ✓API & Python SDK access (Pro tier)
- SoonScenario generation
Pulse GPT
Coming soonA large market model. Like an LLM predicts the next word, it predicts the next order, one order per token, generating realistic order flow and market scenarios on demand.
- SoonSynthetic order flow generation
- SoonScenario generation
- SoonExpanded universe of symbols & venues
- SoonAPI access
Use cases
What can Pulse do?
01 · Algo backtesting
Replay your algo over synthetic markets
02 · Training data
Unlimited tape for models that need more than history
03 · Market impact
Measure the price move your order caused
04 · Pre-trade TCA
Estimate cost before you trade
05 · Liquidity risk
Price a ladder of order sizes in both directions
06 · Stress scenarios
Trade through crises that never happened
cached run 0000 — 50k TWAP sell replay (unreactive)
mid_price_by_min — 14 Monte Carlo runs, one calibration
700.HK mid: baseline, same seed with a 250k buy, same seed with a 250k sell. 3 simulations, one job
700.HK mid: baseline vs the same seed with a 250k VWAP buy from 14:00. 4 simulations, one job
impact, HKD / share, 700.HK: five sizes each side by four TWAP durations, 10 runs a point, one job
mid price — 700.HK, scenario=flash_crash, 8 of 24 runs
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.
One trading day happens once. Pulse generates as many statistically realistic variations of the market as your models need.
Run the same seed twice, once with your order and once without. Cost is what you paid against the reference price, risk is what the market did anyway, and impact is the difference: the part your order caused.
Run the same order through different execution windows and read the cost of each straight off the simulation, before you commit to one.
One job runs every size you might trade, as a buy and as a sell, at every speed you might work it, each against the same baseline. The result is the impact surface your desk prices against.
Historical data only contains the crashes that occurred. See how your strategy behaves if the market drastically turns against it.
FIX connectivity
Trade against Pulse over a real FIX session
Pulse exposes its simulated exchange over standard FIX 5.0 SP2 point your algo at the simulator before running on a live market. You can run it at up to 10× speed, and get a pre-trade cost report before you risk the alpha for real.
Waiting for messages…
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.
- ▸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
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.
@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.