量化策略开发步骤系列(3)关键投资组合指标

news2024/11/27 2:42:31

量化策略开发步骤系列(3)关键投资组合指标

      • 投资组合指标
      • 波动性
      • 夏普比率
      • 最大回撤
      • 赢/输百分比
      • 每笔交易的平均利润/亏损
      • 每期交易次数
      • 风险价值(VaR)

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

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

在第 1 部分中,我们定义了我们的假设,即我们可以将交易结果与之进行比较的市场基准,并构建了我们的数据以便在后续阶段使用。第 2 部分介绍了量化交易中的初始回测和一些隐性成本。

以下是该系列内容大纲:

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

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

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

经过上述步骤,我们有一个回测框架和一个表现优于基准的策略。但我请您仔细看看回报图表。

从 2021 年 6 月到 2022 年 6 月,我们的策略经历了一个非常关键的时刻,投资组合价值从初始投资的 8 倍下降到不到 4 倍。

换句话说,在 12 个月的时间里,我们的算法损失了前几年所取得的收益的一半以上。如果投资组合以 10 万美元开始,我们将花整整一年的时间看着我们的余额从 80 万美元跌至 35 万美元。无论我们在此之前通过该策略赚了多少钱,在此期间继续运行该策略都会是一种心理负担。您可能会在某个时候对算法进行更改,这实际上可能会损害后期回测中显示的利润,甚至会关闭它。那么,在进行回测时,如何衡量我们操作策略和承受损失的能力呢?

投资组合指标

你听过“旅途比目的地更重要”这句话吗?在量化交易中,这绝对是真的。我们可能会找到一个提供出色回报的优秀策略,但如果我们必须经历磨难才能实现这些回报,我们很可能会失败。在交易中,一致性是关键,用一些回报来换取一致性是完全可以接受的。有许多指标可以帮助我们衡量投资组合的一致性和风险,让我们来看看其中的几个。

  • 波动性
  • 夏普比率和滚动夏普比率
  • 最大回撤
  • 盈利和亏损的日子/星期/月份
  • 每笔交易的平均利润/亏损
  • 交易次数
  • 风险价值(VaR)

波动性

波动性是指资产价格变化的术语。当价格变化快速且频繁时,波动性被认为是高的,而当价格变化不那么显著时,波动性被认为是低的。人们通常只在价格下跌时才会想到波动性,但它也可以指价格上涨。波动性经常被用作风险的代理,但它是交易的一个必要方面。它是如此必要,以至于当价格波动较小时,交易者必须利用其操作来从市场获得回报。许多书籍将波动性称为一段时间内价格变化的标准差,但比计算标准差更重要的是了解价格变化分布的形状。这将比简单的标准差更能说明市场行为。让我们检查一下每小时价格变化分布以供研究。

我们可以看到,价格回报分布非常接近于零,并且尾部很长,远远超出了该图表的极限。我们还可以在图表中看到一个正态分布,其标准差与实际价格分布完全相同。你能看出它们有多大的不同吗?实际价格分布的峰度要高得多,这意味着我们可以预期许多接近平均值的值,但也有一些非常极端的值。这就是为什么探索数据而不是仅仅遵循步骤总是很重要的原因,了解我们的数据将使我们能够了解来自它的指标。

夏普比率

在第 1 部分中,我们讨论了交易员如何在其操作中寻找阿尔法,即市场的超额回报。夏普比率是一种指标,它表示投资组合获得的超额回报与其面临的风险之间的关系。其背后的想法是比较每单位风险的超额回报,以便交易员和投资者可以比较不同的资产(或不同的交易策略)。在许多情况下,不值得将投资组合暴露在更高的风险中以获得边际超额回报。让我们看看如何计算夏普比率:

如果您是一位正在考虑如何分配资金的投资者,那么在计算夏普比率时,您可以选择不同类型的(准)无风险资产。尽管 BTC 的多头仓位远非无风险,但这是我们为研究定义的市场基准,因此在计算超额收益时,我们将从移动平均线策略中减去多头策略的收益。

在分析投资组合随时间的变化时,监测滚动夏普比率是很常见的,该公式将在一段滚动时间内应用,例如过去 60 天或 90 天。在下图中,我们可以看到为我们的策略计算的累计和 90 天滚动夏普比率。我们可以看到,投资组合没有一致性,因为夏普比率在合理的时间范围内波动很大,但累计指标始终保持在 0 以上。


单位风险的合理超额回报是多少的决定是非常个人化的,但这是比较不同策略或参数的一个很好的指标。

