canslim-screener by tradermonty/claude-trading-skills
npx skills add https://github.com/tradermonty/claude-trading-skills --skill canslim-screener此技能使用威廉·欧奈尔经过验证的 CANSLIM 方法筛选美国股票,这是一种识别具有强劲基本面和价格动能的成长股的系统性方法。CANSLIM 分析 7 个关键组成部分:C 当前收益、A 年度增长、N 新意/新高、S 供应/需求、L 领导地位/相对强度排名、I 机构赞助以及 M 市场方向。
第 3 阶段 实现了全部 7 个组成部分(C, A, N, S, L, I, M),代表了 完整方法的 100%。
两阶段方法:
主要特性:
第 3 阶段组成部分权重(原始欧奈尔权重):
未来阶段:
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
显式触发词:
隐式触发场景:
何时不应使用:
API 要求:
export FMP_API_KEY=your_key_herePython 依赖项:
requests(FMP API 调用)beautifulsoup4(Finviz 网页抓取)lxml(HTML 解析)安装:
pip install requests beautifulsoup4 lxml
输出目录: reports/(默认)或通过 --output-dir 自定义
生成的文件:
canslim_screener_YYYY-MM-DD_HHMMSS.json - 用于编程的结构化数据canslim_screener_YYYY-MM-DD_HHMMSS.md - 人类可读的报告报告内容:
评级区间:
检查用户是否已配置 FMP API 密钥:
# 检查环境变量
echo $FMP_API_KEY
# 如果未设置,提示用户提供
需求:
requests(FMP API 调用)beautifulsoup4(Finviz 网页抓取)lxml(HTML 解析)安装:
pip install requests beautifulsoup4 lxml
如果缺少 API 密钥,引导用户:
export FMP_API_KEY=your_key_here选项 A:默认股票池(推荐) 使用按市值排名的前 40 只标普 500 股票(脚本中预定义):
python3 skills/canslim-screener/scripts/screen_canslim.py
选项 B:自定义股票池 用户提供特定的股票代码或板块:
python3 skills/canslim-screener/scripts/screen_canslim.py \
--universe AAPL MSFT GOOGL AMZN NVDA META TSLA
选项 C:特定板块 用户可以提供专注于特定板块的列表(科技、医疗保健等)
API 预算考虑(第 3 阶段):
--max-candidates 35(35 × 7 + 3 = 248 次调用),或升级到 FMP 入门层($29.99/月,750 次调用/天)以进行完整的 40 只股票筛选使用适当的参数运行主筛选脚本:
cd skills/canslim-screener/scripts
# 基本运行(40 只股票,报告中显示前 20 名)
python3 screen_canslim.py --api-key $FMP_API_KEY
# 自定义参数
python3 screen_canslim.py \
--api-key $FMP_API_KEY \
--max-candidates 40 \
--top 20 \
--output-dir ../../../
脚本工作流程(第 3 阶段 - 完整 CANSLIM):
预期执行时间(第 3 阶段):
Finviz 后备方案行为:
sharesOutstanding 不可用时自动触发✅ 对 NVDA 使用 Finviz 机构持股数据:68.3%脚本生成两个输出文件:
canslim_screener_YYYY-MM-DD_HHMMSS.json - 结构化数据canslim_screener_YYYY-MM-DD_HHMMSS.md - 人类可读的报告阅读 Markdown 报告以识别顶级候选股:
# 查找最新报告
ls -lt canslim_screener_*.md | head -1
# 阅读报告
cat canslim_screener_YYYY-MM-DD_HHMMSS.md
报告结构(第 3 阶段 - 完整 CANSLIM):
报告中的组成部分详情:
审查排名靠前的股票并与知识库交叉参考:
需查阅的参考文档:
references/interpretation_guide.md - 理解评级区间和投资组合规模references/canslim_methodology.md - 组成部分含义的深入探讨(现已包含 S 和 I)references/scoring_system.md - 理解评分公式(第 3 阶段权重)分析框架:
对于 卓越+ 股票 (90-100 分):
对于 卓越股票 (80-89 分):
对于 强劲股票 (70-79 分):
对于 高于平均股票 (60-69 分):
熊市覆盖规则:
为用户创建简洁、可操作的摘要:
报告格式:
# CANSLIM 股票筛选结果(第 3 阶段 - 完整 CANSLIM)
**日期:** YYYY-MM-DD
**市场状况:** [趋势] - M 分数:[X]/100
**分析的股票:** [N]
**组成部分:** C, A, N, S, L, I, M(7 个中的 7 个,100% 覆盖)
## 市场摘要
[基于 M 组成部分对当前市场环境的 2-3 句话描述]
[如果是熊市:警告 - 考虑增加现金配置]
## 前 5 名 CANSLIM 候选股
### 1. [股票代码] - [公司名称] ⭐⭐⭐
**评分:** [X.X]/100 ([评级])
**价格:** $[XXX.XX] | **板块:** [板块]
**组成部分细分:**
- C (收益):[X]/100 - 每股收益增长 [EPS growth]% 季度环比,收入增长 [Revenue growth]%
- A (增长):[X]/100 - 3年每股收益复合年增长率 [CAGR]%
- N (新意):[X]/100 - 距离 52 周高点 [Distance]%
- S (供应/需求):[X]/100 - 上涨/下跌成交量比率:[X.XX]
- L (领导地位):[X]/100 - 52周:[+X.X]%([+X.X]% vs 标普) RS:[XX]
- I (机构):[X]/100 - [N] 名持有人,[X.X]% 持股 [如果存在则显示 ⭐ 超级投资者]
- M (市场):[X]/100 - [趋势]
**解释:** [评级描述和指导]
**最弱组成部分:** [X] ([分数])
**数据来源说明:** [如果使用了 Finviz:"机构数据来自 Finviz"]
[对前 5 只股票重复]
## 投资建议
**立即买入列表 (90+ 分):**
- [列出具有卓越+评级的股票]
- 头寸规模:每只 15-20%
**强烈买入列表 (80-89 分):**
- [列出具有卓越评级的股票]
- 头寸规模:每只 10-15%
**观察列表 (70-79 分):**
- [列出具有强劲评级的股票]
- 回调时买入
## 风险因素
- [识别来自组成部分的任何质量警告]
- [市场状况警告]
- [如果适用,板块集中风险]
- [如果大量使用 Finviz,数据来源可靠性说明]
## 后续步骤
1. 对前 3 名候选股进行详细的基本面分析
2. 检查即将发布的收益报告日历
3. 审查技术图表以确定入场时机
4. [如果是熊市:在部署资金前等待市场复苏]
---
**注意:** 这是第 3 阶段(完整 CANSLIM:C, A, N, S, L, I, M - 100% 覆盖)。
scripts/)主要脚本:
screen_canslim.py - 主编排脚本
python3 screen_canslim.py --api-key KEY [options]fmp_client.py - FMP API 客户端包装器
get_income_statement()、get_quote()、get_historical_prices()、get_institutional_holders()finviz_stock_client.py - Finviz 网页抓取客户端 ← 新增
get_institutional_ownership()、get_stock_data()计算器 (scripts/calculators/):
earnings_calculator.py - C 组成部分(当前收益)
growth_calculator.py - A 组成部分(年度增长)
new_highs_calculator.py - N 组成部分(新意)
supply_demand_calculator.py - S 组成部分(供应/需求) ← 新增
leadership_calculator.py - L 组成部分(领导地位/相对强度)
institutional_calculator.py - I 组成部分(机构)
market_calculator.py - M 组成部分(市场方向)
支持模块:
scorer.py - 综合评分计算
report_generator.py - 输出生成
references/)知识库:
references/canslim_methodology.md (27KB) - 完整的 CANSLIM 解释
references/scoring_system.md (21KB) - 技术评分规范(第 3 阶段)
references/fmp_api_endpoints.md (18KB) - API 集成指南(第 3 阶段)
references/interpretation_guide.md (18KB) - 用户指导
如何使用参考文档:
references/canslim_methodology.md 以理解欧奈尔的系统(现已包含 S 和 I)references/interpretation_guide.mdreferences/scoring_system.mdreferences/fmp_api_endpoints.md 以进行 API 故障排除或 Finviz 后备方案问题症状:
ERROR: 429 Too Many Requests - Rate limit exceeded
Retrying in 60 seconds...
原因:
解决方案:
--max-candidates 30 以降低 API 使用量症状:
ERROR: required libraries not found. Install with: pip install beautifulsoup4 requests lxml
解决方案:
# 安装所有必需的库
pip install requests beautifulsoup4 lxml
# 或单独安装
pip install beautifulsoup4
pip install requests
pip install lxml
症状:
Execution time: 2 minutes 30 seconds for 40 stocks (slower than expected)
原因:
解决方案:
finviz_stock_client.py,将 rate_limit_seconds=2.0 改为 1.5(风险:IP 被封)注意: Finviz 后备方案每只股票增加约 2 秒,但显著提高了 I 组成部分的准确性(35 → 60-100 分)。
症状:
WARNING: Finviz request failed with status 403 for NVDA
⚠️ Using Finviz institutional ownership data - FMP shares outstanding unavailable. Finviz fallback also unavailable. Score reduced by 50%.
原因:
解决方案:
优雅降级:
症状:
✓ Successfully analyzed 40 stocks
Top 5 Stocks:
1. AAPL - 58.3 (Average)
2. MSFT - 55.1 (Average)
...
原因:
解决方案:
症状:
⚠️ Revenue declining despite EPS growth (possible buyback distortion)
⚠️ Using Finviz institutional ownership data (68.3%) - FMP shares outstanding unavailable.
解释:
操作:
这是第 3 阶段,实现了所有 7 个 CANSLIM 组成部分:
影响:
自动后备系统:
sharesOutstanding 时,Finviz 自动激活数据源优先级:
测试可靠性:
第 4 阶段(计划中):
此筛选器仅用于教育和信息目的。
版本: 第 3 阶段 最后更新: 2026-02-20 API 要求: FMP API(免费层:最多 35 只股票;推荐入门层用于 40 只股票)+ BeautifulSoup/requests/lxml 用于 Finviz 执行时间: 40 只股票约 2 分钟 输出格式: JSON + Markdown 已实现的组成部分: C, A, N, S, L, I, M(7 个中的 7 个,100% 覆盖)
每周安装次数
217
代码仓库
GitHub 星标数
394
首次出现
Jan 26, 2026
安全审计
安装于
gemini-cli205
cursor205
opencode205
codex202
github-copilot198
kimi-cli197
This skill screens US stocks using William O'Neil's proven CANSLIM methodology, a systematic approach for identifying growth stocks with strong fundamentals and price momentum. CANSLIM analyzes 7 key components: C urrent Earnings, A nnual Growth, N ewness/New Highs, S upply/Demand, L eadership/RS Rank, I nstitutional Sponsorship, and M arket Direction.
Phase 3 implements all 7 of 7 components (C, A, N, S, L, I, M), representing 100% of the full methodology.
Two-Stage Approach:
Key Features:
Phase 3 Component Weights (Original O'Neil weights):
Future Phases:
Explicit Triggers:
Implicit Triggers:
When NOT to Use:
API Requirements:
export FMP_API_KEY=your_key_herePython Dependencies:
requests (FMP API calls)beautifulsoup4 (Finviz web scraping)lxml (HTML parsing)Installation:
pip install requests beautifulsoup4 lxml
Output Directory: reports/ (default) or custom via --output-dir
Generated Files:
canslim_screener_YYYY-MM-DD_HHMMSS.json - Structured data for programmatic usecanslim_screener_YYYY-MM-DD_HHMMSS.md - Human-readable reportReport Contents:
Rating Bands:
Check if user has FMP API key configured:
# Check environment variable
echo $FMP_API_KEY
# If not set, prompt user to provide it
Requirements:
requests (FMP API calls)beautifulsoup4 (Finviz web scraping)lxml (HTML parsing)Installation:
pip install requests beautifulsoup4 lxml
If API key is missing, guide user to:
export FMP_API_KEY=your_key_hereOption A: Default Universe (Recommended) Use top 40 S&P 500 stocks by market cap (predefined in script):
python3 skills/canslim-screener/scripts/screen_canslim.py
Option B: Custom Universe User provides specific symbols or sector:
python3 skills/canslim-screener/scripts/screen_canslim.py \
--universe AAPL MSFT GOOGL AMZN NVDA META TSLA
Option C: Sector-Specific User can provide sector-focused list (Technology, Healthcare, etc.)
API Budget Considerations (Phase 3):
--max-candidates 35 for free tier (35 × 7 + 3 = 248 calls), or upgrade to FMP Starter tier ($29.99/mo, 750 calls/day) for full 40-stock screeningRun the main screening script with appropriate parameters:
cd skills/canslim-screener/scripts
# Basic run (40 stocks, top 20 in report)
python3 screen_canslim.py --api-key $FMP_API_KEY
# Custom parameters
python3 screen_canslim.py \
--api-key $FMP_API_KEY \
--max-candidates 40 \
--top 20 \
--output-dir ../../../
Script Workflow (Phase 3 - Full CANSLIM):
Expected Execution Time (Phase 3):
Finviz Fallback Behavior:
sharesOutstanding unavailable✅ Using Finviz institutional ownership for NVDA: 68.3%The script generates two output files:
canslim_screener_YYYY-MM-DD_HHMMSS.json - Structured datacanslim_screener_YYYY-MM-DD_HHMMSS.md - Human-readable reportRead the Markdown report to identify top candidates:
# Find the latest report
ls -lt canslim_screener_*.md | head -1
# Read the report
cat canslim_screener_YYYY-MM-DD_HHMMSS.md
Report Structure (Phase 3 - Full CANSLIM):
Component Details in Report:
Review the top-ranked stocks and cross-reference with knowledge bases:
Reference Documents to Consult:
references/interpretation_guide.md - Understand rating bands and portfolio sizingreferences/canslim_methodology.md - Deep dive into component meanings (now includes S and I)references/scoring_system.md - Understand scoring formulas (Phase 3 weights)Analysis Framework:
For Exceptional+ stocks (90-100 points) :
For Exceptional stocks (80-89 points) :
For Strong stocks (70-79 points) :
For Above Average stocks (60-69 points) :
Bear Market Override:
Create a concise, actionable summary for the user:
Report Format:
# CANSLIM Stock Screening Results (Phase 3 - Full CANSLIM)
**Date:** YYYY-MM-DD
**Market Condition:** [Trend] - M Score: [X]/100
**Stocks Analyzed:** [N]
**Components:** C, A, N, S, L, I, M (7 of 7, 100% coverage)
## Market Summary
[2-3 sentences on current market environment based on M component]
[If bear market: WARNING - Consider raising cash allocation]
## Top 5 CANSLIM Candidates
### 1. [SYMBOL] - [Company Name] ⭐⭐⭐
**Score:** [X.X]/100 ([Rating])
**Price:** $[XXX.XX] | **Sector:** [Sector]
**Component Breakdown:**
- C (Earnings): [X]/100 - [EPS growth]% QoQ, [Revenue growth]% revenue
- A (Growth): [X]/100 - [CAGR]% 3yr EPS CAGR
- N (Newness): [X]/100 - [Distance]% from 52wk high
- S (Supply/Demand): [X]/100 - Up/Down Volume Ratio: [X.XX]
- L (Leadership): [X]/100 - 52wk: [+X.X]% ([+X.X]% vs S&P) RS: [XX]
- I (Institutional): [X]/100 - [N] holders, [X.X]% ownership [⭐ Superinvestor if present]
- M (Market): [X]/100 - [Trend]
**Interpretation:** [Rating description and guidance]
**Weakest Component:** [X] ([score])
**Data Source Note:** [If Finviz used: "Institutional data from Finviz"]
[Repeat for top 5 stocks]
## Investment Recommendations
**Immediate Buy List (90+ score):**
- [List stocks with exceptional+ ratings]
- Position sizing: 15-20% each
**Strong Buy List (80-89 score):**
- [List stocks with exceptional ratings]
- Position sizing: 10-15% each
**Watchlist (70-79 score):**
- [List stocks with strong ratings]
- Buy on pullback
## Risk Factors
- [Identify any quality warnings from components]
- [Market condition warnings]
- [Sector concentration risks if applicable]
- [Data source reliability notes if Finviz heavily used]
## Next Steps
1. Conduct detailed fundamental analysis on top 3 candidates
2. Check earnings calendars for upcoming reports
3. Review technical charts for entry timing
4. [If bear market: Wait for market recovery before deploying capital]
---
**Note:** This is Phase 3 (Full CANSLIM: C, A, N, S, L, I, M - 100% coverage).
scripts/)Main Scripts:
screen_canslim.py - Main orchestrator script
python3 screen_canslim.py --api-key KEY [options]fmp_client.py - FMP API client wrapper
get_income_statement(), get_quote(), get_historical_prices(), get_institutional_holders()finviz_stock_client.py - Finviz web scraping client ←
Calculators (scripts/calculators/):
earnings_calculator.py - C component (Current Earnings)
growth_calculator.py - A component (Annual Growth)
new_highs_calculator.py - N component (Newness)
supply_demand_calculator.py - S component (Supply/Demand) ← NEW
leadership_calculator.py - L component (Leadership/Relative Strength)
Supporting Modules:
scorer.py - Composite score calculation
report_generator.py - Output generation
references/)Knowledge Bases:
references/canslim_methodology.md (27KB) - Complete CANSLIM explanation
references/scoring_system.md (21KB) - Technical scoring specification (Phase 3)
references/fmp_api_endpoints.md (18KB) - API integration guide (Phase 3)
references/interpretation_guide.md (18KB) - User guidance
How to Use References:
references/canslim_methodology.md first to understand O'Neil's system (now includes S and I)references/interpretation_guide.md when analyzing resultsreferences/scoring_system.md if scores seem unexpectedreferences/fmp_api_endpoints.md for API troubleshooting or Finviz fallback issuesSymptoms:
ERROR: 429 Too Many Requests - Rate limit exceeded
Retrying in 60 seconds...
Causes:
Solutions:
--max-candidates 30 to lower API usageSymptoms:
ERROR: required libraries not found. Install with: pip install beautifulsoup4 requests lxml
Solutions:
# Install all required libraries
pip install requests beautifulsoup4 lxml
# Or install individually
pip install beautifulsoup4
pip install requests
pip install lxml
Symptoms:
Execution time: 2 minutes 30 seconds for 40 stocks (slower than expected)
Causes:
Solutions:
finviz_stock_client.py, change rate_limit_seconds=2.0 to 1.5 (risk: IP ban)Note: Finviz fallback adds ~2 seconds per stock but significantly improves I component accuracy (35 → 60-100 points).
Symptoms:
WARNING: Finviz request failed with status 403 for NVDA
⚠️ Using Finviz institutional ownership data - FMP shares outstanding unavailable. Finviz fallback also unavailable. Score reduced by 50%.
Causes:
Solutions:
Graceful Degradation:
Symptoms:
✓ Successfully analyzed 40 stocks
Top 5 Stocks:
1. AAPL - 58.3 (Average)
2. MSFT - 55.1 (Average)
...
Causes:
Solutions:
Symptoms:
⚠️ Revenue declining despite EPS growth (possible buyback distortion)
⚠️ Using Finviz institutional ownership data (68.3%) - FMP shares outstanding unavailable.
Interpretation:
Actions:
This is Phase 3 implementing all 7 of 7 CANSLIM components:
Implications:
Automatic Fallback System:
sharesOutstanding, Finviz automatically activatesData Source Priority:
Tested Reliability:
Phase 4 (Planned):
This screener is for educational and informational purposes only.
Version: Phase 3 Last Updated: 2026-02-20 API Requirements: FMP API (free tier: up to 35 stocks; Starter tier recommended for 40 stocks) + BeautifulSoup/requests/lxml for Finviz Execution Time: ~2 minutes for 40 stocks Output Formats: JSON + Markdown Components Implemented: C, A, N, S, L, I, M (7 of 7, 100% coverage)
Weekly Installs
217
Repository
GitHub Stars
394
First Seen
Jan 26, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykWarn
Installed on
gemini-cli205
cursor205
opencode205
codex202
github-copilot198
kimi-cli197
Python PDF处理教程:合并拆分、提取文本表格、创建PDF文件
57,000 周安装
get_institutional_ownership(), get_stock_data()institutional_calculator.py - I component (Institutional)
market_calculator.py - M component (Market Direction)