问题描述
我使用了聚宽因子库的roic,peg,roe这类盈利因子进行学习。我开始的策略是一年调仓一次,考虑到财报发布的时间,无意间回测了一下调仓的时间,发现单个因子,在二季度调仓,跟四季度调仓收益差别非常大,差了50%到100%,这正常吗?我觉得不正常,希望大佬解惑。
解决方案
你好!你观察到的这个现象在量化投资中非常正常,而且是一个非常经典且有价值的发现。使用基本面因子(如 ROE, ROIC, PEG)进行低频(如年度)调仓时,调仓月份的选择对策略最终收益的影响往往是决定性的。差出 50% 甚至 100% 的收益并不罕见。
导致这种现象的核心原因主要有以下几点,我们可以结合 A 股市场规律和 JoinQuant 平台的数据机制来深入分析:
1. A股财报披露的“时间差”与信息质量(核心原因)
A股上市公司的财报披露有严格的时间规定:
- 一季报和上一年的年报:必须在 4月30日 前披露完毕。
- 半年报(中报):必须在 8月31日 前披露完毕。
- 三季报:必须在 10月31日 前披露完毕。
二季度调仓(如5月初)的优势:
如果你在 5 月初调仓,此时所有公司上一年的年报(经过严格审计,数据最真实全面)和当年的一季报刚刚披露完毕。你此时计算的 ROE、ROIC 使用的是最新、最可靠的数据,市场也正处于对这些最新基本面数据进行定价的阶段。此时选出的高盈利公司,往往是真正的优质公司。
四季度调仓(如11月、12月)的劣势:
如果你在 11 月调仓,你使用的是 三季报 数据。三季报未经审计,且往往带有较强的季节性(比如某些行业利润集中在四季度)。更重要的是,此时距离下一次年报披露还有半年,市场往往开始博弈“跨年估值切换”或“政策预期”,而不是单纯看过去三个季度的盈利。此时的静态基本面数据对未来股价的解释力(因子 IC 值)会大幅下降。
2. 市场的“日历效应”与机构行为
A股存在明显的日历效应:
- 春季躁动与四月决断:一季度市场往往炒作预期和概念,到了四月财报密集披露期,市场开始“业绩证伪”,资金会迅速向真正有业绩支撑的公司集中(即“四月决断”)。因此,5月份根据基本面调仓,正好顺应了机构资金向业绩股调仓的趋势。
- 四季度估值切换与年底结账:到了四季度,公募基金等机构面临年底考核,往往会进行“结账”操作(卖出前期涨幅过大的绩优股保住收益),并开始布局明年的潜在热点。此时,高 ROE/ROIC 的白马股反而可能面临机构资金流出的压力,导致四季度调仓买入这些股票后短期内表现不佳。
3. 因子的“半衰期”与时效性
你提到策略是一年调仓一次。基本面因子的有效性是有“半衰期”的。在 5 月份选出的高 ROE 公司,其业绩优势可能在接下来的半年内被市场充分定价。如果持仓长达一年,到了下半场,这些因子的超额收益可能已经衰减殆尽,甚至出现反转。
4. JoinQuant 平台数据获取的注意事项
在 JoinQuant 中使用 get_fundamentals 或因子库获取财务数据时,默认是获取当前逻辑时间(context.current_dt)能看到的最新数据,以避免未来函数。
- 如果你在 4 月中旬调仓,有些公司发了年报,有些没发,你的选股池数据是“不对齐”的(一部分是去年的三季报,一部分是刚发的年报),这会产生极大的选股偏差。
- 建议:如果是年度调仓,强烈建议将调仓日设定在 5月1日之后的第一个交易日,确保所有公司的年报和一季报都已更新完毕。
给你的优化建议
- 缩短调仓周期:一年调仓一次对于 A 股来说太长了。建议尝试季度调仓(分别在 5月初、9月初、11月初),紧跟财报披露节奏,看看收益曲线是否会更平滑。
- 使用 TTM 数据:在 JoinQuant 中,尽量使用 TTM(滚动十二个月) 的财务数据(如
roe_ttm,operating_revenue_ttm),这可以有效平滑单季度财报的季节性波动,使得不同月份调仓的差异缩小。 - 结合估值与动量:单纯的高 ROE 在四季度可能失效,可以尝试在四季度调仓时加入估值因子(如 PB、PE)或反转因子,构建复合策略。
总结来说,你发现的现象非常真实,它揭示了量化投资中**“Timing(择时)”与“Factor(因子)”同样重要**。理解背后的财务逻辑和市场博弈,能帮助你构建更稳健的策略。