MatlabCode

本站所有资源均为高质量资源,各种姿势下载。

您现在的位置是:MatlabCode > 资源下载 > 一般算法 > 多重R/S分析法计算Hurst指数与趋势评估源码

多重R/S分析法计算Hurst指数与趋势评估源码

资 源 简 介

本项目包含多种基于重标极差分析(R/S分析)的估值算法源代码,旨在精确计算时间序列的Hurst指数以评估市场趋势的持久性。功能详细涵盖了经典R/S分析法以及针对特定数据特征处理的改进型R/S估值方法。核心功能流程包括:首先对输入的原始金融时间序列进行预处理和对数收益率转换;其次采用动态滑动窗口或分割子区间技术,计算不同时间跨度下的极差(Range)与标准差(Standard Deviation)并求取标准化的R/S比值;随后在双对数(Log-Log)坐标系下对包括时间跨度和R/S值由于进行线性回归拟合,得出的回归斜率即为Hurst指数。该工具箱能够有效区分时间序列是遵循随机游走(H=0.5)、具有长期记忆性的持久趋势(H>0.5)还是均值回归的反持久状态(H<0.5)。代码经过验证具有良好的可用性和数值稳定性,适用于股票、期货、外汇等金融市场的非线性动力学特征分析与长程相关性检验,为量化投资策略提供基于分形市场假说的理论支持。

详 情 说 明

多重R/S分析法 Hurst指数估值与计算源码库

项目介绍

本项目是一个基于MATLAB开发的金融时间序列分析工具箱,专注于使用重标极差分析法(Rescaled Range Analysis, R/S分析)来估值Hurst指数。该工具旨在量化市场趋势的持久性(长程相关性),能够有效区分时间序列是遵循随机游走、具有均值回归特性还是表现出持久的趋势性。

项目不仅实现了经典的R/S分析核心算法,还包含了一个用于生成模拟金融数据的几何布朗运动(GBM)生成器,以及完善的可视化报告模块。算法设计考虑了对数刻度下的采样均匀性,适用于股票、期货、外汇等高频或低频数据的分形特征分析。

主要功能特性

  • 模拟数据生成:内置基于几何布朗运动(GBM)并叠加非线性趋势项的市场价格序列生成器,用于算法验证和基准测试。
  • 经典R/S分析算法:实现了基于非重叠子区间的重标极差计算逻辑,计算极差(Range)与标准差(Standard Deviation)的比值。
  • Hurst指数估值:通过双对数坐标系(Log-Log Plot)下的最小二乘法线性回归,精确计算Hurst指数(H)。
  • 多维统计指标:除了Hurst指数外,还自动计算拟合优度(R-squared)和分形维数(Fractal Dimension)。
  • V统计量分析:集成V统计量(V-Statistic)计算,用于辅助判断非周期循环的稳定性。
  • 智能判别:根据计算出的H值,自动判定市场状态(随机游走、反持久性/均值回归、持久性趋势)。
  • 全景可视化:提供包含原始价格、收益率、Hurst回归拟合图及V统计量曲线的综合图表。

算法实现原理与逻辑详情

本项目的主程序逻辑严格按照以下步骤执行:

1. 数据预处理与生成

程序首先生成模拟的金融时间序列。数据模型基于几何布朗运动(GBM),包含漂移项和扩散项。为了模拟真实市场的非线性动力学特征,生成过程中引入了微小的正弦波长记忆性扰动项。随后,算法将原始价格序列转换为对数收益率(Log Returns),作为R/S分析的输入数据。

2. 动态尺度分割(Time Horizon)

为了在回归分析中获得均匀分布的数据点,算法采用对数步长生成分割尺度(Scales)。从最小窗口长度(默认为16)开始,以指数形式增长直至接近数据总长度的一半。这种方法保证了在双对数坐标图上,数据点分布均匀,避免了高频区数据点过密而低频区稀疏的问题。

3. 核心R/S计算流程

对于每一个时间尺度 $n$,算法执行以下操作:
  • 区间分割:将总时间序列分割为若干个长度为 $n$ 的互不重叠子区间。
  • 均值与离差:计算每个子区间的均值,并求出序列中每一点相对于均值的离差。
  • 累积离差:计算离差的累积和,形成累积离差序列。
  • 极差计算 ($R$):找出累积离差序列中的最大值与最小值,两者的差即为极差。
  • 标准化 ($S$):计算该子区间数据的标准差。
  • 比值平均:计算该子区间 $R/S$ 值。最终取该尺度下所有子区间 $R/S$ 值的算术平均数作为该尺度的最终 $(R/S)_n$。

4. V统计量计算

在计算 $R/S$ 的同时,算法计算 V统计量,公式为 $V_n = (R/S)_n / sqrt{n}$。该指标用于检测趋势是否在特定时间尺度后消失或变得不稳定。

5. 线性回归与参数估值

  • 算法将所有时间尺度 $n$ 和对应的 $(R/S)_n$ 值转换为对数形式(Log10)。
  • 使用最小二乘法(Polyfit)对 $log(n)$ 和 $log(R/S)$ 进行一元线性回归拟合。
  • 回归直线的斜率即为 Hurst指数 ($H$)
  • 通过回归残差计算拟合优度 $R^2$,用于评估Hurst指数的置信度。
  • 根据公式 $D = 2 - H$ 计算时间序列的分形维数。

系统要求

  • 软件环境:MATLAB R2016a 或更高版本。
  • 工具箱:需安装基础的 MATLAB Statistics and Machine Learning Toolbox(用于 polyfit, std, mean, var 等统计函数)。

使用方法

  1. 参数配置:在脚本开头的参数设置区域,可以调整 data_length(数据长度)和 min_window(最小子区间长度)。默认数据长度为4096,最小窗口为16。
  2. 运行分析:直接运行脚本即可启动全流程分析。
  3. 结果解读
* 控制台输出:程序将在命令行窗口输出生成的序列长度、计算进度、最终的 Hurst 指数、拟合优度、分形维数以及对市场状态的文字判定结论。 * 图形输出:程序将弹出一个包含四个子图的窗口进行可视化展示。

结果可视化说明

运行程序后生成的图表包含以下四个部分:

  1. 原始价格时间序列:展示基于GBM生成的模拟价格走势。
  2. 对数收益率序列:展示由于价格差分产生的波动序列,即R/S分析的实际输入对象。
  3. R/S分析 Log-Log 回归图:核心结果图。横轴为 Log(时间跨度),纵轴为 Log(R/S值)。图中的红线为线性拟合线,散点为实际计算值。图例中会显示拟合方程和计算出的 Hurst 指数。
  4. V统计量分析图:展示 V统计量随时间尺度 Log(n) 的变化。若曲线平坦,提示随机游走;若有明显峰值或趋势,提示存在非周期循环或趋势断裂点。

注意事项

  • 数据依赖性:Hurst指数的准确性高度依赖于数据长度。建议输入数据长度至少为1024个点,以保证在Log-Log回归中有足够多的有效尺度点。
  • 除零保护:代码内部已对标准差为0的极端情况进行了极小值保护处理,防止程序崩溃。
  • 随机性:由于模拟数据生成使用了随机数(randn),代码设定了固定的随机种子(rng(42))以保证结果的可复现性。如需测试不同数据,可注释掉随机种子设置。