Home / Libraries / ML4T Data / Docs
ML4T Data
ML4T Data Documentation
Unified market data acquisition from 19+ providers
Skip to content

Providers

ML4T Data supports 20 live data providers with a unified API (plus synthetic and testing providers).

Provider Comparison

Provider Asset Class Free Tier Async API Key
Yahoo Finance Stocks, ETFs, Crypto Unlimited Thread No
CoinGecko Crypto 10K+ coins Native No
FRED Economic Data 120/min Thread Yes
Fama-French Factors Unlimited Thread No
AQR Factors Unlimited Thread No
Wiki Prices Historical Static Thread No
Kalshi Prediction Markets Public data Thread No
Polymarket Prediction Markets Public data Thread No
Binance Bulk Crypto Bulk downloads Thread No
NASDAQ ITCH Tick Data Sample data Thread No
EODHD Global Stocks 500/day Native Yes
Tiingo US Stocks 1000/day Thread Yes
TwelveData Multi-asset 800/day Native Yes
DataBento Futures, Options $10 credits Thread Yes
Polygon Multi-asset Paid only Thread Yes
Finnhub Global Stocks 30/day OHLCV Thread Yes
Binance API Crypto Unlimited Native No
OKX Crypto Perpetuals No geo-limits Native No
CryptoCompare Crypto Good Native Optional
Oanda Forex Demo only Thread Yes

Async Support

All providers support async via async_batch_load():

  • Native async: Uses httpx.AsyncClient for true non-blocking I/O
  • Thread-wrapped: Uses asyncio.to_thread() for sync SDKs
from ml4t.data.managers.async_batch import async_batch_load

async with YahooFinanceProvider() as provider:
    df = await async_batch_load(
        provider,
        symbols=["AAPL", "MSFT", "GOOGL"],
        start="2024-01-01",
        end="2024-12-31",
    )

Unified API

All providers implement the same interface:

provider.fetch_ohlcv(
    symbol="AAPL",
    start="2024-01-01",
    end="2024-12-31",
    frequency="daily"
)

Returns a Polars DataFrame with columns: timestamp, symbol, open, high, low, close, volume