基于聚类与LSTM对比特币价格深度分析与预测
1.项目背景
比特币作为全球最具影响力的加密货币之一,其价格受到多种复杂因素的共同作用,包括市场情绪、政策变化、大型机构的投资行为等,这些因素在不同的市场阶段对比特币价格波动产生直接或间接的影响。通过对比特币市场的深入分析,可以更清晰地了解价格动态和市场行为,进而为投资决策提供更可靠的依据。
本项目对比特币市场进行了全面而深入的分析,采用多种技术指标和数据分析方法,揭示了比特币价格动态和市场行为的关键特征,详细刻画了比特币的市场波动性,还提供了对市场结构和未来价格走势的深刻洞察,这些成果对于投资者、交易者和市场研究人员具有重要的参考价值,能够帮助他们制定更加明智且数据驱动的决策。然而,尽管本项目揭示了比特币市场的许多关键特征,投资者仍需意识到虚拟货币市场的高风险性。比特币等虚拟货币的价格波动极大,常常受全球市场情绪、政策变化和大型机构投资行为的影响,容易出现剧烈的价格波动,此外,虚拟货币市场缺乏足够的监管保护,存在较大的金融风险。
2.数据说明
字段名 | 说明 |
---|---|
Date | 交易日期 |
Open | 开盘价(当天交易开始时的价格) |
High | 最高价(当天交易中的最高价格) |
Low | 最低价(当天交易中的最低价格) |
Close | 收盘价(当天交易结束时的价格) |
Adj Close | 复权收盘价(经过调整的收盘价格) 在加密货币中,调整收盘价通常较少使用,因为它不涉及股息或拆股。 |
Volume | 成交量(当天的比特币交易总量) |
3.Python库导入及数据读取
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from pandas.plotting import register_matplotlib_converters
import numpy as np
from matplotlib.ticker import MaxNLocator
from sklearn.preprocessing import StandardScaler,MinMaxScaler
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense, Dropout
from sklearn.metrics import mean_squared_error, mean_absolute_error
from tensorflow.keras import Input
from tensorflow.keras.optimizers import Adam
from keras_tuner import RandomSearch
import seaborn as sns
from keras_tuner.engine.hyperparameters import HyperParameters
data = pd.read_csv('/home/mw/input/09068560/BTC-USD (2014-2024).csv')
4.数据预览及预处理
查看数据信息:
这里先处理日期,把日期转为正确的日期格式,再对缺失值进行处理。
查找缺失值所在的行:
发现数据在“2024-01-20”这一天全部都丢失了,考虑丢失的比较少,可以使用插值法进行填充。
可以看到,通过插值法填充的数据,还是相对合理的,这里观察数据的起始时间。
该数据集的日期范围是从 2014年9月18日 到 2024年1月21日,并且日期列中没有缺失值。数据是连续的。
5.可视化分析
5.1K线图

-
长期增长趋势:从2014年到2024年,比特币价格整体呈现显著的上升趋势,尽管存在周期性波动。
-
主要周期:
- 2014-2016年:价格低位徘徊期
- 2017年:第一个主要牛市,价格急剧上升
- 2018-2020年初:长期调整期
- 2020年中-2021年底:第二个主要牛市,创历史新高
- 2022年:大幅回调
- 2023年至今:新一轮上涨趋势
-
关键价格点:
- 2017年末:首次突破20,000美元
- 2021年4月和11月:两次突破60,000美元,达到历史最高点
-
波动性:
- 早期(2014-2016):相对低波动
- 中期(2017-2019):波动性增大
- 近期(2020-2024):呈现更大幅度的价格波动
-
调整幅度:
- 2018年初的回调:从近20,000美元跌至约3,000美元
- 2022年的回调:从约69,000美元高点跌至约15,000美元
这里由Claude列出比特币价格走势中的重要事件节点,并将其与价格变动相关联,以下是主要事件及其对应的时间点:
-
2017年末急涨:
- 价格从低位急剧上涨至约20,000美元高点
- 背景:首次加密货币热潮,比特币期货合约推出
-
2018年初大跌:
- 从高点快速回落至约6,000美元
- 事件:多国开始收紧加密货币监管
-
2020年末至2021年初快速上涨:
- 价格突破50,000美元
- 背景:机构投资者大规模进入,特斯拉宣布购入比特币
-
2021年11月历史新高:
- 达到接近70,000美元的历史最高点
- 事件:首只比特币期货ETF在美国上市
-
2022年中大幅下跌:
- 价格跌破20,000美元
- 背景:全球加息周期开启,加密货币市场整体低迷
-
2023年初至今显著上涨:
- 价格再次突破40,000美元
- 背景:比特币现货ETF获批预期升温
5.2价格趋势分析

