Calculate Implied Volatility from option prices.

# Implied Volatility¶

`py_vollib_vectorized.implied_volatility.``vectorized_implied_volatility`(price, S, K, t, r, flag, q=None, *, on_error='warn', model='black_scholes', return_as='dataframe', dtype=<class 'numpy.float64'>, **kwargs)

An extremely fast, efficient and accurate Implied Volatility calculator for option/future contracts. Inputs can be lists, tuples, floats, `pd.Series`, or numpy.arrays. Broadcasting is applied on the inputs.

Parameters
• price – The price of the option.

• S – The price of the underlying asset.

• K – The strike price.

• t – The annualized time to expiration. Must be positive. For small TTEs, use a small value (1e-3).

• r – The Interest Free Rate.

• flag – For each contract, this should be specified as c for a call option and p for a put option.

• q – The annualized continuous dividend yield.

• on_error – Either “raise”, “warn” or “ignore”.

• model – Must be one of “black_scholes” or “black_scholes_merton”. Use vectorized_implied_volatility_black for the Black model.

• return_as – To return as a `pd.Series` object, use “series”. To return as a `pd.DataFrame` object, use “dataframe”. Any other value will return a `numpy.array` object.

• dtype – Data type.

• kwargs – Other keyword arguments are ignored.

Returns

`pd.Series`, `pd.DataFrame` or `numpy.array` object containing the implied volatility for each contract.

```>>> import py_vollib.black_scholes_merton.implied_volatility
>>> import py_vollib_vectorized
>>> price = 0.10
>>> S = 95
>>> K = [100, 90]
>>> t = .2
>>> r = .2
>>> flag = ['c', 'p']
>>> py_vollib.black_scholes_merton.implied_volatility.implied_volatility(price, S, K, t, r, flag, q=0, return_as='numpy')
array([0.02621257, 0.12585767])
>>> py_vollib_vectorized.vectorized_implied_volatility(price, S, K, t, r, flag, q=0, model='black_scholes_merton',return_as='numpy')  # equivalent
array([0.02621257, 0.12585767])
```
`py_vollib_vectorized.implied_volatility.``vectorized_implied_volatility_black`(price, F, K, r, t, flag, *, on_error='warn', return_as='dataframe', dtype=<class 'numpy.float64'>, **kwargs)

An extremely fast, efficient and accurate Implied Volatility calculator for option/future contracts. Inputs can be lists, tuples, floats, `pd.Series`, or numpy.arrays. Broadcasting is applied on the inputs. This method should only be used in the black model of pricing. Argument order is kept consistent with that of the py_vollib package.

Parameters
• price – The price of the option.

• F – The price of the underlying asset.

• K – The strike price.

• t – The annualized time to expiration. Must be positive. For small TTEs, use a small value (1e-3).

• r – The Interest Free Rate.

• flag – For each contract, this should be specified as c for a call option and p for a put option.

• on_error – Either “raise”, “warn” or “ignore”.

• return_as – To return as a `pd.Series` object, use “series”. To return as a `pd.DataFrame` object, use “dataframe”. Any other value will return a `numpy.array` object.

• dtype – Data type.

• kwargs – Other keyword arguments are ignored.

Returns

`pd.Series`, `pd.DataFrame` or `numpy.array` object containing the implied volatility for each contract.

```>>> import py_vollib.black.implied_volatility
>>> import py_vollib_vectorized
>>> price = 0.10
>>> F = 95
>>> K = [100, 90]
>>> t = .2
>>> r = .2
>>> flag = ['c', 'p']
>>> py_vollib.black.implied_volatility.implied_volatility(price, F, K, r, t, flag, return_as='numpy')
array([0.02621257, 0.12585767])
>>> py_vollib_vectorized.vectorized_implied_volatility_black(price, F, K, r, t, flag, return_as='numpy')  # equivalent
array([0.02621257, 0.12585767])
```