{"id":142161,"date":"2026-07-28T03:02:27","date_gmt":"2026-07-28T01:02:27","guid":{"rendered":"https:\/\/news.abusizz.ch\/ruestungs-etfs-2026-ist-der-boom-vorbei-oder-beginnt-jetzt-erst-die-zweite-welle\/"},"modified":"2026-07-28T03:02:27","modified_gmt":"2026-07-28T01:02:27","slug":"ruestungs-etfs-2026-ist-der-boom-vorbei-oder-beginnt-jetzt-erst-die-zweite-welle","status":"publish","type":"post","link":"https:\/\/news.abusizz.ch\/fr\/ruestungs-etfs-2026-ist-der-boom-vorbei-oder-beginnt-jetzt-erst-die-zweite-welle\/","title":{"rendered":"R\u00fcstungs-ETFs 2026: Ist der Boom vorbei \u2013 oder beginnt jetzt erst die zweite Welle?"},"content":{"rendered":"<div>\n<div id=\"attachment_89795\" style=\"width: 410px\" class=\"wp-caption alignleft\">\n<p id=\"caption-attachment-89795\" class=\"wp-caption-text\">Der Verteidigungssektor entwickelt sich durch den Einsatz von KI und Drohnen zu einer technologisch getriebenen Zukunftsbranche. (Bild: Magnific AI)<\/p>\n<\/div>\n<p>Wer auf ein schnelles Ende des R\u00fcstungsbooms gesetzt hat, d\u00fcrfte entt\u00e4uscht werden. Der Nato-Gipfel in Ankara macht deutlich: Die westliche Welt stellt ihre Verteidigung dauerhaft auf neue F\u00fc\u00dfe. F\u00fcr Anleger ist das eine gute und eine schlechte Nachricht zugleich. Denn die gro\u00dfe Euphorie ist vorbei \u2013 der Superzyklus wom\u00f6glich noch lange nicht.<\/p>\n<h3>R\u00fcstungsaktien im Wandel: Die neue Realit\u00e4t an der B\u00f6rse<\/h3>\n<p>R\u00fcstung ist ein schwieriges Investment. Moralisch sowieso. B\u00f6rsentechnisch inzwischen ebenfalls. Vor 2 Jahren reichte noch eine Schlagzeile \u00fcber neue Waffenlieferungen und Rheinmetall legte 5 Prozent zu. Heute reagieren die Kurse deutlich gelassener. Nicht weil die Welt friedlicher geworden w\u00e4re \u2013 sondern weil Anleger verstanden haben, dass zwischen politischen Versprechen und steigenden Unternehmensgewinnen oft Jahre liegen.<\/p>\n<p>Genau das zeigte auch der Nato-Gipfel Anfang Juli in Ankara. Mehr als 50 Milliarden US-Dollar sollen zus\u00e4tzlich in neue Verteidigungsprogramme flie\u00dfen. Weitere 40 Milliarden Dollar sind allein f\u00fcr Drohnenabwehr vorgesehen. Europas Verteidigungsausgaben steigen 2026 voraussichtlich um weitere 11 Prozent, nachdem sie bereits im Vorjahr um rund 20 Prozent zugelegt hatten. Die Botschaft ist eindeutig. Die Friedensdividende der vergangenen Jahrzehnte ist Geschichte.<\/p>\n<h3>Das eigentliche Wettr\u00fcsten findet in den Fabriken statt<\/h3>\n<p>Der gr\u00f6\u00dfte Irrtum vieler Anleger lautet, dass k\u00fcnftig einfach mehr Panzer gebaut werden. Tats\u00e4chlich ver\u00e4ndert sich die Branche gerade grundlegend. Der Krieg in der Ukraine hat gezeigt, dass Drohnen f\u00fcr wenige Tausend Dollar millionenschwere Waffensysteme ausschalten k\u00f6nnen. Gleichzeitig gewinnen k\u00fcnstliche Intelligenz, Satellitenkommunikation, elektronische Kampff\u00fchrung, Cyberabwehr und autonome Systeme rasant an Bedeutung.<\/p>\n<p>Der Verteidigungssektor wird immer mehr zur Technologiebranche. Die Gewinner der kommenden 10 Jahre k\u00f6nnten deshalb weniger Panzerbauer sein als Softwareentwickler, Sensorhersteller oder Spezialisten f\u00fcr Drohnenabwehr.<\/p>\n<h3>Warum die B\u00f6rse keine Absichtserkl\u00e4rungen mehr honoriert<\/h3>\n<p>Das erkl\u00e4rt auch, warum viele R\u00fcstungsaktien trotz voller Auftragsb\u00fccher zuletzt korrigiert haben. Die B\u00f6rse bezahlt keine politischen Absichtserkl\u00e4rungen. Sie bezahlt Gewinne. Und genau dort beginnt das Problem.<\/p>\n<p>Neue Produktionslinien kosten Milliarden, Fachkr\u00e4fte fehlen, Genehmigungen dauern, Ausschreibungen ziehen sich \u00fcber Jahre. Selbst riesige Sonderverm\u00f6gen flie\u00dfen nur langsam in den Unternehmensbilanzen an. Der Superzyklus l\u00e4uft also weiter. Nur deutlich langsamer, als viele Investoren gehofft hatten.<\/p>\n<p>\u00a0<\/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<h3>Das gr\u00f6\u00dfte Risiko f\u00fcr den R\u00fcstungssektor: Frieden<\/h3>\n<p>Nat\u00fcrlich kann die Investmentstory scheitern. Sollte der Ukrainekrieg enden, sich der Nahe Osten stabilisieren und gleichzeitig die geopolitischen Spannungen zwischen den USA und China nachlassen, w\u00fcrde auch der politische Druck sinken. Genau deshalb bleibt R\u00fcstung ein au\u00dfergew\u00f6hnlich politisches Investment.<\/p>\n<p>Allerdings spricht derzeit wenig daf\u00fcr, dass die Verteidigungsausgaben wieder auf das Niveau der 2010er-Jahre zur\u00fcckkehren. Europa will unabh\u00e4ngiger werden. Die Nato fordert dauerhaft h\u00f6here Verteidigungsbudgets. Lieferketten sollen wieder ins eigene B\u00fcndnis verlagert werden. Milit\u00e4rische Produktion entwickelt sich zunehmend zu einer strategischen Industriepolitik. Der eigentliche Trend hei\u00dft deshalb nicht Krieg. Er hei\u00dft Abschreckung.<\/p>\n<h3>Diese ETFs setzen auf den neuen Sicherheitszyklus<\/h3>\n<h4>VanEck Defense UCITS ETF<\/h4>\n<p>Der <a href=\"https:\/\/www.vaneck.com\/de\/de\/verteidigungs-etf\/\" target=\"_blank\" rel=\"noopener\">Vaneck Defense ETF<\/a> (ISIN: IE000YYE6WK5) ist der Klassiker unter den R\u00fcstungs-ETFs und mit Abstand der gr\u00f6\u00dfte Fonds seiner Kategorie. Er investiert weltweit in etablierte Verteidigungskonzerne und verbindet klassische R\u00fcstung mit moderner Verteidigungstechnologie.<\/p>\n<p>\u00a0<\/p>\n<p><span style=\"font-weight: 400;\"><\/p>\n<div class=\"chartwrapper\" id=\"chartwrapper\" data-chartid=\"6a67584a56b2f\"><\/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 = \"6a67584a56b2f\";\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 = \"6a67584a56b2f\";<\/p>\n<p>        var companyName = \"VanEck Defense ETF A USD Acc EUR\";\n        if(companyName.length <=0){\n        companyName = \"DFEN - XETRA\";\n        }\n        var code = \"DFEN\";\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><\/span><\/p>\n<p>Zu den gr\u00f6\u00dften Positionen geh\u00f6rt Palantir, das sich vom Datenanalyse-Spezialisten zum wichtigsten Softwarelieferanten westlicher Streitkr\u00e4fte entwickelt hat. Ebenfalls hoch gewichtet ist RTX, einer der weltweit f\u00fchrenden Hersteller von Flugabwehrsystemen und Lenkwaffen. Hinzu kommt Thales, Europas Technologiekonzern f\u00fcr Radarsysteme, Elektronik und milit\u00e4rische Kommunikation.<\/p>\n<p>Mit einem Plus von lediglich 1,6 Prozent geh\u00f6rt der ETF im laufenden Jahr zwar zu den Nachz\u00fcglern, langfristig bleibt die Bilanz mit \u00fcber 155 Prozent in 3 Jahren jedoch beeindruckend.<\/p>\n<h4>Wisdomtree Europe Defence UCITS ETF<\/h4>\n<p>Wer ausschlie\u00dflich auf Europas Wiederbewaffnung setzen m\u00f6chte, landet zwangsl\u00e4ufig beim <a href=\"https:\/\/www.wisdomtree.com\/at\/products\/equities\/wisdomtree-europe-defence-ucits-etf---eur-acc\" target=\"_blank\" rel=\"noopener\">Wisdomtree Europe Defence ETF<\/a> (ISIN: IE0002Y8CX98). Die Schwergewichte hei\u00dfen hier Thales, BAE Systems und Rheinmetall. W\u00e4hrend Thales nahezu die gesamte milit\u00e4rische Elektronik abdeckt, gilt BAE Systems als Europas gr\u00f6\u00dfter R\u00fcstungskonzern. Rheinmetall wiederum profitiert vor allem vom Ausbau der Munitionsproduktion und moderner Landsysteme.<\/p>\n<p>\u00a0<\/p>\n<p><span style=\"font-weight: 400;\"><\/p>\n<div class=\"chartwrapper\" id=\"chartwrapper\" data-chartid=\"6a67584a56b5e\"><\/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 = \"6a67584a56b5e\";\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 = \"6a67584a56b5e\";<\/p>\n<p>        var companyName = \"WisdomTree Europe Defence UCITS ETF - EUR Acc\";\n        if(companyName.length <=0){\n        companyName = \"EUDF - XETRA\";\n        }\n        var code = \"EUDF\";\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><\/span><\/p>\n<p>Der ETF ist die wohl konsequenteste Wette auf Europas sicherheitspolitische Neuordnung. Die Performance im laufenden Jahr liegt bei 4,72 Prozent.<\/p>\n<h4>Amundi STOXX Europe Defense UCITS ETF<\/h4>\n<p>Der <a href=\"https:\/\/www.amundietf.de\/de\/privatanleger\/products\/equity\/amundi-stoxx-europe-defense-ucits-etf-acc\/lu3038520774\" target=\"_blank\" rel=\"noopener\">Amundi Stoxx Europe Defence ETF<\/a> (ISIN: LU3038520774) \u00e4hnelt dem WisdomTree-ETF, setzt die Schwerpunkte jedoch etwas anders. Die gr\u00f6\u00dften Positionen sind Airbus, Rolls-Royce und Safran. Airbus profitiert nicht nur vom zivilen Flugzeuggesch\u00e4ft, sondern auch vom milit\u00e4rischen Transport- und Satellitensegment. Rolls-Royce liefert Triebwerke f\u00fcr zahlreiche milit\u00e4rische Anwendungen, w\u00e4hrend Safran zu den weltweit f\u00fchrenden Herstellern von Navigations-, Sensor- und Antriebstechnologien z\u00e4hlt.<\/p>\n<p>\u00a0<\/p>\n<p><span style=\"font-weight: 400;\"><\/p>\n<div class=\"chartwrapper\" id=\"chartwrapper\" data-chartid=\"6a67584a56b82\"><\/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 = \"6a67584a56b82\";\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 = \"6a67584a56b82\";<\/p>\n<p>        var companyName = \"Amundi Stoxx Europe Defense UCITS ETF Acc\";\n        if(companyName.length <=0){\n        companyName = \"DEFS - PA\";\n        }\n        var code = \"DEFS\";\n        var exchange = \"PA\";\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><\/span><\/p>\n<p>Damit investiert der ETF st\u00e4rker in die industrielle Basis der europ\u00e4ischen Verteidigung als in reine Waffenhersteller. Die Performance liegt mit plus 4,2 Prozent im laufenden Jahr in etwa auf dem Niveau des WisdomTree Europe Defence ETFs.<\/p>\n<h4>HANetf Future of Defense UCITS ETF<\/h4>\n<p>Der <a href=\"https:\/\/hanetf.com\/de\/fund\/nato-future-of-defence-etf\/\" target=\"_blank\" rel=\"noopener\">HANetf Future of Defense UCITS ETF<\/a> (ISIN: IE000OJ5TQP4) bildet den eigentlichen Strukturwandel der Branche ab. Neben klassischen R\u00fcstungswerten geh\u00f6ren Palo Alto Networks und CrowdStrike zu den gr\u00f6\u00dften Positionen. Beide Unternehmen z\u00e4hlen weltweit zu den Marktf\u00fchrern im Bereich Cybersecurity. Erg\u00e4nzt werden sie durch Palantir, dessen KI- und Datenplattformen l\u00e4ngst zum Standard vieler Verteidigungsorganisationen geworden sind. Wer glaubt, dass der Krieg der Zukunft vor allem digital gef\u00fchrt wird, findet hier den modernsten ETF der Branche. Die Performance in 2026: plus 15,9 Prozent.<\/p>\n<p>\u00a0<\/p>\n<p><span style=\"font-weight: 400;\"><\/p>\n<div class=\"chartwrapper\" id=\"chartwrapper\" data-chartid=\"6a67584a56ba9\"><\/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 = \"6a67584a56ba9\";\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 = \"6a67584a56ba9\";<\/p>\n<p>        var companyName = \"HANetf ICAV - Future of Defence UCITS ETF - Accumulating EUR\";\n        if(companyName.length <=0){\n        companyName = \"ASWC - XETRA\";\n        }\n        var code = \"ASWC\";\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><\/span><\/p>\n<h4>Invesco Defence Innovation UCITS ETF<\/h4>\n<p>Der <a href=\"https:\/\/www.invesco.com\/de\/de\/financial-products\/etfs\/invesco-defence-innovation-ucits-etf-acc.html\" target=\"_blank\" rel=\"noopener\">Invesco Defence Innovation UCITS ETF<\/a> (ISIN: IE000BRM9046) ist der Au\u00dfenseiter \u2013 und gleichzeitig der \u00dcberflieger. Statt auf die gro\u00dfen R\u00fcstungskonzerne setzt der Fonds gezielt auf kleinere Innovationsf\u00fchrer. Rocket Lab entwickelt Tr\u00e4gersysteme und Satelliteninfrastruktur f\u00fcr den Weltraum. Kratos Defense gilt als Spezialist f\u00fcr autonome Drohnen und unbemannte Kampfsysteme. AeroVironment geh\u00f6rt zu den weltweit f\u00fchrenden Herstellern milit\u00e4rischer Drohnen und Loitering-Munition. Mit fast 27 Prozent Plus im laufenden Jahr ist der ETF der klare Performance-Sieger. Gleichzeitig m\u00fcssen Anleger allerdings die h\u00f6chsten Kursschwankungen einkalkulieren.<\/p>\n<p>\u00a0<\/p>\n<p><span style=\"font-weight: 400;\"><\/p>\n<div class=\"chartwrapper\" id=\"chartwrapper\" data-chartid=\"6a67584a56bc9\"><\/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 = \"6a67584a56bc9\";\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 = \"6a67584a56bc9\";<\/p>\n<p>        var companyName = \"Invesco Markets II plc - Invesco Defence Innovation UCITS ETF\";\n        if(companyName.length <=0){\n        companyName = \"IDFN - LSE\";\n        }\n        var code = \"IDFN\";\n        var exchange = \"LSE\";\n        var currency =\"USD\";\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><\/span><\/p>\n<h3>Fazit: Investments im Verteidigungssektor<\/h3>\n<p>Der gr\u00f6\u00dfte Fehler w\u00e4re heute, R\u00fcstung ausschlie\u00dflich mit Panzern und Raketen gleichzusetzen. Die Verteidigungsindustrie entwickelt sich zur Hightech-Branche. Software, K\u00fcnstliche Intelligenz, Satelliten, Drohnen und Cybersecurity d\u00fcrften k\u00fcnftig einen immer gr\u00f6\u00dferen Teil der Verteidigungsbudgets verschlingen.<\/p>\n<p>Genau deshalb unterscheiden sich die ETFs inzwischen erheblich. Der VanEck eignet sich als globales Basisinvestment. WisdomTree und Amundi setzen konsequent auf Europas Aufr\u00fcstung. Der Future of Defense investiert in die Digitalisierung der Verteidigung. Und der Invesco Defence Innovation ist die spekulative Wette auf die n\u00e4chste Generation milit\u00e4rischer Technologien. Die B\u00f6rse hat den Hype inzwischen hinter sich gelassen. Vielleicht beginnt genau deshalb jetzt die interessantere Phase.<\/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\/exchange-traded-funds\/ruestungs-etfs-2026-boom-vorbei-oder-zweite-welle\/\">R\u00fcstungs-ETFs 2026: Ist der Boom vorbei \u2013 oder beginnt jetzt erst die zweite Welle?<\/a> erschien zuerst auf <a href=\"https:\/\/www.ftd.de\/\">ftd.de<\/a>.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Der Verteidigungssektor entwickelt sich durch den Einsatz von KI und Drohnen zu einer technologisch getriebenen Zukunftsbranche. (Bild: Magnific AI) Wer auf ein schnelles Ende des R\u00fcstungsbooms gesetzt hat, d\u00fcrfte entt\u00e4uscht werden. Der Nato-Gipfel in Ankara macht deutlich: Die westliche Welt stellt ihre Verteidigung dauerhaft auf neue F\u00fc\u00dfe. F\u00fcr Anleger ist das eine gute und eine [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":142162,"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-142161","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ft","category-topstory"],"_links":{"self":[{"href":"https:\/\/news.abusizz.ch\/fr\/wp-json\/wp\/v2\/posts\/142161","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/news.abusizz.ch\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/news.abusizz.ch\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/news.abusizz.ch\/fr\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/news.abusizz.ch\/fr\/wp-json\/wp\/v2\/comments?post=142161"}],"version-history":[{"count":0,"href":"https:\/\/news.abusizz.ch\/fr\/wp-json\/wp\/v2\/posts\/142161\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/news.abusizz.ch\/fr\/wp-json\/wp\/v2\/media\/142162"}],"wp:attachment":[{"href":"https:\/\/news.abusizz.ch\/fr\/wp-json\/wp\/v2\/media?parent=142161"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/news.abusizz.ch\/fr\/wp-json\/wp\/v2\/categories?post=142161"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/news.abusizz.ch\/fr\/wp-json\/wp\/v2\/tags?post=142161"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}