规模因子:小即是美
01
规模因子概述
(一)规模因子的理论基础
规模因子是一个重要的风格因子,它指的是公司的市值大小对股票回报的影响。根据规模因子理论,较小市值的公司通常有更高的收益率,而较大市值的公司通常有更低的收益率。这种现象被称为“规模溢价”。
20世纪80年代,美国经济学家Eugene Fama和Kenneth French提出了著名的三因子模型,即市场因子、价值因子和规模因子,以解释资本市场中的回报差异。其中规模因子即为反映公司市值大小对回报的影响。他们发现,在过去几十年的数据中,市值较小的公司相对于市值较大的公司具有更高的超额收益。随后,学术界对规模因子进行了更深入的研究和探讨,对规模因子能带来超额收益的理论解释主要有:
- 风险溢价理论
规模因子被视为一种风险,市值较小的公司由于其规模较小,通常具有更高的风险,因此投资者需要承担更高的风险溢价才能获得相应的回报。 - 信息不对称理论
市值较小的公司通常被认为更容易受到信息不对称的影响,这意味着投资者需要更多的时间和成本来获取和分析公司的信息。因此,对于那些能够有效获取和分析信息的投资者来说,市值较小的公司可能会提供更好的投资机会和更高的回报。 - 市场非理性行为理论
市场非理性行为可能导致市值较小的公司被低估或高估,从而提供投资机会。例如,市场可能过度关注市值较大的公司,而忽视了市值较小的公司,导致后者的股价被低估。 - 企业发展理论
市值较小的公司通常处于初创或发展阶段,具有更高的成长潜力和创新能力,这意味着它们可能会在未来创造更高的价值和回报。
这些理论提供了不同的视角来解释为什么市值较小的公司可能会带来超额收益。
(二)规模因子的投资风险
虽然规模因子具有超额收益,但也存在风险。规模因子的投资风险主要有: - 波动风险
市值较小的公司通常具有较大的波动性,因此规模因子的收益可能会出现较大的波动。市场对市值较小的公司的关注度可能会受到非理性行为的影响,导致这些公司的股价出现较大的波动,从而增加了投资风险。 - 概念风险
市值较小的公司可能涉及到一些新的或未被广泛认可的概念或技术,这些概念和技术的成功或失败可能会对股票价格产生较大的影响,增加了投资风险。 - 资金流动性风险
由于市值较小的公司通常具有较小的市值和流动性,因此在市场出现大幅波动时,这些公司的股票可能更难以买卖,从而导致投资者无法在需要时及时卖出股票。
02
规模因子的具体指标
我们通常用市值来作为规模因子的指标,股票的市值有多个口径,常见的有: - 总市值还是流通市值
总市值是指公司的全部股票的市值总和,包括股票已发行但未流通的股份。总市值通常用于衡量公司整体的规模,因此总市值可以更全面地反映公司的规模。
流通市值是指公司股票中已经发行并且流通在市场上的股票的市值总和。流通市值只计算那些实际可以交易的股份,因此它更能反映公司的市场价值。
总市值和流通市值都可以用作规模因子的指标,但是两者有不同的特点,应该根据具体情况来选择使用哪一个指标。 - 原值还是对数市值
我们还可以用市值的自然对数作为规模因子,对数市值有以下几个主要优点:
(1)减少极端值的影响:自然对数转换可以有效地缩小极大和极小值之间的差距,使得数据更稳定,减少极端值对模型的影响。
(2)改善数据的正态性:自然对数转换可以使原始数据更接近正态分布,这对于很多统计模型来说是一个重要的假设。
(3)解决异方差问题:在金融数据中,大市值公司和小市值公司的规模数据可能存在异方差性,即数据的方差随着其均值的增大而增大。自然对数转换可以在一定程度上纠正这种异方差性。
(4)保持数据的相对大小关系:尽管自然对数转换会改变数据的绝对大小,但它会保持数据的相对大小关系。也就是说,更大的市值公司在转换后仍然会有更大的对数市值。
由于有上述优点,我们更多时候是用对数市值来代表规模因子。
03
规模因子评价
在《量化工具箱:因子评价神器Alphalens库超详细教程》中,我们介绍了如何用Alphalens对总市值因子进行评价,包括分组收益、IC评价、换手续评价等,相关内容详见上述文章。
在本节,我们以对数流通市值为例,用Alphalens对该因子进行评价。
我为大家整理了计算和评价因子所需的全部沪深股票2010年1月1日至2023年6月30日的数据,数据文件名为:factor_data.csv,在后台回复“规模因子”可获取。
因子评价的相关代码如下,这些代码在《量化工具箱:因子评价神器Alphalens库超详细教程》中已有详细讲解,这里不再赘述。
#导入相关的库
import numpy as np
import pandas as pd
import alphalens as al
#关闭警告信息
import warnings
warnings.filterwarnings(‘ignore’)
#从CSV文件读取数据
file_path = ‘e:temp/factor_data.csv’ # 文件的路径和文件名,注意:此处要换成你的文件地址
data = pd.read_csv(file_path, encoding=’gbk’, index_col=0)
data[‘日期’] = pd.to_datetime(data[‘日期’]) # 将日期统一为datetime格式
#计算对数流通市值
data[‘对数流通市值’] = np.log(data[‘流通市值’])
#生成符合Alphalens要求格式的因子值数据
factor = data.set_index([‘日期’,’股票代码’])[ ‘对数流通市值’]
#生成符合Alphalens要求格式的交易价格数据
prices = data.pivot(index=’日期’, columns=’股票代码’, values=’开盘价’)
prices = prices.shift(-1) # 将第二天的开盘价作为交易价格,避免用到“未来数据”
#预处理因子数据,得到符合Alphalens需要的数据格式。
factor_data = al.utils.get_clean_factor_and_forward_returns(
factor=factor,
prices=prices,
quantiles=10,
periods=(1, 10))
#生成因子性能评价报告
al.tears.create_full_tear_sheet(factor_data)
Alphalens生成的因子评价内容很多,这里选分组收益评价的主要内容列示如下:
分组收益评价是将股票按因子值从大到小排序,然后分为多个组别,统计各组别未来收益的平均值和累计值,以此来评价因子的预测能力。
在上述代码中,我们将全部股票根据因子值大小平均分为10组,10个分组的平均收益图和累计收益图如下:


Alphalens的收益默认是做市场中性处理的,即这里的收益率为”超额收益率”,从上述两张图可以看出:
(1)在10个分组中,对数流通市值因子值最小的一组收益最高,因子值最大的一组收益最低;
(2)第1组至第5组具有较好的单调性,因子值越小收益越大,而且区分比较明显;而第6组至第10组的收益区分则不太明显,特别是在累计收益图中,后5组的曲线几乎粘连在一起。
(3)在最近几年因子值最小组(第1组)的超额收益增速放缓,从早期的大幅上扬逐渐变为躺平。
在本节中,我们探讨了规模因子的理论基础,提出了一些为何规模因子能够产生超额回报的可能的解释,讨论了规模因子的具体指标,并用历史数据对规模因子进行了评价。
规模因子并不是一直有效的。在某些市场环境下,规模因子可能会表现得不尽人意。因此,投资者在应用规模因子时需要审慎,理解其潜在的风险,并将其作为一个更大投资组合的一部分,而不是唯一的投资策略。
发布者:爱吃肉的小猫,转载请注明出处:https://www.95sca.cn/archives/46875
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!