您的位置:首页 > 健康 > 美食 > 比特币10年价格数据(2014-2024)分析(进阶2_时间序列分析)

比特币10年价格数据(2014-2024)分析(进阶2_时间序列分析)

2024/10/6 6:43:59 来源:https://blog.csdn.net/2301_80651329/article/details/142320944  浏览:    关键词:比特币10年价格数据(2014-2024)分析(进阶2_时间序列分析)

数据入口:【每周挑战】比特币10年价格数据可视化和量化分析 - Heywhale.com

本数据集包含 2014 - 2024 的比特币美元价格数据,具体包含比特币每日的开盘价、最高价、最低价、收盘价以及成交量等关键信息。数据说明如下:

字段说明
Date日期,比特币的交易日期
Open (Open price per unit)开盘价,每天比特币交易开始时的价格
High (Highest price per unit)最高价,每天交易期间比特币的最高成交价格
Low最低价,每天交易期间比特币的最低成交价格
Close (Adj Close)收盘价,指当天交易结束时的价格,调整后的收盘价考虑了股息等因素
Volume成交量,每天比特币的交易量,通常以比特币的单位表示

在发布的基础与进阶一中,具体分析了价格波动与趋势分析、成交量与市场波动关系分析、价格异常波动检测和成交量异常值检测以及市场特征聚类分析等。在本文中,将从时间序列分析与预测角度入手。

首先读取处理过的数据:

import pandas as pd
file_path = 'data.csv'
data = pd.read_csv(file_path)data

一:检测平稳性

data['Date'] = pd.to_datetime(data['Date'])
data.set_index('Date', inplace=True)
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 5))
plt.plot(data['Adj Close'], label='Adj Close')
plt.title('Time Series of Adjusted Closing Price')
plt.xlabel('Date')
plt.ylabel('Price')
plt.legend()
plt.grid(True)
plt.show()

我们绘制了“调整后的收盘价”的时间序列图,以便更好地了解数据的趋势和季节性:

从“调整后的收盘价”时间序列图中,我们可以看到数据呈现出一定的波动性,但没有明显的趋势或季节性模式。接下来,我们将使用ADF(Augmented Dickey-Fuller)测试来确定数据的平稳性。如果数据不是平稳的,我们可能需要进行差分以使其平稳。

from statsmodels.tsa.stattools import adfullerresult = adfuller(data['Adj Close'])adf_test_statistic = result[0]
p_value = result[1]adf_test_statistic, p_value

ADF测试的统计量为-1.332,p值为0.614。由于p值大于常用的显著性水平(例如0.05),我们不能拒绝原假设,即数据存在单位根,因此数据不是平稳的。

为了使数据平稳,我们可以对数据进行差分。首先,我们将尝试一阶差分,并再次进行ADF测试以检查平稳性。

data_diff = data['Adj Close'].diff().dropna()result_diff = adfuller(data_diff)adf_test_statistic_diff = result_diff[0]
p_value_diff = result_diff[1]adf_test_statistic_diff, p_value_diff

对数据进行一阶差分后,ADF测试的统计量为-8.964,p值接近0。由于p值远小于常用的显著性水平(例如0.05),我们可以拒绝原假设,即差分后的数据不存在单位根,因此数据是平稳的。

接下来,我们将绘制差分后数据的ACF和PACF图,以确定ARIMA模型的参数。

二:确定ARIMA模型的参数

from statsmodels.graphics.tsaplots import plot_acf, plot_pacfplt.figure(figsize=(12, 6))plt.subplot(1, 2, 1)
plot_acf(data_diff, lags=20, ax=plt.gca())
plt.title('ACF of First-Differenced Data')plt.subplot(1, 2, 2)
plot_pacf(data_diff, lags=20, ax=plt.gca())
plt.title('PACF of First-Differenced Data')plt.tight_layout()
plt.show()

从ACF和PACF图中,我们可以观察到:

  • ACF图显示滞后项逐渐减少,但没有明显的截尾。
  • PACF图在滞后1后迅速下降,表明ARIMA模型中的AR项的阶数可能为1。

基于这些观察结果,我们可以尝试构建ARIMA(1,1,0)模型,其中1,1,0分别代表ARIMA模型中的p,d,q参数。

接下来,我们将使用ARIMA(1,1,0)模型对数据进行拟合,并进行预测。

三:ARIMA模型建立与预测

from statsmodels.tsa.arima.model import ARIMAmodel = ARIMA(data['Adj Close'], order=(1, 1, 0))model_fit = model.fit()forecast = model_fit.forecast(steps=5)forecast_values = forecast.tolist()
forecast_values

ARIMA(1,1,0)模型预测的接下来五个时间步的“调整后的收盘价”如下:

  1. 41623.5449
  2. 41623.5492
  3. 41623.5491
  4. 41623.5491
  5. 41623.5491

这些预测值是可以与实际结果相比较,从而评价模型的优劣性。

附录:每日股票行情数据

想要探索多元化的数据分析视角,可以关注之前发布的相关内容。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com