Usually, we look at investment returns in terms of annual returns. However, yours may be expressed as daily, weekly, or monthly returns. Here’s how to convert them.

The idea is to use the general formula for returns and compound them to an annualized period.

\[r_a = (1 + r)^n - 1\]

Where \(r_a\) is the annual return, \(r\) is the return (in decimal) and \(n\) is the number of periods in a year.

def annual_return(r, n):
  r = r / 100
  return (1 + r)**n - 1

Say you have a 5% quarterly return because we have four quarters in a year then

annual_return(5, 4) * 100
## 21.550625000000025

If you have a 5% monthly return, because we have twelve months in a year then

annual_return(5, 12) * 100
## 79.58563260221301

If you have a 0.1% daily return, because we have 365 days in a year then

annual_return(0.1, 365) * 100
## 44.02513134295205

If you have a 2% weekly return, because we have 52 weeks in a year then

annual_return(2, 52) * 100
## 180.03281854481816

You can have returns for any number of days and convert them to annualized returns by dividing the days in a year by the days in your dataset. In other words, the period becomes the proportion of the year that you have returns for. Let’s say you have a 6% returns over 52 days, then

n = 365 / 52
annual_return(6, n) * 100
## 50.53161051538271

It’s all well and good but, how do you go from any given period (daily, monthly, weekly) to any other? This question is not explored as much as far as I can tell. I’ll do a write-up when I find the answer.