About yfinance-data
yfinance-data is a skill for financial data tasks, guiding Python use of yfinance to retrieve Yahoo Finance market, company, and analysis data. It maps requests to relevant methods and includes guidance for handling and presenting results.
Key features
- 01Retrieve quotes and historical prices
- 02Read financial statements and corporate actions
- 03Query options, analyst data, and ownership
- 04Compare stocks, screen equities, and inspect sectors
- 05Guidance for data handling and presentation
Use cases
- 01Look up a stock quote or historical OHLCV data
- 02Review statements, dividends, or stock splits
- 03Query options chains, analyst ratings, or news
- 04Compare stocks or screen market listings
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ himself65/ finance-skills --skill yfinance-dataAfter installing, type/yfinance-datain Claude Code to confirm it loaded.
Bundled filesREADME.mdreferences/api_reference.md
Details
From the project READMEyfinance Data Skill
If your host has not already executed the shell probes below (for example, in Codex), run the commands inside the ! wrappers with its shell tool before choosing a setup path. Use the actual output; if shell access is unavailable, report that limitation.
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 "exec('try:\n import yfinance\n print(\'yfinance \' + yfinance.__version__ + \' installed\')\nexcept Exception:\n print(\'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 Request | Data Category | Primary Method |
|---|---|---|
| Stock price, quote | Current price | ticker.info or ticker.fast_info |
| Price history, chart data | Historical OHLCV | ticker.history() or yf.download() |
| Balance sheet | Financial statements | ticker.balance_sheet |
| Income statement, revenue | Financial statements | ticker.income_stmt |
| Cash flow | Financial statements | ticker.cashflow |
| Dividends | Corporate actions | ticker.dividends |
| Stock splits | Corporate actions | ticker.splits |
| Options chain, calls, puts | Options data | ticker.option_chain() |
| Earnings, EPS | Analysis | ticker.earnings_history |
| Analyst price targets | Analysis | ticker.analyst_price_targets |
| Recommendations, ratings | Analysis | ticker.recommendations |
| Upgrades/downgrades | Analysis | ticker.upgrades_downgrades |
| Institutional holders | Ownership | ticker.institutional_holders |
| Insider transactions | Ownership | ticker.insider_transactions |
| Company overview, sector | General info | ticker.info |
| Compare multiple stocks | Bulk download | yf.download() |
| Screen/filter stocks | Screener | yf.screen() + yf.EquityQuery |
| Sector/industry data | Market data | yf.Sector / yf.Industry |
| News | News | ticker.news |
Step 3: Write and Execute the Code
General pattern
import yfinance as yf
ticker = yf.Ticker("AAPL")
# ... use the appropriate method from the reference
Key rules
- Always wrap in try/except — Yahoo Finance may rate-limit or return empty data
- Use
yf.download()for multi-ticker comparisons — it's faster with multi-threading - For options, list expiration dates first with
ticker.optionsbefore callingticker.option_chain(date) - For quarterly data, use
quarterly_prefix:ticker.quarterly_income_stmt,ticker.quarterly_balance_sheet,ticker.quarterly_cashflow - For large date ranges, be mindful of intraday limits — 1m data only goes back ~7 days, 1h data ~730 days
- Print DataFrames clearly — use
.to_string()or.to_markdown()for readability, or select key columns - Timezone handling — yfinance returns tz-aware datetime indices (e.g.,
America/New_York). When comparing dates, always usepd.Timestamp(..., tz=...)or strip timezones with.tz_localize(None). See the reference file for details.
Valid periods and intervals
| Periods | 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max |
|---|---|
| Intervals | 1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo, 3mo |
Step 4: Present the Data
Answer with the numbers the user asked for first, then the supporting table (markdown, or a trimmed DataFrame with the key columns). Call out anything notable in the data — an earnings beat or miss, unusual volume, a dividend change — and add context such as sector averages, historical ranges, or analyst consensus where it changes how the numbers read. If the user wants a chart, pair the data with a visualization.
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.