Determine European basket options price or sensitivities using Nengjiu Ju approximation model

## Syntax

``PriceSens = basketsensbyju(RateSpec,BasketStockSpec,OptSpec,Strike,Settle,Maturity)``
``PriceSens = basketsensbyju(___,Name,Value)``

## Description

example

````PriceSens = basketsensbyju(RateSpec,BasketStockSpec,OptSpec,Strike,Settle,Maturity)` calculates prices or sensitivities for basket options using the Nengjiu Ju approximation model. ```

example

````PriceSens = basketsensbyju(___,Name,Value)` specifies options using one or more name-value pair arguments in addition to the input arguments in the previous syntax.```

## Examples

collapse all

Find a European call basket option of five stocks. Assume that the basket contains:

• 5% of the first stock trading at \$110

• 15% of the second stock trading at \$75

• 20% of the third stock trading at \$40

• 25% of the fourth stock trading at \$125

• 35% of the fifth stock trading at \$92

These stocks have annual volatilities of 20% and the correlation between the assets is zero. On May 1, 2009, an investor wants to buy a 1-year call option with a strike price of \$90. The current annualized, continuously compounded interest is 5%. Use this data to compute price and delta of the call basket option with the Ju approximation model.` `

```Settle = 'May-1-2009'; Maturity = 'May-1-2010'; % Define RateSpec Rate = 0.05; Compounding = -1; RateSpec = intenvset('ValuationDate', Settle, 'StartDates', ... Settle, 'EndDates', Maturity, 'Rates', Rate, 'Compounding', Compounding); % Define the Correlation matrix. Correlation matrices are symmetric, and % have ones along the main diagonal. NumInst = 5; InstIdx = ones(NumInst,1); Corr = diag(ones(5,1), 0); % Define BasketStockSpec AssetPrice = [110; 75; 40; 125; 92]; Volatility = 0.2; Quantity = [0.05; 0.15; 0.2; 0.25; 0.35]; BasketStockSpec = basketstockspec(Volatility, AssetPrice, Quantity, Corr); % Compute the price of the call basket option. Calculate also the delta % of the first stock. OptSpec = {'call'}; Strike = 90; OutSpec = {'Price','Delta'}; UndIdx = 1; % First element in the basket [Price, Delta] = basketsensbyju(RateSpec, BasketStockSpec, OptSpec, Strike, Settle, ... Maturity, 'OutSpec', OutSpec,'UndIdx', UndIdx)```
```Price = 5.1610 ```
```Delta = 0.0297 ```

Compute `Delta` with respect to the second asset:

```UndIdx = 2; % Second element in the basket OutSpec = {'Delta'}; Delta = basketsensbyju(RateSpec, BasketStockSpec, OptSpec, Strike, Settle, Maturity, ... 'OutSpec',OutSpec,'UndIdx',UndIdx)```
```Delta = 0.0906 ```

## Input Arguments

collapse all

Interest-rate term structure (annualized and continuously compounded), specified by the `RateSpec` obtained from `intenvset`. For information on the interest-rate specification, see `intenvset`.

Data Types: `struct`

`BasketStock` specification, specified using `basketstockspec`.

Data Types: `struct`

Definition of the option as `'call'` or `'put'`, specified as a character vector or a `2`-by-`1` cell array of character vectors.

Data Types: `char` | `cell`

Option strike price value, specified as one of the following:

• For a European or Bermuda option, `Strike` is a scalar (European) or `1`-by-`NSTRIKES` (Bermuda) vector of strike prices.

• For an American option, `Strike` is a scalar vector of the strike price.

Data Types: `double`

Settlement or trade date for the basket option, specified as a scalar serial date number or date character vector.

Data Types: `double` | `char`

Maturity date for the basket option, specified as a scalar serial date number or date character vector.

Data Types: `double` | `char`

### Name-Value Pair Arguments

Specify optional comma-separated pairs of `Name,Value` arguments. `Name` is the argument name and `Value` is the corresponding value. `Name` must appear inside quotes. You can specify several name and value pair arguments in any order as `Name1,Value1,...,NameN,ValueN`.

Example: ```PriceSens = basketsensbyju(RateSpec,BasketStockSpec,OptSpec, Strike,Settle,Maturity,'OutSpec','delta')```

Define outputs, specified as the comma-separated pair consisting of `'OutSpec'` and a `NOUT`- by-`1` or a `1`-by-`NOUT` cell array of character vectors 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: `char` | `cell`

Index of the underlying instrument to compute the sensitivity, specified as the comma-separated pair consisting of `'UndIdx'` and a scalar numeric.

Data Types: `double`

## Output Arguments

collapse all

Expected prices or sensitivities (defined using `OutSpec`) for basket option, returned as a `NINST`-by-`1` matrix.

collapse all

A basket option is an option on a portfolio of several underlying equity assets.

Payout for a basket option depends on the cumulative performance of the collection of the individual assets. A basket option tends to be cheaper than the corresponding portfolio of plain vanilla options for these reasons:

• If the basket components correlate negatively, movements in the value of one component neutralize opposite movements of another component. Unless all the components correlate perfectly, the basket option is cheaper than a series of individual options on each of the assets in the basket.

• A basket option minimizes transaction costs because an investor has to purchase only one option instead of several individual options.

## References

[1] Nengjiu Ju. “Pricing Asian and Basket Options Via Taylor Expansion.” Journal of Computational Finance. Vol. 5, 2002.