diff options
Diffstat (limited to 'python/index_data.py')
| -rw-r--r-- | python/index_data.py | 8 |
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 |
