optstocksensbyfd
Calculate vanilla option prices or sensitivities using finite difference method
Syntax
Description
[ calculates
vanilla option prices or sensitivities using the finite difference
method. PriceSens,PriceGrid,AssetPrices,Times]
= optstocksensbyfd(RateSpec,StockSpec,OptSpec,Strike,Settle,ExerciseDates)
[
adds optional name-value pair arguments. PriceSens,PriceGrid,AssetPrices,Times]
= optstocksensbyfd(___,Name,Value)
Examples
Create a RateSpec.
AssetPrice = 50; Strike = 45; Rate = 0.035; Volatility = 0.30; Settle = datetime(2015,1,1); Maturity = datetime(2016,1,1); Basis = 1; RateSpec = intenvset('ValuationDate',Settle,'StartDates',Settle,'EndDates',... Maturity,'Rates',Rate,'Compounding',-1,'Basis',Basis)
RateSpec = struct with fields:
FinObj: 'RateSpec'
Compounding: -1
Disc: 0.9656
Rates: 0.0350
EndTimes: 1
StartTimes: 0
EndDates: 736330
StartDates: 735965
ValuationDate: 735965
Basis: 1
EndMonthRule: 1
Create a StockSpec.
StockSpec = stockspec(Volatility,AssetPrice)
StockSpec = struct with fields:
FinObj: 'StockSpec'
Sigma: 0.3000
AssetPrice: 50
DividendType: []
DividendAmounts: 0
ExDividendDates: []
Calculate the price and sensitivities for of a European vanilla call option using the finite difference method.
ExerciseDates = datetime(2015,5,1); OptSpec = 'Call'; OutSpec = {'price'; 'delta'; 'theta'}; [PriceSens, Delta, Theta] = optstocksensbyfd(RateSpec,StockSpec,OptSpec,Strike,Settle,... ExerciseDates,'OutSpec',OutSpec)
PriceSens = 6.7352
Delta = 0.7765
Theta = -4.9999
Input Arguments
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
Definition of the option as 'call' or 'put', specified
as a character vector or string array with values 'call' or
'put'.
Data Types: char | string
Option strike price value, specified as a nonnegative scalar or vector.
For a European option, use a scalar of strike price.
For a Bermuda option, use a
1-by-NSTRIKESvector of strike prices.For an American option, use a scalar of strike price.
Data Types: double
Settlement or trade date for the barrier option, specified as a scalar datetime, string, or date character vector.
To support existing code, optstocksensbyfd also
accepts serial date numbers as inputs, but they are not recommended.
Option exercise dates, specified as a datetime array, string array, or date character vectors as follows:
For a European option, use a
1-by-1vector of dates. For a Bermuda option, use a1-by-NSTRIKESvector of dates.For an American option, use a
1-by-2vector of dates. The option can be exercised on any date between or including the pair of dates on that row. If only one non-NaNdate is listed, or ifExerciseDatesis a1-by-1cell array of date character vectors, the option can be exercised betweenSettleand the single listed date inExerciseDates.
To support existing code, optstocksensbyfd 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: PriceSens = optstocksensbyfd(RateSpec,StockSpec,OptSpec,Strike,Settle,ExerciseDates,'OutSpec',{'All'},'AssetGridSize',1000)
Define outputs, specified as the comma-separated pair consisting of
'OutSpec' and a NOUT-
by-1 or a
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
is 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
Size of asset grid used for finite difference grid, specified as the comma-separated pair
consisting of 'AssetGridSize' and a positive
scalar.
Data Types: double
Maximum price for price grid boundary, specified as the comma-separated pair consisting of
'AssetPriceMax' and a positive scalar.
Data Types: single | double
Size of the time grid used for a finite difference grid, specified as the comma-separated pair
consisting of 'TimeGridSize' and a positive
scalar.
Data Types: double
Option type, specified as the comma-separated pair consisting of
'AmericanOpt' and
NINST-by-1 positive integer
scalar flags with values:
0— European/Bermuda1— American
Data Types: double
Output Arguments
Expected price or sensitivities (defined by OutSpec)
of the vanilla option, returned as a 1-by-1 array.
Grid containing prices calculated by the finite difference method,
returned as a two-dimensional grid with size PriceGridSize*length(Times).
The number of columns does not have to be equal to the TimeGridSize,
because ex-dividend dates in the StockSpec are
added to the time grid. The price for t = 0 is
contained in PriceGrid(:, end).
Times corresponding to second dimension of the PriceGrid,
returned as a vector.
More About
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.
References
[1] Haug, E. G., J. Haug, and A. Lewis. "Back to basics: a new approach to the discrete dividend problem." Vol. 9, Wilmott magazine, 2003, pp. 37–47.
[2] Wu, L. and Y. K. Kwok. "A front-fixing finite difference method for the valuation of American options." Journal of Financial Engineering. Vol. 6.4, 1997, pp. 83–97.
Version History
Introduced in R2016bAlthough optstocksensbyfd 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.
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.
Sélectionner un site web
Choisissez un site web pour accéder au contenu traduit dans votre langue (lorsqu'il est disponible) et voir les événements et les offres locales. D’après votre position, nous vous recommandons de sélectionner la région suivante : .
Vous pouvez également sélectionner un site web dans la liste suivante :
Comment optimiser les performances du site
Pour optimiser les performances du site, sélectionnez la région Chine (en chinois ou en anglais). Les sites de MathWorks pour les autres pays ne sont pas optimisés pour les visites provenant de votre région.
Amériques
- 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)