aboutsummaryrefslogtreecommitdiffstats
path: root/python/swaption_pnl.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/swaption_pnl.py')
-rw-r--r--python/swaption_pnl.py28
1 files changed, 25 insertions, 3 deletions
diff --git a/python/swaption_pnl.py b/python/swaption_pnl.py
index 1510ee90..a3471668 100644
--- a/python/swaption_pnl.py
+++ b/python/swaption_pnl.py
@@ -45,7 +45,7 @@ def get_index_pv(
def get_swaption_pv(
- start_date: datetime.date, end_date: datetime.date, conn: connection
+ start_date: datetime.date, end_date: datetime.date, conn: connection, **kwargs
):
dr = pd.bdate_range(start_date, end_date)
pv = []
@@ -53,7 +53,7 @@ def get_swaption_pv(
dates = []
for d in dr:
prev_day = (d - BDay()).date()
- portf = get_swaption_portfolio(prev_day, conn, source_list=["GS"])
+ portf = get_swaption_portfolio(prev_day, conn, **kwargs)
nav = 0.0
# add terminations
with conn.cursor() as c:
@@ -88,11 +88,33 @@ if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("start_date", type=datetime.datetime.fromisoformat)
parser.add_argument("end_date", type=datetime.datetime.fromisoformat)
+ parser.add_argument(
+ "-e",
+ "--external",
+ action="store_true",
+ default=False,
+ help="use brokers' marks",
+ )
+ parser.add_argument(
+ "-s",
+ "--source",
+ action="append",
+ default=["GS"],
+ dest="source_list",
+ help="quote source",
+ )
args = parser.parse_args()
df_index = get_index_pv(
args.start_date, args.end_date, dawndb, ("IGOPTDEL", "HYOPTDEL")
)
- df_swaption = get_swaption_pv(args.start_date, args.end_date, dawndb)
+ if args.external:
+ df_swaption = get_swaption_pv(
+ args.start_date, args.end_date, dawndb, use_external=True
+ )
+ else:
+ df_swaption = get_swaption_pv(
+ args.start_date, args.end_date, dawndb, source_list=args.source
+ )
pnl_index = df_index.pv.diff() + df_index.daily
pnl_swaption = df_swaption.pv.diff() + df_swaption.daily
pnl = pd.concat([pnl_index, pnl_swaption], keys=["index", "swaption"], axis=1)