BloombergBeapHapiDataProvider

class qf_lib.data_providers.bloomberg_beap_hapi.bloomberg_beap_hapi_data_provider.BloombergBeapHapiDataProvider(settings: qf_lib.settings.Settings, reply_timeout: int = 5)[source]

Bases: qf_lib.data_providers.abstract_price_data_provider.AbstractPriceDataProvider, qf_lib.data_providers.tickers_universe_provider.TickersUniverseProvider

Data Provider which provides financial data from Bloomberg BEAP HAPI.

The settings file requires the following variables: - hapi_credentials.client_id - hapi_credentials.client_secret - hapi_credentials.expiration_date - output_directory

Other optional settings parameters: - hapi_credentials.user (parameter to link the Data License to a Bloomberg Anywhere or Bloomberg Professional account; the User value can be obtained by running IAM <GO> in the Bloomberg terminal) - hapi_crenetials.sn (parameter to link the Data License to a Bloomberg Professional account; the S/N value can be obtained by running IAM <GO> in the Bloomberg terminal)

Methods

expiration_date_field_str_map(ticker)

Method has to be implemented in each data provider in order to be able to use get_futures_chain_tickers.

get_current_values(tickers, …)

Gets from the Bloomberg HAPI the current values of fields for given tickers.

get_history(tickers, …)

Gets historical data from Bloomberg HAPI from the (start_date - end_date) time range.

get_tickers_universe(universe_ticker, date)

param universe_ticker

ticker that describes a specific universe, which members will be returned

get_unique_tickers(universe_ticker)

Returns the unique list of Tickers belonging to a specified universe regardless of the date.

price_field_to_str_map(ticker)

Method has to be implemented in each data provider in order to be able to use get_price.

supported_ticker_types()

Returns classes of tickers which are supported by this DataProvider.

expiration_date_field_str_map(ticker: qf_lib.common.tickers.tickers.BloombergTicker = None) → Dict[qf_lib.common.enums.expiration_date_field.ExpirationDateField, str][source]

Method has to be implemented in each data provider in order to be able to use get_futures_chain_tickers. Returns dictionary containing mapping between ExpirationDateField and corresponding string that has to be used by get_futures_chain_tickers method.

Parameters

ticker (None, Ticker) – ticker is optional and might be uses by particular data providers to create appropriate dictionary

Returns

mapping between ExpirationDateField and corresponding strings

Return type

Dict[ExpirationDateField, str]

get_current_values(tickers: Union[qf_lib.common.tickers.tickers.BloombergTicker, Sequence[qf_lib.common.tickers.tickers.BloombergTicker]], fields: Union[str, Sequence[str]], universe_creation_time: datetime.datetime = None, fields_overrides: Optional[List[Tuple]] = None) → Union[None, float, str, List, qf_lib.containers.series.qf_series.QFSeries, qf_lib.containers.dataframe.qf_dataframe.QFDataFrame][source]

Gets from the Bloomberg HAPI the current values of fields for given tickers.

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

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

  • universe_creation_time (datetime) – Used only if we want to get previously created universe, fields universe or request

  • fields_overrides (Optional[List[Tuple]]) – list of tuples representing overrides, where first element is always the name of the override and second element is the value e.g. in case if we want to download ‘FUT_CHAIN’ and include expired contracts we add the following overrides [(‘INCLUDE_EXPIRED_CONTRACTS’, ‘Y’),]

Returns

Either QFDataFrame with 2 dimensions: ticker, field or QFSeries with 1 dimensions: ticker of field (depending if many tickers or fields were provided) is returned.

Return type

float, QFSeries, QFDataFrame

Raises

BloombergError – When unexpected response from Bloomberg HAPI happened

get_history(tickers: Union[qf_lib.common.tickers.tickers.BloombergTicker, Sequence[qf_lib.common.tickers.tickers.BloombergTicker]], fields: Union[str, Sequence[str]], start_date: datetime.datetime, end_date: datetime.datetime = None, frequency: qf_lib.common.enums.frequency.Frequency = <Frequency.DAILY: 252>, universe_creation_time: Optional[datetime.datetime] = None, currency: Optional[str] = None) → Union[qf_lib.containers.series.qf_series.QFSeries, qf_lib.containers.dataframe.qf_dataframe.QFDataFrame, qf_lib.containers.qf_data_array.QFDataArray][source]

Gets historical data from Bloomberg HAPI from the (start_date - end_date) time range.

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

  • fields (str, Sequence[str]) – 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

  • universe_creation_time (datetime) – Used only if we want to get previously created universe, fields universe or request

  • currency (Optional[str]) – currency which should be used to obtain the historical data (by default local currency is used)

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

Raises

BloombergError – When unexpected response from Bloomberg HAPI happened

get_tickers_universe(universe_ticker: qf_lib.common.tickers.tickers.BloombergTicker, date: Optional[datetime.datetime] = None) → List[qf_lib.common.tickers.tickers.BloombergTicker][source]
Parameters
  • universe_ticker (BloombergTicker) – ticker that describes a specific universe, which members will be returned

  • date (datetime) – date for which current universe members’ tickers will be returned

get_unique_tickers(universe_ticker: qf_lib.common.tickers.tickers.BloombergTicker) → List[qf_lib.common.tickers.tickers.BloombergTicker][source]

Returns the unique list of Tickers belonging to a specified universe regardless of the date.

Parameters

universe_ticker – ticker that describes a specific universe, which members will be returned

Returns

list of Tickers belonging to the universe

Return type

List[Ticker]

price_field_to_str_map(ticker: qf_lib.common.tickers.tickers.BloombergTicker = None) → Dict[qf_lib.common.enums.price_field.PriceField, str][source]

Method has to be implemented in each data provider in order to be able to use get_price. Returns dictionary containing mapping between PriceField and corresponding string that has to be used by get_history method to get appropriate type of price series.

Parameters

ticker (None, Ticker) – ticker is optional and might be uses by particular data providers to create appropriate dictionary

Returns

mapping between PriceFields and corresponding strings

Return type

Dict[PriceField, str]

supported_ticker_types()[source]

Returns classes of tickers which are supported by this DataProvider.