diff options
Diffstat (limited to 'python/position.py')
| -rw-r--r-- | python/position.py | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/python/position.py b/python/position.py index 5b3157bf..6be0f477 100644 --- a/python/position.py +++ b/python/position.py @@ -1,19 +1,16 @@ -from bbg_helpers import init_bbg_session, retrieve_data, BBG_IP +from serenitas.analytics.bbg_helpers import init_bbg_session, retrieve_data, BBG_IP import datetime import numpy as np import pandas as pd -from pandas.tseries.offsets import BDay from pandas import bdate_range -from sqlalchemy import create_engine import re import os import logging -import sys def get_list( engine, - workdate: datetime.datetime = None, + workdate: datetime.date = None, asset_class=None, include_unsettled: bool = True, fund="SERCGMAST", @@ -22,7 +19,7 @@ def get_list( positions = pd.read_sql_query( "SELECT identifier, bbg_type FROM " "list_positions(%s, %s, %s, %s)", engine, - params=(workdate.date(), asset_class, include_unsettled, fund), + params=(workdate, asset_class, include_unsettled, fund), ) positions.loc[ positions.identifier.str.len() <= 11, "cusip" @@ -100,7 +97,9 @@ def update_securities(engine, session, workdate): ["PREV_CPN_DT", "START_ACC_DT", "CUR_CPN", "CPN_ASOF_DT"], ) data = pd.DataFrame.from_dict(data, orient="index") - data = data[data.CPN_ASOF_DT.isnull() | (data.CPN_ASOF_DT <= workdate)] + data = data[ + data.CPN_ASOF_DT.isnull() | (data.CPN_ASOF_DT <= pd.Timestamp(workdate)) + ] m = securities.merge(data, left_index=True, right_index=True) conn = engine.raw_connection() @@ -371,18 +370,24 @@ def populate_cashflow_history(engine, session, workdate=None, fund="SERCGMAST"): if __name__ == "__main__": - from utils.db import serenitas_pool, dawn_engine + from serenitas.utils.db import serenitas_pool, dawn_engine + import argparse + + parser = argparse.ArgumentParser() + parser.add_argument( + "workdate", + nargs="?", + type=datetime.date.fromisoformat, + default=datetime.date.today(), + ) + args = parser.parse_args() dawn_conn = dawn_engine.raw_connection() serenitas_conn = serenitas_pool.getconn() - if len(sys.argv) > 1: - workdate = pd.Timestamp(sys.argv[1]) - else: - workdate = pd.Timestamp.now().normalize() with init_bbg_session(BBG_IP) as session: - update_securities(dawn_engine, session, workdate) + update_securities(dawn_engine, session, args.workdate) for fund in ("SERCGMAST", "BRINKER", "BOWDST"): - populate_cashflow_history(dawn_engine, session, workdate, fund) + populate_cashflow_history(dawn_engine, session, args.workdate, fund) update_fx(dawn_conn, session, ["EURUSD", "CADUSD"]) update_swap_rates(serenitas_conn, session) update_cash_rates(serenitas_conn, session) |
