Just do the same thing I described, but point-to-point. Identify each segment of time where the top five don't change. For each segment, compute the total return using Portfolio Visualizer (PV), setting the start and end dates ot the segment. Then combine the total returns by multiplying, as illustrated below.
PV gives you the growth for each segment. It shows what the final value would be starting with $
10K. For example, if it shows that you start with $
10K and wind up with $
12K at the end of a segment, you've got
120% of your starting value (and your total growth is 20%).
Suppose your top five stocks remain the same from Jan 20
14 to June 20
15, and then you've got a different top five from July 20
15 to the present. If PV says that $
10K grew to $
12K in the first period, and that $
10K grew to $
180K in the second period, you combine them as:
$
12K/$
10K x $
180K/$
10K =
1.2 x
1.8 = 2.
16. That is, $
10K at the beginning grew to $2
1.6K at the end; equivalently, your total return was 2
16% -
100$ =
116%.
---
I am beginning to wonder what you're trying to do here. Even if the data you want existed (it doesn't because funds don't publish their holdings daily; they're only required to do so quarterly), it would be highly unstable. One stock might fall out of the top five merely because it grew slightly more slowly than the number six stock. Index funds have "buffers" to mute this sort of thrashing; here you're amplifying the effect.
I produced a list of top five equities for my example fund, FCNTX on half-yearly basis using the fund's (semi) annual statements. You can see the problem I described as well as another one - multiple classes of a company.
YE2013 6/2014 YE2014 6/2015 YE2015 6/2016 YE2016 6/2017 YE2017 6/2018 YE2018 3/2019
GOOGL 7.30% 3.60% 3.30% 3.20% 3.70% 3.70% 3.50% 3.20%
GOOG 3.70% 2.80% 2.90% 3.20% 3.20%
FB 3.30% 3.90% 4.90% 5.70% 5.80% 6.80% 7.20% 7.30% 5.60% 6.39%
BRK-A 4.10% 4.30% 5.00% 4.40% 4.20% 4.80% 5.40% 5.00% 5.20% 4.60% 5.80% 5.18%
AAPL 3.40% 3.10% 3.40% 4.00% 3.40% 3.40%
MSFT 3.50% 4.30% 4.43%
WFC 2.80% 3.30% 3.50% 3.60% 3.30%
AMZN 2.60% 3.60% 4.10% 4.60% 5.10% 6.60% 6.70% 6.90%
BIIB 3.00%
UNH 3.80%
CRM 3.60%
Total% 20.20% 18.00% 18.00% 18.90% 19.10% 20.20% 22.20% 23.50% 24.20% 25.20% 26.20% 26.50%
Alphabet (formerly Google)
split into two share classes in early 20
14. So what was a top holding of FCNTX was halved. In some periods, both share classes remained in the top five, pushing out another top five stock for no other reason than you were effectively including only the top
four stocks (since Google took up two slots). In some other periods, it looked like the exposure to Google got cut in half, for no other reason that one of the two share classes missed the top five cut. Sometimes it looked like Google was "sold off" completely (e.g. June 20
15), even though the fund held a lot of Google stock.
This thrashing didn't represent a change in exposure to Google. Such thrashing happened simply as a result of what you asked for.
Notice also that the fraction of the fund that the top five stocks represents ranges from
18% to 26.5%. Viewed this way, "top five" seems rather arbitrary. I might look at the top 20% of holdings, or come up with a more elegant metric for "high conviction" holdings. I'm not sure what "top five" signifies from an analytic perspective.
Here are the (semi) annual reports from the SEC site that I used to create the table above:
12/3
1/
18
https://www.sec.gov/Archives/edgar/data/24238/000137949119000865/filing706.htm6/30/
18
https://www.sec.gov/Archives/edgar/data/24238/000137949118004082/filing706.htm12/3
1/
17
https://www.sec.gov/Archives/edgar/data/24238/000137949118000849/filing706.htm6/30/
17
https://www.sec.gov/Archives/edgar/data/24238/000137949117005591/filing706.htm12/3
1/
16
https://www.sec.gov/Archives/edgar/data/24238/000137949117000981/filing706.htm6/30/
16
https://www.sec.gov/Archives/edgar/data/24238/000137949116005364/filing706.htm12/3
1/
15
https://www.sec.gov/Archives/edgar/data/24238/000002423816000025/Main.htm6/30/
15
https://www.sec.gov/Archives/edgar/data/24238/000072257415000288/main.htm12/3
1/
14
https://www.sec.gov/Archives/edgar/data/24238/000070420715000083/conmain.htm6/30/
14
https://www.sec.gov/Archives/edgar/data/24238/000002423814000041/Main.htm12/3
1/
13
https://www.sec.gov/Archives/edgar/data/24238/000087846714000111/contrafund.htm