如何通过Python结合Excel调用Bloomberg终端SRCH获取固收数据?
解决Bloomberg BSRCH Excel公式生成问题
问题核心
需要通过Python生成Excel可调用的Bloomberg BSRCH公式,获取JPY/USD/GBP计价、期限≤20年、评级高于BBB的政府债+公司债,字段包含ISIN、到期日、OAS Bid利差;当前公式存在格式错误,且blapi库无SRCH功能文档支持。
修正后的BSRCH公式代码
你之前的公式存在拼写错误、筛选条件缺失、格式不规范问题,以下是修正后的Python代码:
query = '=BSRCH("Asset Classes=Corporate|Governments","Currencies=JPY|USD|GBP","Maturity<=20Y","Rating>BBB","fields=id_isin|maturity|OAS_Spread_bid")'
关键修正点
- 资产类别拼写修正:
Goverments改为Governments - 补充核心筛选条件:添加币种
JPY|USD|GBP、期限<=20Y、评级>BBB规则 - 字段列表格式修正:移除末尾多余的竖线
| - 引号嵌套优化:确保Excel公式的引号转义正确
验证与替代方案
- Excel直接验证:将生成的公式粘贴到安装了Bloomberg插件的Excel单元格,可直接测试数据返回结果;也可在终端SRCH界面保存查询模板,用
BSRCH("Template=你的模板名","fields=...")调用,降低格式出错概率。 - blapi库替代实现:若不想依赖Excel,可通过blpapi的
ReferenceDataRequest结合筛选参数实现相同逻辑,核心是用overrides传递筛选规则:
import blpapi # 初始化会话 session = blpapi.Session() session.start() session.openService("//blp/refdata") # 创建请求 request = session.createRequest("ReferenceDataRequest") request.append("securities", "CORP_GOVT_BONDS") # 对应政府+公司债综合品类 request.append("fields", "ID_ISIN") request.append("fields", "MATURITY") request.append("fields", "OAS_SPREAD_BID") # 添加筛选条件 overrides = request.getElement("overrides") # 币种筛选 override = overrides.appendElement() override.setElement("fieldId", "CURRENCY") override.setElement("value", "JPY,USD,GBP") # 期限筛选(LE=Less than or Equal) override = overrides.appendElement() override.setElement("fieldId", "MATURITY") override.setElement("value", "LE 20Y") # 评级筛选(GT=Greater Than) override = overrides.appendElement() override.setElement("fieldId", "RATING") override.setElement("value", "GT BBB") # 发送请求并处理响应 session.sendRequest(request) while True: event = session.nextEvent() for msg in event: print(msg) if event.eventType() == blpapi.Event.RESPONSE: break
注:筛选运算符和字段ID需匹配Bloomberg数据字典,可通过终端FLDS命令查询。
内容的提问来源于stack exchange,提问作者Billy Dan
相关产品推荐
相关产品推荐

