关于 vcp-screener
vcp-screener 是使用 FMP 数据筛选符合 Minervini 波动收缩形态(VCP)的股票的技能。它支持自定义股票范围、严格筛选和参数调整,并生成 JSON 与 Markdown 报告供分析候选股及交易设置。
主要功能
- 01筛选 VCP 与第二阶段股票
- 02自定义股票范围
- 03严格筛选突破前及突破状态
- 04调整检测与评分参数
- 05生成 JSON 和 Markdown 报告
- 06分析候选股与交易设置
适用场景
- 01寻找潜在的 VCP 突破候选股
- 02扫描指定代码中的第二阶段股票
- 03调整参数进行回测研究
- 04查看枢轴价、止损位与收缩详情
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mphinance/ alpha-skills --skill vcp-screener安装后在 Claude Code 中输入/vcp-screener确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdreferences/fmp_api_endpoints.mdscoring_system.mdvcp_methodology.mdscripts/fmp_client.pyreport_generator.pyscorer.pyscreen_vcp.pyscripts/calculators/__init__.pyexecution_state.pypattern_classifier.pypivot_proximity_calculator.pyrelative_strength_calculator.pytrend_template_calculator.pyvcp_pattern_calculator.pyvolume_pattern_calculator.pyscripts/tests/conftest.pytest_fmp_client_historical.pytest_vcp_screener.py详细介绍
VCP 筛选器 - Minervini 波动收缩形态
筛选 S&P 500 股票,寻找 Mark Minervini 的波动收缩形态(VCP),识别处于第二阶段上升趋势、在突破枢轴点附近波动收缩的股票。
适用场景
- 用户要求筛选 VCP 或寻找 Minervini 风格的形态
- 用户想寻找紧密底部 / 波动收缩形态
- 用户要求扫描处于第二阶段的动量股
- 用户要求寻找风险明确的潜在突破股
先决条件
- FMP API 密钥(设置
FMP_API_KEY环境变量或传入--api-key) - 免费套餐(每天 250 次调用)足以支持默认筛选(前 100 个候选股)
- 完整筛选 S&P 500 建议使用付费套餐(
--full-sp500)
工作流
第 1 步:准备并执行筛选
运行 VCP 筛选脚本:
# Default: S&P 500, top 100 candidates
python3 skills/vcp-screener/scripts/screen_vcp.py --output-dir skills/vcp-screener/scripts
# Custom universe
python3 skills/vcp-screener/scripts/screen_vcp.py --universe AAPL NVDA MSFT AMZN META --output-dir skills/vcp-screener/scripts
# Full S&P 500 (paid API tier)
python3 skills/vcp-screener/scripts/screen_vcp.py --full-sp500 --output-dir skills/vcp-screener/scripts
严格模式(Minervini 纯粹形态)
仅返回 valid_vcp=True 且 execution_state 属于 (Pre-breakout, Breakout) 的股票:
python3 skills/vcp-screener/scripts/screen_vcp.py --strict --output-dir reports/
高级调优(用于回测)
调整 VCP 检测参数,以用于研究和回测:
python3 skills/vcp-screener/scripts/screen_vcp.py \
--min-contractions 3 \
--t1-depth-min 12.0 \
--breakout-volume-ratio 2.0 \
--trend-min-score 90 \
--atr-multiplier 1.5 \
--output-dir reports/
| 参数 | 默认值 | 范围 | 作用 |
|---|---|---|---|
--min-contractions | 2 | 2-4 | 值越高,形态数量越少,但质量越高 |
--t1-depth-min | 10.0% | 1-50 | 值越高,越会排除较浅的首次回调 |
--breakout-volume-ratio | 1.5x | 0.5-10 | 值越高,成交量确认要求越严格 |
--trend-min-score | 85 | 0-100 | 值越高,第二阶段筛选越严格 |
--atr-multiplier | 1.5 | 0.5-5 | 值越低,波段检测越灵敏 |
--contraction-ratio | 0.70 | 0.1-1 | 值越低,要求收缩幅度越紧 |
--min-contraction-days | 5 | 1-30 | 值越高,要求的最短收缩时间越长 |
--lookback-days | 120 | 30-365 | 值越高,越容易找到较早出现的形态 |
--max-sma200-extension | 50.0% | — | SMA200 距离阈值,用于判断是否处于过度延伸状态以及施加惩罚 |
--wide-and-loose-threshold | 15.0% | — | 最后一次收缩深度超过此值时触发宽松形态标记 |
--strict | 关闭 | — | Minervini 严格模式:仅包含有效 VCP 且处于突破前或突破状态的股票 |
第 2 步:查看结果
- 阅读生成的 JSON 和 Markdown 报告
- 加载
references/vcp_methodology.md,了解形态解读背景 - 加载
references/scoring_system.md,了解评分阈值指南
第 3 步:提供分析
对于每个排名靠前的候选股,提供:
- 质量(
composite_score/ 评级)——VCP 形态的构建质量如何? - 执行状态(
execution_state)——现在是否适合买入?(突破前 / 突破 = 可采取行动) - 形态类型(
pattern_type)——教科书式 VCP / VCP 邻近形态 / 突破后 / 过度延伸的领涨股 / 受损 - 如果应用了状态上限(原始分数已下调),添加
★标记 - 收缩详情(T1/T2/T3 深度和比率)
- 交易设置:枢轴价格、止损价、风险百分比
- 成交量枯竭比率和 breakout_volume_score
- 相对强度排名
第 4 步:提供可执行建议
按执行状态筛选(首要筛选条件):
- 突破前 / 突破: 形态处于有效入场窗口——根据评级调整仓位
- 突破早期: 突破正在进行,但股价已高于理想入场位——降低仓位或等待回调
- 延伸 / 过度延伸: 错过入场时机——加入观察列表,等待下一个底部形态
- 受损 / 无效: 形态已失效——不要入场
按评级筛选(确认可采取行动后使用的次要条件):
- 教科书式 VCP(90+): 在枢轴位买入,采用积极仓位(1.5-2x)
- 强势 VCP(80-89): 在枢轴位买入,采用标准仓位(1x)
- 良好 VCP(70-79): 在枢轴位上方、成交量得到确认后买入(0.75x)
- 形成中(60-69): 加入观察列表,等待更紧密的收缩
- 弱势 / 无 VCP(<60): 仅监控或跳过
3 阶段流水线
- 预筛选 - 基于报价的筛选(价格、成交量、52 周位置),约 101 次 API 调用
- 趋势模板 - 使用 260 天历史数据进行 7 点 Stage 2 筛选,约 100 次 API 调用
- VCP 检测 - 形态分析、评分、报告生成(不额外调用 API)
输出
vcp_screener_YYYY-MM-DD_HHMMSS.json- 结构化结果vcp_screener_YYYY-MM-DD_HHMMSS.md- 人类可读的报告
资源
references/vcp_methodology.md- VCP 理论和趋势模板说明references/scoring_system.md- 评分阈值和各组成部分的权重references/fmp_api_endpoints.md- API 端点和速率限制
评论
支持 Markdown