总体来看,尽管比特币价格有周期性的波动,但整体趋势是上升的,说明比特币在长期内的投资价值依然得到一定的市场认可。

-
短期与长期价格趋势变化:
- 短期趋势(由30天线表示)变化更为频繁,对价格变动反应更敏感
- 长期趋势(由100天线表示)变化相对平缓,反映整体方向
- 2020年底至2021年末,短期和长期趋势都呈现强劲上升
- 2022年上半年,短期和长期趋势均转为下降
- 2023年中期开始,短期和长期趋势再次转为上升
-
买卖信号:
- 黄金交叉(30天线从下向上穿过100天线):买入信号
- 2020年7月出现明显黄金交叉,随后价格大幅上涨
- 2023年初再次出现黄金交叉,预示新一轮上涨趋势
- 死亡交叉(30天线从上向下穿过100天线):卖出信号
- 2021年中期短暂出现死亡交叉,但很快恢复
- 2022年初出现显著死亡交叉,随后价格大幅下跌
- 黄金交叉(30天线从下向上穿过100天线):买入信号
-
趋势确认:
- 牛市期间:价格线位于30天线之上,30天线高于100天线
- 熊市期间:价格线位于30天线之下,30天线低于100天线
- 2023年下半年,价格线突破并保持在两条均线之上,确认上升趋势
-
波动性观察:
- 价格波动幅度随时间增大,但近期相对2021年峰值有所收窄
- 均线之间的距离反映市场波动性,距离越大表示波动越剧烈
-
当前市场状况(2024年初):
- 价格处于30天和100天均线之上,表明短期和中期趋势向好
- 30天线位于100天线之上,进一步确认上升趋势
- 需密切关注价格是否能持续保持在均线之上,以确认趋势持续性
5.3相对强弱指数

超买:当资产的价格在短时间内快速上涨到超过其内在价值或历史平均水平时,称为超买,通常表明投资者情绪过于乐观,价格可能存在回调的风险。
超卖:当资产的价格在短时间内快速下跌到低于其内在价值或历史平均水平时,称为超卖,通常表明投资者情绪过于悲观,价格可能存在反弹的机会。
超买和超卖的概念在技术分析中用于帮助识别潜在的价格反转点。
RSI值显示了该股票的强弱程度。通常RSI值高于70表示股票处于超买状态,可能有回调的风险;低于30表示股票处于超卖状态,可能有反弹的机会。
5.4布林带

-
长期趋势:
- 从2015年到2024年,比特币价格整体呈现上升趋势
-
重要价格突破:
- 2017年末和2021年初,价格突破上轨,预示了显著的上涨行情
- 2022年中期,价格跌破下轨,标志着熊市的到来
-
波动性变化:
- 2021年布林带显著展开,反映了该时期巨大的市场波动性
- 相比之下,2019-2020年布林带相对收窄,表明那段时期波动较小
-
近期趋势(2023-2024):
- 价格逐渐上升,突破中轨,显示出上升趋势
- 布林带开始缓慢展开,可能预示新一轮波动性增加
-
当前市场状况:
- 价格位于中轨和上轨之间,暗示短期内可能继续上涨
- 但尚未突破上轨,表明上涨动能还不够强劲
5.5成交量走势

- 2021年初出现了最显著的成交量峰值,远超其他时期,可能与当时比特币价格创历史新高有关。
- 成交量随着价格波动而波动,在价格较高时,成交量相对较大,尤其是在价格剧烈波动期间。
5.6比特币价格波动与异常检测

