option pricing
Download
Skip this Video
Download Presentation
Option Pricing

Loading in 2 Seconds...

play fullscreen
1 / 25

Option Pricing - PowerPoint PPT Presentation


  • 80 Views
  • Uploaded on

Option Pricing. Downloads. Today’s work is in: matlab_lec08.m Functions we need today: pricebinomial.m, pricederiv.m. Derivatives. A derivative is any security the payout of which fully depends on another security Underlying is the security on which a derivative’s value depends

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Option Pricing' - alana-cervantes


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
downloads
Downloads
  • Today’s work is in: matlab_lec08.m
  • Functions we need today: pricebinomial.m, pricederiv.m
derivatives
Derivatives
  • A derivative is any security the payout of which fully depends on another security
  • Underlying is the security on which a derivative’s value depends
  • European Call gives owner the option to buy the underlying at expiry for the strike price
  • European Put gives owner the option to sell the underlying at expiry for the strike price
arbitrage pricing 1 period
Arbitrage Pricing (1 period)
  • Lets make a portfolio that exactly replicates underlying payoff, buy Δ shares of stock, and B dollars of bond
  • CH = B*Rf+ΔPS(1+σ)

CL = B*Rf+ΔPS(1-σ)

  • Solve for B and Δ:
  • Δ=(CH-CL)/(2σPS) and B=(CH-ΔPS(1+σ))/Rf
  • PU= ΔPS+B
pricebinomial m
pricebinomial.m

function out=pricebinomial(pS,Rf,sigma,Ch,Cl);

D=(Ch-Cl)/(pS*2*sigma);

B=(Ch-(1+sigma)*pS*D)/Rf;

pC=B+pS*D;

out=[pC D];

price call
Price Call
  • Suppose the price of the underlying is 100 and the volatility is 10%; suppose the risk free rate is 2%
  • The payoff of a call with strike 100 is 10 in the good state and 0 in the bad state: C=max(P-X,0)
  • What is the price of this call option?

>>pS=100; Rf=1.02; sigma=.1; Ch=10; Cl=0;

>>pricebinomial(pS,Rf,sigma,Ch,Cl)

Price=5.88, Δ=.5

larger trees
Larger Trees
  • The assumption that the world only has two states is unrealistic
  • However its not unrealistic to assume that the price in one minute can only take on two values
  • This would imply that in one day, week, year, etc. there are many possible prices, as in the real world
  • In fact, at the limit, the binomial assumption implies a log-normal distribution of prices at expiry
tree as matrix
Tree as matrix

100.0000 108.0000 116.6400 125.9712

0 92.0000 99.3600 107.3088

0 0 99.3600 107.3088

0 0 84.6400 91.4112

0 0 0 107.3088

0 0 0 91.4112

0 0 0 91.4112

0 0 0 77.8688

prices of underlying
Prices of Underlying

Recursively define prices forward

>>N=3; P=zeros(2^N,N+1);

%create a price grid for underlying

>>P(1,1)=pS;

for i=1:N;

for j=1:2^(i-1);

P((j-1)*2+1,i+1)=P(j,i)*(1+sigma);

P((j-1)*2+2,i+1)=P(j,i)*(1-sigma);

%disp([i j i+1 (j-1)*2+1 (j-1)*2+2]);

end;

end;

indexing
Indexing

disp([i j i+1 (j-1)*2+1 (j-1)*2+2]);

1 1 2 1 2

2 1 3 1 2

2 2 3 3 4

3 1 4 1 2

3 2 4 3 4

3 3 4 5 6

3 4 4 7 8

payout at expiry
Payout at Expiry
  • Payout of derivative at expiry is a function of the underlying
  • European Call: C(:,N+1)=max(P(:,N+1)-X,0);
  • European Put: C(:,N+1)=max(X-P(:,N+1),0);
  • This procedure can price any derivative, as long as we can define its payout at expiry as a function of the underlying
  • For example C(:,N+1)=abs(P(:,N+1)-X); would be a type of volatility hedge
prices of derivative
Prices of Derivative

Recursively define prices backwards

>>X=100; C(:,N+1)=max(P(:,N+1)-X,0); %call option

>>for k=1:N;

i=N+1-k;

for j=1:2^(i-1);

Ch=C((j-1)*2+1,i+1);

Cl=C((j-1)*2+2,i+1);

pStemp=P(j,i);

out=pricebinomial(pStemp,Rf,sigma,Ch,Cl);

C(j,i)=out(1);

%disp([i j i+1 (j-1)*2+1 (j-1)*2+2]);

end;

end;

indexing1
Indexing

>>disp([i j i+1 (j-1)*2+1 (j-1)*2+2]);

3 1 4 1 2

3 2 4 3 4

3 3 4 5 6

3 4 4 7 8

2 1 3 1 2

2 2 3 3 4

1 1 2 1 2

pricederiv m
pricederiv.m

function out=pricederiv(pS,Rf,sigmaAgg,X,N)

sigma=sigmaAgg/sqrt(N); Rf=Rf^(1/N); %define sigma, Rf for shorter period

C=zeros(2^N,N+1); P=zeros(2^N,N+1); %initialize price vectors

P(1,1)=pS;

for i=1:N; %create price grid for underlying

for j=1:2^(i-1);

P((j-1)*2+1,i+1)=P(j,i)*(1+sigma);

P((j-1)*2+2,i+1)=P(j,i)*(1-sigma);

end;

end;

C(:,N+1)=max(P(:,N+1)-X,0); %a european call

for k=1:N; %create price grid for option

i=N+1-k;

for j=1:2^(i-1);

Ch=C((j-1)*2+1,i+1);

Cl=C((j-1)*2+2,i+1);

pStemp=P(j,i);

x=pricebinomial(pStemp,Rf,sigma,Ch,Cl);

C(j,i)=x(1);

end;

end;

out=C(1,1);

investigating n
Investigating N

>>pS=100; Rf=1.02; sigmaAgg=.3; X=100;

  • B-S value of this call is 12.8 http://www.blobek.com/black-scholes.html

>>for N=1:15;

out(N,1)=N;

out(N,2)=pricederiv(pS,Rf,sigmaAgg,X,N);

end;

>>plot(out(:,1),out(:,2));

  • This converges to B-S as N grows!
investigating strike price
Investigating Strike Price

>>pS=100; Rf=1.02; sigmaAgg=.3; N=10;

>>for i=1:50;

X=40+120*(i-1)/(50-1);

out(i,1)=X;

out(i,2)=pricederiv(pS,Rf,sigmaAgg,X,N);

end;

>>plot(out(:,1),out(:,2));

>>xlabel(\'Strike\'); ylabel(\'Call\');

investigating underlying price
InvestigatingUnderlying Price

>>X=100; Rf=1.02; sigmaAgg=.3; N=10;

>>for i=1:50;

pS=40+120*(i-1)/(50-1);

out(i,1)=pS;

out(i,2)=pricederiv(pS,Rf,sigmaAgg,X,N);

end;

>>plot(out(:,1),out(:,2));

>>xlabel(\'Price\'); ylabel(\'Call\');

investigating sigma
Investigating sigma

>>X=100; Rf=1.02; pS=100; N=10;

>>for i=1:50;

sigmaAgg=.01+.8*(i-1)/(50-1);

out(i,1)=sigmaAgg;

out(i,2)=pricederiv(pS,Rf,sigmaAgg,X,N);

end;

>>plot(out(:,1),out(:,2));

>>xlabel(\'Sigma\'); ylabel(\'Call\');

ad