阅读本书的收获和发现的一些小错误
对我而言,阅读本书的最大收获是完整清楚地学习了alphalens包。之前东北证券出过一份研报,一些公众号也有过介绍,但讲解得不够清晰。如果数据分析相关的编程能力足够扎实,学完是可以上手多因子分析的。另外,作者在第三章《量化的概率统计基础》和第四章《单因子测试》前半部分对于统计知识和因子处理的介绍也很简明实用(前两章量化投资概述和编程基础比较熟悉了,我没看)。整体来说,书不厚,干货很多,作者没有水字数,一股强烈的理工科气质。
阅读过程中发现了一些疏漏,一部分是由于成书在两年前,一些包更新后出现了不兼容;一部分是书稿中相关代码和表述存在错误,多数是编辑文稿的疏漏,作者在资源网站上列出的源码基本是对的。我列出我发现的问题方便其他读者:
1、3.1.3偏度部分,关于正偏、负偏中众数、中位数、均值的位置关系描述,图片是对的,文字部分写反了。
2、4.2.6 125页被中性化前化工行业市值因子的极值是-0.22而非-2.2。
3、4.6.2 alphalens简介 import alphalens而非 Alphalens,后面所有对这个包的拼写首字母都不应大写,作者网站源码没有问题。
4、4.6.2 150页 factor_df这个变量突然出现,应该是编辑书稿中漏了一些代码,是对raw_factor做了去极值化、标准化和行业中性处理,作者网站源码是有的。
5、4.6.2 tpd['close']=tpd.groupby.....(151页,非错误)这行代码涉及数据量过大,我的笔记本用了半个小时才算完,后续每个因子都涉及到tpd['close'],建议大家运行完保存为h5文件,方便之后快速读取。
6、4.6.5 换手率这部分,alphalens.tears.create_turnover_tear_sheet运行会报错,原因是alphalens源代码对应的是早期pandas版本,由于pandas版本已更新,需要更改alphalens的源代码,要在安装文件夹中找到错误提示的tears.py,将代码中的get_values()改为to_numpy(),再次运行即可。
7、6.1.1等权加权,204页子函数中df['Alpha']应为df['equal_weight_alpha']。同时由于取Alpha_df['flag']值是对data_date列进行groupby后运算函数,因此在赋值之前应先对Alpha_df按照data_date和secucode的顺序排序后再赋值。这样得出的最终净值曲线和作者的有所区别,比如最后的mv_root_weighted_portfolio曲线如下图。

8、6.2.1优化器的使用 213页u=[0.04,0.02,-0.01].T是错的,计算会出现错误,下面matrixA写的0.04,0.2,-0.1是对的。也是书稿编辑问题。
另外需要提醒一下,书中介绍了对alphalens和cvxopt两个包的安装,我在安装过程中都遇见了官网源包很难下载的问题,建议大家更换清华tuna的源。
总体而言,阅读本书我收获了很多,也是因为学得足够认真发现了一些疏漏。但如作者提到的,同时我认识的一些量化投资经理(我的两名研究生同学做了量化基金经理)也讲过,多因子投资的真正难度不在于编程实现,而是对因子的深度理解和对因子组合的自由把握。量化投资还是要和行业研究结合起来,我目前先考虑用alphalens分析重点行业的不同因子表现。今天对白酒单行业做了分析,通过wind取了申万白酒指数成分股2016年以来的价格和市值、pe等因子。
先是看PE倒数因子:3、4类PE因子表现差别较小。其中PE偏低但非最低的股票表现最好,可以看看茅五泸在白酒股中的估值位置,和现实吻合。


再看市值因子:市值最大的几只股票收益表现最好,符合白酒行业茅五泸强者恒强的现实。

