算法交易策略回测Part2

用户头像量化小精灵
2023-04-21 发布

在算法交易策略回测part1中,我们讨论了影响回测表现的统计偏差和行为偏差。我们还讨论了用于回测的软件包,包括Excel、MATLAB、Python、R和C++。在本文中,我们将考虑如何纳入交易成本以及创建回测引擎时需要做出的某些决策,例如订单类型和数据频率。

交易成本

在实施交易模型时,最常见的初学者错误之一是忽视(或严重低估)交易成本对策略的影响。尽管通常认为交易成本仅反映经纪人佣金,但实际上交易模型上还有许多其他方式会产生成本。必须考虑的三种主要成本类型包括:

  1. 佣金/费用: 算法交易策略产生的最直接的交易成本是佣金和费用。所有策略都需要某种形式的交易所访问权限,可以直接访问或通过经纪人中介("经纪人")访问。每次交易这些服务都会产生一定的额外成本,即佣金。 经纪人通常提供许多服务,尽管量化算法只会真正利用交易所基础设施。因此,经纪佣金通常以每笔交易为基础很小。经纪人还收取费用,这些费用是用于清算和结算交易的成本。此外还有地区或国家政府征收的税费。例如,在英国,股票交易需要缴纳印花税。由于佣金、费用和税费通常是固定的,因此在回测引擎中实施它们相对比较简单(见下文)。
  2. 滑点/延迟: 滑点是交易系统决定进行交易的时间和实际在交易所执行交易的时间之间实现的价格差异。滑点是交易成本的一个重要组成部分,可以决定策略的盈利与否。滑点取决于基础资产的波动性、交易系统和交易所之间的延迟以及正在执行的策略类型。 波动性更高的资产更有可能在信号和执行之间有较大的价格差异。延迟被定义为信号生成和执行点之间的时间差。高频率策略对延迟问题更为敏感,毫秒级别的延迟改进可以对盈利能力产生重大影响。策略类型也很重要。平均回归策略通常受到更多的滑点影响,因为它们试图购买已经沿预测方向移动的资产。而均值回复策略的情况正好相反,因为这些策略正朝着与交易相反的方向发展。
  3. 市场影响/流动性: 市场影响是交易者由于交易所(和资产)的供求动态而产生的成本。在相对不流动的资产上进行大额交易很可能会大幅度地推动市场,因为该交易需要访问当前供应量的大部分。为了解决这个问题,大型块交易被分解成更小的“块”,这些块定期交易,只有当交易所有新的流动性时才进行交易。相反,对于高流动性的资产,如S&P500 E-Mini指数期货合约,低交易量的交易不太可能对“当前价格”产生太大的调整。 更不流动的资产特点是价差更大,即限价订单簿上当前买价和卖价之间的差异。这个价差是任何交易的额外交易成本。价差是交易成本的非常重要的组成部分,这可以通过众多英国差价合约公司的广告活动来证明,它们表达了他们对于交易量大的工具“价差收缩”的关注。

交易成本模型

为了在回测系统中成功地模拟上述成本,引入了各种程度的复杂交易模型。这些模型从简单的固定模型到非线性二次逼近不等。在这里,我们将概述每个模型的优缺点:

固定交易成本模型

固定交易成本是交易成本建模的最简单形式。它们假设每笔交易都有固定成本,因此最能代表券商佣金和费用的概念。它们不太准确地模拟了更复杂的行为,如滑点或市场冲击。实际上,它们根本不考虑资产波动性或流动性。它们的主要优点是计算实现简单。然而,它们可能会在很大程度上低估或高估交易成本,具体取决于所采用的策略。因此,它们在实践中很少使用。

线性/分段线性/二次交易成本模型

更先进的交易成本模型从线性模型开始,继续采用分段线性模型,最后采用二次模型。它们的范围从最低的精准度到最高的精准度,但实现的难度也从最低到最高。由于滑点和市场影响本质上是非线性现象,因此二次函数最能准确地模拟这些动态。二次交易成本模型要比简单的平面或线性模型难以实现,计算时间也会更长,但它们经常在实践中使用。 算法交易员还尝试利用实际历史交易成本来作为策略的输入,以使其更准确。这是一项棘手的业务,通常涉及到对波动性、滑点和市场影响的建模等复杂领域。然而,如果交易策略在短时间内交易大量股票,那么准确估计所需的交易成本可以对策略的底线产生重要影响,因此值得投资研究这些模型。

策略回测的实施问题

尽管交易成本是成功回测实现的一个非常重要的方面,但还有许多其他问题可能会影响策略的表现。

交易订单类型

算法交易员必须做出的选择之一是如何以及何时使用不同的交易所订单。这个选择通常属于执行系统的范畴,但我们将在这里考虑它,因为它可以极大地影响策略回测的表现。有两种类型的订单可以执行:

  1. 订单执行: 市场订单立即执行交易,无论可用价格如何。因此,作为市场订单执行的大量交易往往会得到混合的价格,因为每个后续的限价订单都会按顺序填补对立面。市场订单被认为是进攻性订单,因为它们几乎肯定会被填充,尽管可能有未知成本。
  2. 限价订单: 限价订单提供了一种机制,使策略能够确定执行交易的最差价格,但交易可能只部分或完全未被执行。限价订单被认为是被动订单,因为它们通常未被填充,但当它们被填充时,价格是有保证的。一个交易所的限价订单集合称为限价订单簿,它本质上是一些以特定大小和价格排列的买卖订单的队列。 在进行回测时,正确地对市场或限价订单的使用效果进行建模至关重要。特别是对于高频策略,如果未准确地建模市场影响和限价订单簿的效果,则回测可以显著优于实时交易。

OHLC数据的特质

在回测策略时,使用以开盘价、最高价、最低价和收盘价(OHLC)数据的每日数据时,尤其是对于股票,会存在特定问题。需要注意的是,这正是雅虎财经提供的数据形式,而这是零售算法交易员非常常见的数据来源! 尽管廉价或免费的数据集存在存活偏差(我们在第一部分已经讨论过),但它们通常是来自多个交易所的组合价格信息。这意味着数据的极值点(即开盘价、收盘价、最高价和最低价)非常容易受到区域交易所小订单的“外围”影响。此外,这些值有时更有可能是尚未从数据集中删除的交易错误。 这意味着,如果您的交易策略广泛使用任何特定的OHLC数据点,则回测表现可能会与实时表现有所不同,因为订单可能会根据您的经纪人和您可用的流动性而被路由到不同的交易所。解决这些问题的唯一方法是使用更高频率的数据或直接从某个交易所获取数据,而不是使用较便宜的组合数据源。

评论

需要帮助?

试试AI小助手吧