1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
import datetime
from analytics.curve_trades import curve_pos
from analytics.index_data import index_returns
import pandas as pd
portf = curve_pos(datetime.date(2018, 5, 3), "ITRX")
df = index_returns(index="EU", years=5, tenor=['3yr', '5yr', '7yr', '10yr'])
df = (df.reset_index(['index'], drop=True).
reorder_levels(['date', 'series', 'tenor']))
returns_otr = (df.spread_return.dropna().
unstack(-1).
groupby(level='date', as_index=False).
nth(-1))
portf.reset_pv()
spreads = pd.DataFrame({'spread': portf.spread,
'tenor': [ind.tenor for ind in portf.indices]})
r = []
for k, v in returns_otr.iterrows():
portf.spread = spreads.spread.values * (1 + v.loc[spreads.tenor])
r.append((k[0], portf.pnl))
pnl = pd.DataFrame.from_records(r, columns=['date', 'pnl'], index=['date'])
|