Aperiodic Python Client
Python client library for Aperiodic.io — institutional-grade market microstructure, liquidity and order flow metrics with full exchange universe coverage. Turn flow dynamics into alpha in hours, not months. No tick infrastructure to build or maintain.
Access pre-computed derivative and microstructure metrics with parallel downloads for optimal performance.
Installation
pip install aperiodic
Install from source:
git clone https://github.com/aperiodic-io/aperiodic-client.git
cd aperiodic-client
pip install -e .
Authentication
All endpoints require your Aperiodic.io API key passed as api_key="...".
The one exception is preview data: with preview=True the api_key is optional — omit it and the shared public demo key is used automatically.
Symbology
Symbols are expected in Atlas unified symbology — a standardised, exchange-agnostic naming scheme.
- Atlas repo: https://github.com/aperiodic-io/atlas
- Example symbol:
perpetual-BTC-USDT:USDT
Quick Start
from datetime import date
from aperiodic import get_metrics
df = get_metrics(
api_key="your-api-key",
metric="flow",
timestamp="true",
interval="1h",
exchange="binance-futures",
symbol="perpetual-BTC-USDT:USDT", # See https://github.com/aperiodic-io/atlas
start_date=date(2024, 1, 1),
end_date=date(2024, 1, 31),
)
print(df.head())
print(df.columns)
Available Functions
| Dataset | Sync | Async | metric values |
|---|---|---|---|
| Order, L1, L2 metrics | get_metrics |
get_metrics_async |
see below |
| OHLCV candles | get_ohlcv |
get_ohlcv_async |
— |
| VWAP | get_vwap |
get_vwap_async |
— |
| TWAP | get_twap |
get_twap_async |
— |
| Derivative metrics | get_derivative_metrics |
get_derivative_metrics_async |
see below |
| Exchange symbols | get_symbols |
get_symbols_async |
— |
get_metrics — Trade & order book metrics
Trade metrics (TradeMetric): "vtwap", "flow", "trade_size", "impact", "range", "updownticks", "run_structure", "returns", "slippage"
L1 order book (L1Metric): "l1_price", "l1_imbalance", "l1_liquidity"
L2 order book (L2Metric): "l2_imbalance", "l2_liquidity"
get_derivative_metrics — Derivative metrics
"basis", "funding", "open_interest", "derivative_price"
Core Parameters
All data endpoints share this shape:
api_key: Your Aperiodic.io API key. Optional whenpreview=True— the shared public demo key is used automatically.timestamp:"exchange"or"true".interval:"1m"|"5m"|"15m"|"30m"|"1h"|"4h"|"1d".exchange:"binance-futures"|"okx-perps"|"hyperliquid-perps".symbol: Atlas-formatted symbol string (e.g."perpetual-BTC-USDT:USDT").start_date/end_date: Inclusive date boundaries.preview:bool = False. WhenTrue, routes to the free preview endpoint — no subscription required, but the request must match an exact whitelisted parameter combination (exchange, symbol, interval, timestamp, date range).show_progress: showtqdmprogress bar (default:True).max_concurrent: max parallel file downloads (default:10).
Examples
Trade metrics
from datetime import date
from aperiodic import get_metrics
flow_df = get_metrics(
api_key="your-api-key",
metric="flow",
timestamp="exchange",
interval="5m",
exchange="binance-futures",
symbol="perpetual-ETH-USDT:USDT", # See https://github.com/aperiodic-io/atlas
start_date=date(2024, 2, 1),
end_date=date(2024, 2, 29),
)
L1 / L2 order book metrics
from datetime import date
from aperiodic import get_metrics
l1_df = get_metrics(
api_key="your-api-key",
metric="l1_imbalance",
timestamp="true",
interval="1m",
exchange="binance-futures",
symbol="perpetual-BTC-USDT:USDT", # See https://github.com/aperiodic-io/atlas
start_date=date(2024, 3, 1),
end_date=date(2024, 3, 7),
)
l2_df = get_metrics(
api_key="your-api-key",
metric="l2_liquidity",
timestamp="true",
interval="1m",
exchange="binance-futures",
symbol="perpetual-BTC-USDT:USDT", # See https://github.com/aperiodic-io/atlas
start_date=date(2024, 3, 1),
end_date=date(2024, 3, 7),
)
Derivative metrics
from datetime import date
from aperiodic import get_derivative_metrics
funding_df = get_derivative_metrics(
api_key="your-api-key",
metric="funding",
timestamp="exchange",
interval="1h",
exchange="binance-futures",
symbol="perpetual-BTC-USDT:USDT", # See https://github.com/aperiodic-io/atlas
start_date=date(2024, 1, 1),
end_date=date(2024, 3, 31),
)
Symbol discovery
from aperiodic import get_symbols
symbols = get_symbols(api_key="your-api-key", exchange="binance-futures") # Returns Atlas symbols: https://github.com/aperiodic-io/atlas
perpetuals = [s for s in symbols if s.startswith("perpetual-")]
print(f"Found {len(perpetuals)} perpetual symbols")
Async usage
import asyncio
from datetime import date
from aperiodic import get_metrics_async, get_symbols_async
async def main() -> None:
symbols = await get_symbols_async(
api_key="your-api-key",
exchange="binance-futures",
)
for symbol in symbols:
df = await get_metrics_async(
api_key="your-api-key",
metric="l1_liquidity",
timestamp="true",
interval="1h",
exchange="binance-futures",
symbol=symbol, # See https://github.com/aperiodic-io/atlas
start_date=date(2024, 1, 1),
end_date=date(2026, 1, 1),
)
asyncio.run(main())
Preview (no subscription required)
Anyone can access a curated slice of data via preview=True — no subscription and no API key required. Omit api_key and the client uses the shared public demo key automatically. The request must match the exact parameters (exchange, symbol, interval, timestamp, date range) for one of the whitelisted entries.
Available preview datasets: aperiodic.io/catalog#preview
from datetime import date
from aperiodic import get_ohlcv
# Use the exact parameters listed at https://aperiodic.io/catalog#preview
df = get_ohlcv(
exchange="binance-futures",
symbol="perpetual-BTC-USDT:USDT",
interval="5m",
timestamp="exchange",
start_date=date(2025, 5, 1),
end_date=date(2025, 5, 31),
preview=True,
)
print(df.head())
Performance Notes
- Downloads are split into monthly parquet files server-side.
- Files are fetched concurrently and concatenated locally.
- Final output is sorted and filtered to your exact requested date range.
- Tune
max_concurrentbased on your network and compute resources.
Requirements
- Python 3.11+
httpxpolarstqdmnest-asyncio
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aperiodic-4.1.0.tar.gz.
File metadata
- Download URL: aperiodic-4.1.0.tar.gz
- Upload date:
- Size: 17.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
Hatch/1.18.0 {"ci":true,"cpu":"x86_64","distro":{"id":"noble","libc":{"lib":"glibc","version":"2.39"},"name":"Ubuntu","version":"24.04"},"implementation":{"name":"CPython","version":"3.11.16"},"installer":{"name":"hatch","version":"1.18.0"},"openssl_version":"OpenSSL 3.0.13 30 Jan 2024","python":"3.11.16","system":{"name":"Linux","release":"6.17.0-1022-azure"}} HTTPX2/2.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
567266e78d21a3f2b40a784b9597ed757aa6483de3398cbf1c71e6885a321f45
|
|
| MD5 |
c5ea8e2aaff8fc27d9c605254105e61c
|
|
| BLAKE2b-256 |
d89d8edb19736d397e2f40da88c9ab7c538a854abe6f2cbb58bfa8e486fffd14
|
File details
Details for the file aperiodic-4.1.0-py3-none-any.whl.
File metadata
- Download URL: aperiodic-4.1.0-py3-none-any.whl
- Upload date:
- Size: 23.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
Hatch/1.18.0 {"ci":true,"cpu":"x86_64","distro":{"id":"noble","libc":{"lib":"glibc","version":"2.39"},"name":"Ubuntu","version":"24.04"},"implementation":{"name":"CPython","version":"3.11.16"},"installer":{"name":"hatch","version":"1.18.0"},"openssl_version":"OpenSSL 3.0.13 30 Jan 2024","python":"3.11.16","system":{"name":"Linux","release":"6.17.0-1022-azure"}} HTTPX2/2.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9d2bee2010f1f62a3cec7dd981398384b7776c53df26e404b23ea4793b01cad3
|
|
| MD5 |
790ff31e9f969fdbc93df9226e80af7b
|
|
| BLAKE2b-256 |
f8d7e8871f1c4dd00ee369e16f1bd7a1b6765dc5b4f8fcea80748c65b144d320
|