Main Content

blsimpv

Black-Scholes implied volatility

Description

example

Volatility= blsimpv(Price,Strike,Rate,Time,Value)using a Black-Scholes model computes the implied volatility of an underlying asset from the market value of European options. If theClassname-value argument is empty or unspecified, the default is a call option

Note

The input argumentsPrice,Strike,Rate,Time,Value,Yield, andClasscan be scalars, vectors, or matrices. If scalars, then that value is used to compute the implied volatility from all options. If more than one of these inputs is a vector or matrix, then the dimensions of all non-scalar inputs must be the same.

Also, ensure thatRate,Time, andYieldare expressed in consistent units of time.

example

Volatility= blsimpv(___,Name,Value)specifies options using one or more name-value pair arguments in addition to the input arguments in the previous syntax.

Examples

collapse all

这个例子显示了如何计算隐含掌tility for a European call option trading at $10 with an exercise price of $95 and three months until expiration. Assume that the underlying stock pays no dividend and trades at $100. The risk-free rate is 7.5% per annum. Furthermore, assume that you are interested in implied volatilities no greater than 0.5 (50% per annum). Under these conditions, the following statements all compute an implied volatility of 0.3130, or 31.30% per annum.

Volatility = blsimpv(100, 95, 0.075, 0.25, 10,'Limit', 0.5); Volatility = blsimpv(100, 95, 0.075, 0.25, 10,'Limit',0.5,'Yield',0,'Class', {'Call'}); Volatility = blsimpv(100, 95, 0.075, 0.25, 10,'Limit',0.5,'Yield',0,'Class', true); Volatility = blsimpv(100, 95, 0.075, 0.25, 10,'Limit',0.5,'Yield',0,'Class', true,'Method','jackel2016')
Volatility = 0.3130

Input Arguments

collapse all

Current price of the underlying asset, specified as a scalar numeric.

Data Types:double

Exercise price of the option, specified as a scalar numeric.

Data Types:double

Annualized continuously compounded risk-free rate of return over the life of the option, specified as a scalar positive decimal.

Data Types:double

Time to expiration of the option, specified as the number of years using a scalar numeric.

Data Types:double

Price of a European option from which the implied volatility of the underlying asset is derived, specified as a scalar numeric.

Data Types:double

Name-Value Pair Arguments

Specify optional comma-separated pairs ofName,Valuearguments.Nameis the argument name andValueis the corresponding value.Namemust appear inside quotes. You can specify several name and value pair arguments in any order asName1,Value1,...,NameN,ValueN.

Example:Volatility = blsimpv(Yield,CouponRate,Settle,Maturity,'Method','jackel2016')

Upper bound of the implied volatility search interval, specified as the comma-separated pair consisting of'Limit'and a positive scalar numeric. IfLimitis empty or unspecified, the default is10, or 1000% per annum.

Note

If you are usingMethodwith a value of'jackel2016',Limitargument is ignored.

Data Types:double

Annualized continuously compounded yield of the underlying asset over the life of the option,specified as the comma-separated pair consisting of'Yield'and a decimal number. IfYieldis empty or missing, the default value is0.

For example, for options written on stock indices,Yieldcould represent the dividend yield. For currency options,Yieldcould be the foreign risk-free interest rate.

Note

blsimpvcan handle other types of underlies like Futures and Currencies. When pricing Futures (Black model), enter the input argumentYieldas:

Yield = Rate
When pricing currencies (Garman-Kohlhagen model), enter the input argumentYieldas:
Yield = ForeignRate
whereForeignRateis the continuously compounded, annualized risk-free interest rate in the foreign country.

Data Types:double

Implied volatility termination tolerance, specified as the comma-separated pair consisting of'Tolerance'and a positive scalar numeric. If empty or missing, the default is1e-6.

Note

If you are usingMethodwith a value of'jackel2016',Toleranceargument is ignored.

Data Types:double

Option class indicating option type (call or put) from which implied volatility is derived, specified as the comma-separated pair consisting of'Class'and a logical indicator, cell array of character vectors, or string array.

To specify call options, setClass=trueorClass={'call'}. To specify put options, setClass=falseorClass={'put'}orClass=["put"]. IfClassis empty or unspecified, the default is a call option.

Data Types:logical|cell|string

Method for computing implied volatility, specified as the comma-separated pair consisting of'Method'and a character vector with a value of'search'or'jackel2016'or a string with a value of"search"or"jackel2016".

Data Types:char|string

Output Arguments

collapse all

Implied volatility of the underlying asset derived from European option prices, returned as a decimal. If no solution is found,blsimpvreturnsNaN.

References

[1] Hull, John C.Options, Futures, and Other Derivatives.5th edition, Prentice Hall, 2003.

[2] Jäckel, Peter. "Let's Be Rational."Wilmott Magazine., January, 2015 (https://onlinelibrary.wiley.com/doi/pdf/10.1002/wilm.10395).

[3] Luenberger, David G.Investment Science.Oxford University Press, 1998.

Introduced before R2006a