You are on page 1of 23

Matlab practice

101071041 16

S0 = 35:1:70;
X1= 50;
X2=55;
r = 0.04;
sigma = 0.4;
T=1;
[c1,p1]=blsprice(S0,X1,r,T,sigma);
%plot(S0,p1);
% hold on;
[c2,p2]=blsprice(S0,X2,r,T,sigma);
% plot(S0,-1*p2);
%hold on;
plot(S0,p1-1-p2+2,'m');
hold on;
T=0.5;
[c1,p1]=blsprice(S0,X1,r,T,sigma);
[c2,p2]=blsprice(S0,X2,r,T,sigma);
plot(S0,p1-1-p2+2,'b');
hold on;
T=0;
[c1,p1]=blsprice(S0,X1,r,T,sigma);
[c2,p2]=blsprice(S0,X2,r,T,sigma);
plot(S0,p1-1-p2+2,'c');
hold on;
xlabel stockprice
ylabel profit

BULL
SPREAD
USING
PUTS

S0 = 35:1:70;
X1= 50;
X2=55;
r = 0.04;
sigma = 0.4;
T=1;
[c1,p1]=blsprice(S0,X1,r,T,sigma);
%plot(S0,p1);
% hold on;
[c2,p2]=blsprice(S0,X2,r,T,sigma);
% plot(S0,-1*p2);
%hold on;
plot(S0,p2-2-p1+1,'m');
hold on;
T=0.5;
[c1,p1]=blsprice(S0,X1,r,T,sigma);
[c2,p2]=blsprice(S0,X2,r,T,sigma);
plot(S0,p2-2-p1+1,'b');
hold on;
T=0;
[c1,p1]=blsprice(S0,X1,r,T,sigma);
[c2,p2]=blsprice(S0,X2,r,T,sigma);
plot(S0,p2-2-p1+1,'c');
hold on;
xlabel stockprice
ylabel profit
legend('T=1','T=0.5','T=0');
axis([35 70 -2 5]);

BEAR
SPREAD
USING
PUTS

S0 = 35:1:80;
X1= 50;
X2=55;
x3=60;
r = 0.04;
sigma = 0.4;
T=1;
[c1,p1]=blsprice(S0,X1,r,T,sigma);
[c2,p2]=blsprice(S0,X2,r,T,sigma);
[c3,p3]=blsprice(S0,x3,r,T,sigma);
plot(S0,c1-4+4-2*c2+c3-1,'m');
hold on ;
T=0.5;
[c1,p1]=blsprice(S0,X1,r,T,sigma);
[c2,p2]=blsprice(S0,X2,r,T,sigma);
[c3,p3]=blsprice(S0,x3,r,T,sigma);
plot(S0,c1-4+4-2*c2+c3-1,'b');
hold on ;
T=0;
[c1,p1]=blsprice(S0,X1,r,T,sigma);
[c2,p2]=blsprice(S0,X2,r,T,sigma);
[c3,p3]=blsprice(S0,x3,r,T,sigma);
plot(S0,c1-4+4-2*c2+c3-1,'c');
hold on ;
xlabel stockprice;
ylabel profit;
axis([35 80 -2 5]);

BUTTER
FLY
SPREAD
USING
CALLS

LatticeEurPut.m(CRR TREE)

function [price, lattice] = LatticeEurPut(S0,X,r,T,sigma,N)


deltaT = T/N;
u=exp(sigma * sqrt(deltaT));
d=1/u;
p=(exp(r*deltaT) - d)/(u-d);
lattice = zeros(N+1,N+1);
for j=0:N
lattice(N+1,j+1)=max(0 , X-S0*(u^j)*(d^(N-j)) );
end
for i=N-1:-1:0
for j=0:i
lattice(i+1,j+1) = exp(-r*deltaT) * ...
(p * lattice(i+2,j+2) + (1-p) * lattice(i+2,j+1));
end
end
price = lattice(1,1);

