彭博API-Python中的历史索引成员

问题描述

我正在尝试使用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,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',DVD_Start_Dt=k[1],DVD_End_Dt=k[1])

上述示例的变量说明:

  • “ RIY指数”-罗素1000指数行情指标
  • 'INDX_MEMBERS'-彭博字段(flds),用于获取索引成分列表

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

解决方法

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