首页 >>人工神经网络的介绍及金融方面的简单应用—以MATLAB工具
人工神经网络的介绍及金融方面的简单应用—以MATLAB工具
发布来源: CIIA 发布时间:2016-03-21

前一阵被媒体炒的沸沸扬扬的李世石大战AlphaGo,最终以李世石告负剧终,那AlphaGo使用的神经网络是什么鬼,本文主要讲的就是神经网络的基础理论,以及其金融方面的简单应用。

为什么说道神经网络就会想到人工智能,实际上神经网络是指用计算机模拟的一种人工神经网络,是来自于仿生学,模拟大脑神经元突触,进行分布式并行信息处理的算法,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。所以说神经网络技术就是用电脑模拟人类的过程,这被我们称之为人工智能。

关于神经网络的发展历程

最早的神经网络模型是由美国学者Rosenblatt等人在1957年在M-P模型和Hebb学习规则的基础上提出的感知器神经网络。这类神经网络采用阀值函数作为信号传递函数,根据输入是否大于零输出1或者0。能很好的解决分类问题,但对线性不可分就无能为力了。

20世纪50年代由widrowhoff提出的自适应线性元件,线性神经网络的设计目标,也是通过对输入向量赋予不同的权值和偏差值,对于给定的输入产生出符合期望期望的神经网络。我们可以通过LMS算法(Least Mean Squares)对网络训练得到期望的最小均方误差网络。但线性神经网络的局限性也是显而易见的,对于非线性系统,神经网络只能得到其线性逼近,对于不定系统,有无限多个精确解,学习速率过大,导致迭代过程中均方误差反常增大,导致运算时间增大或无法收敛到最小均方误差解。

BP神经网络是20世纪80年代David RumelhartGeoffrey Hinton、以及Williams分别独立给出BP算法的清楚表述。

BP神经网络又称误差反向传播(Back Propagtion)神经网络,是一种多层前向型神经网络。在进行BP网络训练有几次运算快收敛好的训练算法如Levenberg-Marquard算法,BFGS拟牛顿法,Scaled共轭梯度算法等。实际上BP算法也是有局限性的,在采用梯度下降算法是,解可能陷入局部极小点。BP网络隐层的神经元数的多少也决定了拟合效果,太少可能导致训练的不适行,太多导致过适性。

介绍了几种枯燥的神经网络,实际上还有几种入门级的神经网络,径向基神经网络,自组织神经网络,反馈神经网络我就不一一介绍了,有兴趣的小伙伴可以自行查阅资料。殿堂级的还有深度神经网络,卷积神经网络就不在本文范畴内了。

介绍了神经网络,但他们能做什么那,实际上神经网络已经运用到了我们的生活中了。如工业控制应用,医学应用,图像处理,故障诊断,经济金融等。而本文的重点就是分享几种神经网络的经济金融方面简单应用


一、过往预测未来(市场带有学习性,存在大量以研究过去进行对市场判断)

a=max(p0);

b=min(p0);

for i=1:3388%过往行情数量

p0(i)=(p0(i)-b)/(a-b);

end

 for i=1:3381

p(:,i)=[p0(i);p0(i+1);p0(i+2);p0(i+3)];

t(i)=p0(i+4);

 end%p量归一处理

 net=newff(minmax(p),[12,1],{'logsig','purelin'},'trainlm');

net.trainParam.show=100,

net.trainParam.epoch=2000,

net.trainParam.goal=1e-4,

[net,tr]=train(net,p,t);%函数的训练

ptest(:,1)=[p0(3382) p0(3383) p0(3384) p0(3385)]';

ptest(:,2)=[p0(3383) p0(3384) p0(3385) p0(3386)]';

ptest(:,3)=[p0(3384) p0(3385) p0(3386) p0(3387)]';

ttest(1)=p0(3386);

ttest(2)=p0(3387);

ttest(3)=p0(3388);

rest_test=sim(net,p);

rest_test1=sim(net,ptest);%输出结果

delta=rest_test1-ttest;%相对误差

rest=[rest_test rest_test1];

rest_test1=sim(net,ptest);%输出结果

delta=rest_test1-ttest;%相对误差

plot([1:3384],p0(5:3388),'-r*',[1:3384],rest,'-o')

数据应用的是从200214日到20151225日的沪深300收盘指数,通过之前的收盘价来预测未来3日的收盘价


放大后


我们发现这方面拟合度并不是很好,这起码证明了简单的人工智能也无法精准预测未来。

一、资产价值的横向比较,(要买房同志们的福音)(例子为MATLAB自带数据进行分析)

在输入框输入nftool

Next

Inputtarget后面...导入数据

初学者可以用MATLAB提供的数据进行试验

