PluginBench
Skill
Review
Audit score 70

yfinance-data

himself65/finance-skills

Fetch stock prices, financial statements, and market data from Yahoo Finance using yfinance.

What is yfinance-data?

Retrieves financial and market data from Yahoo Finance via the yfinance Python library. Use this skill whenever users ask for stock prices, historical data, financial statements, options chains, dividends, earnings, analyst recommendations, or any market data by ticker symbol.

  • Fetch current stock prices and quotes
  • Retrieve historical OHLCV price data with configurable periods and intervals
  • Access financial statements (balance sheet, income statement, cash flow)
  • Get options chains, calls, and puts data with expiration dates
  • Retrieve dividends, stock splits, and corporate actions
  • Access analyst price targets, recommendations, and upgrades/downgrades

How to install yfinance-data

npx skills add https://github.com/himself65/finance-skills --skill yfinance-data
Prerequisites
  • Python 3 environment with pip
  • yfinance library (auto-installed if not present)
  • Internet connection to access Yahoo Finance
Claude Code
Cursor
Windsurf
Cline

How to use yfinance-data

  1. 1.Check if yfinance is installed; install with pip if needed
  2. 2.Identify the data category the user needs (price, financials, options, etc.)
  3. 3.Create a Ticker object with the stock symbol (e.g., yf.Ticker('AAPL'))
  4. 4.Call the appropriate method based on the data type (e.g., ticker.history(), ticker.balance_sheet, ticker.option_chain())
  5. 5.For quarterly data, use quarterly_ prefix methods
  6. 6.Wrap code in try/except to handle rate limits or missing data
  7. 7.Format and present results clearly with summaries and tables

Use cases

Good for
  • Get current price and key metrics for a single stock ticker
  • Download historical price data for technical analysis or backtesting
  • Compare financial metrics across multiple companies
  • Retrieve options chain data for a specific expiration date
  • Analyze dividend history and corporate actions
Who it's for
  • Financial analysts and researchers
  • Investment portfolio managers
  • Traders and quantitative analysts
  • Data scientists building financial models
  • Anyone needing programmatic access to market data

yfinance-data FAQ

What data sources does yfinance use?

yfinance fetches data from Yahoo Finance. It is not affiliated with Yahoo, Inc. Data is intended for research and educational purposes.

How far back can I retrieve historical data?

Most daily data goes back many years. Intraday data has limits: 1m data only ~7 days back, 1h data ~730 days back. Use valid periods like '1y', '5y', 'max' for longer ranges.

Can I fetch data for multiple stocks at once?

Yes, use yf.download() with a list of tickers for faster multi-threaded downloads, or loop through individual Ticker objects.

How do I handle timezone issues with date comparisons?

yfinance returns tz-aware datetime indices (e.g., America/New_York). Use pd.Timestamp with tz parameter or strip timezones with .tz_localize(None) when comparing dates.

What should I do if Yahoo Finance rate-limits my requests?

Wrap requests in try/except blocks to handle errors gracefully. Add delays between requests if making many calls, and consider using yf.download() for bulk operations as it's optimized for multiple tickers.

Full instructions (SKILL.md)

Source of truth, from himself65/finance-skills.


name: yfinance-data description: > Fetch financial and market data using the yfinance Python library. Use this skill whenever the user asks for stock prices, historical data, financial statements, options chains, dividends, earnings, analyst recommendations, or any market data. Triggers include: any mention of stock price, ticker symbol (AAPL, MSFT, TSLA, etc.), "get me the financials", "show earnings", "what's the price of", "download stock data", "options chain", "dividend history", "balance sheet", "income statement", "cash flow", "analyst targets", "institutional holders", "compare stocks", "screen for stocks", or any request involving Yahoo Finance data. Always use this skill even if the user only provides a ticker — infer intent from context.

yfinance Data Skill

Fetches financial and market data from Yahoo Finance using the yfinance Python library.

Important: yfinance is not affiliated with Yahoo, Inc. Data is for research and educational purposes.


Step 1: Ensure yfinance Is Available

Current environment status:

!`python3 -c "import yfinance; print('yfinance ' + yfinance.__version__ + ' installed')" 2>/dev/null || echo "YFINANCE_NOT_INSTALLED"`

If YFINANCE_NOT_INSTALLED, install it before running any code:

import subprocess, sys
subprocess.check_call([sys.executable, "-m", "pip", "install", "-q", "yfinance"])

If yfinance is already installed, skip the install step and proceed directly.


Step 2: Identify What the User Needs

Match the user's request to one or more data categories below, then use the corresponding code from references/api_reference.md.

User RequestData CategoryPrimary Method
Stock price, quoteCurrent priceticker.info or ticker.fast_info
Price history, chart dataHistorical OHLCVticker.history() or yf.download()
Balance sheetFinancial statementsticker.balance_sheet
Income statement, revenueFinancial statementsticker.income_stmt
Cash flowFinancial statementsticker.cashflow
DividendsCorporate actionsticker.dividends
Stock splitsCorporate actionsticker.splits
Options chain, calls, putsOptions dataticker.option_chain()
Earnings, EPSAnalysisticker.earnings_history
Analyst price targetsAnalysisticker.analyst_price_targets
Recommendations, ratingsAnalysisticker.recommendations
Upgrades/downgradesAnalysisticker.upgrades_downgrades
Institutional holdersOwnershipticker.institutional_holders
Insider transactionsOwnershipticker.insider_transactions
Company overview, sectorGeneral infoticker.info
Compare multiple stocksBulk downloadyf.download()
Screen/filter stocksScreeneryf.Screener + yf.EquityQuery
Sector/industry dataMarket datayf.Sector / yf.Industry
NewsNewsticker.news

Step 3: Write and Execute the Code

General pattern

import subprocess, sys
subprocess.check_call([sys.executable, "-m", "pip", "install", "-q", "yfinance"])

import yfinance as yf

ticker = yf.Ticker("AAPL")
# ... use the appropriate method from the reference

Key rules

  1. Always wrap in try/except — Yahoo Finance may rate-limit or return empty data
  2. Use yf.download() for multi-ticker comparisons — it's faster with multi-threading
  3. For options, list expiration dates first with ticker.options before calling ticker.option_chain(date)
  4. For quarterly data, use quarterly_ prefix: ticker.quarterly_income_stmt, ticker.quarterly_balance_sheet, ticker.quarterly_cashflow
  5. For large date ranges, be mindful of intraday limits — 1m data only goes back ~7 days, 1h data ~730 days
  6. Print DataFrames clearly — use .to_string() or .to_markdown() for readability, or select key columns
  7. Timezone handling — yfinance returns tz-aware datetime indices (e.g., America/New_York). When comparing dates, always use pd.Timestamp(..., tz=...) or strip timezones with .tz_localize(None). See the reference file for details.

Valid periods and intervals

Periods1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max
Intervals1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo, 3mo

Step 4: Present the Data

After fetching data, present it clearly:

  1. Summarize key numbers in a brief text response (current price, market cap, P/E, etc.)
  2. Show tabular data formatted for readability — use markdown tables or formatted DataFrames
  3. Highlight notable items — earnings beats/misses, unusual volume, dividend changes
  4. Provide context — compare to sector averages, historical ranges, or analyst consensus when relevant

If the user seems to want a chart or visualization, combine with an appropriate visualization approach (e.g., generate an HTML chart or describe the trend).


Reference Files

  • references/api_reference.md — Complete yfinance API reference with code examples for every data category

Read the reference file when you need exact method signatures or edge case handling.