新闻详情

新闻详情

首页 / 资讯中心 / 详情

gs-quant 时间序列线性回归实战:LinearRegression 与 RollingLinearRegression 完全指南

发布时间:2026/9/15 21:11:52来源:尧图网络
gs-quant 时间序列线性回归实战:LinearRegression 与 RollingLinearRegression 完全指南
gs-quant 时间序列线性回归实战LinearRegression 与 RollingLinearRegression 完全指南【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant本篇技术指南聚焦 gs-quant 的gs_quant.timeseries.statistics模块中两个核心统计建模类——LinearRegression普通最小二乘 OLS 回归与RollingLinearRegression滚动窗口 OLS 回归。它们面向金融时间序列场景直接解决用一条或多条解释变量序列拟合因变量、输出系数/R²/拟合值/预测值/误差标准差的问题。读完本文你将掌握这两个类的完整参数语义、数据预处理规则、全部方法的调用方式与返回形态并能用仓库自带的测试与示例快速上手。一、模块定位timeseries.statistics 中的统计建模入口LinearRegression与RollingLinearRegression均定义于 gs_quant/timeseries/statistics.py分别为第 1083 行与第 1173 行并被模块级from .statistics import *统一导出见 gs_quant/timeseries/init.py因此可直接通过gs_quant.timeseries.LinearRegression或gs_quant.timeseries.RollingLinearRegression导入。模块 docstring 将其定位为用于时间序列的基础算术与统计运算通常不涉及金融专属逻辑回归建模正是其中承担关系度量职责的部分。官方 API 文档对应页面为 docs/classes/gs_quant.timeseries.statistics.LinearRegression.rst列出 5 个方法与 docs/classes/gs_quant.timeseries.statistics.RollingLinearRegression.rst列出 4 个方法类名与方法签名均由 Sphinxautoclass直接从源码 docstring 生成。底层实现依赖两个成熟的统计库statsmodels.api.OLS静态 OLS 拟合statsmodels.regression.rolling.RollingOLS滚动 OLS 拟合导入语句见 statistics.py。这意味着两个类的数值内核并非 gs-quant 自研而是对 statsmodels 回归结果的一层金融时间序列友好封装自动完成数据清洗、日期对齐与结果序列化。二、LinearRegression静态 OLS 回归2.1 构造参数LinearRegression(X, y, fit_interceptTrue)参数类型默认值说明Xpd.Series或list[pd.Series]必填解释变量观测值。传单个 Series 表示一元回归传 Series 列表表示多元回归各序列按列拼接ypd.Series必填因变量观测值fit_interceptboolTrue是否在模型中拟合截距项注意fit_intercept必须是布尔值否则抛出MqTypeError(expected a boolean value for fit_intercept)见 statistics.py。2.2 构造时的数据预处理流程源码级拆解从 statistics.py 的实现看__init__依次完成五个步骤理解它们对正确使用至关重要矩阵化X为列表时用pd.concat(X, axis1)按列拼接为单个 Series 时用X.to_frame()转为单列 DataFrame。加截距列fit_interceptTrue时调用sm.add_constant(df)在最前插入全 1 列。重命名列索引列名被重写为0, 1, 2, ...带截距时或1, 2, 3, ...不带截距时这正是后续coefficient(i)中i索引编号的来源。清洗非法值分别过滤X与y中任一位置为NaN、inf、-inf的行。日期对齐用df.align(y, inner, axis0)仅保留两者日期/时间索引的交集。也就是说只要X与y的时间索引不完全一致构造器会静默裁剪到交集只要任一条序列存在缺失值或无穷值对应日期行会被剔除后再回归。这保证了金融数据常见的数据长度不一致、有空缺场景下仍能稳定建模。2.3 五个方法逐一说明官方文档列出的方法见 LinearRegression.rst如下coefficient(i: int) - float返回第i个解释变量的估计系数。i0对应截距仅当fit_interceptTrue时可用i1起依次对应第一、第二个解释变量的回归斜率。实现为self._res.params[i]statistics.py。r_squared() - float返回决定系数 R²即模型解释的方差比例。实现为self._res.rsquaredstatistics.py。fitted_values() - pd.Series返回用原始输入X回代模型得到的拟合值序列索引与对齐后的输入一致。实现为self._res.fittedvaluesstatistics.py。predict(X_predict) - pd.Series对外部新数据做预测。X_predict同样接受单个 Series 或 Series 列表且必须与训练时解释变量的列结构一致。内部会按训练时的fit_intercept设置决定是否自动添加截距列statistics.py。standard_deviation_of_errors() - float返回误差项残差的标准差即回归的标准误差实现为np.sqrt(self._res.mse_resid)statistics.py。关于plot_method装饰器以上五个方法均被 helper.py 中的plot_method装饰。该装饰器为方法打上plot_method True标记表明可被 Marquee Plot Service 导出并自动吞掉调用方传入的real_time、interval、time_filter等额外关键字参数。因此这些方法在绘图/回测等统一调用框架下可以无差别地被调度。2.4 官方示例与运行验证类 docstring 给出的最小示例statistics.pyfrom gs_quant.timeseries import LinearRegression, generate_series x1 generate_series(100) x2 generate_series(100) y generate_series(100) r LinearRegression([x1, x2], y, True) print(r.r_squared())其中generate_series(length, direction)statistics.py生成服从随机游走的价格序列X_t (1 R) · X_{t-1}其中R ~ N(0, 1)共length个观测索引为连续自然日。仓库测试 test_statistics.py 中test_regression给出了精确数值验证对y 10 x1 3·x2的构造数据coefficient(0)10.0、coefficient(1)1.0、coefficient(2)3.0r_squared()1.0standard_deviation_of_errors()0完美拟合时误差为 0并演示了用两个新日期上的x1/x2预测出 30.0 与 34.0。测试还覆盖了一个关键约束fit_intercept1非布尔会触发MqTypeError。三、RollingLinearRegression滚动窗口 OLS 回归3.1 构造参数RollingLinearRegression(X, y, w, fit_interceptTrue)参数类型默认值说明Xpd.Series或list[pd.Series]必填解释变量观测值语义同LinearRegressionypd.Series必填因变量观测值wint必填每个滚动窗口包含的观测数fit_interceptboolTrue是否拟合截距3.2 与静态回归的三大差异窗口约束w必须严格大于解释变量个数含截距列否则抛出MqValueError(Window length must be larger than the number of explanatory variables)statistics.py。例如两个解释变量 截距共 3 列窗口至少为 4。参数按窗口输出所有结果都是与时间索引对齐的pd.Series而非标量。每个窗口的参数值记录在该窗口的最后一个时间点上因此序列的前w-1个位置为NaN。无predict方法官方文档RollingLinearRegression.rst仅列出coefficient、fitted_values、r_squared、standard_deviation_of_errors四个方法滚动回归不提供对外预测接口。3.3 四个方法及其返回形态coefficient(i: int) - pd.Series第i个系数的滚动时间序列statistics.py。r_squared() - pd.Series每个窗口的决定系数序列statistics.py。fitted_values() - pd.Series每个窗口末端时刻的拟合值。其实现值得注意statistics.py不是直接取RollingOLS的 fittedvalues而是用对齐后的X逐元素乘以各列滚动参数后按行求和即(X · β)的内积形式保证了拟合值在窗口内有效观测上的一致性。standard_deviation_of_errors() - pd.Series每个窗口残差标准差的序列np.sqrt(mse_resid)statistics.py。3.4 运行示例与测试验证docstring 示例statistics.pyfrom gs_quant.timeseries import RollingLinearRegression, generate_series x1 generate_series(100) x2 generate_series(100) y generate_series(100) r RollingLinearRegression([x1, x2], y, 22) # 22 个观测的滚动窗口 print(r.r_squared())测试test_rolling_linear_regressiontest_statistics.py以窗口w4、双解释变量 截距验证了前 3 个时间点所有结果均为NaN窗口未满各窗口系数、R²、拟合值、残差标准差均与预期序列精确一致如r_squared()序列为[NaN, NaN, NaN, 1.0, 0.964029, 0.901961]w3不大于列数 3触发MqValueErrorfit_intercept1触发MqTypeError。四、边界条件与错误处理速查场景行为fit_intercept非布尔MqTypeError两个类一致滚动窗口w 列数含截距列MqValueErrorX与y索引错位自动取日期交集inner对齐数据含NaN/±inf对应行剔除后再回归X传入单个 Series自动to_frame()按一元回归处理X传入 Series 列表按列拼接多元回归滚动窗口未满前w-1期结果为NaN五、典型应用场景在 gs-quant 的金融时间序列生态中这两个类的典型用法包括因子暴露分析以因子收益序列为X、资产收益为y静态回归输出全样本 beta 与 R²滚动回归观察 beta 随时间的漂移判断因子关系是否稳定对冲比例估计以对冲工具收益为解释变量估计对冲比率coefficient(1)并监控滚动对冲比率的时变性基差/价差关系的分段检验结合 Window 这类窗口工具或rolling_apply见 helper.py 的导入列表可进一步与模块内其他统计函数correlation、beta、winsorize等组合构建完整的因子研究管线。需要说明的是两个类都要求输入为 pandas 序列通常以DatetimeIndex或日期索引为索引在真实行情场景中X/y可直接来自 gs-quant 的行情获取函数如各get_*_series系列接口与本模块天然兼容。六、小结LinearRegression与RollingLinearRegression是 gs-quant 时间序列统计模块中对 statsmodels 回归能力的高质量封装前者提供全样本静态回归的系数、R²、拟合值、预测与残差误差标准差后者在固定观测数窗口上滚动拟合输出逐时点的系数与统计量序列。二者共享严格的数据清洗与日期对齐机制、统一的MqTypeError/MqValueError校验以及可被绘图框架调用的plot_method接口是金融因子研究与回归分析中开箱即用的基础工具。【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

