Files
btc_price_anany/tests/test_hurst_15scales.py
riba2534 0569e2abbc fix: 全面修复代码质量和报告准确性问题
代码修复 (16 个模块):
- GARCH 模型统一改用 t 分布 + 收敛检查 (returns/volatility/anomaly)
- KS 检验替换为 Lilliefors 检验 (returns)
- 修复数据泄漏: StratifiedKFold→TimeSeriesSplit, scaler 逐折 fit (anomaly)
- 前兆标签 shift(-1) 预测次日异常 (anomaly)
- PSD 归一化加入采样频率和单边谱×2 (fft)
- AR(1) 红噪声基线经验缩放 (fft)
- 盒计数法独立 x/y 归一化, MF-DFA q=0 (fractal)
- ADF 平稳性检验 + 移除双重 Bonferroni (causality)
- R/S Hurst 添加 R² 拟合优度 (hurst)
- Prophet 递推预测避免信息泄露 (time_series)
- IC 计算过滤零信号, 中性形态 hit_rate=NaN (indicators/patterns)
- 聚类阈值自适应化 (clustering)
- 日历效应前后半段稳健性检查 (calendar)
- 证据评分标准文本与代码对齐 (visualization)
- 核心管道 NaN/空值防护 (data_loader/preprocessing/main)

报告修复 (docs/REPORT.md, 15 处):
- 标度指数 H_scaling 与 Hurst 指数消歧
- GBM 6 个月概率锥数值重算
- CLT 限定、减半措辞弱化、情景概率逻辑修正
- GPD 形状参数解读修正、异常 AUC 证据降级

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 01:07:50 +08:00

76 lines
2.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""
测试脚本验证Hurst分析增强功能
- 15个时间粒度的多尺度分析
- Hurst vs log(Δt) 标度关系图
"""
import sys
from pathlib import Path
# 添加项目路径
sys.path.insert(0, str(Path(__file__).parent.parent))
from src.hurst_analysis import multi_timeframe_hurst, plot_multi_timeframe, plot_hurst_vs_scale
def test_15_scales():
"""测试15个时间尺度的Hurst分析"""
print("=" * 70)
print("测试15个时间尺度Hurst分析")
print("=" * 70)
# 定义全部15个粒度
ALL_INTERVALS = ['1m', '3m', '5m', '15m', '30m', '1h', '2h', '4h', '6h', '8h', '12h', '1d', '3d', '1w', '1mo']
print(f"\n将测试以下 {len(ALL_INTERVALS)} 个时间粒度:")
print(f" {', '.join(ALL_INTERVALS)}")
# 执行多时间框架分析
print("\n开始计算Hurst指数...")
mt_results = multi_timeframe_hurst(ALL_INTERVALS)
# 输出结果统计
print("\n" + "=" * 70)
print(f"分析完成:成功分析 {len(mt_results)}/{len(ALL_INTERVALS)} 个粒度")
print("=" * 70)
if mt_results:
print("\n各粒度Hurst指数汇总")
print("-" * 70)
for interval, data in mt_results.items():
print(f" {interval:5s} | R/S: {data['R/S Hurst']:.4f} | DFA: {data['DFA Hurst']:.4f} | "
f"平均: {data['平均Hurst']:.4f} | 数据量: {data['数据量']:>7}")
# 生成可视化
output_dir = Path(__file__).parent.parent / "output" / "hurst_test"
output_dir.mkdir(parents=True, exist_ok=True)
print("\n" + "=" * 70)
print("生成可视化图表...")
print("=" * 70)
# 1. 多时间框架对比图
plot_multi_timeframe(mt_results, output_dir, "test_15scales_comparison.png")
# 2. Hurst vs 时间尺度标度关系图
plot_hurst_vs_scale(mt_results, output_dir, "test_hurst_vs_scale.png")
print(f"\n图表已保存至: {output_dir.resolve()}")
print(" - test_15scales_comparison.png (15尺度对比柱状图)")
print(" - test_hurst_vs_scale.png (标度关系图)")
else:
print("\n⚠ 警告:没有成功分析任何粒度")
print("\n" + "=" * 70)
print("测试完成")
print("=" * 70)
if __name__ == "__main__":
try:
test_15_scales()
except Exception as e:
print(f"\n❌ 测试失败: {e}")
import traceback
traceback.print_exc()
sys.exit(1)