返回列表

13th Place (Final) 1st Place (6 Weeks In) Final Solution

486. G-Research Crypto Forecasting | g-research-crypto-forecasting

开始: 2021-11-02 结束: 2022-05-03 量化投资 数据算法赛
第13名(最终)- 曾连续6周排名第一的最终方案

第13名(最终)- 曾连续6周排名第一的最终方案

作者:Tom Forbes | 发布时间:2022-03-16

在此查看最终提交的Notebook。

最终更新 - 祝贺所有的获胜者!虽然这次比赛像坐过山车一样跌宕起伏,但我非常高兴能获得我竞赛生涯中的第一枚金牌。在榜单前列待了那么久之后,最终遗憾地错过了前10名,但这在这类挑战中总是有可能发生的。

以下是原贴内容。

初始评论

首先,感谢 G-Research 和 Cambridge Spark 主办这次比赛,也感谢 Kaggle 工作人员让一切相对顺利地进行。在我短暂的 Kaggle 生涯中,我发现这次比赛非常有趣,比其他我参加过的比赛更加开放。

不用说,虽然我现在排名第一,但不能保证在接下来的6周内保持这个位置,但我有信心我会保持在那个位置附近。无论最终结果如何,希望这个解决方案对你有用。

房间里的大象(显而易见的问题)- 大家对最终排行榜结果的有效性有很多担忧,并要求在比赛结束后发布最终测试数据,以便参赛者验证他们的最终分数。我认为这是个好主意,可以消除任何顾虑。如果可能且对 Kaggle 来说不算太麻烦,请考虑这个请求。然而,就我而言,根据我在测试中取得的所有分数,我目前的分数似乎是合理的。在没有相反证据之前,我没有理由认为任何排行榜分数是不正确的。

我鼓励那些觉得分数出乎意料的人分享他们的解决方案,因为 Kaggle 社区或许能够调试任何问题或误解。

显然很难准确预测加密货币价格,但找到一些信号是可能的 - 希望这个 notebook 能揭示我是如何获得我的信号的。

免责声明

  • 这不是我确切的最终提交,但非常相似
  • 我删除了包含预训练模型和缩放器的数据集 - 因此某些命令会报错

摘要

  • 所有模型均使用17个特征,包含滞后特征和时间戳平均值。
  • LGBM 和 Keras NN 模型的集成。
  • 目标工程和预测切换。
  • 部分训练使用了比赛范围之外的额外加密货币数据。

测试得分(无前视偏差):

  • 原始测试期间(2021年6月13日 - 2021年9月21日)最佳得分:0.0565
  • supplemental_train.csv 更新期间(2021年9月21日 - 2022年1月24日)最佳得分:0.0475
  • 最佳单模型得分(2021年6月13日 - 2021年9月21日):0.0465

外部数据

我从多个交易所 API(Binance, FTX, Coinbase, Kucoin 等)下载了免费的公开数据,看看这些额外数据是否能改进我的模型。我的一些最终模型是在额外数据上训练的。具体来说,使用一些未包含在比赛中的货币(例如 XRP, ZEC...)来自 Binance 的数据似乎在多个时间段内提供了一致的小幅改进。

特征工程

我为所有模型确定了一组17个特征。其中有8个滞后特征 - EMA(指数移动平均)、历史回报率和各种回溯期的历史波动率的简单混合 - 这些特征在时间戳上取平均值以产生另外8个特征。还包括 Asset_ID。很难找到一组在不同时间段表现最佳的特征,从这个集合中添加或删除特征似乎会降低性能。我确信这不是最优的特征集,但这组特征似乎工作得足够好。

对特征进行某种分箱处理也很重要,特别是对于训练 LGBM 模型。常用的 reduce_mem_usage 函数和一些舍入函数似乎提供了合适数量的分箱。我发现对于任何给定的连续特征,分箱到500-1000个唯一值效果很好。

目标工程

我认为这次比赛的一个关键部分是处理目标。感谢 @alexfir 和其他 Kaggle 参与者的工作,我们发现了目标是如何计算的

我认为将目标分为两个部分是有用的:

  • 资产的未来15分钟回报率
  • Beta 分量,我们计算所有资产的未来15分钟回报率的平均值,并结合过去3750个时间戳的前15分钟回报率

正如 @gengdaiziwang

同比赛其他方案