Calculate QTD, YTD, 1 Year returns based on monthly percentage returns

smogtm

New Member
Joined
Jan 7, 2025
Messages
3
Office Version
  1. 365
Platform
  1. Windows
Hi all, I've been having some issues with calculating QTD, YTD, 1 Year, 2 Year (annualized), 3 Year (annualized) and 5 Year (annualized) returns based on monthly percentage returns. I've tried different methods but all yield results with huge differences. What would be the best (and correct) way to calculate?

Book1.xlsx
ABCDEFGHIJ
1Calculate the linked returns below as of 6/30/2024
2
3Return TypeReturn
4QTD
5YTD
61 Year
72 Year (Annualized)
83 Year (Annualized)
95 Year (Annualized)
10
11
12Return Stream
13Effective DateFund Return
142024-06-30-0.0226
152024-05-311.5842
162024-04-30-0.7725
172024-03-311.6788
182024-02-291.3427
192024-01-310.079
202023-12-312.0848
212023-11-303.3265
222023-10-31-1.2318
232023-09-30-1.3259
242023-08-31-0.0674
252023-07-311.3981
262023-06-301.2983
272023-05-31-0.3528
282023-04-300.4592
292023-03-311.0337
302023-02-28-0.8657
312023-01-312.5849
322022-12-31-0.3671
332022-11-301.978
342022-10-311.0943
352022-09-30-3.5067
362022-08-31-2.51
372022-07-311.6935
382022-06-30-2.4146
392022-05-31-0.7742
402022-04-30-2.7677
412022-03-310.8651
422022-02-28-0.9296
432022-01-31-2.7082
442021-12-310.2039
452021-11-30-0.05
462021-10-311.205
472021-09-30-1.1332
482021-08-313.8095
492021-07-310.1383
502021-06-301.2122
512021-05-313.0055
522021-04-302.3394
532021-03-314.2013
542021-02-283.2698
552021-01-31-0.5987
562020-12-313.3248
572020-11-307.0525
582020-10-310.2888
592020-09-30-0.6556
602020-08-314.3817
612020-07-312.3027
622020-06-302.0331
632020-05-310.8836
642020-04-304.3488
652020-03-31-7.8618
662020-02-29-1.8809
672020-01-310.0172
682019-12-311.6215
692019-11-301.6939
702019-10-311.3133
712019-09-300.1902
722019-08-310.0964
732019-07-310.3559
Sheet1
 

Excel Facts

