神经网络预测股票价格走势

   神经网络怎么说呢,以下是BP神经网络的简单模型示意图

 

简单的说来,就是通过训练网络,调节各个神经元传输的权重,来模拟系统的输入与输出。

优点:可以模拟非常复杂的模型。

 

缺点:实际上这个模型还是经验模型,显然训练的历史数据越多,网络的“经验就越丰富”,对于一些突发事件显然没有应对能力。。

 

% 采用贝叶斯正则化算法提高 BP 网络的推广能力。在本例中,我们采用两种训练方法,即 L-M 优化算法

%(trainlm)和贝叶斯正则化算法(trainbr),

% 用以训练 BP 网络,使其能够拟合某一附加有白噪声的正弦样本数据。其中,样本数据可以采用如下

% MATLAB 语句生成:   

% MATLAB 程序如下:  

close all  

clear all  

clc  

% NEWFF——生成一个新的前向神经网络  

% TRAIN——对 BP 神经网络进行训练 

% SIM——对 BP 神经网络进行仿真    

%  定义训练样本矢量  

% P 为输入矢量  

stock=[002225];  %股票代码

[a b c d e f]=kline(stock,360);  %取得股票日K线数据

aa=[a ;b; c ;d; e ;f ];  %搞成矩阵

aa(6,:)=aa(2,:)-aa(3,:);  %开收盘价差

aa(7,:)=aa(4,:)-aa(1,:);  %最高最低盘价差

 

while (1)   %很恶心的代码,取出没开盘的时间数据

   a=size(aa);

   bexit=0;

   for n=1:a(2)

       if aa(7,n)==0 

           aa(:,n)=[];

           bexit = 1;

           break;

       end       

   end

   if bexit==0

        break;    

   end

end

 

a=size(aa);   

bb=aa;

bb(:,1)=[];

cc=aa;

cc(:,a(2))=[];

bb=bb-cc;   %计算前后2天的差分数据,添加进训练数据。我们关系预测价差嘛

 

aa(8:14,2:a(2)) = bb;%计算前后2天的差分数据,添加进训练数据。我们关系预测价差嘛

 

%aa = aa';  

aa(:,1)=[];  既然是差分数据,第一天的数据不要了。

 

%  创建一个新的前向神经网络  

net=newff(minmax(aa),[12,5],{'tansig','purelin'});  

disp('1.  L-M 优化算法 TRAINLM'); disp('2.  贝叶斯正则化算法 TRAINBR');  

choice=input('请选择训练算法(1,2):');  

if(choice==1)

    %  采用 L-M 优化算法 TRAINLM  

    net.trainFcn='trainlm';                 

    %  设置训练参数          

    net.trainParam.epochs = 500;          

    net.trainParam.goal = 1e-6;          

    %  重新初始化

    net=init(net);         

%    pause;

elseif(choice==2)

    %  采用贝叶斯正则化算法 TRAINBR          

    net.trainFcn='trainbr';                  

    %  设置训练参数          

    net.trainParam.epochs = 1000;

    net.trainParam.goal=0.001;

 %  重新初始化   

    net = init(net);             

 %   pause;

end 

% 调用相应算法训练 BP 网络 

a=size(aa);

[Pn,minP,maxP,Tn,minT,maxT]=premnmx(aa(:,1:a(2)),aa(1:5,1:a(2)));%归一化处理

[net,tr]=train(net,Pn(:,1:a(2)-1),Tn(:,2:a(2)));

%[net,tr]=train(net,aa(:,1:a(2)-1),aa(1:5,2:a(2)));

%[net,tr]=train(net,aa,T); 

% 对 BP 网络进行仿真 

%yn = sim(net,aa(:,1:a(2)-1)); 

yn=sim(net,Pn);  %仿真 ,+ 同是把昨天数据加入仿真数据,看一下预测数据。

 

%E =  yn - aa(1:5,2:a(2));  %%%看看误差

%MSE=mse(E) ;

 

y=postmnmx(yn,minT,maxT);  %反归一化

 

figure   %%把图画出来

subplot(2,1,1);

plot(aa(4,1:a(2))); 

subplot(2,1,2);

plot(y(4,:)); 

 

这是仿真+预测数据。。

copy right by lwglucky

乖乖,预测出来明天要跌啊。!!

 

本文出自 “坐坐吧” 博客,转载请与作者联系!

你可能感兴趣的:(网络,matlab,模型,突发事件,股票价格)