最大回撤

最大回撤是另一个重要指标。它计算投资组合在创下历史新高后获得的最大损失。让我们在图表中查看它以更好地理解它。

绿线表示我们回测时每个时刻获得的最大回报。回撤是通过从最大值中减去当前回报来计算的,紫线表示回测时每个时刻获得的最大回撤。我们回测的最大回撤是在 2022 年 6 月底。

最大回撤值较小是策略一致性的一个很好的标志。它表明,即使市场动态发生变化(这种情况经常发生),算法也能够获利,并且不会面临长时间或急剧的亏损。正如您所见,在我们的回测中情况并非如此。

赢/输百分比

这个名字并不花哨,但它是我最喜欢的名字之一。在分析策略时,我们必须考虑随机事件的影响。一些回测可能会显示模型的良好结果,该模型在过去的几个价格剧烈波动事件中运气不错,而其他什么都没有。但市场每天都是新的一天,依靠少数事件获利就是在赌运气。获胜期比亏损期多得多的策略更有可能在其中获得真正的优势,因此具有长期盈利的强大潜力。让我们看看基于天数的回测获胜百分比。


看起来不是很好,但也不是很糟糕。在这种情况下,我们必须记住,我们正在使用动量策略,预计该策略不会每天改变头寸。因此,让我们将时间步长从几天改为几个月,并分析结果。


现在我们可以看到更好的表现。在回测期间,该策略的大多数月度胜率都超过 50%。但这也不是一个好结果,交易时会有一些糟糕的月份。

每笔交易的平均利润/亏损

每笔交易的平均利润和亏损也注重一致性。它可以以累积方式计算,这将分析整体表现,也可以以滚动方式计算,这将研究近期表现。获胜策略的平均利润将高于平均亏损,两者之间的行为显著转变可能是市场动态正在发生变化的迹象,这对您的算法来说可能是好事,也可能是坏事。

可以使用中位数而不是均值进行相同的分析。应用中位数将消除异常值的影响并分析策略的表现。如果中位数损失大于中位数利润,则意味着算法依赖特定事件来获得回报。在某些策略中,这完全没问题,但是如果这不是您的目标,则应该进行一些更改。

每期交易次数

算法中没有正确或错误的交易数量,但这个指标能够帮助您的设计。例如,交易数量越多,我们在第 2 部分讨论的隐性成本就越大。因此,超额回报必须补偿这种影响。此外,高频策略可能需要高级基础设施和编码才能真正盈利,否则我们将无法重现回测中获得的结果。在某些情况下,交易数量过多或过少可以告诉我们,我们的策略的运作方式与我们的预期不同,或者参数定义不正确。因此,我们可以监控交易的累计和滚动计数,如下图所示,其中滚动计数器基于 90 天。

56 个月内 1200 笔交易,平均每月约 21 笔交易。这似乎比我们的预期要多一些,因此还有改进的空间。

风险价值(VaR)

VaR 是当您的价格波动不利于您时,在您退出头寸之前可能损失多少钱的估计值。VaR 的计算方法是将头寸规模乘以估计的关键价格波动,可以通过多种不同的方式计算。最常用的方法之一是取资产历史价格变化分布的百分位数来估计未来的变化。再次查看价格变化分布图,但现在以百分比为基础。您看到的红线表示分布的第 5 个百分位数,这意味着线左侧的所有事件占总事件的 5%。该值为 -1.17% 或 -0.0117。


假设我们可以用这个分布进行概率分析,并使用该值作为关键价格变化的参考。那么我们的结论是,按小时计算,价格下跌超过 1.17% 的概率应该不到 5%,或者每月不超过 2 次。如果你想更安全,你可以选择另一个百分位数,例如 1% 而不是 5%。如果你持有 10 万美元的头寸,你的 VaR5% 将计算如下:

VaR5% = -0.0117 x 100,000 = 1170.00 美元

正如我所提到的,VaR 也是一个参数,因为交易者会根据 VaR 限制其头寸规模。因此,在回测不同想法时,重要的是将头寸限制在特定的 VaR 上,以确保在交易时您也能够持有类似的头寸。此外,价格分布图可能会因您分析的时间步长而有很大差异。我们必须确保选择一个我们的交易算法可以退出头寸的时间步长,否则我们将错误计算 VaR。

市场波动有高有低,因此许多交易者更喜欢以滚动形式评估 VaR,仅分析近期价格波动和当前投资组合余额。下图显示了 90 天滚动 VaR 以及我们回测的累计值。我们可以看到,滚动值波动更大,这可能需要您更频繁地调整投资组合头寸。


