diff options
Diffstat (limited to 'python/pnl_explain.py')
| -rw-r--r-- | python/pnl_explain.py | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/python/pnl_explain.py b/python/pnl_explain.py index c00c2348..91e4da49 100644 --- a/python/pnl_explain.py +++ b/python/pnl_explain.py @@ -328,6 +328,11 @@ def get_bond_pv( cashflows = pd.read_sql_query( "SELECT identifier, prev_cpn_date AS date, interest, principal " "FROM factors_history fh " +<<<<<<< HEAD +======= + "left join securities b " + "on fh.identifier = b.figi " +>>>>>>> 5984d5b5 (separate out join in get_bond_pv and turn index of get_pnl for bond into datetime) "WHERE last_pay_date BETWEEN %s AND %s", conn, params=(start_date, end_date), @@ -340,11 +345,18 @@ def get_bond_pv( "principal_payment END) as principal_payment, " "sum(CASE WHEN buysell THEN -accrued_payment ELSE " "accrued_payment END) as accrued_payment, " +<<<<<<< HEAD "securities.asset_class " "FROM bond_trades " "LEFT JOIN securities USING (identifier) " "WHERE trade_date BETWEEN %s AND %s AND fund=%s " "GROUP BY date, figi, securities.asset_class", +======= + "asset_class " + "FROM bond_trades WHERE trade_date BETWEEN %s AND %s " + "AND fund=%s " + "group by date, identifier, asset_class", +>>>>>>> 5984d5b5 (separate out join in get_bond_pv and turn index of get_pnl for bond into datetime) conn, params=(start_date, end_date, fund), parse_dates=["date"], @@ -353,7 +365,12 @@ def get_bond_pv( if asset_class is not None: trades = trades[trades.asset_class == asset_class] trades.drop("asset_class", axis=1, inplace=True) +<<<<<<< HEAD df = positions.join([cashflows, trades]) +======= + positions = positions.join(cashflows) + df = positions.join(trades) +>>>>>>> 5984d5b5 (separate out join in get_bond_pv and turn index of get_pnl for bond into datetime) df.interest *= df.notional / 100 df.principal *= df.notional / 100 return df @@ -363,7 +380,9 @@ def get_pnl( df_instrument, asset_class: Literal["bond", "tranche", "swaption"], pv2=False ): if asset_class == "bond": - return df_instrument.drop("notional", axis=1).groupby("date").sum().sum(axis=1) + df = df_instrument.drop("notional", axis=1).groupby("date").sum().sum(axis=1) + df.index = pd.to_datetime(df.index) + return df elif asset_class == "tranche": if pv2: df_pnl = df_instrument.copy().fillna(0.0) |
