Excel可用的Bloomberg BDP函数如何在Python中实现?
在Python中实现Bloomberg BDP函数(ISIN查询证券名称)
你可以通过Bloomberg提供的Python API实现Excel中=BDP(A1&" ISIN","SECURITY_NAME")的功能,以下是两种常用实现方式:
方式一:使用xbbg(简化封装库)
xbbg是官方blpapi的轻量封装,语法贴近Excel的BDP函数,上手更快捷。
步骤1:安装依赖
pip install xbbg
步骤2:代码实现
from xbbg import blp # 替换为你的目标ISIN代码 target_isin = "US0378331005" # 构造Bloomberg证券标识(与Excel格式一致:ISIN + " ISIN") security_ticker = f"{target_isin} ISIN" # 调用bdp方法查询SECURITY_NAME字段 query_result = blp.bdp(tickers=security_ticker, flds="SECURITY_NAME") # 输出结果 print(query_result)
方式二:使用官方blpapi库
如果需要更底层的控制或处理复杂场景,推荐使用Bloomberg官方的blpapi库。
步骤1:安装依赖
pip install blpapi
注意:需确保已安装Bloomberg Terminal并处于登录状态,同时开启了Terminal的API服务(默认端口8194)。
步骤2:代码实现
import blpapi # 初始化会话配置 session_options = blpapi.SessionOptions() session_options.setServerHost("localhost") session_options.setServerPort(8194) # 启动会话 session = blpapi.Session(session_options) if not session.start(): print("无法连接至Bloomberg会话") exit() # 打开参考数据服务 if not session.openService("//blp/refdata"): print("无法打开参考数据服务") session.stop() exit() ref_data_service = session.getService("//blp/refdata") # 构造查询请求 request = ref_data_service.createRequest("ReferenceDataRequest") target_isin = "US0378331005" security_ticker = f"{target_isin} ISIN" request.append("securities", security_ticker) request.append("fields", "SECURITY_NAME") # 发送请求并处理响应 session.sendRequest(request) while True: event = session.nextEvent() for msg in event: if event.eventType() in (blpapi.Event.RESPONSE, blpapi.Event.PARTIAL_RESPONSE): sec_data = msg.getElement("securityData") field_data = sec_data.getElement("fieldData") if field_data.hasElement("SECURITY_NAME"): sec_name = field_data.getElementAsString("SECURITY_NAME") print(f"证券名称:{sec_name}") if event.eventType() == blpapi.Event.RESPONSE: break # 关闭会话 session.stop()
关键说明
- 两种方式的核心都是构造
ISIN代码 + " ISIN"格式的证券标识,与Excel中的A1&" ISIN"完全对应。 - xbbg自动处理会话管理和响应解析,适合快速实现简单查询;blpapi提供更多自定义空间,适合复杂工作流。
内容的提问来源于stack exchange,提问作者SebastianHeeg
相关产品推荐
相关产品推荐

