aboutsummaryrefslogtreecommitdiffstats
path: root/python/pnl_explain.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/pnl_explain.py')
-rw-r--r--python/pnl_explain.py21
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)