在我们的日常生活中,投资者经常可以见到“年化收益率”这个词,如某国有银行七天存款的年化收益率为1.34%,某商业银行推出一款90天的理财产品,预期年化收益率为4.7%-4.75%,阿里巴巴推出的余额宝七日年化收益率为3.943%。
又如,当投资者面对三种资产时,D、F、T,资产D两个月的收益率为2.8%,资产F四年的收益率为23%,资产T一年的收益率为9%,每个资产收益率的计算时间区间都不同,作为投资者,应该如何判断资产的投资表现呢?
很显然,我们只要将各种收益率换算成相同时间区间的收益率即可比较。年化收益率就是把当前的收益率,如:日收益率、周收益率、月收益率等,换算成年收益率进行计算,以便投资者比较不同期限的投资。年化收益率是一种理论上的收益率,并不是投资者真正能够获得的收益率。最近特别流行的各种货币基金都会提供七日年化收益率供投资者参考。但是,七日年化收益率是货币基金最近7日的平均收益水平,进行年化后得到的收益率,并不能代表该基金之后的表现。
年化收益率与年收益率不一样,年收益率指的是投资一笔资产一年的实际收益率,例如投资人购买基金时常常都会参考过去一年的收益率,这个收益率就是年收益率,是投资人过去一年实际获得的报酬,也是基金经理人资产管理的表现。年化收益率在低风险性的资产市场中应用十分广泛,而年收益率可以应用于任何资产。不同于年收益率,年化收益率只是一个短期收益的年化显示,只有在未来收益都能一直保持不变的情况下,年化收益才会等于年收益。投资者在看到某理财产品标明高年化收益率时不要太过追崇,一旦未来收益率下跌,那预期年化收益率就毫无意义了。
年化收益率的计算与复利相关,假设投资人持有的资产时间为T期,获得的收益率为R,一年共有M个单期(如以月为单期,一年有12个月),该资产的年化收益率为:
年化收益率=R/T×M 或 年化收益率=[
-1]×M
上述公式中,R/T和
-1分别是根据T期收益率计算的算数平均收益率、几何平均收益率(即是单期收益率),再将单期收益率转化成年化收益率时是直接乘以一年的期数M,也就是将单期行为重复M次得到的收益率。年化收益率也可以根据下面的公式进行计算:
年化收益率=
-1
上述公式中,T/M是T期对应的年数,这种方法是将T时段获得的收益复利M/T次,与上一个方法有本质上的不同,结果也很不一样。
如果R没有能够直接给出,而是由T期里的单期收益率(此单期时间长度可以与T期的单期时间长度不同)计算得出,那么计算需要多出一步。假设目前已知的某个资产T个月内的日收益率序列R1,R2,R3…,RN(N为T个月中包含的天数),怎么将其转化成以月为频率进行复利的年化收益率呢?根据上面的公式, R要根据R1,R2,R3…,RN计算出来,如果R使用简单加总的方式进行计算,则:
年化收益率=
/T×M
如果R是用复利的方式计算,则:
年化收益率=
-1
那么,在Python中,怎样计算年化收益率呢?我们可以根据上述公式,依据情况编写代码来实现计算年化收益率。
#假设一年有240个交易日
In:annualize=(1+simpleret).cumprof()[-1]**(240/360)-1
In:annualize
Out:0.58311696409
部分代码示例
我们也可以编写一个计算年化收益率的函数,对于不同的单期计算年化收益率。
Def annualize(returns,period):
If period==’day’:
Return((1+ returns).cumprof()[-1]**(240/len(returns))-1)
Elif period==’month’:
Return((1+ returns).cumprof()[-1]**(12/len(returns))-1)
Else:
Raise exception(“worng period”)
部分代码示例
备注:此文作者系广西南宁臻实项目数据分析师事务所特约分析师陈虹坚,欢迎同行加入广西数据分析师群探讨交流QQ群:117268053.