American Option

From ThetaWiki

Jump to: navigation, search

Contents

Description

An American option can be exercised at any time up to the maturity date. This means one has to determine an optimal exercise strategy in order to evaluate this option. The option holder has to decide when to exercise the put value K-S of the option. It turns out that the optimal time to exercise it is when the expected value of continuation E(V) is less then the current exercise value K-S of the option.

Modelling in ThetaScript

%% The model American computes an approximation 
%% of the price "P" of a continuously exercisable put 
%% option based on 50 exercise dates.  
model American
  import S	"Stock"
  import K	"Strike"
  import EUR	"Numeraire"
  import T	"Maturity time"
  export P	"Option Value"
 
  P = V!
 
  n = 50
  loop n
    Theta T/n
    if E(V!) < (K-S)*EUR
	V = (K-S)*EUR
    end				
  end
 
  V = max(K-S,0)*EUR
end

(Samples/Derivatives/american.thetas)

Thetagram

Image:American.png

Numerical Example


Parameter Symbol Value
Strike K 100
Risk-free rate r 5% p.a.
Volatility sigma 40% p.a.
Exercise price K-S


The true option price is P = 13.66761. The above ThetaScript with 100000 paths delivers P = 13.623 +- 0.091 with a distribution for P as shown below:

Image:Ami histogram.png

Optimizations

There are a few techniques which can increase the efficiency of the evaluation significantly. For example the script below evaluates to P = 13.652 +- 0.035 with only 10000 paths. Methods for increasing accuracy can be found in Tips and Tricks.

%% The model American computes an approximation 
%% of the price "P" of a continuously exercisable put 
%% option based on 250 exercise dates.  
model American_accurate
  import S	"Stock"
  import K	"Strike"
  import EUR	"Numeraire"
  import T	"Maturity time"
  export P	"Option Value"
 
  P = V!
  n = 500
  loop n	
    % Optimization 1: Hedge the option value
    V = V! - Beta(S!,V!)*(S!*EUR!-S*EUR)
    Theta T/n		
 
    % Optimization 2: Compute expectation of "in-the-money" paths only.
    if (K-S)*EUR > 0 
      if E(V!) < (K-S)*EUR
        V = (K-S)*EUR
      end
    end				
  end
 
  V = max(K-S,0)*EUR
end

(Samples/Derivatives/american.thetas)