Z-score 因子的深入思考

news2024/11/14 14:52:11

最新(2024 年 1 月)出版的 SC 技术分析(Techical Analysis of Stock & Commodities)的第 4 条文章给到了 Z-score,原文标题为《Z-score: How to use it in Trading》。今天的笔记,就借此机会,同步推出我们对通过Z-score来构建量化因子的一些观点。

在这里插入图片描述


Z-Score 的计算

Z-score 的计算公式如下:
Z = X − μ σ Z = \frac{X-\mu}{\sigma} Z=σXμ

这里 Z Z Z是 z-score, X X X一般取股价, μ \mu μ是均值, σ \sigma σ是标准差,也称波动率。

如果 X服从正态分布,那么将有以下结论:

  1. abs(z-score) >= 2 的概率小于 2.3%
  2. abs(z-score) >= 3 的概率小于 0.13%

由此可以作为某种反转信号,即一旦z-score超过±2,将有97.7%的概率会回归到±2 以内,也就是股价会发生向均值方向的回归。

在 scipy.stats 包中有 zscore 计算函数,但它是基于我们传入的全部数据的。在因子构建中,我们实际上要计算的是rolling-zscore。因此,我们借用 pandas 中的 rolling 方法来自行计算:

def rolling_zscore(s, win=20):
    ma = s.rolling(window=win).mean()
    std = s.rolling(window=win).std()
    return (s - ma)/std

在这里插入图片描述

因子检验

这篇笔记不打算走完整的流程,我们将随机选择一个标的,计算它最近 250 期的 zscore,把 zscore 小于-2 的点作为买入点,大于 2 的点作为卖出点,进行绘图显示,然后就图的走势,来进行深入讨论:


可以看出,每一个买入点差不多都是局部的最低点,每一个卖出点也差不多是局部最高点。但是,在下跌趋势中,即使我们在最低点进入了,它的反弹并不能持续多久(或者多大的幅度),而且很难等到 zscore 的卖出点,往往就已经拐头了。

或者说,zscore大于2,是一个卖出的充分但不必要条件;zscore 小于-2, 是一个买入的充分但不必要的条件。它不对未来趋势进行预测,并且在 97.7%的时间里,不会发出交易信号,这样资金利用率也不够。因此,zscore 可以构成一个因子,但不能构成一个策略。但作为因子,它仍然是优秀的,因为它能发出确定、胜率很高的信号。

与布林带的关系

如果你熟悉布林带策略,那么你会发现,z-score 的算法与布林带一模一样。不同的是,布林带的上下轨的数值是均值的±2个标准差,取值的波动可以很大,而z-score的取值是在确定的范围内(-3, +3),具有类似归一化的特征。正因为如此,它可以很方便地当成因子,用在机器学习中。实际上,要做到真正的归一化,我们直接取 z-score 的累积概率就好,它是在 [0,1] 区间分布的,并且当 z-score 为 2 时,累积概率为 0.977.


在这里插入图片描述

警惕黑天鹅

与其它别的因子不一样的地方是,z-score 因子的有效性来源于正态分布的假设。只有股价的波动符合正态分布,我们才能断言价格偏离均值加两个标准差的可能性小于 2.3%。然而,股价的波动并不符合正态分布(指数会更接近一点,但也是更符合广义双曲分布,而不是正态分布)。因此,z-score因子(以及布林带)的理论根基并不牢固。

另外,最重要的一点是,在偏离两个标准差的地方,尽管其概率很小,但也存在一种可能,就是它一旦发生,其后果会比较严重。这就是由 Taleb 提出的所谓黑天鹅效应。在 A 股中,需要注意的是,如果在偏离两个标准差的地方,如果发生了涨跌停,那么我们应该果断放弃 z-score 因子。因为在这种情况下,交易情绪是极端化的。


Quiz

如果价格的波动并不服从正态分布,或者任何一种已知的分布,我们又该如何把握它的统计学特征呢?

举例来说,如果有这样一个问题,今天沪指已经下跌了4%,依据过去1000个交易日的统计数据,它继续下跌的概率是多少,你应该如何回答这个问题?能够正确地回答这个问题的人,才能抓住加速赶底、或者因意外事件错误下跌的机会

