量化策略开发步骤系列(4)参数分析和过度拟合

news2024/11/15 21:23:34

量化策略开发步骤系列(4)参数分析和过度拟合

      • 参数分析
      • 过度拟合

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

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

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

以下是该系列内容大纲:

  • 第 1 部分——假设和基准(可跳转)
  • 第 2 部分——回测和隐性成本(可跳转)
  • 第 3 部分——关键投资组合指标(可跳转)
  • 第 4 部分——参数分析和过度拟合
  • 第 5 部分——前向测试和统计意义

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

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

让我们回顾一下第三部分末尾回测所获得的结果:

在我看来,尽管回报高于基准,但我们的算法缺乏一致性,交易过于频繁。我相信有办法改进这一点,那么我们能做什么呢?

参数分析

参数分析是一个测试模型参数变化的过程,用来了解它们对模型属性的影响。实际上,我们希望通过改变策略参数来分析投资组合指标的行为。在许多情况下,需要更改参数以确保策略在实时交易情况下可行,同时考虑到流动性和计算能力等现实中的限制。让我们看一个使用三个不同参数集的回测性能示例:

  • 组合1:SMA_S:15,SMA_M:50,SMA_L:200
  • 组合2:SMA_S:30,SMA_M:100,SMA_L:200
  • 组合3:SMA_S:30,SMA_M:200,SMA_L:500


我们可以看到,改变参数对策略的结果有相当大的影响。为了了解这种影响的大小,我们将定义我们想要研究的参数,定义我们的移动平均线可以达到的值范围,然后运行算法,使用所有参数组合对我们的策略进行回测,存储结果以便以后进行比较。让我们使用以下值来分析移动平均线的组合:

  • SMA_S:10、20、30
  • SMA_M:50、100、150
  • SMA_L:200、400、600、800

这些值加起来有 36 种组合,结果表如下所示(截断为 20 行):


我们可以看到,分析结果呈现出了各种各样的绩效结果。所以我们必须找到结果最好的那个,并将其用于我们的交易策略,以最大化我们的利润。除此之外,模型开发中的另外一个重要主题也需要关心。

过度拟合

Investopedia 将过度拟合定义为:

过度拟合是统计学中的一种建模错误,当函数与一组有限的数据点过于接近时就会发生这种情况。因此,该模型仅适用于其初始数据集,而不适用于任何其他数据集

来源:Investopedia.com

在设计模型时,我们希望它能够适用于新数据,因此我们必须尽可能避免过度拟合,而最好的方法是进行样本外测试。简而言之,样本外测试是在处理模型开发中未使用的数据时检查模型的质量。过度拟合的模型通常会表现出较高的样本内性能和较差的样本外性能。

因此,让我们检查一下研究中是否存在过度拟合。我们将使用 2018 年至 2021 年的数据对我们的策略进行参数分析,并检查在倍数方面提供前 5 个结果的参数。

现在让我们进行样本外测试,检查最佳参数组合(20、150、600)在 2021 年至 2022 年之间的一年内的表现如何。

在那个窗口期间,我们的策略实际上亏损了。通过在这个窗口期间运行参数分析,我们可以看到我们选择的参数组合甚至不在前 5 名之内。这些结果强烈表明存在过度拟合。


现在我们知道如何检测过度拟合,但如何避免呢?

以下多年积累总结的做法,希望会对你有所帮助:

  • 尝试开发具有尽可能少参数的模型。参数越多,过度拟合就越严重。
  • 参数调整不是选择性能最佳的组合。而是了解你的假设似乎成立的领域。寻找稳健性,而不是性能。
  • 使用其他资产测试您的策略。通用模型将通过不同的资产实现一致的表现。
  • 对出色的结果持怀疑态度。制定有利可图的交易策略需要时间和实践。
  • 在实际投入资金之前,先模拟交易您的策略。

参数分析是量化交易策略开发的重要组成部分,但无论如何都要避免过度拟合。样本外测试是一种非常有用的程序,可以检查过度拟合,也可以模拟更真实的结果,我们将在第 5 部分对此进行更多讨论!

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2039155.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2 C 语言开发工具选择、 MinGW 的安装与配置、VS Code 的安装与配置、插件推荐

目录 1 开发工具选择 1.1 Visual Studio 1.2 Code::Block 1.3 Clion 1.4 VS Code 1.5 在线编辑工具 2 开发工具安装 2.1 安装 MinGW-w64 2.1.1 MinGW-w64 介绍 2.1.2 解压 MinGW 2.1.3 将 MinGW 添加至环境变量 2.1.4 验证安装 2.2 安装 VS Code 2.2.1 下载安装包…

汉光BMF6450复印机简易安装说明手册

