Python股票交易中的卡尔曼滤波器

news2024/11/17 11:57:51

卡尔曼滤波器

什么是卡尔曼滤波器?

鉴于测量结果会受到噪声的影响,卡尔曼滤波器 (KF) 算法可以恢复被跟踪的底层对象的真实状态。该算法有两个步骤:预测步骤和测量更新步骤。该滤波器结合了噪声传感器的测量结果和基于物理的模型的预测(例如,速度*时间给出距离)以提供最佳估计。让我们尝试使用 GPS 传感器来估计汽车的位置。众所周知,GPS 传感器无法准确预测车辆的位置(这对于自动驾驶汽车等安全关键型应用至关重要),我们的目标是预测车辆的实际位置。

汽车在前一个时间步的位置,k-1

上图使用高斯分布显示了前一个时间步的汽车位置。方差表示估计的准确程度。在这种情况下,方差越小,准确度越高。

在滤波器的预测阶段,它使用物理模型预测当前时间步 k 的汽车位置。下图展示了汽车在另一个方差较大的高斯分布中的新位置。这是因为新位置是使用简单的物理模型计算的,没有来自传感器的任何数据。这意味着汽车的位置可以位于该分布中的任何位置。

汽车在之前时间步的位置和预测

在测量更新阶段,我们从GPS传感器获取汽车的当前位置,如下图橙色分布所示。

汽车在预测和测量更新步骤中的位置

由于 GPS 传感器也存在噪声,因此我们将预测结果与传感器测量结果结合起来来估计最佳位置,如下所示。这是通过将这两个概率函数相乘来完成的,结果也将是另一个高斯函数。

组合两个位置给出了汽车在时间 x_k 时的位置的最佳状态估计

这样,即使传感器的测量结果有噪声,我们也可以估计被跟踪物体的真实状态。

卡尔曼滤波器中的 Twp 步长,其中 x 是平均值,p 是方差。

上图显示了卡尔曼滤波器中估计被跟踪对象的真实状态的步骤。在更新步骤中,我们使用预测步骤的预测值和测量值来查找估计中的误差。卡尔曼增益可以控制应该给预测值和测量值赋予多少权重。该参数决定真实状态是否更接近预测值或测量值。

= 预测误差 /(预测误差 + 测量误差)[4]

使用这些值,我们可以在更新步骤中找到真实状态(x_k 和 P_k)。请注意,我们还使用其他参数来应用 KF,为了简单起见,这里没有公开。

股票交易中的KF

蓝线移动平均线的计算,窗口大小为 50 天,

该算法在股票交易中的用例之一是我们可以使用它来平滑类似于移动平均线(MA)的定价数据。

移动平均线是一种技术分析工具,通过创建不断更新的平均价格来帮助平滑价格数据。交易者通常使用它来识别趋势和潜在的交易机会。

KF 相对于 MA 的优点之一是它不需要窗口长度,从而减少了过度拟合的问题。

Python 中的实现

我已经实现了股票交易中算法用例的示例代码,并将其发布在GitHub 存储库中。如果你想玩的话请看一下。以下是实现该算法的步骤。

  1. 导入数据
  2. # Load pricing data for a security
    df = pd.read_csv('data/IFNNY.csv')
    x = df['Adj Close']

2.主要可以利用pykalman来实现算法。该算法需要初始化默认参数来估计真实状态。我们为这些参数采用了常用的默认值。

# Construct a Kalman filter
kf = KalmanFilter(transition_matrices = [1],
              observation_matrices = [1],
              initial_state_mean = 0,
              initial_state_covariance = 1,
              observation_covariance=1,
              transition_covariance=.0001)

3. 计算滚动平均值和协方差。

mean, cov = kf.filter(x.values)
mean = pd.Series(mean.flatten(), index=x.index)

4. 为了进行比较,我们可以计算 30 天和 60 天窗口的移动平均线。

# Compute the rolling mean with various lookback windows
mean30 = x.rolling(window = 30).mean()
mean60 = x.rolling(window = 60).mean()

5. 我们可以绘制使用卡尔曼滤波器计算出的 30 天和 60 天移动平均值的滚动平均值。

正如您所看到的,与移动平均线相比,卡尔曼的估计更加平滑并且不会过度拟合。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1106421.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

山西电力市场日前价格预测【2023-10-19】

日前价格预测 预测说明: 如上图所示,预测明日(2023-10-19)山西电力市场全天平均日前电价为210.83元/MWh。其中,最高日前电价为337.00元/MWh,预计出现在18: 30。最低日前电价为0.00元/MWh,预计出…

GitHub-使用 Git工具 创建密钥id_rsa.pub

快速导航 步骤1 打开Git Bash步骤2 输入指令【ssh-keygen】步骤3 打开创建的公钥文件步骤4 复制其中所有内容步骤5 打开GitHub中的Setting界面步骤6 添加SSH keys 步骤1 打开Git Bash 打开Git Bash 工具 步骤2 输入指令【ssh-keygen】 输入指令【ssh-keygen】,并…

C语言验证哥德巴赫猜想

