486. G-Research Crypto Forecasting | g-research-crypto-forecasting
大家好,
首先,我想感谢这次比赛中的每一个人,对我来说这是一段很棒的旅程,我也非常高兴能第一次赢得金牌。
其实我很早就分享了我的推理notebook。现在我想介绍一下它的一些细节。
我最有价值的特征是Hull移动平均线:
def moving_average(a, n=3) :
ret = np.cumsum(a, dtype=float)
ret[n:] = ret[n:] - ret[:-n]
return np.append(np.array([1]*n), ret[n - 1:] / n)[1:]
#@jit(nopython=True)
def calcHullMA_inference(series, N=50):
SMA1 = moving_average(series, N)
SMA2 = moving_average(series, int(N/2))
res = (2 * SMA2 - SMA1)
return np.mean(res[-int(np.sqrt(N)):])
row["hull"] = last_close - calcHullMA_inference(f[asset]["all_close"][-260:], 240)
关于创建滞后特征的另一个重要注意事项是窗口大小的选择。我使用斐波那契数列来选择我的窗口:fibo_list = [55, 210, 340, 890, 3750]。你可以在notebook中看到这一点。
关于我的特征的最后一个重要解释是使用滞后目标。起初我尝试使用官方的计算方法,但后来我放弃了,转而使用了这个:
row["target_return"] = (last_close / f[asset]["all_close"][-16]) -1
作为一个市场指标,我收集了每一批次的新“target_return”,并取最后可用列表的平均值。
关于我的工作最后一个重点是模型。我有3个不同的LightGBM模型,分别针对不同的市场情况进行训练:上涨市场、下跌市场和相对稳定的市场。然后我取了它们的平均值。
我思考了如何改进我的模型。首先是:我可以进行参数优化,我几乎使用了默认参数。其次,我可以添加不同类型的模型,我想我的提交时间大约是6小时。最后,我脑海中其实还有更多的特征想法。
好的,再次感谢大家.. 下次比赛见。