Price European spread options using Bjerksund-Stensland pricing model

Syntax

``Price = spreadbybjs(RateSpec,StockSpec1,StockSpec2,Settle,Maturity,OptSpec,Strike,Corr)``

Description

example

````Price = spreadbybjs(RateSpec,StockSpec1,StockSpec2,Settle,Maturity,OptSpec,Strike,Corr)` returns the price for a European spread option using the Bjerksund-Stensland pricing model. NoteAlternatively, you can use the `Spread` object to price spread options. For more information, see Get Started with Workflows Using Object-Based Framework for Pricing Financial Instruments. ```

Examples

collapse all

```Settle = datetime(2012,1,1); Maturity = datetime(2012,4,1);```

Define asset 1. Price and volatility of RBOB gasoline

``` Price1gallon = 2.85; % \$/gallon Price1 = Price1gallon * 42; % \$/barrel Vol1 = 0.29;```

Define asset 2. Price and volatility of WTI crude oil

``` Price2 = 93.20; % \$/barrel Vol2 = 0.36;```

Define the correlation between the underlying asset prices of asset 1 and asset 2.

`Corr = 0.42;`

```OptSpec = 'call'; Strike = 20;```

Define the `RateSpec`.

```rates = 0.05; Compounding = -1; Basis = 1; RateSpec = intenvset('ValuationDate', Settle, 'StartDates', Settle, ... 'EndDates', Maturity, 'Rates', rates, ... 'Compounding', Compounding, 'Basis', Basis)```
```RateSpec = struct with fields: FinObj: 'RateSpec' Compounding: -1 Disc: 0.9876 Rates: 0.0500 EndTimes: 0.2500 StartTimes: 0 EndDates: 734960 StartDates: 734869 ValuationDate: 734869 Basis: 1 EndMonthRule: 1 ```

Define the `StockSpec` for the two assets.

`StockSpec1 = stockspec(Vol1, Price1)`
```StockSpec1 = struct with fields: FinObj: 'StockSpec' Sigma: 0.2900 AssetPrice: 119.7000 DividendType: [] DividendAmounts: 0 ExDividendDates: [] ```
`StockSpec2 = stockspec(Vol2, Price2)`
```StockSpec2 = struct with fields: FinObj: 'StockSpec' Sigma: 0.3600 AssetPrice: 93.2000 DividendType: [] DividendAmounts: 0 ExDividendDates: [] ```

Compute the European spread option price based on the Bjerksund-Stensland model.

```Price = spreadbybjs(RateSpec, StockSpec1, StockSpec2, Settle, ... Maturity, OptSpec, Strike, Corr)```
```Price = 11.2000 ```

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

`stockspec` can handle other types of underlying assets. For example, for physical commodities the price is represented by `StockSpec.Asset`, the volatility is represented by `StockSpec.Sigma`, and the convenience yield is represented by `StockSpec.DividendAmounts`.

Data Types: `struct`

Stock specification for underlying asset 2. For information on the stock specification, see `stockspec`.

`stockspec` can handle other types of underlying assets. For example, for physical commodities the price is represented by `StockSpec.Asset`, the volatility is represented by `StockSpec.Sigma`, and the convenience yield is represented by `StockSpec.DividendAmounts`.

Data Types: `struct`

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

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

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

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

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

Data Types: `char` | `cell`

Option strike price values, specified as an integer using a `NINST`-by-`1` vector of strike price values.

If `Strike` is equal to zero, the function computes the price of an exchange option.

Data Types: `double`

Correlation between underlying asset prices, specified as an integer using a `NINST`-by-`1` vector.

Data Types: `double`

Output Arguments

collapse all

Expected prices of the spread option, returned as a `NINST`-by-`1` vector.

collapse all

A spread option is an option written on the difference of two underlying assets.

For example, a European call on the difference of two assets X1 and X2 would have the following pay off at maturity:

`$\mathrm{max}\left(X1-X2-K,0\right)$`

where:

K is the strike price.