3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在PTrade量化交易平台的回测环境中,交易成本主要由佣金(Commission)、**经手费(Transfer Fee)和印花税(Stamp Duty)**三部分组成。
根据PTrade API文档说明,回测中的手续费计算逻辑如下:
这是支付给券商的费用,双向收取(买入和卖出均收取)。
佣金 = 交易金额 × 佣金费率这是支付给交易所的费用,双向收取。
经手费 = 交易金额 × 经手费率这是国家税收,仅在卖出股票时收取(买入不收)。
在PTrade策略的 initialize 函数中,可以使用 set_commission 接口来调整佣金费率和最低佣金限制。
接口说明:
set_commission(commission_ratio=0.0003, min_commission=5.0, type="STOCK")
commission_ratio (float): 佣金费率(如 0.0003 代表万三)。min_commission (float): 最低佣金(如 5.0 代表不足5元按5元收)。type (str): 交易类型,默认为 "STOCK"(支持 STOCK, ETF, LOF)。代码示例:
def initialize(context):
# 设置股票交易佣金为万分之二,最低5元
set_commission(commission_ratio=0.0002, min_commission=5.0, type='STOCK')
# 设置ETF交易佣金为万分之一,最低0元(部分券商ETF无最低5元限制)
set_commission(commission_ratio=0.0001, min_commission=0.0, type='ETF')
假设我们设置:佣金率万分之三 (0.0003),最低佣金5元,经手费万分之0.487。
操作:买入 100 股 某股票,价格 10 元/股。
操作:卖出 10,000 股 某股票,价格 20 元/股。
在PTrade回测中,总手续费 = Max(佣金, 最低佣金) + 经手费 + 印花税(仅卖出)。合理设置这些参数有助于使回测结果更接近真实交易环境。
Q: PTrade回测中是否支持设置滑点?
A: 支持。可以使用 set_slippage(按百分比设置,如0.001代表0.1%)或 set_fixed_slippage(按固定金额设置,如0.02代表每股差价0.02元)来模拟交易滑点,这会增加买入成本或减少卖出收益。
Q: 为什么我的回测中ETF卖出没有扣印花税?
A: 这是符合市场规则的。目前国内证券市场中,ETF和LOF基金的交易免收印花税,PTrade回测引擎遵循这一规则。
Q: set_commission 只能在 initialize 中调用吗?
A: 是的,根据API文档,该函数仅在回测模块可用,且通常在 initialize 初始化阶段进行配置。