Coinbase Historical Downloader (dccd.histo_dl.coinbase)¶
Objects to download historical data from Coinbase exchange.
- class FromCoinbase(path, crypto, span, fiat='USD', form='xlsx', tz='local')[source]¶
Bases:
ImportDataCryptoCurrenciesClass to import crypto-currencies data from the Coinbase exchange.
- Parameters:
- pathstr
Root directory for data files.
- cryptostr
Crypto-currency symbol, e.g.
'BTC'.- spanint or str
Candle interval in seconds (minimum 60) or a label such as
'hourly'or'1h'.- fiatstr, optional
Quote currency. Default is
'USD'. The pair is formatted with a hyphen separator (e.g.'BTC'+'USD'→'BTC-USD').- formstr, optional
Legacy parameter — ignored. Storage is always Parquet via
DataStore.- tzstr, optional
Timezone for date parsing:
'local'(default),'UTC', or any IANA timezone name.
- Attributes:
- pairstr
Pair symbol, crypto-fiat (e.g. ‘BTC-USD’).
- start, endint
Timestamp to starting and ending download data.
- spanint
Number of seconds between observations.
- full_pathstr
Directory managed by
DataStore—{path}/coinbase/ohlc/{pair}/{span}/.
Methods
import_data([start, end])Download data from Coinbase for specific time interval.
save([form, by_period])Save
dfto disk viaDataStore.get_data([format])Return the downloaded data.
import_trades([start, end])Fetch individual trades for a time window.
save_trades([form, by_period])Save
trades_dfviaDataStore.import_orderbook([depth])Fetch the current order book snapshot at a given depth.
save_orderbook([form])Save
orderbook_dfviaDataStore.See also
FromBinance,FromKraken,FromBybit,FromOKX
Notes
See Coinbase Exchange API documentation [1] for more details on parameters. This class uses the public market data endpoint which does not require authentication.
References
- get_data(format='polars')¶
Return the downloaded data.
- Parameters:
- format{‘polars’, ‘pandas’}, optional
Output format. Default is ‘polars’.
- Returns:
- pl.DataFrame
Current data in the requested format.
- import_data(start='last', end='now')[source]¶
Download data from Coinbase for specific time interval.
- Parameters:
- startint or str
Timestamp of the first observation of you want as int or date format ‘yyyy-mm-dd hh:mm:ss’ as string.
- endint or str
Timestamp of the last observation of you want as int or date format ‘yyyy-mm-dd hh:mm:ss’ as string.
- Returns:
- datapl.DataFrame
Data sorted and cleaned in a data frame.
- import_orderbook(depth=50)¶
Fetch the current order book snapshot at a given depth.
Downloads the bid/ask ladder from the exchange REST API, validates each level, and stores the result in
orderbook_df. Usesave_orderbookto persist to disk.- Parameters:
- depthint, optional
Number of price levels to fetch per side (bids + asks), default 50. Maximum varies by exchange.
- Returns:
- ImportDataCryptoCurrencies
Returns
selffor method chaining.
Notes
Order book REST endpoints return a current snapshot only. Historical order book data is not available via public APIs.
- import_trades(start=0, end='now')¶
Fetch individual trades for a time window.
Downloads executed trades from the exchange REST API, validates each record, and stores the result in
trades_df. Usesave_tradesto persist to disk.- Parameters:
- startint or str, optional
Start of the time window. Accepts a Unix timestamp (int), a date string
'yyyy-mm-dd hh:mm:ss', or0(default, meaning “as far back as the API allows”).- endint or str, optional
End of the time window.
'now'(default) resolves to the current UTC time. Accepts a Unix timestamp or date string.
- Returns:
- ImportDataCryptoCurrencies
Returns
selffor method chaining.
Notes
Exchanges vary in how much history they expose:
Binance and Kraken provide full paginated history.
OKX exposes several months of history via cursor pagination.
Bybit returns the ~1 000 most recent trades regardless of
start/end.Coinbase returns up to 100 recent trades (cursor-based, no deep history).
- save(form='parquet', by_period='Y')¶
Save
dfto disk viaDataStore.Data is always written as Parquet, grouped annually. The form and by_period parameters are accepted for backward compatibility but ignored — storage format and period granularity are managed by
DataStore.- Parameters:
- formstr, optional
Ignored. Kept for backward-compatibility.
- by_periodstr, optional
Ignored. Kept for backward-compatibility.
- save_orderbook(form='parquet')¶
Save
orderbook_dfviaDataStore.The snapshot is timestamped with the current UTC time and written into the daily orderbook file. The form parameter is accepted for backward compatibility but ignored.
- Parameters:
- formstr, optional
Ignored. Kept for backward-compatibility.
- Returns:
- ImportDataCryptoCurrencies
Returns
selfto allow method chaining.
- save_trades(form='parquet', by_period='D')¶
Save
trades_dfviaDataStore.Trades are grouped by calendar day and written as Parquet. The form and by_period parameters are accepted for backward compatibility but ignored.
- Parameters:
- formstr, optional
Ignored. Kept for backward-compatibility.
- by_periodstr, optional
Ignored. Kept for backward-compatibility.
- Returns:
- ImportDataCryptoCurrencies
Returns
selfto allow method chaining.
FromCoinbase downloads OHLCV candles,
recent trades, and order book snapshots from the Coinbase Exchange public
REST API. No authentication is required.
Exchange specifics¶
Pair format |
Hyphen separator: |
Candles per request |
300 (endpoint: |
Minimum span |
60 seconds (1 minute). |
Trade history |
Recent trades only — up to the last 100 trades. The Coinbase public API does not support deep historical pagination. |
Order book depth |
Level 2 snapshot (aggregated by price level, no per-order count). |
Authentication |
Not required for public data. |
Quick example¶
from dccd.histo_dl import FromCoinbase
obj = FromCoinbase('/data/crypto/', 'BTC', span=3600, fiat='USD')
# Full OHLCV history (pagination supported)
obj.import_data(start='2024-01-01 00:00:00', end='2024-12-31 00:00:00')
obj.save(form='parquet')
# Only recent trades are available (≤ 100)
obj.import_trades(start='last', end='now')
obj.save_trades(form='parquet')