CtrlK
BlogDocsLog inGet started
Tessl Logo

yfinance

yfinance global market data interface — retrieve OHLCV, financials, insider transactions, and institutional holdings for US stocks, HK stocks, ETFs, and indices via Yahoo Finance. Free, no API key required.

66

Quality

80%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./a_全网优秀资源/10_大模型/07_skill包/vibe_trading_skills/yfinance/SKILL.md
SKILL.md
Quality
Evals
Security

yfinance

Overview

yfinance is an open-source Python wrapper for Yahoo Finance, providing global market data (US stocks, HK stocks, ETFs, indices) including historical and real-time quotes. Completely free, no registration or API key required.

The project has a built-in yfinance DataLoader (backtest/loaders/yfinance_loader.py). When backtesting, set source: "yfinance" or source: "auto" to invoke it automatically.

Quick Start

pip install yfinance pandas
import yfinance as yf

# Apple daily bars for the past year
df = yf.download("AAPL", start="2025-01-01", end="2026-01-01", progress=False)
print(df.head())

# Tencent (HK-listed)
df = yf.download("0700.HK", start="2025-01-01", end="2026-01-01", progress=False)
print(df.head())

Ticker Format Conversion

The project uses a unified ticker format. The DataLoader automatically converts to yfinance format:

Project Formatyfinance FormatMarket
AAPL.USAAPLUS stock
MSFT.USMSFTUS stock
700.HK0700.HKHK stock
9988.HK9988.HKHK stock
SPY.USSPYUS ETF

Rules:

  • US stocks: strip the .US suffix → use the raw ticker
  • HK stocks: keep .HK, pad the number to 4 digits (7000700)

Supported Data Types

1. Historical OHLCV

import yfinance as yf
import pandas as pd

# Single stock
df = yf.download("AAPL", start="2025-01-01", end="2026-01-01", progress=False)

# Batch download
df = yf.download(["AAPL", "MSFT", "GOOGL"], start="2025-01-01", end="2026-01-01", progress=False)

# Specific interval
df = yf.download("AAPL", start="2026-03-01", end="2026-03-30",
                 interval="1h", progress=False)  # 1m/5m/15m/30m/1h/1d/1wk/1mo

Supported intervals:

  • Minute-level: 1m, 2m, 5m, 15m, 30m, 60m, 90m
  • Hourly: 1h
  • Daily and above: 1d, 5d, 1wk, 1mo, 3mo

Minute data limits:

  • 1m: up to 7 days of history
  • 2m/5m/15m/30m/60m/90m: up to 60 days
  • 1h: up to 730 days
  • 1d and above: unlimited

2. Company Info

ticker = yf.Ticker("AAPL")

info = ticker.info
print(f"Company: {info.get('longName')}")
print(f"Industry: {info.get('industry')}")
print(f"Market cap: {info.get('marketCap')}")
print(f"PE: {info.get('trailingPE')}")
print(f"EPS: {info.get('trailingEps')}")
print(f"Dividend yield: {info.get('dividendYield')}")

3. Financial Statements

ticker = yf.Ticker("AAPL")

# Income statement (annual)
income = ticker.financials
# Income statement (quarterly)
income_q = ticker.quarterly_financials

# Balance sheet
balance = ticker.balance_sheet

# Cash flow statement
cashflow = ticker.cashflow

# Earnings data
earnings = ticker.earnings

4. Dividends and Splits

ticker = yf.Ticker("AAPL")

# Dividend history
dividends = ticker.dividends

# Stock split history
splits = ticker.splits

# All corporate actions
actions = ticker.actions

5. Institutional Holdings

ticker = yf.Ticker("AAPL")

# Institutional holders
holders = ticker.institutional_holders

# Major holders summary
major = ticker.major_holders

# Insider transactions
insider = ticker.insider_transactions

6. Indices and ETFs

# Major indices
sp500 = yf.download("^GSPC", start="2025-01-01", end="2026-01-01", progress=False)  # S&P 500
nasdaq = yf.download("^IXIC", start="2025-01-01", end="2026-01-01", progress=False)  # NASDAQ
hsi = yf.download("^HSI", start="2025-01-01", end="2026-01-01", progress=False)      # Hang Seng Index

# ETFs
spy = yf.download("SPY", start="2025-01-01", end="2026-01-01", progress=False)
qqq = yf.download("QQQ", start="2025-01-01", end="2026-01-01", progress=False)

7. FX Rates

# Currency pairs
usdcny = yf.download("CNY=X", start="2025-01-01", end="2026-01-01", progress=False)
usdhkd = yf.download("HKD=X", start="2025-01-01", end="2026-01-01", progress=False)
eurusd = yf.download("EURUSD=X", start="2025-01-01", end="2026-01-01", progress=False)

Popular Ticker Reference

US Stocks

TickerCompany
AAPLApple
MSFTMicrosoft
GOOGLAlphabet (Google)
AMZNAmazon
NVDANVIDIA
METAMeta Platforms
TSLATesla
BRK-BBerkshire Hathaway

HK Stocks

Project Formatyfinance FormatCompany
700.HK0700.HKTencent
9988.HK9988.HKAlibaba
9618.HK9618.HKJD.com
3690.HK3690.HKMeituan
1810.HK1810.HKXiaomi
2318.HK2318.HKPing An

Major Indices

TickerIndex
^GSPCS&P 500
^DJIDow Jones Industrial Average
^IXICNASDAQ Composite
^HSIHang Seng Index
^N225Nikkei 225
^FTSEFTSE 100

Sector ETFs

TickerSector
XLKTechnology
XLFFinancials
XLEEnergy
XLVHealthcare
XLYConsumer Discretionary
XLPConsumer Staples
XLIIndustrials
XLUUtilities

Backtest Usage

config.json Example

{
  "source": "yfinance",
  "codes": ["AAPL.US", "MSFT.US"],
  "start_date": "2020-01-01",
  "end_date": "2026-03-30",
  "initial_cash": 1000000,
  "commission": 0.001,
  "extra_fields": null
}

Cross-Market Auto Mode

{
  "source": "auto",
  "codes": ["000001.SZ", "AAPL.US", "700.HK", "BTC-USDT"],
  "start_date": "2024-01-01",
  "end_date": "2026-03-30",
  "initial_cash": 1000000,
  "commission": 0.001,
  "extra_fields": null
}

source: "auto" routes automatically by ticker format: A-shares → tushare, HK/US stocks → yfinance, crypto → OKX.

Notes

  • Free, no API key: yfinance scrapes Yahoo Finance public data — no registration needed
  • Rate limits: high-frequency requests may trigger temporary Yahoo bans — prefer batch downloads over per-ticker loops
  • Minute data range: limited by Yahoo Finance (see table above)
  • HK tickers: Yahoo Finance uses 4-digit numbers + .HK; pad with leading zeros where needed
  • Adjustment: auto_adjust=True (default) returns forward-adjusted prices; the project loader uses auto_adjust=False
  • Timezone: returned data includes timezone info; the DataLoader strips it automatically
  • extra_fields not supported: yfinance via the backtest loader returns OHLCV only; PE/PB and other fundamentals require separate yf.Ticker().info calls
  • Comparison with Tushare: Tushare covers deep A-share data (financials, fund flows, block trades, etc.); yfinance covers global markets but with less depth
Repository
charliedream1/ai_quant_trade
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.