量化:基于支持向量机的择时策略

文章目录

  • 参考
  • 机器学习简介
  • 策略简介
  • SVM简介
  • 整体流程
    • 收集数据
    • 准备数据
    • 建立模型
    • 训练模型
    • 测试模型
    • 调节参数

参考

Python机器学习算法与量化交易
利用机器学习模型,构建量化择时策略

机器学习简介

机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。

机器学习的常见算法包括:决策树、朴素贝叶斯、支持向量机、随机森林、人工神经网络、深度学习等。

策略简介

输入沪深300的行情数据到支持向量机中进行模型训练,预测沪深指数第二天的涨跌。

Why SVM?
因为数据集为沪深300的日线行情数据,总共只有几千个交易日(样本点),而SVM的小样本预测准确率较高,并且能够解决非线性分类问题,所以比较适合。

SVM简介

SVM最初的设计用来解决二分类问题(比如沪深指数的涨和跌),通过寻找一个最大间隔超平面(图中黑色斜线)将两类样本线性区分开,并保证两侧样本的最近边缘点到这个平面的距离最大,由于最大间隔超平面仅取决于两个类别的边缘点,例如上图中被红线和蓝线穿过的红点和蓝点,这些点就被称为支持向量。
在这里插入图片描述数据集并非总是线性可分的,如下图。

在这里插入图片描述对数据非线性可分的情况,SVM引入了核函数,将低维不可分的数据映射到线性可分的高维,如下。
在这里插入图片描述
常用的核函数有
在这里插入图片描述但在现实当中,由于噪声和极端样本点的存在,数据集无论在低维还是高维都可能出现线性不可分的情况,于是乎,SVM当中引入了松弛变量的概念,允许了最大间隔超平面不用完美区分两个类别,允许错误分类的存在,SVM通过惩罚系数C控制这些错误分类的容忍程度,C值越高分类准确率越高,但数值过高容易导致过拟合,C值过低则会导致准确率受损。

整体流程

收集数据

tushare接口

准备数据

借助TA-lib库,计算以下因子:

  • EMA:加权的指数移动平均线,更重视近期值,反应价格在某个时间段的趋势。
  • 价格波动率:衡量价格波动幅度的大小。
  • 价格斜率:衡量价格走势的变化速度。
  • RSI:衡量股价走势力量和速度,基于价格变动的大小和速度,通过计算最近一段时间内股价涨跌幅度的平均值,将过去一段时间内的涨跌幅度转化为0到100之间的数值。
  • 威廉指标值:通过分析一段时间内的最高价、最低价和收盘价之间的关系来衡量市场波动的强度,在判断超买和超卖状况方面有较好的效果。

给每个样本点打上标签,计算出每个样本点第二天的涨幅,如果涨则设置标签为1,跌则设置标签为0。

建立模型

使用SVM模型

训练模型

  1. 将数据集的80%作为训练集,剩余20%作为测试集。
  2. 对数据集进行标准化处理,(原始值 - 均值) / 标准差,以尽量消除不同因子量纲的差别(如EMA均值为2919.6,而RSI均值为52.7)。
  3. 将训练集数据输入SVM中:实例化sklearn的svm后,把训练集因子数据和对应标签传入fit函数,惩罚系数1.0,核函数为RBF,开始训练。

测试模型

调节参数

现在使用的5个因子,还没有反应到价格波动的本质,还可以增改更多的因子。

还比如说,SVM模型当中的惩罚系数C过小,对错误样本的容忍度过高,RBF核函数不适合作为这个数据集的映射转换函数。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无涯教程-JavaScript - OCT2BIN函数

描述 OCT2BIN函数将八进制数转换为二进制数。 语法 OCT2BIN (number, [places])争论 Argument描述Required/OptionalNumber 您要转换的八进制数。 数字不能超过10个字符。数字的最高有效位是符号位。其余的29位是幅度位。 负数使用二进制补码表示。 RequiredPlaces 要使用的…

【C语言】字符串函数

文章目录 前言1.strcat2.strncpy3.strncat4.strncmp5.strstr6.strtok7.strerror8.strcat的模拟实现9.strstr的模拟实现 总结 添加链接描述 前言 大家好呀,今天给大家分享一下字符函数和字符串函数C语言中对字符和字符串的处理很是频繁,但是C语言本身是没…

随机密码生成器(Python)

随机密码生成器 想要生成一个随机密码,需要考虑下面两点: 1.字符集合 2.密码的位数 下面代码中引用了string模块和random模块,string.printable是string中的可打印字符,用strip函数首尾去掉空格;random模块用来取字符&…

C# wpf 实现桌面放大镜

文章目录 前言一、如何实现?1、制作无边框窗口2、Viewbox放大3、截屏显示(1)、截屏(2)、转BitmapSource(3)、显示 4、定时截屏 二、完整代码三、效果预览总结 前言 做桌面截屏功能时需要放大镜…

品牌策划经理工作内容|工作职责|品牌策划经理做什么?

一位美国作家曾说过“品牌是一系列期望、记忆、故事和关系,他们共同构成了消费者最终原则一个产品或者服务的原因。” 所以,品牌经理这个岗位主要是创造感知价值主张,激发消费者购买这个品牌后带来的感知价值,这种回报的本质相对…

C语言实现三子棋游戏(详解)

