首页 > 资讯 > > 内容页

当前看点!第六课 因子初探小市值因子的测试 -- 零基础量化投资小课堂

发表于: 2023-05-04 18:01:19 来源:哔哩哔哩

目标:理解因子是什么并且测试市值因子

因子有很多不同的解读方法,一般来说“因子”就是一种可以被数量化的,解释资产价值的“原因”。比如每天股票都有高开低收这四种价格,那么这四种价格就可以理解成四个因子。再比如,股票有市值,市盈率,市净率,总股本,净资产收益率这种数据,这些也都可以被称作因子。再比如,某个公司是有产品销售的,那么他销售的产品的销量也可以作为一个因子。

总而言之,因子的种类繁多,频率也各有不同,量化投资就是想找到一些因子,使得资产的价格能够被这些因子解释,然后从中找到规律,使用这种规律赚钱。


(相关资料图)

在海外成熟市场中,有效的因子挖掘难度很大,因为大家几乎把所有能被数量化的东西都试过一遍了,有效果的要么就是慢慢失效,要么就是很少人知道,要么就是成本太高。

随着市场的成熟和大家对因子的挖掘,因子慢慢失效是一个非常正常的事情,比如我们接下来要举的例子,小市值效应,相信很多老股民应该都知道,之前A股越是小盘股越容易涨,这是有统计规律的。但是这几年小市值的股票相对于大市值的股票没有那么多超额收益了。所以我们可以说市值因子在一定程度上失效了。

这种失效有多种解释,一般来说认为是因子交易的拥挤度太高会导致失效。举个例子就是你发现小市值的股票容易赚钱,赚了一大笔,然后过段时间又有别人发现了,他赶在你前面买了,于是你买的价格就相对之前高一点,赚的也比以前少了。再过了一段时间,大家都发现了小市值的股票容易涨,于是都去买,直到小市值的股票相对来说再也没有性价比的时候,这个因子就失效了。

这节课我们要使用的工具叫做alphalens,这是一个很方便的开源因子测试工具,他的名字中包含了另一个概念–alpha。alpha可以翻译成超额收益,对应的beta翻译为基准收益。举个例子就是假设上证综指在一年内上涨10%,你通过自己的不懈努力获得了20%的收益,那么你的策略在一年中就实现了20-10=10%的alpha,市场的涨幅就是beta。

做量化投资的一个主线任务就是寻找alpha,在市场下跌的时候比别人跌的少,在市场上涨的时候比别人涨的多,追求稳稳的幸福。两个典型的例子就是指数增强基金和一些私募或者橱窗基金。

指数增强基金选定一个指数作为基准收益,希望通过一系列的操作获得超过这个指数的超额收益,但不会偏离指数太多。比如这几年比较火的300指增,500指增或者1000指增等,他们的基准收益就分别是沪深300指数,中证500指数和中证1000指数。

另一些量化私募或者橱窗基金追求稳稳的超额收益,对冲之后尽量不受行业的影响,比如下图就是一个去年很火的基金,可以看到他的走势几乎是一路稳稳的向上,市场跌的时候也不怎么跌甚至还在涨。这种就是量化领域追求的。

说了很多概念的东西,下面我们来实操一下,测试我们刚才说的第一个因子,市值因子。看看最近小市值股票是不是还是比大市值的涨的好。

首先,我们安装本节课需要的alphalens包,安装过程和以前一样使用pip。

之后我们读取所需的数据,这里数据的处理过程比较繁杂,因为需要并上行业的数据,但都是一些基础操作,就不放在这里了。处理好的数据格式如下:

这份数据包含17年至今市场上所有股票的收盘价,申万行业分类,市值,和中性化之后的市值因子。

那么普通市值因子和中性化之后的市值因子有什么不同呢?

市值就是收盘价乘股本,这个很好理解。中性化这里指的是行业中性化,意思就是我们在分析一个因子的时候,需要刨去行业对该股票价格的影响,比如最近传媒涨的很好,无论是什么牛鬼蛇神,只要沾了传媒这个行业的边了,就会暴涨,那么我们就需要把股票价格变动里受行业影响的那一部分去掉,让我们想测试的因子更加纯粹。

这里的行业中性化使用的是回归的方法,具体过程理解起来可能稍困难,需要一定数学基础,但初级阶段我们不需要了解细节,只需要知道有一些封装好的工具,只要我们提供行业和价格,就能自动把影响股票价格的行业因素剔除掉就可以了。

除了行业中性化以外,这里还对市值做了归一化处理,因为市值过大的股票和市值过小的股票相差太大,不做归一化处理的话很难计算。归一化之后因子值在0附近,并且相差不大。

之后,我们只需做一些简单的数据格式变换,使得我们的数据符合alphalens需要的数据格式即可,之后把数据输入alphalens,导出因子测试的结果。

本节的代码非常短,只有十多行,但是需要理解的概念较多。下面我们针对他的一些输出做一些简要的说明。

这张图代表了我们把所有的股票按因子值大小分为十组,每一组的收益率,这里我们的因子就是市值,说明最小市值的一组股票在测试期内取得了最高的收益率,市值中等的股票较差,市值最大的股票也还行。

这张图代表着我们按照因子值大小,就是市值大小每天调仓加权买入因子值最大的股票,获得的账户总收益率。这张图其实应该倒过来看,因为我们的因子处理方式是因子越小市值越小,所以我们应该买入因子最小的数,所以你可以在上面的处理的时候给因子值取一个负号,那么这条线会好看很多。但无论怎样,只要这条线是单调且稳定的,无论是向上还是向下都足够好。

这张图代表着我们按因子值大小分组,每一组的收益率。从这里我们可以看到在2021年初的时候有一个很明显的市场风格切换,从大家都差不多,但是大市值股票稍好,变成了小市值股票的市场。结合实际来看看是不是这样呢?

其余的图形和功能这里就不多赘述了,不明白的可以去alphalens的官方文档或者网上的信息查阅更多资料,总而言之这是一个很强大的工具,可惜的是现在好像不太更新了,但目前来说够我们用了。

还需要注意的一点就是我们这里关闭了多空测试,意思就是只让它用多头去测试因子,这也符合A股的逻辑,如果你正在做的是一个别的能够做空的资产,比如大饼,就可以把多空开关打开,会有不一样的效果。

顺便一提大饼刚火的那两年随便用机器学习训两个模型得到的因子的收益率都是一飞冲天的。。

欢迎关注同名微信公众号【量化的韭菜】或知识星球获取更多内容  

标签:

Copyright ©  2015-2023 非洲公司网版权所有  备案号:沪ICP备2022005074号-8   联系邮箱:58 55 97 3@qq.com