问题描述
我正在尝试使用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%确定,您可能需要尝试一些解决方案,直到找到正确的。