Auro is a C++20 market-data systems project for capturing crypto exchange market-data messages, storing them in a compact append-only binary format, and replaying them deterministically for offline analysis, parser benchmarking, and systems experimentation.
The core of the project is a small, focused piece of market-data infrastructure built to demonstrate:
- WebSocket ingestion
- binary recording and integrity checks
- indexing for faster seeks
- deterministic replay
- reproducible analysis artifacts
Auro also includes experimental scan utilities built on top of replay, but the primary value of the repo is the capture → record → index → replay pipeline.
- Capture market-data messages from supported WebSocket venues into
.aurorecordings - Import packet captures into the same
.aurocontainer format - Replay recordings deterministically for repeatable parsing and analysis runs
- Build indexes to support faster seek/start positions in replay workflows
- Emit artifacts such as summary JSON and latency CSVs for benchmarking and inspection
Auro is best understood as:
- a market data capture and replay tool
- a binary logging / replay infrastructure project
- an offline analysis and benchmarking toolchain
Auro is not positioned as:
- a live trading engine
- a production arbitrage detector
- a full market-simulation platform
- a complete multi-venue research stack
- Compact append-only recording format for captured packets and metadata
- Deterministic replay path from recorded input, with optional fast-forward mode
- SPSC queue used to decouple I/O from downstream work in live capture paths
- Venue parsers for normalized replay/analysis flows
- Index support for quicker replay starts by offset, sequence, or time
- Artifact generation for run summaries and latency measurements
Captures market-data WebSocket frames into .auro files.
Imports packets from a PCAP into the .auro recording format.
Builds .aidx indexes for faster seek/start operations during replay.
Replays .auro recordings and parses frames into lightweight quote data for benchmarking and inspection.
Runs replay-driven validation and analysis utilities on recorded streams.
The scan utilities are currently best treated as offline analysis helpers / experimental demos, not as trading signals or production opportunity detectors.
Auro supports two common workflows:
- Core tools only (default): build the replay, indexing, import, and analysis tools
- Live WebSocket capture (optional): also build
auro_ws_capture
This is the recommended default path for most users.
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DAURO_ENABLE_WS_CAPTURE=OFF
cmake --build build -j
ctest --test-dir build --output-on-failureThis builds the core toolchain without requiring the optional WebSocket capture dependencies.
If you want to build auro_ws_capture, reconfigure with capture enabled:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DAURO_ENABLE_WS_CAPTURE=ON
cmake --build build -jauro_ws_capture requires the additional networking and TLS dependencies described below.
If you already have an .auro recording, you can skip straight to replay and indexing.
./build/auro_replay_quotes --in sample.auro --out quotes.csv
./build/auro_index_build --in sample.auro --out sample.aidx
./build/auro_replay_scan --in sample.auroBuild with -DAURO_ENABLE_WS_CAPTURE=ON first, then:
./build/auro_ws_capture \
--venue binance \
--symbol BTCUSDT \
--depth 20 \
--interval-ms 100 \
--duration 10 \
--out btcusdt.auroThen replay and index the capture:
./build/auro_replay_quotes --in btcusdt.auro --out quotes.csv
./build/auro_index_build --in btcusdt.auro --out btcusdt.aidx
./build/auro_replay_scan --in btcusdt.auro- Core third-party dependencies are fetched automatically with CMake
FetchContent. ccacheis supported if available, but it is optional.auro_ws_captureis optional and may require additional system packages such as Boost and OpenSSL depending on your environment.- Multi-stream / triangular replay analysis is currently best treated as experimental offline analysis.
- C++20 compiler (GCC/Clang)
- CMake ≥ 3.24
- Ninja recommended, but not required
- Dependencies are fetched automatically with
FetchContentunless you configure them another way:- CLI11
- Catch2
- simdjson
- Optional:
ccachefor faster rebuilds - For
auro_ws_captureonly:- Boost headers (Asio/Beast)
- OpenSSL
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DAURO_ENABLE_WS_CAPTURE=OFF
cmake --build build -j
ctest --test-dir build --output-on-failureIf you do not have Ninja installed, omit -G Ninja.
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DAURO_ENABLE_WS_CAPTURE=ON
cmake --build build -j
ctest --test-dir build --output-on-failureGiven the same .auro input and the same flags, replay is intended to preserve the same record stream and decision path. In other words, determinism here refers to data flow and replay results, not wall-clock runtime.
Depending on configuration and flags, the toolchain can also validate integrity using CRCs and report stream-level issues such as gaps or non-monotonic timing.
Replay tools write analysis artifacts under the selected output directory, including:
summary.jsonlatency_parse_ns.csvlatency_parse_to_decision_ns.csv(scanner path, when enabled)opportunities.csv(scanner path, when produced)
These are intended as reproducible outputs for benchmarking and offline inspection.
.
├── CMakeLists.txt
├── apps/ # CLI front-ends
├── cmake/ # warnings and build helpers
├── docs/ # format, build, architecture, tooling docs
├── include/auro/ # public headers
├── src/ # implementation
├── tests/ # unit and integration-style tests
└── outputs/ # ignored local artifacts and captures
- Venue support is intentionally limited and parser coverage is not yet broad.
auro_replay_quotesis currently best understood as a Binance-focused replay / quote parsing tool.- Some replay-based scan utilities are still experimental and should be interpreted carefully.
- The project is designed for offline capture/replay workflows, not live order execution.
- The build currently relies on CMake fetching third-party dependencies during configure time.
auro_ws_captureis optional and depends on additional networking and TLS libraries that are not required for the core replay toolchain.
See the docs index in docs/README.md for:
- recording format details
- build instructions
- tool usage
- determinism and integrity notes
- architecture overview
- troubleshooting
MIT. See LICENSE.
Auro is provided for educational and research purposes only. It does not provide investment, trading, or financial advice, and it is not intended for use in live trading or as a production trading system. You are solely responsible for how you use this software and for complying with any applicable laws, regulations, and exchange terms of service.
This project is unaffiliated with any exchange, and all trademarks and names belong to their respective owners.

