比特币价格预测
了解如何使用 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 库允许您轻松实现此模型及其变体。

