skills/market-sentiment-analyzer/SKILL.md
Provides market sentiment composite score (0-100) combining VIX, SPY RSI, Put/Call ratio, and CNN Fear & Greed index. Use when user asks about market sentiment, fear and greed, VIX level, or needs a sentiment-based fallback for investment/sector protocols. Minimal local implementation — replaces web search for F&G.
npx skillsauth add kavi-lin/stock market-sentiment-analyzerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Replaces "Web search: CNN Fear Greed Index today" used by older protocols. Returns a composite sentiment score (0-100) from multiple technical sentiment inputs, so the investment and sector protocols can consume one stable JSON structure.
python3 skills/market-sentiment-analyzer/scripts/sentiment.py # uses 15-min cache if fresh
python3 skills/market-sentiment-analyzer/scripts/sentiment.py --json-only
python3 skills/market-sentiment-analyzer/scripts/sentiment.py --no-cache # force fresh compute
python3 skills/market-sentiment-analyzer/scripts/sentiment.py --max-age 300 # custom TTL seconds
No API key required. Uses yfinance (VIX, SPY, SPY puts/calls proxy) and
requests to fetch CNN Fear & Greed from the public alternative.me endpoint
(crypto F&G as proxy) AND attempts the CNN backend JSON endpoint.
Market sentiment is ticker-agnostic — when the investment protocol analyses
several different tickers in one session, every Sentiment subagent would
otherwise call this script fresh. Results are cached to
skills/market-sentiment-analyzer/cache/sentiment_latest.json with a default
TTL of 900 seconds (15 min). Within that window the full JSON (including
cache_hit: true and cache_age_sec) is returned immediately — no network
calls, no yfinance download. Override with --no-cache for truly-live values.
{
"generated_at": "ISO8601",
"composite_score": "float 0-100 (0=extreme fear, 100=extreme greed)",
"label": "Extreme Fear | Fear | Neutral | Greed | Extreme Greed",
"vix": {
"current": "float",
"percentile_1y": "float 0-100",
"regime": "LOW | NORMAL | ELEVATED | CRISIS"
},
"spy_momentum": {
"rsi_14": "float",
"pct_above_ma50": "float",
"pct_above_ma200": "float"
},
"put_call_ratio": "float (null if fetch failed)",
"fear_greed_index": "float 0-100 (null if fetch failed — fall back to composite)",
"components_used": ["vix", "spy_rsi", "pct_above_ma", "pcr", "fg"],
"extreme_sentiment_triggered": "true | false (composite > 80 or < 20)",
"cache_hit": "true | false (added by cache layer)",
"cache_age_sec": "int — seconds since cache was written (0 on fresh compute)"
}
Equal-weight average of available normalized components. Each component maps to 0-100:
Missing components are dropped from the average (not imputed).
composite_score > 80 → Greed extreme → sector/investment protocols add extreme_sentiment risk flag
composite_score < 20 → Fear extreme → contrarian long opportunities flagged
development
# earnings-analyst — 個股財報深度分析 > **Trigger**: `財報 [TICKER]` > **Version**: V1.0 > **Data Source**: FMP HTTP REST(`$FMP_API_KEY`) ## 目的 針對單一個股產出**深度財報分析報告**(逐季趨勢、品質指標、估值、分析師共識),涵蓋 sector V1.4 與 `分析 [TICKER]` 既有 protocol **沒有**的「財報層級」深潛內容。 ## 與既有 skill 的差異 | Skill | 重點 | 觸發 | |---|---|---| | `us-stock-analysis` | 估值/技術/情緒 snapshot(yfinance + FMP partial) | Phase 2 fundamentals lane | | `earnings-valuation-forecaster` | 12M 目標價 3×3 敏感度 | ad-hoc / earnings 前 14 天 | | `earnings-trade-analyzer` |
testing
Daily Top N hot themes × Top M short-term movers per theme. Combines theme-detector heat scoring (medium-term) with short-term-target predictions (1d/5d/15d) into a "Tactical Opportunity Radar" recommendation log. Tags concentration WARNING when ≥2 picks share theme. Records FRED + market regime snapshot at recommendation time for future backtest cross-tabs. Standalone — not auto-wired into investment_protocol. Use for daily watchlist refresh / Dashboard推薦面板feed / batch screening across hot themes.
testing
Short-term (1d / 5d / 15d) directional projection for a US stock — "Tactical Opportunity Radar". Outputs target range + confidence breakdown + benchmark-relative alpha + trading meta (stop / position size hint / exit trigger). Each horizon uses independent weights from config/weights.yaml. Refuses to project when source data is stale (returns insufficient_data with reasons). Hard-clamped to prevent cold-start absurd predictions. Use when caller wants short-term directional bias on a specific ticker, NOT for long-term valuation (use earnings-valuation-forecaster for 12-month). Standalone — not auto-wired into investment_protocol.
tools
Shared Finnhub API client used by other skills. Provides rate-limited (60/min), cached, retry-aware access to 17 Finnhub endpoints covering quotes, OHLCV, fundamentals, earnings calendar, earnings surprises, insider transactions, recommendation history, price targets, upgrades/downgrades, dividends, splits, IPOs, and SEC filings. Also exports adapters that normalize Finnhub raw responses into FMP-compatible shapes so that downstream code can swap providers without changing call sites. Use when another skill needs Finnhub data or when building a unified provider layer.