How to append number to array

34 ビュー (過去 30 日間)
Bai chen
Bai chen 2019 年 2 月 14 日
コメント済み: Luna 2019 年 2 月 14 日
I am new to Matlab.
S0=30;
K=32;
r=0.03;
sigma=0.2;
T=1;
M=10;
error=[];
for i=10:10:360
cat( TRGbinomial(S0,K,r,sigma,T,i)-BSCall(S0,K,r,sigma,T),error);
end
error
I want to append the number to error array.
What can I do with it?
  2 件のコメント
Luna
Luna 2019 年 2 月 14 日
What are the TRGbinomial and BSCall functions outputs? Share the whole code please.
Bai chen
Bai chen 2019 年 2 月 14 日
function c=TRGbinomial(S0,K,r,sigma,T,n)
%initialize trees and parameters
dt=T/n;
v=r-0.5*sigma^2;
dx=sqrt((sigma^2)*dt+(v^2)*(dt^2));
u=exp(dx);
d=exp(-dx);
p=0.5+0.5*v*dt/dx; %risk neutral probability
%expectd stock prices at time T
for i=0:n
S(i+1,1)=u^(n-i)*(d^i)*S0;
end
%expected payoff at time T (european call option)
payoff=max(S-K,0);
%discount back the payoffs
c(:,n+1)=payoff;
for j=n:-1:1
for i=1:j
c(i,j)=exp(-r*dt)*(p*c(i,j+1)+(1-p)*c(i+1,j+1));
end
end
%return option price
c=c(1,1);
end
function c=BSCall(S0,K,r,sigma,T)
d1=(log(S0/K)+(r+sigma^2/2)*T)/(sigma*sqrt(T));
d2=d1-sigma*sqrt(T);
c=S0*normcdf(d1)-K*exp(-r*T)*normcdf(d2);
end

サインインしてコメントする。

採用された回答

Luna
Luna 2019 年 2 月 14 日
Assuming that your function's outputs are 1x1 double, you can use below:
S0=30;
K=32;
r=0.03;
sigma=0.2;
T=1;
M=10;
% error=[];
j = 1; % another counter for for loop because i is used for another calculation
errorArray = zeros(360/10,1); % preallocation
for i=10:10:360
errorArray(j) = TRGbinomial(S0,K,r,sigma,T,i)-BSCall(S0,K,r,sigma,T);
j = j+1;
end
% errorArray will be 36x1 array.
  2 件のコメント
Bai chen
Bai chen 2019 年 2 月 14 日
Yes, that is much better.
Thank you
Luna
Luna 2019 年 2 月 14 日
Your welcome :)

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangePrice and Analyze Financial Instruments についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by