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

news/2025/1/8 21:24:25/

文章目录

  • 参考
  • 机器学习简介
  • 策略简介
  • 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,开始训练。

测试模型

注意是择时策略,即预测沪深300的涨跌,所以净值曲线与实际曲线越吻合越好,曲线的偏差反应了预测的正确率。不同于择时+选股策略,净值曲线高出沪深300越高越好。

调节参数

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

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


http://www.ppmy.cn/news/1100887.html

相关文章

理财是什么?怎样学习理财?

大家好,我是财富智星,今天跟大家分享一下理财是什么?怎样学习理财的方法。 一、理财的基本原则 1、理财应注重投资而不是投机,要与时间为友。 让我们先考虑以下问题:什么样的回报才算是真正的高回报?假设有…

简单理解微服务限流、降级、熔断

微服务限流、降级、熔断分别都是什么意思,我们平时工作中为什么要关注这些东西呢? 公司不断的发展壮大,一开始处于蛮荒时代,咱们从单体应用过渡到微服务的时候,可能还是那一套单体的思想,再加上用户量可能…

设计模式-01简单工厂模式详解 详细代码对比

目录 ChatGpt问答原生代码简单工厂模式代码 简单工厂模式(Simple Factory Pattern)新增boat 对比两种方法原生代码为什么使用强制转换?简单工厂模式 简单工厂方法总结与原生代码的区别:优点:缺点: 参考 本文将介绍什么…

【EKF】EKF原理

原理简述 卡尔曼滤波可以在线性模型,误差为高斯模型的情况下,对目标状态得出很好的估计效果,但如果系统存在非线性的因素,其效果就没有那么好了。比较典型的非线性函数关系包括平方关系,对数关系,指数关系…

【学习笔记】元学习如何解决计算机视觉少样本学习的问题?

目录 1 计算机视觉少样本学习 2 元学习 3 寻找最优初始参数值方法:MAML 3.1 算法步骤 3.2 代码:使用MAML 和 FO-MAML、任务增强完成Few-shot Classification 4 距离度量方法:Siamese Network,ProtoNet,RN 4.1 孪生网络(Sia…

windows访问服务器notebook(附pycharm)

参考博文:如何在远程服务器上使用Jupyter Notebook? - 知乎 参考博文:Running Jupyter Notebook on a remote server — Anaconda documentation 参考博文:pycharm 使用远程服务器 jupyter (本地jupyter同理&#xf…

蓝桥杯官网练习题(0的个数)

问题描述 给定一个正整数 n ,请问 n 的十进制表示中末尾总共有几个 0 ? 输入格式 输入一行包含一个正整数 n。 输出格式 输出一个整数,表示答案。 样例输入 20220000样例输出 4评测用例规模与约定 对于所有评测用例,1 &l…

Vant组件库入门知识

🙈作者简介:练习时长两年半的Java up主 🙉个人主页:程序员老茶 🙊 ps:点赞👍是免费的,却可以让写博客的作者开兴好久好久😎 📚系列专栏:Java全栈,…