用Empyrical库计算金融指标的中文指南(三)
Empyrical是一个由Quantopian开发的开源的Python库,专门用于计算常用的金融风险和性能指标。它包含了许多用于策略回测分析的工具,能够帮助投资者对投资策略的性能进行定量分析。本文详细介绍Empyrical库的用法,由于内容较多,分为五篇阐述。
本篇为第三篇,继续介绍Empyrical库的金融指标函数(按字母排序):
- cum_returns_final(returns, starting_value=0)
该函数 cum_returns_final(returns, starting_value=0) 用于从简单收益中计算总收益。
函数的参数如下:
returns:一个或多个时间序列的非累积简单收益,可以是 pandas 的 DataFrame,Series 或 numpy 的 ndarray。
starting_value:初始收益,可选,其默认值为0。
函数的返回值是总收益,其类型可能是 pandas 的 Series,numpy 的 ndarray,或者是一个浮点数。
如果输入是一维的(pandas 的 Series 或一维的 numpy 数组),那么结果将是一个标量(即单个的数值)。
如果输入是二维的(pandas 的 DataFrame 或二维的 numpy 数组),那么结果将是一个一维数组,包含输入中每一列的累积收益。
总收益是指从投资开始到现在,投资带来的全部收益。这是一个非常重要的投资性能指标,因为它显示了投资的整体回报。总收益是在投资结束时计算的,即累积收益中最后的那个值。总收益可以帮助投资者评估投资的整体性能,并与其他投资机会进行比较。 - down_alpha_beta(returns, factor_returns, **kwargs)
该函数 down_alpha_beta 用于计算基准收益为负时期的阿尔法和贝塔值。
函数的参数:
returns:投资组合的收益率序列。
factor_returns:基准(或因子)的收益率序列。
**kwargs:其他参数可以参考 alpha_beta 函数的文档。
函数返回值:
alpha:阿尔法值(float类型)。
beta:贝塔值(float类型)。
阿尔法和贝塔都是用来评估投资策略性能的重要指标,它们都来自于资本资产定价模型(CAPM)。
阿尔法表示投资策略相对于基准的超额收益,如果阿尔法为正,说明投资策略在考虑风险后,实现了超过基准的收益;如果阿尔法为负,说明投资策略在考虑风险后,没有实现超过基准的收益。
贝塔表示投资策略相对于市场的系统性风险,如果贝塔大于1,说明投资策略的风险大于市场;如果贝塔小于1,说明投资策略的风险小于市场。
在 down_alpha_beta 函数中,它只在基准收益为负的时期计算阿尔法和贝塔,这可以帮助投资者更好地理解投资策略在熊市中的性能。 - down_capture(returns, factor_returns, period=’daily’)
该函数 down_capture 用于计算在基准收益为负的时期内的捕获比率(下行捕获比率)。
函数的参数如下:
returns:策略的收益,非累积的。关于这个参数的更详细解释,可以参见 empyrical.stats.cum_returns 函数的文档。
factor_returns:用于计算贝塔的因子的非累积收益。通常是一个基准,比如市场。这个参数的格式应该与 returns 相同。
period:定义 ‘returns’ 数据的周期性,用于年化。如果指定了 annualization 参数,那么将忽略此值。默认值为:
‘monthly’:12
‘weekly’: 52
‘daily’: 252
函数的返回值是下行捕获比率(float类型)。
捕获比率是一个评估投资策略在市场上升或下降时性能的指标。具体来说,下行捕获比率是在基准收益为负的时期内,投资策略收益与基准收益的比值。如果下行捕获比率小于1,表示投资策略在熊市中表现优于基准;如果下行捕获比率大于1,表示投资策略在熊市中表现劣于基准。 - downside_risk(returns, required_return=0, period=’daily’, annualization=None, out=None)
该函数 downside_risk 用于确定一个阈值以下的下行偏差。
函数的参数如下:
returns:策略的日收益,非累积的。关于这个参数的更详细解释,可以参见 empyrical.stats.cum_returns 函数的文档。
required_return: 最小可接受收益,可以是浮点数或者序列。
period:定义 ‘returns’ 数据的周期性,用于年化。如果指定了 annualization 参数,那么将忽略此值。默认值为:
‘monthly’:12
‘weekly’: 52
‘daily’: 252
annualization:用于抑制 period 中的默认值,将收益转换为年化收益。此值应为 returns 的年度频率。
out:用作输出缓冲区的数组,可选。如果不传递此参数,将会创建一个新的数组。
函数的返回值是下行偏差,其类型可能是浮点数或者 pandas 的 Series,取决于输入的类型。如果输入是序列,那么返回值将是浮点数;如果输入是 DataFrame,那么返回值将是 pandas 的 Series。
下行偏差是一种风险度量,它衡量的是投资收益低于某个阈值(通常是无风险收益率或者0)的风险。下行偏差越大,表示投资的下行风险越高。 - excess_sharpe(returns, factor_returns, out=None)
该函数 excess_sharpe 用于计算策略的超额夏普比率。
函数的参数如下:
returns:策略的日收益,非累积的。关于这个参数的更详细解释,可以参见 empyrical.stats.cum_returns 函数的文档。
factor_returns: 用于比较收益的基准收益,可以是浮点数或者序列。
out:用作输出缓冲区的数组,可选。如果不传递此参数,将会创建一个新的数组。
函数的返回值是超额夏普比率(float类型)。
注意,超额夏普比率是一种简化的信息比率,它使用追踪误差而非”主动风险”作为分母。
夏普比率是投资收益率超过无风险收益率(如国债收益率)的平均值与投资收益率的标准差(即风险)之比。超额夏普比率则是投资组合与基准指数之间的超额收益的夏普比率,它度量的是每单位超额风险所带来的超额收益。
信息比率是另一种常见的风险调整后的性能度量,它衡量的是每单位主动风险(即投资组合与基准指数之间的跟踪误差)所带来的超额收益。
因此,超额夏普比率可以看作是夏普比率和信息比率的结合,它衡量的是每单位追踪误差所带来的超额收益。 - gpd_risk_estimates(returns, var_p=0.01)
该函数 gpd_risk_estimates 使用广义 Pareto 分布(GPD)来估计 VaR(价值在险)和 ES(期望亏损)。
函数的参数如下:
returns:策略的日收益,非累积的。关于这个参数的更详细解释,可以参见 empyrical.stats.cum_returns 函数的文档。
var_p:用于估计 VaR 和 ES 的百分位数。
函数的返回值是一个包含以下五个元素的列表:
threshold:用于截断异常尾部损失的阈值。
scale_param:一个参数(通常表示为 sigma),捕获分布的尺度,与方差有关。
shape_param:一个参数(通常表示为 xi),捕获分布的形状或类型。
var_estimate:给定百分位数的 VaR 估计。
es_estimate:给定百分位数的 ES 估计。
VaR 是一种风险度量,表示在给定的置信水平(如 99%)和预定的时间期限(如一天或十天)内,投资组合可能的最大损失。ES 是一种类似的风险度量,但它提供的是超过 VaR 阈值的损失的平均值,因此 ES 是一种更为悲观的风险度量。
这两种风险度量通常用于度量投资组合的尾部风险,即那些罕见但可能导致重大损失的事件的风险。广义 Pareto 分布是一种常用于建模这种尾部风险的分布。 - max_drawdown(returns, out=None)
该函数 max_drawdown 用于确定策略的最大回撤。
函数的参数如下:
returns:策略的日收益,非累积的。关于这个参数的更详细解释,可以参见 empyrical.stats.cum_returns 函数的文档。
out:用作输出缓冲区的数组,可选。如果不传递此参数,将会创建一个新的数组。
函数的返回值是最大回撤(float类型)。
最大回撤是一种常见的风险度量,它表示的是投资组合从峰值下跌到谷底的最大幅度。例如,如果一个投资组合在某一点的价值为100,然后下跌到70,那么回撤就是30%。如果这是该投资组合在整个时间段内的最大回撤,那么最大回撤就是30%。
最大回撤可以帮助投资者理解他们的投资在最糟糕的情况下可能会损失多少。这是一种非常保守的风险度量,因为它考虑的是最糟糕的可能情况。 - omega_ratio(returns, risk_free=0.0, required_return=0.0, annualization=252)
该函数 omega_ratio 用于确定策略的Omega比率。
函数的参数如下:
returns:策略的日收益,非累积的。关于这个参数的更详细解释,可以参见 empyrical.stats.cum_returns 函数的文档。
risk_free:整个期间的常数无风险回报。
required_return:投资者的最低接受回报。考虑正面与负面回报的阈值。它将被转换为适合回报期间的值。例如,年度最低可接受回报为 100 将转换为最低可接受回报为 0.018。
annualization:用于将 required_return 转换为日值的因子。如果不需要时间期间转换,输入 1。
函数的返回值是 Omega 比率(float 类型)。
Omega 比率是一种风险调整后的性能度量,它反映的是投资策略的收益相对于其风险的比率。具体来说,Omega 比率是投资策略产生超过最低接受回报的概率与未达到最低接受回报的概率的比值。
Omega 比率比许多其他风险度量(如夏普比率)更为全面,因为它考虑了投资策略收益分布的整个形状,而不仅仅是其均值和方差。因此,Omega 比率可以捕捉到投资策略的尾部风险和非正态性,这使得它在分析复杂的衍生品策略或者包含有可能产生非正态收益的金融工具的投资组合时特别有用。 - roll_alpha(lhs, rhs, window, out=None, **kwargs)
该函数 roll_alpha 用于计算滚动窗口期间的 alpha 值。
函数的参数如下:
lhs:传递给滚动 alpha 的第一个数组,即 empyrical.alpha 函数的 returns 参数。
rhs:传递给滚动 alpha 的第二个数组,即 empyrical.alpha 函数的 factor_returns 参数。
window:以数据的周期性来计算的滚动窗口大小。
out:用作输出缓冲区的数组,可选。如果不传递此参数,将会创建一个新的数组。
**kwargs:其他参数参见 empyrical.alpha 函数的参数。
函数的返回值是滚动 alpha(array-like 类型)。
Alpha 是一个用于评估投资策略或基金经理性能的指标,它表示的是在控制风险之后的超额收益。换句话说,alpha 是投资策略或基金经理产生的超过预期的、不能由市场因素解释的收益。
滚动 alpha 是在一个滚动窗口期间计算的 alpha。这使得投资者可以看到投资策略或基金经理的性能如何随时间变化,从而更好地理解其性能的稳定性和可持续性。例如,如果一个策略的滚动 alpha 是正数并且随时间保持稳定,那么这可能表明策略或经理在控制风险的同时产生了稳定的超额收益。
发布者:爱吃肉的小猫,转载请注明出处:https://www.95sca.cn/archives/46351
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!