aboutsummaryrefslogtreecommitdiffstats
path: root/python/mark_swaptions.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/mark_swaptions.py')
-rw-r--r--python/mark_swaptions.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/python/mark_swaptions.py b/python/mark_swaptions.py
index d9edade8..dd3094e9 100644
--- a/python/mark_swaptions.py
+++ b/python/mark_swaptions.py
@@ -5,7 +5,7 @@ import os
import pandas as pd
from pandas.tseries.offsets import BDay
-from analytics import Index, Swaption
+from analytics import Index, Swaption, Portfolio, BlackSwaption
from db import dbengine
from sqlalchemy import exc
@@ -21,6 +21,14 @@ def get_trades(date, engine):
"WHERE termination_date is NULL AND expiration_date > %s AND trade_date <= %s",
engine, 'dealid', params=(date, date), parse_dates=['expiration_date'])
+def get_swaption_portfolio(date, engine):
+ tradeids = engine.execute("SELECT id FROM swaptions WHERE termination_date is NULL "
+ "AND expiration_date > %s AND trade_date <= %s",
+ (date, date))
+ portf = Portfolio([BlackSwaption.from_tradeid(r[0]) for r in tradeids])
+ portf.value_date = date
+ portf.mark(interp_method='bivariate_linear')
+ return portf
def get_swaptionvol(index, series, strike, expiry, date, engine):
r = engine.execute(
@@ -91,6 +99,7 @@ def mark_trades(date, engine):
logging.info("succesfully marked trade id: %s", trade.Index)
return result
+
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('workdate', nargs='?',