一键导入
stock-analyzer
Analyze stocks and companies with fundamental analysis, technical indicators, and risk assessment
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Analyze stocks and companies with fundamental analysis, technical indicators, and risk assessment
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Design static ad creatives for social media and display advertising campaigns.
Source and evaluate candidates with job analysis, search strategies, specific candidate profiles, and outreach templates.
Draft emails, manage calendar scheduling, prepare meeting agendas, and organize productivity
Create brand identity kits with color palettes, typography, logo concepts, and brand guidelines.
Perform competitive market analysis with feature comparisons, positioning, and strategic recommendations.
Create social media posts, newsletters, and marketing content calibrated to your voice and platform.
| name | stock-analyzer |
| description | Analyze stocks and companies with fundamental analysis, technical indicators, and risk assessment |
Analyze stocks, companies, and investment opportunities using financial market data. Provide company profiles, technical analysis, fundamental analysis, and portfolio insights.
Python libs (run directly, no API key):
import yfinance as yf
t = yf.Ticker("AAPL")
t.info # P/E, market cap, beta, 52w range, margins
t.financials # income statement (4yr)
t.balance_sheet # debt, cash, equity
t.cashflow # FCF, capex
t.history(period="1y") # OHLCV for technicals
t.institutional_holders # 13F ownership
Screening: finvizfinance lib — filter S&P 500 by sector/valuation/signals. Finviz.com directly for heatmaps and insider tables.
Primary filings: Start from the EDGAR filing index: webFetch("https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK={ticker}&type=10-K"). This returns a list of filings — find the most recent 10-K and webFetch its "Documents" link to reach the actual filing. Read Item 1A (Risk Factors) and Item 7 (MD&A) — this is where management admits problems.
Insider activity: webFetch("http://openinsider.com/screener?s={ticker}") — look for cluster buys (multiple execs buying same week) and P-code open-market purchases (insider paid cash at market price — strongest signal). Ignore option exercises (M-code) and 10b5-1 scheduled sales.
Short interest: webSearch "{ticker} short interest fintel" — >20% of float = crowded short, squeeze risk either direction.
Never show financials, tables, or a report to the user without thoroughly researching first. Before generating any Excel model, PDF, or web preview, you must:
deep-research skill for comprehensive web research. This is not optional — every stock analysis must use deep research to gather real data before producing any deliverable.If you cannot verify a financial figure from at least one real source, flag it explicitly as unverified. Never present guessed or hallucinated numbers as fact.
Run yfinance to get fundamentals + 1yr price history. Compute 50/200 SMA, RSI(14), and current price vs 52w high. Takes 10 lines of pandas.
Valuation (compare to sector median, not S&P):
Quality red lines (practitioner heuristics):
Compute in pandas — don't just describe:
"{ticker} unusual options activity" — large OTM call sweeps before earnings sometimes leak infoBuild a pandas DataFrame with peers side-by-side: P/E, PEG, rev growth, gross margin, FCF yield, debt/EBITDA. The outlier in either direction is your thesis. Pull yfinance data for every peer company — do not leave cells blank or use estimates when real data is available. Every company in the comparison must have actual financials pulled and verified.
Use web search aggressively via the deep-research skill. Before writing the report, gather real external research to cite:
webSearch("[ticker] analyst report 2026")
webSearch("[ticker] earnings analysis site:seekingalpha.com")
webSearch("[ticker] bull case bear case site:seekingalpha.com OR site:fool.com")
webSearch("[company] investor presentation 2026 filetype:pdf")
webSearch("[ticker] price target consensus")
webSearch("[ticker] industry outlook [sector]")
webSearch("[company] competitive landscape")
webSearch("[ticker] short interest thesis")
Source hierarchy (cite all of these in the report):
| Source | What you get | How to cite |
|---|---|---|
| SEC EDGAR (10-K, 10-Q, 8-K) | Primary financials, risk factors, MD&A | "Source: [Company] 10-K FY2025, Item 7" |
| Earnings call transcripts | Management commentary, guidance | "Source: Q4 2025 Earnings Call, CEO remarks" |
| Sell-side research (via SeekingAlpha, TipRanks) | Price targets, consensus estimates | "Source: TipRanks consensus, 12 analysts" |
| Industry reports | TAM, growth rates, competitive dynamics | "Source: [Firm] [Industry] Report, [Date]" |
| Company investor presentations | Management's own bull case, KPIs | "Source: [Company] Investor Day 2025" |
| News (Reuters, Bloomberg, CNBC) | Catalysts, M&A, regulatory | "Source: Reuters, [Date]" |
Use webFetch to pull actual content from SeekingAlpha articles, earnings transcripts, and investor presentations. Extract specific data points, quotes, and estimates to cite in the report.
Follow this exact order so the user gets fast, tangible results. You MUST produce both the Excel model AND the PDF report — they are not optional or interchangeable.
Load the excel-generator skill and generate a professional .xlsx file containing all financial models, comp tables, DCF spreadsheets, and data-heavy outputs. The Excel file is the working analytical model — it should have real formulas, charts, conditional formatting, and data validation. Present the Excel file to the user in chat immediately after generating it.
Write a generation script (generate-report.ts) that produces a polished, multi-page equity research PDF using jsPDF. This is the primary deliverable — the report the user would hand to someone. Do not output a markdown summary as a substitute. Do not skip the PDF. The PDF must be generated and presented to the user in chat before building any web app.
Build a React web artifact that renders the same report data as an HTML preview — a page-by-page view that visually matches the PDF. The web app is a nice-to-have preview that comes after the PDF and Excel are already in the user's hands. Do NOT spend time on the web app before the user has seen their PDF and Excel file.
The user cares most about the Excel model and PDF report. Get those into the user's hands first. The web app is a visual complement, not a replacement.
The .xlsx file should include:
The PDF should look like a sell-side initiation note from Goldman, Morgan Stanley, or JP Morgan. This is mandatory — every stock analysis must produce this PDF.
Page 1 — Cover / Executive Summary:
Pages 2-3 — Investment Thesis:
Pages 3-4 — Financial Analysis:
Page 5 — Valuation:
Page 6 — Technical Analysis:
Page 7 — Risks:
Final Page — Sources:
Generate charts using matplotlib or plotly in Python, save as PNG, and embed in both the PDF and the web preview:
import matplotlib.pyplot as plt
import yfinance as yf
# Price chart with SMAs
df = yf.Ticker("AAPL").history(period="1y")
fig, ax = plt.subplots(figsize=(10, 5))
ax.plot(df.index, df['Close'], label='Price', color='#1a1a2e')
ax.plot(df.index, df['Close'].rolling(50).mean(), label='50 SMA', color='#e94560', linestyle='--')
ax.plot(df.index, df['Close'].rolling(200).mean(), label='200 SMA', color='#0f3460', linestyle='--')
ax.set_title("AAPL — 1 Year Price History")
ax.legend()
ax.grid(alpha=0.3)
fig.savefig("price_chart.png", dpi=150, bbox_inches='tight')
# Revenue by segment bar chart
# Margin trend line chart
# Valuation band chart
# RSI chart
Generate at least 4 charts for the report: price history with SMAs, revenue/margin trends, peer valuation comparison, and one more relevant to the thesis.
Use jsPDF (same approach as the resume skill) to generate the PDF with explicit point-based layout:
new jsPDF({ unit: "pt", format: "letter" }) — US Letter: 612×792ptPAGE_H - MARGIN, call doc.addPage() and reset Y to the top margin. Never let content silently overflow — always check before rendering.doc.addImage() — scale each chart to fit the content width while respecting remaining page height. If a chart won't fit on the current page, start a new page.Blank pages in multi-page jsPDF reports almost always come from one of two bugs:
Footer hijacking the cursor. If you draw a footer at the bottom of the page (e.g., y=720) and leave the cursor there, the next section thinks it's already at the bottom and forces a new page — leaving the previous page blank except for the footer. Fix: save the Y position before drawing the footer, then restore it afterward so content flow isn't disrupted.
Double page breaks. If you have both automatic page breaks (when content nears the bottom) and manual doc.addPage() calls at section transitions, both can fire in sequence — producing a blank page between them. Fix: before any manual page break, check whether a fresh page was already added (e.g., track an isNewPage flag). Only add a page if you're not already on a fresh one.
Required before presenting: After generating the PDF, verify there are no blank pages before showing it to the user. Open the generated PDF and check every page for content. If any page is blank, fix the page-break logic and regenerate. Do not present a PDF with blank pages.
The React web artifact reads the same report data (via a JSON endpoint, same pattern as the resume skill) and renders an HTML version that visually mirrors the PDF page-by-page. Each "page" in the web preview should be a fixed-size container (816×1056px — US Letter at 96dpi) with the same margins, typography, and chart placement as the PDF.