目录 引言: 1.游戏规则: 2.实现步骤: 2.1实现菜单: 2.2创建棋盘并初始化: 2.3绘制棋盘: 2.4玩家落子: 2.5电脑落子: 2.6判断胜负: 3.源码: 结语&…

论文阅读 (100):Simple Black-box Adversarial Attacks (2019ICML)

文章目录 1 概述1.1 要点1.2 代码1.3 引用 2 背景2.1 目标与非目标攻击2.2 最小化损失2.3 白盒威胁模型2.4 黑盒威胁模型 3 简单黑盒攻击3.1 算法3.2 Cartesian基3.3 离散余弦基3.4 一般基3.5 学习率 ϵ \epsilon ϵ3.6 预算 1 概述 1.1 要点 题目:简单黑盒对抗攻…

力扣刷题-移除指定值的链表元素

力扣203移除元素 题目来源: 力扣203 题目描述: 非常简单的一道题,主要强调两点 链表删除要记录删除位置的前驱节点 头节点没有前驱 因此直接headhead.next为了保持与后两种一致,加上虚拟节点,下一节点指向头节点 /***…

【Linux-Day10-信号量,共享内存,消息队列】

信号量 信号量描述 信号量是一个特殊的变量,一般取正数值。它的值代表允许访问的资源数目,获取资源 时,需要对信号量的值进行原子减一,该操作被称为 P 操作。 当信号量值为 0 时,代表没有资源可用,P 操作…

企业架构LNMP学习笔记27

Keepalived的配置补充: 脑裂(裂脑):vip出现在了多台机器上。网络不通畅,禁用了数据包,主备服务器没法通讯,造成备服务器认为主服务器不可用,绑定VIP,主服务器VIP不会释放…

【设计模式】三、概述分类+单例模式

文章目录 概述设计模式类型 单例模式饿汉式(静态常量)饿汉式(静态代码块)懒汉式(线程不安全)懒汉式(线程安全,同步方法)懒汉式(线程安全,同步代码块)双重检查静态内部类枚举单例模式在 JDK 应用的源码分析 …

[N0wayback 2023春节红包题] happyGame python反编译

这个反编译的比较深 一,从附件的图标看是python打包的exe文件,先用pyinstxtractor.py 解包 生成的文件在main.exe_extracted目录下,在这里边找到main 二,把main改名为pyc然后加上头 这个头从包里找一个带头的pyc文件&#xff…

做题(1)

1.fileinclude 打开 发现提示flag在flag.php里边 查看页面源代码 $lan $_COOKIE[language]; 这句话是关键 变量lan是用cookie传参的 include("english.php"); 这句话表明了文件包含 include函数用php伪协议 filer绕过 include($lan.".php"); 这句话…

深入实现 MyBatis 底层机制的任务阶段4 - 开发 Mapper 接口和 Mapper.xml

😀前言 在我们的自定义 MyBatis 底层机制实现过程中,我们已经深入研究了多个任务阶段,包括配置文件的读取、数据库连接的建立、执行器的编写,以及 SqlSession 的封装。每个任务阶段都为我们揭示了 MyBatis 内部工作原理的一部分&a…

【算法基础】时间复杂度和空间复杂度

目录 1 算法的评价 2 算法复杂度 2.1 时间复杂度(Time Complexity) 2.1.1 如何计算时间复杂度: 2.1.2 常见的时间复杂度类别与示例 2.2 空间复杂度 2.2.1 如何计算空间复杂度 2.2.2 常见的空间复杂度与示例 3 时间复杂度和空间复杂度…

Linux——环境变量

✅<1>主页&#xff1a;&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;Linux——环境变量 ☂️<3>开发环境&#xff1a;Centos7 &#x1f4ac;<4>前言&#xff1a;环境变量(environment variables)一般是指在操作系统中用来指定操作…

linux下检测CPU性能的mpstat命令安装与用法

1、安装命令 $ sudo apt-get install sysstat sysstat安装包还包括了检测设备其它状态的命令&#xff0c;查看命令如下&#xff1a; 2、检测CPU命令语法 $ mpstat --h //查看mpstat的语法 Usage: mpstat [ options ] [ <interval> [ <count> ] ] Options are: …

期货基础知识

一、期货是什么&#xff1f;  期货是与现货相对应&#xff0c;并由现货衍生而来。期货通常指期货合约&#xff0c;期货与现货完全不同&#xff0c;现货是实实在在可以交易的货&#xff08;商品&#xff09;&#xff0c;期货主要不是货&#xff0c;而是以某种大众产品如棉花、大…

UG\NX二次开发 获取曲面上指定点位置的uv参数 UF_MODL_ask_face_parm

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 简介: UG\NX二次开发 获取曲面上指定点位置的uv参数 UF_MODL_ask_face_parm。 效果: 代码: #include "me.hpp"//parm[2] static void AskFaceUVP…

【插件分享】免费获取ArcGIS国土插件,可一键加载最新亚米级卫星图源

免费获取ArcGIS国土插件&#xff0c;可一键加载最新亚米级卫星图源 国土工具 实用功能国土工具持续更新插件项目实操01 项目占地分析02 shp转txt土地报备坐标03 txt转shp04 在线加载0.5米遥感影像、电子地图服务05 实用工具 如何获取国土工具免费授权第1步第2步第3步 插件下载&…