cryptodatapy.extract

Submodules

Classes

DataRequest

Data request class which contains parameters for data retrieval.

GetData

Retrieves data from selected data source.

Package Contents

class cryptodatapy.extract.DataRequest(source: str = 'ccxt', tickers: str | List[str] = 'btc', quote_ccy: str | None = None, markets: str | List[str] | None = None, freq: str = 'd', exch: str | None = None, countries: str | List[str] | None = None, mkt_type: str | None = 'spot', start_date: str | datetime.datetime | pandas.Timestamp | None = None, end_date: str | datetime.datetime | pandas.Timestamp | None = None, fields: str | List[str] = ['close'], tz: str | None = None, cat: str | None = None, trials: int | None = 3, pause: float | None = 0.1, source_tickers: str | List[str] | None = None, source_markets: str | List[str] | None = None, source_freq: str | None = None, source_start_date: str | int | datetime.datetime | pandas.Timestamp | None = None, source_end_date: str | int | datetime.datetime | pandas.Timestamp | None = None, source_fields: str | List[str] | None = None)

Data request class which contains parameters for data retrieval.

property source

Returns data source for data request.

property tickers

Returns tickers for data request.

property quote_ccy

Returns quote currency for data request.

property markets

Returns markets for data request.

property freq

Returns frequency of observations for data request.

property exch

Returns exchange for data request.

property countries

Returns country codes for data request.

property mkt_type

Returns market type for data request.

property start_date

Returns start date for data request.

property end_date

Returns end date for data request.

property fields

Returns fields for data request.

property tz

Returns timezone for data request.

property cat

Returns category for data request.

property trials

Returns number of trials for data request.

property pause

Returns number of seconds to pause between data requests.

property source_tickers

Returns tickers for data request in data source format.

property source_markets

Returns markets for data request in data source format.

property source_freq

Returns frequency of data request in data source format.

property source_start_date

Returns start date for data request in data source format.

property source_end_date

Returns end date for data request in data source format.

property source_fields

Returns fields for data request in data source format.

get_req(url: str, params: Dict[str, str | int], headers: Dict[str, str] | None = None) Dict[str, Any]

Submits get request to API.

Parameters:
  • url (str) – Endpoint url for get request. Base urls are stored in DataCredentials.

  • params (dict) – Dictionary containing parameter values for get request.

  • headers (dict, optional, default None) – Dictionary containing headers for get request.

Returns:

resp – Data response in JSON format.

Return type:

dict

class cryptodatapy.extract.GetData(data_req: cryptodatapy.extract.datarequest.DataRequest, api_key: str | None = None)

Retrieves data from selected data source.

data_req
api_key = None
get_meta(attr: str = None, method: str = None, **kwargs) pandas.DataFrame

Get metadata.

Parameters:
  • attr (str, {'categories', 'exchanges', 'indexes', 'assets', 'markets', 'market_types', 'fields', 'frequencies',) – ‘base_url’, ‘api_key’, ‘max_obs_per_call’, ‘rate_limit’}, default assets Gets the specified attribute or method from the data source object.

  • method (str, {'get_exchanges_info', 'get_indexes_info', 'get_assets_info', 'get_markets_info',) –

    ‘get_fields_info’, ‘get_frequencies_info’, ‘get_rate_limit_info’, ‘get_onchain_tickers_list’,

    ’get_top_mkt_cap_info’}

    Gets the specified method from the data source object.

  • cat (str, optional, default None) – Category for which to return metadata, e.g. ‘crypto’, ‘fx’, ‘rates’, ‘macro’, etc.

  • exch (str, default 'binance') – Name of exchange for which to return metdata, e.g. ‘binance’, ‘ftx’, ‘kraken’, etc.

  • data_type (str, {'market', 'on-chain', 'off-chain'}, default None) – Type of data for which to return metadata, e.g. ‘on-chain’, ‘market’ or ‘off-chain’.

  • as_dict (bool, default False) – Returns attribute metadata as dictionary.

  • as_list (bool, default False) – Returns attribute metdata as list.

Returns:

meta – Metadata for selected attribute or method.

Return type:

Any

Examples

