关于 downtrend-duration-analyzer
这项 Python 技能分析历史股价下跌区间及其持续时间,供评估回调和均值回归持仓期限的交易者使用。它按行业和市值层级划分结果,并生成报告与交互式 HTML 图表。
主要功能
- 01识别峰谷下跌区间
- 02计算持续时间与跌幅
- 03按行业和市值层级划分
- 04汇总统计量与百分位数
- 05生成交互式 HTML 直方图
适用场景
- 01估算各行业典型回调时长
- 02比较不同市值层级的回撤
- 03为均值回归策略设定持仓期限
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ tradermonty/ claude-trading-skills --skill downtrend-duration-analyzer安装后在 Claude Code 中输入/downtrend-duration-analyzer确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
requirements.txtreferences/downtrend_methodology.mdscripts/analyze_downtrends.pygenerate_histogram_html.pyscripts/tests/conftest.pytest_analyze_downtrends.pytest_analyze_symbol_and_main.pytest_fetch_stock_list.pytest_generate_histogram_html.pytest_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:分析下行趋势持续时间
脚本会自动:
- 使用滚动窗口分析识别局部峰值和谷值
- 计算每段下行趋势的持续时间(交易日)和跌幅(%)
- 按行业和市值层级(超大、大、中、小)划分结果
- 计算汇总统计数据(中位数、均值、百分位数)
步骤 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.jsondowntrend_analysis_YYYY-MM-DD_HHMMSS.mddowntrend_histogram_YYYY-MM-DD_HHMMSS.html
资源
scripts/analyze_downtrends.py-- 用于获取数据并计算下行趋势持续时间的主分析脚本scripts/generate_histogram_html.py-- 生成带交互式直方图的 HTML 可视化图表references/downtrend_methodology.md-- 峰值/谷值检测算法及市值层级定义
核心原则
- 统计严谨性:使用稳健的峰值/谷值检测方法,避免噪声导致错误信号
- 细分至关重要:始终按行业和市值进行分析;平均值会掩盖重要差异
- 设定切合实际的预期:使用百分位数(而不只是均值)了解结果的完整分布
评论
支持 Markdown