比特币价格预测
了解如何使用 TimeGPT 进行金融时间序列预测
引言
时间序列预测是金融领域一项普遍的任务,支持交易、风险管理和战略规划中的决策。尽管它广泛应用,但预测金融资产的未来价格仍然是一个艰巨的挑战,这主要是由于金融市场固有的波动性。
对于那些相信预测这些资产的可能性的人,或者对于其工作需要此类预测的专业人士而言,TimeGPT 是一个强大的工具,可以简化预测过程。
在本教程中,我们将演示如何使用 TimeGPT 进行金融时间序列预测,重点关注比特币价格预测。我们还将展示如何使用 TimeGPT 进行不确定性量化,这对于风险管理和决策至关重要。
目录
1. 加载比特币价格数据
比特币 (₿) 是第一种去中心化的数字货币,也是最受欢迎的加密货币之一。交易在称为区块链的公共账本上进行管理和记录。比特币通过挖矿产生,挖矿是一个涉及解决复杂加密任务以验证交易的过程。这种数字货币可用于商品和服务的支付,与其他货币兑换,或作为价值储存手段。
在本教程中,我们将首先下载美元计价的历史比特币价格数据,格式为 pandas
DataFrame。
日期 | 收盘价 | |
---|---|---|
0 | 2020-01-01 | 7200.174316 |
1 | 2020-01-02 | 6985.470215 |
2 | 2020-01-03 | 7344.884277 |
3 | 2020-01-04 | 7410.656738 |
4 | 2020-01-05 | 7411.317383 |
此数据集包含 2020-01-01 至 2023-12-31 期间比特币的美元收盘价。重要的是要注意,与传统金融资产不同,比特币是全天候交易的。因此,收盘价代表每天特定时间比特币的价格,而不是交易日结束时的价格。
为了方便起见,我们将 Date
和 Close
列分别重命名为 ds
和 y
。
2. TimeGPT 入门
要开始使用 TimeGPT
,您需要实例化 NixtlaClient
类。为此,您需要一个 Nixtla API 密钥。
👍 使用 Azure AI 端点
要使用 Azure AI 端点,请记住同时设置
base_url
参数
nixtla_client = NixtlaClient(base_url="您的 Azure AI 端点", api_key="您的 api_key")
要了解更多关于如何设置 API 密钥的信息,请参阅 设置您的身份验证 API 密钥 教程。
3. 可视化数据
在尝试任何预测之前,最好先可视化我们要预测的数据。NixtlaClient
类为此提供了一个 plot
方法。
plot
方法有一个 engine
参数,允许您选择不同的绘图库。默认是 matplotlib
,但您也可以使用 plotly
进行交互式绘图。
如果您尚未将 DataFrame 的列名重命名为 ds
和 y
,您将需要指定 plot
方法的 time_col
和 target_col
参数
这不仅适用于 plot
方法,也适用于 NixtlaClient
类的所有方法。
4. 使用 TimeGPT 进行预测
现在我们准备使用 TimeGPT 生成预测。为此,我们将使用 NixtlaClient
类中的 forecast
方法。
forecast
方法需要以下参数
-
df
: 包含时间序列数据的 DataFrame -
h
: (int) 预测范围。在本例中,我们将预测未来 7 天。 -
level
: (list) 预测区间的置信水平。考虑到比特币固有的波动性,我们将使用多个置信水平。
ds | TimeGPT | TimeGPT-lo-90 | TimeGPT-lo-80 | TimeGPT-lo-50 | TimeGPT-hi-50 | TimeGPT-hi-80 | TimeGPT-hi-90 | |
---|---|---|---|---|---|---|---|---|
0 | 2024-01-01 | 42269.460938 | 39567.209020 | 40429.953636 | 41380.654646 | 43158.267229 | 44108.968239 | 44971.712855 |
1 | 2024-01-02 | 42469.917969 | 39697.941669 | 40578.197049 | 41466.511361 | 43473.324576 | 44361.638888 | 45241.894268 |
2 | 2024-01-03 | 42864.078125 | 40538.871243 | 41586.252507 | 42284.316674 | 43443.839576 | 44141.903743 | 45189.285007 |
3 | 2024-01-04 | 42881.621094 | 40603.117448 | 41216.106493 | 42058.539392 | 43704.702795 | 44547.135694 | 45160.124739 |
4 | 2024-01-05 | 42773.457031 | 40213.699760 | 40665.384780 | 41489.812431 | 44057.101632 | 44881.529282 | 45333.214302 |
📘 Azure AI 中的可用模型
如果您正在使用 Azure AI 端点,请确保设置
model="azureai"
nixtla_client.forecast(..., model="azureai")
对于公共 API,我们支持两种模型:
timegpt-1
和timegpt-1-long-horizon
。默认情况下使用
timegpt-1
。请参阅本教程了解何时以及如何使用timegpt-1-long-horizon
。
我们可以将刚刚生成的预测传递给 plot
方法,以与历史数据一起可视化预测结果。
为了更仔细地查看预测结果,我们可以放大绘图或使用 max_insample_length
参数指定要绘制的最大样本内观测值数量。请注意,例如将 max_insample_length
设置为 60,将显示最后 60 个历史值以及完整的预测结果。
此外,如果您将 forecast
方法的 add_history
参数设置为 True
,TimeGPT
也会为历史观测值生成预测。这对于评估模型在训练数据上的性能非常有用。
ds | TimeGPT | TimeGPT-lo-50 | TimeGPT-lo-80 | TimeGPT-lo-90 | TimeGPT-hi-50 | TimeGPT-hi-80 | TimeGPT-hi-90 | |
---|---|---|---|---|---|---|---|---|
0 | 2020-02-03 | 9425.702148 | 7622.287194 | 5999.157479 | 5027.779677 | 11229.117103 | 12852.246818 | 13823.624619 |
1 | 2020-02-04 | 9568.482422 | 7765.067467 | 6141.937752 | 5170.559951 | 11371.897376 | 12995.027092 | 13966.404893 |
2 | 2020-02-05 | 9557.082031 | 7753.667077 | 6130.537362 | 5159.159560 | 11360.496986 | 12983.626701 | 13955.004502 |
3 | 2020-02-06 | 9486.123047 | 7682.708092 | 6059.578377 | 5088.200576 | 11289.538001 | 12912.667717 | 13884.045518 |
4 | 2020-02-07 | 9475.242188 | 7671.827233 | 6048.697518 | 5077.319716 | 11278.657142 | 12901.786857 | 13873.164659 |
📘 Azure AI 中的可用模型
如果您正在使用 Azure AI 端点,请确保设置
model="azureai"
nixtla_client.forecast(..., model="azureai")
对于公共 API,我们支持两种模型:
timegpt-1
和timegpt-1-long-horizon
。默认情况下使用
timegpt-1
。请参阅本教程了解何时以及如何使用timegpt-1-long-horizon
。
5. 使用 TimeGPT 扩展比特币价格分析
异常检测
鉴于比特币价格的波动性,尝试识别数据中的异常情况会很有用。可以通过调用 NixtlaClient
类中的 detect_anomalies
方法来使用 TimeGPT
执行此操作。此方法根据序列中的上下文评估每个观测值,使用统计度量来确定其成为异常的可能性。默认情况下,它基于 99% 的预测区间识别异常。要更改此设置,您可以指定 level
参数。
📘 Azure AI 中的可用模型
如果您正在使用 Azure AI 端点,请确保设置
model="azureai"
nixtla_client.detect_anomalies(..., model="azureai")
对于公共 API,我们支持两种模型:
timegpt-1
和timegpt-1-long-horizon
。默认情况下使用
timegpt-1
。请参阅本教程了解何时以及如何使用timegpt-1-long-horizon
。
要了解更多关于如何使用 TimeGPT
检测异常的信息,请参阅我们的异常检测教程。
添加外部变量
如果您有其他信息,并认为这些信息有助于改进预测,请考虑将其作为外部变量包含进来。例如,您可以添加其他加密货币的价格、专有信息、股票市场指数或比特币网络中的交易数量等数据。
TimeGPT
支持在 forecast
方法中包含外部变量。但是,请记住您需要知道这些变量的未来值。
要了解如何将外部变量纳入 TimeGPT
,请参阅外部变量教程。
6. 了解模型的局限性
正如引言中所述,预测金融资产的未来价格是一项具有挑战性的任务,特别是对于像比特币这样的资产。本教程中的预测可能看起来很准确,主要是因为它们与最近的历史数据一致,并且模型会以短间隔更新新值,从而避免了显著偏差。然而,真正的挑战在于预测比特币未来几天的价格,而不仅仅是其历史表现。对于需要或希望尝试预测这些资产的人来说,TimeGPT
可以是一个简化预测过程的选择。只需几行代码,TimeGPT
就可以帮助您
- 生成点预测
- 量化预测的不确定性
- 生成样本内预测
- 检测异常
- 纳入外部变量
要了解更多关于 TimeGPT
功能的信息,请参阅TimeGPT 文档。
7. 参考文献和附加材料
参考文献
此外,对于许多金融时间序列而言,价格的最佳估计通常是随机游走模型,这意味着明天价格的最佳预测是今天的价格。Nixtla 的 StatsForecast 库允许您轻松实现此模型及其变体。