Successful Algorithmic Trading 学习笔记(二)

链接:https://www.doc88.com/p-3455610767059.html 20-29

3.1 为什么需要回测

通过回测,我们能基于历史数据获得算法可靠的未来预期。

回测的过程:将历史数据输入给特定的交易算法,产生一系列的交易信号。每笔交易(一组对应的买入卖出信号)都会产生相应的收益和损失。一系列的收益和损失积累起来成总收益和损失(P&L,profit and loss)。

对交易算法进行回测的主要原因:

  • 过滤:在初始的研究阶段,就过滤掉一些不满足要求的算法
  • 建模:回测允许我们安全的测试算法的各方面,例如交易成本、延迟等等
  • 优化:通过修改算法的参数,优化模型性能
  • 验证:验证算法的正确性

3.2 回测偏差

回测过程中存在很多偏差影响算法的性能,这些偏差往往夸大算法的性能,而不是贬低算法的性能。所以你可以把回测的结果当做你算法的实盘结果的上限。我们很难去除这些偏差,我们只能减轻这些偏差的影响

3.2.1 最优化偏差

最优化偏差是所有偏差中最难发现的,别名“curve fitting”(过拟) 或 “data snooping ”(数据探查)。通过不断的调整和引入参数直到算法的性能在回测数据集上最优,但是实盘结果完全不同。

减轻这种偏差的方法是敏感度分析。逐步的调整变量画出性能的曲线图。如果曲线比较光滑,那么参数比较合理。如果曲线变化剧烈,则参数不能表现现实,只是数据过拟的结果。(具体原理书里没说)

3.2.2 未来偏差

在当前时点,引用了未来的数据。例如:一些算法会使用OHLC中的最高价和最低价,但是这两个值只能在这个时间段结束后才能计算,如果在当前时间段中使用最高价和最低价,则引入了未来偏差。正确的应该在后一个时间段中使用。

3.2.3 幸存者偏差

幸存者偏差对于某些种类的算法而言非常容易夸大算法的结果。当数据集并没有包含所有的资产的数据,而仅包含在某个时间点上幸存者的数据,这时就引入了幸存者偏差。

3.3 交易相关

3.3.1 订单类型

订单有两种类型:市价单和限价单。

市价单价格不定,立马成交。基本上是深度曲线上对手方的限价单的价格混合。市价单比较主动,保证能满足,但是价格未知。

限价单限定价格,不一定能成交。比较被动。

3.4 交易成本

3.4.1 手续费

经纪公司对每笔买单和卖单完成时收取的费用

3.4.2 滑点

滑点是指交易算法下单的交易点位与实际成交时的交易点位之间存在价格差异的现象。滑点也是交易成本中的一种,是下单和成交时间延迟中的波动。

3.4.3 市场冲击

市场冲击是由买卖双方急剧变化而带来的交易成本。一个大额的买单,会让市场对卖方更有力,需要市场上大量的卖方来完成这个单子。买入,则会承受额外的成本。所以大机构在进行大额交易时,往往会拆单,避免这一情况。

深度行情中,限价买单和限价卖单之间的价格差异称之为价差。价差也是交易成本中一种。

3.5 回测VS实盘

过拟,数据质量,错误估计的交易成本等等都将导致回测和实盘结果的差异。我们需要注意这些!!

你可能感兴趣的:(Successful Algorithmic Trading 学习笔记(二))