**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.

# Difference between revisions of "Basket Option"

m |
(→Basket option) |
||

Line 1: | Line 1: | ||

= Basket option = | = Basket option = | ||

− | A Basket option is an option on a portfolio of underlyings. There are many different formulations of basket options. Examples are options | + | 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 == | == 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 === | === Rainbow Option === | ||

Line 10: | Line 12: | ||

<source lang="thetaml"> | <source lang="thetaml"> | ||

− | + | %A Rainbow option gives the owner the right to buy | |

− | + | %the maximum (resp. minimum) of two underlying assets | |

− | + | %for K. | |

model Rainbow | model Rainbow | ||

− | import S "Stock | + | import S "Stock price process" |

− | import EUR " | + | import EUR "Discount numeraire" |

− | import K " | + | import K "Option strike price" |

export P "Option value" | 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!) | P = E(V!) | ||

− | + | %the ThetaML command 'Theta' passes time by '1' years | |

Theta 1 | 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) | + | V = max( max(S[1],S[2])-K, 0) * EUR |

end | end | ||

</source> | </source> | ||

Line 30: | Line 37: | ||

=== American Basket option === | === American Basket option === | ||

− | In the following example we look at a basket option with an early exercise opportunity after 0.5 years. | + | 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. |

<source lang="thetaml"> | <source lang="thetaml"> | ||

− | + | %Basket option with multiple underlyings and | |

− | + | %a payoff dependent on the the maximum | |

− | % | + | %call price of each underlying |

model Basket | model Basket | ||

− | import S "Stock | + | import S "Stock prices" |

− | import EUR " | + | import EUR "Discount numeraire" |

− | import K " | + | import K "Option strike price" |

export P "Option value" | 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!) | P = E(V!) | ||

− | + | %the ThetaML command 'Theta' passes time by '1/2' years | |

Theta 1/2 | Theta 1/2 | ||

− | + | ||

− | % compute exercise price | + | %compute exercise price |

ex_price = 0 | ex_price = 0 | ||

− | loop s,k:S,K | + | loop s,k:S,K |

ex_price = max(ex_price, (s-k)*EUR ) | ex_price = max(ex_price, (s-k)*EUR ) | ||

end | 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 | 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 | ex_price = 0 | ||

− | loop s,k:S,K | + | %loop through the arrays of 'S' and 'K' |

− | ex_price = max(ex_price, (s-k)*EUR ) | + | %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 | end | ||

− | V = ex_price | + | V = ex_price |

end | end | ||

</source> | </source> | ||

+ | [[Category:Problem Library]] | ||

+ | [[Category:Option]] | ||

− | [[Category: Problem Library]] | + | [[Category:Problem Library]] |

− | [[ | + | [[Category:Option]] |

## Latest revision as of 12:46, 14 February 2012

# Basket option

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

### American Basket option

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 model Basket 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