问题描述
想了解比例滑点的具体计算方式
解决方案
在量化交易回测中,滑点(Slippage)是模拟真实交易环境不可或缺的一部分。真实交易中,由于市场波动和流动性原因,委托价格与实际成交价格往往存在差异。PTrade 提供了 set_slippage 函数来设置比例滑点,以使回测结果更加贴近实盘。
最终成交价计算公式
在 PTrade 中,使用 set_slippage 设置比例滑点后,最终成交价格的计算公式如下:
最终成交价格 = 委托价格 ± (委托价格 × slippage / 2)
- 买入时:最终成交价格 = 委托价格 + (委托价格 × slippage / 2)
- 卖出时:最终成交价格 = 委托价格 - (委托价格 × slippage / 2)
公式解析:
滑点比例 slippage 代表的是委托价格与最后成交价格之间的价差占当时价格的百分比。在撮合成交时,系统会在委托价格的基础上,加减该百分比的一半(即 slippage / 2)作为最终的成交价。
举个例子:
假设你设置了 set_slippage(slippage=0.002)(即 0.2% 的滑点比例),并且你以 10.00 元的价格下达了买入委托。
- 滑点金额 = 10.00 × 0.002 / 2 = 0.01 元
- 最终买入成交价 = 10.00 + 0.01 = 10.01 元
函数参数说明
set_slippage(slippage=0.1)
- slippage (float):滑点比例。默认值为
0.1(即 10%)。在实际策略开发中,默认值通常过大,建议根据交易品种的流动性和真实市场情况进行调整,例如设置为0.002(0.2%)。
代码示例
set_slippage 函数必须在策略的 initialize 初始化函数中调用。
def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
# 将滑点比例设置为 0.2% (0.002)
# 撮合成交时,委托价格将加减当时价格的 0.1%
set_slippage(slippage=0.002)
def handle_data(context, data):
# 策略逻辑
pass
注意事项
- 使用场景:
set_slippage函数仅在回测模块可用。在实盘交易中,成交价格由交易所实际撮合结果决定,无法通过代码设置。 - 固定滑点:如果你希望设置一个固定的金额作为滑点(例如每股固定滑点 0.02 元),应使用
set_fixed_slippage(fixedslippage=0.02)函数,而不是set_slippage。 - 合理设置:设置合理的滑点对于评估策略的真实盈利能力至关重要。过小的滑点会导致回测收益虚高,而过大的滑点则可能掩盖策略的有效性。