Last updated: 2023-03-16.
tf_quant_finance.experimental.svi.implied_volatility_from_raw_svi_parameters#
Computes modeled implied volatility using raw SVI parameters.
tf_quant_finance.experimental.svi.implied_volatility_from_raw_svi_parameters(
*, svi_parameters, log_moneyness=None, forwards=None, strikes=None,
expiries=None, dtype=None, name=None
)
The SVI volatility model parameterizes an option’s total implied variance. For a fixed timeslice (i.e. given expiry t), raw SVI parameters (a,b,rho,m,sigma) and option’s log-moneyness k:=log(K/F), the modeled total variance is
w(k) = a + b * (rho * (k - m) + sqrt{(k - m)^2 + sigma^2)}
The modeled Black-Scholes implied volatility sigmaBS is computed from w(k) and the option’s expiry t from the equation
w(k,t) = sigmaBS(k,t)^2 * t
See [1] and documentation for total_variance_from_raw_svi_parameters for
additional details.
Example#
import numpy as np
import tensorflow as tf
import tf_quant_finance as tff
svi_parameters = np.array([-0.1825, 0.3306, -0.0988, 0.0368, 0.6011])
forwards = np.array([2402.])
expiries = np.array([0.23])
strikes = np.array([[1800., 2000., 2200., 2400., 2600., 2800., 3000.]])
implied_vol = tff.experimental.svi.implied_volatility_from_raw_svi_parameters(
svi_parameters=svi_parameters,
forwards=forwards,
strikes=strikes,
expiries=expiries)
# Expected: implied_vol tensor (rounded to 4 decimal places) should contain
# [[0.4849, 0.3972, 0.3265, 0.2785, 0.2582, 0.2647, 0.2905]]
References:#
[1] Gatheral J., Jaquier A., Arbitrage-free SVI volatility surfaces. https://arxiv.org/pdf/1204.0646.pdf
Args:#
svi_parameters: A rank 2 realTensorof shape [batch_size, 5]. The raw SVI parameters for each volatility skew.log_moneyness: A rank 2 realTensorof shape [batch_size, num_strikes]. The log-moneyness of the options.forwards: A rank 2 realTensorof shape [batch_size, num_strikes]. The forward prices of the options at expiries.strikes: A rank 2 realTensorof shape [batch_size, num_strikes]. The options strike prices.expiries: A rank 1 realTensorof shape [batch_size]. The options expiries.dtype: Optionaltf.Dtype. If supplied, the dtype for the input and outputTensors will be converted to this. Default value:Nonewhich maps to the dtype inferred fromlog_moneyness.name: Python str. The name to give to the ops created by this function. Default value:Nonewhich maps tosvi_implied_volatility.
Returns:#
A rank 2 real Tensor of shape [batch_size, num_strikes].
Raises:#
ValueError: If exactly one offorwardsandstrikesis supplied.ValueError: If bothlog_moneyness' andforwards` are supplied or if neither is supplied.