通过近九年的历史数据,我们融合 K-Means 聚类与 LSTM 神经网络,一步步拆解比特币的价格逻辑,并提供面向未来的可操作思路。全程零广告,只留关键洞察与可复制代码片段。
1|研究背景:为什么要重访比特币
关键词:比特币、加密货币、投资决策、量化分析、LSTM 模型
“过去十年,比特币用波动诠释了风险与收益并存。”
它受到宏观政策、链上数据、机构操盘、甚至社媒舆论的交叠影响。传统 K 线与指标已难以完整描述市场状态,因此我们需要:
- 用波动+成交量的多维特征重新给市场“拍照”;
- 用聚类划清牛市、熊市、震荡市边界;
- 用LSTM 模型把复杂非线性映射为可操作的买卖概率。
本项目以 2014-09-18 至 2024-01-21 的日线数据为例(CoinDesk BTC/USD),语言为 Python,面向所有想“用数据说话”的读者。如果你只关心结论,可直接跳到第 8 章「总结与 FAQ」。若你打算复现实验,请先确保安装下列依赖:
pip install pandas tensorflow seaborn scikit-learn keras-tuner matplotlib2|数据准备与清洗
核心字段: Date、Open、High、Low、Close、Volume。
数据集唯一缺失的是 2024-01-20 全天,缺失量 <0.01%,使用线性插值填补即可:
df = pd.read_csv('BTC-USD.csv', parse_dates=['Date'])
df['Close'] = df['Close'].interpolate()为了消除量纲差异,后续所有分析都对价格取自然对数,资金量取对数后再标准化。
常见问题一览:
- 问:为什么不用 Adj Close?
答:加密货币无股息、无拆股,Adj Close 与 Close 完全一致。 - 问:节假日或周末是否导致跳空?
答:加密货币 24×7 连续交易,无需对齐交易日历。
3|五步可视化:先让数据自己讲故事
3.1 全景 K 线 & 重⼤事件映射
- 2014-2016: 熊市磨底,波动集中于 200-1,200 USD。
- 2017-12: ICO 狂潮直冲 19,800 USD 高点。
- 2018-12: 监管重锤砸到 3,200 USD。
- 2020-Q4: MicroStrategy、Tesla 建仓,牛市启动至 69,000 USD。
- 2022: 美联储激进加息,估值挤压到 15,500 USD。
- 2023-Q4: ETF 通过预期再度点燃,冲上 45,000 USD。
3.2 均线系统:黄金 vs 死亡交叉
- 30 日均线(蓝)用于短期趋势;100 日均线(橙)锚定中期。
- 2020-07 黄金交叉:随后 12 个月涨幅 >350%。
- 2022-01 死亡交叉:随后 11 个月跌幅 >75%。
当前(2024-01)再次处于金叉上方,可辅助判定“右侧机会”。
3.3 RSI 热力
- RSI>70:超买警戒线,出现在 2017-12、2021-04、2021-11。
- RSI<30:超卖入场区,出现在 2018-12、2020-03、2022-11。
3.4 布林带宽
布林带张口角度 vs 收盘价位置,可拆解为 4 个信号:
① 价格升穿上轨 → 短线追多;② 价格跌穿下轨 → 看恐慌盘;
③ 带宽收窄 → 暴风雨前的宁静;④ 带宽拉开 → 波动盛宴。
3.5 成交量异常
两次巨量: 2017-12 日成交 > 650k BTC;2020-12-20 突破 1.5M BTC。
量在价先,天量后三天若未创出新高,那可视为多头衰竭。
4|K-Means 聚类:把十年切出五张“市场照片”
| 聚类 | 价格波动区间 | 成交量区间 | 市场称呼 |
|---|---|---|---|
| 0 | 中等 500-1,500 USD | 中等 20k-40k BTC | 调整蓄势期 |
| 1 | 低 < 500 USD | 低 < 10k BTC | 熊市冬眠期 |
| 2 | 极高 >4,000 USD 极端 12k | 高 50k-100k 极端 350k | 牛市癫狂期 |
| 3 | 单日 4,000 USD | 极高 350k BTC | 极端事件 |
| 4 | 高 2,000-4,000 USD | 高 30k-50k BTC | 牛市主升浪 |
提示:聚类非黑箱,轮廓系数 0.46 指向 5 类划分最稳定。
时间轴复盘
- 2014-2017-06: Cluster1 → Cluster0,冬眠转预热。
- 2017-11-15: Cluster4 首次爆表,随后在 6 周翻 3 倍。
- 2022-05: 稳定罕见 Cluster2 回归,伴随 LUNA 雷曼时刻。
- 2023-10至今: Cluster0 交替 Cluster4,高阶震荡,宣告牛市第二幕?
5|LSTM 进行时序预测
5.1 数据塑形
- 滑动窗口: 60 天为样本,预测未来 1 天 Close。
- 归一化: MinMaxScaler 将价格映射到 0-1,避免梯度爆炸。
- 训练/验证/测试: 7:2:1 保持时间顺序。
5.2 基准模型
model = Sequential([
Input(shape=(60, 1)),
LSTM(50, return_sequences=False),
Dropout(0.2),
Dense(1)
])
model.compile(optimizer='adam', loss='mse')表现:
MSE ≈ 1.87E6;MAE ≈ 921 美元,肉眼可见峰部低估、底部长阴影。
5.3 超参数调优(Keras Tuner)
搜索空间举例:
- lstm_units ∈ {32, 64, 96}
- dropout ∈ {0.1, 0.3, 0.5}
- learning_rate ∈ {1e-4, 3e-3, 1e-2}
最优组合(已通过贝叶斯搜索确认):
{
"lstm_layers": 2,
"units": [64, 32],
"dropout": [0.2, 0.3],
"lr": 0.002
}优化后结果:
- MSE 下降 52% → 8.97E5
- MAE 下降 28% → 664 美元
限制与对策
LSTM 不屈服于黑天鹅:
- 2020-03-12 史诗级暴跌 -40%,模型仅能提前 24h 给出极弱信号。
- 2021-11 新高,模型低估 6.8%。
→ 建议叠加「波动率聚类 + 宏观信息」联合推断,而非单押 LSTM。
6|实操指南:如何把研究落地交易
- CLUSTER 先行: 每晚运行聚类脚本判断当日所属簇。
若触发 Cluster2/4 且 RSI<80 → 考虑趋势追随。 - LSTM 次日价预测: 若预测价 > 今日收盘价 2% 且成交量预示放大,可执行轻仓多单。
- 风控脚本: 任何仓位预设最大亏损 3% 的硬止损,符合 Cluster0 常态则轻参与或不参与。
7|风险声明
- 加密货币 7×24 不停盘,回撤可达 50% 以上;
- 政策事件(加息、ETF 审批、监管法案)影响非对称;
- 所有模型在极端情景均会失效,请勿孤注一掷。
本文仅为技术学习与交流,不构成投资建议。
8|常见问题快答(FAQ)
1. 为何不用 Transformer?
Transformer 在长序列任务更占优,但 BTC 仅 3,000+ 日频样本;LSTM 轻量级,单卡 2 分钟训练完毕。
2. 聚类数目能否动态调节?
可引入 HDBSCAN 实现自适应聚类,但对参数敏感,需回测验证。
3. 实盘延迟怎么解决?
用交易所 API 轮询 1-min K 线,本地 GPU 推理整体延迟 <1.5 秒。
4. 是否可迁移至以太坊?
方法论完全通用,仅需替换数据集;但 ETH 受 DeFi 事件冲击更高频,需把成交量维度再细拆分。
5. 模型多久需要再训练?
半年一次即可;若遇到极端宏观拐点(如 FTX 破产),即时滚动重训。