How can you turn a range sideways?
Copy the range. Select a blank cell. Right-click, Paste Special, then choose Transpose.
I'm not very confident that this is the way you want to calculate the returns.
MrExcelPlayground23.xlsx
AB
1Calculate the linked returns below as of 6/30/2024
2Data Date6/30/2024
3Return TypeReturn
4QTD0.0078
5YTD0.0393
61 Year0.0826
72 Year (Annualized)0.0542
83 Year (Annualized)0.0189
95 Year (Annualized)0.0905
10
11
12Return Stream
13Effective DateFund Return
146/30/2024-0.0226
155/31/20241.5842
164/30/2024-0.7725
173/31/20241.6788
182/29/20241.3427
191/31/20240.079
2012/31/20232.0848
2111/30/20233.3265
2210/31/2023-1.2318
239/30/2023-1.3259
248/31/2023-0.0674
257/31/20231.3981
266/30/20231.2983
275/31/2023-0.3528
284/30/20230.4592
293/31/20231.0337
302/28/2023-0.8657
311/31/20232.5849
3212/31/2022-0.3671
3311/30/20221.978
3410/31/20221.0943
359/30/2022-3.5067
368/31/2022-2.51
377/31/20221.6935
386/30/2022-2.4146
395/31/2022-0.7742
404/30/2022-2.7677
413/31/20220.8651
422/28/2022-0.9296
431/31/2022-2.7082
4412/31/20210.2039
4511/30/2021-0.05
4610/31/20211.205
479/30/2021-1.1332
488/31/20213.8095
497/31/20210.1383
506/30/20211.2122
515/31/20213.0055
524/30/20212.3394
533/31/20214.2013
542/28/20213.2698
551/31/2021-0.5987
5612/31/20203.3248
5711/30/20207.0525
5810/31/20200.2888
599/30/2020-0.6556
608/31/20204.3817
617/31/20202.3027
626/30/20202.0331
635/31/20200.8836
644/30/20204.3488
653/31/2020-7.8618
662/29/2020-1.8809
671/31/20200.0172
6812/31/20191.6215
6911/30/20191.6939
7010/31/20191.3133
719/30/20190.1902
728/31/20190.0964
737/31/20190.3559
Sheet26
Cell Formulas
RangeFormula
B4B4=LET(fundreturn,B14:B73,effectivedate,A14:A73,datadate,B2,periodstart,DATE(YEAR(datadate),INT((MONTH(datadate)-1)/3)*3+1,1),returns,FILTER(fundreturn,effectivedate>=periodstart),tot,PRODUCT(1+returns/100)-1,tot)
B5B5=LET(fundreturn,B14:B73,effectivedate,A14:A73,datadate,B2,periodstart,DATE(YEAR(datadate),1,1),returns,FILTER(fundreturn,effectivedate>=periodstart),tot,PRODUCT(1+returns/100)-1,tot)
B6B6=LET(fundreturn,B14:B73,effectivedate,A14:A73,datadate,B2,periodstart,EDATE(datadate,-12)+1,returns,FILTER(fundreturn,effectivedate>=periodstart),tot,PRODUCT(1+returns/100)-1,tot)
B7B7=LET(fundreturn,B14:B73,effectivedate,A14:A73,datadate,B2,periodstart,EDATE(datadate,-24)+1,returns,FILTER(fundreturn,effectivedate>=periodstart),tot,(PRODUCT(1+returns/100)-1)/2,tot)
B8B8=LET(fundreturn,B14:B73,effectivedate,A14:A73,datadate,B2,periodstart,EDATE(datadate,-36)+1,returns,FILTER(fundreturn,effectivedate>=periodstart),tot,(PRODUCT(1+returns/100)-1)/3,tot)
B9B9=LET(fundreturn,B14:B73,effectivedate,A14:A73,datadate,B2,periodstart,EDATE(datadate,-60)+1,returns,FILTER(fundreturn,effectivedate>=periodstart),tot,(PRODUCT(1+returns/100)-1)/5,tot)
 
Upvote 0
@smogtm, welcome to the Forum!

Here's a more general formula. The differences highlighted below are arithmetic vs geometric average - the convention here is to use geometric, i.e. column E.

(Like James, I have assumed YTD means from 1 January)

