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 ?

  • $\begingroup$ You should add links to the documentation of the package. Have you had a look there? What does it say about the difference between these two methods? $\endgroup$
    – SRKX
    Feb 12, 2015 at 6:36

1 Answer 1


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:


But if the period is not equal to one year they are expected to be different:

  • $\begingroup$ Thanks. For my Annualized Return to be 122.55 I've found that n must be equal to 352 in prod(1 + R)^(scale/n) - 1 (n is the total number of periods for which I have observation). The consequence is that ratio (scale/n) is different from 1 (with scale = 252). It is not clear what is wrong because periodicity(bench) returns Daily periodicity from 2014-01-14 to 2014-12-31. $\endgroup$
    – Florent
    Feb 16, 2015 at 11:56
  • 1
    $\begingroup$ I get it. n equal 352 because I have saturday and sunday in my dataset ;-) and PerformanceAnalitics is not designed to work with 7 days of trading per week. $\endgroup$
    – Florent
    Feb 16, 2015 at 12:02
  • $\begingroup$ The most frequent assumption for stock returns is that it's 252 trading days in a year. There are other day count conventions but they usually play a larger role when looking at fixed income data since returns would be very often evaluated rather than observed... $\endgroup$
    – RndmSymbl
    Feb 16, 2015 at 16:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.