mcpField
V
vcp-screener

vcp-screener

github.com/mphinance数据与数据库3285 次安装5 天前更新
代码仓库

关于 vcp-screener

vcp-screener 是使用 FMP 数据筛选符合 Minervini 波动收缩形态(VCP)的股票的技能。它支持自定义股票范围、严格筛选和参数调整,并生成 JSON 与 Markdown 报告供分析候选股及交易设置。

主要功能

  1. 01筛选 VCP 与第二阶段股票
  2. 02自定义股票范围
  3. 03严格筛选突破前及突破状态
  4. 04调整检测与评分参数
  5. 05生成 JSON 和 Markdown 报告
  6. 06分析候选股与交易设置

适用场景

  1. 01寻找潜在的 VCP 突破候选股
  2. 02扫描指定代码中的第二阶段股票
  3. 03调整参数进行回测研究
  4. 04查看枢轴价、止损位与收缩详情

安装

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

$npx skills add https://github.com/mphinance/alpha-skills --skill vcp-screener

安装后在 Claude Code 中输入/vcp-screener确认已加载。

包含的文件

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

README.md
references/
fmp_api_endpoints.md
scoring_system.md
vcp_methodology.md
scripts/
fmp_client.py
report_generator.py
scorer.py
screen_vcp.py
scripts/calculators/
__init__.py
execution_state.py
pattern_classifier.py
pivot_proximity_calculator.py
relative_strength_calculator.py
trend_template_calculator.py
vcp_pattern_calculator.py
volume_pattern_calculator.py
scripts/tests/
conftest.py
test_fmp_client_historical.py
test_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-contractions22-4值越高,形态数量越少,但质量越高
--t1-depth-min10.0%1-50值越高,越会排除较浅的首次回调
--breakout-volume-ratio1.5x0.5-10值越高,成交量确认要求越严格
--trend-min-score850-100值越高,第二阶段筛选越严格
--atr-multiplier1.50.5-5值越低,波段检测越灵敏
--contraction-ratio0.700.1-1值越低,要求收缩幅度越紧
--min-contraction-days51-30值越高,要求的最短收缩时间越长
--lookback-days12030-365值越高,越容易找到较早出现的形态
--max-sma200-extension50.0%—SMA200 距离阈值,用于判断是否处于过度延伸状态以及施加惩罚
--wide-and-loose-threshold15.0%—最后一次收缩深度超过此值时触发宽松形态标记
--strict关闭—Minervini 严格模式:仅包含有效 VCP 且处于突破前或突破状态的股票
第 2 步:查看结果
  1. 阅读生成的 JSON 和 Markdown 报告
  2. 加载 references/vcp_methodology.md,了解形态解读背景
  3. 加载 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 阶段流水线

  1. 预筛选 - 基于报价的筛选(价格、成交量、52 周位置),约 101 次 API 调用
  2. 趋势模板 - 使用 260 天历史数据进行 7 点 Stage 2 筛选,约 100 次 API 调用
  3. 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