PartialLookback
Description
Create and price a PartialLookback instrument object for
one or more Partial Lookback instruments using this workflow:
Use
fininstrumentto create aPartialLookbackinstrument object for one or more Partial Lookback instruments.Use
finmodelto specify aBlackScholes,Heston,Bates, orMertonmodel for thePartialLookbackinstrument object.Choose a pricing method.
When using a
BlackScholesmodel, usefinpricerto specify aHeynenKatpricing method for one or morePartialLookbackinstruments.When using a
BlackScholes,Heston,Bates, orMertonmodel, usefinpricerto specify anAssetMonteCarlopricing method for one or morePartialLookbackinstruments.
For more information on this workflow, see Get Started with Workflows Using Object-Based Framework for Pricing Financial Instruments.
For more information on the available models and pricing methods for a
PartialLookback instrument, see Choose Instruments, Models, and Pricers.
Creation
Syntax
Description
creates a PartialLookbackObj = fininstrument(InstrumentType,ExerciseDate=exercise_date,Strike=strike_value,MonitorDate=monitor_date)PartialLookback object for one or more Partial
Lookback instruments by specifying InstrumentType and
sets the properties for
the required name-value arguments Strike,
ExerciseDate, and MonitorDate.
The PartialLookback instrument supports fixed-strike
and floating-strike partial lookback options. To compute the value of a
floating-strike partial lookback option, the Strike
must be specified as NaN. For more information on a
PartialLookback instrument, see More About.
sets optional PartialLookbackObj = fininstrument(___,Name=Value)
properties
using additional name-value arguments in addition to the required arguments
in the previous syntax. For example, LookbackObj =
fininstrument("Lookback",Strike=100,ExerciseDate=datetime(2022,1,30),MonitorDate=datetime(2021,1,30),OptionType="put",ExerciseStyle="European",Name="partial_lookback_option")
creates a PartialLookback put option with an European
exercise. You can specify multiple name-value arguments.
Input Arguments
Instrument type, specified as a string with the value of
"PartialLookback", a character vector with the
value of 'PartialLookback', an
NINST-by-1 string array with
values of "PartialLookback", or an
NINST-by-1 cell array of
character vectors with values of 'PartialLookback'.
Data Types: char | cell | string
Name-Value Arguments
Specify required
and 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.
Example: LookbackObj =
fininstrument("Lookback",Strike=100,ExerciseDate=datetime(2022,1,30),MonitorDate=datetime(2021,1,30),OptionType="put",ExerciseStyle="European",Name="partial_lookback_option")
Required Lookback Name-Value Arguments
Option strike price value, specified as Strike
and a scalar nonnegative numeric or an
NINST-by-1 vector of
nonnegative values for a fixed-strike
PartialLookback option. For a floating-strike
partial lookback option, specify Strike as a
NaN or an
NINST-by-1 vector of
NaNs.
Data Types: double
Option exercise date, specified as ExerciseDate
and a scalar or an NINST-by-1
vector using a datetime array, string array, or date character vectors.
Note
For a European option, there is only one
ExerciseDate on the option expiry
date.
To support existing code, PartialLookback also
accepts serial date numbers as inputs, but they are not recommended.
If you use date character vectors or strings, the format must be
recognizable by datetime because
the ExerciseDate property is stored as a
datetime.
Predetermined lookback monitoring date, specified as
MonitorDate and a scalar or an
NINST-by-1 vector using a
datetime array, string array, or date character vectors.
For a fixed-strike partial lookback, the monitoring period is [
MonitorDate,ExerciseDate]. TheMonitorDateis the start date for a fixed-strike partial lookback option.For a floating-strike partial lookback, the monitoring period is [
Settle,MonitorDate], whereSettleis <MonitorDate<ExerciseDate. TheMonitorDateis the end date for a floating-strike partial lookback option.
To support existing code, PartialLookback also
accepts serial date numbers as inputs, but they are not recommended.
If you use date character vectors or strings, the format must be
recognizable by datetime because
the ExerciseDate property is stored as a
datetime.
Optional PartialLookback Name-Value Arguments
Option type, specified as OptionType and a
scalar string or character vector or an
NINST-by-1 cell array of
character vectors or string array.
Data Types: char | cell | string
Option exercise style, specified as
ExerciseStyle and a scalar string or
character vector or an
NINST-by-1 cell array of
character vectors or string array.
Data Types: string | cell | char
Maximum or minimum underlying asset price, specified as
AssetMinMax and a scalar numeric or an
NINST-by-1 numeric
vector.
Data Types: double
Degree of partiality for a floating-strike partial lookback,
specified as StrikeScaler and a scalar numeric or
an NINST-by-1 numeric vector.
The StrikeScaler value indicates the percentage
of the Strike that is fixed above or below the
AssetMinMax value.
For a call floating-strike partial lookback, the
StrikeScaleris ≥ 1.For a put floating-strike partial lookback, 0 <
StrikeScaler≤ 1.
Data Types: double
User-defined name for one of more instruments, specified as
Name and a scalar string or character vector
or an NINST-by-1 cell array of
character vectors or string array.
Data Types: char | cell | string
Output Arguments
Partial Lookback instrument, returned as a
PartialLookback object.
Properties
Option strike price value, returned as a scalar nonnegative numeric or an
NINST-by-1 vector of nonnegative
values.
Data Types: double
Option exercise date, returned as a scalar datetime or an
NINST-by-1 vector of
datetimes.
Data Types: datetime
Predetermined monitoring date, returned as a scalar datetime or an
NINST-by-1 vector of
datetimes.
Data Types: datetime
Option type, returned as a scalar string or an
NINST-by-1 string array with
values of "call" or "put".
Data Types: string
Option exercise style, returned as a scalar string or an
NINST-by-1 string array with
values of "European" or "American".
Data Types: string
Maximum or minimum underlying asset price, returned as a scalar numeric or
an NINST-by-1 numeric vector.
Data Types: double
Degree of partiality for partial floating-strike lookback, returned as a
scalar numeric or an NINST-by-1
numeric vector.
Data Types: double
User-defined name for the instrument, returned as an
NINST-by-1 string array.
Data Types: string
Examples
This example shows the workflow to price a floating-strike PartialLookback instrument when you use a BlackScholes model and a HeynenKat pricing method.
Create PartialLookback Instrument Object
Use fininstrument to create an PartialLookback instrument object.
PartialLookbackOpt = fininstrument("PartialLookback",ExerciseDate=datetime(2022,9,15),Strike=NaN,StrikeScaler=0.75,MonitorDate=datetime(2021,9,15),OptionType="put",ExerciseStyle="european",AssetMinMax=98,Name="partial_lookback_option")
PartialLookbackOpt =
PartialLookback with properties:
MonitorDate: 15-Sep-2021
StrikeScaler: 0.7500
OptionType: "put"
Strike: NaN
AssetMinMax: 98
ExerciseStyle: "european"
ExerciseDate: 15-Sep-2022
Name: "partial_lookback_option"
Create BlackScholes Model Object
Use finmodel to create a BlackScholes model object.
BlackScholesModel = finmodel("BlackScholes",Volatility=0.32)BlackScholesModel =
BlackScholes with properties:
Volatility: 0.3200
Correlation: 1
Create ratecurve Object
Create a flat ratecurve object using ratecurve.
Settle = datetime(2018,9,15);
Maturity = datetime(2023,9,15);
Rate = 0.035;
myRC = ratecurve('zero',Settle,Maturity,Rate,Basis=12)myRC =
ratecurve with properties:
Type: "zero"
Compounding: -1
Basis: 12
Dates: 15-Sep-2023
Rates: 0.0350
Settle: 15-Sep-2018
InterpMethod: "linear"
ShortExtrapMethod: "next"
LongExtrapMethod: "previous"
Create HeynenKat Pricer Object
Use finpricer to create a HeynenKat pricer object and use the ratecurve object for the 'DiscountCurve' name-value pair argument.
outPricer = finpricer("analytic",Model=BlackScholesModel,DiscountCurve=myRC,SpotPrice=100,DividendType="continuous",DividendValue=.05,PricingMethod="HeynenKat")
outPricer =
HeynenKat with properties:
DiscountCurve: [1×1 ratecurve]
Model: [1×1 finmodel.BlackScholes]
SpotPrice: 100
DividendValue: 0.0500
DividendType: "continuous"
Price PartialLookback Instrument
Use price to compute the price and sensitivities for the PartialLookback instrument.
[Price, outPR] = price(outPricer,PartialLookbackOpt,["all"])Price = 24.8148
outPR =
priceresult with properties:
Results: [1×7 table]
PricerData: []
outPR.Results
ans=1×7 table
Price Delta Gamma Lambda Vega Theta Rho
______ _______ ________ ______ ______ _______ _______
24.815 0.27297 0.012438 1.1 131.33 -5.0942 -193.51
This example shows the workflow to price multiple floating-strike PartialLookback instruments when you use a BlackScholes model and a HeynenKat pricing method.
Create PartialLookback Instrument Object
Use fininstrument to create an PartialLookback instrument object for three Partial Lookback instruments.
PartialLookbackOpt = fininstrument("PartialLookback",ExerciseDate=datetime([2022,9,15 ; 2022,10,15 ; 2022,11,15]),Strike=NaN,StrikeScaler=0.75,MonitorDate=datetime([2021,9,15 ; 2021,10,15 ; 2021,11,15]),OptionType="put",ExerciseStyle="european",AssetMinMax=98,Name="partial_lookback_option")
PartialLookbackOpt=3×1 PartialLookback array with properties:
MonitorDate
StrikeScaler
OptionType
Strike
AssetMinMax
ExerciseStyle
ExerciseDate
Name
Create BlackScholes Model Object
Use finmodel to create a BlackScholes model object.
BlackScholesModel = finmodel("BlackScholes",Volatility=0.32)BlackScholesModel =
BlackScholes with properties:
Volatility: 0.3200
Correlation: 1
Create ratecurve Object
Create a flat ratecurve object using ratecurve.
Settle = datetime(2018,9,15);
Maturity = datetime(2023,9,15);
Rate = 0.035;
myRC = ratecurve('zero',Settle,Maturity,Rate,Basis=12)myRC =
ratecurve with properties:
Type: "zero"
Compounding: -1
Basis: 12
Dates: 15-Sep-2023
Rates: 0.0350
Settle: 15-Sep-2018
InterpMethod: "linear"
ShortExtrapMethod: "next"
LongExtrapMethod: "previous"
Create HeynenKat Pricer Object
Use finpricer to create a HeynenKat pricer object and use the ratecurve object for the 'DiscountCurve' name-value pair argument.
outPricer = finpricer("analytic",Model=BlackScholesModel,DiscountCurve=myRC,SpotPrice=100,DividendType="continuous",DividendValue=0.05,PricingMethod="HeynenKat")
outPricer =
HeynenKat with properties:
DiscountCurve: [1×1 ratecurve]
Model: [1×1 finmodel.BlackScholes]
SpotPrice: 100
DividendValue: 0.0500
DividendType: "continuous"
Price PartialLookback Instruments
Use price to compute the prices and sensitivities for the PartialLookback instruments.
[Price, outPR] = price(outPricer,PartialLookbackOpt,["all"])Price = 3×1
24.8148
25.2306
25.6545
outPR=3×1 priceresult array with properties:
Results
PricerData
outPR.Results
ans=1×7 table
Price Delta Gamma Lambda Vega Theta Rho
______ _______ ________ ______ ______ _______ _______
24.815 0.27297 0.012438 1.1 131.33 -5.0942 -193.51
ans=1×7 table
Price Delta Gamma Lambda Vega Theta Rho
______ _______ ________ ______ ______ _______ _______
25.231 0.27694 0.012349 1.0976 133.05 -5.0265 -198.37
ans=1×7 table
Price Delta Gamma Lambda Vega Theta Rho
______ _______ ________ ______ ______ _______ ______
25.655 0.28099 0.012264 1.0953 134.81 -4.9578 -203.4
This example shows the workflow to price a fixed-strike PartialLookback instrument when you use a Heston model and an AssetMonteCarlo pricing method.
Create PartialLookback Instrument Object
Use fininstrument to create an PartialLookback instrument object.
PartialLookbackOpt = fininstrument("PartialLookback",ExerciseDate=datetime(2022,9,15),Strike=102,MonitorDate=datetime(2021,9,15),OptionType="call",ExerciseStyle="european",Name="partial_lookback_option")
PartialLookbackOpt =
PartialLookback with properties:
MonitorDate: 15-Sep-2021
StrikeScaler: 1
OptionType: "call"
Strike: 102
AssetMinMax: NaN
ExerciseStyle: "european"
ExerciseDate: 15-Sep-2022
Name: "partial_lookback_option"
Create Heston Model Object
Use finmodel to create a Hestone model object.
HestonModel = finmodel("Heston",V0=0.032,ThetaV=0.1,Kappa=0.003,SigmaV=0.2,RhoSV=-0.9)HestonModel =
Heston with properties:
V0: 0.0320
ThetaV: 0.1000
Kappa: 0.0030
SigmaV: 0.2000
RhoSV: -0.9000
Create ratecurve Object
Create a flat ratecurve object using ratecurve.
Settle = datetime(2018,9,15);
Maturity = datetime(2023,9,15);
Rate = 0.035;
myRC = ratecurve('zero',Settle,Maturity,Rate,Basis=12)myRC =
ratecurve with properties:
Type: "zero"
Compounding: -1
Basis: 12
Dates: 15-Sep-2023
Rates: 0.0350
Settle: 15-Sep-2018
InterpMethod: "linear"
ShortExtrapMethod: "next"
LongExtrapMethod: "previous"
Create AssetMonteCarlo Pricer Object
Use finpricer to create an AssetMonteCarlo pricer object and use the ratecurve object for the 'DiscountCurve' name-value pair argument.
outPricer = finpricer("AssetMonteCarlo",DiscountCurve=myRC,Model=HestonModel,SpotPrice=100,simulationDates=Settle+calmonths(1):calmonths(1):datetime(2022,9,15))outPricer =
HestonMonteCarlo with properties:
DiscountCurve: [1×1 ratecurve]
SpotPrice: 100
SimulationDates: [15-Oct-2018 15-Nov-2018 15-Dec-2018 15-Jan-2019 15-Feb-2019 15-Mar-2019 15-Apr-2019 15-May-2019 15-Jun-2019 15-Jul-2019 15-Aug-2019 15-Sep-2019 15-Oct-2019 … ] (1×48 datetime)
NumTrials: 1000
RandomNumbers: []
Model: [1×1 finmodel.Heston]
DividendType: "continuous"
DividendValue: 0
MonteCarloMethod: "standard"
BrownianMotionMethod: "standard"
Price PartialLookback Instrument
Use price to compute the price and sensitivities for the PartialLookback instrument.
[Price, outPR] = price(outPricer,PartialLookbackOpt,["all"])Price = 19.9479
outPR =
priceresult with properties:
Results: [1×8 table]
PricerData: [1×1 struct]
outPR.Results
ans=1×8 table
Price Delta Gamma Lambda Rho Theta Vega VegaLT
______ _______ _________ ______ ______ ______ _____ ______
19.948 0.93159 0.0084898 4.6701 283.87 1.9218 48.04 2.666
This example shows the workflow to price a fixed-strike PartialLookback instrument when you use a Heston model and an AssetMonteCarlo pricing method with quai-Monte Carlo simulation.
Create PartialLookback Instrument Object
Use fininstrument to create an PartialLookback instrument object.
PartialLookbackOpt = fininstrument("PartialLookback",ExerciseDate=datetime(2022,9,15),Strike=102,MonitorDate=datetime(2021,9,15),OptionType="call",ExerciseStyle="european",Name="partial_lookback_option")
PartialLookbackOpt =
PartialLookback with properties:
MonitorDate: 15-Sep-2021
StrikeScaler: 1
OptionType: "call"
Strike: 102
AssetMinMax: NaN
ExerciseStyle: "european"
ExerciseDate: 15-Sep-2022
Name: "partial_lookback_option"
Create Heston Model Object
Use finmodel to create a Hestone model object.
HestonModel = finmodel("Heston",V0=0.032,ThetaV=0.1,Kappa=0.003,SigmaV=0.2,RhoSV=-0.9)HestonModel =
Heston with properties:
V0: 0.0320
ThetaV: 0.1000
Kappa: 0.0030
SigmaV: 0.2000
RhoSV: -0.9000
Create ratecurve Object
Create a flat ratecurve object using ratecurve.
Settle = datetime(2018,9,15);
Maturity = datetime(2023,9,15);
Rate = 0.035;
myRC = ratecurve('zero',Settle,Maturity,Rate,Basis=12)myRC =
ratecurve with properties:
Type: "zero"
Compounding: -1
Basis: 12
Dates: 15-Sep-2023
Rates: 0.0350
Settle: 15-Sep-2018
InterpMethod: "linear"
ShortExtrapMethod: "next"
LongExtrapMethod: "previous"
Create AssetMonteCarlo Pricer Object
Use finpricer to create an AssetMonteCarlo pricer object and use the ratecurve object for the 'DiscountCurve' name-value argument and use the name-value arguments for MonteCarloMethod and BrownianMotionMethod.
outPricer = finpricer("AssetMonteCarlo",DiscountCurve=myRC,Model=HestonModel,SpotPrice=100,simulationDates=Settle+calmonths(1):calmonths(1):datetime(2022,9,15),NumTrials=1e3, ... MonteCarloMethod="quasi",BrownianMotionMethod="brownian-bridge")
outPricer =
HestonMonteCarlo with properties:
DiscountCurve: [1×1 ratecurve]
SpotPrice: 100
SimulationDates: [15-Oct-2018 15-Nov-2018 15-Dec-2018 15-Jan-2019 15-Feb-2019 15-Mar-2019 15-Apr-2019 15-May-2019 15-Jun-2019 15-Jul-2019 15-Aug-2019 15-Sep-2019 15-Oct-2019 … ] (1×48 datetime)
NumTrials: 1000
RandomNumbers: []
Model: [1×1 finmodel.Heston]
DividendType: "continuous"
DividendValue: 0
MonteCarloMethod: "quasi"
BrownianMotionMethod: "brownian-bridge"
Price PartialLookback Instrument
Use price to compute the price and sensitivities for the PartialLookback instrument.
[Price, outPR] = price(outPricer,PartialLookbackOpt,"all")Price = 19.7466
outPR =
priceresult with properties:
Results: [1×8 table]
PricerData: [1×1 struct]
outPR.Results
ans=1×8 table
Price Delta Gamma Lambda Rho Theta Vega VegaLT
______ _______ _________ ______ ______ ______ ______ ______
19.747 0.91573 0.0030552 4.6374 279.16 -2.394 84.632 1.2039
More About
A partial lookback option gives the investor the right to exercise the option with the highest (or lowest) price of the underling asset during the partial lookback period.
Partial lookback options are called fractional lookback options because:
The extreme values (Smax and Smin) are monitored during a subset of the lives of the options
Only a fraction of the floating-strike values are in effect
For the latter, the factor λ (lambda) is introduced. The λ factor, represented by
the optional name-value argument StrikeScaler, is a constant
and enables the creation of the fractional floating-strike lookback option where the
strike is fixed at some percentage above or below the actual extreme values
(Smax and Smin).
For calls when λ ≥ 1, the call floating strike increases
For puts when 0 ≤ λ ≤ 1, the put floating strike decreases
Financial Instruments Toolbox™ software supports two types of partial lookback options: fixed and floating. The fixed-strike partial lookback option is similar to a standard fixed-strike lookback option, but the lookback period starts at a predetermined date (T) after the settlement date of the option. The payoff for this options is
Max(0, Smax - K) for a call
Max(0, K -Smin) for a put
where
Smax is the maximum value of underlying asset during the monitoring period.
Smin is the minimum value of underlying asset during the monitoring period.
K is the strike price.
The floating-strike partial lookback option is similar to a standard floating-strike lookback option, but the lookback period starts at settle and ends at a predetermined date(T) before expiration.
The payoff for this options is
Max(0, S - λ × Smin) for a call
Max(0, λ × Smax - S) for a put
where
Smax is the maximum value of underlying asset during the monitoring period.
Smin is the minimum value of underlying asset during the monitoring period.
K is the strike price.
S is the price of underlying asset.
λ, represented by StrikeScaler, is the degree of
partiality.
Version History
Introduced in R2021bAlthough PartialLookback 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)