# asiansensbytw

Calculate price and sensitivities of European fixed arithmetic Asian options using Turnbull-Wakeman model

## Syntax

``PriceSens = asiansensbytw(RateSpec,StockSpec,OptSpec,Strike,Settle,ExerciseDates)``
``PriceSens = asiansensbytw(___,Name,Value)``

## Description

example

````PriceSens = asiansensbytw(RateSpec,StockSpec,OptSpec,Strike,Settle,ExerciseDates)` calculates prices and sensitivities for European fixed arithmetic Asian options using the Turnbull-Wakeman model.```

example

````PriceSens = asiansensbytw(___,Name,Value)` adds optional name-value pair arguments.```

## Examples

collapse all

Define the Asian option parameters.

```AssetPrice = 100; Strike = 95; Rates = 0.1; Sigma = 0.15; Settle = 'Apr-1-2013'; Maturity = 'Oct-1-2013';```

Create a `RateSpec` using the `intenvset` function.

``` RateSpec = intenvset('ValuationDate', Settle, 'StartDates', Settle, 'EndDates', ... Maturity, 'Rates', Rates, 'Compounding', -1, 'Basis', 1);```

Create a `StockSpec` for the underlying asset using the `stockspec` function.

```DividendType = 'Continuous'; DividendAmounts = 0.05; StockSpec = stockspec(Sigma, AssetPrice, DividendType, DividendAmounts);```

Calculate the price and sensitivities of the Asian option using the Turnbull-Wakeman approximation. Assume that the averaging period has started before the `Settle` date.

```OptSpec = 'Call'; ExerciseDates = 'Oct-1-2013'; AvgDate = 'Jan-1-2013'; AvgPrice = 100; OutSpec = {'Price','Delta','Gamma'}; [Price,Delta,Gamma] = asiansensbytw(RateSpec,StockSpec,OptSpec,Strike,Settle,ExerciseDates, ... 'AvgDate',AvgDate,'AvgPrice',AvgPrice,'OutSpec',OutSpec)```
```Price = 5.6731 ```
```Delta = 0.5995 ```
```Gamma = 0.0135 ```

Define the Asian option parameters.

```AssetPrice = 100; Strike = 95; Rates = 0.1; Sigma = 0.15; Settle = 'Apr-1-2013'; Maturity = 'Oct-1-2013';```

Create a `RateSpec` using the `intenvset` function.

``` RateSpec = intenvset('ValuationDate', Settle, 'StartDates', Settle, 'EndDates', ... Maturity, 'Rates', Rates, 'Compounding', -1, 'Basis', 1);```

Create a `StockSpec` for the underlying asset using the `stockspec` function.

```DividendType = 'Continuous'; DividendAmounts = 0.05; StockSpec = stockspec(Sigma, AssetPrice, DividendType, DividendAmounts);```

Calculate the price and sensitivities of the Asian option using the Turnbull-Wakeman approximation. Assume that the averaging period starts after the `Settle` date.

```OptSpec = 'Call'; ExerciseDates = 'Oct-1-2013'; AvgDate = 'Jan-1-2013'; OutSpec = {'Price','Delta','Gamma'}; [Price,Delta,Gamma] = asiansensbytw(RateSpec,StockSpec,OptSpec,Strike,Settle,ExerciseDates, ... 'AvgDate',AvgDate,'OutSpec',OutSpec)```
```Price = 1.0774e-08 ```
```Delta = 1.0380e-08 ```
```Gamma = 9.6246e-09 ```

## 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`

Stock specification for underlying asset, specified using `StockSpec` obtained from `stockspec`. For information on the stock specification, see `stockspec`.

`stockspec` can handle other types of underlying assets. For example, stocks, stock indices, and commodities. If dividends are not specified in `StockSpec`, dividends are assumed to be `0`.

Data Types: `struct`

Definition of option, specified as `'call'` or `'put'` using a character vector, cell array of character vectors, or string array.

Data Types: `char` | `cell` | `string`

Option strike price value, specified with a nonnegative integer using a `NINST`-by-`1` vector of strike price values.

Data Types: `double`

Settlement date or trade date for the Asian option, specified as a `NINST`-by-`1` vector using serial date numbers, date character vectors, datetimes, or string arrays.

Data Types: `double` | `char`

European option exercise dates, specified as a `NINST`-by-`1` vector using serial date numbers, date character vectors, datetimes, or string arrays.

Note

For a European option, there is only one `ExerciseDates` on the option expiry date.

Data Types: `double` | `char` | `datetime` | `string`

### 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 = asiansensbytw(RateSpec,StockSpec,OptSpec,Strike,Settle,ExerciseDates,'OutSpec',{'All'})```

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: `char` | `cell` | `string`

Average price of underlying asset at the `Settle` date, specified as the comma-separated pair consisting of `'AvgPrice'` and a `NINST`-by-`1` vector.

Note

Use the `AvgPrice` argument when `AvgDate` < `Settle`.

Data Types: `double`

Date averaging period begins, specified as the comma-separated pair consisting of `'AvgDate'` and a `NINST`-by-`1` vector using serial date numbers, date character vectors, datetimes, or string arrays.

Data Types: `char` | `double` | `datetime` | `string`

## Output Arguments

collapse all

Expected prices or sensitivities for fixed Asian options, returned as a `NINST`-by-`1` vector. `asiansensbytw` calculates prices of European arithmetic fixed (average price) Asian options.