汉光BMF6450基本参数: 产品类型:激光数码复合机 颜色类型:黑白 速度类型:中速 复印速度:45cpm 涵盖功能:复印/打印/扫描 最大原稿尺寸:A3 处理器:800MHZ Quad Core (800MHz Dual Core+533MHz Dual Core) 内存容量:2GB 供纸容量:基本供纸量:1100页(550张2…

Windows平台RTSP|RTMP播放器如何叠加OSD文字

技术背景 我们在做Windows平台RTSP|RTMP播放器的时候,特别是多路播放场景下,开发者希望可以给每一路RTSP或RTMP流添加个额外的OSD台标,以区分不同的设备信息(比如添加摄像头所在位置),本文主要探讨&#x…

手写qiankun-页面渲染

registerMicroApps配置子应用 start读取配置,拉取子应用并完成渲染 //全局变量 let _app [];//更好的获取全局变量_app export const getApps () > _app;//app为传递过来的子应用数组 export const registerMicroApps (app) > {_app app; };export cons…

http中get和post怎么选

5.4.2.怎么选择1.如果你是想从服务器上获取资源,建议使用GET请求,如果你这个请求是为了向服务器提交数据,建议使用POST请求。2.大部分的form表单提交,都是post方式,因为form表单中要填写大量的数据,这些数据…

RK3399平台开发系列讲解(内核入门篇)详解内联汇编

🚀返回专栏总目录 文章目录 一、C语言实现加法二、使用汇编函数实现加法三、内联汇编语法四、使用案例沉淀、分享、成长,让自己和他人都能有所收获!😄 📢要深入理解Linux内核中的同步与互斥的实现,需要先了解一下内联汇编:在C函数中使用汇编代码。 现代编译器已经足…

Linux系统调试课:CPUFreq 中央处理器频率调节技术

文章目录 一、CPUFreq组成二、用户接口三、设备树配置沉淀、分享、成长,让自己和他人都能有所收获!😄 📢中央处理器频率调节(Central Processing Unit frequency,CPUFreq)技术可以降低ARM芯片的功耗,例如在系统对任务压力较小时,通过调整处理器工作频率与输入电压的…

【一图学技术】9.OAuth2.0授权框架SSO单点登录图解及关系区别、使用场景

OAuth2.0原理&SSO单点登录图解 一、单点登录SSO 1.概述 ​ 单点登录(全称Single Sign On,简称就是SSO)是一种身份验证和授权机制,它允许用户在多个相关但相互独立的系统或应用程序之间进行无缝切换,而无需重复登录。在多个…

【3】MySQL的安装即启动

目录 一.下载 二.安装 三.启动 一.下载 二.安装 安装MySQL时遇到的Initializing database错误:推荐下面的博客(简单就是电脑名不要出现中文) https://blog.csdn.net/m0_52775858/article/details/123705566 三.启动 PS:cmd要…

多台USB 3.0相机启动时部分相机无法打开

在使用多台USB 3.0相机时,遇到启动时部分相机无法打开的问题是较为常见的情况。这个问题通常与带宽、供电、驱动程序、或系统资源管理有关。以下是一些优化建议,帮助你提高相机启动的可靠性: 1. USB带宽管理 USB 3.0的带宽虽然比USB 2.0高很…

自训Transformer模型:识别图像是否由AI生成?

背景 随着AI生成图像技术的迅猛发展,特别是生成对抗网络(GANs)和深度学习的不断进步,生成的图像变得越来越逼真。 这项技术不仅催生了许多创新应用,也带来了潜在的风险和挑战。 Transformer模型在图像识别中的作用 …

PHP初级栈进阶篇

小刘小刘,下雨不愁 (收藏,关注不迷路) 这里我会更新一些php进阶知识点,新手想再进一步可以有个方向,也有个知识图谱的普及 当然本篇不止写技术 会涉及一些进阶路线 我也是在这里积累,希望和同行者一起进步为后来者…

网络协议四 物理层,数据链路层,数字信号,模拟信号,信道,CSMA/CD协议-以太网帧协议,PPP协议,网卡

从这一节开始学习 五层模型。学习方法是从最底层物理层开始学习 七层模型 五层模型 各个层用的协议,以及加上协议后的称谓 各个层的作用 应用层:可以认为是原始数据,该数据称为 报文,用户数据。 运输层:也叫传输层&am…

猫头虎 分享:Python库 Pytest 的简介、安装、用法详解入门教程

猫头虎 分享:Python库 Pytest 的简介、安装、用法详解入门教程 🚀 今天猫头虎带您深入了解 Python 测试框架 Pytest 的强大功能,手把手教您从安装到实际使用,助您轻松提升代码质量!😺 摘要 📋 …

Windows蓝屏事件:深入分析与未来启示

引言 在2024年7月19日,一起引发全球范围蓝屏问题的事件,将安全领域领先的公司CrowdStrike推向了舆论的风口浪尖。尽管事后CrowdStrike发布了一份长达12页的根本原因分析(RCA),试图解释并缓解这一问题,但该…

学习笔记 韩顺平 零基础30天学会Java(2024.8.14)

P500 集合体系图 单列集合是指自己只有一个值,双列集合是像键值对这样的 P501 Collection方法 对于第三点,像Set这样的,存放进去的和取出来的顺序可能不是一样的,所以就叫无序的 P502 迭代器遍历 在调用iterator.next()方法之前必…

新160个crackme - 030-Acid Bytes.4

运行分析 需要破解Name和Serial PE分析 upx壳,32位 linux系统upx -d 脱壳 脱壳后发现是Delphi程序 静态分析&动态调试 ida搜索字符串,找到Your Name must be at least 6 Chars long !,双击进入 发现地址为红色,即函数未定义 选…

grpc简单知识

目录 gRPC简介 RPC(远程过程调用)的定义与重要性 gRPC的设计目标与使用场景 ​编辑gRPC调用方式 Unary RPC:一元RPC Server-side streaming RPC:服务端流式RPC Client-side streaming RPC:客户端流式RPC Bidirecti…

Midjourney应用-用AI帮你做广告视频(动物走秀视频制作)

​ 前言/introduction 在之前的教程里我们讲过动物拟人化图片的生成。 这篇我们讲下这种图片的一种应用: 动物走秀视频广告制作方法 使用工具: MidjourneyAI视频生成工具(即梦AI/可灵AI/runway) 操作方法 step1-Midjourney出图 …

从数字化到数智化:消费零售企业如何实现门店数智化管理?

随着信息技术的飞速发展,数字化已成为企业转型的必经之路。然而,数字化本身并不是目的,而是通往数智化的桥梁。数智化,即数据智能化,是指企业通过数字化手段收集和分析数据,进而利用这些数据驱动决策和创新…