Startseite » ETF Portfolio Tools » Wie prüfe ich ETF-Überschneidungen in meinem Portfolio?

Wie prüfe ich ETF-Überschneidungen in meinem Portfolio?

Chris

Dipl.-Ingenieur, Developer, #Buy-and-Hold #ETF #Investor, Freelancer, Lerner

ETF Überschneidungen

Je mehr Aktien, Fonds oder ETFs sich in Deinem Portfolio anhäufen, desto wahrscheinlicher ist es, dass diese dieselben Aktien mehrfach enthalten und es somit zu Überschneidungen von ETF in Deinem Portfolio kommt. Somit erhöhst Du unabsichtlich den Anteil dieser Wertpapiere in Deinem Depot überproportional. Diese ETF Überschneidungen lohnt es sich zu prüfen!

Dies muss natürlich nicht unbedingt immer nachteilig sein, allerdings ist es gut, sich darüber im Klaren zu sein.
Im Folgenden möchte ich Dir ein Tool zeigen, mit dem Du sehr einfach die Überschneidungen zwischen ETF prüfen kannst. Für die ambitionierteren Anleger unter Euch stelle ich außerdem noch eine Möglichkeit vor, die Überschneidungen mit einem einfachen R-Script zu überprüfen.

Zugegeben, als ganz konsequenter Buy-and-Hold ETF-Anleger mit Weltportfolio-Ansatz dürften derartige Überschneidungen eigentlich nicht vorkommen, aber jeder hat schließlich eine Börsen-Historie, ein paar Karteileichen oder einfach Spass daran, nebenbei noch ein bisschen mit Einzelwerten zu spekulieren.

Ein sehr hilfreiches Werkzeug, um Überschneidungen Deiner Wertpapiere zu analysieren ist das Morningstar X-Ray Tool.

Wie funktioniert Morningstar X-Ray?

Im ersten Schritt musst Du Dich hierzu auf der Morningstar-Seite kostenlos registrieren und anschließend legst Du Dein Portfolio an.

Ich habe hier der Einfachheit halber in meinem Beispiel einfach ein Portfolio mit 90% MSCI World und 10% Apple Aktien gewählt, um Dir den Effekt zu zeigen.
Anschließend klickst Du auf den Tab “X-Ray” und dann im Dropdown “Zur Übersicht” den Eintrag “Überschneidung Positionen” auswählen.

Das Ergebnis sieht dann in etwa so aus:

Morningstar X-Ray Tool
Morningstar X-Ray Tool

Man kann hier erkennen:

  • die Apple-Aktie kommt 2 Mal in dem Portfolio vor: einmal mit 10% direkt gehalten und einmal indirekt im MSCI World mit 3,90% (genauer gesagt 90% von 4,34%)
  • dies ergibt eine insgesamte Gewichtung der Apple-Aktie von 13,90% in dem Beispiel-Portfolio

Wie gesagt, ob diese ETF-Überschneidungen jetzt gut oder schlecht ist, bleibt natürlich vollkommen Dir überlassen.
Das Ergebnis ist allerdings, dass die Apple-Aktie gegenüber dem reinen Benchmark-Index MSCI World übergewichtet ist. Der MSCI World Index bildet die Wertentwicklung von 23 Industrieländern ab und gewichtet die einzelnen Aktien im ETF nach deren Marktkapitalisierung, das bedeutet nach dem Wert der Aktien, die frei handelbar sind. Wenn Apple fiktiv 100 Aktien ausgegeben hätte und die Apple-Aktie aktuell bei einem Kurs von 50,- € stehen würde, wäre die Marktkapitalisierung von Apple

100 * 50,- € = 5.000 €

Dies wird für jedes einzelne Unternehmen ermittelt und danach die Indexzusammensatzung des MSCI World automatisiert berechnet. Wenn wir nun also zusätzlich zum MSCI World noch weitere Anteile der Apple Aktie kaufen wie in unserem Beispiel, entsteht eine Überschneidung in unserem Portfolio und damit eine Übergewichtung. Dies kann natürlich absolut Sinn machen, wenn Du davon ausgehst, dass Apple noch besonders viel Potential hat, aber es kann auf der anderen Seite natürlich auch zu Klumpenrisiken führen, so dass die breite Diversifizierung des MSCI World durch viele Überschneidungen wieder verringert wird.

