一、国内金融市场数据利器#
1. Tushare#
Tushare 提供了全面的中国金融市场数据。它覆盖了 A 股、港股、期货、基金、债券、外汇等各类金融产品数据,甚至包括行业大数据和数字货币行情。Tushare 的 API 设计简洁,返回数据直接是 Pandas DataFrame 格式,便于后续分析处理。虽然部分高级功能需要积分或 VIP 权限,但基础数据已能满足大多数研究需求。
import tushare as ts
# 初始化Pro接口
pro = ts.pro_api('your_token_here')
# 获取上证指数日线数据
df = pro.index_daily(ts_code='000001.SH', start_date='20200101', end_date='20230101')
print(df.head())
适用场景:A 股量化分析、金融学术研究、宏观经济分析。
2. AkShare#
AkShare 是一个完全开源免费的金融数据接口库,以其数据更新及时和覆盖范围广而著称。它聚合了东方财富网、新浪财经等多个金融信息平台的数据源,支持股票、期货、期权、基金、外汇、债券、指数、加密货币等多种金融产品数据。
import akshare as ak
# 获取上证指数历史行情数据
stock_zh_index_daily_df = ak.stock_zh_index_daily(symbol="sh000001")
print(stock_zh_index_daily_df.head())
适用场景:高频数据需求、多市场综合分析、数据科学项目。
3. baostock#
baostock 专注于提供国内 A 股市场数据,包括历史行情、财务数据和分红数据等。它的优势在于完全免费且数据质量高,特别适合专注于 A 股分析的量化交易者和研究人员。
import baostock as bs
import pandas as pd
# 登录系统
lg = bs.login()
# 获取贵州茅台历史数据
rs = bs.query_history_k_data_plus("sh.600519",
"date,open,high,low,close,volume",
start_date='2020-01-01',
end_date='2023-01-01')
# 转换为DataFrame
data_list = []
while (rs.error_code == '0') & rs.next():
data_list.append(rs.get_row_data())
result = pd.DataFrame(data_list, columns=rs.fields)
# 登出系统
bs.logout()
适用场景:A 股历史数据分析、财务因子研究、量化策略回测。
二、国际金融市场数据门户#
4. yfinance#
yfinance 是获取全球股票市场数据的首选工具,特别是美股数据。它提供股票历史价格(开盘价、最高价、最低价、收盘价、成交量)、实时价格、分红信息等,支持不同时间粒度的数据获取。
import yfinance as yf
# 获取苹果公司股票数据
apple = yf.Ticker("AAPL")
# 获取过去一年的历史数据
hist = apple.history(period="1y")
# 获取多个股票数据
data = yf.download(['AAPL', 'MSFT', 'GOOG'],
start="2020-01-01",
end="2023-01-01")
适用场景:美股分析、投资组合管理、跨国企业研究。
5. pandas-datareader#
作为 pandas 生态的重要组成部分,pandas-datareader 提供了统一的 API 来访问多个金融数据源,包括 Yahoo Finance、FRED、World Bank 等。它与 pandas 无缝集成,是构建自动化数据分析流程的理想选择。
import pandas_datareader as pdr
from datetime import datetime
# 获取苹果公司股票数据
start = datetime(2020, 1, 1)
end = datetime(2023, 1, 1)
aapl = pdr.get_data_yahoo('AAPL', start, end)
# 获取美国失业率数据
unrate = pdr.get_data_fred('UNRATE', start, end)
适用场景:经济数据分析、跨数据源研究、自动化报表生成。
6. Alpha Vantage#
Alpha Vantage 提供专业级的全球金融市场数据,覆盖股票、ETF、外汇和加密货币等 200,000 多种金融工具。其独特优势在于内置多种技术分析指标,可直接获取处理后的技术指标数据。
from alpha_vantage.timeseries import TimeSeries
# 初始化API
ts = TimeSeries(key='YOUR_API_KEY', output_format='pandas')
# 获取苹果公司日线数据
data, meta_data = ts.get_daily(symbol='AAPL', outputsize='full')
# 获取技术指标(如RSI)
from alpha_vantage.techindicators import TechIndicators
ti = TechIndicators(key='YOUR_API_KEY')
rsi_data, rsi_meta_data = ti.get_rsi(symbol='AAPL', interval='daily', time_period=14)
适用场景:量化策略开发、技术分析、全球市场监控。
7. quandl#
quandl 提供来自数百个来源的高质量金融经济数据,包括全球交易所、央行、政府机构等发布的官方数据。虽然部分数据集需要付费,但也有大量免费的高价值数据集可供使用。
import quandl
# 获取美国GDP数据
gdp = quandl.get('FRED/GDP')
# 获取黄金价格数据
gold = quandl.get('LBMA/GOLD')
适用场景:宏观经济研究、基本面分析、长期趋势研究。
8. iexfinance#
iexfinance 提供对 IEX Cloud 平台的访问,获取实时股票数据和公司基本面信息。它特别适合需要实时交易数据的场景,提供高质量的股票市场数据。
from iexfinance.stocks import Stock
# 获取微软公司股票数据
msft = Stock("MSFT", token="YOUR_API_KEY")
# 获取实时报价
quote = msft.get_quote()
# 获取基本面数据
fundamentals = msft.get_fundamentals()
适用场景:实时交易系统、基本面分析、投资组合监控。
三、专业领域数据工具#
9. ccxt#
ccxt 是加密货币领域最全面的接口库,支持超过 140 个加密货币交易所的 API。它不仅可以获取市场数据,还支持交易执行,是加密货币量化交易的必备工具。
import ccxt
# 初始化Binance交易所
exchange = ccxt.binance({
'apiKey': 'YOUR_API_KEY',
'secret': 'YOUR_SECRET'
})
# 获取BTC/USDT行情数据
ticker = exchange.fetch_ticker('BTC/USDT')
# 获取OHLCV数据
ohlcv = exchange.fetch_ohlcv('BTC/USDT', '1d')
适用场景:加密货币交易、区块链分析、数字资产组合管理。
10. fixer#
fixer 提供专业的外汇汇率数据,支持 170 多种货币的实时和历史汇率查询。它由欧洲中央银行支持,数据权威可靠,是外汇交易和国际商务的必备工具。
import requests
# 获取最新汇率
response = requests.get('http://data.fixer.io/api/latest?access_key=YOUR_API_KEY&symbols=USD,CNY,EUR')
data = response.json()
# 获取历史汇率
hist_response = requests.get('http://data.fixer.io/api/2018-01-01?access_key=YOUR_API_KEY&symbols=USD,CNY')
适用场景:外汇交易系统、跨国企业财务、国际旅行应用。
11. yahooquery#
yahooquery 是 yfinance 的增强替代品,提供更全面的雅虎财经数据访问,包括财务报表、期权数据、市场新闻等更丰富的数据类型。
from yahooquery import Ticker
# 获取特斯拉公司数据
tsla = Ticker('TSLA')
# 获取资产负债表
balance_sheet = tsla.balance_sheet()
# 获取期权数据
options = tsla.option_chain
适用场景:深度基本面分析、期权策略研究、企业财务分析。
12. eodh#
eodhd 提供全球股票、ETF、指数和外汇数据,覆盖全球主要交易所。其特色是提供丰富的历史数据和经济指标,适合全球市场分析。
from eodhd import APIClient
# 初始化客户端
api = APIClient(api_key="YOUR_API_KEY")
# 获取苹果公司历史数据
aapl_hist = api.get_historical_data("AAPL.US", "d", start="2020-01-01")
# 获取股息数据
dividends = api.get_dividends("AAPL.US")
适用场景:全球资产配置、跨国投资研究、股息策略分析。
四、特色数据工具#
13. investpy#
investpy 专注于提供新兴市场金融数据,特别是那些在主流数据源中难以获取的新兴市场股票数据。它从 Investing.com 抓取数据,覆盖全球股票、指数、基金等。
import investpy
# 获取巴西股票数据
br_stocks = investpy.get_stocks(country='brazil')
# 获取印度指数历史数据
nifty_50 = investpy.get_index_historical_data(index='Nifty 50', country='india', from_date='01/01/2020', to_date='01/01/2023')
适用场景:新兴市场研究、全球资产配置、发展中国家投资分析。
14. finnhub#
finnhub 提供高质量的实时金融市场数据,包括股票、外汇和加密货币的实时报价。它还提供新闻和社交媒体情感数据,适合高频交易和情感分析。
import finnhub
# 初始化客户端
finnhub_client = finnhub.Client(api_key="YOUR_API_KEY")
# 获取实时报价
quote = finnhub_client.quote('AAPL')
# 获取公司新闻
news = finnhub_client.company_news('AAPL', _from="2023-01-01", to="2023-01-10")
适用场景:高频交易、市场情绪分析、事件驱动策略。
15. wrds#
wrds(Wharton Research Data Services)是学术研究领域的黄金标准,提供 CRSP、Compustat 等专业数据库的访问接口。虽然主要面向学术界,但也是专业金融研究的强大工具。
import wrds
# 连接数据库
db = wrds.Connection()
# 查询CRSP股票数据
crsp_data = db.get_table(library='crsp', table='dsf')
# 查询Compustat财务数据
compustat = db.get_table(library='comp', table='funda')
适用场景:学术研究、专业金融分析、长期历史数据研究。
金融数据如同现代投资世界的石油,而 Python 接口库就是开采和提炼的工具。选择合适的工具组合,能让数据价值最大化。
- 国内金融市场分析:Tushare+AkShare+baostock 的组合可覆盖绝大多数需求;
- 全球市场分析:yfinance+pandas-datareader+Alpha Vantage 的组合更为合适;
- 加密货币交易分析:ccxt 工具可以满足需求;
“无他,惟手熟尔”!有需要的用起来。