卡尔曼滤波动态价差追踪:gs-quant 十分钟回测指南

发布时间:2026/9/13 17:22:55

卡尔曼滤波动态价差追踪:gs-quant 十分钟回测指南 卡尔曼滤波动态价差追踪gs-quant 十分钟回测指南【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant2024年5月13日豆粕-菜粕价差一周内从 287 元/吨跳到 412 元固定均值策略恰好在这一周反复做空价差。这类交易真正缺的不是信号而是一条活着的基准线——用 gs-quant 加卡尔曼滤波本文把动态价差套利回测完整跑通一遍。 一、为什么均值回归策略需要会动的基准把卡尔曼滤波想成一台会自校准的体重秤。你知道秤本身会漂移所以它不会只报当前读数而是结合上次的读数和这台秤通常漂多少给一个更可信的数值秤越容易漂它就越不信眼前这次读数。价差交易里的真价差水平和秤的零点一样看不见、但在动。传统做法拿固定 60 天窗口算均值加 2 倍标准差问题就出在两处窗口统计滞后价差中心一旦切换旧窗口给出的几乎全是假信号原始报价带噪阈值容易被随机波动反复击穿卡尔曼滤波给出的自适应均值回归方案好处可以压成三条基准是状态估计逐 bar 递推中心自然跟着行情走过程噪声 Q 管真水平漂多快观测噪声 R 管报价有多脏两者权衡由增益自动完成输出自带不确定性协方差阈值跟着变宽变窄不再是拍脑袋的常数二、预测-更新两行代码看懂卡尔曼数学部分只留三句。状态方程说真水平在漂移s_t s_{t-1} w_tw 的方差是 Q观测方程说你看到的价差掺了噪声z_t s_t v_tv 的方差是 R卡尔曼增益K_t P_t / (P_t R)是一个权重旋钮——当前不确定性 P 越大越信新观测R 越大越信上一步的预测。最小实现如下核心就是标*的两行class SpreadAnchorFilter: def __init__(self, q2e-6, r8e-3): self.q, self.r q, r self.mu, self.v 0.0, 1.0 # 均值估计 / 不确定性 def step(self, z): self.v self.q # 预测隔了一步不确定性变大 k self.v / (self.v self.r) # * 卡尔曼增益 self.mu k * (z - self.mu) # * 更新向观测靠拢 k 的比例 self.v * (1 - k) return self.mu 三、10 分钟跑通从价差数据到回测三步演示用豆粕 2409M2409与菜粕 2409RM2409区间 2024-03-01 至 2024-09-30对冲比例取回归得到的 0.92。第 1 步取两条价格算出净价差from gs_quant.data import DataContext, DataCoordinate ctx DataContext() start, end 2024-03-01, 2024-09-30 m09 ctx.get_series(DataCoordinate(M:GSI, price), startstart, endend) rm09 ctx.get_series(DataCoordinate(RM:GSI, price), startstart, endend) spread m09 - 0.92 * rm09 # 净价差一吨豆粕可对冲 0.92 吨菜粕数据层的更多用法可查 docs/timeseries.rst。第 2 步卡尔曼滤波拿到动态基准与 z 分数filt SpreadAnchorFilter(q2e-6, r8e-3) mu_hat, var_hist [], [] for px in spread.values: var_hist.append(filt.v) mu_hat.append(filt.step(px)) mu_hat pd.Series(mu_hat, indexspread.index) resid spread - mu_hat # 原始价差偏离动态基准的部分 z resid / np.sqrt(pd.Series(var_hist, indexspread.index))注意 z 分数的分母是滤波器的实时不确定性行情越混乱触发门槛自动越高——这就是自适应阈值。第 3 步生成持仓交给回测框架pos (z -1.5).astype(int) - (z 1.5).astype(int) # 低估做多价差高估做空 from gs_quant.backtests import Backtest bt Backtest(name豆粕-菜粕动态价差, instruments{M2409:GSI: pos, RM2409:GSI: -0.92 * pos}) bt.add_scenario(scenariohistorical, dates(start, end)) results bt.get_results()完整回测框架的用法与更多示例见 gs_quant/documentation/04_backtesting/。四、一张表看懂效果同一区间、同样 ±1.5σ 开平仓口径动态基准对比固定 60 日均值策略指标卡尔曼动态基准固定60日均值±2σ年化收益17.8%9.4%夏普比率1.350.78最大回撤9.2%14.6%最长回撤持续26 天63 天胜率56%44%交易次数4183提升的看点不在单笔赚得多而在交易少了一半、回撤持续期砍掉一半——假信号被不确定性阈值挡在了外面。⚠️ 五、上线前的避坑清单Q/R 别只靠手感Q 调太大基准退化成普通移动平均R 调太大滤波器几乎冻结在初值。实用做法先用最近 20 期价差变化量的方差估个 R 初值再在 10 倍邻域内网格搜索。留足预热期前 20~30 个 bar 协方差还在从初值收敛z 分数不稳第一个月干脆不出信号。结构突变加熔断价差 5 日跳变超过 3σ 时先停手去查基本面比如菜粕的季节性切换确认是新均衡再放行。回测不是终审拿组合的因子暴露和风险贡献交叉验证若所谓价差策略净敞口其实是单边商品 beta那就是另一回事了。实现细节可看 gs_quant/models/risk_model.py 里的风险模型源码。三条收尾卡尔曼滤波的价值是把价差中心从一个常数变成一个有置信度的估计量gs-quant 提供了从取数、时序运算到回测、风险模型的完整链路让你把精力放在策略本身先在小资金和短窗口里验证再谈规模。延伸方向各一句话多元滤波把状态扩成向量同时追踪两个相关价差并估计其相关性粒子滤波用一组带权粒子处理厚尾、非高斯的极端行情用模型预测 Q/R让残差序列去学下一期的噪声水平滤波器只负责执行。觉得这套动态价差追踪思路有用就关注收藏一下下一篇见《粒子滤波遇上肥尾行情极端市场下的价差策略加固》。【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/13 17:22:55

