编写的三个关于股市指数var的程序,看看能不能对大家有帮助。两个文件里的程序是一样的,按错了所以就一起上传,只要下载一个就可以了。
matlab蒙特卡洛伊源代码 展示
- x=shenshi;
- y=hushi;
- a=mean(x);
- b=mean(y)
- s1=std(x)
- s2=std(y)
- day_num=20;
- sData=zeros(1,day_num);
- sData(1)=5503.93;
- rad=normrnd(0,1,1,day_num);
- for ii=1:19;
- sData(ii+1)=sData(ii)*exp(-0.00084828+0.0003497*rad(ii))
- end
- (2)
- clc
- clear
- num=200;
- hushiprice1=hushiprice(1:200);
- L_hushiprice1=length(hushiprice1);
- Tcut=24;
- sData=zeros(1,Tcut+1);
- sData(1)=hushiprice1(end);
- Mnum=10000;
- for ii=1:num-1;
- VarS(ii)=(hushiprice1(ii)-hushiprice1(end))^2;
- end
- VarSS=(sum(VarS)/(num-1))^0.5;
- clear VarS
- for kk=1:Mnum
- rad=normrnd(0,1,1,Tcut);
- for jj=1:Tcut
- sData(jj+1)=sData(jj)+rad(jj)*VarSS/Tcut;
- end
- ST(kk)=sData(end);
- end
- ST_arrange=sort(ST);
- ST_50=ST_arrange(Mnum*0.95+1);
- VaR=sData(1)-ST_50;
- figure
- subplot(1,2,1),
- plot(ST);
- title('模拟10000次第二天的收盘价');
- subplot(1,2,2),
- plot(ST_arrange);
- title('第二天的收盘价按升序排列');
- (3)
- clc
- hushiprice;
- num=200;
- Tcut=24;
- Mnum=10000;
- DayNum=920;
- for mm=1:DayNum;
- mm
- VaR_Real(mm)=hushiprice(mm+num)-hushiprice(mm+num-1);
- hushiprice1=hushiprice(mm:mm+num-1);
- L_hushiprice1=Length(hushiprice1);
- sData=zeros(1,Tcut+1);
- sData(1)=hushiprice1(end);
- for ii=1:num-1;
- VarS(ii)=(hushiprice1(ii)-hushiprice1(end))^2;
- end
- VarSS=(sum(VarS)/(num-1))^0.5;
- clear VarS
- for kk=1:Mnum
- rad=normrnd(0,1,1,Tcut);
- for jj=1:Tcut
- sData(jj+1)=sData(jj)+rad(jj)*VarSS/Tcut;
- end
- ST(kk)=sData(end);
- end
- ST_arrange=sort(ST);
- ST_50=ST_arrange(Mnum*0.95+1);
- VaR(mm)=sData(1)-ST_50;
- clear ST ST_arrange ST_50
- end
- figure
- subplot(1,2,1),
- plot(VaR);
- title('从2008.11.11开始920天的VaR');
- subplot(1,2,2),
- plot(VaR_Real);
- title('从2008.11.11开始920天的实际VaR');
- x=1:920;
- plot(x,VaR,x,VaR_Real);
- title('从2008.11.11到2012.08.20这920天的VaR与实际值的比较')