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

ptrade 平台如何使用 set_commission 精确模拟交易手续费与最低 5 元限制?

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

问题描述

ptrade 精准回测技巧:自定义佣金率与 5 元最低手续费限制
如何使用 set_commission 函数在 ptrade 回测中精确模拟印花税和每笔最低 5 元的佣金成本?

解决方案

ptrade 精准回测技巧:自定义佣金率与 5 元最低手续费限制

在量化交易中,真实的交易成本(佣金、过户费、印花税等)对策略的最终收益有着至关重要的影响,尤其是对于高频交易或小额交易策略。ptrade 平台提供了 set_commission 函数,允许用户在回测中精确自定义佣金费率及单笔最低佣金限制。


一、set_commission 函数详解

set_commission 接口仅在回测模块可用,用于设置回测时的佣金费率和最低佣金限制。

1. 接口签名

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

2. 参数说明

  • commission_ratio (float):佣金费率。默认股票为万分之三(0.0003),ETF/LOF 基金默认为万分之八(0.0008)。
  • min_commission (float):单笔交易最低佣金。默认每笔交易最低扣除 5.0 元。
  • type (string):交易类型,支持 "STOCK"(股票)、"ETF""LOF",默认为 "STOCK"

二、ptrade 回测手续费计算逻辑

在 ptrade 回测中,系统计算的单笔总手续费公式如下:

$$\text{单笔手续费} = \text{佣金费} + \text{经手费}$$

  1. 佣金费计算
    $$\text{实际佣金} = \max(\text{commission_ratio} \times \text{交易总金额}, \text{min_commission})$$
    即:如果计算出的佣金小于设置的最低佣金(如 5 元),则强制按最低佣金收取。

  2. 经手费计算
    $$\text{经手费} = 0.0000487 \times \text{交易总金额} \quad (\text{即万分之 } 0.487)$$

注意:印花税(目前 A 股卖出时单边征收 0.05%)通常由 ptrade 系统底层根据交易品种自动扣除,无需在 set_commission 中手动叠加,以避免重复计算。


三、核心代码示例

以下是一个完整的策略初始化示例,展示了如何将股票的佣金率设置为万分之二点五(0.00025),并保留单笔最低 5 元的限制:

def initialize(context):
    # 1. 设置操作的股票池
    g.security = '600570.SS'  # 恒生电子
    set_universe(g.security)
    
    # 2. 精确设置股票回测佣金:费率万分之2.5,单笔最低 5 元
    set_commission(commission_ratio=0.00025, min_commission=5.0, type="STOCK")
    
    # 3. 如果策略涉及 ETF,也可以单独设置 ETF 的佣金费率(如万分之一,无最低限制)
    set_commission(commission_ratio=0.0001, min_commission=0.0, type="ETF")

def handle_data(context, data):
    # 策略交易逻辑
    # 当买入 100 股恒生电子时,系统会自动应用上述设置的万分之 2.5 佣金率
    # 若计算出的佣金不足 5 元,将自动按 5 元收取
    order(g.security, 100)

四、常见问题与避坑指南

  1. 为什么实盘中没有生效?
    set_commission 仅在回测环境下生效。实盘或模拟盘交易时,手续费由您在券商开立的资金账户实际费率决定,ptrade 无法通过代码修改实盘扣费。
  2. 如何规避“5元起征点”对高频小额策略的影响?
    如果您的策略单笔交易金额较小(例如每次仅交易几百元),5 元的最低佣金会极大地蚕食利润。在回测此类策略时,建议将 min_commission 设为 0.0,以评估在“无最低手续费限制”的极优渠道下策略的真实表现。