mcpField
D
downtrend-duration-analyzer

downtrend-duration-analyzer

github.com/tradermonty数据与数据库3.4k3.1k 次安装2 天前更新
代码仓库

关于 downtrend-duration-analyzer

这项 Python 技能分析历史股价下跌区间及其持续时间,供评估回调和均值回归持仓期限的交易者使用。它按行业和市值层级划分结果,并生成报告与交互式 HTML 图表。

主要功能

  1. 01识别峰谷下跌区间
  2. 02计算持续时间与跌幅
  3. 03按行业和市值层级划分
  4. 04汇总统计量与百分位数
  5. 05生成交互式 HTML 直方图

适用场景

  1. 01估算各行业典型回调时长
  2. 02比较不同市值层级的回撤
  3. 03为均值回归策略设定持仓期限

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/tradermonty/claude-trading-skills --skill downtrend-duration-analyzer

安装后在 Claude Code 中输入/downtrend-duration-analyzer确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

requirements.txt
references/
downtrend_methodology.md
scripts/
analyze_downtrends.py
generate_histogram_html.py
scripts/tests/
conftest.py
test_analyze_downtrends.py
test_analyze_symbol_and_main.py
test_fetch_stock_list.py
test_generate_histogram_html.py
test_histogram_main.py

详细介绍

下行趋势持续时间分析器

概述

分析历史价格数据,识别下行趋势周期(从峰值到谷值),并构建回调持续时间的统计分布。生成交互式 HTML 可视化图表,按行业和市值划分直方图,帮助交易者了解典型的复苏时间范围,并为均值回归策略设定切合实际的预期。

适用场景

  • 交易者询问某个行业或市值层级的典型回调持续时间
  • 用户想了解历史回撤的恢复时间
  • 构建需要切合实际持有期预估的均值回归或回调策略
  • 比较不同市场板块的回调行为
  • 设置止损超时或持仓期限上限

前置条件

  • Python 3.9+
  • FMP API 密钥(设置 FMP_API_KEY 环境变量,或使用 --api-key)
  • 所需软件包:requests、pandas、numpy(标准数据分析工具栈)

工作流

步骤 1:获取历史价格数据

运行分析脚本,为一组股票获取 OHLC 数据并识别下行趋势周期。

python3 skills/downtrend-duration-analyzer/scripts/analyze_downtrends.py \
  --sector "Technology" \
  --lookback-years 5 \
  --output-dir reports/
步骤 2:分析下行趋势持续时间

脚本会自动:

  1. 使用滚动窗口分析识别局部峰值和谷值
  2. 计算每段下行趋势的持续时间(交易日)和跌幅(%)
  3. 按行业和市值层级(超大、大、中、小)划分结果
  4. 计算汇总统计数据(中位数、均值、百分位数)
步骤 3:生成交互式 HTML 可视化图表
python3 skills/downtrend-duration-analyzer/scripts/generate_histogram_html.py \
  --input reports/downtrend_analysis_*.json \
  --output-dir reports/

这会创建一个交互式 HTML 文件,其中包含:

  • 下行趋势持续时间直方图
  • 行业和市值筛选器
  • 显示百分位信息的悬停提示
  • 汇总统计表
步骤 4:查看分布洞察

加载生成的 Markdown 报告,解读分析结果:

  • 短期回调(5-15 天):上升趋势中的典型回落
  • 中期回调(15-40 天):常见的行业轮动
  • 长期回调(40 天以上):趋势变化或熊市

输出格式

JSON 报告
{
  "schema_version": "1.0",
  "analysis_date": "2026-03-28T07:00:00Z",
  "parameters": {
    "lookback_years": 5,
    "sector_filter": "Technology",
    "peak_window": 20,
    "trough_window": 20
  },
  "summary": {
    "total_downtrends": 1234,
    "median_duration_days": 18,
    "mean_duration_days": 24.5,
    "p25_duration_days": 10,
    "p75_duration_days": 32,
    "p90_duration_days": 55
  },
  "by_sector": {
    "Technology": {
      "count": 456,
      "median_days": 15,
      "mean_days": 20.3
    }
  },
  "by_market_cap": {
    "Mega": {"count": 200, "median_days": 12},
    "Large": {"count": 300, "median_days": 16},
    "Mid": {"count": 400, "median_days": 22},
    "Small": {"count": 334, "median_days": 28}
  },
  "downtrends": [
    {
      "symbol": "AAPL",
      "sector": "Technology",
      "market_cap_tier": "Mega",
      "peak_date": "2025-01-15",
      "trough_date": "2025-02-10",
      "duration_days": 18,
      "depth_pct": -12.5
    }
  ]
}
Markdown 报告
# Downtrend Duration Analysis

**Date**: 2026-03-28
**Lookback**: 5 years
**Sector**: Technology

## Summary Statistics

| Metric | Value |
|--------|-------|
| Total Downtrends | 1,234 |
| Median Duration | 18 days |
| Mean Duration | 24.5 days |
| 25th Percentile | 10 days |
| 75th Percentile | 32 days |
| 90th Percentile | 55 days |

## By Market Cap Tier

| Tier | Count | Median | Mean |
|------|-------|--------|------|
| Mega ($200B+) | 200 | 12 days | 15.2 days |
| Large ($10-200B) | 300 | 16 days | 20.1 days |
| Mid ($2-10B) | 400 | 22 days | 28.4 days |
| Small (<$2B) | 334 | 28 days | 35.6 days |

## Key Insights

1. Larger companies recover faster from corrections
2. Technology sector shows shorter median correction than market average
3. 90% of corrections resolve within 55 trading days
HTML 可视化图表

交互式直方图保存至 reports/downtrend_histogram_YYYY-MM-DD.html,其中包含:

  • 基于 Plotly.js 的交互式图表
  • 行业和市值下拉筛选器
  • 带分箱控件的持续时间分布
  • 百分位标记(P25、P50、P75、P90)

报告保存在 reports/ 中,文件名为:

  • downtrend_analysis_YYYY-MM-DD_HHMMSS.json
  • downtrend_analysis_YYYY-MM-DD_HHMMSS.md
  • downtrend_histogram_YYYY-MM-DD_HHMMSS.html

资源

  • scripts/analyze_downtrends.py -- 用于获取数据并计算下行趋势持续时间的主分析脚本
  • scripts/generate_histogram_html.py -- 生成带交互式直方图的 HTML 可视化图表
  • references/downtrend_methodology.md -- 峰值/谷值检测算法及市值层级定义

核心原则

  1. 统计严谨性:使用稳健的峰值/谷值检测方法,避免噪声导致错误信号
  2. 细分至关重要:始终按行业和市值进行分析;平均值会掩盖重要差异
  3. 设定切合实际的预期:使用百分位数(而不只是均值)了解结果的完整分布

评论

支持 Markdown