Simudyne Pulse
officialA high-fidelity intraday market simulator for testing how markets react to orders. Built using both an Agent-Based Model and a Foundation Model.
What can you do with Simudyne Pulse MCP?
- Discover cached simulations — Ask your assistant to list available cached Pulse runs via
client.simulation.list_cached()to find a simulation ID for analysis. - Fetch simulation data — Retrieve full order book and message data as a Polars DataFrame using
client.simulation.get_sim_data(sim_id, 'sim_data.parquet')for a given cached run. - Backtest against synthetic markets — Replay your trading algorithm over unlimited synthetic days from PulseABM to test strategies without historical tape limitations.
- Measure market impact — Inject orders into a live synthetic market to observe how your trades move prices and quantify impact in a realistic, reactive environment.
- Generate training data — Pull statistically varied Monte Carlo runs (e.g., baseline scenarios for 700.HK) to create unlimited tape for model training and reinforcement learning workflows.
Documentation
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.
Sign upSign inOpen Console ↗Docs
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
Read the docs
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
Join the waiting list
Use cases
What can Pulse do?
- 01 · Algo backtesting
Replay your algo over synthetic markets
- 02 · Market impact
Measure impact in a market that reacts realistically
- 03 · Pre-trade TCA
Estimate cost before you trade
- 04 · Stress scenarios
Trade through crises that never happened
- 05 · Training data
Unlimited tape for models that need more than history
Free tierQuickstart →
cached run 0000 — 50k TWAP sell replay (unreactive)
09:3010:3011:3012:3013:30
mid pricebid / askchild fills (on bid)avg fill 604.86 (dashed)
Pro tierRunning simulations →
arrival slippage (bps) by parent-order size — mean ± 1 s.d., 10 runs
Pro tierTCA recipes →
reactive VWAP execution, 11:00 window (Pro tier)
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
Pro tierScenarios →
mid price — scenario=flash_crash, 8 of 25 runs
10:3011:0011:3012:0012:30
individual runsmedian run
Free tierBulk data recipes →
mid_price_by_min — 14 Monte Carlo runs, one calibration
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.
How FIX connectivity works →
FIX.4.4 session · ALGO_042 → PULSE_FIXCHART
FIX wire0/10
- ←35=ALogon
- →35=ALogon
- ←35=VMarketDataRequest
- →35=WMarketDataSnapshotFullRefresh
- ←35=DNewOrderSingle
- →35=8ExecutionReport
- →35=XMarketDataIncrementalRefresh
- →35=8ExecutionReport
- →35=XMarketDataIncrementalRefresh
- →35=8ExecutionReport
Waiting for messages…
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
Download sample data
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
Copy
@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.
Join waiting list
FAQs
Frequently asked questions
What is Pulse?+
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.
What is PulseABM?+
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.
What is the Pulse Foundation Model?+
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.
What data is available?+
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.
How do I get an API key?+
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.
How do I install the Python SDK?+
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.
Is Pulse free to use?+
Yes, Pulse is currently free to use. Create an account to get started.
Can I use Pulse for model training and reinforcement learning?+
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.