mts1b-cryptodata
Crypto-data adapters: Binance, Kraken Futures, Uniswap, DeFi protocols.
Repo: github.com/MTS1B/mts1b-cryptodata
Layer: 2
Wave: 2 (months 4-7)
Depends on: foundation, platform, httpx, ccxt (selective), web3
Audience: mts1b-datalake, mts1b-research
What it is
Crypto-native data adapters that capture what mts1b-marketdata doesn't: perpetual funding rates, open interest, on-chain DEX trades, DeFi protocol state, derivatives spot-vs-futures basis.
Supported sources
| Source | Spot | Perps | Options | OI | Funding | On-chain |
|---|---|---|---|---|---|---|
binance | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
kraken_futures | ❌ | ✅ | ❌ | ✅ | ✅ | ❌ |
bybit | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ |
okx | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
deribit | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
uniswap_v3 | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
defillama | ❌ | ❌ | ❌ | ❌ | ❌ | TVL + protocol stats |
For Coinbase + Kraken spot, use mts1b-marketdata (general adapters with crypto support).
Module layout
mts1b_cryptodata/
├── binance/
│ ├── spot.py
│ ├── perp.py
│ ├── options.py
│ └── websocket.py
├── kraken_futures/
├── bybit/
├── okx/
├── deribit/
├── uniswap_v3/
│ ├── graph.py # The Graph subgraph queries
│ └── pool.py # direct on-chain via web3
├── defillama/
│ └── client.py
└── unified/
├── funding.py # cross-venue funding rates
└── basis.py # spot-vs-futures basis
API
Funding rates (cross-venue)
from mts1b_cryptodata.unified import funding_rates
rates = await funding_rates(symbol="BTC-USD-PERP", venues=["binance", "kraken_futures", "okx"])
# [
# FundingRate(venue="binance", rate=0.0001, next_at=datetime(...), apr=10.95%),
# FundingRate(venue="kraken_futures", rate=0.0002, next_at=datetime(...), apr=21.90%),
# FundingRate(venue="okx", rate=0.00015, next_at=datetime(...), apr=16.43%),
# ]
Perp open interest
from mts1b_cryptodata.binance.perp import BinancePerp
async with BinancePerp(api_key=None) as bp: # public data, no auth needed
oi = await bp.open_interest("BTCUSDT")
# OpenInterest(symbol="BTCUSDT", oi_usd=8.2e9, oi_contracts=125_000, asof=...)
history = await bp.oi_history("BTCUSDT", interval="1h", days=7)
# pd.Series indexed by ts
Uniswap V3 pools
from mts1b_cryptodata.uniswap_v3 import UniswapV3
async with UniswapV3(chain="ethereum") as uni:
pools = await uni.top_pools(min_tvl_usd=10_000_000)
# [Pool(address=..., token0=..., token1=..., tvl_usd=..., fee_tier=0.003)]
swaps = await uni.recent_swaps(pool="0x...", limit=1000)
# [Swap(tx_hash=..., amount0=..., amount1=..., price=..., timestamp=...)]
DeFi TVL via DefiLlama
from mts1b_cryptodata.defillama import DefiLlama
async with DefiLlama() as dl:
protocols = await dl.protocols(category="Lending")
# [Protocol(name="Aave V3", tvl_usd=..., chains=["Ethereum","Polygon",...])]
tvl = await dl.protocol_tvl("aave-v3", days=30)
# pd.DataFrame: ts, chain, tvl_usd
Funding-rate arbitrage example
# Identify cross-venue funding arb opportunities
from mts1b_cryptodata.unified import funding_arb
opportunities = await funding_arb(
symbol="BTC-USD-PERP",
venues=["binance", "kraken_futures", "okx", "bybit"],
min_spread_apr=0.10, # only spreads > 10% APR
)
# [FundingArb(long_venue="okx", short_venue="binance",
# spread_apr=0.18, holding_costs_apr=0.03, net_edge_apr=0.15)]
WebSocket streaming
async with BinancePerp() as bp:
async for tick in bp.stream_trades("BTCUSDT"):
print(tick.price, tick.volume, tick.side)
Most adapters support WS for trades, book updates, and funding events.
Rate limits + auth
| Venue | Public limit | Auth needed for |
|---|---|---|
| Binance | 1200 req/min | private data + WS |
| Kraken Futures | 60 req/min | private |
| OKX | 20 req/2s | private |
| Bybit | 50 req/sec | private |
| Deribit | 20 req/sec | private |
| Uniswap V3 | TheGraph free tier | none |
All adapters use mts1b-platform/ratelimit and respect venue limits.
Build + test
pip install -e ".[dev]"
pytest -m unit
pytest -m live --venue=binance
Roadmap
| Version | Items |
|---|---|
| 0.1 (Wave 2) | 7 venues, funding + OI + Uniswap V3 + DefiLlama |
| 0.2 (Wave 2) | dYdX, GMX, Perpetual Protocol |
| 0.3 (Wave 3) | More chains: Solana DEXes, BSC, Polygon |
| 1.0 (LTS) | Stable adapter interface |
See also
mts1b-marketdata— for spot Coinbase + Kraken (general)mts1b-datalake— ingest pipelines for crypto datamts1b-research— crypto factors using funding + basis