Überschneidungen können natürlich in jeglicher Form auftreten, d.h. wenn Du statt der einzelnen Apple-Aktie zum Beispiel einen Europa-ETF mit in das Portfolio aufnimmst, entstehen für etliche ETF-Positionen Überschneidungen und Übergewichtungen. Es macht also in jedem Fall Sinn, in regelmäßigen Abständen die ETF Überschneidungen im Portfolio zu prüfen.

ETF Überschneidungen prüfen mit R

Für die ambitionierteren Anleger unter Euch möchte ich noch eine weitere Möglichkeit erläutern, wie man ETF Überschneidungen in seinem Portfolio prüfen kann. Dazu müsst ihr Euch ein wenig mit der Programmiersprache R auskennen oder zumindest in der Lage sein, meine (einfachen) Code-Beispiele nachvollziehen zu können. Ich gehe das R-Script aber im Folgenden Schritt für Schritt mit Euch durch. Am einfachsten könnt ihr die Beispiele in R Studio auf dem Mac ausführen.

Das R-Script verwendet die von iShares zur Verfügung gestellten CSV-Daten, die für jeden ETF die einzelnen Aktien inklusive deren Gewichtung im Index zum jeweiligen Zeitpunkt auflisten. Für einen ETF auf den MSCI World Index beispielsweise findet ihr die Datei auf der iShares Website im Bereich “Positionen” und dort unter “Fondspositionen und Kennzahlen”.

Als erstes laden wir dann die benötigte R-Library und definieren eine Hilfsfunktion, die das Einlesen der CSV-Datei und das Filtern auf die benötigten Spalten vornimmt. Als Parameter geben wir der Funktion ganz einfach die iShares-URL und den Namen des Index mit.

library(tidyverse)

importEtfHoldings <- function(url, indexName) {
  return(read_csv(url, skip = 2) %>%
    select("Name", "ISIN", "Gewichtung (%)") %>%
    rename("Weight" = "Gewichtung (%)") %>%
    mutate(Weight = as.double(sub(",", ".", Weight, fixed = TRUE))) %>%
    add_column(Index = indexName))
}

Anschließend nutzen wir diese erstellte Funktion, um die Daten der verschiedenen (iShares) ETFs, die uns interessieren, in einzelne Variablen zu laden. Für den MSCI World ETF mit der WKN A0RPWH sieht das dann beispielsweise so aus:

msci_world <- importEtfHoldings("https://www.ishares.com/de/privatanleger/de/produkte/251882/ishares-msci-world-ucits-etf-acc-fund/1478358465952.ajax?fileType=csv&fileName=EUNL_holdings&dataType=fund", "MSCI World")

Zusätzlich fügen wir in meinem Beispiel einen Emerging Markets ETF sowie einen Nasdaq 100 ETF hinzu:

msci_emerging_markets <- importEtfHoldings("https://www.ishares.com/de/privatanleger/de/produkte/251858/ishares-msci-emerging-markets-ucits-etf-acc-fund/1478358465952.ajax?fileType=csv&fileName=EUNM_holdings&dataType=fund", "MSCI EM")
nasdaq_100 <- importEtfHoldings("https://www.ishares.com/de/privatanleger/de/produkte/253741/ishares-nasdaq-100-ucits-etf/1478358465952.ajax?fileType=csv&fileName=SXRV_holdings&dataType=fund", "Nasdaq 100")

Dann kombinieren wir alle Daten zu einem gemeinsamen Portfolio. Hierzu berücksichtigen wir die verschiedenen Gewichtungen für die einzelnen ETFs, in meinem Beispiel sind dies:

IndexGewichtung
MSCI World65%
MSCI Emerging Markets20%
Nasdaq 10015%
portfolio <- bind_rows(
  msci_world %>% mutate(Weight = 0.65*Weight),
  msci_emerging_markets %>% mutate(Weight = 0.2*Weight),
  nasdaq_100 %>% mutate(Weight = 0.15*Weight)
)