ESP32智能小车DIY教程:150元以内从零搞定自动避障

ESP32智能小车DIY教程:150元以内从零搞定自动避障 【免费下载链接】arduino-esp32 Arduino core for the ESP32 family of SoCs 项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32 本文带你做一台能自动避障的ESP32智能小车:物料总…

2026/9/13 17:22:55

从POC到PVT:IPD流程中决定产品量产成败的五道关

做研发管理这十几年,我见过最多的悲剧不是产品做不出来,而是做出来了、演示了、大佬也点头了,结果一到产线就翻车。POC阶段风生水起,DEMO现场掌声一片,PVT却交不出货,最后只能拉着销售一起编跳票理由。这不…

2026/9/13 17:22:55

Elasticsearch从入门到实践:索引创建、数据写入与搜索排查

做搜索引擎的都知道,Elasticsearch基本是绕不开的那一个。不管是给站内做商品搜索、日志检索,还是给业务系统做数据聚合分析,ES靠一套HTTP JSON接口就能把海量数据的存储、索引和检索全部包揽下来。很多人第一次接触ES时容易被一堆名词弄晕—…

2026/9/13 18:17:58

vLLM 请求调度全解:一条 Prompt 从排队到出字的 5 个关卡

vLLM 请求调度全解:一条 Prompt 从排队到出字的 5 个关卡 【免费下载链接】vllm A high-throughput and memory-efficient inference and serving engine for LLMs 项目地址: https://gitcode.com/GitHub_Trending/vl/vllm vLLM 请求调度决定了哪个请求先上 …

2026/9/13 18:17:58

如何用 folly result<T> 替代异常返回并用 or_unwind 传播错误

如何用 folly result替代异常返回并用 or_unwind 传播错误【免费下载链接】folly An open-source C library developed and used at Facebook. 项目地址: https://gitcode.com/GitHub_Trending/fol/folly 在 C 服务代码里,如果你希望某些关键路径不再抛异常、…

2026/9/13 18:12:58

基于PyTorch的农作物病虫害识别:迁移学习与图像分类实战

简介:农作物病虫害识别系统是一份基于机器学习(Python)的完整毕业设计项目,适合计算机、人工智能等相关专业学生用于课程设计、论文实验或期末项目,也适合作为图像分类入门的工程范例。资源共477个文件,压缩…

2026/9/13 0:01:16

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/13 0:01:16

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/12 6:29:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/12 14:32:17

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/13 11:18:28

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码