SKILL.md
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 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.Screener + 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 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
- 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
After fetching data, present it clearly:
- Summarize key numbers in a brief text response (current price, market cap, P/E, etc.)
- Show tabular data formatted for readability — use markdown tables or formatted DataFrames
- Highlight notable items — earnings beats/misses, unusual volume, dividend changes
- 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.