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

发布时间:2026/11/5 14:58:02

卡尔曼滤波动态价差追踪: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/11/5 14:58:00

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/11/4 17:14:56

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

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

2026/11/4 20:12:33

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

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

2026/11/5 14:10:30

ADS122U04IPWR+STM32F427ZI工业级温度测量信号链设计

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

2026/11/5 14:10:30

UART接口24位ADC搭配RS485,解决远距离温度监控难题

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

2026/11/5 14:10:30

UART接口24位ADC搭配PIC18F46K22的RTD与热电偶测温实践

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

2026/11/5 13:55:19

GD32E10x官方例程入门:从GPIO点灯到串口调试

简介:这份GD32E10x系列官方例程面向嵌入式硬件与单片机开发者,基于ARM Cortex-M3内核,汇集兆易创新GD32E10x的示例代码,适合工业控制、消费电子、通信设备等场景的学习、验证与二次开发。压缩包共935个文件,约11.16MB&…

2026/11/5 13:50:18

基于Django的运维平台实战:资产、发布、巡检、告警一体化

简介:这份资源是一套基于Django框架开发的运维平台源码,面向具备Python基础、希望了解Web运维系统实现思路的开发者与运维人员,可用于学习主机管理、服务监控、日志查看、任务调度、权限控制、资源统计、脚本执行与故障告警等常见运维模块的落…

2026/11/5 13:25:11

基于ADS122U04IPWR与STM32F427ZI的工业测温方案设计

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

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

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

2026/11/5 0:02:07

多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中…

2026/11/5 0:02:07

大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#…

2026/11/5 0:02:07

鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的…

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

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

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

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

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