回测对于量化交易是十分重要的一环,起着不可忽视的作用,绝不仅仅是一种心理安慰,是有很多必要性的,但是如果把回测当作是一种确定性,认为回测之后有效的量化策略就能实现盈利那是有问题的,因为一个在回测中绩效良好的策略,与在实际交易中产生的绩效水平是不等价的。
为什么要回测?
回测是通过将特定的策略算法根据历史数据流来进行的,数据流将导致一组交易信号,在策略回测期间每笔交易的利润或亏损的累积成为总损益。算法策略需要回测的关键原因如下:

● 过滤:建立算法交易最初的研究阶段是建立一个战略通道,然后过滤掉任何不符合某些标准的策略,回测提供了一种过滤机制,可以帮助消除不符合性能需求的策略。
● 建模:回测允许我们测试某些市场现象的新模型,如交易成本、订单路径、延迟、流动性或者其他市场微观结构问题。
● 优化:尽管策略优化充满偏差,但是回测允许通过修改策略参数的量或值并重新计算其性能来提高策略的性能。
● 验证:回测策略可以确保它没有被错误地实现。
回测为算法交易提供很多优势,但是随着策略使用频率的增加,正确模拟市场和交易所的微观结构效应变得更加困难,导致回测不可靠,对所选策略评估更棘手。
回测的问题
在进行回测的时候,很多量化交易者都会遇到回测绩效与实际绩效大相径庭的情况,所以才会怀疑回测是否只是一种心理安慰。但是在深入了解回测之后,会发现回测与实际的偏差是有原因的,而这些偏差也是可以减小的。
除了一些不可避免的风险因素导致回测结果与实际不符,回测本身同样充满了各种各样的偏差。由于一些突发的风险因素是不可预测的,因此我们只能在这类风险方面做好风控,但是作为量化交易者对于回测的偏差是有必要进行研究的,下面我们就来看一下回测存在的各种偏差。

偏差可以影响一个经过测试的策略的性能,且这些偏差倾向于夸大绩效而不是降低绩效,因此回测对于实际性能来说更像策略的一个理想化的上限,从算法交易中消除偏差几乎是不可能的,因此我们需要尽可能减小偏差,下面是四个主要的偏差:
优化偏差
在策略优化的时候,我们通常需要调整或引入额外的交易参数,也很容易调整这些参数直到回测数据集上的策略性能非常有吸引力。然而,一旦投入使用,该策略的表现可能会明显不同。优化偏差很难消除,因为算法策略往往涉及很多参数。减少优化偏差可以通过保持最小化参数的数量和增加训练集的数据点的数量来实现。
前视性偏差
当未来的数据意外地包含在模拟中的某个点上,而该点上的数据实际上并不可用时,就会将前视性偏差引入回测系统。如果我们按时间顺序开始回测,并且达到某个时间点,那么如果我们的回测包含任意该时间点之后的数据就会发生前视性偏差。这里给出三种产生前视性偏差的情况:
1. 技术漏洞:代码中的数据通常有迭代器或索引变量,不正确的合并回测时刻后的数据,这些数据的偏移量可以导致前视性偏差。
2. 参数计算:在计算最优策略参数时,比如两个时间之间的线性回归序列,如果使用整个数据集来计算回归序列,应用于交易策略,则未来的数据将被合并,并存在一种前视性的偏差。
3. 最大/最小值:某些交易策略在任何时间段都使用极值,然而这些最大/最小值只能在一个时间段的末尾计算,这是一个前视的值,如果在当前期间使用这些值就会引入偏差。因此使用这些策略的最大/最小值至少落后一个周期。
幸存者偏差
幸存者偏差会导致某些策略类型的性能显著提高,当策略在数据集上测试时,不包括可能在特定时间点选择的全部先前资产,而只考虑那些“存活”到当前时间的资产时,就会发生这种情况。有两种主要的方法可以减轻幸存者偏差:
1. 无幸存者偏差数据集:购买包括退市实体的数据集,尽管它们并不便宜,而且往往被机构公司利用。也可以交易不容易产生幸存者偏差的资产类,例如某些商品和未来的衍生品。
2. 使用更近期的数据:使用更近期的数据集会有所缓解选择被加权到“幸存者”的可能性,也可以建造通过搜集当前点以后的数据,从而开始构建一个没有幸存者偏差的个人数据集。
认知偏差
当创建五年或者更长时间内进行回测,很容易发现一些指标特性结果令人满意,由于整体形式乐观,承受这样一段时间内的损失是很容易的。然而在实践中,这要困难得多,一项本来会成功的策略,在长期下跌期间交易者会停止交易,从而导致重大损失,与回测相比,性能较差。尽管该战略本质上是算法式的,但心理因素仍可能对盈利能力产生重大影响。关键是要确保,如果你在回测中看到一定比列和持续时间的回撤,那么你应该预期它们会在实时交易环境中发生,并且需要坚持下去,从而再次实现盈利。
上述是一些典型的回测时容易产生的偏差,以及处理的方法。量化交易者应该尽量减小这些偏差对实际交易产生的影响,使得回测更接近实际情况。除了上述的偏差会带来回测与实际结果的差异,我们还需要注意一些由交易所产生的导致回测绩效与实际不符的一些情况。

