量化之一:均值回归策略
文章目录
- 均值回归策略
- 理论基础
- 数学公式
- 关键指标
- 简单移动平均线(SMA)
- 标准差
- Z-Score
- 交易信号
- 实际应用
- 优缺点分析
- 优点
- 缺点
- 结论
- 实践
- backtrader
- 参数:
- 正常情况:
- 异常情况:
均值回归策略
均值回归(Mean Reversion)是金融市场中一种常见的现象,指的是资产价格在偏离其长期平均值后,最终会回归到该平均值。本文将详细探讨均值回归的理论基础、数学公式以及其在交易策略中的应用。
理论基础
均值回归的理论基础源于统计学中的中心极限定理和随机游走理论。假设资产价格是一个随机过程,其长期平均值可以通过历史数据进行估计。
数学公式
假设资产价格序列为 P t P_t Pt,其均值为 μ \mu μ,标准差为 σ \sigma σ。均值回归假设价格 P t P_t Pt 会围绕均值 μ \mu μ 波动:
P t = μ + ϵ t P_t = \mu + \epsilon_t Pt=μ+ϵt
其中, ϵ t \epsilon_t ϵt 是一个均值为零的随机误差项。
关键指标
简单移动平均线(SMA)
简单移动平均线用于平滑价格数据,计算公式为:
SMA t = 1 N ∑ i = 0 N − 1 P t − i \text{SMA}_t = \frac{1}{N} \sum_{i=0}^{N-1} P_{t-i} SMAt=N1i=0∑N−1Pt−i
其中, N N N 是时间窗口的长度。
标准差
标准差用于衡量价格波动的幅度,计算公式为:
σ t = 1 N ∑ i = 0 N − 1 ( P t − i − SMA t ) 2 \sigma_t = \sqrt{\frac{1}{N} \sum_{i=0}^{N-1} (P_{t-i} - \text{SMA}_t)^2} σt=N1i=0∑N−1(Pt−i−SMAt)2
Z-Score
Z-Score用于量化价格偏离均值的程度:
Z t = P t − SMA t σ t Z_t = \frac{P_t - \text{SMA}_t}{\sigma_t} Zt=σtPt−SMAt
交易信号
均值回归策略的交易信号基于价格的Z-Score:
- 买入信号:当 Z t < − k Z_t < -k Zt<−k 时,价格被认为是低估的,考虑买入。
- 卖出信号:当 Z t > k Z_t > k Zt>k 时,价格被认为是高估的,考虑卖出。
其中, k k k 是一个预设的阈值,通常取值为2。
实际应用
在实际应用中,均值回归策略可以结合其他技术指标(如相对强弱指数RSI)进行优化。以下是一个简单的均值回归策略实现步骤:
- 计算SMA和标准差:选择合适的时间窗口,计算价格的SMA和标准差。
- 计算Z-Score:根据当前价格、SMA和标准差计算Z-Score。
- 生成交易信号:根据Z-Score判断买入或卖出信号。
- 风险管理:设置止损和止盈点,以控制风险。
优缺点分析
优点
- 理论基础扎实:基于统计学原理,具有较强的理论支持。
- 适用范围广:可应用于多种金融市场和资产类别。
缺点
- 假设市场稳定:在极端市场条件下,价格可能不会回归均值。
- 滞后性:移动平均线和标准差是滞后指标,可能导致信号延迟。
结论
均值回归策略是一种基于统计学原理的交易策略,适用于希望捕捉价格回归趋势的投资者。通过结合数学公式和技术指标,投资者可以更好地理解和应用这一策略。
实践
backtrader
参数:
股价偏离超过 2 ∗ σ 2*\sigma 2∗σ且rsii显示超卖或者超买才买入卖出。
正常情况:
每次出手都不一般
异常情况:
-
较大回撤
-
错过大涨拍烂腿
-
问题:
在长期下跌的趋势中,靠正常卖出太困难,加了止损的大多由止损出局,在长期上涨的趋势中又过早的提前出场。 -
改进:
加长期ema进行择时,在下跌趋势中不进行买入操作。出场时机改为股价下穿 s m a + 2 ∗ σ sma+2*\sigma sma+2∗σ线时卖出,这样能稍微缓解一下提前出局的问题,这个只对强势的股票有用,但是因为前期下跌导致很难强势。正常情况可能下穿的信号会很多。
相关文章:

