2

我正在尝试在 Python 中使用 Bloomberg API 来获取索引成员。获取当前成分股没有问题,但我想要一个历史列表(例如:截至 1995 年第一季度,罗素 1000 或标准普尔 500 指数成分股在哪里)。

要获取当前索引成员,我可以使用以下内容:

在 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 指数' - 罗素 1000 指数代码
  • 'INDX_MEMBERS' - 指数成分列表的 Bloomberg 字段 (flds)

或者,如果我能获得带有日期的指数成分变化的历史列表(我已经有当前成分),我会很高兴

4

1 回答 1

1

您需要使用该INDX_MWEIGHT_PX字段和END_DATE_OVERRIDE覆盖(日期格式:yyyymmdd)。这是一个参考数据请求,所以可能bds而不是bdh在 python 库中,但我从未使用过它,所以不能 100% 确定,您可能需要尝试一些解决方案,直到找到正确的解决方案。

于 2020-08-19T16:36:10.070 回答