关于alpha101的结果不稳定

根据官方的文档 https://github.com/dolphindb/DolphinDBModules/blob/master/wq101alpha/helper/wq101alphaScript.dos

//1.load data

login('admin', '123456')

rawData = loadTable("dfs://k_day_level", "k_day")

infoData = select * from loadTable("dfs://info", "info_data")

startTime = timestamp(2010.01.01)

endTime = timestamp(2010.01.31)

data = prepareData(rawData=rawData, startTime=startTime, endTime=endTime, securityidName="securityid", tradetimeName="tradetime", openName="open", closeName="close", highName="high", lowName="low", volumeName="vol", vwapName="vwap", capName="cap", indclassName="indclass", infoData=infoData, infoSecurityidName="securityid")



//3.1 calculate the WQ Alphas using module wq101alpha and write into wide table

calcAndWriteWQAlphas(data, startTime, endTime, "wide", dbNameWide, tbNameWide, 1..101)



//3.2 calculate the WQ Alphas using module prepare101 and write into long table

calcAndWriteWQAlphasWithPrepare(data, startTime, endTime, "long", dbNameLong, tbNameLong, 1..101)


----

我想请问下,我想跑2023一整年的数据但是内存不够,所以我尝试通过startTime/endTime来一个月一个月跑。

但发现一个问题,比如跑2023-1-1到2023-3-1的数据后,查看3月1的某个factor值为a。 然后重跑2023-【2】-1到2023-3-1,这个factor在3月1的值就饭生了改变。  我的数据是1分钟粒度的k线, 101个factor里用到的历史窗口肯定小于一个月。我理解startTime/endTime大于某个值后 这个factor应该稳定才对,但目前测下来,只要startTime改变,这个值就在变化。 

请先 登录 后评论

1 个回答

saki

您好,因为内部涉及到窗口计算,属于是依赖前值的状态函数,因此如果数据不一样,尤其是浮点数的场景,很可能会因为精度误差造成结果不同,尤其在计算 alpha 因子可能会涉及到一些 rank 的操作,放大浮点的误差值。所以您两次跑不同数据,结果可能会有波动。

请先 登录 后评论
  • 1 关注
  • 0 收藏,315 浏览
  • eric 提出于 2023-12-05 13:13

相似问题