QuandlDataProvider

class qf_lib.data_providers.quandl.quandl_data_provider.QuandlDataProvider(settings: Settings)[source]

Bases: DataProvider

Class providing the Quandl data. The table database: WIKI/PRICES offers stock prices, dividends and splits for 3000 US publicly-traded companies. This database is updated at 9:15 PM EST every weekday.

Methods:

get_futures_chain_tickers(tickers, ...)

Returns tickers of futures contracts, which belong to the same futures contract chain as the provided ticker (tickers), along with their expiration dates in form of a QFSeries or QFDataFrame.

get_history(tickers[, fields, start_date, ...])

Gets historical attributes (fields) of different securities (tickers).

get_price(tickers, fields, start_date[, ...])

Gets adjusted historical Prices (Open, High, Low, Close) and Volume

supported_ticker_types()

Returns classes of tickers which are supported by this DataProvider.

get_futures_chain_tickers(tickers: Union[FutureTicker, Sequence[FutureTicker]], expiration_date_fields: Union[ExpirationDateField, Sequence[ExpirationDateField]]) Dict[FutureTicker, Union[QFSeries, QFDataFrame]][source]

Returns tickers of futures contracts, which belong to the same futures contract chain as the provided ticker (tickers), along with their expiration dates in form of a QFSeries or QFDataFrame.

Parameters:
Returns:

Returns a dictionary, which maps Tickers to QFSeries, consisting of the expiration dates of Future Contracts: Dict[FutureTicker, Union[QFSeries, QFDataFrame]]]. The QFSeries’ / QFDataFrames contain the specific Tickers, which belong to the corresponding futures family, same as the FutureTicker, and are indexed by the expiration dates of the specific future contracts.

Return type:

Dict[FutureTicker, Union[QFSeries, QFDataFrame]]

get_history(tickers: Union[QuandlTicker, Sequence[QuandlTicker]], fields: Union[None, str, Sequence[str]] = None, start_date: Optional[datetime] = None, end_date: Optional[datetime] = None, **kwargs)[source]

Gets historical attributes (fields) of different securities (tickers).

All the duplicate fields and tickers will be removed (the first occurrence will remain). This is crucial for having the expected behavior with using label-based indices. E.g. let’s assume there is a duplicate ticker ‘SPX Index’ in tickers list and the result data frame has two columns ‘SPX Index’. Then when someone runs result.loc[:, ‘SPX Index’], he expects to get a series of ‘SPX Index’ values. However he’ll get a data frame with two columns, both named ‘SPX Index’. If someone insists on keeping duplicate values in index/columns, then it’s possible to reindex the result (e.g. result.reindex(columns=tickers)).

Parameters:
  • tickers (Ticker, Sequence[Ticker]) – tickers for securities which should be retrieved

  • fields (None, str, Sequence[str]) – fields of securities which should be retrieved. If None, all available fields will be returned (only supported by few DataProviders)

  • start_date (datetime) – date representing the beginning of historical period from which data should be retrieved

  • end_date (datetime) – date representing the end of historical period from which data should be retrieved; if no end_date was provided, by default the current date will be used

  • frequency (Frequency) – frequency of the data

  • kwargs – kwargs should not be used on the level of AbstractDataProvider. They are here to provide a common interface for all data providers since some of the specific data providers accept additional arguments

Returns:

If possible the result will be squeezed, so that instead of returning QFDataArray, data of lower dimensionality will be returned. The results will be either an QFDataArray (with 3 dimensions: date, ticker, field), a QFDataFrame (with 2 dimensions: date, ticker or field; it is also possible to get 2 dimensions ticker and field if single date was provided) or QFSeries (with 1 dimensions: date). If no data is available in the database or an non existing ticker was provided an empty structure (QFSeries, QFDataFrame or QFDataArray) will be returned returned.

Return type:

QFSeries, QFDataFrame, QFDataArray

get_price(tickers: Union[QuandlTicker, Sequence[QuandlTicker]], fields: Union[PriceField, Sequence[PriceField]], start_date: datetime, end_date: Optional[datetime] = None, frequency: Frequency = Frequency.DAILY, **kwargs)[source]

Gets adjusted historical Prices (Open, High, Low, Close) and Volume

Parameters:
  • tickers (Ticker, Sequence[Ticker]) – tickers for securities which should be retrieved

  • fields (PriceField, Sequence[PriceField]) – fields of securities which should be retrieved

  • start_date (datetime) – date representing the beginning of historical period from which data should be retrieved

  • end_date (datetime) – date representing the end of historical period from which data should be retrieved; if no end_date was provided, by default the current date will be used

  • frequency (Frequency) – frequency of the data

Returns:

If possible the result will be squeezed so that instead of returning QFDataArray (3-D structure), data of lower dimensionality will be returned. The results will be either an QFDataArray (with 3 dimensions: dates, tickers, fields), PricesDataFrame (with 2 dimensions: dates, tickers or fields. It is also possible to get 2 dimensions ticker and field if single date was provided), or PricesSeries with 1 dimension: dates. All the containers will be indexed with PriceField whenever possible (for example: instead of ‘Close’ column in the PricesDataFrame there will be PriceField.Close)

Return type:

None, PricesSeries, PricesDataFrame, QFDataArray

supported_ticker_types()[source]

Returns classes of tickers which are supported by this DataProvider.