A Rust engine for high-frequency market-microstructure data: live connectivity to 12 crypto exchanges, verified order-book reconstruction, trade loss accounting, grid synchronization, and columnar Parquet I/O — built for quant researchers who need to trust every row.
Every venue decoder is certified by a conformance suite that replays real captured wire frames through the production decode path on every CI run: seeding, delta application, sequence-gap detection, checksum validation, trade continuity, and physical book invariants (never crossed, strictly positive, ordered). Exact decimal arithmetic in memory; analytics-friendly Float64 Parquet on disk.
Live top-of-book from Binance, no API keys, no configuration:
cargo run -p aetelier-connect --example framework_live binance 8 BTCUSDT
live: binance BTCUSDT for 8s — model SeqDelta { predicate: RangeInclusive, source: RestSnapshot }
BTC/USDT #2 bid 66327.05000000 x1.43759000 | ask 66327.06000000 x2.34211000 | spread 0.01000000 | ts 1784669353249446 | depth 5000/5000
BTC/USDT #14 bid 66327.05000000 x0.90601000 | ask 66327.06000000 x2.34273000 | spread 0.01000000 | ts 1784669354314000 | depth 5010/4997
As a library, the curated facade exposes the whole engine through one crate:
use aetelier_sdk::{Trade, TradeSide, TradingPair};
let trade = Trade::builder()
.source_trade_ts_us(1_700_000_000_000_000)
.pair(TradingPair::new("BTC", "USDT"))
.side(TradeSide::Buy)
.amount(0.5)
.price(42_000.0)
.exchange("binance".into())
.id("t-1".into())
.build()
.expect("all fields set");
assert_eq!(trade.pair.to_canonical(), "BTC/USDT");More examples — config-driven collection to Parquet, read-back statistics, multi-venue sync, raw wire capture — in aetelier-connect/examples.
Depend on the workspace via git, pinned to the release tag:
[dependencies]
aetelier-sdk = { git = "https://github.com/IteraLabs/aetelier-sdk", tag = "v0.1.0", features = ["parquet"] }The five crates carry the layout and publish order for a registry release; CONTRIBUTING.md documents both.
| Crate | Role |
|---|---|
aetelier-types |
Canonical no-IO schema crate: trades, order books, liquidations, funding, configs. forbid(unsafe_code). |
aetelier-connect |
Exchange connectivity: WSS transports, per-venue adapters, reconstruction runtime, synchronizers, workers. |
aetelier-io |
Columnar persistence: Parquet/JSON/CSV writers and readers, dataset tooling, batch rehydration. |
aetelier-telemetry |
Metrics and log surfaces for collectors. |
aetelier-sdk |
The curated facade: one dependency, named re-exports of the recommended path. |
All 12 spot venues run the same certified framework path: binance, bitget, bitso, bybit, coinbase, gateio, htx, kraken, kucoin, okx, poloniex, upbit. Certification means the venue's real captured frames replay through the production decoder in CI across the full conformance matrix — decode surface, seeding taxonomy, symbol canonicalization, book delta application, gap detection, checksum validation where the venue supplies one, trade continuity where the venue's ids permit exact accounting, and physical book/trade invariants.
The engine never fabricates: unknown trade sides are dropped and counted, never coerced; malformed rows are typed errors, never silent defaults; trade loss is counted exactly where venue sequences allow and labeled as an estimate where they do not; every recovered print carries its provenance (origin: ws | rest). Loss, gap, and recovery counters ride every collector as first-class metrics.
This repository is the open data layer of the Aetelier platform: everything needed to collect, verify, and persist market data on infrastructure you control. The managed orchestration, hosted dashboards, and billing services are a separate hosted product at aetelier.xyz.
See CONTRIBUTING.md for the development loop, testing tiers, and the crate publish order. Security reports: SECURITY.md.
Apache-2.0 — see LICENSE.
