时间序列与加密货币:为什么传统预测会失效?
时间序列(Time Series)是按时间顺序排列的数据点。在金融领域,我们通常假设“历史会重演”,于是用自回归模型(Autoregressive Model)去捕捉趋势、周期与季节性。然而,比特币的价格告诉我们:当“过去不再重复”,经典框架就动摇了。
先记住这条公式:
预测值 = 可重复模式 + 无法解释的波动
只要无法解释的波动占比越高,纯粹基于历史的模型就越容易失效。本文将演示如何在一次真实场景里识别这一临界点,用Python、Skforecast与LightGBM做一次没有“事后诸葛亮”的预测,并诚恳地告诉你:什么时候该说“我预测不了”。
用例:比特币日线数据(2013–2022)
自2013-04-28至2022-01-01,共3171个交易日,包含了比特币的最高价、最低价、开盘价、收盘价、成交量与总市值。数据可直接从GitHub拉取:
import pandas as pd
url = "https://raw.githubusercontent.com/skforecast/skforecast-datasets/main/data/bitcoin.csv"
btc = pd.read_csv(url, parse_dates=['date']).set_index('date').asfreq('D')我们尝试预测的是最后一列的 close——每日收盘价。可以看到,这一价格区间横跨 128 USD → 67,500 USD,量级变化惊人。
特征工程:把减半事件当成外生变量
比特币减半(Bitcoin halving)每 210 000 个区块发生一次,大约四年一次,直接影响矿工收益,间接影响市场供需。我们已经历的三次减半分别发生在:
- 2012-11-28(50 → 25 BTC)
- 2016-07-09(25 → 12.5 BTC)
- 2020-05-11(12.5 → 6.25 BTC)
利用剩余区块数,可估算下一次减半大约在 2024-05-06。之后在数据里构建两列外生变量:
| 名称 | 含义 |
|---|---|
reward | 当日区块奖励 |
countdown_halving | 距离下一次减半的天数倒计时 |
这两列将辅助模型捕捉可能的长周期影响。
可视化探索:价格分布有何玄机?
我们把蜡烛图、分布密度图、年度与月度箱体图跑了一遍,发现:
- 长期慢牛后暴力拉升:2013-2020 价格高度集中在 2 万美元以内;2021 起跳至 3-6 万美元,分布极度右偏。
- 年度季节性:每年12月至次年2月波动显著放大;其他月份差异不大。
- 缺乏短周期重复:周与日几乎没有明显循环,说明中短期没有稳定可复制的形态。
👉 比特币背后真正驱动价格的是什么?这里给出一个理性投资者不可错过的视角。
这些洞察提醒我们:如果把价格本身当目标,分布不均+高噪声=模型很容易翻车。一个常用技巧是改做收益率预测或涨跌方向判断,以降低对极端值的敏感。
基线:随机游走(Random Walk)
随机游走理论假设“下一刻价格=此刻价格+随机扰动”,因此最朴素却不易超越的基线是:
- 预测值(t+1) = 当前值(t)
用它与 2021-07-01 至 2022-01-01 的实价对比,mean_absolute_error 为 1260 USD。看似不小,但你很快发现:更复杂的模型未必更好。
递归自回归实验:多lag Lightning GBM
我们用 LightGBM 作为内核对递归自回归器(ForecasterRecursive)做回测,分别尝试 lag=1,7,30。结果汇总如下:
| lags | 均在1步预测 | MAE |
|---|---|---|
| 1 | 全同 | ≈1260 |
| 7 | 略降 | ≈1257 |
| 30 | 几乎不变 | ≈1255 |
结论:在1步向前的滚动回测中,增加历史lag不显著改善误差。这与我们之前通过自相关函数(ACF/PACF)发现的“只有lag1显著”完全吻合。
FAQ:进一步疑问与解答
Q1:为什么1步滞后(lag=1)就已足够?
A:短线比特币的相邻两日价格差符合近似随机游走,更高阶lag信号极其微弱,LightGBM无法有效提取。
Q2:可以引入技术指标增加特征吗?
A:尝试RSI、MACD等指标的确能降低线下验证误差,但一旦外推,过拟合风险极高;模型对噪音的记忆大过模式。
Q3:把目标改为涨跌方向,准确率会更高吗?
A:方向分类准确率在55–58%徘徊,略优于盲猜50%,但不足以覆盖交易摩擦成本。
Q4:多步预测(t+n, n>1)是否可行?
A:误差呈线性甚至指数级放大,对高频交易难以落地。
Q5:深度学习(RNN、Transformer)能拯救吗?
A:长序列记忆对宏观序列可能有效,但比特币的跳跃性新闻事件(监管、宏观流动性)仍会把“黑天鹅”误差带进远场。
Q6:那有什么可行思路?
A:把预测目标拆小,例如只预测“次日波动区间”或“极端波动概率”,再配合资金管理。或者忠实承认自己无法预测,以资产配置替代择时。
结果:何时接受“我不知道”
通过一次完整的建模实验,我们发现:
- 2013–2020 比特币价格可用“低斜率随机游走向上加漂移”近似;
- 2020–2022 疫情流动性与减半叠加,让显著的周期性替换成“一次性跳变”;
- 高噪+非平稳 使得传统统计/树模型/深度学习都无法在 点估计 层面显著优于随机游走。
换句话说,把过去100%投射到未来的假设在比特币市场破碎了。
👉 想继续深入加密货币的波动规律?这里为你准备了可交互的链上数据接口。
最后在代码里保留的误差表,Random Walk 几乎就是门面担当,提醒我们:拒绝过度拟合的勇气也是一门技能。
结语:风险意识就是最好的“预测”
在金融世界里,“不会重复的历史”才是真正的常识。本文不是要泼冷水,而是告诉你:
- 任何预测都伴随不可观测的方差;
- 先把数据工程和风险控制放首位,再谈模型;
- 坦然说出“我不知道”,才有可能躲开下一次高杠杆爆仓的悬崖。
愿每一位用Python探索市场的数据爱好者,都能把 不确定性的镰刀 磨成 风险管理的盾牌。