How to append number to array

34 views (last 30 days)
Bai chen
Bai chen on 14 Feb 2019
Commented: Luna on 14 Feb 2019
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 Comments
Luna
Luna on 14 Feb 2019
What are the TRGbinomial and BSCall functions outputs? Share the whole code please.
Bai chen
Bai chen on 14 Feb 2019
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

Sign in to comment.

Accepted Answer

Luna
Luna on 14 Feb 2019
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 Comments
Bai chen
Bai chen on 14 Feb 2019
Yes, that is much better.
Thank you
Luna
Luna on 14 Feb 2019
Your welcome :)

Sign in to comment.

More Answers (0)

Categories

Find more on Price and Analyze Financial Instruments in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!