touchbybls
Price one-touch and no-touch binary options using Black-Scholes option pricing model
Description
calculates one-touch and no-touch binary options using the Black-Scholes option pricing model.Price
= touchybls(RateSpec
,StockSpec
,Settle
,Maturity
,BarrierSpec
,Barrier
,Payoff
)
Note
Alternatively, you can use the Touch
object to price one
touch options. For more information, see Get Started with Workflows Using Object-Based Framework for Pricing Financial Instruments.
Examples
Price a One-Touch Option
Compute the price of a one-touch option using the following data:
AssetPrice = 105; Rate = 0.1; Volatility = 0.2; Settle = datetime(2018,1,1); Maturity = datetime(2018,6,1);
Define the RateSpec
using intenvset
.
RateSpec = intenvset('ValuationDate', Settle, 'StartDates', Settle, 'EndDates', ... Maturity, 'Rates', Rate, 'Compounding', -1);
Define the StockSpec
using stockspec
.
DividendType = "Continuous";
DividendYield = Rate - 0.1;
StockSpec = stockspec(Volatility, AssetPrice, DividendType, DividendYield);
Calculate the price of a one-touch binary option.
BarrierSpec = "OT";
Barrier = 100;
Payoff = 15;
Price = touchbybls(RateSpec, StockSpec, Settle, Maturity, BarrierSpec, Barrier, Payoff)
Price = 9.4102
Input Arguments
StockSpec
— Stock specification for underlying asset
structure
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
Settle
— Settlement or trade date
datetime array | string array | date character vector
Settlement or trade date for the touch option, specified as an
NINST
-by-1
vector using a datetime array, string
array, or date character vectors.
To support existing code, touchbybls
also
accepts serial date numbers as inputs, but they are not recommended.
Maturity
— Maturity date
datetime array | string array | date character vector
Maturity date for the touch option, specified as an
NINST
-by-1
vector using a datetime array, string
array, or date character vectors.
To support existing code, touchbybls
also
accepts serial date numbers as inputs, but they are not recommended.
BarrierSpec
— Barrier option type
character vector with values 'OT'
or
'NT'
Barrier option type, specified as an
NINST
-by-1
cell array of character vectors with
the following values:
'OT'
— One-touchThe one-touch option provides a payoff if the underlying asset ever trades at or beyond the
Barrier
level. Otherwise, thePayoff
is zero.'NT'
— No-touchThe no-touch option provides a
Payoff
if the underlying asset never trades at or beyond theBarrier
level. Otherwise, thePayoff
is zero.
Data Types: char
| cell
Barrier
— Barrier value
numeric
Barrier value, specified as an NINST
-by-1
matrix of numeric values.
Data Types: double
Payoff
— Payoff value
numeric
Payoff value, specified as an NINST
-by-1
matrix of numeric values.
Note
The payoff value is calculated for the point in time that the
Barrier
value is reached. The payoff is either cash or
nothing. If a no-touch option is specified using the
BarrierSpec
, the payoff is at the
Maturity
of the option.
Data Types: double
Output Arguments
Price
— Expected prices for one-touch options
matrix
Expected prices for one-touch options at time 0, returned as an
NINST
-by-1
matrix.
More About
Touch and No-Touch Options
The one-touch and no-touch options provide a payoff if the underlying spot either ever or never trades at or beyond the barrier level. Otherwise, the payoff is zero.
Only two outcomes are possible with a one-touch option if a trader holds the contract all the way through expiration:
The target price (
Barrier
) is reached and the trader collects the full premium.The target price (
Barrier
) is not reached and the trader loses the amount originally paid to open the trade.
References
[1] Haug, E. The Complete Guide to Option Pricing Formulas. McGraw-Hill Education, 2007.
[2] Wystup, U. FX Options and Structured Products. Wiley Finance, 2007.
Version History
Introduced in R2019bR2022b: Serial date numbers not recommended
Although touchbybls
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.
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)