aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--python/index_data.py8
1 files changed, 5 insertions, 3 deletions
diff --git a/python/index_data.py b/python/index_data.py
index 78605af1..91fe2f49 100644
--- a/python/index_data.py
+++ b/python/index_data.py
@@ -77,7 +77,7 @@ def get_index_quotes(index=None, series=None, tenor=None, from_date=None, years=
df = df.loc(axis=0)[dates.difference(holidays),:,:]
return df
-def index_returns(df=None, index=None, series=None, tenor=None, from_date=None, years=3):
+def index_returns(df=None, index=None, series=None, tenor=None, from_date=None, years=3, per=1):
"""computes daily spreads and price returns
Parameters
@@ -92,6 +92,8 @@ def index_returns(df=None, index=None, series=None, tenor=None, from_date=None,
starting date
years : int, optional
limits many years do we go back starting from today.
+ per: int, optional
+ calculate returns across different time frames
"""
if df is None:
@@ -99,7 +101,7 @@ def index_returns(df=None, index=None, series=None, tenor=None, from_date=None,
df = (df.
groupby(level=['index', 'series', 'tenor', 'version'])
[['closespread','closeprice']].
- pct_change())
+ pct_change(periods=per))
df.columns = ['spread_return', 'price_return']
df = df.groupby(level=['date', 'index', 'series', 'tenor']).nth(0)
coupon_data = pd.read_sql_query("SELECT index, series, tenor, coupon FROM " \
@@ -107,7 +109,7 @@ def index_returns(df=None, index=None, series=None, tenor=None, from_date=None,
index_col=['index', 'series', 'tenor'])
def add_accrued(df):
coupon = coupon_data.loc[df.index[0][1:],'coupon'] * 1e-4
- accrued = (df.index.levels[0].to_series().diff().
+ accrued = (df.index.levels[0].to_series().diff(periods=per).
astype('timedelta64[D]')/360 * coupon)
return df + accrued