如果不仔细分析,这两种方法都可能导致我们高估或低估市场风险。毕竟,在使用模型进行交易之前,我们有责任调整模型以反映市场状况。另一个重要的观察结果是,VaR 估计了我们回测的一个时间步长内与价格急剧波动相关的风险,以应对意外情况。它不会估计我们的模型会因连续做出错误决定而损失多少,这是我们讨论的其他指标的任务。

此外,当投资组合由多种资产组成时,必须计算每种资产的 VaR,最终的投资组合 VaR 将取决于这些资产的相关性。如果它们完全相关,最终的 VaR 将是各个组成部分的总和。如果它们是负相关的,一个头寸实际上是在对冲另一个头寸,最终的 VaR 会降低。当低相关性资产的多样化程度较高时,投资组合的风险会显著降低,在这种情况下计算投资组合 VaR 通常涉及随机方法,例如蒙特卡洛模拟。

有数百个指标在回测和交易时很有用,我们只是触及了皮毛。但现在我们有了一些基本工具来帮助我们更好地评估我们的策略,从这个分析来看,我认为还有改进的空间。在第 4 部分中,我们将进行参数分析和过度拟合。

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

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

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

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

相关文章

Prometheus+Grafana-3-Nginx监控-Redis监控

一、监控Nginx 1.Nginx需要开启stub_status 这里我的nginx容器名为mynignx,进入容器查看。 docker exec -it mynginx bash #进入容器 nginx -v 2>&1 | grep -o with-http_stub_status_module #查看 修改nginx.conf ...location /stub_status {stub_stat…

华为od统一考试B卷【AI面板识别】python实现

思路 n int(input())class Light:def __init__(self, id, x1, y1, x2, y2):self.id idself.x1 x1self.y1 y1self.x2 x2self.y2 y2self.height y2 - y1def get_lights_info(n):lights []for _ in range(n):id, x1, y1, x2, y2 map(int, input().strip().split())lights…

量产工具——复习及改进(后附百问网课程视频链接)

目录 一、函数的使用 1.显示系统 1.1 mmap函数 2.输入系统 2.1 ts_setup()函数 2.2 ts_read()函数 2.3 socket()函数 2.4 bind()函数 2.5 recvfrom()函数 2.6 inet_aton()函数 2.7 sendto()函数 2.8 pthread_create()函数 2.9 pthread_cond_signal()函数 2.10 pthre…

思科路由器的基本配置1

#路由技术基础# #路由器的基本配置1# #1调整超级终端的参数 #2退出配置向导,输入“NO”即可进入正常配置方式 #3路由器的模式切换 Router> !进入用户模式 Router>enable !进入特权模…

opencv-python实战项目一:获取鼠标框选区域的颜色

文章目录 一:简介二:框选区域选择颜色方案三、算法实现步骤3.1 按鼠标事件截取图像3.2将图像模糊后转化为hsv并求均值3.3 判断hsv处于何种颜色 四:整体代码实现五,效果: 一:简介 在计算机视觉领域,颜色检测…

19-ESP32-C3加大固件储存区

1默认编译情况。 2、改flash4M。ESP-IDF Partition Table Editor修改。 3、设置输入Partition Table 改自定义.CSV。保存。 4、查看命令输入Partition Table Editor打开-分区表编辑器UI。按图片增加。 nvs,data,nvs,0x9000,0x6000,, phy_init,data,phy,0xF000,0x1000,, factory…

计算机毕业设计Hadoop+Hive居民用电量分析 居民用电量可视化 电量爬虫 机器学习 深度学习 大数据毕业设计 Spark

《Hadoop居民用电量分析》开题报告 一、研究背景与意义 能源问题在全球范围内一直是热点议题,尤其是随着居民生活水平的提高和城市化进程的加快,居民用电量急剧增长,对电力系统的稳定运行和能源管理提出了更高要求。如何科学合理地管理和分…

Hive3:识别内部表、外部表及相互转换

一、识别方法 查看内部表信息 desc formatted stu;查看外部表信息 desc formatted test_ext1;通过Table Type对应的值,我们可以区分外部表和内部表。 二、相互转换 内部表转外部表 alter table stu set tblproperties(EXTERNALTRUE);外部表转内部表 alter ta…

PCIe学习笔记(21)

