请问做因子分析,使用超额收益计算和不使用 有什么区别?
far.create_returns_tear_sheet(demeaned=False, group_adjust=False, by_group=False)
使用了”demeaned“有什么影响呢?请教各位。
问题描述
解决方案
JoinQuant 因子分析中 demeaned 参数详解
在 JoinQuant(聚宽)的单因子分析(analyze_factor)中,demeaned 是一个非常关键的参数,它决定了我们在评估因子表现时,是看绝对收益还是超额收益。具体到 far.create_returns_tear_sheet(demeaned=False) 等绘图和计算函数中,它的影响如下:
1. demeaned=False(不使用超额收益)
- 含义:计算的是各分位数投资组合的绝对收益。
- 影响:在这种模式下,组合的收益包含了市场整体的涨跌(即大盘的 Beta 收益)。如果回测期间处于大牛市,即使你的因子完全没有选股能力(Alpha),所有分位数的组合可能都会显示出正收益;反之,在熊市中可能全都是负收益。
- 适用场景:当你想要了解该因子构建的组合在实际市场中的真实资金曲线和绝对盈亏时使用。
2. demeaned=True(使用超额收益)
- 含义:计算的是各分位数投资组合的超额收益(去均值化)。系统会将每日所有股票收益按照权重加权算出一个“基准收益”(即市场平均收益),然后用你组合的收益减去这个基准收益。
- 影响:这种模式剥离了市场整体涨跌(Beta)的影响,使得组合转换为 Cash-neutral(资金中性)或多空组合的概念。它能纯粹地反映出该因子本身的选股能力(Alpha)。如果最高分位数在
demeaned=True时持续向上,说明该因子能稳定跑赢市场平均水平。 - 适用场景:这是因子有效性检验的核心标准。在学术研究和专业量化机构中,评估一个因子好坏通常都看超额收益,以证明该因子具有独立于大盘的预测能力。
总结与建议
- 区别核心:是否剥离大盘整体涨跌的影响。
- 实际影响:开启
demeaned=True后,你看到的收益曲线将更加平缓,但它真实反映了因子的多空区分度。如果一个因子在demeaned=False时表现很好,但在demeaned=True时表现很差,说明它只是“靠天吃饭”,并没有真正的选股 Alpha。 - 建议:在做因子有效性检验时,强烈建议将
demeaned设置为True,这样才能准确判断因子是否真的有效。同时,还可以结合group_adjust=True(行业中性化)来进一步剥离行业板块涨跌的影响,从而得到最纯粹的因子收益。