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

PTrade中滑点函数在回测中有什么作用?为什么要设置滑点?

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

问题描述

PTrade中滑点函数在回测中有什么作用?

为什么要设置滑点

解决方案

在PTrade量化交易平台中,滑点(Slippage)是回测系统中一个非常重要的概念。理解并正确设置滑点,对于评估量化策略的真实表现至关重要。

什么是滑点?

滑点是指在交易过程中,委托下单的价格与实际成交的价格之间的差异。例如,你看到某只股票当前价格为10.00元并下达买入市价单,但由于市场价格波动,最终成交价可能是10.01元。这0.01元的差价就是滑点。

为什么要设置滑点?

在量化回测中设置滑点的主要原因是为了让回测结果尽可能逼近真实的交易场景。真实市场中不可避免地会产生滑点,原因包括:

  1. 市场流动性不足:当你的订单量较大,而当前价位的挂单量不足以完全吃下你的订单时,系统会向更差的价位撮合成交。
  2. 网络与系统延迟:从策略发出交易信号、报单到交易所,再到交易所撮合成交,这中间存在毫秒甚至秒级的延迟。在这段时间内,市场价格可能已经发生了变化。
  3. 剧烈波动的市场:在行情剧烈波动(如早盘集合竞价后、突发利好/利空消息)时,价格变化极快,极易产生较大的滑点。

如果在回测中不设置滑点(即假设每次都能以理想价格成交),会导致回测收益被严重高估,产生“回测猛如虎,实盘亏成狗”的现象。因此,设置合理的滑点是检验策略抗风险能力和真实盈利能力的关键步骤。

PTrade中的滑点函数

PTrade提供了两种设置滑点的方式,均仅在回测模块中可用,且通常在 initialize 函数中调用:

1. 设置固定滑点:set_fixed_slippage

该函数用于设置一个固定的价差值。撮合成交时,买入价会加上这个固定值,卖出价会减去这个固定值。

  • 计算公式最终成交价格 = 委托价格 ± fixedslippage / 2
  • 默认值:0.0

代码示例

def initialize(context):
    g.security = '600570.SS'
    set_universe(g.security)
    # 将滑点设置为固定的0.2元。如果原本买入委托价为10元,则实际成交价将变成10.1元(10 + 0.2/2)
    set_fixed_slippage(fixedslippage=0.2)

2. 设置比例滑点:set_slippage

该函数用于设置一个基于当时价格的百分比滑点。这在处理价格差异较大的不同股票时更为合理。

  • 计算公式最终成交价格 = 委托价格 ± 委托价格 * slippage / 2
  • 默认值:0.1(即10%的比例,注意这里的入参0.1代表的是比例,实际使用中通常会设置得更小,如0.002代表千分之二)

代码示例

def initialize(context):
    g.security = '600570.SS'
    set_universe(g.security)
    # 将滑点比例设置为0.002(千分之二)。如果委托价为10元,实际成交价为 10 + 10 * 0.002 / 2 = 10.01元
    set_slippage(slippage=0.002)

总结

在PTrade中,通过 set_fixed_slippageset_slippage 设置滑点,是模拟真实交易摩擦成本的重要手段。结合佣金设置(set_commission),可以构建一个严苛且贴近实盘的回测环境,从而筛选出真正具有鲁棒性的量化交易策略。