3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在量化交易中,真实的交易成本(佣金、过户费、印花税等)对策略的最终收益有着至关重要的影响,尤其是对于高频交易或小额交易策略。ptrade 平台提供了 set_commission 函数,允许用户在回测中精确自定义佣金费率及单笔最低佣金限制。
set_commission 函数详解set_commission 接口仅在回测模块可用,用于设置回测时的佣金费率和最低佣金限制。
set_commission(commission_ratio=0.0003, min_commission=5.0, type="STOCK")
commission_ratio (float):佣金费率。默认股票为万分之三(0.0003),ETF/LOF 基金默认为万分之八(0.0008)。min_commission (float):单笔交易最低佣金。默认每笔交易最低扣除 5.0 元。type (string):交易类型,支持 "STOCK"(股票)、"ETF"、"LOF",默认为 "STOCK"。在 ptrade 回测中,系统计算的单笔总手续费公式如下:
$$\text{单笔手续费} = \text{佣金费} + \text{经手费}$$
佣金费计算:
$$\text{实际佣金} = \max(\text{commission_ratio} \times \text{交易总金额}, \text{min_commission})$$
即:如果计算出的佣金小于设置的最低佣金(如 5 元),则强制按最低佣金收取。
经手费计算:
$$\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)
set_commission 仅在回测环境下生效。实盘或模拟盘交易时,手续费由您在券商开立的资金账户实际费率决定,ptrade 无法通过代码修改实盘扣费。min_commission 设为 0.0,以评估在“无最低手续费限制”的极优渠道下策略的真实表现。