API¶
alphalens API 分为四个模块:
分析报表:
alphalens.tears性能指标:
alphalens.performance绘图函数:
alphalens.plotting实用工具:
alphalens.utils
分析报告¶
Alphalens 将关键指标以主题式和总结式报表的形式整合在图表中。
-
class
alphalens.tears.GridFigure(rows, cols)¶ 基类:
object它通过网格图让生活更轻松
方法
收盘价
next_cell
next_row
-
close()¶
-
next_cell()¶
-
next_row()¶
-
-
alphalens.tears.create_event_returns_tear_sheet(factor_data, returns, avgretplot=(5, 15), long_short=True, group_neutral=False, std_bar=True, by_group=False)¶ 创建一个分析表格,用于查看因子在事件窗口(事件前后)内的平均累积收益。
- Parameters
- factor_datapd.DataFrame - MultiIndex
一个由日期(第0级)和资产(第1级)索引的多重索引序列, 包含单个alpha因子的值、该因子值所属的因子分位数/分箱以及(可选)资产所属的组别。 - 完整说明请参见utils.get_clean_factor_and_forward_returns
- returnspd.DataFrame
一个按日期索引的DataFrame,列中包含资产的每日收益率。 - 完整说明请参阅utils.get_clean_factor_and_forward_returns
- avgretplot: tuple (int, int) - (before, after)
如果不为None,则绘制分位数平均累计收益
- long_shortbool
这个计算是否应该在多空投资组合上进行?如果是的话,因子收益将在因子范围内进行去均值处理
- group_neutralbool
这个计算是否应该在组别中性投资组合上进行?如果是的话,收益去均值将在组别层面进行。
- std_barboolean, optional
显示带有标准差柱状图的图表,每个分位数对应一个
- by_groupbool
如果为True,则为每个组单独显示图表。
-
alphalens.tears.create_event_study_tear_sheet(factor_data, returns, avgretplot=(5, 15), rate_of_ret=True, n_bars=50)¶ 创建事件研究分析表,用于分析特定事件。
- Parameters
- factor_datapd.DataFrame - MultiIndex
一个以日期(第0级)和资产(第1级)为索引的多层级DataFrame,包含单个事件的值、每个周期的未来收益、因子值所属的因子分位数/分箱,以及(可选)资产所属的组别。
- returnspd.DataFrame, required only if ‘avgretplot’ is provided
一个按日期索引的DataFrame,列中包含资产的每日收益率。 - 完整说明请参阅utils.get_clean_factor_and_forward_returns
- avgretplot: tuple (int, int) - (before, after), optional
如果不为None,则在事件窗口内(事件前后)绘制事件式平均累积收益。
- rate_of_retbool, optional
在'按因子分位数的平均周期回报'和'按因子分位的周期回报'图表中显示收益率而非简单回报
- n_barsint, optional
事件分布图中的柱状图数量
-
alphalens.tears.create_full_tear_sheet(factor_data, long_short=True, group_neutral=False, by_group=False)¶ 创建完整的分析报表,用于评估单一收益预测(alpha)因子。
- Parameters
- factor_datapd.DataFrame - MultiIndex
一个以日期(第0级)和资产(第1级)为索引的多层级DataFrame,包含单个alpha因子的值、每个周期的远期收益、该因子值所属的因子分位数/分箱,以及(可选)资产所属的组别。 - 完整说明请参见utils.get_clean_factor_and_forward_returns
- long_shortbool
这个计算是否应该在多空投资组合上进行? - 关于这个标志如何影响收益分析的详细信息,请参阅tears.create_returns_tear_sheet
- group_neutralbool
该计算是否应在中性投资组合组上进行? - 有关此标志如何影响收益分析的详细信息,请参阅 tears.create_returns_tear_sheet - 有关此标志如何影响信息分析的详细信息,请参阅 tears.create_information_tear_sheet
- by_groupbool
如果为True,则为每个组单独显示图表。
-
alphalens.tears.create_information_tear_sheet(factor_data, group_neutral=False, by_group=False)¶ 创建用于因子信息分析的分析报告。
- Parameters
- factor_datapd.DataFrame - MultiIndex
一个以日期(第0级)和资产(第1级)为索引的多层级DataFrame, 包含单个alpha因子的数值、各期的远期收益率、 该因子值所属的因子分位数/分箱区间,以及(可选)资产所属的组别。 - 完整说明请参阅utils.get_clean_factor_and_forward_returns
- group_neutralbool
在计算IC前按组对远期收益进行去均值处理。
- by_groupbool
如果为True,则为每个组单独显示图表。
-
alphalens.tears.create_returns_tear_sheet(factor_data, long_short=True, group_neutral=False, by_group=False)¶ 创建用于因子收益分析的统计报表。
- Parameters
- factor_datapd.DataFrame - MultiIndex
一个以日期(第0级)和资产(第1级)为索引的多层级DataFrame, 包含单个alpha因子的值、每个周期的远期收益、 该因子值所属的因子分位数/分箱,以及(可选)资产所属的组别。 - 完整说明请参阅utils.get_clean_factor_and_forward_returns
- long_shortbool
这个计算是否应该在多空投资组合上进行?如果是的话,那么均值分位数收益将在因子范围内进行去均值处理。此外,在为累积收益图进行因子加权投资组合时,因子值也将在因子范围内进行去均值处理。
- group_neutralbool
该计算是否应在中性组合组上进行?如果是的话, 收益去均值化将在组级别进行。 此外,在累计收益图中每个组将具有相同的权重
- by_groupbool
如果为True,则为每个组单独显示图表。
-
alphalens.tears.create_summary_tear_sheet(factor_data, long_short=True, group_neutral=False)¶ 创建一个包含收益、信息和换手率分析的小型摘要报表。
- Parameters
- factor_datapd.DataFrame - MultiIndex
一个以日期(第0级)和资产(第1级)为索引的多层级DataFrame, 包含单个alpha因子的数值、各期的远期收益率、 因子值所属的因子分位数/分箱,以及(可选)资产所属的组别。 - 完整说明请参见utils.get_clean_factor_and_forward_returns
- long_shortbool
这个计算是否应该在多空投资组合上进行?如果是的话,那么平均分位数收益将在因子范围内进行去均值处理。
- group_neutralbool
该计算是否应在中性化投资组合上进行?如果是的话,收益去均值化将在分组层面进行。
-
alphalens.tears.create_turnover_tear_sheet(factor_data, turnover_periods=None)¶ 创建用于分析因子换手率特性的分析报表。
- Parameters
- factor_datapd.DataFrame - MultiIndex
一个以日期(第0级)和资产(第1级)为索引的多层级DataFrame, 包含单个alpha因子的值、每个周期的远期收益率、 该因子值所属的因子分位数/分箱,以及(可选)资产所属的组别。 - 完整说明请参阅utils.get_clean_factor_and_forward_returns
- turnover_periodssequence[string], optional
用于计算换手率分析的时间周期。默认使用'factor_data'中的周期,但也可以提供自定义周期。当'factor_data'中的周期不是因子值计算频率的整数倍时(例如周期为2小时和4小时,而因子是按日计算的),使用类似['1D', '2D']这样的值会很有帮助。
性能指标¶
模块 alphalens.performance 提供绩效和风险指标。
-
alphalens.performance.average_cumulative_return_by_quantile(factor_data, returns, periods_before=10, periods_after=15, demeaned=True, group_adjust=False, by_group=False)¶ 绘制由-periods_before到periods_after定义的周期范围内,按因子分位数的平均累积收益
- Parameters
- factor_datapd.DataFrame - MultiIndex
一个以日期(第0级)和资产(第1级)为索引的多层级DataFrame,包含单个alpha因子的值、每个周期的远期收益、该因子值所属的因子分位数/分箱,以及(可选)资产所属的组别。 - 完整说明请参见utils.get_clean_factor_and_forward_returns
- returnspd.DataFrame
一个宽格式的Pandas DataFrame,按日期索引,资产位于列中。收益率数据应跨越因子分析时间段,并额外包含与periods_after/periods_before参数对应的缓冲窗口。
- periods_beforeint, optional
绘制因子前需要多少个周期
- periods_afterint, optional
因子分析后需要绘制多少个周期的图表
- demeanedbool, optional
计算去均值后的平均收益(多空投资组合)
- group_adjustbool
将在分组层面进行去均值处理(组中性投资组合)
- by_groupbool
如果为True,则为每个分组单独计算累计收益
- Returns
- cumulative returns and std deviationpd.DataFrame
一个多级索引的DataFrame,按分位数(第0级)和均值/标准差(第1级)进行索引,列值范围从 -periods_before到periods_after 如果by_group=True,索引将额外包含'group'层级
--------------------------------------------------- | | -2 | -1 | 0 | 1 | ... --------------------------------------------------- quantile | | | | | | --------------------------------------------------- | mean | x | x | x | x | 1 --------------------------------------- | std | x | x | x | x | --------------------------------------------------- | mean | x | x | x | x | 2 --------------------------------------- | std | x | x | x | x | --------------------------------------------------- ... | ... ---------------------------------------------------
-
alphalens.performance.common_start_returns(factor, returns, before, after, cumulative=False, mean_by_date=False, demean_by=None)¶ 从因子数据框的每个索引行中提取日期和股票对,并为每对数据构建一个收益序列,该序列从该日期"之前"开始,到该对中指定的日期"之后"结束。所有这些收益序列随后会被对齐到一个共同的索引(从-之前到之后),并作为单个数据框返回。
- Parameters
- factorpd.DataFrame
DataFrame至少需要包含日期和股票作为索引,列的内容无关紧要
- returnspd.DataFrame
一个宽格式的Pandas DataFrame,按日期索引,资产位于列中。收益率数据应跨越因子分析时间段,并额外包含对应于after/before周期参数的缓冲窗口。
- before:
在因子日期前加载多少收益率数据
- after:
在因子日期后加载多少收益数据
- cumulative: bool, optional
给定的收益是否为累计值。如果为False,则假定给定的收益为日收益。
- mean_by_date: bool, optional
如果为True,则计算每个日期的平均收益并返回该值,而不是返回每个资产的收益序列
- demean_by: pd.DataFrame, optional
DataFrame至少包含日期和股票作为索引,列无关紧要。对于每个日期,会从'demean_by'索引中提取股票列表,并用作计算去均值化平均收益(多空投资组合)的股票池
- Returns
- aligned_returnspd.DataFrame
包含与相同索引对齐的每个因子收益序列的数据框:从之前到之后
-
alphalens.performance.compute_mean_returns_spread(mean_returns, upper_quant, lower_quant, std_err=None)¶ 计算两个分位数之间平均收益的差值。可选地,计算该差值的标准误差。
- Parameters
- mean_returnspd.DataFrame
按分位数划分的周期平均收益数据框。 包含日期和分位数的多级索引。 参见mean_return_by_quantile。
- upper_quantint
我们希望从中减去较低分位数平均收益的平均收益分位数。
- lower_quantint
我们希望从上层分位数平均收益中减去的平均收益分位数。
- std_errpd.DataFrame, optional
按分位数划分的周期平均收益率标准误差。 与mean_returns采用相同形式。
- Returns
- mean_return_differencepd.Series
分位数收益的周期差异。
- joint_std_errpd.Series
分位数收益差异的周期标准误差。 如果std_err为None,则此值也为None
-
alphalens.performance.create_pyfolio_input(factor_data, period, capital=None, long_short=True, group_neutral=False, equal_weight=False, quantiles=None, groups=None, benchmark_period='1D')¶ 使用输入因子模拟投资组合,并返回经过适当格式化的投资组合表现数据,以便进行Pyfolio分析。
有关该投资组合构建的更多详情请参阅: - performance.cumulative_returns(投资组合收益的计算方式) - performance.factor_weights(资产权重的计算方式)
- Parameters
- factor_datapd.DataFrame - MultiIndex
一个以日期(第0级)和资产(第1级)为索引的多层级DataFrame, 包含单个alpha因子的值、每个周期的远期收益、 该因子值所属的因子分位数/分箱,以及(可选)资产所属的组别。 - 完整说明请参阅utils.get_clean_factor_and_forward_returns
- periodstring
'factor_data'列名对应用于计算投资组合收益的'period'收益
- capitalfloat, optional
如果设置,则以美元金额而非百分比计算'positions'
- long_shortbool, optional
如果为True,则强制构建美元中性多空投资组合:资产权重将通过去除因子值均值并除以其绝对值之和来计算(实现总杠杆率为1),这将导致投资组合同时持有做多和做空头寸,且多头和空头头寸的总权重相等。 如果为False,投资组合权重将通过将因子值除以其绝对值之和来计算(实现总杠杆率为1)。正因子值将产生多头头寸,负因子值将产生空头头寸,因此仅含正值的因子将导致纯多头投资组合。
- group_neutralbool, optional
如果为True,则模拟一个组别中性投资组合:计算投资组合权重时,将确保每个组别的权重相同。 如果启用了'long_short'选项,因子值去均值化将在组别层面进行,从而形成一个美元中性、组别中性、多空对冲的投资组合。 如果为False,则权重计算时将不使用组别信息。
- equal_weightbool, optional
如果为True,资产将采用等权重配置。如果long_short为True,则因子投资组合将被平分为两组:排名靠前的资产做多,排名靠后的资产做空。如果为False,资产将采用因子加权配置,参见'long_short'参数
- quantiles: sequence[int], optional
在计算中仅使用特定的分位数。默认情况下会使用所有分位数
- groups: sequence[string], optional
在计算中仅使用特定分组。默认情况下会使用所有分组
- benchmark_periodstring, optional
默认情况下,基准收益计算为因子宇宙的日均收益,但'benchmark_period'参数允许选择'factor_data'中对应的收益列用于基准收益计算。更广义地说,基准收益是按照'benchmark_period'指定频率交易的因子宇宙收益计算得出,采用等权重且仅做多策略。
- Returns
- returnspd.Series
- Daily returns of the strategy, noncumulative.
包含小数收益的时间序列。
- 示例:
2015-07-16 -0.012143 2015-07-17 0.045350 2015-07-20 0.030957 2015-07-21 0.004902
- positionspd.DataFrame
每个持仓和现金中投资的美元金额时间序列(当未提供'capital'参数时显示百分比)。
股票未持仓的天数可以用0表示。
非营运资金被标记为‘现金’
- 示例:
指数 'AAPL' 'MSFT' 现金 2004-01-09 13939.3800 -14012.9930 711.5585 2004-01-12 14492.6300 -14624.8700 27.1821 2004-01-13 -13853.2800 13653.6400 -43.6375
- benchmarkpd.Series
基准收益计算为因子投资组合的日均收益率。
-
alphalens.performance.cumulative_returns(returns)¶ 根据每日简单收益率计算累计收益率。
- Parameters
- returns: pd.Series
包含每日因子收益(即'1D'收益率)的pd.Series。
- Returns
- Cumulative returns seriespd.Series
- Example:
2015-01-05 1.001310 2015-01-06 1.000805 2015-01-07 1.001092 2015-01-08 0.999200
-
alphalens.performance.factor_alpha_beta(factor_data, returns=None, demeaned=True, group_adjust=False, equal_weight=False)¶ 计算因子的阿尔法(超额收益)、阿尔法t统计量(阿尔法显著性)和贝塔(市场敞口)。通过回归分析,以按周期划分的因子全市场平均收益作为自变量,以按因子值加权的投资组合周期平均收益作为因变量。
- Parameters
- factor_datapd.DataFrame - MultiIndex
一个以日期(第0级)和资产(第1级)为索引的多层级DataFrame,包含单个alpha因子的值、每个周期的远期收益、该因子值所属的因子分位数/分箱,以及(可选)资产所属的组别。 - 完整说明请参见utils.get_clean_factor_and_forward_returns
- returnspd.DataFrame, optional
按周期计算因子收益。如果为None,则会使用'factor_returns'函数计算,并传入以下参数:'demeaned'(去均值)、'group_adjust'(组调整)、'equal_weight'(等权重)
- demeanedbool
控制如何构建用于阿尔法/贝塔计算的因素收益 - 完整说明请参阅performance.factor_return
- group_adjustbool
控制如何构建用于阿尔法/贝塔计算的因素收益 - 完整说明请参阅performance.factor_return
- equal_weightbool, optional
控制如何构建用于阿尔法/贝塔计算的因素收益 - 完整说明请参阅performance.factor_return
- Returns
- alpha_betapd.Series
一个包含给定因子和远期收益的alpha、beta和t统计量(alpha)的列表。
-
alphalens.performance.factor_cumulative_returns(factor_data, period, long_short=True, group_neutral=False, equal_weight=False, quantiles=None, groups=None)¶ 使用输入因子模拟投资组合,并返回模拟投资组合的累计收益
- Parameters
- factor_datapd.DataFrame - MultiIndex
一个以日期(第0级)和资产(第1级)为索引的多层级DataFrame, 包含单个alpha因子的值、每个周期的远期收益、 该因子值所属的因子分位数/分箱,以及(可选)资产所属的组别。 - 完整说明请参阅utils.get_clean_factor_and_forward_returns
- periodstring
'factor_data'列名对应用于计算投资组合收益的'period'收益
- long_shortbool, optional
如果为True则模拟一个美元中性多空投资组合 - 更多详情请参阅performance.create_pyfolio_input
- group_neutralbool, optional
如果为True则模拟一个中性投资组合 - 更多详情请参阅performance.create_pyfolio_input
- equal_weightbool, optional
控制资产权重: - 更多详情请参阅performance.create_pyfolio_input
- quantiles: sequence[int], optional
在计算中仅使用特定的分位数。默认情况下会使用所有分位数
- groups: sequence[string], optional
在计算中仅使用特定分组。默认情况下会使用所有分组
- Returns
- Cumulative returns seriespd.Series
- Example:
2015-07-16 09:30:00 -0.012143 2015-07-16 12:30:00 0.012546 2015-07-17 09:30:00 0.045350 2015-07-17 12:30:00 0.065897 2015-07-20 09:30:00 0.030957
-
alphalens.performance.factor_information_coefficient(factor_data, group_adjust=False, by_group=False)¶ 计算因子值与因子索引中每个周期N期远期收益之间的斯皮尔曼秩相关系数信息系数(IC)。
- Parameters
- factor_datapd.DataFrame - MultiIndex
一个以日期(第0级)和资产(第1级)为索引的多层级DataFrame,包含单个alpha因子的值、每个周期的远期收益、该因子值所属的因子分位数/分箱,以及(可选)资产所属的组别。 - 完整说明请参见utils.get_clean_factor_and_forward_returns
- group_adjustbool
在计算IC前按组对远期收益进行去均值处理。
- by_groupbool
如果为True,则为每个分组单独计算周期性的IC。
- Returns
- icpd.DataFrame
因子与提供的远期收益之间的斯皮尔曼等级相关系数。
-
alphalens.performance.factor_positions(factor_data, period, long_short=True, group_neutral=False, equal_weight=False, quantiles=None, groups=None)¶ 使用输入因子模拟投资组合,返回各资产头寸占总投资组合的百分比。
- Parameters
- factor_datapd.DataFrame - MultiIndex
一个以日期(第0级)和资产(第1级)为索引的多层级DataFrame, 包含单个alpha因子的值、每个周期的远期收益、 该因子值所属的因子分位数/分箱,以及(可选)资产所属的组别。 - 完整说明请参阅utils.get_clean_factor_and_forward_returns
- periodstring
'factor_data'列名对应用于计算投资组合收益的'period'收益
- long_shortbool, optional
如果为True则模拟一个美元中性多空投资组合 - 详情请参阅performance.create_pyfolio_input
- group_neutralbool, optional
如果为True则模拟一个组别中性投资组合 - 更多详情请参阅performance.create_pyfolio_input
- equal_weightbool, optional
控制资产权重: - 更多详情请参阅performance.create_pyfolio_input。
- quantiles: sequence[int], optional
在计算中仅使用特定的分位数。默认情况下会使用所有分位数
- groups: sequence[string], optional
在计算中仅使用特定分组。默认情况下会使用所有分组
- Returns
- assets positionspd.DataFrame
资产持仓序列,索引为日期时间,列为资产名称。 示例:
指数 'AAPL' 'MSFT' 现金 2004-01-09 10:30:00 13939.3800 -14012.9930 711.5585 2004-01-09 15:30:00 0.00 -16012.9930 411.5585 2004-01-12 10:30:00 14492.6300 -14624.8700 0.0 2004-01-12 15:30:00 14874.5400 -15841.2500 0.0 2004-01-13 10:30:00 -13853.2800 13653.6400 -43.6375
-
alphalens.performance.factor_rank_autocorrelation(factor_data, period=1)¶ 计算指定时间跨度内因子平均排名的自相关性。 我们需要比较不同周期之间的因子排名而非因子值, 以考虑所有股票或组内股票因子值的系统性变化。 该指标有助于衡量因子的换手率。 如果每只股票的因子值在不同周期间随机变化, 我们预期的自相关性应为0。
- Parameters
- factor_datapd.DataFrame - MultiIndex
一个以日期(第0级)和资产(第1级)为索引的多层级DataFrame,包含单个alpha因子的值、每个周期的远期收益、该因子值所属的因子分位数/分箱,以及(可选)资产所属的组别。 - 完整说明请参见utils.get_clean_factor_and_forward_returns
- period: int, optional
计算换手率的天数。
- Returns
- autocorrpd.Series
因子值的滚动1周期(由time_rule定义)自相关性。
-
alphalens.performance.factor_returns(factor_data, demeaned=True, group_adjust=False, equal_weight=False, by_asset=False)¶ 计算按因子值加权的投资组合的周期性收益。
- Parameters
- factor_datapd.DataFrame - MultiIndex
一个以日期(第0级)和资产(第1级)为索引的多层级DataFrame,包含单个alpha因子的值、每个周期的远期收益、该因子值所属的因子分位数/分箱,以及(可选)资产所属的组别。 - 完整说明请参见utils.get_clean_factor_and_forward_returns
- demeanedbool
控制如何构建因子权重 - 完整说明请参阅performance.factor_weights
- group_adjustbool
控制如何构建因子权重 – 完整说明请参阅performance.factor_weights
- equal_weightbool, optional
控制如何构建因子权重 – 完整说明请参阅performance.factor_weights
- by_asset: bool, optional
如果为True,将为每个资产单独报告收益。
- Returns
- returnspd.DataFrame
按周期的因子收益
-
alphalens.performance.factor_weights(factor_data, demeaned=True, group_adjust=False, equal_weight=False)¶ 通过因子值计算资产权重,并除以其绝对值的总和(实现总杠杆率为1)。正因子值将产生正权重,负值则产生负权重。
- Parameters
- factor_datapd.DataFrame - MultiIndex
一个以日期(第0级)和资产(第1级)为索引的多层级DataFrame,包含单个alpha因子的值、每个周期的远期收益、该因子值所属的因子分位数/分箱,以及(可选)资产所属的组别。 - 完整说明请参见utils.get_clean_factor_and_forward_returns
- demeanedbool
这个计算是否应该在多空投资组合上进行?如果为True, 权重将通过去均值化因子值并除以其绝对值之和来计算(实现总杠杆率为1)。 正权重的总和将与负权重(绝对值)相同,适用于美元中性多空投资组合
- group_adjustbool
该计算是否应在组中性投资组合上进行?如果为True, 则计算组中性权重:每组权重相同, 若启用'demeaned'选项,因子值去均值操作将在组级别进行。
- equal_weightbool, optional
如果为True,资产将采用等权重而非因子加权 如果demeaned为True,因子投资组合将被平分为两组: 权重为正的头部资产和权重为负的尾部资产
- Returns
- returnspd.Series
按因子值加权的资产。
-
alphalens.performance.mean_information_coefficient(factor_data, group_adjust=False, by_group=False, by_time=None)¶ 获取指定分组的平均信息系数(IC)。 回答类似以下问题: 每个月的平均IC是多少? 在整个时间范围内,每个分组的平均IC是多少? 每周每个分组的平均IC是多少?
- Parameters
- factor_datapd.DataFrame - MultiIndex
一个以日期(第0级)和资产(第1级)为索引的多层级DataFrame,包含单个alpha因子的值、每个周期的远期收益、该因子值所属的因子分位数/分箱,以及(可选)资产所属的组别。 - 完整说明请参见utils.get_clean_factor_and_forward_returns
- group_adjustbool
在计算IC前按组对远期收益进行去均值处理。
- by_groupbool
如果为True,则计算每组的平均IC值。
- by_timestr (pd time_rule), optional
Time window to use when taking mean IC. See http://pandas.pydata.org/pandas-docs/stable/timeseries.html for available options.
- Returns
- icpd.DataFrame
因子与提供的远期价格变动窗口之间的平均斯皮尔曼等级相关系数。
-
alphalens.performance.mean_return_by_quantile(factor_data, by_date=False, by_group=False, demeaned=True, group_adjust=False)¶ 计算因子分位数在提供的远期收益列上的平均收益。
- Parameters
- factor_datapd.DataFrame - MultiIndex
一个以日期(第0级)和资产(第1级)为索引的多层级DataFrame,包含单个alpha因子的值、每个周期的远期收益、该因子值所属的因子分位数/分箱,以及(可选)资产所属的组别。 - 完整说明请参见utils.get_clean_factor_and_forward_returns
- by_datebool
如果为True,则为每个日期单独计算分位数桶收益。
- by_groupbool
如果为True,则为每个分组单独计算分位数桶收益。
- demeanedbool
计算去均值后的平均收益(多空投资组合)
- group_adjustbool
去均值化将在组别层面进行。
- Returns
- mean_retpd.DataFrame
按指定因子分位数计算的各期平均收益。
- std_error_retpd.DataFrame
按指定分位数计算的收益标准误差。
-
alphalens.performance.positions(weights, period, freq=None)¶ 构建净持仓值时间序列,即投资组合中每个持仓所占的百分比。
- Parameters
- weights: pd.Series
包含因子权重的pd.Series,索引包含计算交易的时间戳,数值对应资产权重 - 更多详情请参阅factor_weights
- period: pandas.Timedelta or string
资产持有周期(1天、2分钟、3小时等)。可以是Timedelta对象,或是Timedelta构造函数接受的格式字符串('1 days'、'1D'、'30m'、'3h'、'1D1h'等)
- freqpandas DateOffset, optional
用于指定特定的交易日历。如果未提供,将使用weights.index.freq
- Returns
- pd.DataFrame
资产持仓序列,索引为日期时间,列为资产名称。 示例:
指数 'AAPL' 'MSFT' 现金 2004-01-09 10:30:00 13939.3800 -14012.9930 711.5585 2004-01-09 15:30:00 0.00 -16012.9930 411.5585 2004-01-12 10:30:00 14492.6300 -14624.8700 0.0 2004-01-12 15:30:00 14874.5400 -15841.2500 0.0 2004-01-13 10:30:00 -13853.2800 13653.6400 -43.6375
-
alphalens.performance.quantile_turnover(quantile_factor, quantile, period=1)¶ 计算因子分位数中当前不在上一时期同一分位数的名称所占比例。
- Parameters
- quantile_factorpd.Series
包含日期、资产和因子分位数的DataFrame。
- quantileint
用于执行换手率分析的分位数。
- period: int, optional
计算换手率的天数。
- Returns
- quant_turnoverpd.Series
该分位数在每期的换手率。
绘图函数¶
模块 alphalens.plotting 便于性能指标的可视化展示。
-
alphalens.plotting.customize(func)¶ 装饰器,用于在函数调用期间设置绘图上下文和坐标轴样式。
-
alphalens.plotting.plot_cumulative_returns(factor_returns, period, freq=None, title=None, ax=None)¶ 绘制传入收益序列的累计收益图。
- Parameters
- factor_returnspd.Series
按因子值加权的美元中性投资组合的周期回报率。
- periodpandas.Timedelta or string
计算收益的时间周期长度(例如1天) 如果'period'是字符串,必须遵循pandas.Timedelta构造器 格式(例如'1 days', '1D', '30m', '3h', '1D1h'等)
- freqpandas DateOffset
用于指定特定的交易日历,例如BusinessDay或Day 通常这会从utils.infer_trading_calendar中推断得出,该函数由get_clean_factor_and_forward_returns或compute_forward_returns调用
- title: string, optional
自定义标题
- axmatplotlib.Axes, optional
绘制坐标轴。
- Returns
- axmatplotlib.Axes
绘制图表所用的坐标轴。
-
alphalens.plotting.plot_cumulative_returns_by_quantile(quantile_returns, period, freq=None, ax=None)¶ 绘制不同因子分位数的累计收益曲线。
- Parameters
- quantile_returnspd.DataFrame
按因子分位数的收益
- periodpandas.Timedelta or string
计算收益的时间周期长度(例如1天) 如果'period'是字符串,必须遵循pandas.Timedelta构造器 格式(例如'1 days', '1D', '30m', '3h', '1D1h'等)
- freqpandas DateOffset
用于指定特定的交易日历,例如BusinessDay或Day 通常这会从utils.infer_trading_calendar中推断得出,该函数由get_clean_factor_and_forward_returns或compute_forward_returns调用
- axmatplotlib.Axes, optional
绘制坐标轴。
- Returns
- axmatplotlib.Axes
-
alphalens.plotting.plot_events_distribution(events, num_bars=50, ax=None)¶ 绘制事件随时间分布的图表。
- Parameters
- eventspd.Series
一个pd.Series,其索引至少包含'date'层级。
- num_barsinteger, optional
要绘制的柱状图数量
- axmatplotlib.Axes, optional
绘制坐标轴。
- Returns
- axmatplotlib.Axes
-
alphalens.plotting.plot_factor_rank_auto_correlation(factor_autocorrelation, period=1, ax=None)¶ 绘制因子排名自相关性随时间变化的图表。 更多详情请参阅factor_rank_autocorrelation。
- Parameters
- factor_autocorrelationpd.Series
因子值的滚动1周期(由time_rule定义)自相关性。
- period: int, optional
计算自相关的时间周期
- axmatplotlib.Axes, optional
绘制坐标轴。
- Returns
- axmatplotlib.Axes
绘制图表所用的坐标轴。
-
alphalens.plotting.plot_ic_by_group(ic_group, ax=None)¶ 绘制给定因子在指定远期收益率上的斯皮尔曼秩相关系数(信息系数)。按组别分别展示。
- Parameters
- ic_grouppd.DataFrame
按组别计算的周期平均回报。
- axmatplotlib.Axes, optional
绘制坐标轴。
- Returns
- axmatplotlib.Axes
绘制图表所用的坐标轴。
-
alphalens.plotting.plot_ic_hist(ic, ax=None)¶ 绘制给定因子的斯皮尔曼秩信息系数直方图。
- Parameters
- icpd.DataFrame
按日期索引的DataFrame,包含每个远期收益的IC值。
- axmatplotlib.Axes, optional
绘制坐标轴。
- Returns
- axmatplotlib.Axes
绘制图表所用的坐标轴。
-
alphalens.plotting.plot_ic_qq(ic, theoretical_dist=<scipy.stats._continuous_distns.norm_gen object>, ax=None)¶ 绘制Spearman秩信息系数"Q-Q"图相对于理论分布。
- Parameters
- icpd.DataFrame
按日期索引的DataFrame,包含每个远期收益的IC值。
- theoretical_distscipy.stats._continuous_distns
连续分布生成器。scipy.stats.norm和scipy.stats.t是常用选项。
- axmatplotlib.Axes, optional
绘制坐标轴。
- Returns
- axmatplotlib.Axes
绘制图表所用的坐标轴。
-
alphalens.plotting.plot_ic_ts(ic, ax=None)¶ 绘制给定因子的斯皮尔曼秩信息系数(IC)及其移动平均值。
- Parameters
- icpd.DataFrame
按日期索引的DataFrame,包含每个远期收益的IC值。
- axmatplotlib.Axes, optional
绘制坐标轴。
- Returns
- axmatplotlib.Axes
绘制图表所用的坐标轴。
-
alphalens.plotting.plot_information_table(ic_data)¶
-
alphalens.plotting.plot_mean_quantile_returns_spread_time_series(mean_returns_spread, std_err=None, bandwidth=1, ax=None)¶ 绘制因子分位数的周期平均收益。
- Parameters
- mean_returns_spreadpd.Series
按时间段显示分位数平均收益差异的序列。
- std_errpd.Series
显示各分位数均值收益差异标准误的时间序列。
- bandwidthfloat
显示误差带的宽度(以标准差为单位)。
- axmatplotlib.Axes, optional
绘制坐标轴。
- Returns
- axmatplotlib.Axes
绘制图表所用的坐标轴。
-
alphalens.plotting.plot_monthly_ic_heatmap(mean_monthly_ic, ax=None)¶ 绘制信息系数或月度收益的热力图。
- Parameters
- mean_monthly_icpd.DataFrame
未来N个周期的平均月度信息系数(IC)。
- Returns
- axmatplotlib.Axes
绘制图表所用的坐标轴。
-
alphalens.plotting.plot_quantile_average_cumulative_return(avg_cumulative_returns, by_quantile=False, std_bar=False, title=None, ax=None)¶ 绘制各因子分位数在不同前瞻价格变动列中的行业平均日收益率。
- Parameters
- avg_cumulative_returns: pd.Dataframe
该格式是由 performance.average_cumulative_return_by_quantile 返回的
- by_quantileboolean, optional
按分位数拆分的统计图表(有助于清晰显示标准差柱状图)
- std_barboolean, optional
绘制标准差图表
- title: string, optional
自定义标题
- axmatplotlib.Axes, optional
绘制坐标轴。
- Returns
- axmatplotlib.Axes
-
alphalens.plotting.plot_quantile_returns_bar(mean_ret_by_q, by_group=False, ylim_percentiles=None, ax=None)¶ 绘制因子分位数的周期平均收益。
- Parameters
- mean_ret_by_qpd.DataFrame
包含分位数、(分组)和期间平均回报值的DataFrame。
- by_groupbool
按组别分类的明细数据。
- ylim_percentilestuple of integers
用作绘图y轴限制的观测数据百分位数。
- axmatplotlib.Axes, optional
绘制坐标轴。
- Returns
- axmatplotlib.Axes
绘制图表所用的坐标轴。
-
alphalens.plotting.plot_quantile_returns_violin(return_by_q, ylim_percentiles=None, ax=None)¶ 绘制按因子分位数分组后各期间收益的小提琴箱线图。
- Parameters
- return_by_qpd.DataFrame - MultiIndex
DataFrame数据框,以日期和分位数作为行多级索引,
以未来收益窗口作为列,以收益作为值。- ylim_percentilestuple of integers
用作绘图y轴限制的观测数据百分位数。
- axmatplotlib.Axes, optional
绘制坐标轴。
- Returns
- axmatplotlib.Axes
绘制图表所用的坐标轴。
-
alphalens.plotting.plot_quantile_statistics_table(factor_data)¶
-
alphalens.plotting.plot_returns_table(alpha_beta, mean_ret_quantile, mean_ret_spread_quantile)¶
-
alphalens.plotting.plot_top_bottom_quantile_turnover(quantile_turnover, period=1, ax=None)¶ 按周期绘制最高和最低分位数因子换手率。
- Parameters
- quantile_turnover: pd.Dataframe
分位数换手率(DataFrame每列代表一个分位数)。
- period: int, optional
计算换手率的时间周期。
- axmatplotlib.Axes, optional
绘制坐标轴。
- Returns
- axmatplotlib.Axes
绘制图表所用的坐标轴。
-
alphalens.plotting.plot_turnover_table(autocorrelation_data, quantile_turnover)¶
实用工具¶
模块 alphalens.utils 包含辅助函数,例如将因子数据格式化为所需的输入格式。
-
exception
alphalens.utils.MaxLossExceededError¶ 基类:
Exception
-
exception
alphalens.utils.NonMatchingTimezoneError¶ 基类:
Exception
-
alphalens.utils.add_custom_calendar_timedelta(input, timedelta, freq)¶ 将时间增量添加到'input'时需考虑自定义频率,该功能用于处理自定义日历(如交易日历)
- Parameters
- inputpd.DatetimeIndex or pd.Timestamp
- timedeltapd.Timedelta
- freqpd.DataOffset (CustomBusinessDay, Day or BusinessDay)
- Returns
- pd.DatetimeIndex or pd.Timestamp
输入 + 时间增量
-
alphalens.utils.backshift_returns_series(series, N)¶ 将多索引序列在第一层级上向后移动N个观测值。
这可用于将回溯收益率转换为前瞻收益率序列。
-
alphalens.utils.compute_forward_returns(factor, prices, periods=(1, 5, 10), filter_zscore=None, cumulative_returns=True)¶ 计算每个资产提供的N周期远期收益率(以百分比变化表示)。
- Parameters
- factorpd.Series - MultiIndex
一个由时间戳(第0级)和资产(第1级)索引的多层级Series,包含单个alpha因子的值。
完整说明请参阅 utils.get_clean_factor_and_forward_returns
- pricespd.DataFrame
用于远期价格计算的定价数据。 资产作为列,日期作为索引。定价数据必须 覆盖因子分析时间段加上一个额外的缓冲窗口, 该窗口需大于远期收益计算中的最大预期期数。
- periodssequence[int]
计算未来收益的周期数。
- filter_zscoreint or float, optional
将超过平均值X个标准差的远期收益率设为nan(空值)。设置为'None'可避免过滤。 注意:此异常值过滤方法包含前瞻性偏差。
- cumulative_returnsbool, optional
如果为True,远期收益列将包含累计收益。 当您想分析某个因子对单日远期收益的预测能力时,将此设为False会很有用。
- Returns
- forward_returnspd.DataFrame - MultiIndex
一个以时间戳(第0级)和资产(第1级)为索引的多层级DataFrame,包含资产的未来收益率。 未来收益率列名遵循pd.Timedelta接受的格式(例如'1D'、'30m'、'3h15m'、'1D1h'等)。 'date'索引的频率属性(forward_returns.index.levels[0].freq)将被设置为从输入数据推断出的交易日历(pandas DateOffset) (更多细节请参见infer_trading_calendar)。
-
alphalens.utils.demean_forward_returns(factor_data, grouper=None)¶ 将远期收益转换为相对于平均值的收益 按周期计算全市场或分组收益。 分组归一化包含了组中性投资组合约束的假设, 因此允许因子在不同组别间进行评估。
例如,如果苹果公司(AAPL)的5周期收益率为0.1%,而同期我们投资组合中科技股的平均5周期收益率为0.5%,那么苹果公司本期的组调整后5周期收益率就是-0.4%。
- Parameters
- factor_datapd.DataFrame - MultiIndex
按日期和资产索引的前向收益。 每个前向收益窗口对应单独的列。
- grouperlist
如果为True,则按组进行去均值处理。
- Returns
- adjusted_forward_returnspd.DataFrame - MultiIndex
与输入格式相同的DataFrame,但每个证券的收益已按组别进行了标准化处理。
-
alphalens.utils.diff_custom_calendar_timedeltas(start, end, freq)¶ 计算两个pd.Timedelta之间的差值,需考虑自定义频率,该功能用于处理自定义日历(例如交易日历)
- Parameters
- startpd.Timestamp
- endpd.Timestamp
- freqCustomBusinessDay (see infer_trading_calendar)
- freqpd.DataOffset (CustomBusinessDay, Day or BDay)
- Returns
- pd.Timedelta
结束 - 开始
-
alphalens.utils.get_clean_factor(factor, forward_returns, groupby=None, binning_by_group=False, quantiles=5, bins=None, groupby_labels=None, max_loss=0.35, zero_aware=False)¶ 将因子数据、远期收益数据和分组映射格式化为一个包含时间戳和资产对齐多级索引的DataFrame。返回的数据将被格式化为适合Alphalens函数使用的形式。
即使不调用此函数,只要因子数据符合从get_clean_factor_and_forward_returns返回的格式并符合此处文档要求,仍可安全使用Alphalens功能
- Parameters
- factorpd.Series - MultiIndex
一个由时间戳(第0级)和资产(第1级)索引的多层级Series,包含单个alpha因子的值。
----------------------------------- date | asset | ----------------------------------- | AAPL | 0.5 ----------------------- | BA | -1.1 ----------------------- 2014-01-01 | CMG | 1.7 ----------------------- | DAL | -0.1 ----------------------- | LULU | 2.7 -----------------------
- forward_returnspd.DataFrame - MultiIndex
一个以时间戳(第0级)和资产(第1级)为索引的多层级DataFrame,包含资产的未来收益。 未来收益列名必须遵循pd.Timedelta接受的格式(例如'1D'、'30m'、'3h15m'、'1D1h'等)。 'date'索引的频率属性必须设置为交易日历(pandas DateOffset),详情请参阅infer_trading_calendar。 此信息目前仅用于累计收益计算
--------------------------------------- | | 1D | 5D | 10D --------------------------------------- date | asset | | | --------------------------------------- | AAPL | 0.09|-0.01|-0.079 ---------------------------- | BA | 0.02| 0.06| 0.020 ---------------------------- 2014-01-01 | CMG | 0.03| 0.09| 0.036 ---------------------------- | DAL |-0.02|-0.06|-0.029 ---------------------------- | LULU |-0.03| 0.05|-0.009 ----------------------------
- groupbypd.Series - MultiIndex or dict
可以是一个按日期和资产建立的多重索引Series,包含每个资产的周期性分组代码;也可以是一个资产到分组映射的字典。如果传入的是字典,则假定在整个因子数据的时间段内分组映射保持不变。
- binning_by_groupbool
如果为True,则为每个分组单独计算分位数区间。 当因子值在不同分组间差异较大时,这非常有用, 此时采用分组相对分箱更为合理。 如果因子需要用于分析中性投资组合, 建议启用此选项。
- quantilesint or sequence[float]
在因子分桶中使用的等分位数桶数量。 或者也可以指定不等分位数的序列, 例如 [0, .10, .5, .90, 1.] 或 [.05, .5, .95] 注意:'quantiles'和'bins'参数只能有一个为非None值
- binsint or sequence[float]
在因子分箱中使用的等宽(按数值)分箱数量。 或者可以指定非均匀宽度的分箱边界序列 例如 [-4, -2, -0.5, 0, 10] 根据数值本身选择等间距的分箱区间。 当因子包含离散值时特别有用。 'quantiles'和'bins'参数只能有一个不为None
- groupby_labelsdict
一个以组代码为键的字典,其值对应每个组的显示名称。
- max_lossfloat, optional
允许丢弃因子数据的最大百分比(0.00到1.00),通过比较输入因子索引中的项目数和输出DataFrame索引中的项目数计算得出。 因子数据可能因自身存在缺陷(如NaN值)、未提供足够的价格数据来计算所有因子值的远期收益,或无法执行分箱操作而被部分丢弃。 设置max_loss=0可避免异常抑制。
- zero_awarebool, optional
如果为True,则分别对正负信号值计算分位数桶。当您的信号以零为中心且零值分别作为多头和空头信号的分界点时,此功能特别有用。前提是'quantiles'参数为None。
- Returns
- merged_datapd.DataFrame - MultiIndex
一个由日期(第0级)和资产(第1级)索引的多重索引序列,包含单个alpha因子的值、每个周期的远期收益、该因子值所属的因子分位数/分箱,以及(可选)资产所属的组别。
远期收益列名遵循pd.Timedelta接受的格式(例如'1D'、'30m'、'3h15m'、'1D1h'等)
'date'索引频率属性(merged_data.index.levels[0].freq)与输入的前向收益数据相同。目前仅用于累计收益计算
-
alphalens.utils.get_clean_factor_and_forward_returns(factor, prices, groupby=None, binning_by_group=False, quantiles=5, bins=None, periods=(1, 5, 10), filter_zscore=20, groupby_labels=None, max_loss=0.35, zero_aware=False, cumulative_returns=True)¶ 将因子数据、价格数据和分组映射格式化为一个包含时间戳和资产对齐多级索引的DataFrame。返回的数据将被格式化为适合Alphalens函数使用的形式。
即使不调用此函数,只要因子数据符合从get_clean_factor_and_forward_returns返回的格式并符合此处文档要求,仍可安全使用Alphalens功能
- Parameters
- factorpd.Series - MultiIndex
一个由时间戳(第0级)和资产(第1级)索引的多层级Series,包含单个alpha因子的值。
----------------------------------- date | asset | ----------------------------------- | AAPL | 0.5 ----------------------- | BA | -1.1 ----------------------- 2014-01-01 | CMG | 1.7 ----------------------- | DAL | -0.1 ----------------------- | LULU | 2.7 -----------------------
- pricespd.DataFrame
一个宽格式的Pandas DataFrame,以时间戳为索引,资产作为列名。 价格数据必须覆盖因子分析时间段,并额外包含一个大于预期最大前向收益计算周期的缓冲窗口。 根据信号生成的时间段传递正确的价格数据至关重要,以避免前瞻性偏差或延迟计算。 '价格'数据必须至少包含'因子'中每个时间戳/资产组合的对应条目。该条目应反映资产的买入价格,通常是因子计算后的第一个可用价格,但如果因子计划在稍后交易(例如因子在开盘时计算但在一小时后交易),则可以是更晚的价格(此时价格信息应为开盘后一小时的数据)。 '价格'数据还必须包含'因子'中每个时间戳/资产组合之后的若干时间戳条目,数量至少等于'periods'参数的最大值。在计算'period'前向收益时,'period'个时间戳后的资产价格将被视为该资产的卖出价格。
---------------------------------------------------- | AAPL | BA | CMG | DAL | LULU | ---------------------------------------------------- Date | | | | | | ---------------------------------------------------- 2014-01-01 |605.12| 24.58| 11.72| 54.43 | 37.14 | ---------------------------------------------------- 2014-01-02 |604.35| 22.23| 12.21| 52.78 | 33.63 | ---------------------------------------------------- 2014-01-03 |607.94| 21.68| 14.36| 53.94 | 29.37 | ----------------------------------------------------
- groupbypd.Series - MultiIndex or dict
可以是一个按日期和资产建立的多重索引Series,包含每个资产的周期性分组代码;也可以是一个资产到分组映射的字典。如果传入的是字典,则假定在整个因子数据的时间段内分组映射保持不变。
- binning_by_groupbool
如果为True,则为每个分组单独计算分位数区间。 当因子值在不同组间差异较大时,这非常有用, 此时明智的做法是使分箱相对于组内进行。 如果因子旨在用于分析组中性投资组合,您可能需要启用此选项
- quantilesint or sequence[float]
在因子分桶中使用等分位数桶的数量。 或者指定不等分位数的序列, 例如 [0, .10, .5, .90, 1.] 或 [.05, .5, .95] 注意:'quantiles'和'bins'参数只能有一个为非None值
- binsint or sequence[float]
在因子分箱中使用的等宽(按数值)分箱数量。 或者可以指定非均匀宽度的分箱边界序列, 例如 [-4, -2, -0.5, 0, 10] 根据数值本身选择等间距的分箱。 当因子包含离散值时特别有用。 'quantiles'和'bins'参数中只能有一个为非空值
- periodssequence[int]
计算未来收益的周期数。
- filter_zscoreint or float, optional
将超过平均值X个标准差的远期收益率设为nan(空值)。设置为'None'可避免过滤。 注意:此异常值过滤方法包含前瞻性偏差。
- groupby_labelsdict
一个以组代码为键的字典,其值对应每个组的显示名称。
- max_lossfloat, optional
允许丢弃因子数据的最大百分比(0.00到1.00),通过比较输入因子索引中的项目数和输出DataFrame索引中的项目数计算得出。 因子数据可能因自身存在缺陷(如NaN值)、未提供足够的价格数据来计算所有因子值的远期收益,或无法执行分箱操作而被部分丢弃。 设置max_loss=0可避免异常抑制。
- zero_awarebool, optional
如果为True,则分别对正负信号值计算分位数桶。当您的信号以零为中心且零值分别作为多头和空头信号的分界点时,此功能非常有用。
- cumulative_returnsbool, optional
如果为True,远期收益列将包含累计收益。 如果您想分析某个因子对单日远期收益的预测能力,将此设为False会很有用。
- Returns
- merged_datapd.DataFrame - MultiIndex
一个由日期(第0级)和资产(第1级)索引的多重索引序列, 包含单个alpha因子的值、每个周期的远期收益、 该因子值所属的因子分位数/分箱,以及(可选)资产所属的组别。 - 远期收益列名遵循alphalens.ml4trading.io接受的格式
pd.Timedelta (例如 '1D', '30m', '3h15m', '1D1h' 等)
'date'索引频率属性(merged_data.index.levels[0].freq)将被设置为从输入数据推断出的交易日历(pandas DateOffset)(详情请参阅infer_trading_calendar)。目前该属性仅用于累计收益计算
另请参阅
utils.get_clean_factor适用于已获得远期收益的情况。
-
alphalens.utils.get_forward_returns_columns(columns, require_exact_day_multiple=False)¶ 用于检测并返回作为未来收益列的实用工具
-
alphalens.utils.infer_trading_calendar(factor_idx, prices_idx)¶ 根据因子和价格信息推断交易日历。
- Parameters
- factor_idxpd.DatetimeIndex
我们正在计算未来收益的因子日期时间
- prices_idxpd.DatetimeIndex
与因子数据相关联的价格日期时间
- Returns
- calendarpd.DateOffset
-
alphalens.utils.non_unique_bin_edges_error(func)¶ 当无法正确计算输入数据框(因子)的分位数时,向用户提供更具信息量的错误提示
-
alphalens.utils.print_table(table, name=None, fmt=None)¶ 漂亮地打印一个pandas DataFrame。
Uses HTML output if running inside Jupyter Notebook, otherwise formatted text output.
- Parameters
- tablepd.Series or pd.DataFrame
用于美化打印的表格。
- namestr, optional
在左上角显示的表格名称。
- fmtstr, optional
用于显示表格元素的格式化工具。 例如:'{0:.2f}%' 会将100显示为'100.00%'。 显示完成后会恢复原始设置。
-
alphalens.utils.quantize_factor(*args, **kwargs)¶
-
alphalens.utils.rate_of_return(period_ret, base_period)¶ 将收益率转换为'one_period_len'周期的回报率:即假设收益以稳定速率增长时,每个'one_period_len'周期内应有的回报值
- Parameters
- period_ret: pd.DataFrame
包含收益率值的DataFrame,列标题代表收益率周期。
- base_period: string
转换中使用的基础周期长度 必须遵循pandas.Timedelta构造函数格式(例如'1 days'、'1D'、'30m'、'3h'、'1D1h'等)
- Returns
- pd.DataFrame
与输入格式相同的数据框,但包含'one_period_len'周期的收益率数值。
-
alphalens.utils.rethrow(exception, additional_message)¶ 重新抛出当前作用域中最后一个活跃的异常 在保留堆栈跟踪的同时添加额外信息。 这种做法有些取巧,因为它需要同时兼容Python 2/3版本
-
alphalens.utils.std_conversion(period_std, base_period)¶ 单周期长度标准差(或标准误差)近似值
- Parameters
- period_std: pd.DataFrame
包含标准差或标准误差值的DataFrame,其列标题代表回报周期。
- base_period: string
转换中使用的基础周期长度 必须遵循pandas.Timedelta构造函数格式(例如'1 days'、 '1D'、'30m'、'3h'、'1D1h'等)
- Returns
- pd.DataFrame
与输入格式相同的DataFrame,但包含单周期标准差/误差值。
-
alphalens.utils.timedelta_strings_to_integers(sequence)¶ 将pandas中表示时间差的字符串转换为以天为单位的整数值。
- Parameters
- sequenceiterable
时间差字符串表示的列表或数组,例如 ['1D', '5D']。
- Returns
- sequencelist
对应输入序列的整数天数,例如 [1, 5]。
-
alphalens.utils.timedelta_to_string(timedelta)¶ 将pandas.Timedelta转换为与pandas.Timedelta构造函数格式兼容的字符串表示形式的实用工具
- Parameters
- timedelta: pd.Timedelta
- Returns
- string
'timedelta'的字符串表示