diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/swaption_pnl.py | 28 |
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) |
