首页 > 其他分享 >量化策略开发步骤系列(5)前向测试和统计意义

量化策略开发步骤系列(5)前向测试和统计意义

时间:2024-08-18 13:54:18浏览次数:13  
标签:策略 步骤 交易 前向 随机 测试 量化 我们

量化策略开发步骤系列(5)前向测试和统计意义

      • 前向测试
      • 统计意义
        • 随机化交易测试
        • 重写过去
      • 结论

这是量化交易系列文章的第二系列——量化策略开发步骤,第一系列请参考专栏: 量化交易系统。很多朋友反馈最近的文章代码太多,看不懂。

这一部分将实现零代码分享,尽可能简单地介绍量化策略开发的步骤,以便任何交易员或投资者都能理解。我们将讨论概念和结果,以文字和图表形式进行展示,而不是沉浸在代码中。

本文是量化交易系列文章的第五部分。我的目标是以一种简化和非程序化的方式介绍量化交易项目所涉及的步骤。在第 1 部分中,我们定义了我们的假设,即我们可以将交易结果与之进行比较的市场基准,并构建了我们的数据以便在后续阶段使用。第 2 部分介绍了量化交易中的初始回测和一些隐性成本。在第 3 部分中,我们分析了一些投资组合指标以了解我们策略的更多细节。参数分析和过度拟合是第 4 部分的主题。

以下是该系列内容大纲:

免责声明:本文仅供参考,不构成任何交易建议。

这篇是该系列的最后一部分,这几篇文章都有对应的 ipynb 文件,文中出现的图片也都是程序生成的,欢迎大家关注下方公众号并在评论区留言,看下有多少朋友想要这个系列的源代码(如下图所示),下周考虑是否打包发送给大家。

感兴趣的关注下公众号,优先发布,接收后续的更新内容会更及时奥
公众号:码上助君

我们在第 4 部分,展示了我们策略的样本外测试并讨论了其结果。用于开发模型的数据是 2018 年至 2021 年的数据,测试数据是 2021 年至 2022 年的数据。但有一种方法可以更好地利用我们的数据。

前向测试

开发交易模型时常用的一种技术是前向测试,它包括使用部分可用数据训练模型,最后使用小样本进行测试,重复该过程以模拟真实的实时交易情况。通过这种测试获得的结果更加可靠,并且不易出现前瞻偏差。这样做使我们更容易识别策略中的过度拟合。


我在我们的研究中执行了前向测试程序,并获得了与此类似的日志。迭代训练和测试步骤不断向前推进,直到所有数据都经过测试。


前向测试的总体结果在超越基准方面表现良好,但我们可以看到,其他指标还有改进空间。该策略在研究期间的最大回撤为 54%,这对任何交易者来说都是难以承受的。

我们开发了一个工具,可以对我们的假设进行回测,将其与基准进行比较,考虑隐藏成本,计算相关绩效指标,分析对我们模型参数的敏感性,并执行前向测试。

我希望我们的框架具有一个附加功能,即测试我们的策略产生的 alpha 的信心。

统计意义

到目前为止,您一定已经意识到,量化交易在很大程度上依赖于科学方法来获利。科学方法的第一条规则是检验假设以寻找强有力的证据,在大多数情况下,这些证据都得到了统计数据的支持。统计显著性是两个或多个变量之间的关系不能仅靠偶然来解释的有力证据。实际上,我们测试通过我们的策略获得的 alpha 纯属巧合的概率是多少,如果该概率足够低,那么我们就有强有力的迹象表明存在因果关系。这在我们的量化交易领域非常有用,因为我们希望找到能够捕捉实际市场行为而不是随机噪音的交易策略。那么在回测策略时,我们如何测试统计显著性呢?

随机化交易测试

假设我们在整个回测期间进行随机交易,而不是遵循算法建议。用更科学的术语来说,我们在整个回测期间随机化交易。我们重复此过程几百万次,用来检查所有可能的情况,并将其指标绘制成分布,并与我们实际策略的指标进行比较。为了确保交易成本不会对结果产生重大影响,让我们将随机交易的数量固定为与我们策略的交易数量相同。

下图显示了测试期间 100 次迭代的标准化回报:

我们可以看到,不同的随机交易在研究中获得了非常不同的回报。这是一张有趣的图片,但并没有给我们太多信息。让我们运行 100,000 次迭代并在直方图中分析这些回报。正如我们所料,数据分布是倾斜的,大多数随机交易的结果接近 0。红线是分布的第 95 个百分位数,绿线是我们通过策略获得的结果:

我们的策略表现优于 95% 的随机交易方式,这意味着我们的策略随机获得结果的概率不到 5%。你还记得我们第 1 部分中的初始假设吗?我们从测试中看到的统计显著性非常好地表明,加密货币市场确实受到价格趋势的强烈影响。

重写过去

分析统计显著性的另一种可能方法是获取历史价格变化,对其进行“打乱”,并在新的价格变动序列中测试我们的策略。这种打乱在统计学中实际上称为引导法,它允许我们生成随机场景来检查我们的策略如何表现。我们重复这种分析几百万次,并分析我们正在研究的指标的分布。与之前的研究不同,在随机化交易分析中,我们在实际历史价格中测试随机交易,而在这项研究中,我们在从未存在过的随机价格变动中测试我们开发的实际策略。这两项研究的结果非常相似,我们有像下面这样的随机表现场景。

