Problem 21.10

Exchange rate @ time t = 0, risk free return rates in dollars and pounds, volatility, and time in 2-period model are given.  First find up/down fractions as well as risk-neutral probabilities.

r=.05;
F =80; 
h=.5;
up =6/5;
down =9/10;

p[u_,d_]:=(1-d)/(u-d);
prn = p[up,down]
qrn = 1-prn;

Define Derivative To Be Priced

Lambda[S_,K_]:=Max[S-K,0];

Replicated Derivative Pricing Function Recursively Using Risk Neutral Expected Values of Intrinsic and Continuation Values of the Derivative.  Lambda is the derivative of interest.  K is the strike price.  T denotes the number of time periods.  The vector of option prices are listed for each period, starting with period T and ending with the price at time t = 0 at the beginning of period 1.

T = 2;

K = 85.;

InitialPriceVector = Table[(up^n)*(down^(T-n))*F,{n,0,T}];

NewOptionValueList = Table[Lambda[x,K],{x,InitialPriceVector}];

PriceVector=InitialPriceVector;


Do[

Print[PriceVector];

Print[NewOptionValueList]; 

OldOptionValueList = NewOptionValueList;

PriceVector = Table[(up^n)*(down^(T-n-j))*F,{n,0,T-j}];

NewOptionValueList = Table[Max[Lambda[PriceVector[[i]],K],Exp[-(r*h)]*(prn*OldOptionValueList[[i+1]]+qrn*OldOptionValueList[[i]])],{i,1,T+1-j}];

,{j,1, T}];

 Print["Arbitrage Free American Option Price is $"<>ToString[NewOptionValueList[[1]]]]

T = 2;

K = 85.;

InitialPriceVector = Table[(up^n)*(down^(T-n))*F,{n,0,T}];

NewOptionValueList = Table[Lambda[x,K],{x,InitialPriceVector}];

PriceVector=InitialPriceVector;


Do[

Print[PriceVector];

Print[NewOptionValueList]; 

OldOptionValueList = NewOptionValueList;

PriceVector = Table[(up^n)*(down^(T-n-j))*F,{n,0,T-j}];

NewOptionValueList = Table[Exp[-(r*h)]*(prn*OldOptionValueList[[i+1]]+qrn*OldOptionValueList[[i]]),{i,1,T+1-j}];

,{j,1, T}];

 Print["Arbitrage Free European Option Price is $"<>ToString[NewOptionValueList[[1]]]]