问答交流

Stockrank与梯度函数因子一起使用出现未来函数现象

由snowspig创建,最终由small_q 被浏览 49 用户

做了一个关于2日均线的梯度因子,如下,将其放入Stockrank中呈现非常好的收益,怀疑有未来函数,投放模拟盘后无交易数据输出,但是放在xgboost求解器里没有这种现象发生,模拟盘也正常输出,所以是梯度函数和StockRanker一起使用导致的吗?原理上均线数据是用过去数据构成的,应该不会造成未来。梯度函数按np里的帮助应该也是用过去数据构成的,不会造成未来,所以很迷惑,希望有工程师能帮忙查一下。下面分别是因子分析,sr,xgb的策略,因子分析的收益看起来就很离谱,但似乎并不影响xgboost的结果.,还是说系统在处理梯度函数时带入了未来数据?


https://bigquant.com/experimentshare/c3b6a208b64a48f2ad6990a222535aa7


https://bigquant.com/experimentshare/44aa1465184b441080b0f17c9a0af3c9


https://bigquant.com/experimentshare/38a7dcf946fd4126b1bcdeecd4c2a66d

\

标签

未来函数交易数据函数
评论
  • 感觉鸡哥像是挖到了好东西啊
  • 小鳄鱼 认为: np.gradient(x)是通过计算给定数组x中每个元素的梯度来实现的。它使用以下公式计算: grad\[i\] = (x\[i+1\] - x\[i-1\]) / 2 其中i表示数组中的索引位置。 因此计算 np.gradient(ta_ma(close_0,2)) 需要用到 (ta_ma(close_0,2)前一天数据,以及后一天数据。 所以可以用shift前移一天数据 : ```python np.gradient(shift(ta_ma(close_0,2),1)) ``` \
  • StockRanker计算grad\[i\] = (x\[i+1\] - x\[i-1\]) / 2 使用了前后数据, 而gboost只使用前一天数据吧,因为grad\[i\] = (x\[i+1\] - x\[i-1\]) / 2 是支持单边计算的