2025年07月23日/ 浏览 4
在华尔街的量化交易部门,Python已成为处理金融数据的标准工具。作为核心库的Pandas,其DataFrame结构完美契合金融数据的时间序列特性。我们常用的工具链还包括:
yfinance
(雅虎财经API)、akshare
(国内财经数据)TA-Lib
(技术指标计算)、mplfinance
(专业K线图)statsmodels
(统计模型)、arch
(波动率预测)python
import pandas as pd
import yfinance as yf
import mplfinance as mpf
以贵州茅台(600519.SS)为例,获取2020-2023年日线数据:
python
data = yf.download("600519.SS", start="2020-01-01", end="2023-12-31")
常见数据问题处理技巧:
– 处理缺失值:data.ffill().bfill()
– 异常值检测:data[(data['Close'] > data['Close'].rolling(20).mean() + 2*data['Close'].rolling(20).std())]
– 去除停牌日:data = data[data['Volume'] > 0]
计算常用技术指标:python
data[‘EMA12’] = data[‘Close’].ewm(span=12).mean()
data[‘EMA26’] = data[‘Close’].ewm(span=26).mean()
data[‘MACD’] = data[‘EMA12’] – data[‘EMA26’]
data[‘MA20’] = data[‘Close’].rolling(20).mean()
data[‘Upper’] = data[‘MA20’] + 2data[‘Close’].rolling(20).std()
data[‘Lower’] = data[‘MA20’] – 2data[‘Close’].rolling(20).std()
使用mplfinance绘制机构级K线图:python
addplot = [
mpf.makeaddplot(data[‘MA20′], color=’orange’),
mpf.make_addplot(data[[‘Upper’,’Lower’]], linestyle=’dashed’)
]
mpf.plot(data, type=’candle’, addplot=add_plot,
style=’charles’, volume=True,
title=’贵州茅台技术分析’, figratio=(12,6))
python
returns = data[‘Close’].pct_change()
print(f”峰度:{returns.kurtosis():.2f} 偏度:{returns.skew():.2f}”)
data[‘Rolling_Vol’] = returns.rolling(30).std() * np.sqrt(252)
python
stocks = ['600519.SS', '000858.SZ', '600809.SS']
corr_data = yf.download(stocks, period="1y")['Adj Close'].pct_change().corr()
sns.heatmap(corr_data, annot=True, cmap='coolwarm')
简单双均线策略实现:
python
data[‘Signal’] = np.where(data[‘MA5’] > data[‘MA20’], 1, -1)
data[‘Strategy_Return’] = data[‘Signal’].shift(1) * returns
cumreturns = (1 + data[[‘StrategyReturn’]]).cumprod()
关键绩效指标计算:
python
annual_return = cum_returns.iloc[-1]**(252/len(data))-1
max_drawdown = (cum_returns.cummax() - cum_returns).max()
sharpe_ratio = returns.mean()/returns.std()*np.sqrt(252)
data.tz_localize('UTC')
yfinance
的auto_adjust=True
参数category
类型data.shift(1)
金融数据科学是个持续迭代的过程。建议从单股票分析开始,逐步构建投资组合分析模型。真正的挑战不在于代码实现,而在于金融逻辑的严谨性和市场认知的深度。