Why Annualized and Cumulative Returns Can Differ
Summary
This note explains the distinction between annualized return and cumulative return in PerformanceAnalytics. Cumulative return compounds the observed returns across the full sample. Geometric annualized return applies a time scaling exponent, converting the sample’s compounded performance to an annual rate; the two measures therefore depend on sample length.
For a period exactly one year long, the measures should agree when the data frequency and annual scale are set consistently. For shorter or longer periods, they are expected to differ. The example compares a one-year slice with a longer slice from the package’s sample data to illustrate this point. The note does not diagnose the questioner’s specific figures, so the conclusion depends on whether the selected dates truly represent exactly one year of observations and whether the package’s scaling assumptions match the data.
Key ideas
- Cumulative return compounds the returns observed over the full sample period.
- Geometric annualized return scales compounded performance to an annual rate based on sample length.
- Annualized and cumulative returns should coincide when the analyzed period is exactly one year under consistent scaling.
- Different sample durations can produce different annualized and cumulative figures.
Tags
Full text
# Why annualized return and cumultive return aren't equal over 1-year period with Performance Analytics package in R?
# Why annualized return and cumultive return aren't equal over 1-year period with Performance Analytics package in R?
I use Performance Analytics package in R to compare annualized and cumulative return of a portfolio. My expectation is that both should be equal over a period of 1-year but results tell me I'm wrong.
It is not clear for me how annualized return could be 122.55 from 2014-01-01 to 2014-12-31 while the cumulative return is 205.71 over the same period. Geometric is set to its default value (`TRUE`) and I think number of period in a year is set by default to 252 (daily scale).
```
statistic <- rbind(Return.annualized(bench)*100, Return.cumulative(bench)*100)
```
To know better what is the return I can expect from this portfolio could somebody please explain to me why both returns are not equal ?
## Answer by RndmSymbl (score 2, accepted)
https://quant.stackexchange.com/a/16544
The documentation of the R package PerformanceAnalytics provides examples for both the `Return.annualized()` and `Return.cumulative()` functions.
The annualized return scales up sub-annual returns to an annual return. You may observe the difference by typing `Return.annualized` (without any parameters) in your R console to see the functions implementation. Look for how the return is calculated if geometric linkage is applied:
```
if (geometric) {
result = prod(1 + R)^(scale/n) - 1
}
```
The cumulative returns are actual returns that are calculated over an annual period. The formula for the calculation is similar, but lacks the scaling piece:
```
else {
return(prod(1 + R) - 1)
}
```
If the period being analyzed is exactly one year annualized and cumulative returns are the same:
```
data(managers)
Return.annualized(managers[121:132])
Return.cumulative(managers[121:132,])
```
But if the period is not equal to one year they are expected to be different:
```
data(managers)
Return.annualized(managers[115:132])
Return.cumulative(managers[115:132,])
```Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.