LatticeEurPut.m(JR TREE)
function [price, lattice] = LatticeEurPut_JR(S0,X,r,T,sigma,N)
deltaT = T/N;
rnmut=(r-0.5*sigma^2)*deltaT;
u=exp(rnmut+sigma*sqrt(deltaT));
d=exp(rnmut-sigma*sqrt(deltaT));
p=0.5;
lattice = zeros(N+1,N+1);
for j=0:N
lattice(N+1,j+1)=max(0 , X-S0*(u^j)*(d^(N-j)) );
end
for i=N-1:-1:0
for j=0:i
lattice(i+1,j+1) = exp(-r*deltaT) * ...
(p * lattice(i+2,j+2) + (1-p) * lattice(i+2,j+1));
end
end
price = lattice(1,1);

CompLatticeBLSPut.m(CRR TREE
% CompLatticeBLS.m
S0 = 50;
X = 50;
r = 0.1;
sigma = 0.4;
T = 5/12;
N=50;
[BlsC,BlsP] = blsprice(S0,X,r,T,sigma);
LatticeC = zeros(1,N);
for i=(1:N)
LatticeC(i) = LatticeEurPut(S0,X,r,T,sigma,i);
end
plot(1:N, ones(1,N)*BlsP);
hold on;
plot(1:N, LatticeC);

CompLatticeBLSPut.m(JR TREE
% CompLatticeBLS.m
S0 = 50;
X = 50;
r = 0.1;
sigma = 0.4;
T = 5/12;
N=50;
[BlsC,BlsP] = blsprice(S0,X,r,T,sigma);
LatticeC = zeros(1,N);
for i=(1:N)
LatticeC(i) = LatticeEurPut_JR(S0,X,r,T,sigma,i);
end
plot(1:N, ones(1,N)*BlsP);
hold on;
plot(1:N, LatticeC);

LatticeAmCall.m
function [price, lattice] = LatticeAmCall(S0,X,r,T,sigma,N)
deltaT = T/N;
u=exp(sigma * sqrt(deltaT));
d=1/u;
p=(exp(r*deltaT) - d)/(u-d);
lattice = zeros(N+1,N+1);
for j=0:N
lattice(N+1,j+1)=max(0 , S0*(u^j)*(d^(N-j))-X);
end
for i=N-1:-1:0
for j=0:i
lattice(i+1,j+1) = max(S0*u^j*d^(i-j)-X , ...
exp(-r*deltaT) *(p * lattice(i+2,j+2) + (1-p) * lattice(i+2,j+1)));
end
end
price = lattice(1,1);

CompLatticeBLSAmCall.m
% CompLatticeBLS.m
S0 = 50;
X = 50;
r = 0.1;
sigma = 0.4;
T = 5/12;
N=50;
BlsC = blsprice(S0,X,r,T,sigma);
LatticeC = zeros(1,N);
for i=(1:N)
LatticeC(i) = LatticeAmCall (S0,X,r,T,sigma,i);
end
plot(1:N, ones(1,N)*BlsC);
hold on;
plot(1:N, LatticeC);

LatticeAmCall vs. LatticeEurCall


% CompLatticeBLS.m
S0 = 50;
X = 50;
r = 0.1;
sigma = 0.4;
T = 5/12;
N=50;
LatticeC1 = zeros(1,N);
LatticeC2= zeros(1,N);
for i=(1:N)
LatticeC1(i) = LatticeAmCall (S0,X,r,T,sigma,i);
LatticeC2(i) = LatticeEurCall (S0,X,r,T,sigma,i);
end
plot(1:N, LatticeC1 );
hold on;
plot(1:N, LatticeC2);

LatticeAmPut vs. LatticeEurPut


S0 = 50;
X = 50;
r = 0.4;
sigma = 0.4;
T = 5/12;
N=50;
LatticeC1 = zeros(1,N);
LatticeC2= zeros(1,N);
[BlsC,blsp] = blsprice(S0,X,r,T,sigma);
for i=(1:N)
LatticeC1(i) = LatticeAmPut (S0,X,r,T,sigma,i);
LatticeC2(i) = LatticeEurPut (S0,X,r,T,sigma,i);
end
plot(1:N, LatticeC1,'m' );
hold on;
plot(1:N, ones(1,N)*blsp,'b');
hold on;
plot(1:N, LatticeC2,'c');
legend('amput','blsput','eurput');

You might also like