教学课件-MATLAB金融算法分析-机器学习_第1页
教学课件-MATLAB金融算法分析-机器学习_第2页
教学课件-MATLAB金融算法分析-机器学习_第3页
教学课件-MATLAB金融算法分析-机器学习_第4页
教学课件-MATLAB金融算法分析-机器学习_第5页
已阅读5页,还剩302页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一章第一章1个窗口绘制多个图形x=0:0.01:4*pi;y1 = sin(x);y2 = sin(1.01*x);figure(1),plot(x,y1,r);hold onplot(x,y2,b);grid onxlabel(x);ylabel(y)%haxes2=axes(position,0.3,0.7,0.20,0.20);axis(haxes2);hold onplot(x(250:300),y1(250:300),r-) % 画图plot(x(250:300),y2(250:300),b-) % 画图axis tight1个窗口绘制多个图形x=0:0.01:4*pi;Monte

2、 Carlo方法蒙特卡洛Monte Carlo方法是金融学中应用较广泛的一个方法。对于一个非线性不可微的方程而言,如何去逼近这样的一个方程,传统的方法是很难求解的。蒙特卡洛Monte Carlo方法采用随机生成点的方法进行合理解的计算,经过统计学知识,得到方程的近似解,具体的案例分析如下:% 蒙特卡洛Monte Carlo方法tic % 运算计时P=rand(10000,2);x=P(:,1)-0.5;y=P(:,2);points=find(y=x.2);M=length(points);S=4*M/10000figure(color,1,1,1)plot(x(points),y(point

3、s),bs)toc % 计时结束grid onxlabel(x);ylabel(y)Monte Carlo方法蒙特卡洛Monte Carlo方法金融工具箱绘图函数使用金融工具箱绘图函数使用布林线bolling函数布林线bolling函数高低价highlow函数高低价highlow函数高低价highlow函数高低价highlow函数阴阳烛图candle函数阴阳烛图candle函数砖型图renko函数砖型图renko函数移动平均图movavg函数移动平均图movavg函数第二章第二章例如一点的经纬度为M(A2,B2),另一点的经纬度为N(C2,D2),则MN之间的实际距离计算具体如下:% 参考本代

