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:
239
HURST_ENHANCEMENT_SUMMARY.md
Normal file
239
HURST_ENHANCEMENT_SUMMARY.md
Normal 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)
|
||||
**修改类型**:功能增强(非破坏性)
|
||||
Reference in New Issue
Block a user