Perform institutional-grade analysis of any US-listed stock using real-time and fundamental data from the Finskills API.
---
name: US Stock Analyzer
version: 1.0.0
description: "Perform institutional-grade analysis of any US-listed stock using real-time and fundamental data from the Finskills API."
author: finskills
homepage: https://github.com/finskills/us-stock-analyzer
credentials:
- name: FINSKILLS_API_KEY
description: "Finskills API key — register for free at https://finskills.net (Pro plan unlocks historical data, financials, and batch quotes)"
required: true
link: https://finskills.net
---
# US Stock Analyzer
Perform institutional-grade analysis of any US-listed stock using real-time and
fundamental data from the Finskills API. Delivers a structured investment report
covering business quality, financial health, valuation, analyst consensus, and
key risks — all in a single conversation turn.
---
## Setup
**API Key required** — [Register at https://finskills.net](https://finskills.net) to get your free key (Pro plan for full functionality).
Set your key as: `FINSKILLS_API_KEY=your_key_here`
All requests use header: `X-API-Key: <your_api_key>`
---
## When to Activate This Skill
Activate when the user:
- Asks to "analyze", "research", "evaluate", or "deep dive" into a specific stock
- Provides a ticker symbol and asks for an investment opinion
- Requests a buy/sell/hold assessment on a US equity
- Asks for fundamental analysis, valuation, or earnings quality review
---
## Required Information
Before starting, resolve:
1. **Ticker symbol** — e.g., `AAPL`, `NVDA`, `MSFT`. Ask if not provided.
2. **Analysis depth** — Quick (Level 1), Standard (Level 2, default), or Deep (Level 3).
3. **Investment horizon** — Short-term (< 3 months), medium (3–12 months), long-term (> 12 months). Default: long-term.
---
## Data Retrieval — Finskills API Calls
Make the following API calls in parallel (all require `X-API-Key` header):
### 1. Real-Time Quote
```
GET https://finskills.net/v1/stocks/quote/{SYMBOL}
```
Extract: `price`, `change`, `changePercent`, `volume`, `marketCap`, `week52High`, `week52Low`, `avgVolume`
### 2. Company Profile
```
GET https://finskills.net/v1/stocks/profile/{SYMBOL}
```
Extract: `name`, `sector`, `industry`, `description`, `employees`, `website`, `country`, `exchange`
### 3. Financial Statements (3–5 years)
```
GET https://finskills.net/v1/stocks/financials/{SYMBOL}
```
Extract from income statement: `revenue`, `grossProfit`, `operatingIncome`, `netIncome`, `eps`
Extract from balance sheet: `totalDebt`, `cashAndEquivalents`, `totalAssets`, `totalEquity`
Extract from cash flow: `operatingCashFlow`, `freeCashFlow`, `capitalExpenditures`
### 4. Analyst Recommendations
```
GET https://finskills.net/v1/stocks/recommendations/{SYMBOL}
```
Extract: `strongBuy`, `buy`, `hold`, `sell`, `strongSell` counts; consensus rating; mean target price; price target range
### 5. Earnings History & Estimates
```
GET https://finskills.net/v1/stocks/earnings/{SYMBOL}
```
Extract: last 4 quarters of EPS (actual vs estimate, beat/miss); next quarter EPS estimate; revenue estimates
### 6. Institutional Holders (optional, Level 2+)
```
GET https://finskills.net/v1/stocks/holders/{SYMBOL}
```
Extract: top 5 holders, total institutional ownership %, recent changes (bought/sold)
---
## Analysis Workflow
### Step 1 — Data Validation
Confirm all API calls returned `success: true`. Note which data provider served
each call (`source` field). Flag any stale data (cached > 24h for quotes).
### Step 2 — Business Quality Assessment
Score each dimension 1–5:
| Dimension | Signals to Look For |
|-----------|-------------------|
| **Competitive Moat** | Market leadership, pricing power, switching costs, network effects |
| **Management Quality** | Capital allocation history, FCF conversion, debt management |
| **Revenue Quality** | Recurring/subscription vs one-time, customer concentration |
| **Growth Trajectory** | YoY revenue growth trend (accelerating/decelerating/stable) |
Calculate a composite Business Quality Score (BQS) = average of the four dimensions.
### Step 3 — Financial Health Scorecard
Compute and interpret:
| Metric | Formula | Benchmark |
|--------|---------|-----------|
| Gross Margin | grossProfit / revenue | Industry-specific |
| Operating Margin | operatingIncome / revenue | > 15% healthy |
| FCF Margin | freeCashFlow / revenue | > 10% excellent |
| Net Debt / EBITDA | (totalDebt − cash) / EBITDA | < 2x conservative |
| ROE | netIncome / totalEquity | > 15% strong |
| FCF Yield | freeCashFlow / marketCap | > 4% attractive |
| Current Ratio | currentAssets / currentLiabilities | > 1.5 healthy |
Flag any metric outside healthy range with a ⚠️ symbol.
### Step 4 — Valuation Analysis
Calculate:
| Ratio | Formula | Context |
|-------|---------|---------|
| P/E (TTM) | price / EPS_TTM | vs sector average |
| Forward P/E | price / EPS_NextYear_estimate | vs 5-yr historical avg |
| EV/EBITDA | (marketCap + netDebt) / EBITDA | < 15x value zone |
| P/FCF | marketCap / freeCashFlow | vs growth peers |
| PEG Ratio | P/E / EPS_3yr_growth | < 1.0 undervalued |
Classify valuation as: **Deep Value** / **Fair Value** / **Premium** / **Stretched**
Provide a range-based fair value estimate using at least two methods (DCF implied
from FCF yield, and P/E reversion to sector mean).
### Step 5 — Earnings Quality & Analyst Coverage
Analyze earnings history (last 4 quarters):
- Beat rate: percentage of quarters beating EPS estimates
- Average surprise magnitude (positive/negative)
- Revenue trend vs EPS trend (divergence signals accounting risk)
Analyst consensus summary:
- Consensus rating label (Strong Buy / Buy / Hold / Underperform / Sell)
- Mean price target vs current price (implied upside/downside %)
- Breadth: number of analysts covering the stock
- Target price range (bull case vs bear case)
### Step 6 — Risk Identification
Systematically identify:
- **Balance sheet risk**: leverage, debt maturity, liquidity
- **Earnings risk**: customer concentration, cyclicality, margin pressure trends
- **Macro risk**: interest rate sensitivity, FX exposure, commodity input costs
- **Regulatory/ESG risk**: industry-specific regulatory environment
- **Valuation risk**: how much multiple compression would hurt total return
### Step 7 — Investment Verdict
Based on all data, output:
- **Rating**: STRONG BUY / BUY / HOLD / AVOID / SELL
- **12-Month Price Target**: derived from valuation analysis (base case)
- **Bull Case / Bear Case**: target under favorable / adverse scenario
- **Confidence Level**: HIGH / MEDIUM / LOW (based on data completeness and
earnings predictability)
---
## Output Format
```
═══════════════════════════════════════════════════
US STOCK ANALYSIS REPORT — {TICKER} ({DATE})
═══════════════════════════════════════════════════
📌 COMPANY SNAPSHOT
{Company Name} | {Sector} | {Industry}
Price: ${price} Change: {change}% Market Cap: ${marketCap}
52-Week Range: ${week52Low} — ${week52High}
📊 BUSINESS QUALITY SCORE: {BQS}/5
◦ Competitive Moat: {score}/5 — {brief rationale}
◦ Management Quality: {score}/5 — {brief rationale}
◦ Revenue Quality: {score}/5 — {brief rationale}
◦ Growth Trajectory: {score}/5 — {brief rationale}
💰 FINANCIAL HEALTH
Revenue Growth (YoY): {%} | Gross Margin: {%} | Operating Margin: {%}
FCF Margin: {%} | Net Debt/EBITDA: {x} | ROE: {%}
[⚠️ Flag any concerns]
📐 VALUATION
TTM P/E: {x} | Forward P/E: {x} | EV/EBITDA: {x}
P/FCF: {x} | PEG: {x}
Assessment: {Deep Value / Fair Value / Premium / Stretched}
Fair Value Range: ${low} — ${high}
📈 ANALYST CONSENSUS
Rating: {consensus} | Mean Target: ${target} ({upside}% upside)
Distribution: {strongBuy}SB / {buy}B / {hold}H / {sell}S / {strongSell}SS
Analysts: {count} | Target Range: ${low} — ${high}
📋 EARNINGS QUALITY
Beat Rate: {%} ({n}/{total} quarters) | Avg Surprise: {+/-}%
Next Quarter EPS Estimate: ${estimate}
⚠️ KEY RISKS
1. {Risk 1}
2. {Risk 2}
3. {Risk 3}
🎯 INVESTMENT VERDICT
Rating: {STRONG BUY / BUY / HOLD / AVOID / SELL}
12M Target: ${target} (Base: ${base} | Bull: ${bull} | Bear: ${bear})
Confidence: {HIGH / MEDIUM / LOW}
Horizon: {investment horizon}
Thesis Summary: {2–3 sentence bull case}
Key Risks: {1–2 sentence risk summary}
═══════════════════════════════════════════════════
```
---
## Formatting Rules
- Always show data source (`source` field from API response) in a footnote.
- If an API call fails, note "Data unavailable" for that section — do not omit
the section header.
- Round monetary values to 2 decimal places; percentages to 1 decimal place.
- Do not provide financial advice. Frame all outputs as analytical research.
---
## Limitations
- Financial statements may lag by 1 quarter (SEC filing cadence).
- Analyst targets represent consensus forecasts, not guarantees.
- This skill does not execute trades or interact with brokerage accounts.
don't have the plugin yet? install it then click "run inline in claude" again.
analyze any us-listed stock end-to-end using finskills api data (real-time quotes, fundamentals, analyst consensus, earnings history). delivers a structured investment report covering business quality, financial health, valuation, analyst sentiment, and key risks in a single turn. use this when a user asks to "analyze", "research", "evaluate", or "deep dive" a specific ticker, requests a buy/sell/hold verdict, or wants fundamental analysis.
external connection: finskills api
X-API-Key header with value from FINSKILLS_API_KEY env varX-RateLimit-Remaining and X-RateLimit-Reset. free tier allows 100 requests/day. pro tier 10,000/dayuser inputs (required before starting):
context required:
input: ticker symbol, analysis depth, investment horizon
process:
output: ticker (normalized), analysis_depth, investment_horizon, api_key_status (confirmed or error)
input: ticker symbol, finskills api key
api call:
GET https://finskills.net/v1/stocks/quote/{TICKER}
X-API-Key: {FINSKILLS_API_KEY}
extract fields:
output: quote_data (dict), data_age (seconds since last update), source_timestamp
input: ticker symbol, finskills api key
api call:
GET https://finskills.net/v1/stocks/profile/{TICKER}
X-API-Key: {FINSKILLS_API_KEY}
extract fields:
output: profile_data (dict), data_age (seconds since last update)
input: ticker symbol, finskills api key, analysis depth
api call:
GET https://finskills.net/v1/stocks/financials/{TICKER}?periods=5
X-API-Key: {FINSKILLS_API_KEY}
extract fields (most recent period and ttm where applicable):
from income statement: revenue, grossProfit, operatingIncome, netIncome, eps, interestExpense
from balance sheet: totalDebt, cashAndEquivalents, currentAssets, currentLiabilities, totalAssets, totalEquity, inventory, accounts_receivable
from cash flow: operatingCashFlow, freeCashFlow (= operatingCashFlow - capitalExpenditures), capitalExpenditures
output: financials_data (dict with 5-year history), most_recent_period, data_age
input: ticker symbol, finskills api key, analysis depth
api call:
GET https://finskills.net/v1/stocks/recommendations/{TICKER}
X-API-Key: {FINSKILLS_API_KEY}
extract fields:
output: recommendations_data (dict), analyst_count, consensus_label
input: ticker symbol, finskills api key, analysis depth
api call:
GET https://finskills.net/v1/stocks/earnings/{TICKER}
X-API-Key: {FINSKILLS_API_KEY}
extract fields:
output: earnings_data (dict), beat_rate (%), average_surprise (%), beat_count
input: ticker symbol, finskills api key
api call:
GET https://finskills.net/v1/stocks/holders/{TICKER}
X-API-Key: {FINSKILLS_API_KEY}
extract fields:
output: holders_data (dict or null)
input: profile_data, financials_data, earnings_data
process:
score each dimension 1-5 (1 = weak, 5 = excellent):
competitive moat: look for market leadership, pricing power, switching costs, network effects, brand strength. sources: industry description, revenue stability, margin trends
management quality: look for capital allocation discipline, fcf conversion, debt management, eps growth vs revenue growth disconnect
revenue quality: recurring/subscription (high quality) vs one-time (low quality), customer concentration risk
growth trajectory: yoy revenue growth trend over 3 years (accelerating, stable, or decelerating)
calculation: bqs = (moat + management + revenue_quality + growth) / 4, rounded to 1 decimal
output: bqs (float, 1.0-5.0), component_scores (dict), rationale_per_dimension (string)
input: financials_data (most recent period and prior year)
process:
calculate each metric. flag with ⚠️ if outside healthy benchmark:
| metric | formula | benchmark | flag if |
|---|---|---|---|
| gross margin | (grossProfit / revenue) * 100 | industry avg (typically 35-50%) | below 20% or declining 5+ pts yoy |
| operating margin | (operatingIncome / revenue) * 100 | > 15% | below 5% or negative |
| fcf margin | (freeCashFlow / revenue) * 100 | > 10% excellent | below 2% |
| net debt / ebitda | (totalDebt - cashAndEquivalents) / ebitda | < 2.0x | > 3.0x |
| roe | (netIncome / totalEquity) * 100 | > 15% | < 5% or negative |
| fcf yield | (freeCashFlow / marketCap) * 100 | > 4% attractive | < 1% or negative |
| current ratio | currentAssets / currentLiabilities | > 1.5 | < 1.0 (potential solvency risk) |
| interest coverage | operatingIncome / interestExpense | > 3.0x | < 1.5x (debt service stress) |
output: metrics_dict (all calculations), flags_list (array of ⚠️ items)
input: quote_data, financials_data, earnings_data, analyst data
process:
calculate trailing multiples:
valuation assessment: synthesize multiples into one label: deep value / fair value / premium / stretched
fair value estimate (two methods):
method 1 (fcf yield): assume fcf yield should be 4-6% for quality business. fair_value_fcf = freeCashFlow / 0.05 (using 5% midpoint). range: 0.04 (bull) to 0.06 (bear)
method 2 (p/e reversion): if stock p/e is above sector median, estimate fair value as: fair_value_pe = sector_median_pe * eps_ttm. if sector data unavailable, use stock's 5-year avg p/e
output: fair_value_low (lower of two methods), fair_value_high (higher of two methods), valuation_label, multiples_dict
input: earnings_data, recommendations_data
process:
earnings quality:
analyst consensus:
output: beat_rate (%), avg_surprise (%), divergence_flag (bool), consensus_label (string), upside_pct (float), analyst_breadth (int), target_spread (%)
input: profile_data, financials_data, earnings_data, recommendations_data, valuation_analysis
process:
systematically scan for risk categories. output 3-5 risks ranked by severity:
balance sheet risk:
earnings risk:
macro risk:
regulatory/esg risk:
valuation risk:
output: risks_list (array of strings, each with 1 sentence), severity_rank (high/medium/low per risk)
input: bqs, financial_health_flags, valuation_analysis, analyst_consensus, earnings_quality, risks_list, investment_horizon
process:
rating logic (decision tree in step 14 below):
synthesize all factors into one of five ratings: strong buy / buy / hold / avoid / sell
12-month price target (base case):
derive from valuation_analysis. use midpoint of fair_value_range, adjusted for analyst mean target if analyst coverage is moderate or high (> 5 analysts). base_target = (valuation_fair_value_mid + analyst_mean_target) / 2 if analyst coverage > 5, else use valuation_fair_value_mid
bull case (upside scenario): assume best-case growth, margin expansion, and multiple re-rating. bull_target = fair_value_high * 1.15, capped at analyst target_high if available
**