昨天在做1个资产配置策略的回测,爬取了天天基金的净值数据,注意到基金的单位净值、累计净值、日增长率这3个概念。
为什么注意到这3个概念,是因为采用这3个数值进行回测,最终的收益率差异比较大。年化收益率的极差约60%。由于同一个策略对相同的资产进行回测,最终只会有1个收益率。那么另外2个收益率就是错误的。
先上结论:应该采用日增长率进行回测
先明确概念:
基金单位净值计算公式为:基金单位净值=总净资产/基金份额。可以理解为股票的前复权的概念,即市场上正在交易的价格。
基金累计净值计算公式为:基金累计净值=基金单位净值+基金成立后份额的累计分红金额。可以理解为股价的后复权,即该股上市以来的累计收益。
日增长率:在不考虑分红的情况下,当天的单位净值/前1个交易日的单位净值
之前回测指数和股票,都是利用前复权当前交易日(t0)价格除前一交易日(t-1)价格并取对数,计算每日对数收益率,采用日增长率进行累乘。
此次在做基金回测时,掉入了累计净值的坑。
根据公式,累计净值=单位净值+历史分红。所以按照累计净值计算出来的收益率为 累计净值(t0)/累计净值(t-1) = (单位净值(t0)+历史分红(t0)) / (单位净值(t-1)+历史分红(t-1))。但其实这个历史分红就是常数了,它在下次分红前是不会发生变化的。而通常基金的分红间隔比较长,导致历史分红类似于1个阶梯状的函数,很长时间都不会发生变化。
上述计算公式,分子:新的单位净值+常数,分母:单位净值+常数。随着时间积累,分红次数变大,总的金额变大,即常数变大。那么分式计算出来的值,如果对其求极限,那么会收敛到1,减1得到收益率,即收敛到。比如极端情况,昨天单位净值为1,历史分红10000;今天运气好,上涨100%,单位净值翻倍为2,历史分红还是10000。通过累计净值计算的收益率 =(2+10000)/(1+10000)-1=0.01% ,非常的小。
这就是把基金的累计净值当作价格,进行回测产生误差的原因。
比如之前的回测,运用累计净值计算的收益率,年化为12%。
运用日增长率回测的收益率,年化约17%。
后面通过打印出每个基金的收益率表进行对比,发现了累计净值的问题。正确的应该是17%这个数字