请拉好扶手:用遗传算法(GA)指导A股配置专题(二)

一、研究前提-数据过滤

必须说明的是:

1.我们首先做了数据筛选,数据取2007年底之前上市且今天仍然健在,停牌时间不超过0.5%的股票。股票池里放的是经历过风霜雨雪,大风大浪的,不随意停牌的负责任的股票。因此,可能存在幸存者偏差的问题以及当前组合可能并非是在未来回测时的“风险收益比”的最优组合。

2.为避免新上市股票初期价格不公允问题,故行情数据取2009年初至2017年底,利用结果在测2018年的组合表现情况。

经过筛选之后,共有781只股票入选,交易日数最高2188天,最低2178天。

二、遗传算法函数目标和迭代结果

(1)目标函数

算法追求的目标是变异系数最小,即波动/收益的值最小,也就是说波动越小,收益越大的组合越容易胜出,从而越容易被保留下来;该变异系数越大的组合,越容易被淘汰出局。该目标函数导致了求得的组合并非像货基一样追求稳定收益,而是追求每承担单位风险,尽可能的获得更多收益,或者每份收益尽可能的面临更小的风险。

(2)算法

建立种群:我们建立了1000枚个体组成的种群,每一枚个体由781个0至1之间的随机数组成(随机数代表着781只股票的仓位),且这781个随机数加和恰好为1,也就是满仓的状态。

“选择-遗传-突变-选择”循环:随机数产生之后,逐一测算1000枚个体的变异系数,将变异系数最大的50枚个体删除,重新生成50个新的随机个体。将变异系数最小的50枚个体跟剩余的900个体随机的进行“交配”,将他们的“优质基因(随机数)”随机的传播给其他的这900个个体,将这900枚个体的相应的随机数替换掉。这950枚个体的781*950个基因再随机挑选5%,重新生成随机数,即完成“突变”过程。最终将这950枚个体与之前重新生成的50枚个体组成新的种群。就这样完成了“选择-遗传-突变-选择”的循环。

种群迭代:经过5亿次种群的迭代,这个种群已经变得越来越优秀(即平均变异系数越来越低),最终迭代完成之后,找出其中最优秀的那枚个体,可以称为“种群之王”。这781个随机数对应着781只股票的仓位,将仓位由高到低进行排列,获得了下表的结果。除了下表15个股票之外,其他股票对应的仓位几乎为0,故不进行配置。在《用遗传算法(GA)指导A股配置专题(一)》这篇文章中,我们已经论证过,遍历查找不可行。故只能使用优化算法,虽然优化算法找不到最优解,但是他能在合理的时间内,逐步找到越来越优的解,运行时间越长,结果越好。最终找到一个相对较优解,只要他的收敛程度满足一定条件,则其精度就已经是可以接受的了。

三、遗传算法结果

我们来看一下这个“种群之王”组合的组成和从2009年至今的收益率情况如何。

请拉好扶手:用遗传算法(GA)指导A股配置专题(二)

请拉好扶手:用遗传算法(GA)指导A股配置专题(二)

(1)把该组合和上证综指在2009年都调整为净值1,在截止2017年底这段时间里,上证综指,相比于组合的30余倍收益,几乎可以说是贴着地平线在运行。组合的平均日涨幅0.17%,年化收益率44.86%。

(2)该组合的最大日回撤-9.86%,也就是说这个组合可能还是会跌停。该组合最大日涨幅是8.23%,涨起来也是蛮有动力的。

(3)该组合并非能保证每年度都获得正收益,比如2016年,也亏了10.5%。但该组合可能可以跑赢大盘,至少目前来看是这样的。

(4)该组合最糟糕的情况,在2015年-2016年间,2015-6-26这一天的净值是24.82,而在2015-9-15,净值就降到了16.13,短短不到3个月的时间里,跌幅为35%。而同期上证综指从约5000点跌到了约3000点。

(5)数据仅仅是截止到2017年底,但是继续测2018年时,超额收益只有0.2%,虽然仍然为正,但是远不能让我们满意,比2016年1.9%的超额收益还低。之后,我们还将进一步追踪其中的原因,同时优化。不过令人欣慰的是,至少不是负的超额收益,不像某些投资机构的模型,之前都好好的,一到未来应用时,就立刻大幅变脸了。

请拉好扶手:用遗传算法(GA)指导A股配置专题(二)

四、后续研究

可以尝试设立第782个数,这个数字对应的仓位是投资现金的,可以理解为一只现金股,这只股票价格永远是1,保持不变,我们也不要那点活期利息了。也就是说可以考虑部分空仓的情况,在当前研究中一直保持满仓状态。若考虑空仓,可能可以进一步提升收益率,降低波动风险。但此时,需要考虑总仓位的变动情况了,这将在一定程度上增加测算的难度。

本研究,只是为了讨论优化算法的问题,给出测算结果仅是为了证明本研究不是纯理论,而是可以在实际当中落地的,但是该测算结果不能视作任何推荐,请读者一定要注意。

请拉好扶手:用遗传算法(GA)指导A股配置专题(二)


分享到:


相關文章: