Price European or American basket options using Monte Carlo simulations

`[`

prices basket options using the Longstaff-Schwartz model.`Price`

,`Paths`

,`Times`

,`Z`

] = basketbyls(`RateSpec`

,`BasketStockSpec`

,`OptSpec`

,`Strike`

,`Settle`

,`ExerciseDates`

)

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

Find an American call basket option of three stocks. The stocks are currently trading at $35, $40 and $45 with annual volatilities of 12%, 15% and 18%, respectively. The basket contains 33.33% of each stock. Assume the correlation between all pair of assets is 50%. On May 1, 2009, an investor wants to buy a three-year call option with a strike price of $42. The current annualized continuously compounded interest rate is 5%. Use this data to compute the price of the call basket option using the Longstaff-Schwartz model.

Settle = 'May-1-2009'; Maturity = 'May-1-2012'; % 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. Corr = [1 0.50 0.50; 0.50 1 0.50;0.50 0.50 1]; % Define BasketStockSpec AssetPrice = [35;40;45]; Volatility = [0.12;0.15;0.18]; Quantity = [0.333;0.333;0.333]; BasketStockSpec = basketstockspec(Volatility, AssetPrice, Quantity, Corr); % Compute the price of the call basket option OptSpec = {'call'}; Strike = 42; AmericanOpt = 1; % American option Price = basketbyls(RateSpec, BasketStockSpec, OptSpec, Strike, Settle, Maturity,... 'AmericanOpt',AmericanOpt)

Price = 5.4687

Increase the number of simulation trials to 2000 to give the following results:

NumTrial = 2000; Price = basketbyls(RateSpec, BasketStockSpec, OptSpec, Strike, Settle, Maturity,... 'AmericanOpt',AmericanOpt,'NumTrials',NumTrial)

Price = 5.5501

`BasketStockSpec`

— `BasketStock`

specificationstructure

`BasketStock`

specification, specified using `basketstockspec`

.

**Data Types: **`struct`

`OptSpec`

— Definition of option character vector with values

`'call'`

or
`'put'`

| cell array of character vectors with values `'call'`

or
`'put'`

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`

`Strike`

— Option strike price valuescalar numeric | vector

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`

`Settle`

— Settlement or trade dateserial date number | date character vector

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

**Data Types: **`double`

| `char`

`ExerciseDates`

— Option exercise datesserial date number | date character vector

Option exercise dates, specified as a serial date number or date character vector:

For a European or Bermuda option,

`ExerciseDates`

is a`1`

-by-`1`

(European) or`1`

-by-`NSTRIKES`

(Bermuda) vector of exercise dates. For a European option, there is only one`ExerciseDate`

on the option expiry date.For an American option,

`ExerciseDates`

is a`1`

-by-`2`

vector of exercise date boundaries. The option exercises on any date between, or including, the pair of dates on that row. If there is only one non-`NaN`

date, or if`ExerciseDates`

is`1`

-by-`1`

, the option exercises between the`Settle`

date and the single listed`ExerciseDate`

.

**Data Types: **`double`

| `char`

| `cell`

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`

.

```
Price = basketbyls(RateSpec,BasketStockSpec,OptSpec,
Strike,Settle,Maturity,'AmericanOpt',AmericanOpt,'NumTrials',NumTrial)
```

`'AmericanOpt'`

— Option type`0`

(European/Bermuda) (default) | values `[0,1]`

Option type, specified as the comma-separated pair consisting of
`'AnericanOpt'`

and a
`NINST`

-by-`1`

positive integer scalar flags with
values:

`0`

— European/Bermuda`1`

— American

For American options, the Longstaff-Schwartz least squares method is used to calculate the early exercise premium. For more information on the least squares method, see https://people.math.ethz.ch/%7Ehjfurrer/teaching/LongstaffSchwartzAmericanOptionsLeastSquareMonteCarlo.pdf.

**Data Types: **`double`

`'NumPeriods'`

— Number of simulation periods per trial`100`

(default) | nonnegative integerNumber of simulation periods per trial, specified as the comma-separated pair
consisting of `'NumPeriods'`

and a scalar nonnegative integer.

`NumPeriods`

is considered only when pricing European basket
options. For American and Bermuda basket options, `NumPeriod`

equals the number of exercise days during the life of the option.

**Data Types: **`double`

`'NumTrials'`

— Number of independent sample paths (simulation trials)`1000`

(default) | nonnegative integerNumber of independent sample paths (simulation trials), specified as the
comma-separated pair consisting of `'NumTrials'`

and a scalar
nonnegative integer.

**Data Types: **`double`

`'Z'`

— Time series array of dependent random variatesvector

Time series array of dependent random variates, specified as the comma-separated
pair consisting of `'Z'`

and a
`NumPeriods`

-by-`NINST`

-by-`NumTrials`

3-D time series array. The `Z`

value generates the Brownian motion
vector (that is, Wiener processes) that drives the simulation.

**Data Types: **`double`

`'Antithetic'`

— Indicator for antithetic sampling`false`

(default) | scalar logical flag with value of `true`

or
`false`

Indicator for antithetic sampling, specified as the comma-separated pair
consisting of `'Antithetic'`

and a value of `true`

or `false`

.

**Data Types: **`logical`

`Price`

— Expected prices for basket optionmatrix

Expected prices for basket option, returned as a
`NINST`

-by-`1`

matrix.

`Paths`

— Simulated paths of correlated state variablesvector

Simulated paths of correlated state variables, returned as a ```
NumPeriods +
1
```

-by-`1`

-by-`NumTrials`

3-D time series
array of simulated paths of correlated state variables. 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-`1`

-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.

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.

For more information, see Basket Option.

[1] Longstaff, F.A., and E.S.
Schwartz. “Valuing American Options by Simulation: A Simple Least-Squares
Approach.” *The Review of Financial Studies.* Vol. 14, No. 1,
Spring 2001, pp. 113–147.

A modified version of this example exists on your system. Do you want to open this version instead?

You clicked a link that corresponds to this MATLAB command:

Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

Select web siteYou can also select a web site from the following list:

Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.

- América Latina (Español)
- Canada (English)
- United States (English)

- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)

- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)