- 2015-2017年:价格波动相对平稳。
- 2017年末-2018年初:出现第一次显著的价格波动和异常点集中,可能是由ICO热潮和比特币期货合约推出推动。
- 2020年后:价格波动和异常点明显增多,特别是2021年达到峰值,可能是受机构投资者进入、特斯拉购买比特币、萨尔瓦多将比特币列为法定货币等因素影响。
5.7比特币成交量与异常检测

- 2015-2017年:成交量较低,无明显异常点。
- 2017年末-2018年初:首次出现明显的成交量增长。
- 2020年后:成交量显著增加,异常点更为频繁,反映机构投资者大规模进入市场,以及比特币价格创新高时的市场狂热。
6.市场特征聚类分析
6.1数据预处理
选择用于聚类的特征: 价格波动和成交量,并且进行标准化处理。
6.2K-Means聚类

1.左图为肘部法则图,通过此图可以看到,在聚类数4到5之间,曲线开始明显平缓。
2.右图为轮廓系数图,轮廓系数在聚类数为5时达到最高点。
结合两个图,选择5作为聚类数。




聚类特征概述
-
聚类 0(紫色):中等波动、中等成交量
- 价格波动:中等(约500-1500 USD)
- 成交量:中等(约0.2-0.4)
- 特征:市场稳定期,可能是调整或蓄势阶段
-
聚类 1(蓝色):低波动、低成交量
- 价格波动:最低(< 500 USD)
- 成交量:最低(< 0.1)
- 特征:市场低迷期,可能是早期阶段或熊市底部
-
聚类 2(绿色):极高波动、高成交量
- 价格波动:最高(4000-8000 USD,有极端值超过12000 USD)
- 成交量:较高(0.5-1.0,有极端值接近3.5)
- 特征:市场极度活跃期,可能是牛市顶峰或剧烈波动期
-
聚类 3(单点,2021-02-26)
- 价格波动:高(约4000 USD)
- 成交量:极高(3.5)
- 特征:代表单一极端事件
-
聚类 4(黄色):高波动、高成交量
- 价格波动:高(2000-4000 USD)
- 成交量:高(0.3-0.5)
- 特征:市场活跃期,可能是牛市上升阶段或高度投机期
市场演变分析
-
早期阶段(2014-2017年中)
- 主要表现为聚类1(蓝色),低波动低成交量
- 市场处于萌芽期,参与度低
-
首次爆发期(2017年底-2018年初)
- 出现聚类4(黄色)和聚类2(绿色)
- 市场经历第一次大规模牛市,价格和成交量显著上升
-
调整期(2018-2020年中)
- 主要为聚类0(紫色)和聚类1(蓝色)
- 市场进入调整,波动和成交量回落但仍高于初期水平
-
成熟爆发期(2020年底-2021年)
- 大量聚类2(绿色)和聚类4(黄色)出现
- 市场达到前所未有的高度活跃状态,价格和成交量创历史新高
-
高位波动期(2022-2024年初)
- 聚类0(紫色)、聚类4(黄色)和少量聚类2(绿色)交替出现
- 市场维持在较高水平但波动性增加,可能进入新的调整期
7.基于LSTM模型预测比特币价格
7.1数据预处理
对数据进行归一化,归一化到0-1之间后,划分数据集,并且将数据调整为 LSTM 所需的格式。
7.2建立模型
原始模型性能:
均方误差 (MSE): 1874807.721
平均绝对误差 (MAE): 920.989
7.3优化参数
最佳超参数:
{‘num_lstm_layers’: 1,
‘lstm_units_0’: 32,
‘dropout_0’: 0.4,
‘dense_units’: 48,
‘learning_rate’: 0.0031256760850773423,
‘lstm_units_1’: 32,
‘dropout_1’: 0.4,
‘lstm_units_2’: 96,
‘dropout_2’: 0.1}
优化后的模型性能:
均方误差 (MSE): 897151.138
平均绝对误差 (MAE): 663.656