订单类型:算法交易员必须做出的一个选择是如何以及何时使用可用的不同交易所订单。它会极大地影响策略回测性能。有两种类型的订单可以执行:市场订单和限价订单。市场订单立即执行交易,作为市场指令执行的大型交易,往往会得到一个混合的价格。市场订单被认为是激进的订单,因为它们几乎肯定会被满足,尽管潜在的成本未知。限价指令为策略提供了一种机制,可以确定交易执行的价格,但要注意,交易可能没有部分或全部完成。限价订单被认为是被动订单,因为它们通常是未完成的,单个交易所的限价订单集合称为限价订单簿,它本质上是按特定大小和价格的买卖订单队列。在进行回测时,正确地建模使用市价或限制订单的效果是非常重要的。
价格整合:廉价或免费的数据集且存在生存偏差,通常也是来自多个交易所的价格提报。数据的极值点(即开、收、高、低)非常容易受到“外围”值的影响,这些值有时也更可能是尚未从数据集中删除的tick级别的错误值。如果您的交易策略特别广泛地使用了开高低收中的任何一个点,那么回测性能可能与实时性能不同,因为根据您的经纪商和您对流动性的可用访问,订单可能被路由到不同的交易所。解决这些问题的唯一方法是使用更高频率的数据或直接从单个交易所本身获取数据。
外汇交易和电子通讯网络:外汇交易发生在多个场所和电子通信网络(ECN)。一个场地的出价/卖出价可能与另一个场地的出价/卖出价相差很大。人们必须非常小心地使用特定场所的定价信息进行回测,而不是来自多个场所的综合提报价,因为这将显著地更能指示您未来可能实现的价格。外汇市场的另一个特性是,经纪商本身没有义务与每个交易参与者分享交易价格/规模,因为这是他们的专有信息。因此,在您的回测中使用买卖报价更合适,并且要非常小心经纪商/场所之间交易成本的变化。
限制做空:有些股票可能没有可用的做空途径,这会严重推高回测的回报,因此要小心在回测中包含此类限制做空的品种,如果你认为你交易的品种存在流动性限制,就不要去做空。
最后我们从交易成本的角度来看回测绩效与实际交易产生差异的原因,在实现交易模型时,新手最常犯的错误之一是忽视或低估交易成本对策略的影响。尽管人们通常认为交易成本只反映经纪商佣金,但实际上,在交易模型中还有许多其他方式可以累积成本。我们考虑三种主要费用:

佣金:算法交易策略产生的最直接的交易成本是佣金和费用。所有策略都要求以某种形式访问交易所,要么直接访问,要么通过经纪中介访问。这些服务在每笔交易中都会产生增量成本,称为佣金。经纪商还会收取费用,这是清算和结算交易的成本。此外还有区域或国家政府征收的税收。由于佣金、费用和税收通常是固定的,所以在回测引擎中实现它们相对比较简单。
滑点:滑点是指交易系统决定进行交易的时间与交易在交易所实际执行的时间之间的价差。滑点是交易成本的一个重要组成部分,它可以决定一个非常有利可图的策略和一个执行得很差的策略之间的差别。波动性较高的品种更有可能移动,因此信号和执行之间的价格可能存在很大差异。延迟定义为信号生成和执行点之间的时间差。更高频率的策略对延迟问题更敏感,而延迟上毫秒的改进可以对盈利产生重大影响。策略的类型也很重要,动量系统平均更容易受到滑点的影响,因为它们正试图购买已经朝着预期方向移动的品种。相反的情况适用于均值回归策略,因为这些策略正朝着与交易相反的方向发展。
市场影响:市场影响是交易员因试图通过交易所(和资产)进行交易的供求动态而产生的成本。对一种流动性相对较差的资产下大额订单,可能会对市场产生重大影响。为了解决这一问题,大宗交易被分解成更小的“块”,这些“块”在新流动性到达交易所时定期进行交易。相反,对于标普500指数期货等流动性较高的品种而言,交易量较低的交易不太可能大幅调整“当前价格”。流动性较差的资产的特点是价差较大,即限价指令与当前买入价和卖出价之间的价差的区别。这种价差是与任何交易相关的额外交易成本。价差是总交易成本的一个非常重要的组成部分。
我们从回测产生的偏差、交易所的问题、交易成本这三块分析了回测与实时交易之间存在差异的原因,也给出了改进的方向。处理好以上这些关于回测的问题,那么你的回测应该能更好体现交易策略在实际交易时的情况。为了模拟更加真实的情况,可以在策略中添加一系列现实影响的因子,比如过度拟合、糟糕的数据清理、对交易成本的错误处理、市场机制的改变和交易约束的危险。但是因为未来的表现不太可能与历史直接相符,因此回测本身也不能直接代表策略在未来的绩效表现。#交易软件学习#
إخلاء المسؤولية: الآراء الواردة هنا تعبر فقط عن رأي الكاتب، ولا تمثل الموقف الرسمي لـ Followme. لا تتحمل Followme مسؤولية دقة أو اكتمال أو موثوقية المعلومات المُقدمة، ولا تتحمل مسؤولية أي إجراءات تُتخذ بناءً على المحتوى، ما لم يُنص على ذلك صراحةً كتابيًا.

اترك رسالتك الآن