如何通过XBBG的blp.bdh批量获取多国多期限国债收益率曲线?
一次性获取多国家多期限国债收益率的Bloomberg API方案
核心思路:批量构造代码列表 + 单次blp.bdh调用
Bloomberg的F476XXy Index系列代码可通过批量整理后,一次性传入blp.bdh接口获取数据,无需多次调用。
步骤1:整理/生成目标代码列表
先从Bloomberg终端搜索F476XXy Index,把需要的国家、期限对应的代码整理成列表。示例:
from xbbg import blp # 手动整理的目标收益率代码 target_tickers = [ 'F47603M Index', # 墨西哥3个月国债收益率 'F47601Y Index', # 墨西哥1年国债收益率 'F47605Y Index', # 墨西哥5年国债收益率 'F47610Y Index', # 墨西哥10年国债收益率 'FXXX03M Index' # 替换为其他国家对应期限的代码 ]
若需批量生成多国家+多期限的代码,可通过字典映射动态生成(需根据实际代码规则调整前缀/后缀):
# 国家-代码规则映射 country_term_config = { 'Mexico': {'prefix': 'F476', 'terms': ['03M', '01Y', '05Y', '10Y']}, 'Brazil': {'prefix': 'FXXX', 'terms': ['03M', '01Y', '05Y']} } # 动态生成完整代码列表 target_tickers = [] for _, config in country_term_config.items(): for term in config['terms']: target_tickers.append(f"{config['prefix']}{term} Index")
步骤2:单次调用blp.bdh获取数据
将代码列表传入blp.bdh,指定所需字段(常用PX_LAST或YLD_YTM_MID)和时间范围:
# 获取2024年全年的收益率数据 yield_data = blp.bdh( tickers=target_tickers, flds=['PX_LAST'], start_date='2024-01-01', end_date='2024-12-31' ) # 输出数据前5行(行是日期,列是代码+字段的MultiIndex结构) print(yield_data.head())
注意事项
- 代码有效性:所有传入的代码需在Bloomberg终端验证可用,避免返回空值或调用错误。
- 批量上限:
blp.bdh单次支持约100个ticker,若超过需分批次调用后合并数据。 - 字段适配:不同代码的可用字段可能有差异,可在终端用
FLDS命令查询目标代码的支持字段。
内容的提问来源于stack exchange,提问作者Fróis
相关产品推荐
相关产品推荐

