Matlab程序:
函數[Va,SigmaVa]=Conv(E,SigmaE,D,r,T)
%計算Va,SigmaVa
key = 0;
pl = 4 * atan(l);
va = E;%va取e為叠代初值。
newVa = Va
SigmaVa = SigmaE%SigmaVa以SigmaE為叠代初值。
對於k=1:100000%叠代SigmaVa
對於j=1:100000%叠代Va
oldVa = newVa
% Va =(E+D * exp(-r * T)* Nd2)/Ndl;
% sigma va = E * sigma E/(E+D * exp(-r * T)* Nd2);
dl=(log(oldva/d)+(r+(sigmava^2)/2)*t)/(sigmava*(t^0.5));
d2=dl-(sigmava*(t^(1/2)));
Ndl=normedf(dl,0,1);
Nd2=normedf(d2,0,1);
fV = old va * Ndl-D * exp(-r * T)* Nd2-E;
dfv=ndl+exp(-dl*dl/2)/((2*pi*t)^0.5*sigmava)-d*exp(-r*t)*exp(-d2*d2/2)/((2*pl*t)^0.5*oldva*sigmava);
如果dfV==0
dfV
暫停;
結束
dV =-fV/dfV;
newVa = old va+dV;%前後的值被認為非常接近,叠代成功。
%newVa
如果newVa==0
奧爾德瓦
紐瓦
暫停;
結束
if(dV/newVa)& lt;樂7 & amp(dV/newVa)>-樂7
打破;
結束
結束
Va = newVa
dl=(log(va/d)+(r+(sigmava^2)/2)*t)/(sigmava*(t^(1/2)));
d2=dl-(sigmava*(t^(l/2)));
Ndl=normedf(dl,0,1);
Nd2=normedf(d2,0,l);%等式的左右之比
diff =(Va * Ndl-D * exp(-r * T)* Nd2)/E;
if diff & lt1-le-5 | diff & gt;1+le-5
assert(' error ');%叠代中的錯誤。
其他
key = key+1;
結束
newSigmaVa = E * SigmaE/(E+D * exp(-r * T)* Nd2);
if((sigma va-newSigmaVa)/newSigmaVa)& lt;樂5 & amp(sigma va-newSigmaVa)/newSigmaVa)& gt;-樂5
打破;
key = key+1;
其他
SigmaVa = newSigmaVa
結束
結束
如果key==2
%e1se
% Va =-1;
% sigma va =-1;
結束
如果不麻煩,請留個郵箱。
我把股票波動率σ,股權價值違約點D,無風險利率R,時間T的數據發給妳,
結果應該是企業資本市值(V)和行業風險(σ)。
謝謝您們。