🚀 AI 一键生成 ptrade 策略代码
立即体验

Ptrade 平台如何使用 etf_purchase_redemption 进行 ETF 申购与赎回操作?

ptrade | 发布时间: 2026/7/29
以下内容由 EasyQuant 生成。

问题描述



Title: PTrade ETF 申赎套利:etf_purchase_redemption 接口实战指南

Question: 在 ptrade 中如何使用 etf_purchase_redemption 进行 ETF 申购与赎回操作?

解决方案

Ptrade 平台 ETF 申购与赎回(etf_purchase_redemption)实战指南

在 Ptrade 量化交易平台中,ETF 申购与赎回是实现 ETF 一级市场与二级市场套利(一二级市场折溢价套利)的核心操作。通过 etf_purchase_redemption 接口,投资者可以高效提交单只 ETF 的申购或赎回委托。


一、接口基本语法

etf_purchase_redemption 仅在 Ptrade 客户端的股票交易模块可用。

etf_purchase_redemption(etf_code, amount, limit_price=None)

参数说明

参数名 类型 是否必填 说明
etf_code str 单只 ETF 代码,例如 '510050.SS'
amount int 申赎数量。正数表示申购,负数表示赎回(单位:份)
limit_price float 申赎保护限价/指定价格

返回值

  • str:订单创建成功,返回对应的 Order 对象 ID order_id
  • None:创建订单失败。

二、核心前置接口配合

在进行 ETF 申赎套利前,通常需要配合以下接口获取成分股与篮子数据:

  1. get_etf_info(etf_code):获取 ETF 的最小申购/赎回单位(report_unit)、现金差额、T-1日净值等基础参数。
  2. etf_basket_order(...):当需要一键一二级市场对冲时,用于买入或卖出 ETF 成分券篮子。

三、代码示例:ETF 申购与赎回基础用法

def initialize(context):
    # 设置订阅标的
    g.etf_code = '510050.SS'
    set_universe(g.etf_code)
    g.flag = False

def handle_data(context, data):
    if not g.flag:
        # 1. 获取 ETF 详细信息(如最小申赎单位)
        etf_info = get_etf_info(g.etf_code)
        min_unit = etf_info.get(g.etf_code, {}).get('report_unit', 900000)
        
        # 2. 执行 ETF 申购(正数为申购)
        order_id_buy = etf_purchase_redemption(g.etf_code, min_unit)
        log.info(f"ETF 申购委托提交,订单号: {order_id_buy}")
        
        # 3. 执行 ETF 赎回(负数为赎回,附带限价)
        order_id_sell = etf_purchase_redemption(g.etf_code, -min_unit, limit_price=2.9995)
        log.info(f"ETF 赎回委托提交,订单号: {order_id_sell}")
        
        g.flag = True

四、ETF 一二级市场套利逻辑流程

溢价套利为例(二级市场价格 > 一级市场 IOPV/净值):

  1. 买入成分券:使用 etf_basket_order 买入一篮子股票。
  2. 一级市场申购:调用 etf_purchase_redemption(etf_code, amount) 将股票申购为 ETF 份额。
  3. 二级市场卖出:使用 orderorder_market 在二级市场卖出申购获得的 ETF 份额,锁定溢价收益。

五、注意事项

  1. 申赎单位约束:申购和赎回的数量必须是该 ETF 最小申赎单位(report_unit)的整数倍,否则柜台会拒绝报单。
  2. 资金与持仓准备
    • 申购:账户需持有足额的成分券(或允许现金替代的资金)。
    • 赎回:账户需持有足额的 ETF 份额。
  3. 交易环境限制:该接口不支持回测环境,仅在 Ptrade 实盘/模拟盘交易模块下有效。