aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--python/analytics/ir_swaption.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/python/analytics/ir_swaption.py b/python/analytics/ir_swaption.py
new file mode 100644
index 00000000..8bcf96ca
--- /dev/null
+++ b/python/analytics/ir_swaption.py
@@ -0,0 +1,21 @@
+from quantlib.indexes.api import UsdLiborSwapIsdaFixAm
+from quantlib.time.api import Period, Years
+from yieldcurve import get_yc
+
+class IRSwaption():
+ """ adapter class for the QuantLib code"""
+ def __init__(self, swap_index, option_tenor, strike, option_type="payer",
+ direction="Long", notional=10_000_000):
+ self._qloption = (MakeSwaption(swap_index, option_tenor, strike).
+ withNominal(notional).
+ withUnderlyingType(SwapType[option_type.title()]))
+
+ def from_tradeid(trade_id):
+ with dbconn('dawndb') as conn:
+ with conn.cursor() as c:
+ c.execute("SELECT * from swaption "
+ "WHERE id = %s", (trade_id,))
+ rec = c.fetchone()
+ p = Period(int(rec.security_id.replace("USIDA", "")), Years)
+ swap_index = UsdLiborSwapIsdaFixAm(p, yc)
+ MakeSwaption(