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

ptrade 如何在同一个回测中分别为股票、ETF、LOF 设置不同的佣金费率和最低扣费?

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

问题描述

ptrade 精准回测:股票、ETF 与 LOF 佣金与最低消费(min_commission)分类差异化设置
ptrade 如何在同一个回测中分别为股票、ETF、LOF 设置不同的佣金费率和最低扣费?

解决方案

在 ptrade 量化回测中,为了使回测结果更贴近真实的实盘交易成本,我们需要对不同的交易品种设置不同的手续费率。ptrade 提供了 set_commission 接口,支持通过 type 参数分别对 STOCK(股票)ETF 基金LOF 基金 进行差异化的佣金与最低扣费设置。

一、接口说明

set_commission(commission_ratio=0.0003, min_commission=5.0, type="STOCK")

  • commission_ratio:佣金费率(如 0.0003 代表万分之三)。
  • min_commission:单笔最低交易佣金(默认每笔最低扣 5 元,即常见的“最低 5 元”限制)。
  • type:交易类型,支持 "STOCK""ETF""LOF"

注意

  1. 该接口仅在回测模块可用,且必须在 initialize(context) 初始化函数中调用。
  2. 回测总手续费 = 佣金费 + 经手费。其中经手费率固定为万分之 0.487。
  3. 若计算出的佣金费小于 min_commission,则按 min_commission 收取。

二、分类差异化设置示例代码

以下代码展示了如何在 initialize 中,同时为股票(万三,最低 5 元)、ETF(万零点五,免五)和 LOF(万一,最低 1 元)设置不同的佣金规则:

def initialize(context):
    # 1. 设置股票池
    g.security = ['600570.SS', '510050.SS', '162605.SZ']
    set_universe(g.security)
    
    # 2. 差异化佣金设置
    # 股票:佣金万分之三,单笔最低 5 元
    set_commission(commission_ratio=0.0003, min_commission=5.0, type="STOCK")
    
    # ETF 基金:佣金万分之零点五,无最低佣金限制(免五)
    set_commission(commission_ratio=0.00005, min_commission=0.0, type="ETF")
    
    # LOF 基金:佣金万分之一,单笔最低 1 元
    set_commission(commission_ratio=0.0001, min_commission=1.0, type="LOF")
    
    log.info("--- 股票、ETF、LOF 差异化佣金设置成功 ---")

def handle_data(context, data):
    # 策略盘中逻辑
    pass

三、精准回测建议

  1. 免五设置:如果您的实盘账户享有“ETF/可转债交易免五(无最低 5 元限制)”的优惠,请在回测中将 min_commission 设为 0.0
  2. 可转债手续费:目前 set_commission 主要支持 STOCKETFLOF。若涉及期货,需使用 set_future_commission 接口进行设置。