Open Charlotte324 opened 1 year ago
function SE=Compute_SE day=243; %总天数 p=0.5; %增长概率 u=0.984901285; %u d=1.016551669; %d n=5000; %总模拟次数 ynmax=1.05; %敲出判定线 ynmin=0.8; %敲入判定线 R=0.25; %标准年化收益率 ob=[41,62,85,105,122,144,165,187,202,224,0]; %观察日 Switch=[64,93,126,154,187,217,246,279,307,338];%对应转化的敲出情况下的真实计息日期 y=zeros(n,day); %变量初赋值 Bx=1:1:day; S=zeros(2,n); y(:,1)=12.97;%初始股价,即2020/4/30日的股价 ymax=ynmax*y(:,1); ymin=ynmin*y(:,1); k1=0; k2=0; k3=0; A=[]; B=[]; for j=1:n m=1; Case=1; %Case记录状态:1为未敲入且未敲出,2为敲入且未曾敲出,3为敲出 for i=1:day-1 q=rand(1); if q<p y(j,i+1)=y(j,i)*u;%增长 else y(j,i+1)=y(j,i)*d;%跌落 end if (y(j,i+1)<ymin)%判定是否敲入 Case=2; end %判定是否敲出 if i==ob(m)&&Case~=3&&Case~=2 if y(j,i+1)>ymax An=Switch(m); Case=3; A=[A,An]; end m=m+1; end end %plot(Bx,y(j,:));%绘图 %hold on; if Case==1 S(1,j)=R*360/365; S(2,j)=1; k1=k1+1; elseif Case==2 S(1,j)=-max(0,(y(1,1)-y(j,day))/y(1,1)); S(2,j)=2; k2=k2+1; B=[B,S(1,j)]; else S(1,j)=An*R/365; S(2,j)=3; k3=k3+1; end %xlabel('天'); %ylabel('股价'); end %disp(S); %输出S状态矩阵 SE=mean(S(1,:)); %计算S期望 P1=k1/n;%未敲入敲出概率 P2=k2/n;%敲入概率 P3=k3/n;%敲出概率 averageAn=mean(A);%平均敲出天数 averageB=mean(B);%平均敲入收益(仅计算敲入的情况下的平均收益) averagey243=mean(y(:,243));%最终股价均值 disp(P1);%输出未敲入且未敲出 disp(P2);%输出敲入概率 disp(P3);%输出敲出概率 disp(averageAn);%输出平均敲出天数 disp(averageB);%输出平均敲入收益 disp(averagey243);%输出最终股价均值 end