ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

gs-quant 因子IC半衰期:3步怎么算出来?

gs-quant 因子IC半衰期:3步怎么算出来? gs-quant 因子IC半衰期3步怎么算出来【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant当回测里的动量因子突然不灵你更想先知道它还能撑多久——IC半衰期就是回答这个问题的那把尺子。gs-quant 把拉因子收益和算滚动相关的函数都备齐了几行代码就能画出 IC 衰减曲线、算出半衰期不用自己搭数据管道。核心概念速览IC半衰期衡量的是因子预测力衰减到一半需要多久它直接决定调仓频率——半衰期 20 天的因子按月调就够了5 天的得按周。gs-quant 里拉因子收益、算滚动相关都是现成函数拼起来就是一套完整的 IC 衰减分析。上图展示了因子层面的分析面板我们这条流程的原料就来自这类风险模型数据。从数据到结果三步跑通整条链路就三次函数调用跟着做一遍。拉取风险模型因子收益先从风险模型里把因子收益取回来它是后面 IC 计算的原料前提是会话已配置好 GS 认证。import datetime as dt from gs_quant.models.risk_model import FactorRiskModel model FactorRiskModel.get(MODEL_ID) factor_data model.get_factor_data( start_datedt.date(2023, 1, 1), end_datedt.date(2023, 12, 31), name_filter[Momentum], )此时你会看到一张按因子分行的 DataFramename列筛出 Momentum 后日期对收益就是我们需要的序列。拿到因子序列后IC 本身不用手算时间序列模块里的滚动相关就能顶。怎么算滚动IC序列IC 的定义是因子值与下期收益的相关性把收益左移一期、再套 60 日滚动窗口即可。from gs_quant.timeseries import correlation, lag, generate_series, SeriesType exposure generate_series(300) # 示例暴露可换成上一步的因子列 fwd_ret lag(generate_series(300), -1) # 未来一期收益 ic correlation(exposure, fwd_ret, w60, type_SeriesType.RETURNS)此时ic是日期索引的序列前 60 个点为 NaN之后在 [-1, 1] 之间毛刺波动实际跑的时候把两条随机序列换成第 1 步的因子收益列即可。曲线有了接下来把它压成一个数——半衰期。用指数衰减拟合半衰期假设 IC 按指数规律衰减拟合出衰减系数 λ 之后半衰期就是 ln2 除以 λ。import numpy as np from scipy.optimize import curve_fit vals ic.dropna() p, _ curve_fit(lambda t, a, l: a * np.exp(-l * t), np.arange(len(vals)), vals.values) half_life np.log(2) / p[1] # 半衰期观测期数此时half_life是个标量比如 18 就代表 IC 大约 18 个交易日衰减一半再用 matplotlib 把ic和拟合曲线叠到一张图上衰减趋势一眼可见。模块相对路径一句话作用FactorRiskModel 因子数据gs_quant/models/risk_model.py拉取风险模型因子收益correlation 滚动相关gs_quant/timeseries/econometrics.py计算滚动 IC 序列lag 序列位移gs_quant/timeseries/analysis.py取出未来一期收益跑通之后能看到什么输出是一张图毛刺状的滚动 IC 实线压着一条光滑的指数衰减虚线半衰期一般落在 10~60 个交易日IC 长期贴 0 或变号说明预测力已经耗尽。上图展示了风险模型里相关系数随时间变化的形态读法和我们的 IC 衰减曲线一致。⚠️ 容易踩的坑 还能往哪走半衰期算出负数或夸张的大数 → IC 均值接近 0、被噪声主导 → 先看 IC 均值与标准差不显著就别拟合。滚动 IC 前段一片 NaN → 窗口内样本不足 → 调小w或保留缺失别用前值填充。name_filter筛不到数据 → 过滤按模型内真实命名精确匹配 → 先不加过滤拉一次看name列再筛。换掉因子名同一流程就能复用到整个因子库再往前一步可以把半衰期交给gs_quant/markets/optimizer.py的求解器让它反过来决定调仓频率。跑通这套流程之后你的因子库就有了一把统一的尺子。觉得顺手顺手给仓库点个 star。【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表