Jetzt sind wir soweit und können das Ergebnis mit R berechnen lassen.
Hierzu gruppieren wir das Portfolio nach der eindeutigen ISIN-Wertpapierkennnummer und filtern auf alle Aktien, die öfter als 1 Mal in unserem Portfolio vorkommen und sortieren anschließend absteigend nach deren Gewichtung, so dass die am höchsten gewichteten Aktien ganz oben stehen:

portfolio %>%
  filter(Weight > 0) %>%
  filter(ISIN != "-") %>% 
  group_by(ISIN) %>% 
  filter(n()>1) %>%
  summarise(Weight = sum(Weight, na.rm = TRUE), Name = first(Name), Count=n(), Index = toString(sort(unique(Index)))) %>%
  arrange(desc(Weight))

Das Ergebnis sieht bei mir – Stand 19.2.2021 – folgendermaßen aus:

# A tibble: 102 x 5
   ISIN         Weight Name                   Count Index                 
   <chr>         <dbl> <chr>                  <int> <chr>                 
 1 US0378331005  4.39  APPLE INC                  2 MSCI World, Nasdaq 100
 2 US5949181045  3.53  MICROSOFT CORP             2 MSCI World, Nasdaq 100
 3 US0231351067  2.97  AMAZON COM INC             2 MSCI World, Nasdaq 100
 4 US88160R1014  1.43  TESLA INC                  2 MSCI World, Nasdaq 100
 5 US02079K1079  1.31  ALPHABET INC CLASS C       2 MSCI World, Nasdaq 100
 6 US30303M1027  1.30  FACEBOOK CLASS A INC       2 MSCI World, Nasdaq 100
 7 US02079K3059  1.25  ALPHABET INC CLASS A       2 MSCI World, Nasdaq 100
 8 US67066G1040  0.872 NVIDIA CORP                2 MSCI World, Nasdaq 100
 9 US70450Y1038  0.803 PAYPAL HOLDINGS INC        2 MSCI World, Nasdaq 100
10 US4581401001  0.614 INTEL CORPORATION CORP     2 MSCI World, Nasdaq 100
# … with 92 more rows

Wir sehen, es gibt zwischen Nasdaq 100 und MSCI World ETF (Spalte “Index”) insgesamt 102 Überschneidungen. In der Spalte “Weight” steht die Gesamt-Gewichtung in unserem Portfolio unter Berücksichtigung der einzelnen ETF-Gewichte, die wir oben bei der Definition des Portfolios angegeben haben.

Um abschließend einen Vergleich der Gewichtungen zu erhalten, wie das Portfolio ohne den Nasdaq 100 ETF aussähe, müsst ihr nur die Portfolio-Gewichte verändern und den Filter entfernen:

portfolio <- bind_rows(
  msci_world %>% mutate(Weight = 0.8*Weight),
  msci_emerging_markets %>% mutate(Weight = 0.2*Weight)
)

portfolio %>%
  filter(Weight > 0) %>%
  filter(ISIN != "-") %>% 
  group_by(ISIN) %>% 
  summarise(Weight = sum(Weight, na.rm = TRUE), Name = first(Name), Count=n(), Index = toString(sort(unique(Index)))) %>%
  arrange(desc(Weight))

Das Ergebnis ohne den Nasdaq 100 ETF ist in meinem Beispiel folgendes:

# A tibble: 2,401 x 5
   ISIN         Weight Name                               Count Index     
   <chr>         <dbl> <chr>                              <int> <chr>     
 1 US0378331005  3.31  APPLE INC                              1 MSCI World
 2 US5949181045  2.6   MICROSOFT CORP                         1 MSCI World
 3 US0231351067  2.09  AMAZON COM INC                         1 MSCI World
 4 TW0002330008  1.33  TAIWAN SEMICONDUCTOR MANUFACTURING     1 MSCI EM   
 5 KYG875721634  1.28  TENCENT HOLDINGS LTD                   1 MSCI EM   
 6 US01609W1027  1.17  ALIBABA GROUP HOLDING ADR REPRESEN     1 MSCI EM   
 7 IE00BQT3WG13  0.992 ISH MSCI CHINA A ETF USD ACC           1 MSCI EM   
 8 US30303M1027  0.976 FACEBOOK CLASS A INC                   1 MSCI World
 9 US02079K1079  0.944 ALPHABET INC CLASS C                   1 MSCI World
