Stock Analysis
技能介绍
Analyze stocks and cryptocurrencies using Yahoo Finance data. Supports portfolio management, watchlists with alerts, dividend analysis, 8-dimension stock scoring, viral trend detection (Hot Scanner),…
使用场景
文档(原文)
来源:README.md📈 Stock Analysis v6.1
AI-powered stock & crypto analysis with portfolio management, watchlists, dividend analysis, and viral trend detection.
What's New in v6.1
- 🔥 Hot Scanner — Find viral stocks & crypto across multiple sources
- 🐦 Twitter/X Integration — Social sentiment via bird CLI
- 📰 Multi-Source Aggregation — CoinGecko, Google News, Yahoo Finance
- ⏰ Cron Support — Daily trend reports
What's New in v6.0
- 🆕 Watchlist + Alerts — Price targets, stop losses, signal change notifications
- 🆕 Dividend Analysis — Yield, payout ratio, growth rate, safety score
- 🆕 Fast Mode — Skip slow analyses for quick checks
- 🆕 Improved Commands — Better OpenClaw/Telegram integration
- 🆕 Test Suite — Unit tests for core functionality
Features
| Feature | Description |
|---|---|
| 8-Dimension Analysis | Earnings, fundamentals, analysts, momentum, sentiment, sector, market, history |
| Crypto Support | Top 20 cryptos with market cap, BTC correlation, momentum |
| Portfolio Management | Track holdings, P&L, concentration warnings |
| Watchlist + Alerts | Price targets, stop losses, signal changes |
| Dividend Analysis | Yield, payout, growth, safety score |
| Risk Detection | Geopolitical, earnings timing, overbought, risk-off |
| Breaking News | Crisis keyword scanning (last 24h) |
Quick Start
Analyze Stocks
uv run scripts/analyze_stock.py AAPL
uv run scripts/analyze_stock.py AAPL MSFT GOOGL
uv run scripts/analyze_stock.py AAPL --fast # Skip slow analyses
Analyze Crypto
uv run scripts/analyze_stock.py BTC-USD
uv run scripts/analyze_stock.py ETH-USD SOL-USD
Dividend Analysis
uv run scripts/dividends.py JNJ PG KO
Watchlist
uv run scripts/watchlist.py add AAPL --target 200 --stop 150
uv run scripts/watchlist.py list
uv run scripts/watchlist.py check --notify
Portfolio
uv run scripts/portfolio.py create "My Portfolio"
uv run scripts/portfolio.py add AAPL --quantity 100 --cost 150
uv run scripts/portfolio.py show
🔥 Hot Scanner (NEW)
# Full scan with all sources
python3 scripts/hot_scanner.py
# Fast scan (skip social media)
python3 scripts/hot_scanner.py --no-social
# JSON output for automation
python3 scripts/hot_scanner.py --json
Analysis Dimensions
Stocks (8 dimensions)
- Earnings Surprise (30%) — EPS beat/miss
- Fundamentals (20%) — P/E, margins, growth, debt
- Analyst Sentiment (20%) — Ratings, price targets
- Historical Patterns (10%) — Past earnings reactions
- Market Context (10%) — VIX, SPY/QQQ trends
- Sector Performance (15%) — Relative strength
- Momentum (15%) — RSI, 52-week range
- Sentiment (10%) — Fear/Greed, shorts, insiders
Crypto (3 dimensions)
- Market Cap & Category
- BTC Correlation (30-day)
- Momentum (RSI, range)
Dividend Metrics
| Metric | Description |
|---|---|
| Yield | Annual dividend / price |
| Payout Ratio | Dividend / EPS |
| 5Y Growth | CAGR of dividend |
| Consecutive Years | Years of increases |
| Safety Score | 0-100 composite |
| Income Rating | Excellent → Poor |
🔥 Hot Scanner
Find what's trending RIGHT NOW across stocks & crypto.
Data Sources
| Source | What it finds |
|---|---|
| CoinGecko Trending | Top 15 trending coins |
| CoinGecko Movers | Biggest gainers/losers (>3%) |
| Google News | Breaking finance & crypto news |
| Yahoo Finance | Top gainers, losers, most active |
| Twitter/X | Social sentiment (requires auth) |
Output
📊 TOP TRENDING (by buzz):
1. BTC (6 pts) [CoinGecko, Google News] 📉 bearish (-2.5%)
2. ETH (5 pts) [CoinGecko, Twitter] 📉 bearish (-7.2%)
3. NVDA (3 pts) [Google News, Yahoo] 📰 Earnings beat...
🪙 CRYPTO HIGHLIGHTS:
🚀 RIVER River +14.0%
📉 BTC Bitcoin -2.5%
📈 STOCK MOVERS:
🟢 NVDA (gainers)
🔴 TSLA (losers)
📰 BREAKING NEWS:
[BTC, ETH] Crypto crash: $2.5B liquidated...
Twitter/X Setup (Optional)
- Install bird CLI:
npm install -g @steipete/bird - Login to x.com in Safari/Chrome
- Create
.envfile:
AUTH_TOKEN=your_auth_token
CT0=your_ct0_token
Get tokens from browser DevTools → Application → Cookies → x.com
Automation
Set up a daily cron job for morning reports:
# Run at 8 AM daily
0 8 * * * python3 /path/to/hot_scanner.py --no-social >> /var/log/hot_scanner.log
Risk Detection
- ⚠️ Pre-earnings warning (< 14 days)
- ⚠️ Post-earnings spike (> 15% in 5 days)
- ⚠️ Overbought (RSI > 70 + near 52w high)
- ⚠️ Risk-off mode (GLD/TLT/UUP rising)
- ⚠️ Geopolitical keywords (Taiwan, China, etc.)
- ⚠️ Breaking news alerts
Performance Options
| Flag | Speed | Description |
|---|---|---|
| (default) | 5-10s | Full analysis |
--no-insider |
3-5s | Skip SEC EDGAR |
--fast |
2-3s | Skip insider + news |
Data Sources
- Yahoo Finance — Prices, fundamentals, movers
- CoinGecko — Crypto trending, market data
- CNN Fear & Greed — Sentiment
- SEC EDGAR — Insider trading
- Google News RSS — Breaking news
- Twitter/X — Social sentiment (via bird CLI)
Storage
| Data | Location |
|---|---|
| Portfolios | ~/.clawdbot/skills/stock-analysis/portfolios.json |
| Watchlist | ~/.clawdbot/skills/stock-analysis/watchlist.json |
Testing
uv run pytest scripts/test_stock_analysis.py -v
Limitations
- Yahoo Finance may lag 15-20 minutes
- Short interest lags ~2 weeks (FINRA)
- US markets only
Disclaimer
⚠️ NOT FINANCIAL ADVICE. For informational purposes only. Consult a licensed financial advisor before making investment decisions.
安全审计
摘要
Analyze stocks and cryptocurrencies using Yahoo Finance data. Supports portfolio management, watchlists with alerts, dividend analysis, 8-dimension stock scoring, viral trend detection (Hot Scanner), and rumor/early signal detection. Use for stock analysis, portfolio tracking, earnings reactions, crypto monitoring, trending stocks, or finding rumors before they hit mainstream.
ToxicSkills 分析
Toxic 标签
当前静态检测未发现 Toxic 信号。
关键风险 0 项
确定性发现(证据)
| 规则 | 严重性 | 文件 | 片段 |
|---|---|---|---|
| NET_HTTP_REQUEST | 中 | skills/udiedrichsen/stock-analysis/scripts/hot_scanner.py 行 8 | import urllib.request |
| SENSITIVE_ENV | 中 | skills/udiedrichsen/stock-analysis/scripts/hot_scanner.py 行 30 | os.environ[key] = value |
| NET_HTTP_REQUEST | 中 | skills/udiedrichsen/stock-analysis/scripts/hot_scanner.py 行 60 | req = urllib.request.Request(url, headers=self.headers) |
| NET_HTTP_REQUEST | 中 | skills/udiedrichsen/stock-analysis/scripts/hot_scanner.py 行 61 | with urllib.request.urlopen(req, timeout=timeout, context=SSL_CONTEXT) as resp: |
| NET_HTTP_REQUEST | 中 | skills/udiedrichsen/stock-analysis/scripts/hot_scanner.py 行 288 | req = urllib.request.Request(url, headers=headers) |
| NET_HTTP_REQUEST | 中 | skills/udiedrichsen/stock-analysis/scripts/hot_scanner.py 行 290 | with urllib.request.urlopen(req, timeout=15, context=SSL_CONTEXT) as resp: |
| NET_HTTP_REQUEST | 中 | skills/udiedrichsen/stock-analysis/scripts/hot_scanner.py 行 328 | req = urllib.request.Request(url, headers=headers) |
| NET_HTTP_REQUEST | 中 | skills/udiedrichsen/stock-analysis/scripts/hot_scanner.py 行 330 | with urllib.request.urlopen(req, timeout=15, context=SSL_CONTEXT) as resp: |
| SENSITIVE_ENV | 中 | skills/udiedrichsen/stock-analysis/scripts/hot_scanner.py 行 387 | env = os.environ.copy() |
| PROC_EXEC | 高 | skills/udiedrichsen/stock-analysis/scripts/hot_scanner.py 行 388 | result = subprocess.run( |
| SENSITIVE_ENV | 中 | skills/udiedrichsen/stock-analysis/scripts/portfolio.py 行 45 | state_dir = os.environ.get("CLAWDBOT_STATE_DIR", os.path.expanduser("~/.clawdbot")) |
| NET_HTTP_REQUEST | 中 | skills/udiedrichsen/stock-analysis/scripts/rumor_scanner.py 行 21 | from urllib.request import urlopen, Request |
| SENSITIVE_ENV | 中 | skills/udiedrichsen/stock-analysis/scripts/rumor_scanner.py 行 38 | os.environ[key.strip()] = value.strip().strip('"').strip("'") |
| SENSITIVE_ENV | 中 | skills/udiedrichsen/stock-analysis/scripts/rumor_scanner.py 行 79 | env = os.environ.copy() |
| PROC_EXEC | 高 | skills/udiedrichsen/stock-analysis/scripts/rumor_scanner.py 行 81 | result = subprocess.run(cmd, capture_output=True, text=True, timeout=30, env=env) |
| SENSITIVE_ENV | 中 | skills/udiedrichsen/stock-analysis/scripts/rumor_scanner.py 行 132 | env = os.environ.copy() |
| PROC_EXEC | 高 | skills/udiedrichsen/stock-analysis/scripts/rumor_scanner.py 行 134 | result = subprocess.run(cmd, capture_output=True, text=True, timeout=30, env=env) |
| PROC_EXEC | 高 | skills/udiedrichsen/stock-analysis/scripts/watchlist.py 行 246 | result = subprocess.run( |
| QUALITY_README_PRESENT | 低 | README 行 无 | README detected |
评分标准
每个技能从 5 个维度评分,加权总分决定星级。
星级说明
为何是这个评分?
以下维度评分低于 60 分,拉低了整体评级:
- 代码毒性: 12/100
- 隐私风险: 0/100