问题描述
/
解决方案
根据 ptrade 官方 API 文档,目前平台没有直接提供获取 ETF 实时 IOPV(基金份额参考净值)的接口字段。
不过,ptrade 提供了 get_etf_info 接口,可以用来获取 ETF 的基础申赎信息、T-1 日的净值数据以及是否发布 IOPV 的标志。
1. 使用 get_etf_info 获取 ETF 净值及 IOPV 标志
该接口仅在股票交易模块可用,用于获取单支或者多支 ETF 的信息。
接口调用示例:
def initialize(context):
g.security = '510050.SS'
set_universe(g.security)
def handle_data(context, data):
# 获取单只 ETF 信息
etf_info = get_etf_info('510050.SS')
log.info(etf_info)
返回数据解析:
返回的字典中包含以下与净值和 IOPV 相关的字段:
publish: 是否需要发布 IOPV(1 是需要发布,0 是不需要发布)nav_percu: T-1 日申购基准单位净值nav_pre: T-1 日基金单位净值cash_balance: 现金差额pre_cash_componet: T-1 日申购基准单位现金余额
2. 如何获取“实时”IOPV?
由于官方 API 未直接推送实时 IOPV,如果您在策略中(如 ETF 套利策略)强依赖实时 IOPV,通常有以下两种替代方案:
- 自行计算:通过
get_etf_stock_list和get_etf_stock_info获取 ETF 的成分券列表及数量,结合get_snapshot或get_gear_price获取成分券的实时盘口价格,再结合现金差额等数据,在策略内部自行估算实时的 IOPV。 - 外部数据源:如果券商环境允许,通过网络请求(如
requests库)从外部合规的行情数据源获取实时 IOPV 数据传入策略中。
总结:ptrade 暂不支持直接获取实时 IOPV,但可以通过 get_etf_info 获取 T-1 日净值及 IOPV 发布状态,高级套利玩家通常需要根据成分股行情自行拟合计算实时净值。