当前位置: 首页 > news >正文

比特币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

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

附录:每日股票行情数据

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Docker 镜像制作(Dockerfile)
  • C++之第十二课
  • 华为OD机试 - 二维伞的雨滴效应(Python/JS/C/C++ 2024 E卷 200分)
  • 【新手上路】衡石分析平台使用手册-租户管理
  • 硬件看门狗导致MCU启动时间慢
  • Flask-JWT-Extended登录验证
  • python基础(1)pyenv安装和对Django使用
  • Python 入门教程(4)数据类型 | 4.5、字符串类型
  • Scala尾递归解决爆栈问题
  • Python VS Golng 谁更胜一筹?
  • 智能化技术在灌区管理中的应用前景
  • 开源模型应用落地-qwen模型小试-调用Qwen2-VL-7B-Instruct-更清晰地看世界-集成vLLM(二)
  • AI教你学Python 第12天 : Lambda 表达式
  • Vue3使用shapefile读取矢量数据,以数组形式返回坐标点
  • [SDX35+WCN6856]SDX35 + WCN6856 WiFi导致系统crash问题分析及解决方案
  •  D - 粉碎叛乱F - 其他起义
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • Object.assign方法不能实现深复制
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 欢迎参加第二届中国游戏开发者大会
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 盘点那些不知名却常用的 Git 操作
  • 浅谈Golang中select的用法
  • 微信小程序实战练习(仿五洲到家微信版)
  • 温故知新之javascript面向对象
  • 学习JavaScript数据结构与算法 — 树
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • ​一些不规范的GTID使用场景
  • # 飞书APP集成平台-数字化落地
  • #HarmonyOS:Web组件的使用
  • #include到底该写在哪
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (42)STM32——LCD显示屏实验笔记
  • (C语言)二分查找 超详细
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (定时器/计数器)中断系统(详解与使用)
  • (分布式缓存)Redis分片集群
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (十五)使用Nexus创建Maven私服
  • .net core 依赖注入的基本用发
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .NET Framework、.NET Core 、 .NET 5、.NET 6和.NET 7 和.NET8 简介及区别
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • /var/lib/dpkg/lock 锁定问题
  • [000-01-030].Zookeeper学习大纲
  • [AMQP Connection 127.0.0.1:5672] An unexpected connection driver error occured
  • [C#]winform部署yolov5-onnx模型
  • [C++提高编程](三):STL初识
  • [Codeforces1137D]Cooperative Game
  • [Day 16] 區塊鏈與人工智能的聯動應用:理論、技術與實踐
  • [FBCTF2019]RCEService1
  • [git]git命令如何取消先前的配置