如何使用Python进行金融时间序列分析?


前言

金融时间序列分析是金融领域的重要工作,借助 Python 能够高效开展此类分析。以下为你介绍使用 Python 进行金融时间序列分析的步骤和示例代码:


1.环境配置

python3.13.2安装

python3.13.2安装详细步骤(附安装包):https://blog.csdn.net/2501_91538706/article/details/147315428

python3.13.2安装包下载链接:https://pan.quark.cn/s/4f31768c8de2

安装必要的库

在开始之前,你需要安装一些常用的 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 完成金融时间序列的获取、预处理、可视化、平稳性检验、模型拟合与预测以及结果评估等任务。

posted @ 2025-04-25 22:17  夏天记录  阅读(42)  评论(0)    收藏  举报  来源