# optstocksensbybjs

Determine American option prices or sensitivities using Bjerksund-Stensland 2002 option pricing model

## Syntax

``PriceSens = optstocksensbybjs(RateSpec,StockSpec,Settle,Maturity,OptSpec,Strike)``
``PriceSens = optstocksensbybjs(___,Name,Value)``

## Description

example

````PriceSens = optstocksensbybjs(RateSpec,StockSpec,Settle,Maturity,OptSpec,Strike)` computes American option prices or sensitivities using the Bjerksund-Stensland 2002 option pricing model. `optstocksensbybjs` computes prices of American options with continuous dividend yield using the Bjerksund-Stensland option pricing model. All sensitivities are evaluated by computing a discrete approximation of the partial derivative. This means that the option is revalued with a fractional change for each relevant parameter, and the change in the option value divided by the increment, is the approximated sensitivity value. NoteAlternatively, you can use the `Vanilla` object to calculate price or sensitivities for vanilla options. For more information, see Get Started with Workflows Using Object-Based Framework for Pricing Financial Instruments. ```
````PriceSens = optstocksensbybjs(___,Name,Value)` adds an optional name-value pair argument for `OutSpec`.```

## Examples

collapse all

This example shows how to compute American option prices and sensitivities using the Bjerksund-Stensland 2002 option pricing model. Consider four American put options with an exercise price of \$100. The options expire on October 1, 2008. Assume the underlying stock pays a continuous dividend yield of 4% and has a volatility of 40% per annum. The annualized continuously compounded risk-free rate is 8% per annum. Using this data, calculate the `delta`, `gamma`, and `price` of the American put options, assuming the following current prices of the stock on July 1, 2008: \$90, \$100, \$110 and \$120.

```Settle = datetime(2008,6,1); Maturity = datetime(2008,10,1); Strike = 100; AssetPrice = [90;100;110;120]; Rate = 0.08; Sigma = 0.40; DivYield = 0.04; % define the RateSpec and StockSpec StockSpec = stockspec(Sigma, AssetPrice, {'continuous'}, DivYield); RateSpec = intenvset('ValuationDate', Settle, 'StartDates', Settle,... 'EndDates', Maturity, 'Rates', Rate, 'Compounding', -1); % define the option type OptSpec = {'put'}; OutSpec = {'Delta', 'Gamma', 'Price'}; [Delta, Gamma, Price] = optstocksensbybjs(RateSpec, StockSpec, Settle, Maturity,... OptSpec, Strike, 'OutSpec', OutSpec)```
```Delta = 4×1 -0.6236 -0.4351 -0.2794 -0.1673 ```
```Gamma = 4×1 0.0196 0.0176 0.0134 0.0091 ```
```Price = 4×1 13.7594 8.4830 4.9451 2.7475 ```

## 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 the underlying asset. For information on the stock specification, see `stockspec`.

`stockspec` handles several types of underlying assets. For example, for physical commodities the price is `StockSpec.Asset`, the volatility is `StockSpec.Sigma`, and the convenience yield is `StockSpec.DividendAmounts`.

Data Types: `struct`

Settlement or trade date, specified as a `NINST`-by-`1` vector using a datetime array, string array, or date character vectors.

To support existing code, `optstocksensbybjs` also accepts serial date numbers as inputs, but they are not recommended.

Maturity date for option, specified as a `NINST`-by-`1` vector using a datetime array, string array, or date character vectors.

To support existing code, `optstocksensbybjs` also accepts serial date numbers as inputs, but they are not recommended.

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

Data Types: `char` | `cell`

Option strike price value, specified as a nonnegative `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: ```[Delta,Gamma,Price] = optstocksensbybjs(RateSpec,StockSpec,Settle,Maturity,OptSpec,Strike,'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 with possible values of `'Price'`, `'Delta'`, `'Gamma'`, `'Vega'`, `'Lambda'`, `'Rho'`, `'Theta'`, and `'All'`.

`OutSpec = {'All'}` specifies that the output should be `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`

## Output Arguments

collapse all

Expected future prices or sensitivities values, returned as a `NINST`-by-`1` vector.

Data Types: `double`

collapse all

### Vanilla Option

A vanilla option is a category of options that includes only the most standard components.

A vanilla option has an expiration date and straightforward strike price. American-style options and European-style options are both categorized as vanilla options.

The payoff for a vanilla option is as follows:

• For a call: $\mathrm{max}\left(St-K,0\right)$

• For a put: $\mathrm{max}\left(K-St,0\right)$

where:

St is the price of the underlying asset at time t.

K is the strike price.