ABCDE
1
2Data Date30 Jun 2024
3Return TypePeriodPost#2TotalAnnualised
4QTD30.78%0.78%3.14%
5YTD63.93%3.93%8.01%
61 Year128.26%8.26%8.26%
72 Year (Annualized)245.42%10.83%5.28%
83 Year (Annualized)361.89%5.68%1.86%
95 Year (Annualized)609.05%45.26%7.75%
10
11
12Return Stream
13Effective DateFund Return
1430 Jun 2024-0.0226
1531 May 20241.5842
1630 Apr 2024-0.7725
1731 Mar 20241.6788
1829 Feb 20241.3427
1931 Jan 20240.0790
2031 Dec 20232.0848
2130 Nov 20233.3265
2231 Oct 2023-1.2318
2330 Sep 2023-1.3259
2431 Aug 2023-0.0674
2531 Jul 20231.3981
2630 Jun 20231.2983
2731 May 2023-0.3528
2830 Apr 20230.4592
2931 Mar 20231.0337
3028 Feb 2023-0.8657
3131 Jan 20232.5849
3231 Dec 2022-0.3671
3330 Nov 20221.9780
3431 Oct 20221.0943
3530 Sep 2022-3.5067
3631 Aug 2022-2.5100
3731 Jul 20221.6935
3830 Jun 2022-2.4146
3931 May 2022-0.7742
4030 Apr 2022-2.7677
4131 Mar 20220.8651
4228 Feb 2022-0.9296
4331 Jan 2022-2.7082
4431 Dec 20210.2039
4530 Nov 2021-0.0500
4631 Oct 20211.2050
4730 Sep 2021-1.1332
4831 Aug 20213.8095
4931 Jul 20210.1383
5030 Jun 20211.2122
5131 May 20213.0055
5230 Apr 20212.3394
5331 Mar 20214.2013
5428 Feb 20213.2698
5531 Jan 2021-0.5987
5631 Dec 20203.3248
5730 Nov 20207.0525
5831 Oct 20200.2888
5930 Sep 2020-0.6556
6031 Aug 20204.3817
6131 Jul 20202.3027
6230 Jun 20202.0331
6331 May 20200.8836
6430 Apr 20204.3488
6531 Mar 2020-7.8618
6629 Feb 2020-1.8809
6731 Jan 20200.0172
6831 Dec 20191.6215
6930 Nov 20191.6939
7031 Oct 20191.3133
7130 Sep 20190.1902
7231 Aug 20190.0964
7331 Jul 20190.3559
74
Sheet1
Cell Formulas
RangeFormula
C4C4=LET(fundreturn,B14:B73,effectivedate,A14:A73,datadate,B2,periodstart,DATE(YEAR(datadate),INT((MONTH(datadate)-1)/3)*3+1,1),returns,FILTER(fundreturn,effectivedate>=periodstart),tot,PRODUCT(1+returns/100)-1,tot)
D4:D9D4=LET(N,B4,r,B$14:B$73,m,MATCH(B$2,A$14:A$73,),IF(m+N-1>ROWS(r),"n/a",PRODUCT(1+INDEX(r,m):INDEX(r,m+N-1)/100)-1))
E4:E9E4=IF(D4="n/a","n/a",(1+D4)^(12/B4)-1)
C5C5=LET(fundreturn,B14:B73,effectivedate,A14:A73,datadate,B2,periodstart,DATE(YEAR(datadate),1,1),returns,FILTER(fundreturn,effectivedate>=periodstart),tot,PRODUCT(1+returns/100)-1,tot)
C6C6=LET(fundreturn,B14:B73,effectivedate,A14:A73,datadate,B2,periodstart,EDATE(datadate,-12)+1,returns,FILTER(fundreturn,effectivedate>=periodstart),tot,PRODUCT(1+returns/100)-1,tot)
C7C7=LET(fundreturn,B14:B73,effectivedate,A14:A73,datadate,B2,periodstart,EDATE(datadate,-24)+1,returns,FILTER(fundreturn,effectivedate>=periodstart),tot,(PRODUCT(1+returns/100)-1)/2,tot)
C8C8=LET(fundreturn,B14:B73,effectivedate,A14:A73,datadate,B2,periodstart,EDATE(datadate,-36)+1,returns,FILTER(fundreturn,effectivedate>=periodstart),tot,(PRODUCT(1+returns/100)-1)/3,tot)
C9C9=LET(fundreturn,B14:B73,effectivedate,A14:A73,datadate,B2,periodstart,EDATE(datadate,-60)+1,returns,FILTER(fundreturn,effectivedate>=periodstart),tot,(PRODUCT(1+returns/100)-1)/5,tot)
B4B4=1+MOD(MONTH(B2)-1,3)
B5B5=MONTH(B2)


The Post#2 formulae don't work correctly for other end dates, for example:

Data Date29 Feb 2024
Return TypePeriodPost#2TotalAnnualised
QTD23.93%1.42%8.85%
YTD23.93%1.42%8.85%
1 Year1210.91%8.24%8.24%
2 Year (Annualized)242.63%2.72%1.35%
3 Year (Annualized)365.83%14.66%4.67%
5 Year (Annualized)609.05%n/an/a
 
Upvote 0
Thank you both! However for some reason when I try to use same formulas I keep getting error messages that the function is not valid 😓 I'm sure I'm messing something up as I am very new to all this. Should these formulas work copy/paste if sheet structure matches with what was posted above?
 

Attachments

  • Screenshot 2025-01-08 210033.png
    Screenshot 2025-01-08 210033.png
    11.6 KB · Views: 1
Upvote 0
This is what my formula bar looks like, but when I try to enter it I get an error message that there is an error with this formula. I've also tried changing argument names but with no luck as well.
 

Attachments

  • Screenshot 2025-01-08 210033.png
    Screenshot 2025-01-08 210033.png
    51.5 KB · Views: 3
Upvote 0
This looks like an assignment? You won't learn much if you simply ask someone to give you answers.

1736395640225.png


Your formula looks OK to me, but it's hard to tell from just a picture.

What formula separators do you use in Excel, e.g. perhaps my "," should be ";" for your Excel version?
 
Upvote 0

Forum statistics

Threads
1,225,297
Messages
6,184,135
Members
453,215
Latest member
pschatzow

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top