基于Vue3与Three.js的三维油藏模型可视化与交互切割实战 2026/9/15 21:50:59

基于Vue3与Three.js的三维油藏模型可视化与交互切割实战

做油田数字化项目越久越发现,模型好看只是表象,真正要命的是数据。要说三维可视化本身,Three.js的社区案例一抓一大把,但一旦把场景换成油藏模型,很多人立刻就卡住了——模型文件动不动几百MB、网格数据几十万甚至上百…

阅读更多 →
SurfSense 知识库优先(KB-First)落地机制:主 Agent 如何用实时数据接地事实答案 2026/9/15 21:50:59

SurfSense 知识库优先(KB-First)落地机制:主 Agent 如何用实时数据接地事实答案

SurfSense 知识库优先(KB-First)落地机制:主 Agent 如何用实时数据接地事实答案 【免费下载链接】SurfSense Open-source NotebookLM alternative. Research the open web with live data(Reddit, YT, IG, TikTok, Indeed, Google Search, Ma…

阅读更多 →
AI微服务配置中心实战:Nacos动态刷新与部署避坑指南 2026/9/15 21:50:59

AI微服务配置中心实战:Nacos动态刷新与部署避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
PHP微信上墙大屏互动源码解析:从回调接入到部署上线 2026/9/15 21:50:59

PHP微信上墙大屏互动源码解析:从回调接入到部署上线

简介:基于PHP打造的微信上墙大屏幕现场互动源码V7.24,面向活动会议、晚会演出等场景,为PHP开发者与活动运营方提供一套可直接部署的微信互动大屏方案,适合具备一定PHP基础并希望掌握微信开发实战的读者。压缩包内共2000个文件&…

阅读更多 →
Cataclysm-DDA Mind Over Matter 模组:异能觉醒(Awakening)与习得机制完全指南 2026/9/15 21:50:59

Cataclysm-DDA Mind Over Matter 模组:异能觉醒(Awakening)与习得机制完全指南

Cataclysm-DDA Mind Over Matter 模组:异能觉醒(Awakening)与习得机制完全指南 【免费下载链接】Cataclysm-DDA Cataclysm - Dark Days Ahead. A turn-based survival game set in a post-apocalyptic world. 项目地址: https://gitcode.co…

阅读更多 →
k-means++初始化:让KMeans聚类更稳更优的默认选择 2026/9/15 21:47:59

k-means++初始化:让KMeans聚类更稳更优的默认选择

如果你用过sklearn里的KMeans,大概率会注意到一个默认参数:initk-means。大多数教程都会叫你“保持默认,不要动”,但很少说清楚它到底是什么、为什么好用。k-means不是新聚类算法,它只是k-means的一个初始化策略&#…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