4、码,请引用并注明 本书信息(余胜威)clc,clear,close all % 清理命令区、清理工作区、关闭显示图形warning off % 消除警告feature jit off % 加速代码运行 % 经纬度距离计算A2 = 113.917;B2 = 28.3;C2 = 113.9;D2 = 22.3;DD = 6371004*acos( sin(B2*pi/180) *sin(D2*pi/180)+. cos(B2*pi/180)*cos(D2*pi/180)*cos(C2-A2)*pi/180) ) % 单位米正余弦函数计算例如一点的经纬度为M(A2,B2),另一点的经纬度为N(C2p

5、code加密pcode加密基本GUI设计基本GUI设计基本GUI设计基本GUI设计日期格式函数MATLAB Financial Toolbox提供了大量的日期操作函数,具体有:now函数、today函数、datefind函数、day函数、datevec函数、eomdate函数、hour函数、lweekdate函数、second函数、minute函数、month函数、months函数、nweekdates函数、weeknum函数、year函数、yeardays函数。以下将选取比较常用的转换函数进行介绍其使用方法。now函数 time = nowtime = 7.3656e+05now函数显示的是

6、公元0年到目前的天数。日期格式函数MATLAB Financial Toolbox日期转化函数Date Conversion函数包中包含date2time函数、datedisp函数、datenum函数、datestr函数、m2xdate函数、time2date函数、uicalendar函数、x2mdate函数。date2time函数TFactors, F = date2time(Settle, Maturity, Compounding, Basis,EndMonthRule)该函数输入中Settle为初始时间节点,Maturity为结束时间节点,其中Compounding指标和Basis输入

7、需要用户注意,具体如下:Compounding指标设置如下:Compounding=0for simple interestDisc = 1/(1 + Z * T), whereTis time in years and simple interest assumes annual timesF = 1.Compounding=1,2,3,4,6,12Disc = (1 + Z/F)(-T), whereFis the compounding frequency,Zis the zero rate, andTis the time in periodic units, for example,

8、T = Fis one year.Compounding=365Disc = (1 + Z/F)(-T), whereFis the number of days in the basis year andTis a number of days elapsed computed by basis.Compounding=-1Disc = exp(-T*Z), whereTis time in years.日期转化函数Date Conversion函数包中包含dat对于我国日历方式,具体设置为Compounding为365。Basis指标设置如下:0=actual/actual (defaul

9、t)1=30/360 (SIA)2=actual/3603=actual/3654=30/360(PSA)5=30/360(ISDA)6=30/360(European)7=actual/365(Japanese)8=actual/actual (ICMA)9=actual/360 (ICMA)10=actual/365 (ICMA)11=30/360E (ICMA)12=actual/365 (ISDA)13=BUS/252同样的,对于我国日历方式,具体设置Basis为10。对于我国日历方式,具体设置为Compounding为365。创建一个金融时间数据序列创建一个金融时间数据序列股票技术分

10、析图函数使用集散指标(Accumulation/Distribution oscillator)集散指标Accumulation/Distribution oscillator是由股票最高价、股票最低价、股票开盘价以及股票收盘价决定的参考指标。集散指标数值越高,则表明该集散指标表示股票股价变化的分布就越明显,给投资者的参考信息也就越多。具体的MATLAB工具箱函数如下:ado = adosc(highp, lowp, openp, closep)ado = adosc(highp lowp openp closep)adots = adosc(tsobj)adots = adosc(tsojb

11、, ParameterName, ParameterValue, .)其中,highp表示股票最高价,lowp表示股票最低价,openp表示股票开盘价,closep表示股票收盘价,tsobj表示一个时间序列结构体数据,ParameterName有四种类型股票技术分析图函数使用集散指标(Accumulation/D集散指标集散指标蔡金摆动指标蔡金摆动指标MACD曲线MACD曲线谢谢谢谢第三章第三章平均绝对离差平均绝对离差(mean absolute deviation或者表示为average absolute deviation):计算各观察值与平均值的距离总和,然后取其平均数。平均绝对离差AV

12、EDEV用于计算平均绝对离差AEVDEV指标值。function avedev_com=AVEDEV(closePrice,period)%函数功能:AVEDEV-平均绝对离差% closePrice:在列向量上随时间变化,即为行向量% 输入: % closePrice-为输入的数据矩阵 % period-为计算的周期数% 输出:% avedev_com: 平均绝对离差avedev_com=nan*ones(size(closePrice,1),size(closePrice,2); % 初始化for j=1:size(closePrice,1) % 行 for i=period:length

13、(closePrice) avedev_com(j,i) = sum(abs(closePrice(j,i-period+1:i)-mean(closePrice(j,i-period+1:i)/period; endend平均绝对离差平均绝对离差(mean absolute dev平均绝对离差绘图平均绝对离差绘图序列最大值function hhv_com = HHV(price,period)% 函数功能:HHV-序列最大值% 输入:% price-为输入的数据矩阵。 % period-为周期,= 1% 输出:% hhv_com:HHV-序列最大值hhv_com=nan*ones(size(

14、price,1),size(price,2); % 初始化if length(price)period % 每一行变量的长度是否大于period for j=1:size(price,1) % 行,每一行一个时间序列数据 for i=period:length(price) % 从period周期开始计算 hhv_com(j,i)=max(price(j,i-period+1:i); % 求最大值 end endend序列最大值function hhv_com = HHV(pr序列最大值序列最大值序列最小值序列最小值LLV用于计算一个period周期内的最小值。function llv_com

15、 = LLV(price,period)% 函数功能:llv-序列最小值% 输入:% price-为输入的数据矩阵。 % period-为周期,= 1% 输出:% llv_com:llv-序列最小值llv_com=nan*ones(size(price,1),size(price,2); % 初始化if length(price)period % 每一行变量的长度是否大于period for j=1:size(price,1) % 行,每一行一个时间序列数据 for i=period:length(price) % 从period周期开始计算 llv_com(j,i)=min(price(j,

16、i-period+1:i); % 求最小值 end endend序列最小值序列最小值LLV用于计算一个period周期内的最序列最小值序列最小值LLV用于计算一个period周期内的最小值。序列最小值序列最小值LLV用于计算一个period周期内的最简单移动平均值移动平均线(MA)采用统计学中“移动平均”的原理,将一段时期内的股票价格平均值连成曲线,用来显示股价的历史波动情况,进而反映股价指数未来发展趋势的技术分析方法。移动平均线(MA)依时间长短可分为三种,即短期移动平均线,中期移动平均线,长期移动平均线。短期移动平均线一般以5日或10日为计算期间,中期移动平均线大多以30日、60日为计算期

17、间;长期移动平均线大多以100天和200天为计算期间。简单移动平均值移动平均线(MA)采用统计学中“移动平均”的原动态移动平均值动态移动平均值DMA用于计算一个时间序列数据的动态移动平均值,假设当前序列值的权值为weight,则前一周期的权重为1-weight。假设一组数据为1,1,7,令a=1,b=1,c=7,设weight=0.5,则DMA动态移动平均值计算如下:DMA(1)=a=1DMA(2)=weight*b + (1-weight)*DMA(1)=0.51+(1-0.5) 1=1DMA(3)= weight*c + (1-weight)*DMA(2)=0.57+(1-0.5) 1=4

18、动态移动平均值动态移动平均值DMA用于计算一个时间序列数据的指数平滑移动平均值 在通常情况下,许多参股入股者(散户)以随机指标(KDJ指标)和指数平滑异同平均线(MACD指标)作为股票买入和卖出信号的重要指标。一旦当大盘或个股的KDJ指标和MACD指标在高位形成死叉后,投资者则通常会卖出。但是,由于股票的主力往往知道投资者这个心理,主力经常会进行反向操作,所以常常导致“顶在顶上”和“底在底下”的情况发生,因此随机指标(KDJ指标)和指数平滑异同平均线(MACD指标)指标常常会失灵,由此人们引入指数平滑移动平均值EMA(Exponential Moving Average)指标。假设价格已脱离均

19、线差值且在不断扩大,而平均线又未能立即反应,则指数平滑移动平均值EMA则可以为投资者提供一定参考依据,从而较少此类缺点。EMA用于计算序列的指数平滑移动平均值,当前序列的权重为2/(period+1),前一周期EMA的权重为(period-1)/(period+1)。指数平滑移动平均值 在通常情况下,许多参股入股指数平滑移动平均值指数平滑移动平均值指数移动平均值指数移动平均值EDMA区别于指数平滑移动平均值EMA和动态移动平均值DMA,EDMA采用权重和周期数组合权重,然后计算平均值,EDMA结合了EMA指数平滑移动平均值和DMA动态移动平均值求解方法。clc,clear,close all

20、% 清屏+清理工作区+关闭图形窗口warning off % 取消警告feature jit off % 加速通道format shortclosePrice = 1 8 2 8 0 3 7 8 2 4 1; 1 1 7 4 0 6 3 0 8 7 0;period = 5; % 周期weight=2; % 权值,1=weightLC % 今天收盘价是否大于昨天收盘价 DIF = closeprice(j,i)-min(lowprice(j,i),LC); else DIF = closeprice(j,i)-max(highprice(j,i),LC); end % 计算ACD if clo

21、seprice(j,i)=LC % 今天收盘价是否等于昨天收盘价 if i=2 acd_com(j,i)=0; % 避免第一天NaN的影响 else acd_com(j,i)=acd_com(j,i-1)+0; % DIF累加和 end else if i=2 acd_com(j,i)=DIF; % 避免第一天NaN的影响 else acd_com(j,i)=acd_com(j,i-1)+DIF; % DIF累加和 end end endend升降线指标吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析升降线指标吴婷、余

22、胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析动力指标动力指标MTM以分析股票价格波动的速度为目的,研究股票价格在波动过程中各种加速,减速,惯性作用以及股票价格由静到动或由动转静的现象。当股票价格上涨强劲时,则动力指标MTM上升斜率越大,即上升越快,当股票价格下降快速时,动力指标MTM下降也越快;当动力指标MTM震荡时,说明股票价格也在一定的小区间范围内震荡。对于动力指标MTM指标而言,投资者应该关注的是:动力指标MTM从下向上突破其均线时,多头为买入信号;动力指标MTM从上向下突破其均线时,多头为卖出信号。吴婷、余胜威:M

23、ATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析动力指标吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析变动速率线指标变动速率线指标OSC在长期反映股票的上涨下跌状态,变动速率线指标OSC曲线更加平滑,变动速率线指标OSC上升则表示股票具有强劲的上涨势头,变动速率线指标OSC下降,则表示股票有下降趋势;变动速率线指标OSC变化的值越大,则股票波动也越大。变动速率线指标OSC属于超买超卖指标,OSC变动速率线是从移动平均线原理派生出来的一种分析指标,OSC变动速

24、率线指标反应当日收盘价与一段时间内平均收盘价的差离值。OSC变动速率线指标穿过0线向上,此时股票有上涨势头,可视为买入信号,此时用户可考虑买入股票;OSC变动速率线指标下跌跌破0线向下,此时股票价格将走弱,被视为卖出信号,此时用户可考虑卖出股票。吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析变动速率线指标吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析瀑布线指标瀑布线指标PBX广泛应用于金融领域中,用于判断股价运行趋势。瀑布线指标PBX在短期

25、反映股票价格的变化率,瀑布线指标PBX上涨,则表示股价极大可能上涨,瀑布线指标PBX下降,则表示近期股票价格将下跌。瀑布线指标PBX可看作是股票价格的短周期平滑曲线。PBX瀑布线属于传统大势价格趋势线,由非线性加权移动平均线组合而来。当股票价格上涨穿过轨道线上限时,下降概率增大;当股票价格下跌跌破轨道线下限时,则反弹机率增大,用户可以考虑介入。吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析瀑布线指标吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化

26、分析上升动向指标单独的上升动向指标PDI 曲线是不断变换的一些震荡曲线,单独的从上升动向指标PDI 曲线并不能很好的获取股票价格走势信息,上升动向指标PDI常和下降动向指标MDI、动向平均数指标ADX连用,通过三者之间的关系进行股票的买入和卖出判断。一般情况下,如果PDI上升动向指标从下往上突破下降动向指标MDI,且动向平均数指标ADX走势也向上,此时投资者可以考虑买入,此时股票价格极大可能将会上涨;如果下降动向指标MDI从上往下突破上升动向指标PDI,且动向平均数指标ADX走势向下,此时投资者可以考虑卖出手中的股票,此时股票价格将极大可能地下降。假设昨天一组数据为3,1,2,即昨天最高价为3

27、,最低价为1,收盘价为2,;今天的一组数据为3,2,2,即今天最高价为3,最低价为2,收盘价为2,;考虑计算周期period为1,则PDI计算如下:由于今天最高价减昨天最高价为=3-3=0 =x2,而今天最低价减昨天最低价为=2-1=1 =x1,因此x2x1,则设变量UDM=0;计算今天最高价减今天最低价=3-2=1=x3,今天最高价减昨天收盘价=3-2=1=x4,则x3和x4的最大值=1=x5,计算今天最低价减昨天最低价=2-1=1=x6,则设变量TR=max(x5,x6)=1;吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股

28、票量化分析上升动向指标吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析下降动向指标由PDI上升动向指标分析可知,下降动向指标MDI通常和PDI上升动向指标、ADX动向平均数指标连用。下降动向指标MDI通常在50之间震荡,一般认为下降动向指标MDI在0上方运行,则股票价格将逐渐走强,用户可以考虑适时逢低买入。通常认为,若PDI上升动向指标从下往上突破下降动向指标MDI,且ADX走势也向上,此时投资者可以考虑介入,此时股票价格在一定时间段内上涨可能性增大;若下降动向指标MDI从上往下突破PDI上升动向指标,且ADX走势向下

29、,此时投资者可以考虑卖出手中的股票,此时股票价格在一定时间段内下跌可能性增大。假设昨天一组数据为3,1,2,即昨天最高价为3,最低价为1,收盘价为2,;今天的一组数据为3,2,2,即今天最高价为3,最低价为2,收盘价为2,;考虑计算周期period为1,则MDI计算如下:由于今天最高价减昨天最高价为=3-3=0 =x2,而今天最低价减昨天最低价为=2-1=1 =x1,因此x20时,视为买入信号,投资者可以考虑买入该股票;EMV简易波动指标值80时,回档机率大;当J100时,股票价格易反转下跌,此时投资者应该适当减仓;当J=0 disp(未来一天上涨的可能性更大!)else disp(未来一天回

30、调的可能性更大!)end吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的第十章吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析第十章吴婷、余胜威:MATLAB金融算法分析实战基于机器马尔科夫Markov上证指数预测吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析马尔科夫Markov上证指数预测吴婷、余胜威:MATLAB金吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析马尔科夫链Markov模型马尔科夫链Markov模型直观地统计某几个状态出现的频数,进而判断下一时刻点出现某状态的概率。马尔科夫链Markov模型状态数由用户自己

31、设定,较为常用的有5种状态,如快速上升、缓慢上升、相对不变、缓慢下降、快速下降;也可以设为3种状态,如上升、相对不变、下降(较多的经济学问题都按照这个划分)。这个思想和模糊数学的思想相一致的。针对快速上升、缓慢上升、相对不变、缓慢下降、快速下降5个状态,那么多大的增长幅度才算是快速上升,多大的幅度才算是快速下降,这两个数值由用户自己设定,较为常用的有1%、3%、5%等数值。本文考虑上证指数的增长幅度问题,采用1%上证幅度作为衡量标准。马尔科夫链Markov模型广泛的应用于长时间的波动数据行业中,例如某个食品的价格、某个公司员工上下班时间趋势、CPI指数、上证指数、个股价格等。马尔科夫链Mark

32、ov模型因其自身数据的统计特性,在预测行业起到举足轻重的作用。吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析模型符号说明吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析马尔科夫链Markov预测openprice = data0(:,1); % 开盘价highprice = data0(:,2); % 最高价lowprice = data0(:,3); % 最低价closeprice = data0(:,4); % 收盘价tradingvol

33、umn= data0(:,5); % 成交量% 以closeprice为参考,进行上证指数的上涨、下跌、平衡态处理SX = nan*ones(size(closeprice,1),size(closeprice,2); % 初始化for j=1:size(closeprice,1) for i=2:size(closeprice,2) if closeprice(j,i)-closeprice(j,i-1)0 SX(j,i)=1; % 上涨% elseif closeprice(j,i)-closeprice(j,i-1)=0% SX(j,i)=0; % 平衡状态 elseif closepr

34、ice(j,i)-closeprice(j,i-1)0 SX(j,i)=-1; % 下跌 end endend吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析马尔科夫链Markov预测吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析获取待分析数据马尔科夫链Markov预测吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析增长率级别马尔科夫链Markov预测吴婷、余胜威:M

35、ATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析马尔科夫链Markov预测吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析对每个状态向量,均取其中最大的那个概率值;则以上结果表明:在未来7天内,上证指数处于缓慢增长势头,并且缓慢下降的概率也时旗鼓相当,此时投资者应该谨慎,变盘可能性较大。本书籍所涉及算法预测结果,仅供参考。马尔科夫链Markov预测吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股

36、票量化分析隐马尔可夫模型函数表函 数功 能hmmdecode计算序列状态的后验概率hmmestimate估计隐马尔可夫模型的参数hmmgenerate为隐马尔可夫模型产生一个序列hmmtrain计算隐马尔可夫模型的最大似然估计hmmviterbi计算马尔可夫模型序列到达最可能状态的路径吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的第十一章吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析第十一章吴婷、余胜威:MATLAB金融算法分析实战基于机灰色理论下的上证指数预测吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析灰色理论下的上证指数预测吴婷、余胜

37、威:MATLAB金融算法分吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析灰色理论分析灰色系统理论是针对短期的时间变化数据而言的。对于长时间的系统数据,灰色理论预测误差是很大。并且,灰色系统理论对于给定的系统隐式方程是可以用来逼近原始数据的,这一点极大的限制了程序的泛化能力,也就是要求分析的数据是服从某种规律的。灰色系统理论包括灰色关联性分析和灰色预测模型。灰色关联分析通过分析灰色系统里各因素的相异程度,并给出各因素之间的关联程度;灰色预测模型对原始数据进行处理,生成有较强规律性的数据序列,然后建立相应的微分方程,进而预测未来发展趋势。灰色预测模型广泛的应用于时间序列的波动

38、数据行业中,例如某个食品的价格、CPI指数、上证指数等。灰色预测模型因其自身数据的统计特性,在预测行业起到举足轻重的作用。吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析灰色关联分析流程吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析多指标灰色关联度计算在此选用反趋势指标,用ACCER-幅度涨速指标、ADTM-动态买卖气指标、BB-布林极限指标、BIAS-乖离率指标、CCI-顺势指标、CYF-市场能量指标、DBCD-异同离差乖离率指标、DKX-

39、多空线指标、DPO-区间震荡线指标、FSL-分水岭指标、 KDJ-随机指标、LWR-L威廉指标、ROC-变动速率指标、RSI-相对强弱指标、SKDJ-慢速随机指标、SI-摆动指标、SRDM-动向速度比率指标、UDL-引力线指标、WR-威廉指标、WIDTH-布林极限宽度指标作为灰色关联分析数据。吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析多指标灰色关联度计算y5 = 1 至 9 列 0.9903 0.9938 1.0010 1.0037 0.9871 1.0011 1.0001 0.9986 1.0010 10 至

40、18 列 0.9968 0.9938 0.9922 1.0043 1.0020 0.9942 0.9950 1.0004 0.9940 19 至 20 列 1.0007 0.9865由关联度结果可知,基于第一个指标ACCER-幅度涨速指标,其与20个指标与ACCER-幅度涨速指标的关联度系数均位于1左右,因此对于这些指标本身而言,是相辅相成的。吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析灰色预测模型流程ACCER幅度涨速指标灰色预测吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金

41、融算法分析实战基于机器学习的股票量化分析灰色预测模型流程ACCER幅度涨速指标灰色预测吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析load(database.mat)clear closeprice highprice lowprice openprice tradingvolumn% 归一化% 分析index5趋势指标% 指标:ACCER-幅度涨速指标、ADTM-动态买卖气指标、BB-布林极限指标、% BIAS-乖离率指标、CCI-顺势指标、CYF-市场能量指标、DBCD-异同离差乖离率指标、% DKX-多空线指

42、标、DPO-区间震荡线指标、FSL-分水岭指标、 KDJ-随机指标、% LWR-L威廉指标、ROC-变动速率指标、RSI-相对强弱指标、SKDJ-慢速随机指标、% SI-摆动指标、SRDM-动向速度比率指标、UDL-引力线指标、WR-威廉指标、WIDTH-布林极限宽度指标index_x = index5(:,1:end-1); % 前一天指标值index_y = SX(:,length(SX)-size(index_x,2)+1:end); % 第二天的涨幅状态吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析% 对in

43、dex_x归一化处理for i=1:size(index_x,1) x = ; % 初始化 x = index_x(i,:); % 挨个挨个获取指标数据 x,setting = mapminmax(x); % x归一化 settingsi,1 = setting; % 归一化参数 index_xx(i,:) = x; % 重新赋值end% 待分析index_xx = index_xx(:,4500:end); % 内存不足,截断提取index_y = index_y(:,4500:end); % 内存不足,截断提取吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLA

44、B金融算法分析实战基于机器学习的股票量化分析% 灰色预测x1 = index_xx(1,80:end); % 输入数据n = length(x1); % 数据长度t1 = 1:n;ux = polyfit(t1,x1,2);u(1) = ux(1);u(2) = ux(2);x11 = ux(3);x=; % 初始化syms a b y(x) x00 xx=dsolve(diff(y)=a*x+b,y(0)=x00) ; x=subs(x,a,b,x00,2*u(1),u(2),x11); digits(6),y=vpa(x) % 为提高预测精度,先计算预测值,再显示微分方程的解yuce =

45、double( subs(x,x,0:n-1) ); % 计算预测值epsilon=x1-yuce; % 计算残差吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的第十二章吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析第十二章吴婷、余胜威:MATLAB金融算法分析实战基于机指数平滑下的上证指数预测吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析指数平滑下的上证指数预测吴婷、余胜威:MATLAB金融算法分吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析指数平滑分析吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜

46、威:MATLAB金融算法分析实战基于机器学习的股票量化分析指数平滑分析吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析指数平滑分析三次指数平滑法吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析指数平滑分析一次指数平滑% 一次指数平滑yt=closeprice; % 原始数据以列向量的方式存放n=length(yt); % 数据长度alpha=0.1 0.3 0.9; % 取值 m=length(alpha); % 个数 yhat(1,1:m)=

47、(yt(1)+yt(2)/2; % 取平均值(初始值)for i=2:n yhat(i,:)=alpha*yt(i-1)+(1-alpha).*yhat(i-1,:); % 预测计算公式endyhat; % 预测值Error = (repmat(yt,1,m)-yhat); % 预测误差err=sqrt(mean(repmat(yt,1,m)-yhat).2) % 预测误差总和yhat_next = alpha*yt(n)+(1-alpha).*yhat(n,:) % 预测下一时刻值吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的

48、股票量化分析指数平滑分析一次指数平滑吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析指数平滑分析一次指数平滑吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析指数平滑分析一次指数平滑吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析指数平滑分析二次指数平滑for i=2:n st1(i)=alpha*yt(i)+(1-alpha)*st1(i-1); % 一次平滑预测 st

49、2(i)=alpha*st1(i)+(1-alpha)*st2(i-1); % 二次平滑预测enda=2*st1-st2; % a计算公式b=alpha/(1-alpha)*(st1-st2); % b计算公式吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析指数平滑分析二次指数平滑吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析指数平滑分析三次指数平滑吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析

50、实战基于机器学习的股票量化分析指数平滑分析三次指数平滑st1_0=mean(yt(1:3); % 初始化值st2_0=st1_0; % 初始化值st3_0=st1_0; % 初始化值st1(1)=alpha*yt(1)+(1-alpha)*st1_0; % 初始化st2(1)=alpha*st1(1)+(1-alpha)*st2_0; % 初始化st3(1)=alpha*st2(1)+(1-alpha)*st3_0; % 初始化for i=2:n st1(i)=alpha*yt(i)+(1-alpha)*st1(i-1); % 一次平滑 st2(i)=alpha*st1(i)+(1-alpha

51、)*st2(i-1); % 二次平滑 st3(i)=alpha*st2(i)+(1-alpha)*st3(i-1); % 三次平滑endst1=st1; % 一次平滑结果st2=st2; % 二次平滑结果st3=st3; % 三次平滑结果吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析指数平滑分析三次指数平滑预测吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析指数平滑分析采用三次指数平滑预测的绝对误差和为90.6561,相应的上证指数收盘价为2

52、928.6。相对比一次指数平滑预测的误差为45.8548,二次指数平滑预测为37.4430,由此可知二次指数平滑预测效果最佳,三次指数平滑预测易导致过拟合等现象,导致预测误差增大等缺陷。吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的第十三章吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析第十三章吴婷、余胜威:MATLAB金融算法分析实战基于机支持向量机SVM下的涨跌预测吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析支持向量机SVM下的涨跌预测吴婷、余胜威:MATLAB金融算吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析支

53、持向量机SVM算法是一个极其优越的机器学习算法。支持向量机SVM算法也是一个有监督的学习算法。支持向量机SVM算法根据数据内存属性,通过构造超平面,将数据进行划分,然后应用于分类和回归模型。支持向量机SVM算法解决了传统算法不能解决的非线性、离散等问题,将复杂的大数据映射到高维空间,进而实现问题的高效求解,广泛应用于各行各业数据分析中。本章主要围绕支持向量机SVM算法进行股票的上证、下跌分析。吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析Logistic回归吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷

54、、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析Regularization正则化方程 吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析支持向量机SVM算法Logistic 回归吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析支持向量机SVM算法二次规划问题应用KKT(Karush-Kuhn-Tucker)条件进行求解。吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习

55、的股票量化分析支持向量机SVM算法SVM超平面求解吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析支持向量机SVM算法吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析支持向量机SVM算法吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析支持向量机SVM算法clc,clear,close all % 清屏+清理工作区+关闭图形窗口warning off % 取消警告feat

56、ure jit off % 加速通道% 函数quadprog 二次规划问题H = 1 -1; -1 2 ;f = -2; -6;A = 1 1; -1 2; 2 1;b = 2; 2; 3;lb = zeros(2,1);x,fval,exitflag,output,lambda = quadprog(H,f,A,b, , ,lb)吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析支持向量机SVM算法支持向量机SVM就是根据二次规划问题求解相应的系数,进而得到超平面,实现数据的分类与预测。支持向量机SVM目前有较为成熟的

57、工具箱,本文将使用MATLAB自带的支持向量机SVM工具箱实现上证指数的涨跌预测。吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析支持向量机SVM算法function psi_l, psi_h Low High = evalPsiAtEnd(i, j, Low, High) % This function evaluates the objective function at the ends of % the feasible region. This is necessary in the hopefully ra

58、re % case of eta eps lambda = - targetLabels(i) * objGrad(i) + targetLabels(j) * objGrad(j); alpha_j = alphas(j) + targetLabels(j) / eta * lambda; % 约束alpha的范围 if alpha_j High alpha_j = High; end else % The case eta eps should not happen too often (only for duplicate % data points and illegal kernel

59、s)! psi_l, psi_h Low High = evalPsiAtEnd(i,j, Low, High); if psi_l (psi_h + eps) alpha_j = High; else % no progress :-( alpha_j = alphas(j); end end吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析支持向量机SVM算法 % 计算alpha(i): alpha_i = alphas(i) + targetLabels(j) * targetLabels(i) * . (alph

60、as(j) - alpha_j); % 检测alpha_i的有效性 % sits in its box. if alpha_i (boxConstraints(i) - eps) alpha_i = boxConstraints(i); end吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的吴婷、余胜威:MATLAB金融算法分析实战基于机器学习的股票量化分析支持向量机SVM算法 % 更新目标函数的梯度 if isempty(fullKernel) objGrad = objGrad - . (kernelCache.getColumn(i) .* targetLabels) * . (

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论