aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/analytics/cms_spread.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/python/analytics/cms_spread.py b/python/analytics/cms_spread.py
index 9ee63e8e..ee26373a 100644
--- a/python/analytics/cms_spread.py
+++ b/python/analytics/cms_spread.py
@@ -1,6 +1,7 @@
from .tranche_functions import GHquad
from math import exp, sqrt, log
from .black import cnd_erf
+from bbg_helpers import BBG_IP, retrieve_data, init_bbg_session
def CMS_spread(T_alpha, X, beta, gamma):
Z, w = GHquad(100)
@@ -21,3 +22,26 @@ def h(v, X, S_alpha_beta, mu_beta, sigma_alpha_beta, T_alpha):
r = (mu_beta - 0.5 * sigma_alpha_beta * sigma_alpha_beta) * T_alpha + \
sigma_alpha_beta * sqrt(T_alpha) * v
return X + S_alpha_beta * exp(r)
+
+def get_fixings(tenor1, tenor2):
+ securities = [f"USISDA{t:02} Index" for t in [tenor1, tenor2]]
+ with init_bbg_session(BBG_IP) as session:
+ field = "PX_LAST"
+ fixings = retrieve_data(session, securities, field)
+ return fixings
+
+def get_forward(tenor1, tenor2, maturity):
+ yc = YC()
+ yc.extrapolation = True
+
+ USISDA1 = UsdLiborSwapIsdaFixAm(Period(tenor1, Years), forwarding=yc, discounting=yc)
+ USISDA1.add_fixing(Date(25, 1, 2018), 0.02781)
+ USISDA2 = UsdLiborSwapIsdaFixAm(Period(tenor2, Years), forwarding=yc, discounting=yc)
+ USISDA2.add_fixing(Date(25, 1, 2018), 0.02283)
+ USFS1 = USISDA1.underlying_swap(maturity)
+ USFS2 = USISDA2.underlying_swap(maturity)
+ return USFS1.fair_rate - USFS2.fair_rate
+
+def globeop_model(sigma0202, sigma0230, rho, forward, strike, maturity):
+ vol_spread = sqrt(sigma0202**2 + sigma0230**2 - 2 * rho * sigma02 * sigma0230)
+ return black(forward, strike, T, False)