Accelerating the pace of engineering and science

# Documentation Center

• Trial Software

### Contents

Price European or American spread options using Monte Carlo simulations

## Description

example

OptSpec,Strike,Corr)
returns the price of a European or American call or put spread option using Monte Carlo simulations.

Price = spreadbyls(___,Name,Value) returns the price of a European or American call or put spread option using Monte Carlo simulations using optional name-value pair arguments.

OptSpec,Strike,Corr)
returns the Price, Paths, Times, and Z of a European or American call or put spread option using Monte Carlo simulations.

[Price,Paths,Times,Z] = spreadbyls(___,Name,Value) returns the Price, Paths, Times, and Z of a European or American call or put spread option using Monte Carlo simulations using optional name-value pair arguments.

## Examples

expand all

### Compute the Price of a Spread Option Using Monte Carlo Simulation

```Settle = '01-Jan-2012';
Maturity = '01-April-2012';```

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 =

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)
StockSpec2 = stockspec(Vol2, Price2)```
```StockSpec1 =

FinObj: 'StockSpec'
Sigma: 0.2900
AssetPrice: 119.7000
DividendType: []
DividendAmounts: 0
ExDividendDates: []

StockSpec2 =

FinObj: 'StockSpec'
Sigma: 0.3600
AssetPrice: 93.2000
DividendType: []
DividendAmounts: 0
ExDividendDates: []```

Compute the spread option price using Monte Carlo simulation based on the Longstaff-Schwartz model.

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

10.9162```

## Input Arguments

expand all

### RateSpec — Interest-rate term structurestructure

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

### StockSpec1 — Stock specification for underlying asset 1structure

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

### StockSpec2 — Stock specification for underlying asset 2structure

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

### Settle — Settlement date for spread optiondate string | nonnegative scalar integer

Settlement date for the spread option specified, as a date string or nonnegative scalar integer.

Data Types: char

### Maturity — Maturity date for spread optiondate string | nonnegative scalar integer

Maturity date for spread option, specified as a date string or a nonnegative scalar integer.

Data Types: char

### OptSpec — Definition of option string with values 'call' or 'put'

Definition of option as 'call' or 'put', specified as a string.

Data Types: char

### Strike — Option strike price valuenonnegative scalar integer

Option strike price value, specified, as a nonnegative scalar integer.

Data Types: single | double

### Corr — Correlation between underlying asset pricesscalar integer

Correlation between underlying asset prices, specified as an scalar integer.

Data Types: single | double

### 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 single quotes (' '). You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

### 'AmericanOpt' — Option type0 European (default) | scalar with value [0,1]

Option type, specified as an integer scalar flag with value:

• 0 — European

• 1 — American

For American options, the Longstaff-Schwartz least squares method is used to calculate the early exercise premium.

Data Types: single | double

### 'NumTrials' — Scalar number of independent sample paths 1000 (default) | nonnegative scalar integer

Scalar number of independent sample paths (simulation trials), specified as a nonnegative integer.

Data Types: single | double

### 'NumPeriods' — Scalar number of simulation periods per trial100 (default) | nonnegative scalar integer

Scalar number of simulation periods per trial, specified as a nonnegative integer. NumPeriods is considered only when pricing European basket options. For American spread options, NumPeriod is equal to the number of exercise days during the life of the option.

Data Types: single | double

### 'Z' — Time series array of dependent random variatesvector

Time series array of dependent random variates specified as a NumPeriods-by-2-by-NumTrials 3-D array. The Z value generates the Brownian motion vector (i.e., Wiener processes) that drives the simulation.

Data Types: single | double

### 'Antithetic' — Indicator for antithetic samplingfalse (default) | scalar logical flag with value of true or false

Indicator for antithetic sampling, specified with a value of true or false.

Data Types: logical

## Output Arguments

expand all

### Price — Expected price of spread optionscalar

Expected price of the spread option, returned as a 1-by-1 scalar.

### Paths — Simulated paths of correlated state variablesvector

Simulated paths of correlated state variables, returned as a NumPeriods + 1-by-2-by-NumTrials 3-D time series array. Each row of Paths is the transpose of the state vector X(t) at time t for a given trial.

### Times — Observation times associated with simulated pathsvector

Observation times associated with simulated paths, returned as a NumPeriods + 1-by-1 column vector of observation times associated with the simulated paths. Each element of Times is associated with the corresponding row of Paths.

### Z — Time series array of dependent random variatesvector

Time series array of dependent random variates, returned as a NumPeriods-by-2-by-NumTrials 3-D array when Z is specified as an input argument. If the Z input argument is not specified, then the Z output argument contains the random variates generated internally.