def annual_return(returns, period=DAILY, annualization=None):
"""Determines the mean annual growth rate of returns.
Parameters
----------
returns : pd.Series or np.ndarray
Periodic returns of the strategy, noncumulative.
- See full explanation in :func:`~empyrical.stats.cum_returns`.
period : str, optional
Defines the periodicity of the 'returns' data for purposes of
annualizing. Value ignored if `annualization` parameter is specified.
Defaults are:
'monthly':12
'weekly': 52
'daily': 252
annualization : int, optional
Used to suppress default values available in `period` to convert
returns into annual returns. Value should be the annual frequency of
`returns`.
Returns
-------
float
Annual Return as CAGR (Compounded Annual Growth Rate).
"""
if len(returns) < 1:
return np.nan
ann_factor = annualization_factor(period, annualization)
num_years = float(len(returns)) / ann_factor
start_value = 100
# Pass array to ensure index -1 looks up successfully.
end_value = cum_returns(np.asanyarray(returns),
starting_value=start_value)[-1]
cum_returns_final = (end_value - start_value) / start_value
annual_return = (1. + cum_returns_final) ** (1. / num_years) - 1
return annual_return
评论列表
文章目录