stock-evaluatorComprehensive evaluation of potential stock investments combining valuation analysis, fundamental research, technical assessment, and clear buy/hold/sell recommendations. Use when the user asks about buying a stock, evaluating investment opportunities, analyzing watchlist candidates, or requests stock recommendations. Provides specific entry prices, position sizing, and conviction ratings.
Install via ClawdBot CLI:
clawdbot install Demandgap/stock-evaluatorEvery analysis MUST include ALL of these:
If you cannot complete any item, STOP and ask for clarification.
NEVER fabricate, estimate, or hallucinate ANY numeric data point. Every metric in the dashboard MUST come from:
If data cannot be found โ Use "N/A" or "--"
You MUST perform these searches before populating the dashboard:
| Search # | Query Template | Data Retrieved |
|----------|---------------|----------------|
| 1 | "[TICKER] stock price market cap P/E ratio" | Price, Market Cap, P/E |
| 2 | "[TICKER] ROE ROA profit margin 2024 annual report" | Financial ratios |
| 3 | "[TICKER] revenue growth earnings growth FY2024" | Growth rates (REPORTED) |
| 4 | "[TICKER] Piotroski F-Score" | F-Score (or calculate) |
| 5 | "[TICKER] insider trading SEC Form 4 2025" | Insider buys/sells |
| 6 | "[TICKER] short interest percentage float" | Short interest |
| 7 | "[TICKER] RSI MACD 50-day 200-day moving average beta volatility" | Technical indicators |
| 8 | "[TICKER] analyst price target consensus" | Analyst targets |
Use sources in this priority order:
| Situation | Action | Display |
|-----------|--------|---------|
| Metric not found after searching | Display "N/A" | value: "N/A" |
| Data is outdated (>1 year old) | Note the date | value: "15.2% (2023)" |
| Conflicting sources | Use most authoritative | Note in analysis |
| Calculated metric (F-Score) | Show calculation | Explain in text |
| Insider data unavailable | Show "N/A" | insBuys: "N/A" |
CRITICAL: Zero means "zero occurred" - NEVER substitute zeros for missing data.
Use these EXACT labels in the dashboard (matches reference screenshots):
| Label | Notes |
|-------|-------|
| Price: | $XX.XX or โฌXX.XX |
| Market Cap: | $XXB or โฌXXB |
| Trailing P/E: | XX.XX |
| Forward P/E: | XX.XX |
| Subsector P/E: | XX.XX or N/A |
| PEG (1Y): | X.XX with benchmark (<1) |
| ROE: | XX.XX% with benchmark (>20%) |
| ROA: | XX.XX% with benchmark (>10%) |
| Profit Margin: | XX.XX% with benchmark (>20%) |
| Operative Margin: | XX.XX% with benchmark (>20%) - NOTE: "Operative" not "Operating" |
| Gross Margin: | XX.XX% with benchmark (>40%) |
| ROIC: | XX.X% with benchmark (>15%) |
| Label | Notes |
|-------|-------|
| Revenue (YoY): | XX.XX% with benchmark (>10%) - REPORTED only |
| Earning (YoY): | XX.XX% with benchmark (>0%) - REPORTED only |
| EPS (TTM): | $X.XX |
| Forward EPS: | $X.XX |
| Growth Rates: | Capped: X.X% / Uncapped: X.X% |
| Analyst Target: | $XX.XX |
| CRS (0-1): | X.XX with benchmark (Medium) |
| Debt/Equity (mrq): | X.XX with benchmark (0.5-1) |
| Piotroski F: | X with benchmark (โฅ7) |
| Altman Z: | X.XX with benchmark (>3) |
| Beneish M: | X.XX with benchmark (<-1.78) |
| Value Trap: | XX (Label) |
| Label | Notes |
|-------|-------|
| Current Ratio: | X.XX with benchmark (1-2) |
| Cash: | $X.XB |
| Debt: | $X.XB or N/A |
| FCF Growth 5Y: | XX.X% with benchmark (>5%) |
| FCF Yield: | X.XX% with benchmark (>4%) |
| FCF Margin: | XX.XX% with benchmark (>15%) |
| Payout Ratio: | XX.XX% with benchmark (<50%) |
| Buys (12M): | X - from SEC Form 4 or N/A |
| Sells (12M): | X - from SEC Form 4 or N/A |
| Net Shares (12M): | +/-XXK - from SEC Form 4 or N/A |
| Short Int (%): | X.X% |
| Sentiment / Articles: | +X.XXX / XX (Positive/Negative) |
| Stock: [Type] + Div Yield: | Combined: "Stock: Growth" + "Div Yield: X.XX%" |
| Sector/Industry: | Combined: "Sector / Industry" |
| Label | Notes |
|-------|-------|
| CQVS: | XX.XX with benchmark range |
| Label: | Strong/Moderate/Weak |
| Valuation: | XX.XX |
| Quality: | XX.XX |
| Strength: | XX.XX |
| Integrity: | XX.XX |
| Buffett Moat: | X with benchmark (4-7) |
| Greenblatt (MF): | EY: X.X% / ROC: X.X% or N/A |
| Beta: + Vol 1Y: | Combined: "Beta: X.XX" + "Vol 1Y: XX.X%" |
| Earnings Predict.: | XX.X% with benchmark (>80%) |
| Drawdown (5Y): | -XX.X% with label (Low/Mid/High) |
| Completeness: + Data Quality: | Combined: "XX.X%" + "High/Medium/Low" |
Use these EXACT thresholds for color coding:
| Metric | Green (Good) | Yellow (Neutral) | Red (Warning) |
|--------|--------------|------------------|---------------|
| ROE | >20% | 10-20% | <10% |
| ROA | >10% | 5-10% | <5% |
| Profit Margin | >20% | 10-20% | <10% |
| Operative Margin | >20% | 10-20% | <10% |
| Gross Margin | >40% | 25-40% | <25% |
| ROIC | >15% | 8-15% | <8% |
| Debt/Equity | <1 | 1-2 | >2 |
| Current Ratio | 1-2 | 0.5-1 or 2-3 | <0.5 or >3 |
| Piotroski F | โฅ7 | 4-6 | โค3 |
| Altman Z | >2.99 | 1.81-2.99 | <1.81 |
| Beneish M | <-2.22 | -2.22 to -1.78 | >-1.78 |
| PEG (1Y) | <1 | 1-2 | >2 |
| RSI (14) | 30-50 | 50-70 | >70 or <30 |
| Short Interest | <5% | 5-10% | >10% |
| FCF Yield | >5% | 2-5% | <2% |
| FCF Margin | >15% | 10-15% | <10% |
| Dividend Yield | >2% | 1-2% | <1% or >8% |
| Value Trap | 0-39 | 40-59 | 60-100 |
| Max Drawdown | >-30% | -30% to -50% | <-50% |
| Revenue Growth | >10% | 0-10% | <0% |
| Earnings Growth | >0% | -10% to 0% | <-10% |
This skill provides institutional-grade evaluation of potential stock investments. Unlike portfolio analysis which reviews existing positions, this skill evaluates stocks you're considering buying or deciding whether to purchase.
The evaluation answers:
All monetary values in the dashboard should be displayed in Euro (โฌ) as the default currency:
For the dashboard metrics "Rev Growth" and "Earn Growth":
Stock Evaluator is for:
NOT for:
1. Valuation Assessment
2. Quality Analysis
3. Timing Assessment
4. Position Sizing
5. Conviction Rating
A Value Trap is when a stock appears undervalued (low P/E, low P/B) but is actually cheap for valid fundamental reasons. The stock keeps declining despite appearing "cheap."
Components to evaluate (ADD points for trap indicators):
1. Price Momentum (25 points max)
2. Earnings Quality (25 points max)
3. Balance Sheet Health (25 points max)
4. Valuation Context (25 points max)
Value Trap Score = Momentum Penalty + Quality Penalty + Balance Sheet Penalty + Valuation Penalty
(Score ranges from 0 to 100, where 0 = definitely genuine value, 100 = definite value trap)
Value Trap: 21 (Genuine)
Color coding: green <40, yellow 40-60, red >60
Score each stock against 8 famous investor philosophies (0-10 scale). This helps users understand what type of investor the stock suits.
Based on "The Warren Buffett Way" - seeks durable competitive advantages
Key metrics weighted:
Buffett likes: Predictable businesses, pricing power, low capex needs, consistent profitability
Based on "Poor Charlie's Almanack" - mental latticework, inversion thinking
Focus on: What could go WRONG (inversion principle)
Scoring: Start at 10, subtract penalties:
Based on "Principles" - All-Weather portfolio, economic machine understanding
Key metrics:
Dalio likes: Deleveraging plays, operational efficiency, cycle resilience
Based on "One Up on Wall Street" - GARP (Growth at Reasonable Price)
Primary metric: PEG Ratio (P/E รท Growth Rate)
Adjustment factors:
Based on "The Intelligent Investor" - Margin of Safety
Graham criteria (2 points each, max 10):
Based on "The Little Book That Beats the Market" - Magic Formula
Combines two rankings:
Scoring: Combined rank in top 10% = 10 points, scaled down
Based on contrarian, global value investing
Key factors:
Based on "The Alchemy of Finance" - Reflexivity
Key factors:
Soros likes: Macro plays, reflexive situations, trend participation
Show 8 badges around radar chart with scores and color coding:
Components to Calculate:
Cloud (Kumo): Area between Senkou Span A and B
Signals to Identify and Display:
What to Analyze:
Management Evaluation:
Competitive Position:
Research Process Order:
Key Metrics to Analyze:
Quality Benchmarks:
Trends to Assess:
Red Flags:
Moat Strength: Wide / Narrow / None
Evaluate Sources:
Moat Durability:
Peer Comparison:
Compare this company's moat vs. 3-5 direct competitors:
Beyond basic quality metrics, calculate these advanced scores for deeper insight:
Piotroski F-Score (Financial Strength)
Purpose: 9-point score measuring financial strength across profitability, leverage, and operating efficiency.
Scoring (0-9, higher is better):
Profitability (4 points):
Leverage/Liquidity (3 points):
Operating Efficiency (2 points):
Interpretation:
Altman Z-Score (Bankruptcy Risk)
Purpose: Predicts probability of bankruptcy within 2 years.
Formula (for public manufacturing companies):
Z = 1.2(A) + 1.4(B) + 3.3(C) + 0.6(D) + 1.0(E)
Where:
Interpretation:
Note: Adjust for non-manufacturing companies (different coefficients).
Beneish M-Score (Earnings Manipulation Detection)
Purpose: Identifies likelihood of earnings manipulation.
Key Indicators (simplified approach):
Interpretation:
Practical Check (if full M-Score unavailable):
Max Drawdown (5-Year)
Purpose: Measures largest peak-to-trough price decline.
Calculation:
Interpretation:
Consolidated Scores
Strength Score (0-100):
Composite of:
Integrity Score (0-100):
Composite of:
Predictability Score (0-100):
Composite of:
Data Quality Score (0-100):
Company-Specific Risks:
Industry Risks:
Macro Risks:
Overall Risk Level: Low / Moderate / High
Consolidated Risk Score: (0-1 scale, lower is better)
Use multiple valuation methods - synthesize into fair value estimate.
1. DCF Analysis (Discounted Cash Flow)
2. Relative Valuation
3. Peter Lynch Fair Value
4. Asset-Based (When Applicable)
Fair Value Estimate: โฌX.XX
Weight each method appropriately:
Margin of Safety:
Valuation Conclusion:
Focus on identifying optimal entry points, not full technical analysis.
1. Price Action (Last 30-60 Days)
2. Key Levels
3. Technical Indicators
4. Entry Assessment
MANDATORY: Every analysis must present both sides fairly.
Potential Upside: +X% to โฌX.XX
For this to play out:
Potential Downside: -X% to โฌX.XX
This happens if:
Which case is more probable: [Bull / Bear / Balanced]
[Explanation of why one case is more likely, considering:
Allocation recommendation based on:
Conviction + Risk = Position Size
Strong Buy (High Conviction, Low Risk):
Buy (Moderate Conviction, Moderate Risk):
Speculative/High Risk:
Considerations:
NO scale-in strategies - recommend single entry approach:
If BUY:
Price Target (12-month): โฌX.XX (+X% upside)
Stop Loss: โฌX.XX (-X% maximum loss)
Sell If (Thesis-Breaking Conditions):
Hold Duration:
Identify specific events that could drive stock performance.
Near-Term (0-6 months):
Medium-Term (6-18 months):
Long-Term (18+ months):
Critical Principles:
# [SYMBOL] - [Company Name] Evaluation
## โ ๏ธ DELIVERABLES CHECKLIST โ
โ Technical Analysis Complete
โ Fundamental Analysis Complete
โ Valuation Assessment Complete
โ Bull vs. Bear Case Complete
โ Clear Recommendation: **[BUY / HOLD / SELL]**
โ Alternative Candidates: [If SELL, list 3-5 alternatives below]
---
## ๐ Executive Summary
[2-3 sentence bottom-line assessment with key reasoning]
**Recommendation: [BUY / HOLD / SELL]**
**Conviction: [Strong Buy / Buy / Hold / Avoid]**
---
## ๐ฐ Valuation Assessment
**Fair Value Estimate: โฌX.XX** (Current: โฌX.XX)
- **Margin of Safety: X%** [Adequate >15% / Insufficient <15%]
- **Valuation: [UNDERVALUED / FAIRLY VALUED / OVERVALUED]**
| Valuation Method | Fair Value | vs. Current | Weight |
|-----------------|-----------|-------------|--------|
| DCF Analysis | โฌX.XX | +X% | 40% |
| Peer Relative | โฌX.XX | +X% | 30% |
| Peter Lynch | โฌX.XX | +X% | 30% |
| **Weighted Average** | **โฌX.XX** | **+X%** | **100%** |
**Assumptions:**
- DCF: [Key assumptions - growth rate, margins, discount rate]
- Margin of safety applied: X%
---
## ๐ข Business & Competitive Analysis
### What They Do
[2-3 paragraph business model summary:
- Core products/services
- Revenue breakdown
- Target markets
- Business model]
### Competitive Advantages
**Moat Strength: [Wide / Narrow / None]**
1. **[Advantage 1]**: [Detailed explanation with evidence]
2. **[Advantage 2]**: [Detailed explanation with evidence]
3. **[Advantage 3]**: [Detailed explanation with evidence]
**Moat Durability:** [How sustainable are these advantages? 3-5 years? 10+ years?]
### Management Quality Assessment
**Overall Rating: [Excellent / Good / Adequate / Concerning]**
- **CEO**: [Name] - [Background, tenure]
- Track record: [Achievements/concerns]
- Capital allocation: [Shareholder-friendly? Smart acquisitions?]
- **CFO**: [Name] - [Financial stewardship]
- **Insider Trading**: [Recent buying/selling activity]
- **Key Insight**: [Overall management assessment]
### Competitive Position
**Market Position:**
- Market share: X% (#X in industry)
- Share trend: [Gaining / Stable / Losing]
**Key Competitors:** [List 3-5 direct peers]
**Peer Comparison:**
| Company | Mkt Cap | Revenue Growth | Profit Margin | ROE | P/E | Moat |
|---------|---------|---------------|---------------|-----|-----|------|
| [Target] | โฌXB | X% | X% | X% | X.X | [Rating] |
| [Peer 1] | โฌXB | X% | X% | X% | X.X | [Rating] |
| [Peer 2] | โฌXB | X% | X% | X.X | X.X | [Rating] |
| [Peer 3] | โฌXB | X% | X% | X% | X.X | [Rating] |
**Competitive Assessment:** [Is this the best company in the sector?]
---
## ๐ Financial Health Analysis
### Quality Metrics vs. Benchmarks
| Metric | Current | 1Y Ago | 3Y Ago | 5Y Ago | Target | Status |
|--------|---------|--------|--------|--------|--------|--------|
| ROE | X% | X% | X% | X% | >15% | [โ/โ] |
| Profit Margin | X% | X% | X% | X% | >15% | [โ/โ] |
| Gross Margin | X% | X% | X% | X% | >30% | [โ/โ] |
| Revenue Growth | X% | X% | X% | X% | >0% | [โ/โ] |
| Debt/Revenue | X.X | X.X | X.X | X.X | <1.0 | [โ/โ] |
| FCF | โฌXM | โฌXM | โฌXM | โฌXM | Positive | [โ/โ] |
### Advanced Financial Health Scores
**Piotroski F-Score: X/9** [Excellent 8-9 / Good 6-7 / Adequate 4-5 / Weak 0-3]
*Profitability:* X/4
- ROA positive: [โ/โ]
- Operating CF positive: [โ/โ]
- ROA improving: [โ/โ]
- CF > Net Income: [โ/โ]
*Leverage:* X/3
- Debt decreasing: [โ/โ]
- Current ratio improving: [โ/โ]
- No dilution: [โ/โ]
*Efficiency:* X/2
- Margin improving: [โ/โ]
- Turnover improving: [โ/โ]
**Assessment:** [Detailed interpretation of F-Score]
**Altman Z-Score: X.XX** [Safe >2.99 / Grey 1.81-2.99 / Distress <1.81]
- **Bankruptcy Risk:** [Low / Moderate / High]
- **Interpretation:** [Explanation of Z-Score and financial stability]
**Beneish M-Score: X.XX** [Clean <-1.78 / Warning >-1.78]
- **Earnings Quality:** [High / Moderate / Questionable]
- **Red Flags:** [List any concerning indicators or state "None"]
**Max Drawdown (5Y): -X%** [Low <20% / Moderate 20-40% / High 40-60% / Extreme >60%]
- **Volatility Assessment:** [Low/Moderate/High volatility explanation]
- **Peak price:** โฌX.XX ([Date])
- **Trough price:** โฌX.XX ([Date])
### Consolidated Scores
**Strength Score: X/100** (Financial power and market position)
**Integrity Score: X/100** (Earnings quality and transparency)
**Predictability Score: X/100** (Business consistency)
**Data Quality Score: X/100** (Information completeness)
**Overall Quality Rating: [Elite / Strong / Good / Adequate / Weak]**
### Financial Trends (5-10 Year View)
**Revenue:**
- [Trend description: growth rate, consistency, drivers]
- [Any concerning patterns?]
**Margins:**
- Gross margin: [Expanding / Stable / Declining]
- Operating margin: [Trend]
- Net margin: [Trend]
- Drivers: [Why are margins moving this way?]
**Cash Flow:**
- Operating cash flow: [Trend and quality]
- Free cash flow: [Consistency, conversion]
- Capital allocation: [Dividends, buybacks, capex, acquisitions]
**Balance Sheet:**
- Debt levels: [Conservative / Moderate / High]
- Liquidity: [Strong / Adequate / Concerning]
- Trend: [Strengthening / Stable / Weakening]
### ๐ฉ Red Flags
[List any concerning trends or issues, or state "None identified"]
---
## ๐ Technical Analysis & Entry Timing
### Price Action (Last 30-60 Days)
- **Current Price**: โฌX.XX
- **52-Week Range**: โฌX.XX - โฌX.XX
- **30-day Change**: [+/-X%]
- **Trend**: [Uptrend / Downtrend / Range-bound]
- **Volume**: [Increasing / Decreasing / Normal]
### Key Technical Levels
**Support Levels:**
- **Primary Support: โฌX.XX** - [Significance/reason]
- **Secondary Support: โฌX.XX** - [Significance/reason]
**Resistance Levels:**
- **Primary Resistance: โฌX.XX** - [Significance/reason]
- **Secondary Resistance: โฌX.XX** - [Significance/reason]
### Technical Indicators
**RSI**: X.X [Overbought >70 / Neutral 30-70 / Oversold <30]
**MACD**: [Bullish crossover / Bearish crossover / Neutral]
- Interpretation: [Momentum assessment]
**Moving Averages:**
- 50-day MA: โฌX.XX - Price is [above/below]
- 200-day MA: โฌX.XX - Price is [above/below]
- Golden/Death Cross: [Any recent crossovers?]
### Entry Assessment
**Technical Setup: [Bullish / Neutral / Bearish]**
**Optimal Entry Strategy:**
- [Buy now at market / Wait for pullback to โฌX.XX / Buy on breakout above โฌX.XX]
- **Ideal Entry Range: โฌX.XX - โฌX.XX**
- **Maximum Buy Price: โฌX.XX** (avoid above this)
**Momentum: [Strong Bullish / Bullish / Neutral / Bearish / Strong Bearish]**
---
## โ๏ธ Bull vs. Bear Case
### ๐ Bull Case
**Potential Upside: โฌX.XX (+X%)**
1. **[Bull Argument 1]**: [Specific evidence and reasoning]
2. **[Bull Argument 2]**: [Specific evidence and reasoning]
3. **[Bull Argument 3]**: [Specific evidence and reasoning]
**For this to play out:**
- [Required condition 1]
- [Required condition 2]
**Probability: [High / Moderate / Low]**
### ๐ป Bear Case
**Potential Downside: โฌX.XX (-X%)**
1. **[Bear Argument 1]**: [Specific risk and reasoning]
2. **[Bear Argument 2]**: [Specific risk and reasoning]
3. **[Bear Argument 3]**: [Specific risk and reasoning]
**This happens if:**
- [Risk trigger 1]
- [Risk trigger 2]
**Probability: [High / Moderate / Low]**
### โ๏ธ Balance Assessment
**Which case is more probable: [Bull / Bear / Balanced]**
[2-3 paragraph explanation of:
- Weight of evidence for each side
- Historical precedent
- Management track record
- Industry dynamics
- Current valuation
- Risk/reward assessment]
---
## โ ๏ธ Risk Analysis
**Overall Risk Level: [Low / Moderate / High]**
### Key Risks
**1. [Risk Category - e.g., Competition Risk]**:
[Specific risk and potential impact. Probability: High/Medium/Low]
**2. [Risk Category - e.g., Execution Risk]**:
[Specific risk and potential impact. Probability: High/Medium/Low]
**3. [Risk Category - e.g., Valuation Risk]**:
[Specific risk and potential impact. Probability: High/Medium/Low]
**4. [Risk Category - e.g., Macro Risk]**:
[Specific risk and potential impact. Probability: High/Medium/Low]
### Risk Mitigation
[How does the company/investment address these risks?]
[What reduces the risk in this investment?]
---
## ๐ฏ Catalysts & Timeline
### Near-Term (0-6 months)
- **[Date]**: [Specific catalyst - earnings, product launch, etc.]
- **[Date]**: [Specific catalyst]
### Medium-Term (6-18 months)
- [Expected development 1]
- [Expected development 2]
### Long-Term (18+ months)
- [Structural trend 1]
- [Structural trend 2]
**Expected Timeline to Target**: [6-12 months / 1-3 years / 3-5+ years]
---
## ๐ก Investment Recommendation
### **RECOMMENDATION: [BUY / HOLD / SELL]**
### **Conviction: [Strong Buy / Buy / Hold / Avoid]**
### Rationale
[2-3 paragraph synthesis of entire analysis:
- Why this recommendation?
- What makes it compelling (or not)?
- How does valuation + fundamentals + technicals + catalysts = this conclusion?
- What's the risk/reward?]
---
## ๐ Entry Strategy (if BUY)
**Ideal Entry Price: โฌX.XX - โฌX.XX**
- Reasoning: [Why this range?]
**Maximum Acceptable Price: โฌX.XX**
- Above this: Risk/reward unfavorable
**Approach:**
- [Buy now at market / Wait for pullback to โฌX.XX / Buy on breakout above โฌX.XX]
- Reasoning: [Current technical setup justification]
**DO NOT BUY IF:**
- Price exceeds โฌX.XX without fundamental improvement
- [Other specific condition]
---
## ๐ฏ Exit Strategy
### Price Targets (12-Month Horizon)
- **Conservative**: โฌX.XX (+X%)
- **Base Case**: โฌX.XX (+X%)
- **Optimistic**: โฌX.XX (+X%)
### Stop Loss
**Stop Loss: โฌX.XX (-X% maximum loss)**
- Technical: Below โฌX.XX support
- Fundamental: If [thesis-breaking condition]
### Sell Conditions (Thesis-Breaking)
Exit position if any of these occur:
1. [Specific fundamental deterioration - e.g., "ROE drops below 10% for 2 consecutive quarters"]
2. [Specific competitive threat - e.g., "Loses >5% market share to competitor"]
3. [Specific valuation threshold - e.g., "Reaches โฌX.XX (>50% above fair value)"]
### Hold Duration
**Expected Timeframe**: [6-12 months / 1-3 years / 3-5+ years]
- Based on: [Investment type - swing trade vs. long-term hold]
---
## ๐ Position Sizing
### Recommended Allocation: X-X% of portfolio
**Specific Recommendation: X%**
**Rationale:**
- Conviction level: [Strong Buy / Buy โ drives size]
- Risk level: [Low / Moderate / High โ constrains size]
- Diversification: [Sector exposure, correlation with existing holdings]
- Liquidity: [Can exit position easily?]
**Maximum Allocation: X%**
- Risk management limit
- Don't exceed even if highly convicted
### Sizing Guidelines Applied:
- Strong Buy + Low Risk = 5-8% (max 10%)
- Buy + Moderate Risk = 3-5% (max 7%)
- Speculative + High Risk = 1-3% (max 5%)
---
## ๐ Key Takeaways
### Top 3 Reasons to Invest
1. [Most compelling positive factor]
2. [Second most compelling positive factor]
3. [Third most compelling positive factor]
### Top 3 Concerns
1. [Biggest risk or concern]
2. [Second biggest risk or concern]
3. [Third biggest risk or concern]
### One-Sentence Investment Thesis
[Single sentence capturing the complete investment case - why buy or avoid]
---
## ๐ Research Documentation
**Sources Consulted:**
- 10-K filings: [Fiscal years reviewed - e.g., FY2020-2024]
- 10-Q filings: [Recent quarters - e.g., Q1-Q3 2025]
- Earnings calls: [Dates reviewed]
- Proxy statements: [Years reviewed]
- Management letters: [Years reviewed]
- Competitor analysis: [Companies benchmarked]
**Analysis Depth:**
- Historical period analyzed: [X years]
- Peer companies compared: [Number and names]
- Valuation methods used: [DCF, Relative, Peter Lynch, Asset-based]
**Confidence Level: [High / Medium / Low]**
- **Based on**: [Quality and completeness of available data]
- **Gaps**: [Any areas where information is limited or unavailable]
- **Limitations**: [Any constraints in the analysis]
---
## ๐ Alternative Candidates (Required if SELL/AVOID)
[If recommending SELL or AVOID, provide 3-5 better investment alternatives with brief rationale for each]
### Alternative 1: [Symbol] - [Company Name]
**Why it's better**: [1-2 paragraph comparison]
**Quick metrics**: [Valuation, growth, margins]
### Alternative 2: [Symbol] - [Company Name]
**Why it's better**: [1-2 paragraph comparison]
**Quick metrics**: [Valuation, growth, margins]
### Alternative 3: [Symbol] - [Company Name]
**Why it's better**: [1-2 paragraph comparison]
**Quick metrics**: [Valuation, growth, margins]
[Continue for 4-5 alternatives if SELL recommendation]
---
**Analysis Date**: [Current Date]
**Next Review**: [Suggested review date based on catalysts or timeline]
**Analyst**: Claude Stock Evaluator
---
## ๐ Quant-Style Dashboard
**FINAL MANDATORY STEP**: Create a React artifact using the standardized quant-style dashboard template with:
**Required Data to Populate:**
- โ
All 48 metrics across 8 sections (calculated above)
- โ
Historical price data (5 years, 6-12 points)
- โ
1-year price + 6-month forecast (4-6 points)
- โ
MACD data (3-5 recent points)
- โ
RSI data (3-5 recent points)
- โ
Radar chart (12 metrics, normalized 0-100)
- โ
Bull case (target + 5 points)
- โ
Bear case (target + 5 points)
- โ
Entry/exit strategy (5 values)
**Use the EXACT template code provided in the skill instructions above.**
**DO NOT use placeholder values - populate with actual calculated data from this analysis.**
[Create the React artifact here using the quant-style template]
MANDATORY: After completing the full text analysis, create a React dashboard artifact using the standardized quant-style template format.
The dashboard uses a specific institutional-grade format with:
1. Header Section (Orange background)
TICKER - Company Name2. Eight Metric Sections (2-column grid)
| Left Column | Right Column |
|-------------|--------------|
| Price & Valuation (blue) | Financial Performance (green) |
| Growth Metrics (emerald) | Risk Indicators (red) |
| Liquidity & FCF (cyan) | Insider & Sentiment (purple) |
| Quality Scores (orange) | Moat & Other (gray) |
Each section: 6 metric boxes with values, labels, benchmarks, color coding
3. Charts Section (3-column grid)
4. Key Notes Section (Expandable accordion)
5. Footer
Price & Valuation (6 metrics):
Financial Performance (6 metrics):
Growth Metrics (6 metrics):
Risk Indicators (6 metrics):
Liquidity & FCF (6 metrics):
Insider & Sentiment (6 metrics):
Quality Scores (6 metrics):
Moat & Other (6 metrics):
// Green (isGood: true) - Positive indicators
ROE > 20%, ROA > 10%, Margins > 20%, ROIC > 15%
Revenue Growth > 10%, Current Ratio 1-2, Z-Score > 3
M-Score < -1.78, FCF Growth > 0%, Payout < 50%
F-Score >= 7, Quality >= 70, Strength >= 70
// Red (isGood: false) - Warning indicators
Max Drawdown < -50%, Beta > 2, Consolidated Risk > 0.6
Predictability < 50%, F-Score <= 3, Z-Score < 1.81
M-Score > -1.78, Quality < 50
// Yellow (isGood: 'neutral') - Monitor
F-Score 4-6, RSI 30-70, Moat 5-7, Quality 50-70
Beta 1.5-2.0, Predictability 50-70%
Use this exact template structure:
import React, { useState } from 'react';
import {
LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip,
ResponsiveContainer, RadarChart, PolarGrid, PolarAngleAxis,
PolarRadiusAxis, Radar, ReferenceLine, Area, ComposedChart, Scatter
} from 'recharts';
const QuantDashboard = () => {
const [showKeyNotes, setShowKeyNotes] = useState(false);
// ============================================================
// POPULATE WITH STOCK-SPECIFIC DATA FROM ANALYSIS
// ============================================================
const ticker = "TICKER"; // Replace
const companyName = "Company Name"; // Replace
const recommendation = "BUY"; // BUY, HOLD, SELL, SPECULATIVE BUY
const analysisDate = "December 6, 2025"; // Current date
const metrics = {
// Price & Valuation - from analysis
price: 100.00,
marketCap: 'โฌ10B',
trailingPE: 20.0,
forwardPE: 18.0,
subsectorTypicalPE: 25.0,
peg1Y: 1.2, // NEW: 1-Year Forward PEG
peg5Y: 2.5, // NEW: 5-Year PEG
// Financial Performance - from 5-10 year analysis
roe: 25.0,
roa: 12.0,
profitMargin: 20.0,
opMargin: 25.0,
grossMargin: 50.0,
roic: 18.0,
// Growth Metrics - from historical trends (USE REPORTED, not underlying)
revGrowth: 15.0, // REPORTED revenue growth YoY
earnGrowth: 20.0, // REPORTED earnings growth YoY
epsTTM: 5.00,
forwardEPS: 5.50,
growthCapped: 10.0, // NEW: Capped sustainable growth estimate
growthUncapped: 22.0, // NEW: Headline analyst growth estimate
analystTarget: 120.00,
// Risk Indicators - from advanced metrics section
crs: 0.40, // Consolidated Risk Score (0-1 scale)
debtEquity: 0.50,
fScore: 7, // Piotroski F-Score
zScore: 4.0, // Altman Z-Score
mScore: -2.5, // Beneish M-Score
valueTrapScore: 25, // NEW: 0-100, LOWER = genuine, HIGHER = trap
valueTrapLabel: 'Genuine', // NEW: Genuine/Caution/Trap
maxDrawdown: -30.0, // 5-year max drawdown %
// Liquidity & FCF - from cash flow analysis
currentRatio: 1.5,
totalCash: 'โฌ2B',
totalDebt: 'โฌ1B',
fcfGrowth5Y: 12.0, // 5-year smoothed growth
fcfYield: 5.0,
fcfMargin: 18.5, // NEW: FCF / Revenue %
payoutRatio: 30.0,
// Insider & Sentiment - from SEC Form 4 or use "N/A" if unavailable
insBuys: 0, // From SEC Form 4 - use actual count or "N/A"
insSells: 0, // From SEC Form 4 - use actual count or "N/A"
netShares: 'N/A', // From SEC Form 4 - use actual or "N/A"
shortInterest: 2.5, // From FINRA/exchange - use actual or "N/A"
newsSentiment: 0.25, // -1 to +1 scale
newsArticleCount: 15, // Recent article count
// Beta & Volatility
beta: 1.0, // Stock beta
vol1Y: 25.0, // 1-Year volatility %
// Quality Scores - from consolidated scoring
cqvs: 75.0, // Consolidated Quality & Valuation Score
label: 'Quality Growth', // Elite/Compounder/Quality Growth/etc
valuation: 70.0, // 0-100
quality: 80.0, // 0-100
strength: 75.0, // 0-100
integrity: 85.0, // 0-100
// Moat & Other
buffettMoat: 8, // 0-10 scale (renamed from moat)
greenblattEY: 6.5, // NEW: Earnings Yield %
greenblattROC: 22.0, // NEW: Return on Capital %
earningsPredict: 70, // Earnings Predictability 0-100
completeness: 85, // Data completeness 0-100
dataQuality: 'High', // High/Medium/Low
divYield: 1.5,
stockType: 'Growth', // Growth/Value/Cyclical/Defensive
sector: 'Technology',
industry: 'Software',
// NEW: Investor Persona Scores (0-10 scale each)
buffettScore: 7.5, // Durable competitive advantage seeker
mungerScore: 6.8, // Inversion thinker, risk avoider
dalioScore: 7.2, // All-weather, cycle resilient
lynchScore: 8.0, // GARP - Growth at Reasonable Price
grahamScore: 5.5, // Deep value, margin of safety
greenblattScore: 6.0, // Magic Formula (EY + ROC)
templetonScore: 4.5, // Contrarian, global value
sorosScore: 3.0, // Reflexivity, macro trends
// NEW: Valuation Lines for Charts
marketValueCurrent: 95.00,
intrinsicValueCurrent: 110.00,
marketValueNextYear: 105.00,
intrinsicValueNextYear: 120.00,
unrestrictedMarketValueCurrent: 125.00,
unrestrictedMarketValueNextYear: 140.00,
// Valuation Assessment (for indicator below forecast)
valuationPercent: 15, // Positive = undervalued, negative = overvalued
valuationLabel: 'Undervalued', // Undervalued/Fairly Valued/Overvalued
};
// TOP NEWS Headlines - Format: pipe-separated with dates at END in brackets
const topNews = [
{ headline: 'Company announces Q4 guidance above expectations', date: '05 Dec 2025' },
{ headline: 'New product launch receives positive analyst coverage', date: '28 Nov 2025' },
{ headline: 'Strategic partnership announced with major cloud provider', date: '15 Nov 2025' },
{ headline: 'Q3 earnings beat estimates, revenue up 18% YoY', date: '02 Nov 2025' },
{ headline: 'Management presents at investor conference, reaffirms outlook', date: '20 Oct 2025' },
];
// Format TOP NEWS as pipe-separated string with dates at END
const topNewsString = topNews.map(n => `${n.headline} [${n.date}]`).join(' | ');
// Historical Price Data (10 years with multiple valuation lines)
const priceHistory = [
{ date: '2016', price: 25, totalReturn: 28, marketValueCurrent: 27, intrinsicValueCurrent: 30, marketValueNextYear: 29, intrinsicValueNextYear: 32, analystTarget: 30, unrestrictedCurrent: 28, unrestrictedNextYear: 31 },
{ date: '2017', price: 35, totalReturn: 40, marketValueCurrent: 38, intrinsicValueCurrent: 42, marketValueNextYear: 40, intrinsicValueNextYear: 45, analystTarget: 42, unrestrictedCurrent: 40, unrestrictedNextYear: 44 },
{ date: '2018', price: 45, totalReturn: 52, marketValueCurrent: 48, intrinsicValueCurrent: 55, marketValueNextYear: 52, intrinsicValueNextYear: 60, analystTarget: 55, unrestrictedCurrent: 52, unrestrictedNextYear: 58 },
{ date: '2019', price: 55, totalReturn: 65, marketValueCurrent: 58, intrinsicValueCurrent: 68, marketValueNextYear: 62, intrinsicValueNextYear: 72, analystTarget: 65, unrestrictedCurrent: 65, unrestrictedNextYear: 72 },
{ date: '2020', price: 50, totalReturn: 62, marketValueCurrent: 55, intrinsicValueCurrent: 65, marketValueNextYear: 60, intrinsicValueNextYear: 70, analystTarget: 62, unrestrictedCurrent: 62, unrestrictedNextYear: 70 },
{ date: '2021', price: 75, totalReturn: 95, marketValueCurrent: 80, intrinsicValueCurrent: 90, marketValueNextYear: 85, intrinsicValueNextYear: 98, analystTarget: 90, unrestrictedCurrent: 92, unrestrictedNextYear: 105 },
{ date: '2022', price: 65, totalReturn: 85, marketValueCurrent: 72, intrinsicValueCurrent: 85, marketValueNextYear: 78, intrinsicValueNextYear: 92, analystTarget: 82, unrestrictedCurrent: 85, unrestrictedNextYear: 95 },
{ date: '2023', price: 80, totalReturn: 105, marketValueCurrent: 85, intrinsicValueCurrent: 100, marketValueNextYear: 92, intrinsicValueNextYear: 108, analystTarget: 98, unrestrictedCurrent: 100, unrestrictedNextYear: 115 },
{ date: '2024', price: 95, totalReturn: 125, marketValueCurrent: 100, intrinsicValueCurrent: 115, marketValueNextYear: 108, intrinsicValueNextYear: 125, analystTarget: 115, unrestrictedCurrent: 120, unrestrictedNextYear: 135 },
{ date: '2025', price: 100, totalReturn: 135, marketValueCurrent: 105, intrinsicValueCurrent: 120, marketValueNextYear: 115, intrinsicValueNextYear: 132, analystTarget: 125, unrestrictedCurrent: 130, unrestrictedNextYear: 145 },
];
// 1 Year Price with 6-Month Forecast, MAs, and Bollinger Bands
const oneYearData = [
{ date: "Jan'25", price: 90, ma50: 88, ma200: 85, upperBand: 98, lowerBand: 82, forecast: null, ci95Upper: null, ci95Lower: null },
{ date: "Mar'25", price: 88, ma50: 89, ma200: 86, upperBand: 96, lowerBand: 80, forecast: null, ci95Upper: null, ci95Lower: null },
{ date: "May'25", price: 95, ma50: 91, ma200: 87, upperBand: 102, lowerBand: 84, forecast: null, ci95Upper: null, ci95Lower: null },
{ date: "Jul'25", price: 92, ma50: 92, ma200: 88, upperBand: 100, lowerBand: 84, forecast: null, ci95Upper: null, ci95Lower: null },
{ date: "Sep'25", price: 98, ma50: 94, ma200: 90, upperBand: 106, lowerBand: 86, forecast: null, ci95Upper: null, ci95Lower: null },
{ date: "Nov'25", price: 100, ma50: 96, ma200: 92, upperBand: 108, lowerBand: 88, forecast: 100, ci95Upper: 108, ci95Lower: 92 },
{ date: "Jan'26", price: null, ma50: null, ma200: null, upperBand: null, lowerBand: null, forecast: 108, ci95Upper: 120, ci95Lower: 96 },
{ date: "Mar'26", price: null, ma50: null, ma200: null, upperBand: null, lowerBand: null, forecast: 115, ci95Upper: 130, ci95Lower: 100 },
];
// NEW: Ichimoku Cloud Data (6-month view with signal markers)
const ichimokuData = [
{ date: 'Jun', price: 88, tenkan: 87, kijun: 85, senkouA: 84, senkouB: 82, chikou: 85, tkCrossMarker: null, kumoTwistMarker: null },
{ date: 'Jul', price: 92, tenkan: 90, kijun: 87, senkouA: 86, senkouB: 84, chikou: 90, tkCrossMarker: 92, kumoTwistMarker: null }, // TK Bullish Cross
{ date: 'Aug', price: 95, tenkan: 93, kijun: 90, senkouA: 89, senkouB: 86, chikou: 93, tkCrossMarker: null, kumoTwistMarker: null },
{ date: 'Sep', price: 98, tenkan: 96, kijun: 93, senkouA: 92, senkouB: 88, chikou: 96, tkCrossMarker: null, kumoTwistMarker: 92 }, // Kumo Twist Bullish
{ date: 'Oct', price: 96, tenkan: 97, kijun: 95, senkouA: 94, senkouB: 90, chikou: 94, tkCrossMarker: null, kumoTwistMarker: null },
{ date: 'Nov', price: 100, tenkan: 98, kijun: 96, senkouA: 95, senkouB: 92, chikou: 98, tkCrossMarker: null, kumoTwistMarker: null },
];
// NEW: Ichimoku Signals Summary
const ichimokuSignals = {
tkCross: 'TK Bullish Cross',
kumoTwist: 'Kumo Twist Bullish',
priceVsCloud: 'Above Cloud (Bullish)',
};
// MACD Data (recent 6 months)
const macdData = [
{ date: 'Jun', macd: 0.5, signal: 0.3, histogram: 0.2 },
{ date: 'Jul', macd: 1.2, signal: 0.6, histogram: 0.6 },
{ date: 'Aug', macd: 1.5, signal: 1.0, histogram: 0.5 },
{ date: 'Sep', macd: 1.8, signal: 1.3, histogram: 0.5 },
{ date: 'Oct', macd: 1.2, signal: 1.4, histogram: -0.2 },
{ date: 'Nov', macd: 0.8, signal: 1.2, histogram: -0.4 },
];
// RSI Data (recent 6 months)
const rsiData = [
{ date: 'Jun', rsi: 45 },
{ date: 'Jul', rsi: 55 },
{ date: 'Aug', rsi: 62 },
{ date: 'Sep', rsi: 68 },
{ date: 'Oct', rsi: 58 },
{ date: 'Nov', rsi: 55 },
];
// Radar Chart Data (normalize all to 0-100 scale)
const radarData = [
{ metric: 'Rev Growth', value: 70, fullMark: 100 },
{ metric: 'Op Margin', value: 75, fullMark: 100 },
{ metric: 'Gross Margin', value: 65, fullMark: 100 },
{ metric: 'Profit Margin', value: 60, fullMark: 100 },
{ metric: 'ROE', value: 70, fullMark: 100 },
{ metric: 'Risk (CRS)', value: 60, fullMark: 100 },
{ metric: 'Beta Score', value: 70, fullMark: 100 },
{ metric: 'P/Market Disc', value: 50, fullMark: 100 },
{ metric: 'Moat', value: 80, fullMark: 100 },
{ metric: 'FCF Growth', value: 55, fullMark: 100 },
{ metric: 'ROA', value: 65, fullMark: 100 },
{ metric: 'Earn Growth', value: 75, fullMark: 100 },
];
// Key Notes Content - from Bull/Bear case analysis
const bullCase = {
target: "โฌ130-150", // Bull case price target
points: [
"Strong revenue growth momentum",
"Expanding margins",
"Market leadership position",
"Favorable industry tailwinds",
"Strong balance sheet"
]
};
const bearCase = {
target: "โฌ70-80", // Bear case price target
points: [
"Valuation compression risk",
"Competitive pressures",
"Macro sensitivity",
"Execution risks",
"Key person dependency"
]
};
const entryStrategy = {
idealEntry: "โฌ90-95", // From Entry Strategy section
currentEntry: "โฌ100 acceptable",
target: "โฌ120 (+20%)", // 12-month target
stopLoss: "โฌ85 (-15%)", // Stop loss
positionSize: "2-3%" // Recommended allocation
};
// ============================================================
// COMPONENT CODE (Standard - use as-is)
// ============================================================
// Helper: Value Trap color (LOWER = genuine = green, HIGHER = trap = red)
const getValueTrapColor = (score) => {
if (score < 40) return 'bg-green-100 border-green-400 text-green-800';
if (score < 60) return 'bg-yellow-100 border-yellow-400 text-yellow-800';
return 'bg-red-100 border-red-400 text-red-800';
};
// Helper: Get label for Value Trap score
const getValueTrapLabel = (score) => {
if (score < 20) return 'Genuine';
if (score < 40) return 'Probably Genuine';
if (score < 60) return 'Caution';
if (score < 80) return 'Likely Trap';
return 'Strong Trap';
};
// Helper: Persona score color
const getPersonaColor = (score) => {
if (score >= 7) return 'bg-green-500';
if (score >= 4) return 'bg-yellow-500';
return 'bg-red-500';
};
// Helper: News sentiment color
const getSentimentColor = (sentiment) => {
if (sentiment > 0.3) return 'text-green-600';
if (sentiment > 0) return 'text-green-500';
if (sentiment > -0.3) return 'text-yellow-600';
return 'text-red-600';
};
// Persona Badge Component
const PersonaBadge = ({ name, score, position }) => (
<div className={`absolute ${position} flex flex-col items-center`}>
<div className={`w-6 h-6 rounded-full ${getPersonaColor(score)} flex items-center justify-center text-white text-[8px] font-bold`}>
{score.toFixed(1)}
</div>
<div className="text-[7px] text-gray-600 mt-0.5">{name}</div>
</div>
);
const MetricBox = ({ label, value, benchmark, isGood, size = 'normal' }) => {
let bgColor = 'bg-gray-50';
if (isGood === true) bgColor = 'bg-green-50 border-green-200';
if (isGood === false) bgColor = 'bg-red-50 border-red-200';
if (isGood === 'neutral') bgColor = 'bg-yellow-50 border-yellow-200';
return (
<div className={`${bgColor} border p-1.5 flex flex-col justify-center items-center`}>
<div className="text-base font-bold text-gray-900">{value}</div>
<div className="text-[9px] text-gray-600 text-center leading-tight">{label}</div>
{benchmark && <div className="text-[8px] text-gray-400">{benchmark}</div>}
</div>
);
};
const SectionHeader = ({ title, bgColor }) => (
<div className={`${bgColor} px-2 py-1 text-[10px] font-bold text-gray-700`}>
{title}
</div>
);
return (
<div className="w-full max-w-7xl mx-auto p-3 bg-white text-xs">
{/* Header */}
<div className="bg-orange-500 text-white px-3 py-2 mb-1 text-lg font-bold text-center">
{ticker} - {companyName}
</div>
{/* TOP NEWS - Pipe separated with dates at END */}
<div className="border border-gray-300 rounded p-2 mb-3 bg-gray-50">
<span className="font-bold text-[10px]">TOP NEWS:</span>
<div className="text-[9px] mt-1">{topNewsString}</div>
</div>
{/* Top 4 sections */}
<div className="grid grid-cols-2 gap-2 mb-3">
{/* Price & Valuation - Updated with dual PEG */}
<div className="border border-gray-300 rounded overflow-hidden">
<SectionHeader title="PRICE & VALUATION" bgColor="bg-blue-100" />
<div className="grid grid-cols-7 gap-px bg-gray-200">
<MetricBox label="Price:" value={`โฌ${metrics.price}`} />
<MetricBox label="Market Cap:" value={metrics.marketCap} />
<MetricBox label="Trailing P/E:" value={metrics.trailingPE} />
<MetricBox label="Forward P/E:" value={metrics.forwardPE} benchmark={`(${metrics.subsectorTypicalPE})`} isGood={metrics.forwardPE < metrics.subsectorTypicalPE} />
<MetricBox label="Subsector P/E:" value={metrics.subsectorTypicalPE} />
<MetricBox label="PEG (1Y):" value={metrics.peg1Y} benchmark="(<1.5)" isGood={metrics.peg1Y < 1.5 ? true : metrics.peg1Y < 2 ? 'neutral' : false} />
<MetricBox label="PEG (5Y):" value={metrics.peg5Y} benchmark="(<2)" isGood={metrics.peg5Y < 2 ? true : metrics.peg5Y < 3 ? 'neutral' : false} />
</div>
</div>
{/* Financial Performance */}
<div className="border border-gray-300 rounded overflow-hidden">
<SectionHeader title="FINANCIAL PERFORMANCE" bgColor="bg-green-100" />
<div className="grid grid-cols-6 gap-px bg-gray-200">
<MetricBox label="ROE:" value={`${metrics.roe}%`} benchmark="(>20%)" isGood={metrics.roe >= 20 ? true : metrics.roe >= 10 ? 'neutral' : false} />
<MetricBox label="ROA:" value={`${metrics.roa}%`} benchmark="(>10%)" isGood={metrics.roa >= 10} />
<MetricBox label="Profit Margin:" value={`${metrics.profitMargin}%`} benchmark="(>20%)" isGood={metrics.profitMargin >= 20 ? true : metrics.profitMargin >= 10 ? 'neutral' : false} />
<MetricBox label="Operative Margin:" value={`${metrics.opMargin}%`} benchmark="(>20%)" isGood={metrics.opMargin >= 20} />
<MetricBox label="Gross Margin:" value={`${metrics.grossMargin}%`} benchmark="(>40%)" isGood={metrics.grossMargin >= 40} />
<MetricBox label="ROIC:" value={`${metrics.roic}%`} benchmark="(>15%)" isGood={metrics.roic >= 15} />
</div>
</div>
</div>
{/* Next 4 sections */}
<div className="grid grid-cols-2 gap-2 mb-3">
{/* Growth Metrics */}
<div className="border border-gray-300 rounded overflow-hidden">
<SectionHeader title="GROWTH METRICS" bgColor="bg-emerald-100" />
<div className="grid grid-cols-7 gap-px bg-gray-200">
<MetricBox label="Revenue (YoY):" value={`${metrics.revGrowth}%`} benchmark="(>10%)" isGood={metrics.revGrowth >= 10} />
<MetricBox label="Earning (YoY):" value={`${metrics.earnGrowth}%`} benchmark="(>0%)" isGood={metrics.earnGrowth >= 0} />
<MetricBox label="EPS (TTM):" value={`โฌ${metrics.epsTTM}`} />
<MetricBox label="Forward EPS:" value={`โฌ${metrics.forwardEPS}`} isGood={metrics.forwardEPS > metrics.epsTTM} />
<MetricBox label="Growth Rates:" value={`Capped: ${metrics.growthCapped}%`} benchmark={`Uncapped: ${metrics.growthUncapped}%`} />
<MetricBox label="Analyst Target:" value={`โฌ${metrics.analystTarget}`} />
</div>
</div>
{/* Risk Indicators */}
<div className="border border-gray-300 rounded overflow-hidden">
<SectionHeader title="RISK INDICATORS" bgColor="bg-red-100" />
<div className="grid grid-cols-6 gap-px bg-gray-200">
<MetricBox label="CRS (0-1):" value={metrics.crs.toFixed(2)} benchmark="(Medium)" isGood={metrics.crs < 0.4 ? true : metrics.crs < 0.6 ? 'neutral' : false} />
<MetricBox label="Debt/Equity (mrq):" value={metrics.debtEquity} benchmark="(0.5-1)" isGood={metrics.debtEquity < 1 ? true : metrics.debtEquity < 2 ? 'neutral' : false} />
<MetricBox label="Piotroski F:" value={metrics.fScore} benchmark="(โฅ7)" isGood={metrics.fScore >= 7 ? true : metrics.fScore >= 4 ? 'neutral' : false} />
<MetricBox label="Altman Z:" value={metrics.zScore.toFixed(2)} benchmark="(>3)" isGood={metrics.zScore >= 2.99 ? true : metrics.zScore >= 1.81 ? 'neutral' : false} />
<MetricBox label="Beneish M:" value={metrics.mScore.toFixed(2)} benchmark="(<-1.78)" isGood={metrics.mScore < -1.78} />
<MetricBox label="Value Trap:" value={`${metrics.valueTrapScore} (${metrics.valueTrapLabel})`} isGood={metrics.valueTrapScore < 40 ? true : metrics.valueTrapScore < 60 ? 'neutral' : false} />
</div>
</div>
</div>
{/* Next 4 sections */}
<div className="grid grid-cols-2 gap-2 mb-3">
{/* Liquidity & Free Cash Flow */}
<div className="border border-gray-300 rounded overflow-hidden">
<SectionHeader title="LIQUIDITY & FREE CASH FLOW" bgColor="bg-cyan-100" />
<div className="grid grid-cols-7 gap-px bg-gray-200">
<MetricBox label="Current Ratio:" value={metrics.currentRatio.toFixed(2)} benchmark="(1-2)" isGood={metrics.currentRatio >= 1 && metrics.currentRatio <= 2 ? true : 'neutral'} />
<MetricBox label="Cash:" value={metrics.totalCash} />
<MetricBox label="Debt:" value={metrics.totalDebt} />
<MetricBox label="FCF Growth 5Y:" value={`${metrics.fcfGrowth5Y}%`} benchmark="(>5%)" isGood={metrics.fcfGrowth5Y >= 5} />
<MetricBox label="FCF Yield:" value={`${metrics.fcfYield}%`} benchmark="(>4%)" isGood={metrics.fcfYield >= 4} />
<MetricBox label="FCF Margin:" value={`${metrics.fcfMargin}%`} benchmark="(>15%)" isGood={metrics.fcfMargin >= 15 ? true : metrics.fcfMargin >= 10 ? 'neutral' : false} />
<MetricBox label="Payout Ratio:" value={`${metrics.payoutRatio}%`} benchmark="(<50%)" isGood={metrics.payoutRatio < 50} />
</div>
</div>
{/* Insider & Sentiment & Class */}
<div className="border border-gray-300 rounded overflow-hidden">
<SectionHeader title="INSIDER & SENTIMENT & CLASS" bgColor="bg-purple-100" />
<div className="grid grid-cols-7 gap-px bg-gray-200">
<MetricBox label="Buys (12M):" value={metrics.insBuys} isGood={metrics.insBuys > metrics.insSells} />
<MetricBox label="Sells (12M):" value={metrics.insSells} />
<MetricBox label="Net Shares (12M):" value={metrics.netShares} />
<MetricBox label="Short Int (%):" value={`${metrics.shortInterest}%`} isGood={metrics.shortInterest < 5 ? true : metrics.shortInterest < 10 ? 'neutral' : false} />
<MetricBox label="Sentiment / Articles:" value={`${metrics.newsSentiment > 0 ? '+' : ''}${metrics.newsSentiment.toFixed(3)} / ${metrics.newsArticleCount}`} benchmark={metrics.newsSentiment > 0 ? '(Positive)' : '(Negative)'} isGood={metrics.newsSentiment > 0} />
<MetricBox label={`Stock: ${metrics.stockType}`} value={`Div Yield: ${metrics.divYield}%`} />
<MetricBox label="Sector/Industry:" value={`${metrics.sector} /`} benchmark={metrics.industry} />
</div>
</div>
</div>
{/* Last 2 sections */}
<div className="grid grid-cols-2 gap-2 mb-3">
{/* Quality Scores */}
<div className="border border-gray-300 rounded overflow-hidden">
<SectionHeader title="QUALITY SCORES" bgColor="bg-orange-100" />
<div className="grid grid-cols-6 gap-px bg-gray-200">
<MetricBox label="CQVS:" value={metrics.cqvs.toFixed(1)} benchmark="(>70)" isGood={metrics.cqvs >= 70 ? true : metrics.cqvs >= 50 ? 'neutral' : false} />
<MetricBox label="Label:" value={metrics.label} />
<MetricBox label="Valuation:" value={metrics.valuation} isGood={metrics.valuation >= 70} />
<MetricBox label="Quality:" value={metrics.quality} isGood={metrics.quality >= 70 ? true : metrics.quality >= 50 ? 'neutral' : false} />
<MetricBox label="Strength:" value={metrics.strength} isGood={metrics.strength >= 70} />
<MetricBox label="Integrity:" value={metrics.integrity} isGood={metrics.integrity >= 70 ? true : metrics.integrity >= 50 ? 'neutral' : false} />
</div>
</div>
{/* Moat & Other */}
<div className="border border-gray-300 rounded overflow-hidden">
<SectionHeader title="MOAT & OTHER" bgColor="bg-gray-200" />
<div className="grid grid-cols-6 gap-px bg-gray-200">
<MetricBox label="Buffett Moat:" value={metrics.buffettMoat} benchmark="(4-7)" isGood={metrics.buffettMoat >= 7 ? true : metrics.buffettMoat >= 4 ? 'neutral' : false} />
<MetricBox label="Greenblatt (MF):" value={`EY: ${metrics.greenblattEY}%`} benchmark={metrics.greenblattROC ? `ROC: ${metrics.greenblattROC}%` : 'ROC: N/A'} isGood={metrics.greenblattEY >= 8 ? true : metrics.greenblattEY >= 4 ? 'neutral' : false} />
<MetricBox label={`Beta: ${metrics.beta}`} value={`Vol 1Y: ${metrics.vol1Y}%`} isGood={metrics.beta < 1 ? true : metrics.beta < 1.5 ? 'neutral' : false} />
<MetricBox label="Earnings Predict.:" value={`${metrics.earningsPredict}%`} benchmark="(>80%)" isGood={metrics.earningsPredict >= 80 ? true : metrics.earningsPredict >= 60 ? 'neutral' : false} />
<MetricBox label="Drawdown (5Y):" value={`${metrics.maxDrawdown}%`} benchmark={metrics.maxDrawdown > -30 ? '(Low)' : metrics.maxDrawdown > -50 ? '(Mid)' : '(High)'} isGood={metrics.maxDrawdown > -30 ? true : metrics.maxDrawdown > -50 ? 'neutral' : false} />
<MetricBox label={`Completeness: ${metrics.completeness}%`} value={`Data Quality: ${metrics.dataQuality}`} isGood={metrics.dataQuality === 'High' ? true : metrics.dataQuality === 'Medium' ? 'neutral' : false} />
</div>
</div>
</div>
{/* Charts Section - Enhanced with Legends */}
<div className="grid grid-cols-3 gap-2 mb-3">
{/* Linear Price Chart + MACD */}
<div className="border border-gray-300 rounded p-2">
<div className="text-sm font-bold mb-1 text-center">LINEAR PRICE CHART (10Y)</div>
<div className="text-[7px] text-gray-500 mb-1 pl-1">
โ Close Price โ Total Return<br/>
- - Market Value (Current): โฌ{metrics.marketValueCurrent}<br/>
- - Intrinsic Value (Current): โฌ{metrics.intrinsicValueCurrent}<br/>
- - Analyst Target: โฌ{metrics.analystTarget}
</div>
<ResponsiveContainer width="100%" height={130}>
<LineChart data={priceHistory}>
<CartesianGrid strokeDasharray="3 3" stroke="#e0e0e0" />
<XAxis dataKey="date" tick={{ fontSize: 7 }} />
<YAxis tick={{ fontSize: 7 }} />
<Tooltip contentStyle={{ fontSize: 8 }} />
<Line type="monotone" dataKey="price" stroke="#1f2937" strokeWidth={1.5} dot={false} name="Close" />
<Line type="monotone" dataKey="totalReturn" stroke="#6b7280" strokeWidth={1} strokeDasharray="2 2" dot={false} name="Total Return" />
<Line type="monotone" dataKey="intrinsicValueCurrent" stroke="#16a34a" strokeWidth={1} strokeDasharray="5 5" dot={false} name="IV Current" />
<Line type="monotone" dataKey="analystTarget" stroke="#3b82f6" strokeWidth={1} strokeDasharray="3 3" dot={false} name="Target" />
</LineChart>
</ResponsiveContainer>
<div className="text-xs font-bold mt-1 mb-1 text-center">MACD</div>
<ResponsiveContainer width="100%" height={55}>
<LineChart data={macdData}>
<CartesianGrid strokeDasharray="3 3" stroke="#e0e0e0" />
<XAxis dataKey="date" tick={{ fontSize: 6 }} />
<YAxis tick={{ fontSize: 6 }} />
<ReferenceLine y={0} stroke="#666" />
<Tooltip contentStyle={{ fontSize: 7 }} />
<Line type="monotone" dataKey="macd" stroke="#2563eb" strokeWidth={1} dot={false} name="MACD" />
<Line type="monotone" dataKey="signal" stroke="#dc2626" strokeWidth={1} dot={false} name="Signal" />
</LineChart>
</ResponsiveContainer>
</div>
{/* Radar + Investor Personas + Forecast */}
<div className="border border-gray-300 rounded p-2">
<div className="relative">
<ResponsiveContainer width="100%" height={140}>
<RadarChart data={radarData}>
<PolarGrid />
<PolarAngleAxis dataKey="metric" tick={{ fontSize: 6 }} />
<PolarRadiusAxis angle={30} domain={[0, 100]} tick={{ fontSize: 6 }} />
<Radar name={ticker} dataKey="value" stroke="#2563eb" fill="#3b82f6" fillOpacity={0.3} />
</RadarChart>
</ResponsiveContainer>
{/* Investor Persona Badges */}
<PersonaBadge name="Buffett" score={metrics.buffettScore} position="top-0 left-1/4" />
<PersonaBadge name="Lynch" score={metrics.lynchScore} position="top-0 right-1/4" />
<PersonaBadge name="Munger" score={metrics.mungerScore} position="top-1/4 -left-2" />
<PersonaBadge name="Greenblatt" score={metrics.greenblattScore} position="top-1/4 -right-2" />
<PersonaBadge name="Dalio" score={metrics.dalioScore} position="bottom-1/4 -left-2" />
<PersonaBadge name="Graham" score={metrics.grahamScore} position="bottom-1/4 -right-2" />
<PersonaBadge name="Templeton" score={metrics.templetonScore} position="bottom-0 left-1/4" />
<PersonaBadge name="Soros" score={metrics.sorosScore} position="bottom-0 right-1/4" />
</div>
<div className="text-center my-1">
<span className="bg-green-200 px-2 py-0.5 text-[10px] font-bold rounded border border-green-400">
Advice: {recommendation} (CQVS: {metrics.cqvs.toFixed(1)})
</span>
</div>
<div className="text-[8px] font-bold mb-0.5 text-center">1Y PRICE + 6-MONTH FORECAST</div>
<div className="text-[6px] text-gray-500 mb-0.5 text-center">โ Close โ 50-Day MA โ 200-Day MA โ Bollinger Bands - - Forecast</div>
<ResponsiveContainer width="100%" height={70}>
<ComposedChart data={oneYearData}>
<CartesianGrid strokeDasharray="3 3" stroke="#e0e0e0" />
<XAxis dataKey="date" tick={{ fontSize: 6 }} />
<YAxis tick={{ fontSize: 6 }} />
<Tooltip contentStyle={{ fontSize: 7 }} />
<Area type="monotone" dataKey="upperBand" stroke="none" fill="#e0e0e0" fillOpacity={0.5} />
<Area type="monotone" dataKey="ci95Upper" stroke="none" fill="#dbeafe" fillOpacity={0.5} />
<Line type="monotone" dataKey="price" stroke="#1f2937" strokeWidth={1.5} dot={false} />
<Line type="monotone" dataKey="ma50" stroke="#f59e0b" strokeWidth={1} dot={false} />
<Line type="monotone" dataKey="ma200" stroke="#ef4444" strokeWidth={1} dot={false} />
<Line type="monotone" dataKey="forecast" stroke="#16a34a" strokeWidth={1.5} strokeDasharray="5 5" dot={false} />
</ComposedChart>
</ResponsiveContainer>
{/* Valuation Indicator */}
<div className={`text-center text-[10px] font-bold mt-1 ${metrics.valuationPercent > 10 ? 'text-green-600' : metrics.valuationPercent < -10 ? 'text-red-600' : 'text-yellow-600'}`}>
{metrics.valuationLabel} ({metrics.valuationPercent > 0 ? '+' : ''}{metrics.valuationPercent}%)
</div>
</div>
{/* Log Price + RSI */}
<div className="border border-gray-300 rounded p-2">
<div className="text-sm font-bold mb-1 text-center">LOG PRICE CHART (10Y)</div>
<div className="text-[7px] text-gray-500 mb-1 pl-1">
โ Close Price โ Total Return<br/>
- - Unrestr. Market Value (Current): โฌ{metrics.unrestrictedMarketValueCurrent}<br/>
- - Unrestr. Market Value (Next Year): โฌ{metrics.unrestrictedMarketValueNextYear}
</div>
<ResponsiveContainer width="100%" height={130}>
<LineChart data={priceHistory}>
<CartesianGrid strokeDasharray="3 3" stroke="#e0e0e0" />
<XAxis dataKey="date" tick={{ fontSize: 7 }} />
<YAxis tick={{ fontSize: 7 }} scale="log" domain={['auto', 'auto']} />
<Tooltip contentStyle={{ fontSize: 8 }} />
<Line type="monotone" dataKey="price" stroke="#1f2937" strokeWidth={1.5} dot={false} name="Close" />
<Line type="monotone" dataKey="totalReturn" stroke="#6b7280" strokeWidth={1} strokeDasharray="2 2" dot={false} name="Total Return" />
<Line type="monotone" dataKey="unrestrictedCurrent" stroke="#dc2626" strokeWidth={1} strokeDasharray="5 5" dot={false} name="Unrestr Current" />
<Line type="monotone" dataKey="unrestrictedNextYear" stroke="#f97316" strokeWidth={1} strokeDasharray="5 5" dot={false} name="Unrestr Next" />
</LineChart>
</ResponsiveContainer>
<div className="text-xs font-bold mt-1 mb-1 text-center">RSI (14) = {rsiData[rsiData.length - 1].rsi}</div>
<ResponsiveContainer width="100%" height={55}>
<LineChart data={rsiData}>
<CartesianGrid strokeDasharray="3 3" stroke="#e0e0e0" />
<XAxis dataKey="date" tick={{ fontSize: 6 }} />
<YAxis tick={{ fontSize: 6 }} domain={[0, 100]} />
<Tooltip contentStyle={{ fontSize: 7 }} />
<ReferenceLine y={70} stroke="#ef4444" strokeDasharray="2 2" />
<ReferenceLine y={30} stroke="#22c55e" strokeDasharray="2 2" />
<Line type="monotone" dataKey="rsi" stroke="#f59e0b" strokeWidth={1.5} dot={false} />
</LineChart>
</ResponsiveContainer>
</div>
</div>
{/* NEW: Ichimoku Cloud Chart */}
<div className="border border-gray-300 rounded p-2 mb-3">
<div className="text-sm font-bold mb-1 text-center">ICHIMOKU CLOUD</div>
<div className="flex gap-4 text-[7px] justify-center mb-1">
<span>โ Close Price</span>
<span className="text-blue-500">โ Tenkan-sen (9)</span>
<span className="text-red-500">โ Kijun-sen (26)</span>
<span className="text-gray-400">โ Chikou Span</span>
<span className="text-green-500">โ Senkou Span A/B (Cloud)</span>
<span className="ml-2 font-bold text-yellow-600">โ TK Cross</span>
<span className="text-purple-600">โ Kumo Twist</span>
</div>
<ResponsiveContainer width="100%" height={100}>
<ComposedChart data={ichimokuData}>
<CartesianGrid strokeDasharray="3 3" stroke="#e0e0e0" />
<XAxis dataKey="date" tick={{ fontSize: 7 }} />
<YAxis tick={{ fontSize: 7 }} domain={['auto', 'auto']} />
<Tooltip contentStyle={{ fontSize: 8 }} />
<Area type="monotone" dataKey="senkouA" stroke="none" fill="#86efac" fillOpacity={0.3} />
<Area type="monotone" dataKey="senkouB" stroke="none" fill="#fca5a5" fillOpacity={0.3} />
<Line type="monotone" dataKey="price" stroke="#1f2937" strokeWidth={2} dot={false} name="Price" />
<Line type="monotone" dataKey="tenkan" stroke="#3b82f6" strokeWidth={1} dot={false} name="Tenkan" />
<Line type="monotone" dataKey="kijun" stroke="#dc2626" strokeWidth={1} dot={false} name="Kijun" />
<Line type="monotone" dataKey="chikou" stroke="#9ca3af" strokeWidth={1} strokeDasharray="3 3" dot={false} name="Chikou" />
<Scatter dataKey="tkCrossMarker" fill="#9333ea" shape="diamond" name="TK Cross" />
<Scatter dataKey="kumoTwistMarker" fill="#dc2626" shape="diamond" name="Kumo Twist" />
</ComposedChart>
</ResponsiveContainer>
<div className="flex gap-4 text-[8px] justify-center mt-1">
<span className="bg-green-100 px-2 rounded">{ichimokuSignals.tkCross}</span>
<span className="bg-green-100 px-2 rounded">{ichimokuSignals.kumoTwist}</span>
<span className="bg-green-100 px-2 rounded">{ichimokuSignals.priceVsCloud}</span>
</div>
</div>
{/* Key Notes (Expandable) */}
<div className="border border-gray-300 rounded overflow-hidden">
<button
onClick={() => setShowKeyNotes(!showKeyNotes)}
className="w-full bg-gray-100 px-3 py-2 text-left text-sm font-bold flex items-center hover:bg-gray-200"
>
<span className="mr-2">{showKeyNotes ? 'โผ' : 'โถ'}</span> Key Notes (Click to Expand)
</button>
{showKeyNotes && (
<div className="p-3 bg-gray-50">
<div className="grid grid-cols-3 gap-4 text-xs">
{/* Bull Case */}
<div>
<div className="font-bold text-green-700 mb-2 text-sm">BULL CASE ({bullCase.target})</div>
<ul className="list-disc list-inside space-y-1">
{bullCase.points.map((point, i) => <li key={i}>{point}</li>)}
</ul>
</div>
{/* Bear Case */}
<div>
<div className="font-bold text-red-700 mb-2 text-sm">BEAR CASE ({bearCase.target})</div>
<ul className="list-disc list-inside space-y-1">
{bearCase.points.map((point, i) => <li key={i}>{point}</li>)}
</ul>
</div>
{/* Entry/Exit Strategy */}
<div>
<div className="font-bold text-blue-700 mb-2 text-sm">ENTRY/EXIT STRATEGY</div>
<ul className="list-disc list-inside space-y-1">
<li><strong>Ideal Entry:</strong> {entryStrategy.idealEntry}</li>
<li><strong>Current:</strong> {entryStrategy.currentEntry}</li>
<li><strong>Target:</strong> {entryStrategy.target}</li>
<li><strong>Stop Loss:</strong> {entryStrategy.stopLoss}</li>
<li><strong>Position Size:</strong> {entryStrategy.positionSize}</li>
</ul>
</div>
</div>
</div>
)}
</div>
{/* Footer */}
<div className="text-xs text-gray-500 text-center mt-3">
Analysis Date: {analysisDate} | Sources: SEC Filings, Company Reports |
<span className="font-bold text-blue-600 ml-1">{recommendation}</span>
</div>
</div>
);
};
export default QuantDashboard;
CRITICAL STEPS:
metrics object (60+ values including investor persona scores)topNews array (5 recent headlines with dates)priceHistory array (10-year data with multiple valuation lines)oneYearData array (with MAs, Bollinger Bands, forecast)ichimokuData array (6-month with signal markers)ichimokuSignals object (TK cross, Kumo twist, price vs cloud)macdData array (6 recent points with histogram)rsiData array (6 recent points)radarData array (12 metrics, normalized 0-100)bullCase.points (5 points from bull case analysis)bearCase.points (5 points from bear case analysis)entryStrategy (5 values from entry/exit strategy)"โฌ100.00" (Euro is the default - use โฌ not $)"โฌ10B", "โฌ2.5M"15.0 (number, not string with %)1.25 (number)7 (integer) or 75.0 (float)This is the ONLY accepted dashboard format. All other dashboard styles are deprecated.
If stock is already in portfolio:
Use Stock Evaluator when:
Do NOT use this skill when:
Output includes:
Before presenting analysis, verify:
If any checklist item incomplete: STOP and gather more information.
If data genuinely unavailable after searching: Use "N/A" - never fabricate.
[See complete example in EVALUATION-WORKFLOWS.md for detailed walkthrough]
After each evaluation:
The goal is to discover genuinely attractive investment opportunities that fit the user's profile with adequate margin of safety and acceptable risk.
Generated Mar 1, 2026
An individual investor is considering buying shares of a high-growth technology company like NVIDIA or AMD. They need a comprehensive analysis to assess valuation, technical entry points, and fundamental health before making an investment decision, including specific buy/hold/sell recommendations and position sizing.
A financial advisor is reviewing a client's watchlist, which includes a mix of dividend-paying stocks and growth stocks. The advisor uses the skill to perform deep dives on each candidate, comparing metrics like F-Score, Z-Score, and investor persona scores to provide balanced recommendations and identify potential value traps.
A portfolio manager is evaluating a large-cap healthcare stock, such as Johnson & Johnson, to decide whether to hold, trim, or sell the position. The analysis includes technical indicators, fundamental metrics like ROE and profit margin, and bull vs. bear cases to inform rebalancing strategies and alternative investment options.
A retail trader is looking at an energy stock like ExxonMobil that has experienced price volatility. They require technical analysis with Ichimoku Cloud, key levels, and risk indicators such as beta and short interest to time entries and exits, alongside fundamental checks to avoid poor-quality investments.
An investment club is debating whether to buy a consumer goods stock such as Procter & Gamble. Members need a structured evaluation covering valuation methods, growth metrics, and insider sentiment to reach a consensus, with clear conviction ratings and alternative candidates if the stock is not recommended.
This model offers tiered subscriptions where users pay monthly or annually for access to the Stock Evaluator skill. It generates recurring revenue by providing individual investors and small firms with detailed, data-driven stock reports, including dashboards and recommendations, without requiring in-house expertise.
The skill is licensed to financial advisory firms and wealth management companies as a white-labeled tool. It enhances their service offerings by providing clients with standardized, comprehensive stock evaluations, leading to increased client retention and upsell opportunities for premium analysis packages.
A freemium approach where basic stock evaluations are free, but users pay for advanced features like real-time data, historical analysis, or enhanced dashboard metrics. Revenue comes from premium upgrades, in-app purchases for detailed reports, and advertising partnerships with financial data providers.
๐ฌ Integration Tip
Ensure real-time data feeds from reliable sources like Yahoo Finance or SEC filings are integrated to populate the dashboard accurately, avoiding fabrication as per the skill's strict data integrity rules.
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.
Get stock prices, quotes, fundamentals, earnings, options, dividends, and analyst ratings using Yahoo Finance. Uses yfinance library - no API key required.
Yahoo Finance (yfinance) powered stock analysis skill: quotes, fundamentals, ASCII trends, high-resolution charts (RSI/MACD/BB/VWAP/ATR), plus optional web a...
Become an autonomous prediction market trader on Polymarket with AI-powered analysis and a performance-backed token on Base. Trade real markets, build a track record, and let the buyback flywheel run.
Get cryptocurrency token price and generate candlestick charts via CoinGecko API or Hyperliquid API. Use when user asks for token price, crypto price, price chart, or cryptocurrency market data.
Trade and monitor Hyperliquid perpetual futures. Check balances, view positions with P&L, place/cancel orders, execute market trades. Use when the user asks about Hyperliquid trading, portfolio status, crypto positions, or wants to execute trades on Hyperliquid.