У меня возникли проблемы с воссозданием результатов, полученных пакетом Alphalens. В частности, функция mean_return_by_quantile дает мне результаты, отличные от функции groupby из панд.
Я воспроизвел минимальный пример, чтобы проиллюстрировать проблему:
Я создал минимальный пример, чтобы проиллюстрировать проблему
import pandas as pd
import alphalens as al
dict1 = [
{'ticker':'jpm','date': '2016-11-29','1D': 0,'factor_quantile': 1},
{ 'ticker':'ge','date': '2016-11-29','1D': 0,'factor_quantile': 1},
{'ticker':'fb', 'date': '2016-11-29','1D': 0,'factor_quantile': 1},
{'ticker':'aapl', 'date': '2016-11-29','1D': 3,'factor_quantile': 2},
{'ticker':'msft','date': '2016-11-29','1D': 3,'factor_quantile': 2},
{'ticker':'amzn','date': '2016-11-29','1D': 3,'factor_quantile': 2},
{'ticker':'jpm','date': '2016-11-30','1D': 0,'factor_quantile': 1},
{'ticker':'ge', 'date': '2016-11-30','1D':0,'factor_quantile': 1},
{'ticker':'fb','date': '2016-11-30','1D': 0,'factor_quantile': 1},
{'ticker':'aapl','date': '2016-11-30','1D': 3,'factor_quantile': 2},
{'ticker':'msft','date': '2016-11-30','1D': 3,'factor_quantile': 2},
{'ticker':'amzn','date': '2016-11-30','1D': 3,'factor_quantile': 2}
]
df1 = pd.DataFrame(dict1)
factor_data=df1.set_index(['date',"ticker"], drop=True)
# These two functions should produce the same mean by quantile
factor_data.groupby(['factor_quantile']).mean()
mean_return_by_q, std_err_by_q = al.performance.mean_return_by_quantile(factor_data)
print(mean_return_by_q)