🚀 AI 一键生成 ptrade 策略代码

PTrade ETF 进阶:利用 get_etf_info 查询现金差额与最小申赎单位

ptrade | 发布时间: 2025/12/24
以下内容由 EasyQuant 生成。

问题描述

如何获取 ETF 的现金差额和最小申赎单位?

解决方案

在 PTrade 量化交易平台中,获取 ETF 的现金差额(Cash Balance)和最小申赎单位(Report Unit)可以通过调用 get_etf_info 接口来实现。

该接口仅在股票交易模块(实盘或仿真交易)中可用,回测模式下通常不支持此特定数据的获取。

以下是具体的代码实现及字段说明:

核心代码实现

def initialize(context):
    # 设置需要查询的 ETF 代码,例如上证50ETF
    g.etf_code = '510050.SS'
    set_universe(g.etf_code)

def handle_data(context, data):
    # 调用接口获取 ETF 信息
    # 注意:该函数返回的是一个字典,key为ETF代码,value为包含详细信息的字典
    etf_info_dict = get_etf_info(g.etf_code)
    
    if etf_info_dict and g.etf_code in etf_info_dict:
        # 获取该 ETF 的具体信息对象
        info = etf_info_dict[g.etf_code]
        
        # 获取现金差额 (cash_balance)
        cash_balance = info.get('cash_balance')
        
        # 获取最小申赎单位 (report_unit)
        report_unit = info.get('report_unit')
        
        # 打印结果
        log.info("ETF代码: %s" % g.etf_code)
        log.info("现金差额 (cash_balance): %s" % cash_balance)
        log.info("最小申赎单位 (report_unit): %s" % report_unit)
    else:
        log.info("未获取到 ETF: %s 的信息" % g.etf_code)

字段详细说明

调用 get_etf_info(etf_code) 后,返回的数据字典中包含以下关键字段:

  1. cash_balance (现金差额)

    • 含义:T-1 日的现金差额(单位:元)。
    • 类型:字符串形式的浮点数 (str:float)。
    • 用途:用于计算 ETF 申购或赎回时需要补足或退还的现金部分。
  2. report_unit (最小申赎单位)

    • 含义:ETF 的最小申购、赎回单位(单位:份)。
    • 类型:字符串形式的整数 (str:int)。
    • 用途:申购或赎回 ETF 时,数量必须是该数值的整数倍(例如 900,000 份或 1,000,000 份)。

注意事项

  1. 适用范围:该函数 (get_etf_info) 仅支持 PTrade 客户端的股票交易模块。如果在回测环境中调用,可能会返回空数据或报错。
  2. 参数格式etf_code 可以是单个字符串(如 '510050.SS')或代码列表。
  3. 返回值处理:接口返回的是一个嵌套字典,第一层 Key 是 ETF 代码,因此取值时需要先通过代码索引到具体的详情字典。

Q&A

Q1: get_etf_info 接口还能获取哪些其他 ETF 信息?
A1: 除了现金差额和最小申赎单位外,该接口还可以获取是否发布 IOPV (publish)、现金替代比例上限 (max_cash_ratio)、T-1 日申购基准单位现金余额 (pre_cash_componet)、T-1 日基金单位净值 (nav_pre)、申购上限 (allot_max) 和赎回上限 (redeem_max) 等信息。

Q2: 如果我想进行 ETF 的申购或赎回交易,应该使用哪个函数?
A2: 在 PTrade 交易模块中,可以使用 etf_purchase_redemption(etf_code, amount, limit_price=None) 函数。其中 amount 为正数表示申购,负数表示赎回,且 amount 的绝对值必须是 report_unit(最小申赎单位)的整数倍。

Q3: 为什么我在回测中调用 get_etf_info 返回了空字典?
A3: get_etf_info 是柜台交易类接口,依赖于实盘柜台或仿真柜台推送的实时参考数据(如 PCF 清单)。回测环境通常只包含历史行情数据,不包含历史的每日申赎清单数据,因此该接口在回测中通常不可用。