- LSTM模型对比特币价格的整体趋势预测较为准确。
- 优化确实带来了一定的改进,但改进幅度不大。
- 对于日常波动,两个模型都表现良好,但在预测大幅度价格变动时仍有改进空间。
- 这种预测模型适合用于中短期趋势分析,但不应过度依赖于其对具体价格点的预测。
8.总结
本项目对比特币市场进行了全面而深入的分析,采用多种技术指标和数据分析方法,揭示了比特币价格动态和市场行为的关键特征。
具体而言,项目包括以下主要组成部分:
-
多维度可视化分析:
- 绘制K线图,直观展示价格变动。
- 进行价格趋势分析,识别长期走势。
- 运用移动平均线,平滑短期波动并突显趋势。
- 通过RSI(相对强弱指数)分析,评估市场过买过卖状况。
- 利用布林带,量化价格波动范围和潜在突破点。
- 分析成交量走势,洞察市场参与度变化。
-
异常检测:
- 实施价格异常波动检测,识别重大市场事件。
- 进行成交量异常值检测,发现潜在的市场操纵或重大交易活动。
-
市场状态聚类分析:
- 应用K-Means聚类算法,将市场状态划分为五个不同类别。
- 深入理解不同市场阶段的特征和行为模式。
-
高级预测模型:
- 构建并优化LSTM(长短期记忆)神经网络模型。
- 对比特币收盘价进行预测,为投资决策提供数据支持。
通过这一系列全面的分析和建模,本项目不仅详细刻画了比特币的市场波动性,还提供了对市场结构和未来价格走势的深刻洞察,这些成果对于投资者、交易者和市场研究人员具有重要的参考价值,能够帮助他们制定更加明智且数据驱动的决策。然而,尽管本项目揭示了比特币市场的许多关键特征,投资者仍需意识到虚拟货币市场的高风险性。比特币等虚拟货币的价格波动极大,常常受全球市场情绪、政策变化和大型机构投资行为的影响,容易出现剧烈的价格波动,此外,虚拟货币市场缺乏足够的监管保护,存在较大的金融风险。
本项目仅供学习参考!建议投资者在做出任何投资决策时,结合市场走势和政策变化,尽量控制风险,避免盲目跟风。
相关文章:

基于聚类与LSTM对比特币价格深度分析与预测
1.项目背景 比特币作为全球最具影响力的加密货币之一,其价格受到多种复杂因素的共同作用,包括市场情绪、政策变化、大型机构的投资行为等,这些因素在不同的市场阶段对比特币价格波动产生直接或间接的影响。通过对比特币市场的深入分析&#…...

YOLOv9改进策略【Neck】| 使用CARAFE轻量级通用上采样算子
一、本文介绍 本文记录的是利用CARAFE上采样对YOLOv9的颈部网络进行改进的方法研究。YOLOv9采用传统的最近邻插值的方法,仅考虑子像素邻域,无法捕获密集预测任务所需的丰富语义信息,从而影响模型在密集预测任务中的性能。CARAFE通过在大感受…...

SpringMVC上
SpringMVC介绍 MVC模型 MVC全称Model View Controller,是一种设计创建Web应用程序的模式。这三个单词分别代表Web应用程序的三个部分: Model(模型):指数据模型。用于存储数据以及处理用户请求的业务逻辑。在Web应用…...

嵌入式软件--51单片机 DAY 2
一、数码管 1.数码管概况 2.设计 (1)硬件设计 我们可以通过阴极控制显示的位置,通过阳极控制显示的内容。两个数码管共有8个阴极引脚和16个阳极引脚,如果所有引脚都直接接入MCU,会造成MCU引脚的极大浪费。 为了节省…...

高精度加法,减法,乘法,除法
加法: 大整数该如何储存? 用数组储存: 把个位放在数下标为0的位置,十位放在数组下标为1的位置(也就是高位放在数组的后面) 因为这样,如果需要增加一位最高位,那我们就可以直接在…...
学习计划(大三上)
第二周 总结Java并发编程的艺术 学习JVM(博客文章) 第三周 学习JVM(博客文章) 图解TCP/IP 4章 第四周 完成简历项目 学习JVM(博客文章) 图解TCP/IP 4章 第五周 完成简历项目 深入学习RocketMQ底层…...

【第0006页 · 数组】寻找重复数
【前言】本文以及之后的一些题解都会陆续整理到目录中,若想了解全部题解整理,请看这里: 第0006页 寻找重复数 今天想讨论的一道题在 LeetCode 上评论也是颇为“不错”。有一说一,是道好题,不过我们还是得先理解了它才…...