>>> data_req = DataRequest(source='ccxt')
>>> GetData(data_req).get_meta(attr='exchanges')
'['aax', 'alpaca', 'ascendex', 'bequant', 'bibox', 'bigone', 'binance', 'binancecoinm', 'binanceus', ...]'
>>> data_req = DataRequest(source='investpy')
>>> GetData(data_req).get_meta(attr='categories')
'['fx', 'rates', 'eqty', 'cmdty', 'macro']'
>>> data_req = DataRequest(source='ccxt')
>>> GetData(data_req).get_meta(method='get_assets_info')
                id          numericId       code        precision
ticker
1INCH           1INCH          None             1INCH           8
1INCHDOWN           1INCHDOWN      None         1INCHDOWN           8
1INCHUP         1INCHUP        None             1INCHUP         8
AAVE            AAVE           None             AAVE            8
get_series(method: str = 'get_data') pandas.DataFrame

Get requested data.

Parameters:

method (str, {'get_data', 'get_ohlcv', 'get_indexes', 'get_onchain', 'get_social', 'get_trades', 'get_quotes',) –

‘get_funding_rates’, ‘get_open_interest’, ‘get_eqty’, ‘get_eqty_iex’, ‘get_etfs’, ‘get_stocks’,

’get_fx’, ‘get_rates’, ‘get_cmdty’, ‘get_crypto’, ‘get_macro_series’}, default ‘get_data’

Gets the specified method from the data source object.

Returns:

df – DataFrame with DatetimeIndex (level 0), ticker (level 1), and field (cols) values.

Return type:

pd.DataFrame - MultiIndex

Examples

>>> data_req = DataRequest(source='ccxt', tickers=['btc', 'eth'], fields=['open', 'high', 'low', 'close',
                           'volume'], freq='d', exch='ftx', start_date='2017-01-01')
>>> GetData(data_req).get_series()
                        open        high        low         close       volume
date        ticker
2020-03-28      BTC             6243.25     6298.5          6028.0          6237.5          3888.9424
            ETH         128.995     133.0           125.11          131.04          1751.65972
2020-03-29      BTC             6233.5      6262.5          5869.5          5876.5          114076.5831
            ETH         130.98      131.84          123.81          124.33          138449.60906
2020-03-30      BTC             5876.0      6609.0          5856.0          6396.5          224231.1718
>>> data_req = DataRequest(source='glassnode', tickers=['btc', 'eth'],
                           fields=['add_act', 'tx_count', 'issuance'], freq='d', start_date='2016-01-01')
>>> GetData(data_req).get_series()
                        add_act     tx_count    issuance
date        ticker
2016-01-01      BTC             316489      123957          0.085386
            ETH         2350        8232            0.133048
2016-01-02      BTC             419389      148893          0.09197
            ETH         2410        9164            0.140147
2016-01-03      BTC             394047      142463          0.091947
async get_series_async(method: str = 'get_data_async') pandas.DataFrame

Get requested data.

Parameters:

method (str, default 'get_data') – Gets the specified method from the data source object.

Returns:

df – DataFrame with DatetimeIndex (level 0), ticker (level 1), and field (cols) values.

Return type:

pd.DataFrame - MultiIndex

Examples

>>> data_req = DataRequest(source='ccxt', tickers=['btc', 'eth'], fields=['open', 'high', 'low', 'close',
                           'volume'], freq='d', exch='ftx', start_date='2017-01-01')
>>> GetData(data_req).get_series()
                        open        high        low         close       volume
date        ticker
2020-03-28      BTC             6243.25     6298.5          6028.0          6237.5          3888.9424
            ETH         128.995     133.0           125.11          131.04          1751.65972
2020-03-29      BTC             6233.5      6262.5          5869.5          5876.5          114076.5831
            ETH         130.98      131.84          123.81          124.33          138449.60906
2020-03-30      BTC             5876.0      6609.0          5856.0          6396.5          224231.1718
>>> data_req = DataRequest(source='glassnode', tickers=['btc', 'eth'],
                           fields=['add_act', 'tx_count', 'issuance'], freq='d', start_date='2016-01-01')
>>> GetData(data_req).get_series()
                        add_act     tx_count    issuance
date        ticker
2016-01-01      BTC             316489      123957          0.085386
            ETH         2350        8232            0.133048
2016-01-02      BTC             419389      148893          0.09197
            ETH         2410        9164            0.140147
2016-01-03      BTC             394047      142463          0.091947