完整代码: /*写一个函数验证哥德巴赫猜想:一个不小于 6 的偶数可以表示为两个素数之和,如 633,835,1037…在主函数中输入一个不小于 6 的偶数 n,然后调用函数 gotbaha, 在 gotbaha 函数中再调用…

Aria2NG连接aria2-pro提示认证失败的处理办法

本文档适用于已经安装了aria2-pro和AriaNg的小伙伴~ 第一次登录管理端会提示”认证失败“ 这是因为aria设置了密码,需要在设置中配置上密码即可 配置完密码重新加载就可以正常使用啦 下载速度明显比以前快了很多 下载参考文档 Docker安装下载神器aria2并使用过程记…

Eclipse Xtext 实现PLC ST 语言到C的转换

Eclipse Xtext 是开发领域专用语言(DSL)的工具。例如数据库的SQL 语言,PLC 的ST 语言都是一种领域专用语言。在开放自动化领域,提倡基于模型的设计方法。DSL 是描述模型的强有力工具。 在开发PLC 程序IDE时,开发ST编译…

STM32-LCD液晶显示

LCD液晶显示 针对野火指南者配套资料:3.2寸 LCD电阻屏,屏幕里自带ILI9341液晶控制器芯片,该控制器芯片中存在GRAM(即显存)。该液晶控制器使用8080接口与单片机通讯,液晶面板引出来的FPC信号线为8080接口&am…

ESP RainMaker 客户案例 #1|Halonix

Halonix 是印度规模增长最快的电器公司之一,专注于照明、风扇等电器产品,正在进军健康和安全领域,现已推出紫外线消毒器和安全摄像头。Halonix 致力于创新,不断采用新兴前沿技术实现产品迭代,并通过加强设备间的互联互…

23.项目开发之量化交易抓取数据QuantTradeData(二)

后端业务:定时更新“A股日线行情”数据 需求说明 为了获取前一天的最新数据,我们需要每天晚上10点定时刷新daily股票列表基础信息,并将最新数据插入或更新到数据库中。 如果该内容是在当天交易日信息未更新前查询(15~16点之前&a…

谢宝栋教授:左心室辅助装置最新进展【ACC最新科学声明解读】

谢宝栋教授 主任医师 哈尔滨医科大学附属第一医院心脏大血管外科主任 独立完成十余例LVAD手术,具有丰富经验。 心力衰竭(HF)是一种严重的心脏病,导致心脏无法有效地泵送血液到全身。根据指南指导的药物治疗虽然可以缓解部分HF患…

ubuntu 18.04 开机自启 打开终端执行脚本

一 打开设置开机自启配置程序 alt F2 输入 gnome-session-properties 或 终端输入 gnome-session-properties 二 添加开机自启配置 点右方的add加入 填写名称,可自定义 填写指令,即开机想要执行的指令 gnome-terminal -x bash -c “ls; exec bash” …

JAVA生成ORC格式文件

一、背景 由于需要用到用java生成hdfs文件并上传到指定目录中,在Hive中即可查询到数据,基于此背景,开发此工具类 ORC官方网站:https://orc.apache.org/ 二、支持数据类型 三、工具开发 package com.xx.util;import com.alibab…

安防视频监控平台EasyCVR出现视频流播放卡顿情况,如何优化?

视频集中存储/云存储/视频监控管理平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。AI智能/大数据视频分析EasyCVR平台已经广泛应用在工地、工厂、园区、楼…

成都股票开户选择哪家证券公司开户最便宜?炒股开户佣金最低是多少?

成都股票开户选择哪家证券公司开户最便宜?炒股开户佣金最低是多少? 股票开户是指向证券公司注册开立证券账户,以便购买和销售股票。一般而言,股票开户需要提供身份证明、联系方式、银行账户等信息并完成相应的申请手续。开户后&a…

postman请求400错误-日期LocalData

错误日志参考 [nio-8080-exec-3] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type java.lang.String to required type java.time.LocalDate; neste…

RK3568驱动模块编译进内核

一、创建文件 首先在drivers/char目录下创建hello文件夹&#xff0c;然后在hello文件夹下创建hello.c 文件、Kconfig和Makefile文件。   hello.c 文件内容如下 #include <linux/module.h> #include <linux/kernel.h> static int __init helloworld_init(void) …

Shell 一键替换当前目录下所有文件的指定内容

文件内容&#xff1a; 脚本&#xff1a; #!/bin/bash source_content"127.0.0.1" target_content"helo cloudmusic"# 指定目录 directorypwd# 使用循环遍历目录中的每个文件 for file in "$directory"/* doif [ -f "$file" ]; then# …

B站狂转清华大佬手写笔记:Spring Security+ OAuth2.0分布式认证授权

微服务认证方案 微服务认证方案目前有很多种&#xff0c;每个企业也是大不相同&#xff0c;但是总体分为两类&#xff0c;如下&#xff1a; 网关只负责转发请求&#xff0c;认证鉴权交给每个微服务商控制统一在网关层面认证鉴权&#xff0c;微服务只负责业务 你们公司目前用…

保姆级教程:百度AI简单使用

1.进入AI对话界面 随便提个问题 这里我选择了程序猿小助手 文心一言网站 https://yiyan.baidu.com/welcome 文心一言可以做什么 与人对话互动&#xff0c;回答问题&#xff0c;协助创作&#xff0c;高效便捷地帮助人们获取信息、知识和灵感。 参考截图

SSO身份验证如何帮助加强密码安全性

单点登录 &#xff08;SSO&#xff09; 是一种身份验证服务&#xff0c;可帮助用户使用一组凭据快速安全地访问所有应用程序。在员工需要访问多个应用程序才能完成工作的企业环境中&#xff0c;每次需要访问时都必须为每个应用程序输入登录凭据&#xff0c;这是一个主要的烦恼来…

C语言求 sinh(x)=(e^x - e^-x)/2,其中 e^x 用单独函数返回值

完整代码&#xff1a; // 求 sinh(x)(e^x - e^-x)/2&#xff0c;其中 e^x 用单独函数返回值 #include<stdio.h> #include<math.h>int main(){double x,sinh;printf("请输入一个数");scanf("%lf",&x);sinh(exp(x)-exp(-x))/2;printf("…