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"

From ThetaWiki
Jump to: navigation, search
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 with payoffs dependent on the average performance of the underlyings or on the performance of the best asset.
+
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  
+
%A Rainbow option gives the owner the right to buy
%% the maximum (resp. minimum) of two underlying assets  
+
%the maximum (resp. minimum) of two underlying assets
%% for K.
+
%for K.
 
model Rainbow
 
model Rainbow
     import S    "Stock Price"
+
     import S    "Stock price process"
     import EUR  "Numeraire"
+
     import EUR  "Discount numeraire"
     import K    "Strike"
+
     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. it can handle an arbitrary number of underlyings.
+
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  
+
%Basket option with multiple underlyings and
%% a payoff dependent on the
+
%a payoff dependent on the the maximum
%% the maximal call price of each underlying  
+
%call price of each underlying
 
model Basket
 
model Basket
     import S    "Stock Price"
+
     import S    "Stock prices"
     import EUR  "Numeraire"
+
     import EUR  "Discount numeraire"
     import K    "Strike"
+
     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 optimal to exercise, exercise
 
    if E(V!) < ex_price
 
        V = size(ex_price)
 
    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]]
+
[[Category:Option]]

Latest revision as of 11: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