matlab 股票 小波,小波分析 + 支持向量机(SVM)预测股票涨跌幅的实现

本文介绍了如何使用MATLAB进行金融数据预测,特别是应用小波分析和支持向量机(SVM)来预测股票涨跌幅。首先通过小波分析对数据进行消噪处理,接着进行数据归一化,然后利用SVM训练模型预测股票涨跌情况。通过高斯径向基函数计算涨跌值并还原预测股票价格。虽然最终结果并不理想,但分享了整个实现过程,希望能为初学者提供参考。
摘要由CSDN通过智能技术生成

刚刚开始进入量化投资领域,最近在做金融数据方面的预测,用到了数据挖掘的知识,花了大概半个月的时间搞懂研报的思想,学习研报中提到的数据处理和机器学习算法,并实现了这个量化投资的核心模型部分,虽然结果显示这个方法没有多好,但是在这期间,我遇到了很多问题,也t通过各种渠道把他们解决了,因此,在这里分享一下我在做这一次策略中用到的方法,希望能够给刚开始接触量化投资或者时间序列挖掘的人们提供一些参考,当然,我也是第一次真正地实现一个策略,文中有纰漏之处,若大家发现,也请指出,小胖感激不尽!

做的这个策略来源于国信证券2010年中期策略会专题报告一篇名为《基于小波分析和支持向量机的指数预测模型》的研报(以下简称研报)。

策略思想:

1.先用小波分析对用于预测的数据集进行消噪处理

2.归一化消噪后的时间序列,求出新的股票指标,以备预测用

3.选择适当的核函数,对股票的涨跌情况Label进行预测,并求出支持向量机中的拉格朗日乘数alpha(有i个)和截距bias(一个)

4.根据alpha,bias和涨跌情况Label,结合核函数和支持向量机的高斯径向基函数,预测涨跌值z

5.用预测的涨跌值还原预测股票价格

如果我没有理解错,大致步骤应该就是这样的了。而且绝大多数策略思想和时间序列数据挖掘的思想都和这差不多。

下面详细讲解每一个步骤:

1.小波消噪

MATLAB自带小波分析工具箱,网上也有讲解,但是我在做的过程中也犯过迷糊,因此拿出来和大家分享一下。

假设我们要对成交量,收盘价,成交金额,最高价和最低价这五个指标进行消噪处理,并且用db4小波进行4层分解,那么代码应该是下面这样的:

%% 对每一个指标用db4小波执行4层小波分解

%对总成交量进行分解

[C_Volume, L_Volume] = wavedec(TotalVolumeIndex, 4, 'db4');

%对收盘价进行分解

[C_ClosePrice, L_ClosePrice] = wavedec(CloseIndex, 4, 'db4');

%对总成交金额进行分解

[C_Amount, L_Amount] = wavedec(TotalAmountIndex, 4, 'db4');

%对最高价进行分解

[C_HighPrice, L_HighPrice] = wavedec(HighIndex, 4, 'db4');

%对最低价进行分解

[C_LowPrice, L_LowPrice] = wavedec(LowIndex, 4, 'db4');

小波分析把原始的信号分解为两个部分:近似(Approximation)和细节(Detail),近似就是我们通常所说的信号的低频部分,而细节就是高频部分。信号的噪声通常包含在高频部分,而近似部分和原始的信号非常相似,但是我们又不能只保留低频部分对高频不管不问,因此我们可以只需要对高频部分进行消噪处理,然后再还原信号,代码如下(以收盘价为例,其他指标类似):

%% 从系数中4层近似(低频)和1,2,3,4层细节(高频)

%收盘价的4层近似和1,2,3,4层细节

A4_ClosePrice = wrcoef('a',C_ClosePrice, L_ClosePrice, 'db4', 4);

D4_ClosePrice = wrcoef('d',C_ClosePrice, L_ClosePrice, 'db4', 4);

D3_ClosePrice = wrcoef('d',C_ClosePrice, L_ClosePrice, 'db4', 3);

D2_ClosePrice = wrcoef('d',C_ClosePrice, L_ClosePrice, 'db4', 2);

D1_ClosePrice = wrcoef('d',C_ClosePrice, L_ClosePrice, 'db4', 1);

%% 对高频信息进行消噪处理

ClosePriceT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值