如何使用Python进行金融时间序列分析?
前言
金融时间序列分析是金融领域的重要工作,借助 Python 能够高效开展此类分析。以下为你介绍使用 Python 进行金融时间序列分析的步骤和示例代码:
1.环境配置
python3.13.2安装
python3.13.2安装详细步骤(附安装包):https://blog.csdn.net/2501_91538706/article/details/147315428
安装必要的库
在开始之前,你需要安装一些常用的 Python 库,如 pandas、numpy、matplotlib、statsmodels 和 yfinance 等。可以使用以下命令进行安装:
pip install pandas numpy matplotlib statsmodels yfinance
2. 数据获取
使用 yfinance 库从雅虎财经获取金融时间序列数据,例如获取苹果公司(AAPL)的股票价格数据。
import yfinance as yf
# 下载苹果公司股票数据
ticker = 'AAPL'
start_date = '2020-01-01'
end_date = '2023-12-31'
data = yf.download(ticker, start=start_date, end=end_date)
# 查看数据前几行
print(data.head())
3. 数据预处理
对获取的数据进行清洗和处理,例如处理缺失值、计算收益率等。
import pandas as pd
# 处理缺失值
data = data.dropna()
# 计算每日收益率
data['Returns'] = data['Close'].pct_change()
# 去除第一行的 NaN 值
data = data.dropna()
print(data.head())
4. 数据可视化
使用 matplotlib 库对数据进行可视化,观察数据的趋势和特征。
import matplotlib.pyplot as plt
# 绘制收盘价和收益率曲线
plt.figure(figsize=(12, 6))
plt.subplot(2, 1, 1)
plt.plot(data['Close'])
plt.title('Apple Stock Closing Prices')
plt.xlabel('Date')
plt.ylabel('Price')
plt.subplot(2, 1, 2)
plt.plot(data['Returns'])
plt.title('Apple Stock Daily Returns')
plt.xlabel('Date')
plt.ylabel('Returns')
plt.tight_layout()
plt.show()
5. 平稳性检验
使用 statsmodels 库中的 adfuller 函数进行单位根检验,判断时间序列是否平稳。
from statsmodels.tsa.stattools import adfuller
# 进行 ADF 检验
result = adfuller(data['Returns'])
print('ADF Statistic: {}'.format(result[0]))
print('p-value: {}'.format(result[1]))
print('Critical Values:')
for key, value in result[4].items():
print('\t{}: {}'.format(key, value))
if result[1] <= 0.05:
print("The time series is stationary.")
else:
print("The time series is non-stationary.")
6. 模型拟合与预测
如果时间序列是平稳的,可以使用自回归积分滑动平均模型(ARIMA)进行拟合和预测。
from statsmodels.tsa.arima.model import ARIMA
# 拟合 ARIMA 模型
model = ARIMA(data['Returns'], order=(1, 0, 1))
model_fit = model.fit()
# 进行预测
n_steps = 10
forecast = model_fit.get_forecast(steps=n_steps)
forecast_mean = forecast.predicted_mean
print(forecast_mean)
7. 结果评估
使用均方误差(MSE)、平均绝对误差(MAE)等指标评估模型的预测性能。
from sklearn.metrics import mean_squared_error, mean_absolute_error
# 假设我们有真实值和预测值
y_true = [1, 2, 3, 4, 5]
y_pred = [1.2, 2.1, 2.9, 4.2, 5.1]
mse = mean_squared_error(y_true, y_pred)
mae = mean_absolute_error(y_true, y_pred)
print(f"Mean Squared Error: {mse}")
print(f"Mean Absolute Error: {mae}")
综上所述,通过这些步骤,你可以使用 Python 完成金融时间序列的获取、预处理、可视化、平稳性检验、模型拟合与预测以及结果评估等任务。

浙公网安备 33010602011771号