diff --git a/empyrical/perf_attrib.py b/empyrical/perf_attrib.py index ca4f36c..9136f90 100644 --- a/empyrical/perf_attrib.py +++ b/empyrical/perf_attrib.py @@ -158,4 +158,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() diff --git a/empyrical/tests/test_perf_attrib.py b/empyrical/tests/test_perf_attrib.py index c8277d6..223f792 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', 'total_returns', 'common_returns', 'specific_returns', 'tilt_returns', 'timing_returns'], @@ -55,7 +56,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]} @@ -81,7 +82,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', 'total_returns', 'common_returns', 'specific_returns', 'tilt_returns', 'timing_returns'], @@ -95,7 +96,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]}