From b82150b16045ca149824d575c7a9f9e45f69704e Mon Sep 17 00:00:00 2001 From: vikram-narayan Date: Mon, 16 Apr 2018 15:18:55 -0400 Subject: [PATCH 1/2] MAINT: use int for groupby --- empyrical/perf_attrib.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/empyrical/perf_attrib.py b/empyrical/perf_attrib.py index 21571d9..68abddc 100644 --- a/empyrical/perf_attrib.py +++ b/empyrical/perf_attrib.py @@ -138,4 +138,4 @@ def compute_exposures(positions, factor_loadings): 2017-01-02 0.821872 1.520515 """ risk_exposures = factor_loadings.multiply(positions, axis='rows') - return risk_exposures.groupby(level='dt').sum() + return risk_exposures.groupby(level=0).sum() From 402decdba534ced23db33b7aa4b2490142a89369 Mon Sep 17 00:00:00 2001 From: vikram-narayan Date: Tue, 17 Apr 2018 12:32:57 -0400 Subject: [PATCH 2/2] TST: test that exposures don't depend on index name --- empyrical/tests/test_perf_attrib.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/empyrical/tests/test_perf_attrib.py b/empyrical/tests/test_perf_attrib.py index 55c7ef0..53810d9 100644 --- a/empyrical/tests/test_perf_attrib.py +++ b/empyrical/tests/test_perf_attrib.py @@ -27,7 +27,7 @@ def test_perf_attrib_simple(self): ) index = pd.MultiIndex.from_product( - [dts, tickers], names=['dt', 'ticker']) + [dts, tickers], names=['date', 'ticker']) positions = pd.Series([0.2857142857142857, 0.7142857142857143, 0.2857142857142857, 0.7142857142857143], @@ -40,8 +40,9 @@ def test_perf_attrib_simple(self): 'risk_factor2': [0.25, 0.25, 0.25, 0.25]} ) + expected_index = dts.set_names(['date']) expected_perf_attrib_output = pd.DataFrame( - index=dts, + index=expected_index, columns=['risk_factor1', 'risk_factor2', 'common_returns', 'specific_returns', 'total_returns'], data={'risk_factor1': [0.025, 0.025], @@ -52,7 +53,7 @@ def test_perf_attrib_simple(self): ) expected_exposures_portfolio = pd.DataFrame( - index=dts, + index=expected_index, columns=['risk_factor1', 'risk_factor2'], data={'risk_factor1': [0.25, 0.25], 'risk_factor2': [0.25, 0.25]} @@ -78,7 +79,7 @@ def test_perf_attrib_simple(self): factor_loadings) expected_perf_attrib_output = pd.DataFrame( - index=dts, + index=expected_index, columns=['risk_factor1', 'risk_factor2', 'common_returns', 'specific_returns', 'total_returns'], data={'risk_factor1': [0.0, 0.0], @@ -89,7 +90,7 @@ def test_perf_attrib_simple(self): ) expected_exposures_portfolio = pd.DataFrame( - index=dts, + index=expected_index, columns=['risk_factor1', 'risk_factor2'], data={'risk_factor1': [0.0, 0.0], 'risk_factor2': [0.0, 0.0]}