量化之一:均值回归策略
文章目录 均值回归策略理论基础数学公式 关键指标简单移动平均线(SMA)标准差Z-Score 交易信号实际应用优缺点分析优点缺点 结论 实践backtrader参数:正常情况:异常情况: 均值回归策略 均值回归(Mean Rever…...

NVIDIA Bluefield DPU上的启动流程4个阶段分别是什么?作用是什么?
文章目录 Bluefield上的硬件介绍启动流程启动流程:eMMC中的两个存储分区:ATF介绍ATF启动的四个阶段:四个主要步骤:各个阶段依赖的启动文件一次烧录fw失败后的信息看启动流程综述Bluefield上的硬件介绍 本文以Bluefield2为例,可以看到RSHIM实际上是Boot相关的集合。也能看…...

最优美公式-欧拉公式,轻松理解版
Alan Becker创作的火柴人大战数学的打斗视频,风靡一时,并在B站荣耀斩获了“金知奖”。下面是网友对此视频的部分评价截图。 视频原址:火柴人 vs 数学,后续又一口气看完了“火柴人vs 几何”与“火柴人vs 物理”,通过火柴…...
【力扣 | SQL题 | 每日3题】力扣1107,1112, 1077
今天三道mid题都可以用窗口函数轻松秒杀。 1. 力扣1107:每日新用户统计 1.1 题目: Traffic 表: ------------------------ | Column Name | Type | ------------------------ | user_id | int | | activity | enum …...

计算机网络(十一) —— 数据链路层
目录 一,关于数据链路层 二,以太网协议 2.1 局域网 2.2 Mac地址 2.3 Mac帧报头 2.4 MTU 三,ARP协议 3.1 ARP是什么 3.2 ARP原理 3.3 ARP报头 3.4 模拟ARP过程 3.5 ARP周边问题 四,NAT技术 4.1 NAT技术背景 4.2 NAT转…...

使用PyTorch从0实现Fashion-MNIST数据集分类
完整代码: from d2l import torch as d2l import torch from torchvision import transforms from torchvision import datasets from torch.utils.data import DataLoader import matplotlib.pyplot as plt from IPython import displaydef get_fashion_mnist_la…...
Java数组的值拷贝和地址拷贝
在Java中,数组的值拷贝和地址拷贝是两种不同的操作。 值拷贝是指将一个数组的值复制到另一个新的数组中。这意味着新数组和原数组独立存在,修改其中一个数组不会影响另一个数组。Java中的数组是对象,所以通过值拷贝操作实际上是复制了数组对…...
类与对象 中(剩余部分) 以及 日历
运算符重载 • 当运算符被⽤于类类型的对象时,C语⾔允许我们通过运算符重载的形式指定新的含义。C规定类类型对象使⽤运算符时,必须转换成调⽤对应运算符重载,若没有对应的运算符重载,则会编译报错。 • 运算符重载是具有特名字的…...

iOS 14 自定义画中画悬浮窗 Custom AVPictureInPictureController 实现方案
iOS 14,基于 AVPictureInPictureController,实现自定义画中画,涵盖所有功能与难点。 市面上的各种悬浮钟和提词器的原理都是基于此。 Demo源码在文末。 使用 iOS 画中画的要求: 真机,不能使用模拟器;iO…...
【C#生态园】完整解读C#网络通信库:从基础到实战应用
探索C#网络通信库:功能、用途和最佳实践 前言 随着互联网的快速发展,网络通信在现代软件开发中扮演着至关重要的角色。C#作为一种流行的编程语言,拥有多个优秀的网络通信库,为开发人员提供了丰富的选择。本文将深入探讨几种常用…...
js面试题---事件委托是什么
事件委托是JavaScript中的一种事件处理模式,通过将事件处理程序绑定到父元素,而不是直接绑定到每个子元素,从而优化事件管理和提高性能。 1 工作原理 事件冒泡:当一个事件在某个元素上发生时,它会从该元素向上冒泡到…...

谷歌浏览器 文件下载提示网络错误
情况描述: 谷歌版本:129.0.6668.90 (正式版本) (64 位) (cohort: Control)其他浏览器,比如火狐没有问题,但是谷歌会下载失败,故推断为谷歌浏览器导致的问题小文件比如1、2M会成功,大…...

【记录】PPT|PPT 箭头相交怎么跨过
众所周知,在PPT中实现“跨线”效果并非直接可行,这一功能仅存在于Visio中。然而,通过一些巧妙的方法,我们可以在PPT中模拟出类似的效果。怎么在PPT中画交叉但不重叠的线-百度经验中介绍了一种方法,而本文将介绍一种改进…...
Linux中如何修改root密码
在 Linux 中,修改 root 用户密码可以通过以下步骤进行。你需要具有超级用户权限才能执行这些操作。 方法一:使用 passwd 命令修改 root 密码 使用具有超级用户权限的账户登录 如果你已经以 root 身份登录,或者你当前账户具备超级用户权限&am…...
中间件:SpringBoot集成Redis
一、Redis简介 Redis是一个开源的、基于内存的数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis支持多种类型的数据结构,如字符串(strings)、哈希(hashes)、列表(lists)…...

数据中心建设方案,大数据平台建设,大数据信息安全管理(各类资料原件)
第一章 解决方案 1.1 建设需求 1.2 建设思路 1.3 总体方案 信息安全系统整体部署架构图 1.3.1 IP准入控制系统 1.3.2 防泄密技术的选择 1.3.3 主机账号生命周期管理系统 1.3.4 数据库账号生命周期管理系统 1.3.5 双因素认证系统 1.3.6 数据库审计系统 1.3.7 数据脱敏…...

TDD(测试驱动开发)是否已死?
Rails 大神、创始人 David Heinemeier Hansson 曾发文抨击TDD。 TDD is dead. Long live testing. (DHH) 此后, Kent Beck、Martin Fowler、David Hansson 三人就这个观点还举行了系列对话(辩论) Is TDD Dead? 笔者作为一个多年在软件测试领域摸索的人&…...
Debezium系列之:实时从TDengine数据库采集数据到Kafka Topic
Debezium系列之:实时从TDengine数据库采集数据到Kafka Topic 一、认识TDengine二、TDengine Kafka Connector三、什么是 Kafka Connect?四、前置条件五、安装 TDengine Connector 插件六、启动 Kafka七、验证 kafka Connect 是否启动成功八、TDengine Source Connector 的使用…...
数据结构(一)顺序表
顺序表的概念及结构 线性表 线性表是具有相同特征的数据结构的集合 物理结构 不一定连续 逻辑结构 连续 顺序表 顺序表是线性表的一种,顺序表的底层是数组 物理结构 连续 逻辑结构 连续 顺序表分类 静态顺序表 struct SeqList {int a…...
如何在 Jupyter Notebook 执行和学习 SQL 语句(中)
1. 基础SQL操作 创建数据库和表,插入数据: import sqlite3# 创建SQLite数据库并连接 conn sqlite3.connect(example.db) cursor conn.cursor()# 创建用户表 cursor.execute(CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...
Python第七周作业
Python第七周作业 文章目录 Python第七周作业 1.使用open以只读模式打开文件data.txt,并逐行打印内容 2.使用pathlib模块获取当前脚本的绝对路径,并创建logs目录(若不存在) 3.递归遍历目录data,输出所有.csv文件的路径…...
手动给中文分词和 直接用神经网络RNN做有什么区别
手动分词和基于神经网络(如 RNN)的自动分词在原理、实现方式和效果上有显著差异,以下是核心对比: 1. 实现原理对比 对比维度手动分词(规则 / 词典驱动)神经网络 RNN 分词(数据驱动)…...

使用VMware克隆功能快速搭建集群
自己搭建的虚拟机,后续不管是学习java还是大数据,都需要集群,java需要分布式的微服务,大数据Hadoop的计算集群,如果从头开始搭建虚拟机会比较费时费力,这里分享一下如何使用克隆功能快速搭建一个集群 先把…...
大模型的LoRa通讯详解与实现教程
一、LoRa通讯技术概述 LoRa(Long Range)是一种低功耗广域网(LPWAN)通信技术,由Semtech公司开发,特别适合于物联网设备的长距离、低功耗通信需求。LoRa技术基于扩频调制技术,能够在保持低功耗的同时实现数公里甚至数十公里的通信距离。 LoRa的主要特点 长距离通信:在城…...