diff options
Diffstat (limited to 'python/exploration')
| -rw-r--r-- | python/exploration/realized_vol_quantiles.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/python/exploration/realized_vol_quantiles.py b/python/exploration/realized_vol_quantiles.py new file mode 100644 index 00000000..18298abf --- /dev/null +++ b/python/exploration/realized_vol_quantiles.py @@ -0,0 +1,16 @@ +from analytics.index_data import index_returns +from statsmodels.distributions.empirical_distribution import ECDF +from scipy.stats import norm +from scipy.optimize import brentq + +df = index_returns(index="IG", tenor=["5yr"]) +df = df.reset_index(['index', 'tenor'], drop=True) +spreads = df.dropna().groupby(['date']).nth(-1)['spread_return'] +monthly_returns = spreads.rolling('30D').apply(lambda s: (1 + s).prod() - 1) +mu = monthly_returns.median() +ecdf = ECDF(monthly_returns) + +def implied_vol(q): + """ computes the equivalent vol such that P(r \leq \mu + \sigma x) = \Phi(x)""" + x0, r = brentq(lambda sigma: ecdf(mu + sigma * q) - norm.cdf(q), 0, 2, full_output=True) + return x0 |
