hold_days字面意义为持有天数,这个天数貌似是一个平均的量,它的具体含义是什么呢?它在机器学习里面扮演的角色是什么?在stockranker模型里面,是不是假设每个股票都严格持有hold_days后就卖出?
我看后面资金分配的代码里面说明它可以决定每天用于投入资金的量约为1/hold_days,那我能使用两个不同的hold_days来分别对应前面的标注函数和后面的资金分配么?这样做会有什么不合理的影响么?
hold_days这个变量该怎样理解?
好问题。
hold_days这个变量在AI策略里是一个非常重要的变量。该变量首先出现在标注函数里,当对数据进行标注的时候,一定要思考对什么数据进行标注,如果hold_days是5天,则表明对未来五天的收益率进行标注,那么在训练集数据上,我们一方面能得到特征数据,一方面能得到标注数据,这样就能训练模型。hold_days是标注数据的一个参数,其更深远的意义是,由于标注是未来5天收益率,那么训练出来的算法就是一个对未来5天预期收益率的一个股票排序模型,然后我们依据预测出来的股票排序,优先买入排序靠前的股票,将排在前面的股票赋予更大的资金权重(仓位)。
目前的默认策略并不是持有hold_days就卖出,但是你可以修改。目前的默认策略是持仓的股票本身有一个排序,我们优先卖出排序靠后的股票。我们建议,你可以尝试持有固定天数卖出,因为这更贴近模型初衷。
之所以每天投入量是1/hold_days,这是因为每天都要买卖股票,因此每天都要轮动,如果持有天数是5天的话,是不是刚好5天轮回一次,因此每天投入金额应该为1/5,不建议采取两个不同的hold_days。这些想法你都可以在handle_data修改,然后通过回测的最终效果来判断。
非常感谢!小Q真是我见过所有quant平台的客服里面最专业最敬业的一个!
还有个小问题,hold_days的这种设定就会导致越大的hold_days在回测时的持仓占比越高,而且相同的hold_days持仓占比都保持在相近的水平上,这样似乎缺少一定的灵活性。也就是说我通过回测发现5天的hold_days收益最好,但是我又想使用这个策略的同时增大持仓比例(不知此举能否扩大收益),这要如何实现呢?
是的,因为要预留一天的资金出来,所以hold_days越大,仓位越接近1,造成的闲时资金越少。
具体怎样实现保持策略不变和增大持仓比例,唯一能想到的是融资,确实能扩大收益,但是风险应该也增加了,或者你可以任务采用期货杠杆的思想来做股票。