(此神经网络是用matlabGUI做的,为了方便大家自己进行实验,实际上本例自带英文介绍,此例我给英文不好的小伙伴介绍一下,大概讲输入Input是关于评估房价的13个指标如是否临河,与最近学校的距离,氮氧浓度,社区黑人密度等,输出target为房价,实际上是一个讲前13项和506处房产生成一个函数来评估我们即将要买的房子价格是否合理)

点击next后点击Lold Example Data Set导入实例样本。

Next后设置训练,验证和测试的比例。Next设置隐层神经元数目,next 点击Train 


对其进行训练



我们可以点击plotperformance可以看到网络性能变化曲线


点击Regression可以看到数据回归的情况


最后我们要把生成的网络和数据保存到MATLAB的工作空间

使用时输入y=simnetp)即可输出房子价格yp为输入参数,net为生成好的网络,sim是调用函数。

这种资产价值的分析是通过赋权重的方式。做的横向评估,其价格是一种无偏估计,不代表对未来价值的判断。资产盈利是取决于未来变动,而未来一阶段的价格可能不服从马尔可夫过程,所以对未来做假设要采用一些主观的有偏估计或者蒙特卡洛模拟进行预测,这不属于本文的讨论范畴。

从模型来看,这类模型虽然不能预测未来的房价,但可以通过大数据分析很好的让资产购买者取得低于或等于市场的资产价值。

三、事件驱动的数量与概率分析

%事件驱动的数量与概率分析(Elman神经网络为例)

%可用于信用分析等领域(需要过往数据支持,同时可进行行业或经济压力测试但需要标准数据给出)%%MATLAB神经网络对于数据集的分析有十分大的意义

%定义样本前5列财务指标第6列为违约概率的输出

[filename,pathname]=uigetfile('xxx,xlsx');

file=[pathname,filename];

x=xlsread(file)

p=[x(:,1),x(:,2),x(:,3),x(:,4),x(:,5)]';

t=x(:,6)'

net=newelm(minmax(p),[25,1],{'logsig','purelin'}),

net.trainParam.show=200,

net.trainParam.epoch=3000,

net.trainParam.goal=1e-4,

[net,tr]=train(net,p,t);

%检验预测误差

%定义测试样本

[filename,pathname]=uigetfile('xxxtest,xlsx');

file=[pathname,filename];

x=xlsread(file);

ptest=[x(:,1),x(:,2),x(:,3),x(:,4),x(:,5)]'

ttest=x(:,6)'

rtest=sim(net,p);

rdelta=rtest-t;

result_test=sim(net,ptest);

delta=result_test-ttest;

result=[ttest' result_test' delta']%delta最后一列为预测误差

 

有兴趣的朋友可以自己套数据,当下债券违约过少无法进行很好的评估,这比较适合银行信贷的小伙伴做一些动态的模型,来评估其贷款违约的概率。

四、事件驱动的预测函数(区分型)

%事件驱动的预测函数(区分型)

%读入财务或干预指标对指标进行向量化

%

%x30st公司数据财务指标,y30家非st上市公司财务指标

p=[x,y];

p=p';

T=[ones(30,1),zeros(30,1)];

T=T';

%构建神经网络

T2=T+1;

T2=ind2vec(T2);

spread=1;%散布常数

net=newpnn(p,T2,spread);

%验证样本

ptest=[x1;y1];

ptest=ptest';

A=sim(net,p);

Ac=vec2ind(A);

Atest=sim(net,ptest);

Actest=vec2ind(Atest);

plot(Actest,'r*');

显然我们不仅可以区分哪些上市公司要退市预警,我们同样可以用来分析企业是否能对债券进行偿付,与三、事件驱动的数量与概率分析相比这类区分型的径向基神经网络所需要数据更少。同时在三与四两者之间可以用违约后偿付比例来设计一种诊断型BP神经网络,当然也需要违约数据支持,还有最终偿付比例的数据支持。因其数据较少判断的结果就无法进行精确的考证了。需要进一步打破刚兑我们才能还原市场。

我只是抛砖引玉来探讨一下神经网络的过往和简单应用,希望专业人士不要见笑的同时指出文章的不足。

 



CIIA订阅二维码:


小编按:本文为原创文章,作者CIIA—管炳瑜授权本订阅号刊载。

欢迎转载,请注明出处。


另有欲求不满者想找专业团队做数据分析,可与小编联系,小编会代为联系一名专业做深度神经网络和大数据分析的大神@CIIA陈曦,他的团队或许会满足您的需求。

对于MATLAB不了解的,又想学习的朋友可以买本@郑志勇郑老师的黑白双本。良心作品,质量杠杠的。


注:本文系本站转载,转载目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请与本站联系,我们将在第一时间删除内容!本文版权归原作者所有 内容为作者个人观点 本站只提供参考并不构成任何投资及应用建议。

关注我们

关注我们