年化收益率是衡量投资收益回报的重要指标。它是把当前收益率(例如日收益率、周收益率、月收益率)换算成年收益率来计算的,并不是真正的已取得的收益率。以日收益率为例,反算为年化收益率,可以简单理解为,按照过去每日的收益的一个平均情况,维持在这个水平上,平均一年能赚到多少个百分点,年化收益率是一个复合的年增长率。QThinker Plus 上提供了这个计算工具,可以直接计算。下面说一下计算方法。
具体到计算上,一般有两种方式计算年化收益率:
一、通过日收益率序列计算年化收益率
这种计算,通常以资产期初价值为1,先计算期末的累计收益率,然后用期末收益率开周期天数次方后减一,得到年化收益率。伪代码如下:
# 计算历史回报占一年天数的比率
num_years = len(returns) / ann_factor
# 以资产期初价值为1,计算期末累计收益率
ending_value = cum_returns_final(returns, starting_value=1)
# 对期末收益率开num_year次方后 - 1 得到年化收益率
annual_return = ending_value ** (1 / num_years) - 1
这里需要注意的是ann_factor这个变量,这个变量的取值需要和returns,即回报序列匹配。如果你的returns序列不包含假期,比如股市投资的日收益率序列,那么对应的ann_factor这个变量应该设置为252,即一年的交易日数量。如果你的returns序列是包含假期的,比如你持有货币基金,周末也有收益,那么这个ann_factor应该设置为一年的天数,即365。
二、通过期初期末资产数值及持有天数计算年化收益率
直接给个函数,里面的365是与入参days对应的,如果days这个持有天数是包含假期的自然日天数,则设置为365,如果days是不包含假日的交易日天数,则为252。
def cal_annual_return(start:float , end:float , days:int) -> float:
pct = end/start
return pct ** ( 1 / ( days / 365 )) - 1
文章评论