optstockbystt
Price vanilla options on stocks using standard trinomial tree
Syntax
Description
[
returns vanilla option (American, European, or Bermudan)
prices on stocks using a standard trinomial (STT) tree. Price
,PriceTree
]
= optstockbystt(STTTree
,OptSpec
,Strike
,Settle
,ExerciseDates
)
Note
Alternatively, you can use the Vanilla
object to price vanilla options.
For more information, see Get Started with Workflows Using Object-Based Framework for Pricing Financial Instruments.
[
adds
optional name-value pair arguments.Price
,PriceTree
]
= optstockbystt(___,Name,Value
)
Examples
Price Call and Put Stock Options Using the Standard Trinomial Tree Model
Create a RateSpec
.
StartDates = datetime(2009,1,1); EndDates = datetime(2013,1,1); Rates = 0.035; Basis = 1; Compounding = -1; RateSpec = intenvset('ValuationDate', StartDates, 'StartDates', StartDates,... 'EndDates', EndDates, 'Rates', Rates,'Compounding', Compounding, 'Basis', Basis)
RateSpec = struct with fields:
FinObj: 'RateSpec'
Compounding: -1
Disc: 0.8694
Rates: 0.0350
EndTimes: 4
StartTimes: 0
EndDates: 735235
StartDates: 733774
ValuationDate: 733774
Basis: 1
EndMonthRule: 1
Create a StockSpec
.
AssetPrice = 85; Sigma = 0.15; StockSpec = stockspec(Sigma, AssetPrice)
StockSpec = struct with fields:
FinObj: 'StockSpec'
Sigma: 0.1500
AssetPrice: 85
DividendType: []
DividendAmounts: 0
ExDividendDates: []
Create an STTTree
.
NumPeriods = 4; TimeSpec = stttimespec(StartDates, EndDates, 4); STTTree = stttree(StockSpec, RateSpec, TimeSpec)
STTTree = struct with fields:
FinObj: 'STStockTree'
StockSpec: [1x1 struct]
TimeSpec: [1x1 struct]
RateSpec: [1x1 struct]
tObs: [0 1 2 3 4]
dObs: [733774 734139 734504 734869 735235]
STree: {[85] [110.2179 85 65.5520] [142.9174 110.2179 85 65.5520 50.5537] [185.3182 142.9174 110.2179 85 65.5520 50.5537 38.9870] [240.2985 185.3182 142.9174 110.2179 85 65.5520 50.5537 38.9870 30.0668]}
Probs: {[3x1 double] [3x3 double] [3x5 double] [3x7 double]}
Define the call and put options and compute the price.
Settle = datetime(2009,1,1); ExerciseDates = [datetime(2011,1,1) ; datetime(2012,1,1)]; OptSpec = {'call';'put'}; Strike =[100;80]; Price = optstockbystt(STTTree, OptSpec, Strike, Settle, ExerciseDates)
Price = 2×1
4.5025
3.0603
Input Arguments
STTTree
— Stock tree structure for standard trinomial tree
structure
Stock tree structure for a standard trinomial tree, specified
by using stttree
.
Data Types: struct
OptSpec
— Definition of option
character vector with value 'call'
or 'put'
| cell array of character vectors with values 'call'
or 'put'
Definition of option, specified as 'call'
or 'put'
using
a character vector.
Data Types: char
| cell
Strike
— Option strike price values
nonnegative integer
Option strike price value, specified with a NINST
-by-1
or NINST
-by-NSTRIKES
depending
on the option type:
For a European option, use a
NINST
-by-1
vector of strike prices.For a Bermuda option, use a
NINST
-by-NSTRIKES
matrix of strike prices. Each row is the schedule for one option. If an option has fewer thanNSTRIKES
exercise opportunities, the end of the row is padded withNaN
s.For an American option, use a
NINST
-by-1
of strike prices.
Data Types: double
Settle
— Settlement date or trade date
datetime array | string array | date character vector
Settlement date or trade date for the vanilla option, specified as a
NINST
-by-1
vector using a datetime array, string array, or date
character vectors.
Note
The Settle
date for every
vanilla option is set to the
ValuationDate
of the stock
tree. The vanilla option argument
Settle
is ignored.
To support existing code, optstockbystt
also
accepts serial date numbers as inputs, but they are not recommended.
ExerciseDates
— Option exercise dates
datetime array | string array | date character vector
Option exercise dates, specified as a
NINST
-by-1
,NINST
-by-2
,
or
NINST
-by-NSTRIKES
vector using a datetime array, string array, or date
character vectors, depending on the option type:
For a European option, use a
NINST
-by-1
vector of dates. Each row is the schedule for one option. For a European option, there is only oneExerciseDates
on the option expiry date.For a Bermuda option, use a
NINST
-by-NSTRIKES
vector of dates. Each row is the schedule for one option.For an American option, use a
NINST
-by-2
vector of exercise date boundaries. The option can be exercised on any date between or including the pair of dates on that row. If only one non-NaN
date is listed, or ifExerciseDates
is aNINST
-by-1
vector, the option can be exercised betweenValuationDate
of the stock tree and the single listedExerciseDates
.
To support existing code, optstockbystt
also
accepts serial date numbers as inputs, but they are not recommended.
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: Price = optstockbystt(RateSpec,StockSpec,OptSpec,Strike,Settle,ExerciseDates,'AmericanOpt','1')
AmericanOpt
— Option type
0
European or Bermuda (default) | integer with values of 0
or 1
Option type, specified as the comma-separated pair consisting of
'AmericanOpt'
and a
NINST
-by-1
vector of integer flags with values:
0
— European or Bermuda1
— American
Data Types: single
| double
Output Arguments
Price
— Expected price of vanilla option at time 0
vector
Expected price of the vanilla option at time 0
,
returned as a NINST
-by-1
vector.
PriceTree
— Structure containing trees of vectors of instrument prices and accrued interest for each node
structure
Structure containing trees of vectors of instrument prices and accrued interest, and a vector of observation times for each node. Values are:
PriceTree.PTree
contains the clean prices.PriceTree.tObs
contains the observation times.PriceTree.dObs
contains the observation dates.
More About
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:
For a put:
where:
St is the price of the underlying asset at time t.
K is the strike price.
For more information, see Vanilla Option.
Version History
Introduced in R2015bR2022b: Serial date numbers not recommended
Although optstockbystt
supports serial date numbers,
datetime
values are recommended instead. The
datetime
data type provides flexible date and time
formats, storage out to nanosecond precision, and properties to account for time
zones and daylight saving time.
To convert serial date numbers or text to datetime
values, use the datetime
function. For example:
t = datetime(738427.656845093,"ConvertFrom","datenum"); y = year(t)
y = 2021
There are no plans to remove support for serial date number inputs.
See Also
stttree
| stttimespec
| sttprice
| sttsens
| instoptstock
| Vanilla
MATLAB Command
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.
Select a Web Site
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: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)