minassetsensbystulz
Determine European rainbow option prices or sensitivities on minimum of two risky assets using Stulz option pricing model
Syntax
Description
PriceSens = minassetsensbystulz(RateSpec,StockSpec1,StockSpec2,Settle,Maturity,OptSpec,Strike,Corr)
PriceSens = minassetsensbystulz(___,Name,Value)
Examples
Consider a European rainbow put option that gives the holder the right to sell either stock A or stock B at a strike of 50.25, whichever has the lower value on the expiration date May 15, 2009. On November 15, 2008, stock A is trading at 49.75 with a continuous annual dividend yield of 4.5% and has a return volatility of 11%. Stock B is trading at 51 with a continuous dividend yield of 5% and has a return volatility of 16%. The risk-free rate is 4.5%. Using this data, if the correlation between the rates of return is -0.5, 0, and 0.5, calculate the price and sensitivity of the minimum of two assets that are European rainbow put options. First, create the RateSpec: 
Settle = datetime(2000,11,15); Maturity = datetime(2009,5,15); Rates = 0.045; Basis = 1; RateSpec = intenvset('ValuationDate', Settle, 'StartDates', Settle,... 'EndDates', Maturity, 'Rates', Rates, 'Compounding', -1, 'Basis', Basis)
RateSpec = struct with fields:
           FinObj: 'RateSpec'
      Compounding: -1
             Disc: 0.6822
            Rates: 0.0450
         EndTimes: 8.5000
       StartTimes: 0
         EndDates: 733908
       StartDates: 730805
    ValuationDate: 730805
            Basis: 1
     EndMonthRule: 1
Create the two StockSpec definitions. 
AssetPriceA = 49.75;
AssetPriceB = 51;
SigmaA = 0.11;
SigmaB = 0.16;
DivA = 0.045; 
DivB = 0.05; 
StockSpecA = stockspec(SigmaA, AssetPriceA, 'continuous', DivA)StockSpecA = struct with fields:
             FinObj: 'StockSpec'
              Sigma: 0.1100
         AssetPrice: 49.7500
       DividendType: {'continuous'}
    DividendAmounts: 0.0450
    ExDividendDates: []
StockSpecB = stockspec(SigmaB, AssetPriceB, 'continuous', DivB)StockSpecB = struct with fields:
             FinObj: 'StockSpec'
              Sigma: 0.1600
         AssetPrice: 51
       DividendType: {'continuous'}
    DividendAmounts: 0.0500
    ExDividendDates: []
Calculate price and delta for different correlation levels.
Strike = 50.25; Corr = [-0.5;0;0.5]; OptSpec = 'put'; OutSpec = {'Price'; 'delta'}; [P, D] = minassetsensbystulz(RateSpec, StockSpecA, StockSpecB,... Settle, Maturity, OptSpec, Strike, Corr, 'OutSpec', OutSpec)
P = 3×1
   10.0002
    9.1433
    8.1622
D = 3×2
   -0.2037   -0.2192
   -0.1774   -0.2101
   -0.1452   -0.2075
The output Delta has two columns: the first column represents the Delta with respect to the stock A (asset 1), and the second column represents the Delta with respect to the stock B (asset 2). The value 0.4183 represents Delta with respect to the stock A for a correlation level of -0.5. The Delta with respect to stock B, for a correlation of zero is -0.3189. 
Input Arguments
Annualized, continuously compounded rate
                                                  term structure, specified using intenvset.
Data Types: structure
Stock specification for asset 1, specified
                                                  using stockspec.
Data Types: structure
Stock specification for asset 2, specified
                                                  using stockspec.
Data Types: structure
Settlement or trade dates, specified as an
                                                  NINST-by-1
                                                  vector using a datetime array, string array, or
                                                  date character vectors.
To support existing code, minassetsensbystulz also
    accepts serial date numbers as inputs, but they are not recommended.
Maturity dates, specified as an
                                                  NINST-by-1
                                                  vector using a datetime array, string array, or
                                                  date character vectors.
To support existing code, minassetsensbystulz also
    accepts serial date numbers as inputs, but they are not recommended.
Option type, specified as an
                                                  NINST-by-1
                                                  cell array of character vectors with a value of
                                                  'call' or
                                                  'put'. 
Data Types: cell
Strike prices, specified as an
                                                  NINST-by-1
                                                  vector.
Data Types: double
Correlation between the underlying asset
                                                  prices, specified as an
                                                  NINST-by-1
                                                  vector.
Data Types: double
Name-Value Arguments
Specify optional pairs of arguments as
      Name1=Value1,...,NameN=ValueN, where Name is
      the argument name and Value is the corresponding value.
      Name-value arguments must appear after other arguments, but the order of the
      pairs does not matter.
    
      Before R2021a, use commas to separate each name and value, and enclose 
      Name in quotes.
    
Example: [PriceSens] =
                                                  minassetsensbystulz(RateSpec,
                                                  StockSpecA,StockSpecB,Settle,Maturity,OptSpec,Strike,Corr,'OutSpec',OutSpec)
Define outputs, specified as the
                                                  comma-separated pair consisting of
                                                  'OutSpec' and a
                                                  NOUT- by-1
                                                  or 1-by-NOUT
                                                  cell array of character vectors or string array
                                                  with possible values of
                                                  'Price',
                                                  'Delta',
                                                  'Gamma',
                                                  'Vega',
                                                  'Lambda',
                                                  'Rho',
                                                  'Theta', and
                                                  'All'.
OutSpec = {'All'}
                                                  specifies that the output is
                                                  Delta,
                                                  Gamma, Vega,
                                                  Lambda, Rho,
                                                  Theta, and
                                                  Price, in that order. This is
                                                  the same as specifying OutSpec
                                                  to include each sensitivity:
Example: OutSpec =
                                                  {'delta','gamma','vega','lambda','rho','theta','price'}
Data Types: cell
Output Arguments
Expected prices or sensitivities, returned
                                                  as an
                                                  NINST-by-1
                                                  or
                                                  NINST-by-2
                                                  vector.
More About
A rainbow option payoff depends on the relative price performance of two or more assets.
A rainbow option gives the holder the right to buy or sell the best or worst of two securities, or options that pay the best or worst of two assets. Rainbow options are popular because of the lower premium cost of the structure relative to the purchase of two separate options. The lower cost reflects the fact that the payoff is generally lower than the payoff of the two separate options.
Financial Instruments Toolbox™ supports two types of rainbow options:
- Minimum of two assets — The option holder has the right to buy(sell) one of two risky assets, whichever one is worth less. 
- Maximum of two assets — The option holder has the right to buy(sell) one of two risky assets, whichever one is worth more. 
For more information, see Rainbow Option.
Version History
Introduced in R2009aAlthough minassetsensbystulz supports serial date numbers,
                        datetime values are recommended instead. The
                        datetime data type provides flexible date and time
                formats, storage out to nanosecond precision, and properties to account for time
                zones and daylight saving time.
To convert serial date numbers or text to datetime values, use the datetime function. For example:
t = datetime(738427.656845093,"ConvertFrom","datenum"); y = year(t)
y =
        2021
There are no plans to remove support for serial date number inputs.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleccione un país/idioma
Seleccione un país/idioma para obtener contenido traducido, si está disponible, y ver eventos y ofertas de productos y servicios locales. Según su ubicación geográfica, recomendamos que seleccione: .
También puede seleccionar uno de estos países/idiomas:
Cómo obtener el mejor rendimiento
Seleccione China (en idioma chino o inglés) para obtener el mejor rendimiento. Los sitios web de otros países no están optimizados para ser accedidos desde su ubicación geográfica.
América
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)