一、Alphalens 简介
Alphalens是用于因子分析的Python工具包,是Quantopian公司旗下三大开源包之一,另外两个分别是 Zipline(回测)和Pyfolio(绩效和风险分析)。
- Github-Zipline:回测
- Github-Alphalens:因子分析
- Github-Pyfolio:绩效和风险分析
Alphalens的主要功能:
- Returns Analysis
- Information Coefficient Analysis
- Turnover Analysis
- Grouped Analysis
二、Alphalens 安装
alphalens 0.3.6
使用pip安装:
pip install alphalens
使用conda安装:
conda install -c conda-forge alphalens
三、Alphalens 使用
1、数据预处理
factor_data = utils.get_clean_factor_and_forward_returns(factor_df, price_df,
quantiles=5, bins=None,periods=(1, 5, 10, 20), max_loss=0.5)
factor_df:
price_df:
factor_data:
2、主要功能 alphalens.tears.create_full_tear_sheet
def create_full_tear_sheet(factor_data,
long_short=True,
group_neutral=False,
by_group=False):
# 因子分组统计结果
plotting.plot_quantile_statistics_table(factor_data)
# 因子收益率分析
create_returns_tear_sheet(factor_data,
long_short,
group_neutral,
by_group,
set_context=False)
# 因子IC分析
create_information_tear_sheet(factor_data,
group_neutral,
by_group,
set_context=False)
create_turnover_tear_sheet(factor_data, set_context=False)
1)因子分组统计结果
plotting.plot_quantile_statistics_table(factor_data)
生成Quantiles Statistics,因子值factor_data[‘factor’]按不同分组factor_data[‘factor_quantile’]进行统计分析。
2)因子收益率分析
create_returns_tear_sheet
def create_returns_tear_sheet(factor_data,
long_short=True,
group_neutral=False,
by_group=False):
# weights = factor_weights(factor_data, demeaned, group_adjust, equal_weight)
# weights = (factor - factor.mean())/sum(abs((factor - factor.mean())))
# 某一交易日所有股票的因子值,去中心化(factor - factor.mean())后得到权重weights
# 该交易日的factor_returns=factor_data中的收益率按照weights加权平均
# factor_returns相当于是因子值加权的收益率,其中weights和为0。
factor_returns = perf.factor_returns(factor_data,
long_short,
group_neutral)
# Compute mean returns for factor quantiles across provided forward returns columns.
# 首先,对同一横截面上的收益率去中心化处理(x - x.mean())
# 然后,对不同分组factor_quantile(level)计算去中心化收益率的均值(mean_quant_ret)和
# 标准差(std_quantile)
mean_quant_ret, std_quantile = \
perf.mean_return_by_quantile(factor_data,
by_group=False,
demeaned=long_short,