提示:这是我们在课程中,用来引出PDF/CDF概念的一个问题。

在这里插入图片描述

本文所附源代码在大富翁量化网站上可下载。

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

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

相关文章

在日常工作中如何保障服务器的安全?

服务器在日常工作中具有重要的作用。它是网络的核心组成部分,承担着提供信息和服务的任务。 1.服务器为各种应用提供数据存储和处理服务,支持电子邮件、网页浏览、文件下载等服务,为用户提供高效、安全、可靠的网络访问。 2.服务器承载着各…

uni-app中实现元素拖动

uni-app中实现元素拖动 1、代码示例 <template><movable-area class"music-layout"><movable-view class"img-layout" :x"x" :y"y" direction"all"><img :src"musicDetail.bgUrl" :class&…

Linux mcd命令教程:如何在MS-DOS文件系统中切换工作目录(附实例教程和注意事项)

Linux mcd命令介绍 mcd是mtools工具的指令&#xff0c;它用于在MS-DOS文件系统中切换工作目录。如果不加任何参数&#xff0c;它将显示当前所在的磁盘和工作目录。 Linux mcd命令适用的Linux版本 mcd命令在所有主流的Linux发行版中都可以使用&#xff0c;包括但不限于Ubuntu…

Canvas保姆级教程----深入解析HTML5 Canvas工作原理和常用方法

&#x1f4e2; 鸿蒙专栏&#xff1a;想学鸿蒙的&#xff0c;冲 &#x1f4e2; C语言专栏&#xff1a;想学C语言的&#xff0c;冲 &#x1f4e2; VUE专栏&#xff1a;想学VUE的&#xff0c;冲这里 &#x1f4e2; CSS专栏&#xff1a;想学CSS的&#xff0c;冲这里 &#x1f4…

01、Kafka ------ 下载、安装 ZooKeeper 和 Kafka

目录 Kafka是什么&#xff1f;安装 ZooKeeper下载安装启动 zookeeper 服务器端启动 zookeeper 的命令行客户端工具 安装 Kafka下载安装启动 Kafka 服务器 Kafka是什么&#xff1f; RabbitMQ的性能比ActiveMQ的性能有显著提升。 Kafka的性能比RabbitMQ的性能又有显著提升。 K…

ngrok-内网穿透

一、访问官网下载相关的内容 Download (ngrok.com) linux或者windows可供选择&#xff0c;主要在于你的项目跑在什么地方 选择下载 二、获取Authtoken 点击右上角登录&#xff0c;没有号用谷歌账号登录即可跳转 三、在Windows进行内网穿透 下载打开 打开 运行在命令行中&am…

【42页动态规划学习笔记分享】动态规划核心原理详解及27道LeetCode相关经典题目汇总

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推荐--…

【Spring】19 AOP介绍及实例详解

文章目录 1. 定义1&#xff09;什么意思呢&#xff1f;2&#xff09;如何解决呢&#xff1f; 2. 基本概念1&#xff09;切面&#xff08;Aspect&#xff09;2&#xff09;切点&#xff08;Pointcut&#xff09;3&#xff09;通知&#xff08;Advice&#xff09;4&#xff09;连…

【python入门】day17:模块化编程、math库常见函数

什么叫模块 模块的导入 导入所有&#xff1a;import 模块名称 导入指定&#xff1a;from 模块名称 import 函数/变量/类 python的math库 什么是math库 Python的math库是Python的内建库之一&#xff0c;它提供了许多数学函数&#xff0c;包括三角函数、对数函数、幂函数等&a…

迅为RK3588开发板使用 FFMpeg 进行推流

Debian/Ubuntu 系统使用以下命令安装 FFMpeg &#xff0c;如下图所示&#xff1a; apt-get install ffmpeg 使用 ifconfig 查看开发板 ip 为 192.168.1.245 如下图所示&#xff1a; 使用 FFMpeg 推流一个 mp4 视频进行测试&#xff0c;作者将测试视频 test.mp4 放在了根目录下…

