Welcome to THETAWIKI. If you like to create or edit a page please make sure to login or register an account. All registered users please make sure to provide a valid email address.

Asian Option

Option Description

At expiry, an Asian option pays the difference between the strike and the average of the underlying prices observed during some specific dates. The dates are specified in the option contract. Many different Asian options can be defined. Specifically, it is important to decide whether or not to include the first and the last option price.

ThetaML implementation of Asian option

A ThetaML code example for Asian option where neither the first nor the last option price is included is given below:

The model 'Asian_call' computes the Asian call option prices, assuming an arithmetic average of 125 observations of stock prices. The underlying 'S' and the discount numeraire 'EUR' are processes simulated externally. For example, the process 'S' can be a stock price process that follows a Geometric Brownian Motion or a Heston Volatility process. The discount numeraire 'EUR' can be a constant discount curve as implemented in Discounting, or a stochastic process that has a dynamics as defined in the CIR model.

%The model Asian_call computes of the price "P" of an Asian call option
model Asian_call
import S    "Stock prices"
import K    "Option strike price"
import EUR  "Discount numeraire"
import T    "Option maturity time"
export P    "Option Value"

%at current time, set the option value to have the same distribution
%as the function variable 'V'; the ThetaML future operator '!' accompanying the
%variable 'V' acts like a function on 'V', such that the values of 'V'
%at current time remain to be determined at a later instance when 'V'
%is assigned some values
P = V!
%'n' number of observations
n = 125

%no observation at time t=0
I = 0
%loop 'n-1' times
loop n-1
%the ThetaML command 'Theta' passes time by 'T/n' years
Theta T/n
%update the sum of stock prices
I = I + S
end
%no observation at time t = T
%at option maturity time T, set the option payoffs 'V';
%the option payoffs 'V' are implicitly a function of 'I' and are discounted to time 0 by the discount numeraire 'EUR'
V = max(1/(n-1)*I - K, 0) * EUR
end

The value of an option with volatility sigma = 25%, risk-free rate r = 5%, strike K = 100 and a maturity of T = 0.5 is 4.646.

Floating Strike Asian Option

A floating strike Asian option has a payoff based on the difference between the underlying at expiration T and the average I of the underlying prior to the expiration.

ThetaML implementation of floating strike Asian option

The model 'Asian_lookback' computes the floating strike Asian option prices. The underlying 'S' and the discount numeraire 'EUR' are processes simulated externally. For example, the process 'S' can be a stock price process that follows a Geometric Brownian Motion or a Heston Volatility process. The discount numeraire 'EUR' can be a constant discount curve as implemented in Discounting, or a stochastic process that has a dynamics as defined in the CIR model.

%The model Asian_lookback computes the price "P" of
%an Asian lookback option, which pays the difference between
%the average price of the underlying and the terminal
%asset price.
model Asian_lookback
import S   "Underlying stock prices"
import EUR "Discount numeraire"
import T   "Option maturity time"
export V   "Option value"

%initialize the arithmetic sum to 0
I = 0
%'n' number of days in 1 year
n = 252
%loop 'n' times
loop n
%the ThetaML command 'Theta' passes time by 'T/n' years
Theta T/n
%update the arithmetic sum
I = I + S
end
%at option maturity time T, set the option payoffs;
%the option payoffs are discounted to time 0 by the discount numeraire 'EUR'
V = max(S - I/n, 0) * EUR
end

Numerical convergence for simulated floatinig strike Asian option

The graph below gives the expected Monte Carlo error versus the number of simulations n. It also demonstrates the numerical convergence rate of a floating strike Asian option price for different number of simulation paths.

Number of Monte Carlo simulations: 1000
random_seed: vary from 1 to 100


 Parameter Symbol Value Underlying price S 100 Volatility $\sigma$ 40% Interest Rate r 5% Maturity T 1 year Numeraire EUR 1