FEATURED · 精选文章

用gs-quant十行代码算出因子IC半衰期:摸清因子衰减,再定调仓频率

发布时间 / 2026/9/13 17:53:44
来源 / 创域科博编辑部
栏目 / 资讯中心
用gs-quant十行代码算出因子IC半衰期:摸清因子衰减,再定调仓频率 用gs-quant十行代码算出因子IC半衰期摸清因子衰减再定调仓频率【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant这篇文章带你用 gs-quant 工具包完成第一次因子IC半衰期计算。IC衡量因子对下期收益的预测力而半衰期就是因子衰减到只剩一半预测力所需的时间。跟着跑一遍你会得到一条IC衰减曲线和一个以交易日为单位的半衰期数字它能直接回答多久调一次仓合适。组合收益变差可能不是因子变差了一个常见情况因子还在榜单上组合收益却悄悄变差了。先检查调仓频率——如果没动过问题往往不在因子本身而在它的预测力已经衰减到调仓频率追不上的程度。可以把因子预测力想成食品的保质期同样的因子刚上榜时信号强放几个月后只剩残味。不测量保质期调仓频率只能靠猜。IC半衰期正是这个保质期的量化指标。下图展示的是股票因子聚类后各周期收益的走势能看到信号先走强再回落的形态和因子衰减的直觉一致。 快速上手最短路径跑通IC半衰期跑通一次半衰期计算只需三步滚动IC、指数拟合、读出λ。下面代码不依赖外部数据源把factor和ret换成你的两个时间Series即可。import numpy as np from scipy.optimize import curve_fit from gs_quant.timeseries import correlation, lag # 滚动相关 / 位移函数 # factor: 因子暴露序列; ret: 对应下期收益序列 ic correlation(lag(factor, 1), ret, 60) # 60日滚动IC这行把暴露对齐到前一期 x np.arange(ic.dropna().size) # 时间轴按交易日编号 def decay(t, a, b): # 指数衰减模型 return a * np.exp(-b * t) a, b curve_fit(decay, x, ic.dropna().values)[0] print(半衰期约, round(np.log(2) / b, 1), 个交易日) # 读出半衰期三个函数都有出处correlation在 gs_quant/timeseries/econometrics.py窗口内自动处理缺失值lag在 gs_quant/timeseries/analysis.py把暴露序列整体后移一期避免用今天的因子预测今天的收益。 原理速览IC衰减和半衰期的关系结论先行IC半衰期越小因子过期越快调仓就得越勤。把IC序列想象成漏水的桶。只要漏水速度稳定水位就按指数方式下降公式是IC(t) IC₀ · e^(−λt)其中 λ 是衰减率漏水速度IC₀ 是初始水位。水位掉到一半所用的时间就是半衰期t₁/₂ ln(2) / λ拟合代码干的事就是估计 λ。半衰期21个交易日意味着信号每月减半月频调仓是个合理起点半衰期只有5天月频调仓等于每个月都在用过期信号。⚠️ 进阶与避坑窗口怎么选、参数怎么读窗口是噪声与滞后的权衡拟合结果要看第二个值。具体注意几点窗口20~60个交易日是常用区间。越小越灵敏、噪声越大越大越平滑、滞后越明显。拟合返回的第一个值是IC初始水平第二个值才是衰减率λ。λ接近0说明因子几乎没衰减先怀疑数据对齐而不是急着下结论。IC序列前段必然为空滚动窗口需要预热拟合前务必dropna()否则编号轴会错位。极端行情如急跌期的单点IC会拉偏曲线建议先剔除再拟合。窗口参数还支持预热写法避免窗口边缘数值跳变from gs_quant.timeseries.datetime import Window ic correlation(lag(factor, 1), ret, 20) # 20日窗口灵敏 ic correlation(lag(factor, 1), ret, 60) # 60日窗口平滑 ic correlation(lag(factor, 1), ret, Window(60, 20)) # 60日窗口前20日逐渐预热 延伸方向算完半衰期还能做什么手里有了半衰期值得继续挖两个方向拿真实因子数据gs_quant/models/risk_model.py 里的FactorRiskModel.get_factor_data可以按日期区间取因子数据因子相关定义见 gs_quant/markets/factor.py。把调仓频率变成策略gs_quant/markets/optimizer.py 提供组合优化可结合半衰期试不同调仓周期做指数方向的研究则看 gs_quant/markets/index.py图中展示了指数自上而下的树状构成。保质期测出来了下次调仓频率就有依据了。拿两段Series试跑上面的代码或者先收藏这篇文章。【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