当前位置:   article > 正文

Python探索金融数据进行时间序列分析和预测_python时间序列预测

python时间序列预测

大家好,时间序列分析是一种基于历史数据和趋势分析进行预测的统计技术。它在金融和经济领域非常普遍,因为它可以准确预测趋势并做出明智的决策。本文将使用Python来探索经济和金融数据,执行统计分析,并创建时间序列预测

我们将在本教程中使用NumPy、Pandas和Matplotlib等不同的Python库,此外还将介绍yfinance库,并使用它来从Yahoo Finance下载金融数据。

安装库

在开始之前,安装必要的库,打开终端并运行以下命令:

pip install pandas numpy matplotlib yfinance

接下来,打开一个新的Jupyter Notebook或选择的任何Python环境,开始实现代码。

数据收集

为了演示如何使用Python进行时间序列分析和预测,将使用微软公司的每日调整收盘价,这些数据由Yahoo Finance提供。在下载数据之前,导入所需的库:

  1. import pandas as pd
  2. import numpy as np
  3. import yfinance as yf
  4. import matplotlib.pyplot as plt
  5. # 设置可视化的样式。
  6. plt.style.use('fivethirtyeight')

接下来,定义微软公司的代码、开始和结束日期。

  1. # 定义代码并下载数据。
  2. MSFT = yf.download('MSFT', start='2010-01-01', end='2022-06-30')

yfinance库提供了一种简单的方法来下载特定代码的金融数据,开始和结束日期表示我们要下载的数据时间段,本文为2010年1月至2022年6月。

探索性数据分析

现在已经下载了数据,然后探索一下数据以更好地了解它的结构和特征,可以使用Pandas来分析数据。

  1. # 显示数据的前5行。
  2. print(MSFT.head())
  3. # 显示数据的统计摘要。
  4. print(MSFT.describe())

第一行代码将数据的前5行输出到控制台。它给我们一个快速查看数据的结构——显示日期、开盘价、最高价、最低价、收盘价和调整后的收盘价。

第二行代码提供了数据的统计摘要,显示计数、平均值、标准差、最小值、最大值和四分位数值。

接下来,让我们绘制每日调整后的收盘价,使数据可视化。

  1. # 绘制微软公司的调整后收盘价。
  2. plt.figure(figsize=(12,6))
  3. plt.plot(MSFT['Adj Close'], label='Adjusted Close')
  4. plt.title('Microsoft Adjusted Close Price')
  5. plt.xlabel('Date')
  6. plt.ylabel('Adjusted Close Price ($)')
  7. plt.legend(loc='upper left')
  8. plt.xticks(rotation=45)
  9. plt.show()

 时间序列分析

接下来需要进行时间序列分析,以深入了解数据的时间行为。自相关函数(ACF)和偏自相关函数(PACF)用于识别连续观测值和预测值之间的关系,可以使用statsmodels库来计算ACF和PACF。

  1. from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
  2. # 绘制自相关和偏自相关函数
  3. fig, ax = plt.subplots(2, figsize=(12,6))
  4. plot_acf(MSFT['Adj Close'], lags=20, ax=ax[0])
  5. plot_pacf(MSFT['Adj Close'], lags=20, ax=ax[1])
  6. plt.show()

上面的代码绘制了微软公司调整后的收盘价的ACF和PACF,滞后期最长为20。

 从ACF图中,我们可以观察到自相关值在缓慢下降。PACF图表明只有在滞后1时期,才存在显著的自相关性,这表明第一个滞后期或时间段与当前观察值具有最强的相关性。

预测

现在我们已经分析了数据并了解了其结构和趋势,让我们使用Prophet库进行一些预测。

  1. pip install prophet
  2. from prophet import Prophet

首先,我们将创建一个新的DataFrame,仅捕获我们分析所需的列。

  1. # 创建一个新的DataFrame
  2. data = MSFT.loc[:, ['Adj Close']]
  3. data.head()

接下来,我们将重命名列以适应Prophet的命名约定。

  1. # 重命名列以适应Prophet的命名约定
  2. data = data.reset_index()
  3. data = data.rename(columns={'Date':'ds', 'Adj Close':'y'})
  4. data.head()

上述代码将DataFrame中必要的列重命名以适应Prophet的命名约定,ds列表示日期,而y列表示我们要预测的值。

现在,我们将数据拆分为训练集和测试集,并使用Prophet库进行预测。

  1. train_data = data[data['ds'] < '2021-07-01']
  2. test_data = data[data['ds'] >= '2021-07-01']
  3. # 创建模型并拟合训练数据
  4. model = Prophet()
  5. model.fit(train_data)
  6. # 定义一个与预测范围一致的新的DataFrame
  7. future = test_data[['ds']]
  8. forecast = model.predict(future)
  9. # 绘制预测图
  10. model.plot(forecast)
  11. plt.title('Microsoft Adjusted Close Price: Actual vs. Forecast')
  12. plt.xlabel('Date')
  13. plt.ylabel('Adjusted Close Price ($)')
  14. plt.show()

上述代码创建了一个Prophet模型并拟合训练数据,未来的DataFrame用ds列表示我们的预测日期。然后我们进行预测,并将结果保存在forecast DataFrame中,最后使用模型的plot()函数绘制预测图。

 总结

时间序列分析和预测是获得不同领域数据洞察力的重要统计技术。本文从雅虎金融收集数据,并使用Python进行数据分析,包括探索性数据分析和预测。

本文演示了各种可视化技术,例如绘制移动平均线、ACF和PACF图,同时还进行了时间序列预测,这在金融和经济中是做出明智的投资决策所必需的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/167845?site
推荐阅读
相关标签
  

闽ICP备14008679号