aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/pnl_explain.py7
1 files changed, 3 insertions, 4 deletions
diff --git a/python/pnl_explain.py b/python/pnl_explain.py
index 9851ee76..c1b42e3c 100644
--- a/python/pnl_explain.py
+++ b/python/pnl_explain.py
@@ -69,7 +69,6 @@ def pnl_explain(identifier, start_date = None, end_date = None,
daily['realized_accrued'] = daily.interest/100 * daily.faceamount
daily['accrued'] = yearfrac(daily.prev_cpn_date, daily.index.to_series(), daycount) * \
daily.coupon/100*daily.factor * daily.faceamount
- daily['unrealized_accrued'] = daily.accrued.diff() + daily.realized_accrued
if delay >0:
## we shift cashflows by delay 'D', and then move it to the next business day
## for some reason .shift(0, bus_day) doesn't work (but would work on an index)
@@ -79,13 +78,13 @@ def pnl_explain(identifier, start_date = None, end_date = None,
if not daily.loc[daily.realized_pnl>0, 'realized_pnl'].empty:
daily['realized_pnl'] = (daily.loc[daily.realized_pnl>0, 'realized_pnl'].
shift(delay, 'D').shift(-1, bus_day).shift(1, bus_day))
-
- daily[['realized_pnl', 'realized_accrued']] = (daily[['realized_pnl', 'realized_accrued']].
- fillna(value=0))
+ cols = ['unrealized_pnl', 'realized_pnl', 'realized_accrued', 'clean_nav']
+ daily[cols] = daily[cols].fillna(value=0)
extra_pnl = daily.clean_nav.diff() - daily.principal_payment
daily.loc[daily.principal_payment>0 , 'unrealized_pnl'] += extra_pnl[daily.principal_payment>0]
daily.loc[daily.principal_payment<0, 'realized_pnl'] += extra_pnl[daily.principal_payment<0]
daily['realized_accrued'] -= daily.accrued_payment
+ daily['unrealized_accrued'] = daily.accrued.diff() + daily.realized_accrued
return daily[['clean_nav', 'accrued', 'unrealized_pnl', 'realized_pnl', 'unrealized_accrued',
'realized_accrued']].iloc[1:,]