一、國內金融市場數據利器#
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 工具可以滿足需求;
“無他,惟手熟爾”!有需要的用起來。