API-интерфейсы Bloomberg - элементы исторического индекса в Python

Я пытаюсь получить элементы индекса с помощью API-интерфейсов Bloomberg в Python. У меня нет проблем с получением текущих составляющих, но мне нужен исторический список (пример: где были составляющие Russell 1000 или S&P 500 по состоянию на 1 квартал 1995 года).

Чтобы получить текущие элементы индекса, я могу использовать следующее:

В excel я могу использовать INDX_MEMBERS для получения составляющих:

=BDS("Index Ticker", INDX_MEMBERS)

В Python:

import pybbg

def Main():
    bbg = pybbg.Pybbg()
    IndexConst = bbg.bds('IndexName', 'INDX_MEMBERS')

или:

from tia.bbg import LocalTerminal

resp = LocalTerminal.get_reference_data(index_ticker + ' INDEX', 'INDX_MEMBERS')
members = resp.as_frame().iloc[0,0]

Вопрос в том, как я могу получить исторические элементы / составляющие индекса. Например, я генерирую квартальные даты, а затем хочу знать список составляющих для каждой даты.

['2020-06-30','2020-03-31','2019-12-31','2019-09-30','2019-06-30','2019-03-31', ' 2018-12-31 '...' 1980-06-30',]

Я пробовал много решений, в том числе одно ниже, где я получаю пустой фрейм:

from tia.bbg import LocalTerminal

date_start = datetime.date(2010,6,28)
date_end = datetime.date(2020,6,28)

members_russell1000_3 = LocalTerminal.get_historical('RIY Index', 'INDX_MEMBERS',start=date_start, end=date_end,).as_frame()

или решение ниже, где независимо от даты (сейчас или 20 лет назад) я получаю один и тот же список составляющих:

from xbbg import blp

members =  blp.bds('RIY Index', 'INDX_MEMBERS', DVD_Start_Dt=k[1], DVD_End_Dt=k[1])

Объяснение переменных к примерам выше:

  • 'RIY Index' - тикер индекса Russell 1000
  • 'INDX_MEMBERS' - поле Bloomberg (поля) для списка составляющих индекса

В качестве альтернативы я был бы счастлив, если бы смог получить исторический список изменений компонентов индекса с датами (у меня уже есть текущие составляющие)

2 ответа

Вам нужно использовать INDX_MWEIGHT_PX поле и END_DATE_OVERRIDEпереопределить (формат даты: ггггммдд). Это запрос справочных данных, поэтому, вероятно,bds и нет bdh в библиотеке python, но я никогда ее не использовал, поэтому не уверен на 100%, и вам, возможно, придется попробовать несколько решений, пока не найдете правильное.

Я обнаружил, что ниже работает
blp.bds('RIY Index', "INDX_MWEIGHT", END_DATE_OVERRIDE="20210101")
и дает те же результаты, что и запрос excel
=BDS("RIY Index", "INDX_MWEIGHT_HIST", "END_DATE_OVERRIDE",'20210101')
В качестве альтернативы, использование «INDX_MWEIGHT_PX» также дает фактический вес и текущие значения цены.

Другие вопросы по тегам