读请求的数据返回(Data Return for Read Requests) •针对内存读取请求的单个完成可能提供少于请求的全部数据量,只要对于给定请求的所有完成在组合起来时返回了读取请求中请求的数据量。 ◦不同请求的完成不能合并。 ◦I/O和Configuratio…

Qt QCustomPlot 图形库详解

文章目录 原文1. 下载qcustomplot.h与qcustomplot.cpp后,将代码文件拷贝到本地工程,并添加到工程项目2. 看到文件后就是添加成功了3. 在界面中拖拽一个Widget控件,选中并右键选中“提升为”,将原来的Widget控件已成为一个带坐标的 CustomPlot 控件4. 添加printsupport原文 …

【Ai学习】一个技巧,解决99%Comfyui报错!

前言 comfyui以极高灵活度及节点化工作流,深受AI绘画者追捧,每当新的模型开源,comfyui都是最先进行适配。 comfyui高度兼容性及灵活性带来丰富强大的扩展(插件)生态,同时也带来一系列插件安装的问题&…

Python程序结构

模块 Module 定义:包含一系列数据、函数、类的文件,通常以.py结尾。 作用:让一些相关的数据,函数,类有逻辑的组织在一起,使逻辑结构更加清晰。 有利于多人合作开发。 导入 import 语法: im…

【目标检测实验系列】YOLOv5/YOLOv8改进:CARAFE轻量级上采样算子,聚合上下文信息,助力模型涨点(文内附源码)

1. 文章主要内容 本篇博客主要涉及轻量级上采样算子CARAFE,将YOLOv5/YOLOv8模型中最近邻上采样算子改为CARAFE算子,使模型聚合上下文信息,助力模型涨点。 2. 简要概括 论文地址:CARAFE论文地址 论文Github代码&#xff1a…

Go语言 Defer(延迟)

本文主要内容为Go语言中defer(延迟)介绍及应用文件读取使用defer的示例。 目录 定义 应用场景 代码示例 改为匿名函数 总结 定义 延迟:关键字,可以用于修饰语句、函数, 确保这条语句可以在当前栈退出的时候执行。 应用场景 1.一般用于…

【leetcode】特殊数组I【(炒鸡)简单】

好像这题没啥子好说的欸&#xff0c;那就祝点进来的友友今天有好事发生叭~ AC代码见下&#xff1a; class Solution { public:bool isArraySpecial(vector<int>& nums) {for(int i1; i<nums.size(); i)if(nums[i]%2 nums[i-1]%2) return false;return true;} }…

如何妙用哈希表来优化遍历查找过程?刷题感悟总结,c++实现

先上题目 题目链接&#xff1a;题目链接 这题我最先想到的就是前缀和a&#xff0c;构造好了以后就遍历每一个[l,r]数组&#xff08;满足题目要求的连续区间数组&#xff09;&#xff0c;奈何倒数第二个样例时间超限 先给出原思路代码 class Solution { public:int subarray…

网络如何发送一个数据包

网络如何发送一个数据包 网络消息发送就是点一点屏幕。 骚瑞&#xff0c;这一点都不好笑。&#xff08;小品就是我的本质惹&#xff09; 之前我就是会被这个问题搞的不安宁。是怎么知道对方的IP地址的呢&#xff1f;怎么知道对方的MAC呢&#xff1f;世界上计算机有那么多&…

top250的电影

本次的电影排行来源于豆瓣。材料仅用于自身学习和记录自己学习过程 使用python中的requests、BeautifulSoup、xlwt&#xff0c;三者需要提前下载好。。 预处理&#xff1a; url&#xff1a;反应网页变化 其中start后面的数字变化每次加25&#xff0c;对应一页&#xff0c;故…

用exceljs和file-saver插件实现纯前端表格导出Excel(支持样式配置,多级表头)

exceljs在Jquery&#xff08;HTML&#xff09;和vue项目中实现导出功能 前言Jquery&#xff08;HTML&#xff09;中实现导出第一步&#xff0c;先在项目本地中导入exceljs和file-saver包第二步&#xff0c;封装导出Excel方法&#xff08;可直接复制粘贴使用&#xff09;第三步&…

JJ音乐,听歌自由!

林俊杰&#xff0c;这位才华横溢的音乐才子&#xff0c;用他的音符编织了一个又一个令人陶醉的梦幻世界。作为他的音乐爱好者&#xff0c;每一次倾听都是一次心灵的旅程。 他的歌声仿佛有一种魔力&#xff0c;能够穿透灵魂。从《江南》的诗意浪漫&#xff0c;到《不为谁而作的歌…