{"id":142839,"date":"2026-08-19T03:02:19","date_gmt":"2026-08-19T01:02:19","guid":{"rendered":"https:\/\/news.abusizz.ch\/ki-aktien-und-crash-szenarien-defensive-etfs-und-strategien-fuer-ein-krisenfestes-depot\/"},"modified":"2026-08-19T03:02:19","modified_gmt":"2026-08-19T01:02:19","slug":"ki-aktien-und-crash-szenarien-defensive-etfs-und-strategien-fuer-ein-krisenfestes-depot","status":"publish","type":"post","link":"https:\/\/news.abusizz.ch\/en\/ki-aktien-und-crash-szenarien-defensive-etfs-und-strategien-fuer-ein-krisenfestes-depot\/","title":{"rendered":"KI-Aktien und Crash-Szenarien: Defensive ETFs und Strategien f\u00fcr ein krisenfestes Depot"},"content":{"rendered":"<div>\n<div id=\"attachment_90720\" style=\"width: 410px\" class=\"wp-caption alignleft\">\n<p id=\"caption-attachment-90720\" class=\"wp-caption-text\">Fundamental gewichtete ETFs bieten einen effektiven Schutz vor Klumpenrisiken, indem sie sich auf reale Wirtschaftsdaten statt auf die reine Marktkapitalisierung fokussieren. (KI-Bild: ftd.de-Redaktion mit Magnific AI)<\/p>\n<\/div>\n<p>KI, Chips, Rechenzentren und Weltraumfantasien treiben die B\u00f6rsen auf Rekordh\u00f6hen. Die Warnlampen blinken: hohe Bewertungen, Euphorie und ein enormer Kapitalstrom in wenige Mega-Titel. Doch von einer klassischen Blase kann keine Rede sein, sagen die Bullen. Denn hinter dem Kursfeuerwerk stehen diesmal tats\u00e4chlich steigende Gewinne. F\u00fcr Anleger stellt sich deshalb eine entscheidende Frage: Wo endet fundamentaler R\u00fcckenwind \u2013 und wo beginnt der Wahnsinn? 3 ETFs zeigen, wie sich abseits des gro\u00dfen KI-Hypes gezielt investieren l\u00e4sst.<\/p>\n<h3>Mr. Market hat wieder gute Laune<\/h3>\n<p>Warren Buffett hatte f\u00fcr die B\u00f6rse eine ziemlich einfache Erkl\u00e4rung. Sie leide unter einem Mann namens \u201eMr. Market\u201c, schrieb der Berkshire-Hathaway-Chef bereits vor Jahrzehnten. Dieser sei emotional instabil: Heute sieht er die Welt in den sch\u00f6nsten Farben, morgen h\u00e4lt er sie f\u00fcr einen Katastrophenfall. Im Sommer 2026 ist Mr. Market offensichtlich in bester Stimmung: Der S&amp;P 500 notiert nahe dem Rekordhoch, viele europ\u00e4ische und asiatische B\u00f6rsen haben ebenfalls neue H\u00f6chstst\u00e4nde erreicht. Und das trotz eines Umfelds, das eigentlich wenig nach B\u00f6rsenparty aussieht: geopolitische Spannungen, hohe \u00d6lpreise, erh\u00f6hte Anleiherenditen und Unsicherheit \u00fcber die weitere Geldpolitik.<\/p>\n<p>Das weckt Erinnerungen an vergangene Blasen. An die Dotcom-Manie. An japanische Aktien Ende der 1980er-Jahre. An die Eisenbahn-Spekulation des 19. Jahrhunderts. Und sogar an die Tulpenmanie. Doch genau hier beginnt das Problem: Ist diesmal wirklich alles anders? Die Antwort lautet: vielleicht. Oder vielleicht auch nicht?<\/p>\n<h3>Was eine Blase tats\u00e4chlich ausmacht<\/h3>\n<p>Eine B\u00f6rsenblase erkennt man leider nicht daran, dass Aktien teuer aussehen. Ein Unternehmen, dessen Gewinn sich vervielfacht, darf schlie\u00dflich auch an der B\u00f6rse deutlich mehr wert sein. Das entscheidende Kriterium ist deshalb nicht der Kursanstieg allein. Es ist die Entkopplung des Kurses von den Fundamentaldaten. Typisch ist ein bestimmtes Muster: Eine neue Technologie oder ein neues Gesch\u00e4ftsmodell taucht auf. Anleger entdecken eine gro\u00dfe Zukunftsvision. Die ersten Investoren verdienen viel Geld. Weitere Anleger springen auf. Die Kurse steigen. Die steigenden Kurse werden wiederum zum Argument f\u00fcr noch h\u00f6here Kurse. Irgendwann ersetzt die Story die Analyse.<\/p>\n<p>\u201eDiesmal ist alles anders\u201c ist dann der Satz, der besonders gef\u00e4hrlich wird.<\/p>\n<p>Denn tats\u00e4chlich kann eine neue Technologie die Welt ver\u00e4ndern. Das Problem beginnt dort, wo Anleger daraus schlie\u00dfen, dass jedes Unternehmen, das mit dieser Technologie zu tun hat, automatisch ein gutes Investment sein muss. So war es bei den Eisenbahnen. Bei der Elektrifizierung. Beim Internet. Und nun m\u00f6glicherweise bei der k\u00fcnstlichen Intelligenz.<\/p>\n<h3>5 Warnsignale \u2013 aber noch kein endg\u00fcltiger Blasenbeweis<\/h3>\n<p>Wer wissen will, ob sich die B\u00f6rse in gef\u00e4hrliches Terrain bewegt, sollte auf mehrere Indikatoren gleichzeitig schauen.<\/p>\n<ol>\n<li><strong>Die Bewertung:<\/strong> Das Shiller-KGV des S&amp;P 500 ist auf \u00fcber 40 gestiegen und damit historisch extrem hoch. Nur rund um die Jahrtausendwende waren die Werte noch h\u00f6her. Das ist zweifellos ein Warnsignal. Gleichzeitig ist das Shiller-KGV kein Crash-Orakel. Hohe Bewertungen k\u00f6nnen \u00fcber Jahre hoch bleiben \u2013 und zwischenzeitlich sogar weiter steigen.<\/li>\n<li><strong>Die Marktkapitalisierung im Verh\u00e4ltnis zur Wirtschaftsleistung:<\/strong> Der sogenannte Buffett-Indikator signalisiert ebenfalls eine ambitionierte Bewertung des US-Aktienmarkts. Das Verh\u00e4ltnis von B\u00f6rsenwert zu BIP liegt weit \u00fcber den historischen Durchschnittswerten. Aber auch hier gilt: Ein steigender Anteil b\u00f6rsennotierter Unternehmen an der globalen Wertsch\u00f6pfung, h\u00f6here Gewinnmargen und die zunehmende Bedeutung kapitalstarker Technologieunternehmen ver\u00e4ndern die Vergleichsma\u00dfst\u00e4be. Der Indikator ist deshalb eher ein Thermometer als ein Alarmschalter.<\/li>\n<li><strong>Die Konzentration:<\/strong> Ein gro\u00dfer Teil der globalen Aktienrendite wurde zuletzt von einer relativ kleinen Gruppe von Technologiekonzernen getragen. Nvidia, Microsoft, Alphabet, Amazon &amp; Co. sind inzwischen so gro\u00df, dass ihre Kursbewegungen ganze Indizes bewegen. Das ist gef\u00e4hrlich \u2013 aber nicht zwangsl\u00e4ufig irrational. Denn die Gewinne wachsen tats\u00e4chlich kr\u00e4ftig. F\u00fcr das 2. Quartal 2026 werden beim S&amp;P 500 rund 23 Prozent Gewinnwachstum erwartet. Auch au\u00dferhalb der Magnificent Seven ist die Dynamik inzwischen bemerkenswert. F\u00fcr die \u00fcbrigen 493 Unternehmen werden rund 23 Prozent Gewinnwachstum erwartet, w\u00e4hrend die Magnificent Seven auf gut 31 Prozent kommen sollen. Das ist der wichtigste Einwand gegen die Blasenthese.<\/li>\n<li><strong>Die Spekulation auf Kredit:<\/strong> Wo Anleger mit geliehenem Geld kaufen, wird aus Optimismus schnell ein Brandbeschleuniger. Fallen die Kurse, m\u00fcssen gehebelte Investoren Positionen verkaufen. Das dr\u00fcckt die Kurse weiter. Aus einem normalen R\u00fccksetzer kann so eine Kettenreaktion werden.<\/li>\n<li><strong>Neue B\u00f6rsenfantasien:<\/strong> B\u00f6rsenblasen brauchen Geschichten. Und die aktuelle B\u00f6rse hat davon reichlich: k\u00fcnstliche Intelligenz, humanoide Roboter, Weltraumwirtschaft, Quantencomputer, autonome Systeme. Das allein macht diese Branchen nicht zur Blase. Aber es sollte Anleger hellh\u00f6rig machen, wenn Bewertungen zunehmend mit dem Marktpotenzial eines Gesch\u00e4ftsmodells und immer weniger mit dessen tats\u00e4chlich erwirtschafteten Cashflows begr\u00fcndet werden.<\/li>\n<\/ol>\n<h3>Der Gegenbeweis: Vielleicht ist die B\u00f6rse gar nicht verr\u00fcckt<\/h3>\n<p>Jetzt kommt die andere Seite der Geschichte. Die Bullen haben ein starkes Argument: Aktienkurse sind gestiegen, aber die Gewinne sind noch schneller gestiegen. Das l\u00e4sst sich inzwischen tats\u00e4chlich beobachten. Das erwartete KGV des S&amp;P 500 liegt derzeit ungef\u00e4hr bei 20 und damit zwar \u00fcber dem langfristigen Durchschnitt, aber deutlich unter den noch h\u00f6heren Niveaus zu Jahresbeginn. Die Gewinnsch\u00e4tzungen wurden gleichzeitig kr\u00e4ftig nach oben genommen. Mit anderen Worten: Der Markt ist teurer als fr\u00fcher \u2013 aber nicht zwingend teurer geworden, nur weil die Kurse gestiegen sind. Das ist ein gewaltiger Unterschied.<\/p>\n<p>Hinzu kommt, dass die Rally inzwischen breiter geworden ist. Nicht mehr nur Halbleiter und Cloud-Aktien steigen. Energie, Banken, Industrie und andere <a href=\"https:\/\/www.ftd.de\/boerse\/anlagestrategie\/value-aktien-anlagechancen-auf-warren-buffetts-spuren\/\" target=\"_blank\" rel=\"noopener\">Value-Bereiche<\/a> haben ebenfalls R\u00fcckenwind bekommen. Auch die Gewinne der Unternehmen au\u00dferhalb der Tech-Elite wachsen wieder deutlich.<\/p>\n<p>Morningstar kommt deshalb zu einer bemerkenswert anderen Einsch\u00e4tzung: Der US-Aktienmarkt habe sich im Jahresverlauf sogar st\u00e4rker in Richtung fairer Bewertung bewegt. Auf Basis der eigenen Bewertungsmodelle wurde der Markt Ende Juni rund 8 Prozent unter dem gesch\u00e4tzten Fair Value gesehen.<\/p>\n<p>Blase oder Boom? Die Wahrheit liegt vermutlich irgendwo dazwischen.<\/p>\n<h3>Das eigentliche Risiko hei\u00dft Erwartungsmanagement<\/h3>\n<p>Das gr\u00f6\u00dfte Problem der B\u00f6rse ist derzeit vielleicht nicht Nvidia. Es ist die Erwartungshaltung. Denn die Messlatte liegt hoch. Wenn Unternehmen ihre Gewinne um 20 oder 30 Prozent steigern, k\u00f6nnen hohe Bewertungen durchaus gerechtfertigt sein. Wenn sich das Gewinnwachstum aber normalisiert und die Anleger weiterhin dieselben Multiplikatoren zahlen wollen, wird es unangenehm.<\/p>\n<p><span style=\"font-weight: 400;\">\t\t<\/p>\n<div data-elementor-type=\"section\" data-elementor-id=\"66052\" class=\"elementor elementor-66052\" data-elementor-post-type=\"elementor_library\">\n<section class=\"elementor-section elementor-top-section elementor-element elementor-element-329e521 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"329e521\" data-element_type=\"section\" data-e-type=\"section\">\n<div class=\"elementor-container elementor-column-gap-default\">\n<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-d5ce7cd\" data-id=\"d5ce7cd\" data-element_type=\"column\" data-e-type=\"column\">\n<div class=\"elementor-widget-wrap elementor-element-populated\">\n<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-1ae567f elementor-reverse-mobile elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"1ae567f\" data-element_type=\"section\" data-e-type=\"section\" data-settings='{\"background_background\":\"gradient\"}'>\n<div class=\"elementor-container elementor-column-gap-default\">\n<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-99f564a\" data-id=\"99f564a\" data-element_type=\"column\" data-e-type=\"column\">\n<div class=\"elementor-widget-wrap elementor-element-populated\">\n<div class=\"elementor-element elementor-element-fdcd32f elementor-widget elementor-widget-image\" data-id=\"fdcd32f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\"src=\"\" title=\"comdirect-logo\" alt=\"comdirect-logo\" loading=\"lazy\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-14abf6e\" data-id=\"14abf6e\" data-element_type=\"column\" data-e-type=\"column\">\n<div class=\"elementor-widget-wrap elementor-element-populated\">\n<div class=\"elementor-element elementor-element-c446c65 elementor-absolute elementor-widget elementor-widget-text-editor\" data-id=\"c446c65\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings='{\"_position\":\"absolute\"}' data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p style=\"font-size: 12px; color: #999999; text-align: center;\">Anzeige<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"elementor-element elementor-element-61031b6 elementor-widget elementor-widget-heading\" data-id=\"61031b6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h4 class=\"elementor-heading-title elementor-size-default\">ETFs &amp; Aktien einfach kaufen. <span style=\"color: #216CAD\">Beim Testsieger.<\/span><\/h4>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"elementor-element elementor-element-064cf94 elementor-widget elementor-widget-text-editor\" data-id=\"064cf94\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p class=\"sc-ERObt iaSbiG\">Deutschlands bestes Online-Depot.<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"elementor-element elementor-element-235f1d2 elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"235f1d2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-list.default\">\n<div class=\"elementor-widget-container\">\n<ul class=\"elementor-icon-list-items\">\n<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\"><br \/>\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"far fa-circle\"><\/i>\t\t\t\t\t\t<\/span><br \/>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">+240 kostenlose ETF-Sparpl\u00e4ne<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\"><br \/>\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"far fa-circle\"><\/i>\t\t\t\t\t\t<\/span><br \/>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">3,90\u20ac Ordergeb\u00fchren pro Kauf<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\"><br \/>\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"far fa-circle\"><\/i>\t\t\t\t\t\t<\/span><br \/>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Durch die BaFin reguliert<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n<\/ul><\/div>\n<\/p><\/div>\n<div class=\"elementor-element elementor-element-526ff37 elementor-widget elementor-widget-html\" data-id=\"526ff37\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"button-container\">\n        <a class=\"box-affiliate\" href=\"https:\/\/www.ftd.de\/go\/comdirect-depot\/\/\" target=\"_blank\">Zur comdirect*<\/a>\n    <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/section><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/section><\/div>\n<p>\t\t<\/span><\/p>\n<p>Genau hier liegt die Achillesferse der KI-Rally. Die Investitionen in Rechenzentren und Halbleiter sind gigantisch. Microsoft, Amazon, Alphabet und andere Konzerne stecken Milliarden in Infrastruktur. Der Markt muss irgendwann sehen, dass daraus auch dauerhaft h\u00f6here Ums\u00e4tze und Gewinne entstehen. Solange das gelingt, ist die Rally fundamental unterf\u00fcttert. Wenn nicht, wird aus der KI-Story sehr schnell eine Bewertungsstory. Und Bewertungsstories haben an der B\u00f6rse meist ein Ablaufdatum.<\/p>\n<h3>Anleger m\u00fcssen deshalb nicht aus Aktien fliehen<\/h3>\n<p>Die falsche Reaktion w\u00e4re allerdings, jetzt das gesamte Depot zu verkaufen und auf den gro\u00dfen Crash zu warten. Das musste schon Alan Greenspan erfahren. Der damalige Fed-Chef warnte 1996 vor \u201eirrational exuberance\u201c \u2013 doch die Nasdaq stieg danach noch jahrelang weiter. Eine Blase kann l\u00e4nger rational aussehen, als Anleger es f\u00fcr m\u00f6glich halten. Und ein teurer Markt muss nicht zwangsl\u00e4ufig morgen fallen.<\/p>\n<p>F\u00fcr Anleger spricht deshalb einiges f\u00fcr einen Mittelweg: nicht aus dem Aktienmarkt fliehen, sondern die Abh\u00e4ngigkeit von den teuersten Segmenten reduzieren. Genau hier kommt die Sektorrotation ins Spiel. Denn w\u00e4hrend KI, Halbleiter und die gro\u00dfen US-Techkonzerne die Schlagzeilen dominieren, fristen andere Bereiche ein Schattendasein. Gesundheit etwa, Basiskonsumg\u00fcter oder klassische Value-Aktien. Sie sind nicht automatisch Schn\u00e4ppchen. Aber ihre Bewertungen, Gesch\u00e4ftsmodelle und Renditetreiber unterscheiden sich deutlich von denen der gro\u00dfen KI-Gewinner.<\/p>\n<p>Wer also nicht auf den Crash wetten, sondern sein Depot robuster aufstellen will, kann gezielt dort investieren, wo die B\u00f6rsenfantasie zuletzt weniger \u00fcppig ausgefallen ist.<\/p>\n<p>3 ETFs zeigen, wie Anleger genau diese Gegenposition spielen k\u00f6nnen.<\/p>\n<h4>ETF-Tipp 1: Gesundheit \u2013 wenn die B\u00f6rse wieder defensiver wird<\/h4>\n<p>Amundi bietet mit dem <a href=\"https:\/\/www.amundietf.de\/de\/privatanleger\/products\/equity\/amundi-sp-world-health-care-screened-ucits-etf-dist\/ie000jks50v3\" target=\"_blank\" rel=\"noopener\">Amundi S&amp;P World Health Care Screened UCITS ETF<\/a> (ISIN: IE0006FM6MI8), eine interessante M\u00f6glichkeit, gezielt auf den Gesundheitssektor zu setzen.<\/p>\n<p>Der ETF investiert in 83 gro\u00dfe und mittelgro\u00dfe Gesundheitsunternehmen aus den Industriel\u00e4ndern und ber\u00fccksichtigt dabei ESG-Kriterien. Die j\u00e4hrlichen Kosten liegen bei nur 0,18 Prozent. Der ETF wird physisch repliziert und thesauriert die Ertr\u00e4ge. Das Portfolio ist allerdings alles andere als ein defensiver Allerweltskorb. Knapp 54 Prozent entfallen auf die 10 gr\u00f6\u00dften Positionen. Ganz oben stehen Eli Lilly mit rund 11,7 Prozent, AbbVie mit 7,4 Prozent und AstraZeneca mit 5,4 Prozent. Die USA stellen rund 69 Prozent des Portfolios.<\/p>\n<p>Das macht den ETF zu einer Wette auf die gro\u00dfen Gewinner des medizinischen Fortschritts. Alternde Gesellschaften, steigende Gesundheitsausgaben, neue Krebsmedikamente und der Boom der GLP-1-Therapien sprechen f\u00fcr den Sektor. Gleichzeitig lauern politische Risiken. Medikamentenpreise, staatliche Preisverhandlungen und regulatorische Eingriffe k\u00f6nnen die Gewinnmodelle der Pharmariesen empfindlich treffen.<\/p>\n<p>\u00a0<\/p>\n<div class=\"chartwrapper\" id=\"chartwrapper\" data-chartid=\"6a842bcf2bbc2\"><\/div>\n<p>    <script id=\"tvChartLoader\" async src=\"https:\/\/unpkg.com\/lightweight-charts@4.2.0\/dist\/lightweight-charts.standalone.production.js\"><\/script><\/p>\n<p>    <script id=\"declarations\">\n    var chartid = \"6a842bcf2bbc2\";\n    function renderTV(kursData, chartData,companyName,currency, chartHeight, chartWidth, code, exchange, kursDate, hidetitle, hidelegend, chartid) {      \n    \tconsole.log(\"render chart with id\", document.querySelector(`[data-chartid=\"${chartid}\"]`));\n        let width = chartWidth?chartWidth:600;\n        let ratio = 2\n        let height = chartHeight?chartHeight:(width\/ratio);\n        document.querySelector(`[data-chartid=\"${chartid}\"]`).style.height = chartHeight +50\n        document.querySelector(`[data-chartid=\"${chartid}\"]`).style.width = chartWidth<\/p>\n<p>        \/\/ formatter for x achis dates\n        function customXAchsisFormetter(timePoint, tickMarkType, locale) {\n            let formatOptions = {};\n            const date = new Date(timePoint);<\/p>\n<p>            if(tickMarkType <=1){\n                formatOptions = {day: \"numeric\", month: \"short\",year: \"numeric\",}\n\n            }else{\n                formatOptions = {day: \"numeric\", month: \"short\",year: \"numeric\",}\n            }\n            \/\/ from given date we should use only as UTC date or timestamp\n            \/\/ but to format as locale date we can convert UTC date to local date\n            const localDateFromUtc = new Date(\n                date.getUTCFullYear(),\n                date.getUTCMonth(),\n                date.getUTCDate()\n            );\n\n            return localDateFromUtc.toLocaleString(locale, formatOptions);\n        }\n\n        \/\/create buttons\n        function createSimpleSwitcher(items, activeItem, activeItemChangedCallback) {\n            var switcherElement = document.createElement(\"div\");\n            switcherElement.classList.add(\"switcher\");\n\n            var intervalElements = items.map(function (item) {\n                var itemEl = document.createElement(\"button\");\n                itemEl.innerText = item;\n                itemEl.classList.add(\"switcher-item\");\n                itemEl.classList.toggle(\"switcher-active-item\", item === activeItem);\n                itemEl.addEventListener(\"click\", function () {\n                    onItemClicked(item);\n                });\n                switcherElement.appendChild(itemEl);\n                return itemEl;\n            });\n\n            function onItemClicked(item) {\n                if (item === activeItem) {\n                    return;\n                }\n\n                intervalElements.forEach(function (element, index) {\n                    element.classList.toggle(\"switcher-active-item\", items[index] === item);\n                });\n\n                activeItem = item;\n\n                activeItemChangedCallback(item);\n            }\n\n            return switcherElement;\n        }\n        \/\/ loading: true or false\n        function handleAsyncUI(loading){\n            var IntervalButtons = document.getElementsByClassName(\"switcher-item\");\n             for(var i = 0; i < IntervalButtons.length; i++){\n                IntervalButtons[i].disabled = loading;\n             } \n             var chart = document.getElementsByClassName(\"tv-lightweight-charts\")[0];\n             if(loading){\n            \n            chart.style[\"display\"] = \"flex\"\n            chart.style[\"align-items\"] = \"center\"\n            chart.style[\"justify-content\"] = \"center\"\n\n            var loadingIndicator = document.createElement(\"div\");\n            loadingIndicator.classList.add(\"loader\");\n            \/\/loadingIndicator.innerText = \"Loading\";\n            loadingIndicator.id =\"loadingIndicator\"\n            chart.appendChild(loadingIndicator);\n             }else{\n            document.getElementById(\"loadingIndicator\").remove();\n            chart.style[\"display\"] = null\n            chart.style[\"align-items\"] =null\n            chart.style[\"justify-content\"] = null\n             }\n\n        }\n        var intervals = [\"1M\",\"3M\",\"6M\",\"1Y\",\"3Y\",\"5Y\"];\n        var seriesesData = new Map([\n            [\"1M\", []], \/\/ 1m (interval daten?), 3m, 6m, 1y, 3y, 5y\n            [\"3M\", []],\n            [\"6M\", []],\n            [\"1Y\", chartData],\n            [\"3Y\", []],\n            [\"5Y\", []],\n        ]);\n        var switcherElement = createSimpleSwitcher(intervals, intervals[3], syncToInterval);\n        var chartElement = document.createElement(\"div\");\n        const chart = LightweightCharts.createChart(chartElement, {\n            width: width,\n            height: height,\n            rightPriceScale: {\n                scaleMargins: {\n                    top: 0.2,\n                    bottom: 0.2,\n                },\n                borderVisible: false,\n            },\n            timeScale: {\n                borderVisible: false,\n                lockVisibleTimeRangeOnResize: true,\n\n                rightOffset:1,\n                tickMarkFormatter:customXAchsisFormetter\n\n            },\n            grid: {\n                horzLines: {\n                    color: \"#eee\",\n                    visible: false,\n                },\n                vertLines: {\n                    color: \"#ffffff\",\n                },\n            },\n            crosshair: {\n                horzLine: {\n                    visible: false,\n                    labelVisible: false\n                },\n                vertLine: {\n                    visible: true,\n                    style: 0,\n                    width: 2,\n                    color: \"rgba(80, 50, 25, 0.1)\",\n                    labelVisible: false,\n                }\n            },\n            handleScroll: {\n                mouseWheel: false,\n                pressedMouseMove: false,\n                horzTouchDrag: false,\n                vertTouchDrag: false\n            },\n            handleScale: {\n                axisPressedMouseMove: false,\n                mouseWheel: false,\n                pinch: false,\n            },\n        });\n        var areaSeries = null;\n        var positionDIV = document.querySelector(`[data-chartid=\"${chartid}\"]`)\n        positionDIV.appendChild(chartElement);\n        positionDIV.appendChild(switcherElement);\n        function httpGetAsync(theUrl, callback) {\n            var xmlHttp = new XMLHttpRequest();\n            xmlHttp.onreadystatechange = function () {\n                if (xmlHttp.readyState == 4 &#038;&#038; xmlHttp.status == 200)\n                    callback(xmlHttp.responseText);\n            }\n            xmlHttp.open(\"GET\", theUrl, true); \/\/ true for asynchronous \n            xmlHttp.send(null);\n        }\n        function formatDate(date) {\n            \n            var month = \"\" + (date.getMonth()+1);\n            var day = \"\" + date.getDate();\n            var year = date.getFullYear();\n\n            if (month.length < 2) \n                month = \"0\" + month;\n            if (day.length < 2) \n                day = \"0\" + day;\n            return [year, month, day].join(\"-\");\n        }\n        function getTimeframe(interval){\n            let from = null;\n            let to = formatDate(new Date());\n            switch (interval) {\n                case \"1M\": from = formatDate(new Date(Date.now() - 31 * 24 * 60 * 60 * 1000)); break;\n                case \"3M\": from = formatDate(new Date(Date.now() - 93 * 24 * 60 * 60 * 1000)); break;\n                case \"6M\": from = formatDate(new Date(Date.now() - 186 * 24 * 60 * 60 * 1000)); break;\n                case \"1Y\": from = formatDate(new Date(Date.now() - 372 * 24 * 60 * 60 * 1000)); break;\n                case \"3Y\": from = formatDate(new Date(Date.now() - 1116 * 24 * 60 * 60 * 1000)); break;\n                case \"5Y\": from = formatDate(new Date(Date.now() - 1860 * 24 * 60 * 60 * 1000)); break;\n                default:from = formatDate(new Date(Date.now() - 372 * 24 * 60 * 60 * 1000));\n                \n                }\n            return {from:from, to:to}\n        }\t\n        \/\/ what happens on button click\n        function syncToInterval(interval) {\n            if (areaSeries &#038;&#038; seriesesData.get(interval).length <=0) {\n                console.log(\"GETTING REMOTE DATA\")\n\n                chart.removeSeries(areaSeries);\n                areaSeries = null;\n                let apiToken = \"za1j116n2273ab1vxukuh6\"\n                let timeframe = getTimeframe(interval)\n                let filter = \"adjusted_close\"\n                handleAsyncUI(true)\t\t\t\t\t\t\n                httpGetAsync(\"https:\/\/api.leeway.tech\/api\/v1\/public\/historicalquotes\/\"+encodeURIComponent(code+\".\"+exchange)+\"?apitoken=\"+apiToken+\"&#038;filter=\"+filter+\"&#038;from=\"+timeframe.from+\"&#038;to=\"+timeframe.to, function (res) {\t\n                    let newData = []\n                    newData = JSON.parse(res)\/\/.map(el=>newData.push({time:el.date, value:el.close}))\n                    \/\/ newData = newData.map(el=>{\n                    \/\/     console.log(el.time.year)\n                    \/\/     console.log(el.time.month)\n                    \/\/     console.log(el.time.day)\n                    \/\/     console.log(el)\n                    \/\/     console.log(new Date(el.time.year, el.time.month-1, el.time.day));\n                    \/\/     return{value:el.value, time:el.time, timestamp:new Date(el.time.year, el.time.month-1, el.time.day).getTime()}})\n                    console.log(\"newData\")\n                    console.log(newData)\n                    seriesesData.set(interval, newData)\n                    areaSeries = chart.addAreaSeries({\n                        topColor: \"rgba(33, 108, 173, 0.56)\",\n                        bottomColor: \"rgba(33, 108, 173, 0.04)\",\n                        lineColor: \"rgba(33, 108, 173, 1)\",\n                    lineWidth: 2,\n                });\n                kursData = seriesesData.get(interval)[seriesesData.get(interval).length-1].value\n                areaSeries.setData(seriesesData.get(interval));\n                chart.timeScale().fitContent();\n                handleAsyncUI(false)\t\n                    })\n            }else{\n                console.log(\"GETTING LOADED DATA\")\n                if(areaSeries){\n                    console.log(\"DELETING  LOADED DATA FROM CHART\")\n                    chart.removeSeries(areaSeries);\n                    areaSeries = null;\n                }\n                kursData = seriesesData.get(interval)[seriesesData.get(interval).length-1].value\n                areaSeries = chart.addAreaSeries({\n                topColor: \"rgba(33, 108, 173, 0.56)\",\n                bottomColor: \"rgba(33, 108, 173, 0.04)\",\n                lineColor: \"rgba(33, 108, 173, 1)\",\n                lineWidth: 2,\n            });\n            areaSeries.setData(seriesesData.get(interval));<\/p>\n<p>            chart.timeScale().fitContent();\n            }<\/p>\n<p>        }\n        \/\/ data interval at startup\n        syncToInterval(intervals[3]);\n        \/\/ Name and Kurs as Text in legend<\/p>\n<p>        var watermark = document.createElement(\"img\")\n        watermark.classList.add(\"watermark\")\n        watermark.setAttribute(\"src\", \"https:\/\/api.leeway.tech\/leeway-sign.png\")\n        var testA = document.querySelector(`[data-chartid=\"${chartid}\"]`)\n        var testB = document.querySelector(`[data-chartid=\"${chartid}\"]`).getBoundingClientRect();\n        var test =  testA.getElementsByTagName(\"canvas\")[0].getBoundingClientRect();\n        watermark.style.position = \"absolute\";\n        watermark.style.width = \"90px\";\n        watermark.style.height = \"30px\";\n        watermark.style.display = \"block\";\n        \/\/watermark.style.z-index = \"1000000\";\n        watermark.style.bottom = \"0\";\n        watermark.style.right = \"10px\";<\/p>\n<p>        let linkLW = document.createElement(\"a\")\n        linkLW.href=\"https:\/\/www.ftd.de\/leeway-tech\";\n        linkLW.target = \"_blank\";\n        linkLW.appendChild(watermark)\n        \/\/ append to DOM<\/p>\n<p>        \/\/div-chartwrapper -> div -> div ->  table  -> tr ->  td td -> div\n        const myElementA = document.querySelector(`[data-chartid=\"${chartid}\"]`);\n        let myElementB = myElementA.childNodes[0]\n        let myElementC = myElementB.childNodes[0]\n        let myElementD = myElementC.childNodes[0]\n        let myElementE = myElementD.childNodes[0]\n        let myElementF = myElementE.childNodes[1]\n        let myElementG = myElementF.childNodes[0]\n        myElementG.appendChild(linkLW);<\/p>\n<p>        if(hidelegend == \"false\"){\n            console.log(\"SHOW LEGEND!\")\n            var legend = document.createElement(\"div\");\n            legend.classList.add(\"legend\");\n            var offsets = document.querySelector(`[data-chartid=\"${chartid}\"]`).getBoundingClientRect();\n            var chartwrapperTop = offsets.top;<\/p>\n<p>            var legendHeight = height *-1\n            if(legendHeight>-210){legendHeight = -210;}\n            legend.style.top = legendHeight*1.2  + \"px\"\n            positionDIV.appendChild(legend);<\/p>\n<p>            if(hidetitle == \"false\"){\n                var firstRow = document.createElement(\"div\");\n                firstRow.classList.add(\"titleText\");\t<\/p>\n<p>            }<\/p>\n<p>            var secondRow = document.createElement(\"div\");\n            secondRow.classList.add(\"secondRow\");\t<\/p>\n<p>            if(kursData !== null){\n                if(hidetitle == \"false\"){\n                    firstRow.innerText = companyName\n                    legend.appendChild(firstRow);\n                }<\/p>\n<p>                secondRow.innerText = kursDate +\": \" + Number(kursData).toFixed(2) + \" \"+currency;\n                 legend.appendChild(secondRow);\n            }else{\n                if(hidetitle == \"false\"){\n                    firstRow.innerText = companyName\n                    legend.appendChild(firstRow);\n                }<\/p>\n<p>                legend.appendChild(secondRow);\n            }<\/p>\n<p>            \/\/ cursor moving and handling third row of legend\n            chart.subscribeCrosshairMove((param) => {\n                if (param.time) {\n                    let options = { weekday: \"short\", year: \"numeric\", month: \"numeric\", day: \"numeric\" };\n                    let currentDate = new Date(param.time).toLocaleDateString(\"de-DE\", options)\n                    const price = param.seriesData.get(areaSeries).value;\n                    secondRow.innerText = currentDate + \":  \" + price.toFixed(2) + \" \"+(currency?currency:\" \");\n                }\n            else {\n                secondRow.innerText = kursDate +\": \" + Number(kursData).toFixed(2) + \" \"+currency;<\/p>\n<p>            }\n            });<\/p>\n<p>        }<\/p>\n<p>    }\n    function httpGetAsync(theUrl, callback) {\n            var xmlHttp = new XMLHttpRequest();\n            xmlHttp.onreadystatechange = function () {\n                if (xmlHttp.readyState == 4 && xmlHttp.status == 200)\n                    callback(xmlHttp.responseText);\n            }\n            xmlHttp.open(\"GET\", theUrl, true); \/\/ true for asynchronous \n            xmlHttp.send(null);\n        };\n    function getTimeframe(interval){\n            let from = null;\n            let to = formatDate(new Date());\n            switch (interval) {\n                case \"1M\": from = formatDate(new Date(Date.now() - 31 * 24 * 60 * 60 * 1000)); break;\n                case \"3M\": from = formatDate(new Date(Date.now() - 93 * 24 * 60 * 60 * 1000)); break;\n                case \"6M\": from = formatDate(new Date(Date.now() - 186 * 24 * 60 * 60 * 1000)); break;\n                case \"1Y\": from = formatDate(new Date(Date.now() - 372 * 24 * 60 * 60 * 1000)); break;\n                case \"3Y\": from = formatDate(new Date(Date.now() - 1116 * 24 * 60 * 60 * 1000)); break;\n                case \"5Y\": from = formatDate(new Date(Date.now() - 1860 * 24 * 60 * 60 * 1000)); break;\n                default:from = formatDate(new Date(Date.now() - 372 * 24 * 60 * 60 * 1000));<\/p>\n<p>                }\n            return {from:from, to:to}\n        };\n        function formatDate(date) {<\/p>\n<p>            var  month = \"\" + (date.getMonth()+1);\n            var   day = \"\" + date.getDate();\n            var   year = date.getFullYear();<\/p>\n<p>            if (month.length < 2) \n                month = \"0\" + month;\n            if (day.length < 2) \n                day = \"0\" + day;\n\n            return [year, month, day].join(\"-\");\n        };\n    <\/script><br \/>\n    <script id=\"main\"><\/p>\n<p>    var scriptTV = document.querySelector(\"#tvChartLoader\");\n    scriptTV.addEventListener(\"load\", function() {\n        var chartid = \"6a842bcf2bbc2\";<\/p>\n<p>        var companyName = \"Amundi S+P Global Health Care ESG UCITS ETF DR EUR Acc\";\n        if(companyName.length <=0){\n        companyName = \"WELS - XETRA\";\n        }\n        var code = \"WELS\";\n        var exchange = \"XETRA\";\n        var currency =\"EUR\";\n        var kursData = null;\n        var kursDataDate = null;\n        var chartHeight = \"\";\n        var chartWidth = \"250\"\n        var hidetitle = \"false\"\n        var hidelegend = \"false\"\n        let apiToken = \"za1j116n2273ab1vxukuh6\"\n        chartWidth = document.querySelector(`[data-chartid=\"${chartid}\"]`).offsetWidth\n        var chartData = [];\n        var timeframe = getTimeframe(\"1Y\");\n        var filter = \"adjusted_close\";\n        \n        httpGetAsync(\"https:\/\/api.leeway.tech\/api\/v1\/public\/historicalquotes\/\"+encodeURIComponent(code+\".\"+exchange)+\"?apitoken=\"+apiToken+\"&#038;filter=\"+filter+\"&#038;from=\"+timeframe.from+\"&#038;to=\"+timeframe.to, function (res) {\t\n            let newData = null;\n             chartData = newData = JSON.parse(res)\n            \/\/ chartData =  chartData.map(el=>{return{value:el.value, time:el.time, timestamp:new Date(el.time.year, el.time.month-1, el.time.day).getTime()}})\n             kursData = chartData[chartData.length-1].value\n             let options = { weekday: \"short\", year: \"numeric\", month: \"numeric\", day: \"numeric\" };\n             kursDataDate = chartData[chartData.length-1].time\n             let kursDate = new Date(kursDataDate.split(\"-\")[0], Number(kursDataDate.split(\"-\")[1])-1, kursDataDate.split(\"-\")[2]).toLocaleDateString(\"de-DE\", options)<\/p>\n<p>             renderTV(kursData,chartData,companyName,currency, Number(chartHeight), Number(chartWidth), code, exchange, kursDate, hidetitle, hidelegend, chartid)\n        });\n    });\n<\/script><\/p>\n<ul>\n<li><strong>Das F\u00fcr:<\/strong> strukturelles Wachstum, hohe Eintrittsbarrieren und weniger Abh\u00e4ngigkeit von der KI-Euphorie.<\/li>\n<li><strong>Das Wider:<\/strong> politische Preisrisiken, hohe Konzentration und die Tatsache, dass Gesundheit nicht automatisch billig ist.<\/li>\n<\/ul>\n<p>F\u00fcr Anleger, die ihr Depot weniger abh\u00e4ngig von Technologie machen wollen, ist der ETF dennoch ein interessanter Satellit.<\/p>\n<h4>ETF-Tipp 2: Zahnpasta statt KI \u2013 der untersch\u00e4tzte Basiskonsum<\/h4>\n<p>Noch weniger spektakul\u00e4r ist der zweite Kandidat. W\u00e4hrend Anleger \u00fcber die n\u00e4chste Generation von KI-Chips diskutieren, werden jeden Morgen Zahnpasta, Kaffee, Waschmittel und Lebensmittel gekauft. Der <a href=\"https:\/\/etf.dws.com\/de-de\/IE00BM67HN09-msci-world-consumer-staples-ucits-etf-1c\/\" target=\"_blank\" rel=\"noopener\">Xtrackers MSCI World Consumer Staples UCITS ETF<\/a> (ISIN: IE00BM67HN09) b\u00fcndelt Unternehmen aus genau diesem Bereich.<\/p>\n<p>Der ETF bildet den MSCI World Consumer Staples Index ab, enth\u00e4lt knapp 90 Aktien aus den Industriel\u00e4ndern und kostet 0,25 Prozent pro Jahr. Die Dividenden werden reinvestiert. Im Portfolio finden sich Schwergewichte wie Walmart, Costco, Procter &amp; Gamble, Coca-Cola, Philip Morris, Nestl\u00e9 und PepsiCo. Die 10 gr\u00f6\u00dften Positionen machen rund 60 Prozent aus.<\/p>\n<p>Der Charme des Sektors liegt auf der Hand: Menschen kaufen Lebensmittel und K\u00f6rperpflegeprodukte auch dann, wenn die Konjunktur schw\u00e4chelt. Das bedeutet allerdings nicht, dass die Aktien automatisch steigen. Hohe Zinsen bedeuten Gegenwind f\u00fcr defensive Titel. Billige Handelsmarken setzen etablierte Marken unter Druck. Und Unternehmen wie Walmart oder Costco sind selbst l\u00e4ngst hoch bewertet.<\/p>\n<p>\u00a0<\/p>\n<div class=\"chartwrapper\" id=\"chartwrapper\" data-chartid=\"6a842bcf2bbf2\"><\/div>\n<p>    <script id=\"tvChartLoader\" async src=\"https:\/\/unpkg.com\/lightweight-charts@4.2.0\/dist\/lightweight-charts.standalone.production.js\"><\/script><\/p>\n<p>    <script id=\"declarations\">\n    var chartid = \"6a842bcf2bbf2\";\n    function renderTV(kursData, chartData,companyName,currency, chartHeight, chartWidth, code, exchange, kursDate, hidetitle, hidelegend, chartid) {      \n    \tconsole.log(\"render chart with id\", document.querySelector(`[data-chartid=\"${chartid}\"]`));\n        let width = chartWidth?chartWidth:600;\n        let ratio = 2\n        let height = chartHeight?chartHeight:(width\/ratio);\n        document.querySelector(`[data-chartid=\"${chartid}\"]`).style.height = chartHeight +50\n        document.querySelector(`[data-chartid=\"${chartid}\"]`).style.width = chartWidth<\/p>\n<p>        \/\/ formatter for x achis dates\n        function customXAchsisFormetter(timePoint, tickMarkType, locale) {\n            let formatOptions = {};\n            const date = new Date(timePoint);<\/p>\n<p>            if(tickMarkType <=1){\n                formatOptions = {day: \"numeric\", month: \"short\",year: \"numeric\",}\n\n            }else{\n                formatOptions = {day: \"numeric\", month: \"short\",year: \"numeric\",}\n            }\n            \/\/ from given date we should use only as UTC date or timestamp\n            \/\/ but to format as locale date we can convert UTC date to local date\n            const localDateFromUtc = new Date(\n                date.getUTCFullYear(),\n                date.getUTCMonth(),\n                date.getUTCDate()\n            );\n\n            return localDateFromUtc.toLocaleString(locale, formatOptions);\n        }\n\n        \/\/create buttons\n        function createSimpleSwitcher(items, activeItem, activeItemChangedCallback) {\n            var switcherElement = document.createElement(\"div\");\n            switcherElement.classList.add(\"switcher\");\n\n            var intervalElements = items.map(function (item) {\n                var itemEl = document.createElement(\"button\");\n                itemEl.innerText = item;\n                itemEl.classList.add(\"switcher-item\");\n                itemEl.classList.toggle(\"switcher-active-item\", item === activeItem);\n                itemEl.addEventListener(\"click\", function () {\n                    onItemClicked(item);\n                });\n                switcherElement.appendChild(itemEl);\n                return itemEl;\n            });\n\n            function onItemClicked(item) {\n                if (item === activeItem) {\n                    return;\n                }\n\n                intervalElements.forEach(function (element, index) {\n                    element.classList.toggle(\"switcher-active-item\", items[index] === item);\n                });\n\n                activeItem = item;\n\n                activeItemChangedCallback(item);\n            }\n\n            return switcherElement;\n        }\n        \/\/ loading: true or false\n        function handleAsyncUI(loading){\n            var IntervalButtons = document.getElementsByClassName(\"switcher-item\");\n             for(var i = 0; i < IntervalButtons.length; i++){\n                IntervalButtons[i].disabled = loading;\n             } \n             var chart = document.getElementsByClassName(\"tv-lightweight-charts\")[0];\n             if(loading){\n            \n            chart.style[\"display\"] = \"flex\"\n            chart.style[\"align-items\"] = \"center\"\n            chart.style[\"justify-content\"] = \"center\"\n\n            var loadingIndicator = document.createElement(\"div\");\n            loadingIndicator.classList.add(\"loader\");\n            \/\/loadingIndicator.innerText = \"Loading\";\n            loadingIndicator.id =\"loadingIndicator\"\n            chart.appendChild(loadingIndicator);\n             }else{\n            document.getElementById(\"loadingIndicator\").remove();\n            chart.style[\"display\"] = null\n            chart.style[\"align-items\"] =null\n            chart.style[\"justify-content\"] = null\n             }\n\n        }\n        var intervals = [\"1M\",\"3M\",\"6M\",\"1Y\",\"3Y\",\"5Y\"];\n        var seriesesData = new Map([\n            [\"1M\", []], \/\/ 1m (interval daten?), 3m, 6m, 1y, 3y, 5y\n            [\"3M\", []],\n            [\"6M\", []],\n            [\"1Y\", chartData],\n            [\"3Y\", []],\n            [\"5Y\", []],\n        ]);\n        var switcherElement = createSimpleSwitcher(intervals, intervals[3], syncToInterval);\n        var chartElement = document.createElement(\"div\");\n        const chart = LightweightCharts.createChart(chartElement, {\n            width: width,\n            height: height,\n            rightPriceScale: {\n                scaleMargins: {\n                    top: 0.2,\n                    bottom: 0.2,\n                },\n                borderVisible: false,\n            },\n            timeScale: {\n                borderVisible: false,\n                lockVisibleTimeRangeOnResize: true,\n\n                rightOffset:1,\n                tickMarkFormatter:customXAchsisFormetter\n\n            },\n            grid: {\n                horzLines: {\n                    color: \"#eee\",\n                    visible: false,\n                },\n                vertLines: {\n                    color: \"#ffffff\",\n                },\n            },\n            crosshair: {\n                horzLine: {\n                    visible: false,\n                    labelVisible: false\n                },\n                vertLine: {\n                    visible: true,\n                    style: 0,\n                    width: 2,\n                    color: \"rgba(80, 50, 25, 0.1)\",\n                    labelVisible: false,\n                }\n            },\n            handleScroll: {\n                mouseWheel: false,\n                pressedMouseMove: false,\n                horzTouchDrag: false,\n                vertTouchDrag: false\n            },\n            handleScale: {\n                axisPressedMouseMove: false,\n                mouseWheel: false,\n                pinch: false,\n            },\n        });\n        var areaSeries = null;\n        var positionDIV = document.querySelector(`[data-chartid=\"${chartid}\"]`)\n        positionDIV.appendChild(chartElement);\n        positionDIV.appendChild(switcherElement);\n        function httpGetAsync(theUrl, callback) {\n            var xmlHttp = new XMLHttpRequest();\n            xmlHttp.onreadystatechange = function () {\n                if (xmlHttp.readyState == 4 &#038;&#038; xmlHttp.status == 200)\n                    callback(xmlHttp.responseText);\n            }\n            xmlHttp.open(\"GET\", theUrl, true); \/\/ true for asynchronous \n            xmlHttp.send(null);\n        }\n        function formatDate(date) {\n            \n            var month = \"\" + (date.getMonth()+1);\n            var day = \"\" + date.getDate();\n            var year = date.getFullYear();\n\n            if (month.length < 2) \n                month = \"0\" + month;\n            if (day.length < 2) \n                day = \"0\" + day;\n            return [year, month, day].join(\"-\");\n        }\n        function getTimeframe(interval){\n            let from = null;\n            let to = formatDate(new Date());\n            switch (interval) {\n                case \"1M\": from = formatDate(new Date(Date.now() - 31 * 24 * 60 * 60 * 1000)); break;\n                case \"3M\": from = formatDate(new Date(Date.now() - 93 * 24 * 60 * 60 * 1000)); break;\n                case \"6M\": from = formatDate(new Date(Date.now() - 186 * 24 * 60 * 60 * 1000)); break;\n                case \"1Y\": from = formatDate(new Date(Date.now() - 372 * 24 * 60 * 60 * 1000)); break;\n                case \"3Y\": from = formatDate(new Date(Date.now() - 1116 * 24 * 60 * 60 * 1000)); break;\n                case \"5Y\": from = formatDate(new Date(Date.now() - 1860 * 24 * 60 * 60 * 1000)); break;\n                default:from = formatDate(new Date(Date.now() - 372 * 24 * 60 * 60 * 1000));\n                \n                }\n            return {from:from, to:to}\n        }\t\n        \/\/ what happens on button click\n        function syncToInterval(interval) {\n            if (areaSeries &#038;&#038; seriesesData.get(interval).length <=0) {\n                console.log(\"GETTING REMOTE DATA\")\n\n                chart.removeSeries(areaSeries);\n                areaSeries = null;\n                let apiToken = \"za1j116n2273ab1vxukuh6\"\n                let timeframe = getTimeframe(interval)\n                let filter = \"adjusted_close\"\n                handleAsyncUI(true)\t\t\t\t\t\t\n                httpGetAsync(\"https:\/\/api.leeway.tech\/api\/v1\/public\/historicalquotes\/\"+encodeURIComponent(code+\".\"+exchange)+\"?apitoken=\"+apiToken+\"&#038;filter=\"+filter+\"&#038;from=\"+timeframe.from+\"&#038;to=\"+timeframe.to, function (res) {\t\n                    let newData = []\n                    newData = JSON.parse(res)\/\/.map(el=>newData.push({time:el.date, value:el.close}))\n                    \/\/ newData = newData.map(el=>{\n                    \/\/     console.log(el.time.year)\n                    \/\/     console.log(el.time.month)\n                    \/\/     console.log(el.time.day)\n                    \/\/     console.log(el)\n                    \/\/     console.log(new Date(el.time.year, el.time.month-1, el.time.day));\n                    \/\/     return{value:el.value, time:el.time, timestamp:new Date(el.time.year, el.time.month-1, el.time.day).getTime()}})\n                    console.log(\"newData\")\n                    console.log(newData)\n                    seriesesData.set(interval, newData)\n                    areaSeries = chart.addAreaSeries({\n                        topColor: \"rgba(33, 108, 173, 0.56)\",\n                        bottomColor: \"rgba(33, 108, 173, 0.04)\",\n                        lineColor: \"rgba(33, 108, 173, 1)\",\n                    lineWidth: 2,\n                });\n                kursData = seriesesData.get(interval)[seriesesData.get(interval).length-1].value\n                areaSeries.setData(seriesesData.get(interval));\n                chart.timeScale().fitContent();\n                handleAsyncUI(false)\t\n                    })\n            }else{\n                console.log(\"GETTING LOADED DATA\")\n                if(areaSeries){\n                    console.log(\"DELETING  LOADED DATA FROM CHART\")\n                    chart.removeSeries(areaSeries);\n                    areaSeries = null;\n                }\n                kursData = seriesesData.get(interval)[seriesesData.get(interval).length-1].value\n                areaSeries = chart.addAreaSeries({\n                topColor: \"rgba(33, 108, 173, 0.56)\",\n                bottomColor: \"rgba(33, 108, 173, 0.04)\",\n                lineColor: \"rgba(33, 108, 173, 1)\",\n                lineWidth: 2,\n            });\n            areaSeries.setData(seriesesData.get(interval));<\/p>\n<p>            chart.timeScale().fitContent();\n            }<\/p>\n<p>        }\n        \/\/ data interval at startup\n        syncToInterval(intervals[3]);\n        \/\/ Name and Kurs as Text in legend<\/p>\n<p>        var watermark = document.createElement(\"img\")\n        watermark.classList.add(\"watermark\")\n        watermark.setAttribute(\"src\", \"https:\/\/api.leeway.tech\/leeway-sign.png\")\n        var testA = document.querySelector(`[data-chartid=\"${chartid}\"]`)\n        var testB = document.querySelector(`[data-chartid=\"${chartid}\"]`).getBoundingClientRect();\n        var test =  testA.getElementsByTagName(\"canvas\")[0].getBoundingClientRect();\n        watermark.style.position = \"absolute\";\n        watermark.style.width = \"90px\";\n        watermark.style.height = \"30px\";\n        watermark.style.display = \"block\";\n        \/\/watermark.style.z-index = \"1000000\";\n        watermark.style.bottom = \"0\";\n        watermark.style.right = \"10px\";<\/p>\n<p>        let linkLW = document.createElement(\"a\")\n        linkLW.href=\"https:\/\/www.ftd.de\/leeway-tech\";\n        linkLW.target = \"_blank\";\n        linkLW.appendChild(watermark)\n        \/\/ append to DOM<\/p>\n<p>        \/\/div-chartwrapper -> div -> div ->  table  -> tr ->  td td -> div\n        const myElementA = document.querySelector(`[data-chartid=\"${chartid}\"]`);\n        let myElementB = myElementA.childNodes[0]\n        let myElementC = myElementB.childNodes[0]\n        let myElementD = myElementC.childNodes[0]\n        let myElementE = myElementD.childNodes[0]\n        let myElementF = myElementE.childNodes[1]\n        let myElementG = myElementF.childNodes[0]\n        myElementG.appendChild(linkLW);<\/p>\n<p>        if(hidelegend == \"false\"){\n            console.log(\"SHOW LEGEND!\")\n            var legend = document.createElement(\"div\");\n            legend.classList.add(\"legend\");\n            var offsets = document.querySelector(`[data-chartid=\"${chartid}\"]`).getBoundingClientRect();\n            var chartwrapperTop = offsets.top;<\/p>\n<p>            var legendHeight = height *-1\n            if(legendHeight>-210){legendHeight = -210;}\n            legend.style.top = legendHeight*1.2  + \"px\"\n            positionDIV.appendChild(legend);<\/p>\n<p>            if(hidetitle == \"false\"){\n                var firstRow = document.createElement(\"div\");\n                firstRow.classList.add(\"titleText\");\t<\/p>\n<p>            }<\/p>\n<p>            var secondRow = document.createElement(\"div\");\n            secondRow.classList.add(\"secondRow\");\t<\/p>\n<p>            if(kursData !== null){\n                if(hidetitle == \"false\"){\n                    firstRow.innerText = companyName\n                    legend.appendChild(firstRow);\n                }<\/p>\n<p>                secondRow.innerText = kursDate +\": \" + Number(kursData).toFixed(2) + \" \"+currency;\n                 legend.appendChild(secondRow);\n            }else{\n                if(hidetitle == \"false\"){\n                    firstRow.innerText = companyName\n                    legend.appendChild(firstRow);\n                }<\/p>\n<p>                legend.appendChild(secondRow);\n            }<\/p>\n<p>            \/\/ cursor moving and handling third row of legend\n            chart.subscribeCrosshairMove((param) => {\n                if (param.time) {\n                    let options = { weekday: \"short\", year: \"numeric\", month: \"numeric\", day: \"numeric\" };\n                    let currentDate = new Date(param.time).toLocaleDateString(\"de-DE\", options)\n                    const price = param.seriesData.get(areaSeries).value;\n                    secondRow.innerText = currentDate + \":  \" + price.toFixed(2) + \" \"+(currency?currency:\" \");\n                }\n            else {\n                secondRow.innerText = kursDate +\": \" + Number(kursData).toFixed(2) + \" \"+currency;<\/p>\n<p>            }\n            });<\/p>\n<p>        }<\/p>\n<p>    }\n    function httpGetAsync(theUrl, callback) {\n            var xmlHttp = new XMLHttpRequest();\n            xmlHttp.onreadystatechange = function () {\n                if (xmlHttp.readyState == 4 && xmlHttp.status == 200)\n                    callback(xmlHttp.responseText);\n            }\n            xmlHttp.open(\"GET\", theUrl, true); \/\/ true for asynchronous \n            xmlHttp.send(null);\n        };\n    function getTimeframe(interval){\n            let from = null;\n            let to = formatDate(new Date());\n            switch (interval) {\n                case \"1M\": from = formatDate(new Date(Date.now() - 31 * 24 * 60 * 60 * 1000)); break;\n                case \"3M\": from = formatDate(new Date(Date.now() - 93 * 24 * 60 * 60 * 1000)); break;\n                case \"6M\": from = formatDate(new Date(Date.now() - 186 * 24 * 60 * 60 * 1000)); break;\n                case \"1Y\": from = formatDate(new Date(Date.now() - 372 * 24 * 60 * 60 * 1000)); break;\n                case \"3Y\": from = formatDate(new Date(Date.now() - 1116 * 24 * 60 * 60 * 1000)); break;\n                case \"5Y\": from = formatDate(new Date(Date.now() - 1860 * 24 * 60 * 60 * 1000)); break;\n                default:from = formatDate(new Date(Date.now() - 372 * 24 * 60 * 60 * 1000));<\/p>\n<p>                }\n            return {from:from, to:to}\n        };\n        function formatDate(date) {<\/p>\n<p>            var  month = \"\" + (date.getMonth()+1);\n            var   day = \"\" + date.getDate();\n            var   year = date.getFullYear();<\/p>\n<p>            if (month.length < 2) \n                month = \"0\" + month;\n            if (day.length < 2) \n                day = \"0\" + day;\n\n            return [year, month, day].join(\"-\");\n        };\n    <\/script><br \/>\n    <script id=\"main\"><\/p>\n<p>    var scriptTV = document.querySelector(\"#tvChartLoader\");\n    scriptTV.addEventListener(\"load\", function() {\n        var chartid = \"6a842bcf2bbf2\";<\/p>\n<p>        var companyName = \"Xtrackers MSCI World Consumer Staples UCITS ETF 1C\";\n        if(companyName.length <=0){\n        companyName = \"XDWS - XETRA\";\n        }\n        var code = \"XDWS\";\n        var exchange = \"XETRA\";\n        var currency =\"EUR\";\n        var kursData = null;\n        var kursDataDate = null;\n        var chartHeight = \"\";\n        var chartWidth = \"250\"\n        var hidetitle = \"false\"\n        var hidelegend = \"false\"\n        let apiToken = \"za1j116n2273ab1vxukuh6\"\n        chartWidth = document.querySelector(`[data-chartid=\"${chartid}\"]`).offsetWidth\n        var chartData = [];\n        var timeframe = getTimeframe(\"1Y\");\n        var filter = \"adjusted_close\";\n        \n        httpGetAsync(\"https:\/\/api.leeway.tech\/api\/v1\/public\/historicalquotes\/\"+encodeURIComponent(code+\".\"+exchange)+\"?apitoken=\"+apiToken+\"&#038;filter=\"+filter+\"&#038;from=\"+timeframe.from+\"&#038;to=\"+timeframe.to, function (res) {\t\n            let newData = null;\n             chartData = newData = JSON.parse(res)\n            \/\/ chartData =  chartData.map(el=>{return{value:el.value, time:el.time, timestamp:new Date(el.time.year, el.time.month-1, el.time.day).getTime()}})\n             kursData = chartData[chartData.length-1].value\n             let options = { weekday: \"short\", year: \"numeric\", month: \"numeric\", day: \"numeric\" };\n             kursDataDate = chartData[chartData.length-1].time\n             let kursDate = new Date(kursDataDate.split(\"-\")[0], Number(kursDataDate.split(\"-\")[1])-1, kursDataDate.split(\"-\")[2]).toLocaleDateString(\"de-DE\", options)<\/p>\n<p>             renderTV(kursData,chartData,companyName,currency, Number(chartHeight), Number(chartWidth), code, exchange, kursDate, hidetitle, hidelegend, chartid)\n        });\n    });\n<\/script><\/p>\n<ul>\n<li><strong>Das F\u00fcr:<\/strong> stabile Nachfrage, starke Marken, solide Cashflows und ein Gegengewicht zur Tech-Konzentration.<\/li>\n<li><strong>Das Wider:<\/strong> begrenztes Gewinnwachstum, Preisdruck und teilweise immer noch anspruchsvolle Bewertungen.<\/li>\n<\/ul>\n<p>Der ETF ist deshalb kein Renditeturbo. Er ist eher der Sicherheitsgurt im Depot. Und Sicherheitsgurte sind bekanntlich besonders dann wertvoll, wenn man sie nicht braucht \u2013 bis man sie braucht.<\/p>\n<h4>ETF-Tipp 3: Der Anti-Nvidia-Ansatz<\/h4>\n<p>Wer nicht auf einen einzelnen Sektor setzen will, kann noch einen Schritt weitergehen. Der <a href=\"https:\/\/www.invesco.com\/de\/de\/financial-products\/etfs\/invesco-rafi-all-world-fundamental-value-ucits-etf-dist.html\" target=\"_blank\" rel=\"noopener\">Invesco RAFI All-World Fundamental Value UCITS ETF<\/a> (ISIN: IE00B23LNQ02) verfolgt einen v\u00f6llig anderen Ansatz als klassische Welt-ETFs. Der Unterschied steckt in einem Wort: Fundamental. Ein MSCI World oder MSCI ACWI gewichtet Unternehmen nach ihrer B\u00f6rsenkapitalisierung. Je st\u00e4rker eine Aktie steigt, desto gr\u00f6\u00dfer wird ihr Gewicht. Das kann in einer Rallye zum Selbstverst\u00e4rker werden.<\/p>\n<p>Der RAFI-Ansatz schaut dagegen auf fundamentale Gr\u00f6\u00dfen wie Umsatz, Cashflow, Buchwert und Dividenden. Die Aktien werden also nicht danach gewichtet, wie viel der Markt gerade bereit ist, f\u00fcr sie zu bezahlen. Das Ergebnis ist ein deutlich anderes Portfolio. Der ETF h\u00e4lt rund 1.200 Aktien. Die USA kommen auf knapp die H\u00e4lfte des Portfolios, Japan auf gut 8 Prozent und S\u00fcdkorea auf rund 5 Prozent. Technologiewerte machen knapp 20 Prozent aus, Finanzwerte rund 18 Prozent. Und genau das ist der Punkt.<\/p>\n<p>Apple und Alphabet finden sich zwar weiterhin unter den gr\u00f6\u00dften Positionen. Aber ihre Gewichte liegen nur bei rund 2 Prozent. Von einer Nvidia-Konzentration wie im klassischen Weltindex ist der ETF weit entfernt. Die laufenden Kosten betragen 0,39 Prozent, die Ertr\u00e4ge werden ausgesch\u00fcttet.<\/p>\n<p>\u00a0<\/p>\n<div class=\"chartwrapper\" id=\"chartwrapper\" data-chartid=\"6a842bcf2bc16\"><\/div>\n<p>    <script id=\"tvChartLoader\" async src=\"https:\/\/unpkg.com\/lightweight-charts@4.2.0\/dist\/lightweight-charts.standalone.production.js\"><\/script><\/p>\n<p>    <script id=\"declarations\">\n    var chartid = \"6a842bcf2bc16\";\n    function renderTV(kursData, chartData,companyName,currency, chartHeight, chartWidth, code, exchange, kursDate, hidetitle, hidelegend, chartid) {      \n    \tconsole.log(\"render chart with id\", document.querySelector(`[data-chartid=\"${chartid}\"]`));\n        let width = chartWidth?chartWidth:600;\n        let ratio = 2\n        let height = chartHeight?chartHeight:(width\/ratio);\n        document.querySelector(`[data-chartid=\"${chartid}\"]`).style.height = chartHeight +50\n        document.querySelector(`[data-chartid=\"${chartid}\"]`).style.width = chartWidth<\/p>\n<p>        \/\/ formatter for x achis dates\n        function customXAchsisFormetter(timePoint, tickMarkType, locale) {\n            let formatOptions = {};\n            const date = new Date(timePoint);<\/p>\n<p>            if(tickMarkType <=1){\n                formatOptions = {day: \"numeric\", month: \"short\",year: \"numeric\",}\n\n            }else{\n                formatOptions = {day: \"numeric\", month: \"short\",year: \"numeric\",}\n            }\n            \/\/ from given date we should use only as UTC date or timestamp\n            \/\/ but to format as locale date we can convert UTC date to local date\n            const localDateFromUtc = new Date(\n                date.getUTCFullYear(),\n                date.getUTCMonth(),\n                date.getUTCDate()\n            );\n\n            return localDateFromUtc.toLocaleString(locale, formatOptions);\n        }\n\n        \/\/create buttons\n        function createSimpleSwitcher(items, activeItem, activeItemChangedCallback) {\n            var switcherElement = document.createElement(\"div\");\n            switcherElement.classList.add(\"switcher\");\n\n            var intervalElements = items.map(function (item) {\n                var itemEl = document.createElement(\"button\");\n                itemEl.innerText = item;\n                itemEl.classList.add(\"switcher-item\");\n                itemEl.classList.toggle(\"switcher-active-item\", item === activeItem);\n                itemEl.addEventListener(\"click\", function () {\n                    onItemClicked(item);\n                });\n                switcherElement.appendChild(itemEl);\n                return itemEl;\n            });\n\n            function onItemClicked(item) {\n                if (item === activeItem) {\n                    return;\n                }\n\n                intervalElements.forEach(function (element, index) {\n                    element.classList.toggle(\"switcher-active-item\", items[index] === item);\n                });\n\n                activeItem = item;\n\n                activeItemChangedCallback(item);\n            }\n\n            return switcherElement;\n        }\n        \/\/ loading: true or false\n        function handleAsyncUI(loading){\n            var IntervalButtons = document.getElementsByClassName(\"switcher-item\");\n             for(var i = 0; i < IntervalButtons.length; i++){\n                IntervalButtons[i].disabled = loading;\n             } \n             var chart = document.getElementsByClassName(\"tv-lightweight-charts\")[0];\n             if(loading){\n            \n            chart.style[\"display\"] = \"flex\"\n            chart.style[\"align-items\"] = \"center\"\n            chart.style[\"justify-content\"] = \"center\"\n\n            var loadingIndicator = document.createElement(\"div\");\n            loadingIndicator.classList.add(\"loader\");\n            \/\/loadingIndicator.innerText = \"Loading\";\n            loadingIndicator.id =\"loadingIndicator\"\n            chart.appendChild(loadingIndicator);\n             }else{\n            document.getElementById(\"loadingIndicator\").remove();\n            chart.style[\"display\"] = null\n            chart.style[\"align-items\"] =null\n            chart.style[\"justify-content\"] = null\n             }\n\n        }\n        var intervals = [\"1M\",\"3M\",\"6M\",\"1Y\",\"3Y\",\"5Y\"];\n        var seriesesData = new Map([\n            [\"1M\", []], \/\/ 1m (interval daten?), 3m, 6m, 1y, 3y, 5y\n            [\"3M\", []],\n            [\"6M\", []],\n            [\"1Y\", chartData],\n            [\"3Y\", []],\n            [\"5Y\", []],\n        ]);\n        var switcherElement = createSimpleSwitcher(intervals, intervals[3], syncToInterval);\n        var chartElement = document.createElement(\"div\");\n        const chart = LightweightCharts.createChart(chartElement, {\n            width: width,\n            height: height,\n            rightPriceScale: {\n                scaleMargins: {\n                    top: 0.2,\n                    bottom: 0.2,\n                },\n                borderVisible: false,\n            },\n            timeScale: {\n                borderVisible: false,\n                lockVisibleTimeRangeOnResize: true,\n\n                rightOffset:1,\n                tickMarkFormatter:customXAchsisFormetter\n\n            },\n            grid: {\n                horzLines: {\n                    color: \"#eee\",\n                    visible: false,\n                },\n                vertLines: {\n                    color: \"#ffffff\",\n                },\n            },\n            crosshair: {\n                horzLine: {\n                    visible: false,\n                    labelVisible: false\n                },\n                vertLine: {\n                    visible: true,\n                    style: 0,\n                    width: 2,\n                    color: \"rgba(80, 50, 25, 0.1)\",\n                    labelVisible: false,\n                }\n            },\n            handleScroll: {\n                mouseWheel: false,\n                pressedMouseMove: false,\n                horzTouchDrag: false,\n                vertTouchDrag: false\n            },\n            handleScale: {\n                axisPressedMouseMove: false,\n                mouseWheel: false,\n                pinch: false,\n            },\n        });\n        var areaSeries = null;\n        var positionDIV = document.querySelector(`[data-chartid=\"${chartid}\"]`)\n        positionDIV.appendChild(chartElement);\n        positionDIV.appendChild(switcherElement);\n        function httpGetAsync(theUrl, callback) {\n            var xmlHttp = new XMLHttpRequest();\n            xmlHttp.onreadystatechange = function () {\n                if (xmlHttp.readyState == 4 &#038;&#038; xmlHttp.status == 200)\n                    callback(xmlHttp.responseText);\n            }\n            xmlHttp.open(\"GET\", theUrl, true); \/\/ true for asynchronous \n            xmlHttp.send(null);\n        }\n        function formatDate(date) {\n            \n            var month = \"\" + (date.getMonth()+1);\n            var day = \"\" + date.getDate();\n            var year = date.getFullYear();\n\n            if (month.length < 2) \n                month = \"0\" + month;\n            if (day.length < 2) \n                day = \"0\" + day;\n            return [year, month, day].join(\"-\");\n        }\n        function getTimeframe(interval){\n            let from = null;\n            let to = formatDate(new Date());\n            switch (interval) {\n                case \"1M\": from = formatDate(new Date(Date.now() - 31 * 24 * 60 * 60 * 1000)); break;\n                case \"3M\": from = formatDate(new Date(Date.now() - 93 * 24 * 60 * 60 * 1000)); break;\n                case \"6M\": from = formatDate(new Date(Date.now() - 186 * 24 * 60 * 60 * 1000)); break;\n                case \"1Y\": from = formatDate(new Date(Date.now() - 372 * 24 * 60 * 60 * 1000)); break;\n                case \"3Y\": from = formatDate(new Date(Date.now() - 1116 * 24 * 60 * 60 * 1000)); break;\n                case \"5Y\": from = formatDate(new Date(Date.now() - 1860 * 24 * 60 * 60 * 1000)); break;\n                default:from = formatDate(new Date(Date.now() - 372 * 24 * 60 * 60 * 1000));\n                \n                }\n            return {from:from, to:to}\n        }\t\n        \/\/ what happens on button click\n        function syncToInterval(interval) {\n            if (areaSeries &#038;&#038; seriesesData.get(interval).length <=0) {\n                console.log(\"GETTING REMOTE DATA\")\n\n                chart.removeSeries(areaSeries);\n                areaSeries = null;\n                let apiToken = \"za1j116n2273ab1vxukuh6\"\n                let timeframe = getTimeframe(interval)\n                let filter = \"adjusted_close\"\n                handleAsyncUI(true)\t\t\t\t\t\t\n                httpGetAsync(\"https:\/\/api.leeway.tech\/api\/v1\/public\/historicalquotes\/\"+encodeURIComponent(code+\".\"+exchange)+\"?apitoken=\"+apiToken+\"&#038;filter=\"+filter+\"&#038;from=\"+timeframe.from+\"&#038;to=\"+timeframe.to, function (res) {\t\n                    let newData = []\n                    newData = JSON.parse(res)\/\/.map(el=>newData.push({time:el.date, value:el.close}))\n                    \/\/ newData = newData.map(el=>{\n                    \/\/     console.log(el.time.year)\n                    \/\/     console.log(el.time.month)\n                    \/\/     console.log(el.time.day)\n                    \/\/     console.log(el)\n                    \/\/     console.log(new Date(el.time.year, el.time.month-1, el.time.day));\n                    \/\/     return{value:el.value, time:el.time, timestamp:new Date(el.time.year, el.time.month-1, el.time.day).getTime()}})\n                    console.log(\"newData\")\n                    console.log(newData)\n                    seriesesData.set(interval, newData)\n                    areaSeries = chart.addAreaSeries({\n                        topColor: \"rgba(33, 108, 173, 0.56)\",\n                        bottomColor: \"rgba(33, 108, 173, 0.04)\",\n                        lineColor: \"rgba(33, 108, 173, 1)\",\n                    lineWidth: 2,\n                });\n                kursData = seriesesData.get(interval)[seriesesData.get(interval).length-1].value\n                areaSeries.setData(seriesesData.get(interval));\n                chart.timeScale().fitContent();\n                handleAsyncUI(false)\t\n                    })\n            }else{\n                console.log(\"GETTING LOADED DATA\")\n                if(areaSeries){\n                    console.log(\"DELETING  LOADED DATA FROM CHART\")\n                    chart.removeSeries(areaSeries);\n                    areaSeries = null;\n                }\n                kursData = seriesesData.get(interval)[seriesesData.get(interval).length-1].value\n                areaSeries = chart.addAreaSeries({\n                topColor: \"rgba(33, 108, 173, 0.56)\",\n                bottomColor: \"rgba(33, 108, 173, 0.04)\",\n                lineColor: \"rgba(33, 108, 173, 1)\",\n                lineWidth: 2,\n            });\n            areaSeries.setData(seriesesData.get(interval));<\/p>\n<p>            chart.timeScale().fitContent();\n            }<\/p>\n<p>        }\n        \/\/ data interval at startup\n        syncToInterval(intervals[3]);\n        \/\/ Name and Kurs as Text in legend<\/p>\n<p>        var watermark = document.createElement(\"img\")\n        watermark.classList.add(\"watermark\")\n        watermark.setAttribute(\"src\", \"https:\/\/api.leeway.tech\/leeway-sign.png\")\n        var testA = document.querySelector(`[data-chartid=\"${chartid}\"]`)\n        var testB = document.querySelector(`[data-chartid=\"${chartid}\"]`).getBoundingClientRect();\n        var test =  testA.getElementsByTagName(\"canvas\")[0].getBoundingClientRect();\n        watermark.style.position = \"absolute\";\n        watermark.style.width = \"90px\";\n        watermark.style.height = \"30px\";\n        watermark.style.display = \"block\";\n        \/\/watermark.style.z-index = \"1000000\";\n        watermark.style.bottom = \"0\";\n        watermark.style.right = \"10px\";<\/p>\n<p>        let linkLW = document.createElement(\"a\")\n        linkLW.href=\"https:\/\/www.ftd.de\/leeway-tech\";\n        linkLW.target = \"_blank\";\n        linkLW.appendChild(watermark)\n        \/\/ append to DOM<\/p>\n<p>        \/\/div-chartwrapper -> div -> div ->  table  -> tr ->  td td -> div\n        const myElementA = document.querySelector(`[data-chartid=\"${chartid}\"]`);\n        let myElementB = myElementA.childNodes[0]\n        let myElementC = myElementB.childNodes[0]\n        let myElementD = myElementC.childNodes[0]\n        let myElementE = myElementD.childNodes[0]\n        let myElementF = myElementE.childNodes[1]\n        let myElementG = myElementF.childNodes[0]\n        myElementG.appendChild(linkLW);<\/p>\n<p>        if(hidelegend == \"false\"){\n            console.log(\"SHOW LEGEND!\")\n            var legend = document.createElement(\"div\");\n            legend.classList.add(\"legend\");\n            var offsets = document.querySelector(`[data-chartid=\"${chartid}\"]`).getBoundingClientRect();\n            var chartwrapperTop = offsets.top;<\/p>\n<p>            var legendHeight = height *-1\n            if(legendHeight>-210){legendHeight = -210;}\n            legend.style.top = legendHeight*1.2  + \"px\"\n            positionDIV.appendChild(legend);<\/p>\n<p>            if(hidetitle == \"false\"){\n                var firstRow = document.createElement(\"div\");\n                firstRow.classList.add(\"titleText\");\t<\/p>\n<p>            }<\/p>\n<p>            var secondRow = document.createElement(\"div\");\n            secondRow.classList.add(\"secondRow\");\t<\/p>\n<p>            if(kursData !== null){\n                if(hidetitle == \"false\"){\n                    firstRow.innerText = companyName\n                    legend.appendChild(firstRow);\n                }<\/p>\n<p>                secondRow.innerText = kursDate +\": \" + Number(kursData).toFixed(2) + \" \"+currency;\n                 legend.appendChild(secondRow);\n            }else{\n                if(hidetitle == \"false\"){\n                    firstRow.innerText = companyName\n                    legend.appendChild(firstRow);\n                }<\/p>\n<p>                legend.appendChild(secondRow);\n            }<\/p>\n<p>            \/\/ cursor moving and handling third row of legend\n            chart.subscribeCrosshairMove((param) => {\n                if (param.time) {\n                    let options = { weekday: \"short\", year: \"numeric\", month: \"numeric\", day: \"numeric\" };\n                    let currentDate = new Date(param.time).toLocaleDateString(\"de-DE\", options)\n                    const price = param.seriesData.get(areaSeries).value;\n                    secondRow.innerText = currentDate + \":  \" + price.toFixed(2) + \" \"+(currency?currency:\" \");\n                }\n            else {\n                secondRow.innerText = kursDate +\": \" + Number(kursData).toFixed(2) + \" \"+currency;<\/p>\n<p>            }\n            });<\/p>\n<p>        }<\/p>\n<p>    }\n    function httpGetAsync(theUrl, callback) {\n            var xmlHttp = new XMLHttpRequest();\n            xmlHttp.onreadystatechange = function () {\n                if (xmlHttp.readyState == 4 && xmlHttp.status == 200)\n                    callback(xmlHttp.responseText);\n            }\n            xmlHttp.open(\"GET\", theUrl, true); \/\/ true for asynchronous \n            xmlHttp.send(null);\n        };\n    function getTimeframe(interval){\n            let from = null;\n            let to = formatDate(new Date());\n            switch (interval) {\n                case \"1M\": from = formatDate(new Date(Date.now() - 31 * 24 * 60 * 60 * 1000)); break;\n                case \"3M\": from = formatDate(new Date(Date.now() - 93 * 24 * 60 * 60 * 1000)); break;\n                case \"6M\": from = formatDate(new Date(Date.now() - 186 * 24 * 60 * 60 * 1000)); break;\n                case \"1Y\": from = formatDate(new Date(Date.now() - 372 * 24 * 60 * 60 * 1000)); break;\n                case \"3Y\": from = formatDate(new Date(Date.now() - 1116 * 24 * 60 * 60 * 1000)); break;\n                case \"5Y\": from = formatDate(new Date(Date.now() - 1860 * 24 * 60 * 60 * 1000)); break;\n                default:from = formatDate(new Date(Date.now() - 372 * 24 * 60 * 60 * 1000));<\/p>\n<p>                }\n            return {from:from, to:to}\n        };\n        function formatDate(date) {<\/p>\n<p>            var  month = \"\" + (date.getMonth()+1);\n            var   day = \"\" + date.getDate();\n            var   year = date.getFullYear();<\/p>\n<p>            if (month.length < 2) \n                month = \"0\" + month;\n            if (day.length < 2) \n                day = \"0\" + day;\n\n            return [year, month, day].join(\"-\");\n        };\n    <\/script><br \/>\n    <script id=\"main\"><\/p>\n<p>    var scriptTV = document.querySelector(\"#tvChartLoader\");\n    scriptTV.addEventListener(\"load\", function() {\n        var chartid = \"6a842bcf2bc16\";<\/p>\n<p>        var companyName = \"Invesco FTSE RAFI All World 3000 UCITS ETF EUR\";\n        if(companyName.length <=0){\n        companyName = \"PSWD - XETRA\";\n        }\n        var code = \"PSWD\";\n        var exchange = \"XETRA\";\n        var currency =\"EUR\";\n        var kursData = null;\n        var kursDataDate = null;\n        var chartHeight = \"\";\n        var chartWidth = \"250\"\n        var hidetitle = \"false\"\n        var hidelegend = \"false\"\n        let apiToken = \"za1j116n2273ab1vxukuh6\"\n        chartWidth = document.querySelector(`[data-chartid=\"${chartid}\"]`).offsetWidth\n        var chartData = [];\n        var timeframe = getTimeframe(\"1Y\");\n        var filter = \"adjusted_close\";\n        \n        httpGetAsync(\"https:\/\/api.leeway.tech\/api\/v1\/public\/historicalquotes\/\"+encodeURIComponent(code+\".\"+exchange)+\"?apitoken=\"+apiToken+\"&#038;filter=\"+filter+\"&#038;from=\"+timeframe.from+\"&#038;to=\"+timeframe.to, function (res) {\t\n            let newData = null;\n             chartData = newData = JSON.parse(res)\n            \/\/ chartData =  chartData.map(el=>{return{value:el.value, time:el.time, timestamp:new Date(el.time.year, el.time.month-1, el.time.day).getTime()}})\n             kursData = chartData[chartData.length-1].value\n             let options = { weekday: \"short\", year: \"numeric\", month: \"numeric\", day: \"numeric\" };\n             kursDataDate = chartData[chartData.length-1].time\n             let kursDate = new Date(kursDataDate.split(\"-\")[0], Number(kursDataDate.split(\"-\")[1])-1, kursDataDate.split(\"-\")[2]).toLocaleDateString(\"de-DE\", options)<\/p>\n<p>             renderTV(kursData,chartData,companyName,currency, Number(chartHeight), Number(chartWidth), code, exchange, kursDate, hidetitle, hidelegend, chartid)\n        });\n    });\n<\/script><\/p>\n<ul>\n<li><strong>Das F\u00fcr:<\/strong> weniger Abh\u00e4ngigkeit von hoch bewerteten Mega-Caps, breite globale Streuung und eine klare Value-Komponente.<\/li>\n<li><strong>Das Wider:<\/strong> Value kann \u00fcber Jahre hinter Growth zur\u00fcckbleiben. Wer auf den RAFI-Ansatz setzt, muss Durststrecken aushalten. Au\u00dferdem ist der ETF mit rund 0,39 Prozent nicht ganz billig.<\/li>\n<\/ul>\n<p>Interessant ist jedoch die Entwicklung: Der ETF liegt 2026 bislang rund 22 Prozent im Plus und hat damit gezeigt, dass Value nicht zwangsl\u00e4ufig der Verlierer einer Tech-Rally sein muss.<\/p>\n<h3>Die 3 ETFs spielen 3 unterschiedliche Spiele<\/h3>\n<p>Wer die Blasenfrage nicht mit einem radikalen \u201eAlles verkaufen\u201c beantworten will, kann sein Depot gezielter ausbalancieren. Der Amundi Health Care ETF setzt auf medizinischen Fortschritt. Der Xtrackers Consumer Staples ETF auf stabile Nachfrage und globale Marken. Der Invesco RAFI ETF auf einen Bewertungswechsel \u2013 weg von reiner Marktkapitalisierung und hin zu fundamentalen Unternehmensdaten. Das Interessante daran: Keiner dieser Ans\u00e4tze setzt darauf, dass die B\u00f6rse crashen muss. Sie funktionieren auch dann, wenn die KI-Rally weitergeht. Nur eben mit einem anderen Renditeprofil.<\/p>\n<h3>Blasen platzen selten auf Kommando<\/h3>\n<p>Die Geschichte lehrt: Niemand bekommt eine Nachricht von der B\u00f6rse, wenn die Party vorbei ist. Bei der Tulpenmanie dauerte es Monate, bis aus Euphorie Panik wurde. Auch die New-Economy-Blase platzte nicht, weil jemand rechtzeitig \u201ezu teuer\u201c rief. Selbst Alan Greenspan konnte die Rally nicht stoppen. Das spricht gegen Market Timing \u2013 nicht gegen Risikomanagement.<\/p>\n<p>Wie schnell eine B\u00f6rsenwette kippen kann, zeigt der Fall Leopold Aschenbrenner. Der junge KI-Forscher setzte mit seinem Hedgefonds gehebelt auf Halbleiter und Cloud-Aktien und wettete zugleich gegen Softwarewerte. Ende Juli liefen die Positionen kurzzeitig gegen ihn, der Fonds geriet unter Druck und musste massive Notverk\u00e4ufe t\u00e4tigen.<\/p>\n<p>Die Lehre ist simpel: Eine gute B\u00f6rsenstory ist noch lange keine gute Wette. Wer heute stark auf US-Tech, Halbleiter und KI setzt, sollte sich fragen: Was passiert, wenn die Gewinne weiter steigen \u2013 aber nicht mehr schnell genug, um die hohen Bewertungen zu rechtfertigen?<\/p>\n<p>Wer darauf keine Antwort hat, besitzt vielleicht nicht zu viele Aktien, sondern schlicht zu viel von derselben Story. Und genau deshalb geht es beim Umgang mit m\u00f6glichen Blasen nicht darum, den n\u00e4chsten Crash auf den Tag genau vorherzusagen. Es geht darum, ein Depot so aufzustellen, dass man ihn nicht vorhersagen muss.<\/p>\n<h3>Fazit: Nicht die Blase suchen, sondern das Klumpenrisiko<\/h3>\n<p>Sind wir 2026 in einer B\u00f6rsenblase? Bei einigen Aktien wahrscheinlich ja. Beim gesamten Aktienmarkt ist das deutlich schwerer zu behaupten. Daf\u00fcr sind die Unternehmensgewinne zu stark, die Rally ist inzwischen zu breit und die Bewertungen haben sich bei steigenden Kursen teilweise sogar zur\u00fcckgebildet. Das spricht gegen eine Wiederholung der Dotcom-Manie.<\/p>\n<p>Auf der anderen Seite sind die historischen Bewertungskennzahlen eindeutig ambitioniert. Das Shiller-KGV liegt auf einem Niveau, das langfristig nur wenig Spielraum f\u00fcr Entt\u00e4uschungen l\u00e4sst.<\/p>\n<p>Und die Erwartungen an die KI-Gewinner sind gewaltig. Die vern\u00fcnftigste Schlussfolgerung lautet deshalb nicht: Raus aus Aktien. Sie lautet: Raus aus der Einbahnstra\u00dfe.<\/p>\n<p>Gesundheit, Basiskonsum und fundamental gewichtete globale Aktien bieten Anlegern 3 unterschiedliche M\u00f6glichkeiten, die Abh\u00e4ngigkeit vom KI- und Mega-Cap-Hype zu reduzieren. Denn Buffett hatte mit seinem alten B\u00f6rsenspruch einen Punkt: Man sollte vorsichtig werden, wenn die anderen gierig sind. Aber man sollte auch nicht vergessen, was der zweite Teil des Satzes bedeutet: Gierig werden sollte man erst dann, wenn die anderen Angst haben.<\/p>\n<p>\u00a0<\/p>\n<p style=\"font-size: 12px;\">Disclaimer:<br \/>\nKeine Anlageberatung. Kein Aufruf zum Kauf oder Verkauf von Wertpapieren.<\/p>\n<p>Der Beitrag <a href=\"https:\/\/www.ftd.de\/boerse\/anlagestrategie\/ki-aktien-und-crash-szenarien-defensive-etfs-und-strategien-fuer-ein-krisenfestes-depot\/\">KI-Aktien und Crash-Szenarien: Defensive ETFs und Strategien f\u00fcr ein krisenfestes Depot<\/a> erschien zuerst auf <a href=\"https:\/\/www.ftd.de\/\">ftd.de<\/a>.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Fundamental gewichtete ETFs bieten einen effektiven Schutz vor Klumpenrisiken, indem sie sich auf reale Wirtschaftsdaten statt auf die reine Marktkapitalisierung fokussieren. (KI-Bild: ftd.de-Redaktion mit Magnific AI) KI, Chips, Rechenzentren und Weltraumfantasien treiben die B\u00f6rsen auf Rekordh\u00f6hen. Die Warnlampen blinken: hohe Bewertungen, Euphorie und ein enormer Kapitalstrom in wenige Mega-Titel. Doch von einer klassischen Blase kann [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":142840,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[22,1],"tags":[],"class_list":["post-142839","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ft","category-topstory"],"_links":{"self":[{"href":"https:\/\/news.abusizz.ch\/en\/wp-json\/wp\/v2\/posts\/142839","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/news.abusizz.ch\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/news.abusizz.ch\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/news.abusizz.ch\/en\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/news.abusizz.ch\/en\/wp-json\/wp\/v2\/comments?post=142839"}],"version-history":[{"count":0,"href":"https:\/\/news.abusizz.ch\/en\/wp-json\/wp\/v2\/posts\/142839\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/news.abusizz.ch\/en\/wp-json\/wp\/v2\/media\/142840"}],"wp:attachment":[{"href":"https:\/\/news.abusizz.ch\/en\/wp-json\/wp\/v2\/media?parent=142839"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/news.abusizz.ch\/en\/wp-json\/wp\/v2\/categories?post=142839"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/news.abusizz.ch\/en\/wp-json\/wp\/v2\/tags?post=142839"}],"curies":[{"name":"what","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}