移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——10.继承
1.继承的概念及定义 1.1继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保 持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象 程序设计的层…...

uniapp+vue3实现双通道透明MP4播放支持小程序和h5
双通道透明MP4视频播放的截图 以下是合成后结果,二个合并在一起进行播放 下载资源,打开运行直接使用看到效果 https://download.csdn.net/download/qq_40039641/89715780...
汇编:嵌入式软件架构学习资源
成为嵌入式软件架构设计师需要掌握多方面的知识,包括嵌入式系统、实时操作系统、硬件接口、软件设计模式等。 以下是一些推荐的博客和网站,可以帮助你深入学习嵌入式软件架构设计: ### 1. **Embedded.com** - **网址**: [Embedded.com](htt…...

python编程知识(实现数据加密和解密)
👨💻个人主页:开发者-曼亿点 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 曼亿点 原创 👨💻 收录于专栏:…...

如何使div居中?CSS居中终极指南
前言 长期以来,如何在父元素中居中对齐一个元素,一直是一个让人头疼的问题,随着 CSS 的发展,越来越多的工具可以用来解决这个难题,五花八门的招式一大堆,这篇博客,旨在帮助你理解不同的居中方法…...

Redis 篇-深入了解分布式锁 Redisson 原理(可重入原理、可重试原理、主从一致性原理、解决超时锁失效)
🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 本章目录 1.0 基于 Redis 实现的分布式锁存在的问题 2.0 Redisson 功能概述 3.0 Redisson 具体使用 4.0 Redisson 可重入锁原理 5.0 Redisson 锁重试原理 6.0 Redisson WatchDo…...
PostgreSQL中的多版本并发控制(MVCC)深入解析
引言 PostgreSQL作为一款强大的开源关系数据库管理系统,以其高性能、高可靠性和丰富的功能特性而广受欢迎。在并发控制方面,PostgreSQL采用了多版本并发控制(MVCC)机制,该机制为数据库提供了高效的数据访问和更新能力…...

SpringBoot项目-实现简单的CRUD功能和分页查询
背景 本博文主要是创建了一个新的SpringBoot项目,实现基本的增删改查,分页查询,带条件的分页查询功能。是方便初学者学习后端项目的一个比较清晰明了的实践代码,读者可根据博文,从自己动手创建一个新的SpringBoot项目…...
CCF编程能力等级认证GESP—C++2级—20240907
CCF编程能力等级认证GESP—C2级—20240907 单选题(每题 2 分,共 30 分)判断题(每题 2 分,共 20 分)编程题 (每题 25 分,共 50 分)数位之和小杨的矩阵 单选题(每题 2 分,共…...

C语言手撕实战代码_二叉排序树(二叉搜索树)_构建_删除_插入操作详解
二叉排序树习题1.设计算法构建一棵二叉排序树(又称二叉搜索树BST)2.查找二叉排序树中结点为x的结点所在的层数3.删除二叉排序树T中值为x的结点4.查找二叉排序树中所有小于key的关键字5.编写算法,将一棵二叉树t分解成两棵二叉排序树t1和t2,使得t1中的所有…...
YC教父的创始人模式VS职业经理人模式:AI时代的独立开发者崛起
近年来,由风投资助的创始人模式因其相对较低的入门门槛而在创业圈内广受欢迎。然而,真正的挑战在于独立开发者(一人商业)模式。随着AI技术的飞速发展,一人商业模式有望成为未来的主流。本文将探讨独立开发者的工作范围…...

[SUCTF 2019]Pythonginx
给了源码 app.route(/getUrl, methods[GET, POST]) def getUrl():url request.args.get("url")host parse.urlparse(url).hostnameif host suctf.cc:return "我扌 your problem? 111"parts list(urlsplit(url))host parts[1]if host suctf.cc:retu…...
省市县相关校验sql随笔
1.层级校验 要判断一个给定的省、市、区(县)名字是否符合正确的层级关系,假设你的表结构如下: CREATE TABLE regions (id INT PRIMARY KEY,name VARCHAR(255),parent_id INT, -- 指向上一级区域的id,例如市的parent_id指向省的…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...

css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...