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.

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

## Contents

A Basket option is an option on a portfolio of underlyings. There are many different formulations of basket options. Examples are options whose payoffs depend on the average performance of the underlyings or on the performance of the best asset.

## Examples

The following ThetaML models compute basket option prices, for different types of payoffs. 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.

### Rainbow Option

A Rainbow option gives the owner the right to buy (resp. sell) the maximum (resp. minimum) of two underlying assets for a fixed value K.

```%A Rainbow option gives the owner the right to buy
%the maximum (resp. minimum) of two underlying assets
%for K.
model Rainbow
import S    "Stock price process"
import EUR  "Discount numeraire"
import K    "Option strike price"
export P    "Option value"

%at current time, set the option value to have the same expected discounted
%value as the variable 'V'; the ThetaML future operator '!' accompanying the
%'V' acts like a function on 'V', such that the values of 'V' variable at
%current time remain to be determined at a later instance when 'V' is assigned
%some values
P = E(V!)
%the ThetaML command 'Theta' passes time by '1' years
Theta 1
%at option maturity time 1, set the option payoffs;
%the option payoffs are discounted to time 0 by the discount numeraire 'EUR'
V = max( max(S[1],S[2])-K, 0) * EUR
end```

In the following example we look at a basket option with an early exercise opportunity after 0.5 years. The model can handle an arbitrary number of underlyings.

```%Basket option with multiple underlyings and
%a payoff dependent on the the maximum
%call price of each underlying
import S    "Stock prices"
import EUR  "Discount numeraire"
import K    "Option strike price"
export P    "Option value"

%at current time, set the option value to have the same expected discounted
%value as the variable 'V'; the ThetaML future operator '!' accompanying the
%'V' acts like a function on 'V', such that the values of 'V' variable at
%current time remain to be determined at a later instance when 'V' is assigned
%some values
P = E(V!)
%the ThetaML command 'Theta' passes time by '1/2' years
Theta 1/2

%compute exercise price
ex_price = 0
loop s,k:S,K
ex_price = max(ex_price, (s-k)*EUR )
end

%if it is optimal to exercise, then exercise
if E(V!) < ex_price
V = size(ex_price)
end
%the ThetaML command 'Theta' passes time by another '1/2' years
Theta 1/2
%at option maturity time 1, set the option payoffs;
%the option payoffs are discounted to time 0 by the discount numeraire 'EUR'
ex_price = 0
%loop through the arrays of 'S' and 'K'
%the variables 's' and 'k' act like array iterators that point to and take respectively
%the corresponding elements of the arrays 'S' and 'K'
loop s,k : S,K
ex_price = max(ex_price, (s - k) * EUR )
end
V = ex_price
end```