正如前面的分析一样,最有价值的信息是随机表现的直方图。从中我们可以得出一个显著性水平,例如 95%(红线),并将其与我们的策略在实际历史价格中的表现(绿线)进行比较。

结果表明,我们的表现结果来自随机机会的概率不到 5%。这充分表明我们具有优势。

结论

非常感谢您阅读本系列文章。在这 5 篇文章中,我试图简要概述量化交易回测框架的发展及其挑战。事实上,该领域有各种各样的概念、理论和工具,使用它需要不断学习和测试。没有通过交易赚钱的神奇秘诀,即使是再牛逼的策略也可能因多种原因而失败,但我相信,应用严格的科学方法并避免偏见比相信我们的直觉更好。

免责声明:本文仅供参考,不构成任何交易建议。

这篇是该系列的最后一部分,这几篇文章都有对应的 ipynb 文件,文中出现的图片也都是程序生成的,欢迎大家关注下方公众号并在评论区留言,看下有多少朋友想要这个系列的源代码(如下图所示),下周考虑是否打包发送给大家。

感兴趣的关注下公众号,优先发布,接收后续的更新内容会更及时奥
公众号:码上助君

标签:策略,步骤,交易,前向,随机,测试,量化,我们
From: https://blog.csdn.net/Le_temps/article/details/141196009

相关文章

  • 手把手教你利用算法工具链训练、量化、编译、可视化征程 6 参考算法 BEVFormer
    写在前面:关于OE包内参考算法的使用,地平线已经释放了大量文档指导用户完成各类模型的训练、校准、量化、定点过程,但其中有些细节可能会对不是特别熟悉算法工具链的客户造成困扰,本文档致力于消除参考算法使用过程中所有可能存在的模糊操作,引导初学者快速上手参考算法,在实操中树立......
  • 4个步骤安装Windows 11 系统模拟器
    预览安装克隆存储库:gitclonehttps://github.com/MishanPoudel/Windows11-3.0导航到项目目录:cdWindows11-3.0安装依赖项:npminstallnpmstart详细教程4个步骤安装Windows11系统模拟器-老杨博客......
  • cloud compare PCA插件开发详细步骤(二)附代码
    在上一节https://blog.csdn.net/csy1021/article/details/141200135我们已经完成了具体开发前的准备工作,包括各级CMakelists.txt的设置,相关内容的修改,并已成功编译如需整个插件项目,编译后的dll,或其他帮助,欢迎留言、私信或加群【群号:392784757】这一节针对我们的qPCA插......
  • cloud compare二次插件化功能开发详细步骤(一)
    点云处理,有一个出名的处理软件,cloudcompare,简称cc,将自己实现的功能以插件形式集成到CC里,方便使用前提环境:cc2.13,qt5.15,cmake3.18,vs2019【其他组合也可,本文基于此展开】能力要求:能够使用cmake成功编译cc并安装有问题,欢迎留言、进群讨论或私聊:【群号:392784757】CC......
  • 有符号浮点运算的基本步骤:以双线性插值为例
    参考:韩彬的图像处理书、无双软件学院方法。步骤一:无损定点化浮点数在硬件计算中首先需要做的便是定点化,一般是左移一定位宽,可以是2048或4096;这个过程要注意保障无损;步骤二:运算和位宽匹配;要确定所有参与计算的数小数位位宽是匹配的,否则无法进行任何层次的计算;需要特别注意很......
  • 倾向匹配得分模型 PSM 及 Stata 具体操作步骤
    目录一、引言二、文献综述三、理论原理四、实证模型五、程序代码及解释六、代码运行结果七、稳健性检验八、结论一、引言倾向匹配得分模型(PropensityScoreMatching,PSM)是一种在观察性研究中用于减少选择偏差的常用方法。通过估计个体接受某种处理(例如参与某个......
  • Heckman 模型及 Stata 具体操作步骤
    目录一、文献综述二、理论原理三、实证模型四、稳健性检验五、程序代码及解释六、代码运行结果一、文献综述Heckman模型自提出以来,在众多领域得到了广泛且深入的应用。例如,在劳动经济学领域,Heckman(1979)率先将该模型应用于劳动力供给的研究,成功解决了样本选择偏差......
  • .NET 轻量化定时任务调度 FreeScheduler
    前言在平时项目开发中,定时任务调度是一项重要的功能,广泛应用于后台作业、计划任务和自动化脚本等模块。FreeScheduler是一款轻量级且功能强大的定时任务调度库,它支持临时的延时任务和重复循环任务(可持久化),能够按秒、每天/每周/每月固定时间或自定义间隔执行(CRON表达式)。此外......
  • 智慧安防/一网统管/视频监控EasyCVR视频汇聚平台的视频轻量化特点及应用
    在数字化时代,视频监控已成为保障公共安全、提升管理效率的重要手段。随着技术的不断进步,EasyCVR视频汇聚平台应运而生,平台以其独特的视频轻量化特点在安防监控领域展现出强大的应用潜力。本文将详细探讨EasyCVR视频汇聚平台的视频轻量化特点及其应用。一、视频轻量化特点1)高效接......
  • SpringBoot修改内置tomcat版本的操作步骤
    一:由于Tomcat高危漏洞影响,本文介绍了如何查询和修改Springboot内嵌的Tomcat版本,包括通过POM文件或mvnrepository查询版本,以及通过添加properties配置更改版本。此外,还提到了遇到缺少tomcat-juli依赖时的解决办法。最近Tomcat爆出高危漏洞,基本影响所有的Tomcat版本,故需要对sprin......