feat: 添加8个多尺度分析模块并完善研究报告

新增分析模块:
- microstructure: 市场微观结构分析 (Roll价差, VPIN, Kyle's Lambda)
- intraday_patterns: 日内模式分析 (U型曲线, 三时区对比)
- scaling_laws: 统计标度律 (15尺度波动率标度, R²=0.9996)
- multi_scale_vol: 多尺度已实现波动率 (HAR-RV模型)
- entropy_analysis: 信息熵分析
- extreme_value: 极端值与尾部风险 (GEV/GPD, VaR回测)
- cross_timeframe: 跨时间尺度关联分析
- momentum_reversion: 动量与均值回归检验

现有模块增强:
- hurst_analysis: 扩展至15个时间尺度,新增Hurst vs log(Δt)标度图
- fft_analysis: 扩展至15个粒度,支持瀑布图
- returns/acf/volatility/patterns/anomaly/fractal: 多尺度增强

研究报告更新:
- 新增第16章: 基于全量数据的深度规律挖掘 (15尺度综合)
- 完善第17章: 价格推演添加实际案例 (2020-2021牛市, 2022熊市等)
- 新增16.10节: 可监控的实证指标与预警信号
- 添加VPIN/波动率/Hurst等指标的实时监控阈值和案例

数据覆盖: 全部15个K线粒度 (1m~1mo), 440万条记录
关键发现: Hurst随尺度单调递增 (1m:0.53→1mo:0.72), 极端风险不对称

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-03 16:35:08 +08:00
parent 68b1c6b45d
commit 6f2fede5ba
67 changed files with 8711 additions and 59 deletions

View File

@@ -0,0 +1,239 @@
# Hurst分析模块增强总结
## 修改文件
`/Users/hepengcheng/airepo/btc_price_anany/src/hurst_analysis.py`
## 增强内容
### 1. 扩展至15个时间粒度
**修改位置**`run_hurst_analysis()` 函数约第689-691行
**原代码**
```python
mt_results = multi_timeframe_hurst(['1h', '4h', '1d', '1w'])
```
**新代码**
```python
# 使用全部15个粒度
ALL_INTERVALS = ['1m', '3m', '5m', '15m', '30m', '1h', '2h', '4h', '6h', '8h', '12h', '1d', '3d', '1w', '1mo']
mt_results = multi_timeframe_hurst(ALL_INTERVALS)
```
**影响**从原来的4个尺度1h, 4h, 1d, 1w扩展到全部15个粒度提供更全面的多尺度分析。
---
### 2. 1m数据截断优化
**修改位置**`multi_timeframe_hurst()` 函数约第310-313行
**新增代码**
```python
# 对1m数据进行截断避免计算量过大
if interval == '1m' and len(returns) > 100000:
print(f" {interval} 数据量较大({len(returns)}截取最后100000条")
returns = returns[-100000:]
```
**目的**1分钟数据可能包含数百万个数据点截断到最后10万条可以
- 减少计算时间
- 避免内存溢出
- 保留最近的数据(更具代表性)
---
### 3. 增强多时间框架可视化
**修改位置**`plot_multi_timeframe()` 函数约第411-461行
**主要改动**
1. **更宽的画布**`figsize=(12, 7)``figsize=(16, 8)`
2. **自适应柱状图宽度**`width = min(0.25, 0.8 / 3)`
3. **X轴标签旋转**`rotation=45, ha='right'` 避免15个标签重叠
4. **字体大小动态调整**`fontsize_annot = 7 if len(intervals) > 8 else 9`
**效果**支持15个尺度的清晰展示避免标签拥挤和重叠。
---
### 4. 新增Hurst vs log(Δt) 标度关系图
**新增函数**`plot_hurst_vs_scale()` 第464-547行
**功能特性**
- **X轴**log₁₀(Δt) - 采样周期的对数(天)
- **Y轴**Hurst指数R/S和DFA两条曲线
- **参考线**H=0.5(随机游走)、趋势阈值、均值回归阈值
- **线性拟合**:显示标度关系方程 `H = a·log(Δt) + b`
- **双X轴显示**下方显示log值上方显示时间框架名称
**时间周期映射**
```python
INTERVAL_DAYS = {
"1m": 1/(24*60), "3m": 3/(24*60), "5m": 5/(24*60), "15m": 15/(24*60),
"30m": 30/(24*60), "1h": 1/24, "2h": 2/24, "4h": 4/24,
"6h": 6/24, "8h": 8/24, "12h": 12/24, "1d": 1,
"3d": 3, "1w": 7, "1mo": 30
}
```
**调用位置**`run_hurst_analysis()` 函数第697-698行
```python
# 绘制Hurst vs 时间尺度标度关系图
plot_hurst_vs_scale(mt_results, output_dir)
```
**输出文件**`output/hurst/hurst_vs_scale.png`
---
## 输出变化
### 新增图表
- `hurst_vs_scale.png` - Hurst指数vs时间尺度标度关系图
### 增强图表
- `hurst_multi_timeframe.png` - 从4个尺度扩展到15个尺度
### 终端输出
分析过程会显示所有15个粒度的计算进度和结果
```
【5】多时间框架Hurst指数
--------------------------------------------------
正在加载 1m 数据...
1m 数据量较大1234567条截取最后100000条
1m: R/S=0.5234, DFA=0.5189, 平均=0.5211
正在加载 3m 数据...
3m: R/S=0.5312, DFA=0.5278, 平均=0.5295
... (共15个粒度)
```
---
## 技术亮点
### 1. 标度关系分析
通过 `plot_hurst_vs_scale()` 函数,可以观察:
- **多重分形特征**不同尺度下Hurst指数的变化规律
- **标度不变性**:是否存在幂律关系 `H ∝ (Δt)^α`
- **跨尺度一致性**R/S和DFA方法在不同尺度的一致性
### 2. 性能优化
- 对1m数据截断避免百万级数据的计算瓶颈
- 动态调整可视化参数,适应不同数量的尺度
### 3. 可扩展性
- `ALL_INTERVALS` 列表可灵活调整
- `INTERVAL_DAYS` 字典支持自定义时间周期映射
- 函数签名保持向后兼容
---
## 使用方法
### 运行完整分析
```python
from src.hurst_analysis import run_hurst_analysis
from src.data_loader import load_daily
df = load_daily()
results = run_hurst_analysis(df, output_dir="output/hurst")
```
### 仅运行15尺度分析
```python
from src.hurst_analysis import multi_timeframe_hurst, plot_hurst_vs_scale
from pathlib import Path
ALL_INTERVALS = ['1m', '3m', '5m', '15m', '30m', '1h', '2h', '4h',
'6h', '8h', '12h', '1d', '3d', '1w', '1mo']
mt_results = multi_timeframe_hurst(ALL_INTERVALS)
plot_hurst_vs_scale(mt_results, Path("output/hurst"))
```
### 测试增强功能
```bash
python test_hurst_15scales.py
```
---
## 数据文件依赖
需要以下15个CSV文件位于 `data/` 目录):
```
btcusdt_1m.csv btcusdt_3m.csv btcusdt_5m.csv btcusdt_15m.csv
btcusdt_30m.csv btcusdt_1h.csv btcusdt_2h.csv btcusdt_4h.csv
btcusdt_6h.csv btcusdt_8h.csv btcusdt_12h.csv btcusdt_1d.csv
btcusdt_3d.csv btcusdt_1w.csv btcusdt_1mo.csv
```
**当前状态**:所有数据文件已就绪
---
## 预期效果
### 标度关系图解读示例
1. **标度不变(分形)**
- Hurst指数在log(Δt)轴上呈线性关系
- 例如H ≈ 0.05·log(Δt) + 0.52
- 说明:市场在不同时间尺度展现相似的统计特性
2. **标度依赖(多重分形)**
- Hurst指数在不同尺度存在非线性变化
- 短期尺度1m-1h可能偏向随机游走H≈0.5
- 长期尺度1d-1mo可能偏向趋势性H>0.55
3. **方法一致性验证**
- R/S和DFA两条曲线应当接近
- 如果差异较大,说明数据可能存在特殊结构(如极端波动、结构性断点)
---
## 修改验证
### 语法检查
```bash
python3 -m py_compile src/hurst_analysis.py
```
✅ 通过
### 文件结构
```
src/hurst_analysis.py
├── multi_timeframe_hurst() [已修改] +数据截断逻辑
├── plot_multi_timeframe() [已修改] +支持15尺度
├── plot_hurst_vs_scale() [新增] 标度关系图
└── run_hurst_analysis() [已修改] +15粒度+新图表调用
```
---
## 兼容性说明
**向后兼容**
- 所有原有函数签名保持不变
- 默认参数依然为 `['1h', '4h', '1d', '1w']`
- 可通过参数指定任意粒度组合
**代码风格**
- 遵循原模块的注释风格和函数结构
- 保持一致的变量命名和代码格式
---
## 后续建议
1. **参数化配置**:可将 `ALL_INTERVALS``INTERVAL_DAYS` 提取为模块级常量
2. **并行计算**15个粒度的分析可使用多进程并行加速
3. **缓存机制**:对计算结果进行缓存,避免重复计算
4. **异常处理**:增强对缺失数据文件的容错处理
---
**修改完成时间**2026-02-03
**修改人**Claude (Sonnet 4.5)
**修改类型**:功能增强(非破坏性)