linuxnodejs 20.* 安装问题,version `GLIBCXX_3.4.26‘

背景 今天服务器被重置拉&#xff0c;nodejs 环境不存在&#xff0c;特意安装下nodejs&#xff0c;一访问官网&#xff0c;妈呀&#xff0c;居然到20版本拉&#xff01;就尝试安装下最新版本&#xff01; 过程 $ cd /opt $ curl -OL https://nodejs.org/dist/v20.10.0/node-v2…

c++语言基础18-开房门

题目描述 假设你手里有一串钥匙&#xff0c;这串钥匙上每把钥匙都有一个编号&#xff0c;对应着一个房门的编号。现给你一个房门编号&#xff0c;你需要判断是否能够打开该房门。 输入描述 测试数据共有多组。 第一行为一个整数 s&#xff0c;表示共有多少组测试数据。 每组第一…

Spring高手之路-Spring中Bean的五大作用域

目录 Singleton&#xff08;单例&#xff09;&#xff1a;默认的作用域 Prototype&#xff08;原型&#xff09; Request&#xff08;请求&#xff09; Session&#xff08;会话&#xff09; Global Session&#xff08;全局会话&#xff09; 五大作用域范围对比 作用域…

[C#]基于deskew算法实现图像文本倾斜校正

【算法介绍】 让我们开始讨论Deskeweing算法的一般概念。我们的主要目标是将旋转的图像分成文本块&#xff0c;并确定它们的角度。为了让您详细了解我将使用的方法&#xff1a; 照常-将图像转换为灰度。应用轻微的模糊以减少图像中的噪点。现在&#xff0c;我们的目标是找到带…

【GoLang入门教程】Go语言几种标准库介绍(四)

编程语言的未来&#xff1f; 文章目录 编程语言的未来&#xff1f;前言几种库fmt库 (格式化操作)关键函数&#xff1a;示例 Go库标准库第三方库示例 html库(HTML 转义及模板系统)主要功能&#xff1a;示例 总结专栏集锦写在最后 前言 上一篇&#xff0c;我们介绍了debug、enco…

C/C++动态内存分配 malloc、new、vector(简单讲述)

路虽远&#xff0c;行则将至 事虽难&#xff0c;做则必成 今天来主要讲C中动态内存分配 其中会穿插一些C的内容以及两者的比较 如果对C语言中的动态内存分配还不够理解的同学 可以看看我之前的博客:C语言动态分配 在讲解C的动态内存分配之前 我们先讲一下C内存模型 &#xff1…

国家信息安全水平等级考试NISP二级题目卷③(包含答案)

国家信息安全水平等级考试NISP二级题目卷&#xff08;三&#xff09; 国家信息安全水平等级考试NISP二级题目卷&#xff08;三&#xff09;需要报考咨询可以私信博主&#xff01; 前言&#xff1a; 国家信息安全水平考试(NISP)二级&#xff0c;被称为校园版”CISP”,由中国信息…

全解析阿里云Alibaba Cloud Linux镜像操作系统

Alibaba Cloud Linux是基于龙蜥社区OpenAnolis龙蜥操作系统Anolis OS的阿里云发行版&#xff0c;针对阿里云服务器ECS做了大量深度优化&#xff0c;Alibaba Cloud Linux由阿里云官方免费提供长期支持和维护LTS&#xff0c;Alibaba Cloud Linux完全兼容CentOS/RHEL生态和操作方式…

78 Python开发-多线程FuzzWaf异或免杀爆破

这里写目录标题 本课知识点:学习目的:演示案例:Python开发-简单多线程技术实现脚本Python开发-利用FTP模块实现协议爆破脚本Python开发-配合Fuzz实现免杀异或Shell脚本 涉及资源: 本课知识点: 协议模块使用&#xff0c;Request爬虫技术&#xff0c;简易多线程技术&#xff0c;…

Postman 安装及使用

文章目录 1. 安装 Postman1&#xff09;下载2&#xff09;安装3&#xff09;注册用户4&#xff09;登陆完成 2. 创建和发送请求1&#xff09;发送一个 GET 请求2&#xff09;发送一个 POST 请求 3. 查看响应4. 使用环境变量和变量5. 高级功能和测试6. 导出和分享请求总结 Postm…