您好,因为内部涉及到窗口计算,属于是依赖前值的状态函数,因此如果数据不一样,尤其是浮点数的场景,很可能会因为精度误差造成结果不同,尤其在计算 alpha 因子可能会涉及到一些 rank 的操作,放大浮点的误差值。所以您两次跑不同数据,结果可能会有波动。
根据官方的文档 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改变,这个值就在变化。