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 日

0 投票

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 件)

カテゴリ

ヘルプ センター および File ExchangePrice and Analyze Financial Instruments についてさらに検索

タグ

質問済み:

2019 年 2 月 14 日

コメント済み:

2019 年 2 月 14 日

Community Treasure Hunt

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

Start Hunting!

Translated by