10 US02079K3059  0.936 ALPHABET INC CLASS A                   1 MSCI World
# … with 2,391 more rows

Wie man sieht, hat sich z.B. die Apple-Position durch 15% Hinzunahme des Nasdaq 100 ETFs von 3,31% Gewichtung auf 4,39% erhöht.

Zur Überprüfung meines Scripts könnt ihr auch einmal die Überschneidungen zwischen einem ETF auf den MSCI World und den MSCI Emerging Markets berechnen und erhaltet folgendes Ergebnis:

# A tibble: 1 x 5
  ISIN         Weight Name          Count Index     
  <chr>         <dbl> <chr>         <int> <chr>     
1 NL00150001Q9  0.056 STELLANTIS NV     2 MSCI World 

Wie zu erwarten gibt es keine relevante Überschneidung. Das einzige Ergebnis ist eine doppelte Position in den iShares-Daten im MSCI World.

Wenn ihr zusätzlich prüfen wollt, welche ETF Überschneidungen sich im Fall von Einzelaktien ergeben, könnt ihr das folgende Beispiel der Apple-Aktie verwenden:

apple <- tibble("Name" = "Apple", "ISIN" = "US0378331005", "Weight" = 100.0)
portfolio <- bind_rows(
  msci_world %>% mutate(Weight = 0.5*Weight),
  apple %>% mutate(Weight = 0.5*Weight)
)

Das Ergebnis ist – wie zu erwarten – eine sehr große Überschneidung:

# A tibble: 3 x 5
  ISIN         Weight Name                      Count Index     
  <chr>         <dbl> <chr>                     <int> <chr>     
1 US0378331005 52.1   APPLE INC                     2 MSCI World
2 NL00150001Q9  0.035 STELLANTIS NV                 2 MSCI World
3 -             0.015 CASH COLLATERAL USD BZFUT     2 MSCI World

Ich hoffe, das gibt Euch ein paar Tools an die Hand, um Eure Portfolio-Gewichtungen sichtbar zu machen.

Prüft ihr die ETF Überschneidungen in Eurem Portfolio aktuell? Falls ja, wie?

Disclaimer: Meine kostenlosen und freien Recherchen stellen meine persönliche Meinung dar und sind in keinster Weise eine Anlageempfehlung. Sie werden mit größtmöglicher Sorgfalt erstellt, aber sie können trotzdem ganz oder teilweise falsch sein. Daher übernehme ich keinerlei Haftung für Anlageentscheidungen, die auf Basis der hier vermittelten Informationen getroffen werden. Des Weiteren erhebt diese Website keinen Anspruch auf Vollständigkeit, Richtigkeit und Aktualität.

4 Gedanken zu „Wie prüfe ich ETF-Überschneidungen in meinem Portfolio?“

  1. Hi Chris, congratulations for your blog. It is really interesting. I was thinking on how to achieve the same and you found a way. When will you make the source code public? I am looking forward to learn and analyse & optimize my portofolio allocation.
    Best, Alex

    1. Hi Alex,

      thanks very much for your feedback!

      I know, I’m still owing you the source code and I’m really sorry for the delay. Lot’s of exciting tools to come here to my blog, that’s why it will take some time to prepare everything.

      If everything goes well, I plan to make the source code available by the mid of October. I would be glad if you come back again then and check it out.

      Best regards,
      Chris

    1. Hi Jim,

      vielen Dank für Deinen Kommentar!

      Ich werde in Kürze eine R-Library veröffentlichen, mit der auch Daten der DWS, Lyxor und einige andere ETF-Anbieter verarbeitet werden können.
      Das Prinzip ist aber dasselbe wie hier bereits gezeigt.

      Viele Grüße,
      Chris

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.