{"id":143055,"date":"2026-08-25T03:02:33","date_gmt":"2026-08-25T01:02:33","guid":{"rendered":"https:\/\/news.abusizz.ch\/das-fonds-duell-acatis-gegen-gane-wem-gehoert-die-echte-value-event-dna\/"},"modified":"2026-08-25T03:02:33","modified_gmt":"2026-08-25T01:02:33","slug":"das-fonds-duell-acatis-gegen-gane-wem-gehoert-die-echte-value-event-dna","status":"publish","type":"post","link":"https:\/\/news.abusizz.ch\/de\/das-fonds-duell-acatis-gegen-gane-wem-gehoert-die-echte-value-event-dna\/","title":{"rendered":"Das Fonds-Duell: Acatis gegen Gan\u00e9 \u2013 wem geh\u00f6rt die echte Value-Event-DNA?"},"content":{"rendered":"<div>\n<div id=\"attachment_90858\" style=\"width: 410px\" class=\"wp-caption alignleft\">\n<p id=\"caption-attachment-90858\" class=\"wp-caption-text\">Im Performance-Vergleich erzielt Gan\u00e9 zwar die h\u00f6here Rendite, doch beide Mischfonds bleiben aktuell hinter der Peergroup zur\u00fcck. (KI-Bild: ftd.de-Redaktion mit Magnific AI)<\/p>\n<\/div>\n<p>Einst machten Dr. Uwe Rathausky und J. Henrik Muhle den Acatis Value Event Fonds gro\u00df. Dann kam der Bruch. Heute f\u00fchrt Johannes Hesche den Milliardenfonds bei Acatis weiter \u2013 w\u00e4hrend Rathausky und Muhle mit Gan\u00e9 ihren eigenen Value-Event-Fonds aufbauen. Wer hat die bessere DNA? Das Fonds-Duell zeigt: Gan\u00e9 hat seit der Trennung die Nase vorn. Doch f\u00fcr ein uneingeschr\u00e4nktes Kaufsignal reicht das noch nicht.<\/p>\n<p>Es gibt Fondsvergleiche, die sind n\u00fcchtern. Und es gibt Fondsvergleiche, die erz\u00e4hlen gleich eine ganze Branchengeschichte. Dieses Duell geh\u00f6rt zur zweiten Kategorie.<\/p>\n<p>Auf der einen Seite steht der <a href=\"https:\/\/www.acatis.de\/investmentfonds\/mischfonds\/acatis-value-event-fonds\" target=\"_blank\" rel=\"noopener\">Acatis Value Event Fonds A<\/a> (ISIN: DE000A0X7541). Ein deutscher Mischfonds-Klassiker, milliardenschwer und vielen Anlegern seit Jahren vertraut. Auf der anderen Seite steht der <a href=\"https:\/\/gane-invest.de\/en\/gane-value-event-fund\/\" target=\"_blank\" rel=\"noopener\">Gan\u00e9 Value Event Fund A<\/a> (ISIN: DE000A3D05P5). Dahinter stehen Uwe Rathausky und J. Henrik Muhle \u2013 jene Manager, die den urspr\u00fcnglichen Value-Event-Ansatz bei Acatis \u00fcber viele Jahre gepr\u00e4gt haben.<\/p>\n<p>\u00a0<\/p>\n<div class=\"chartwrapper\" id=\"chartwrapper\" data-chartid=\"6a8c387f7c0bd\"><\/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 = \"6a8c387f7c0bd\";\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 = \"6a8c387f7c0bd\";<\/p>\n<p>        var companyName = \"GAN\u00c9 Value Event Fund A\";\n        if(companyName.length <=0){\n        companyName = \"DE000A3D05P5 - EUFUND\";\n        }\n        var code = \"DE000A3D05P5\";\n        var exchange = \"EUFUND\";\n        var currency =\"EUR\";\n        var kursData = null;\n        var kursDataDate = null;\n        var chartHeight = \"\";\n        var chartWidth = \"250\"\n        var hidetitle = \"false\"\n        var hidelegend = \"false\"\n        let apiToken = \"za1j116n2273ab1vxukuh6\"\n        chartWidth = document.querySelector(`[data-chartid=\"${chartid}\"]`).offsetWidth\n        var chartData = [];\n        var timeframe = getTimeframe(\"1Y\");\n        var filter = \"adjusted_close\";\n        \n        httpGetAsync(\"https:\/\/api.leeway.tech\/api\/v1\/public\/historicalquotes\/\"+encodeURIComponent(code+\".\"+exchange)+\"?apitoken=\"+apiToken+\"&#038;filter=\"+filter+\"&#038;from=\"+timeframe.from+\"&#038;to=\"+timeframe.to, function (res) {\t\n            let newData = null;\n             chartData = newData = JSON.parse(res)\n            \/\/ chartData =  chartData.map(el=>{return{value:el.value, time:el.time, timestamp:new Date(el.time.year, el.time.month-1, el.time.day).getTime()}})\n             kursData = chartData[chartData.length-1].value\n             let options = { weekday: \"short\", year: \"numeric\", month: \"numeric\", day: \"numeric\" };\n             kursDataDate = chartData[chartData.length-1].time\n             let kursDate = new Date(kursDataDate.split(\"-\")[0], Number(kursDataDate.split(\"-\")[1])-1, kursDataDate.split(\"-\")[2]).toLocaleDateString(\"de-DE\", options)<\/p>\n<p>             renderTV(kursData,chartData,companyName,currency, Number(chartHeight), Number(chartWidth), code, exchange, kursDate, hidetitle, hidelegend, chartid)\n        });\n    });\n<\/script><\/p>\n<p>Damit lautet die eigentliche Frage nicht nur: Welcher Fonds ist besser? Sondern: Wem trauen Anleger nach der spektakul\u00e4ren Trennung mehr zu \u2013 dem etablierten Acatis-Flaggschiff oder den urspr\u00fcnglichen K\u00f6pfen hinter der Strategie?<\/p>\n<h3>Der Bruch: Aus Partnern wurden Konkurrenten<\/h3>\n<p>Am 12. Februar 2024 platzte die Nachricht in die Fondsbranche: Acatis beendet die Zusammenarbeit mit Gan\u00e9 beim Value Event Fonds. Die Fondsberatung durch Gan\u00e9 sollte am 31. M\u00e4rz 2024 auslaufen. F\u00fcr einen Fonds, der damals mehrere Milliarden Euro verwaltete, war das ein Paukenschlag.<\/p>\n<p>\u00a0<\/p>\n<div class=\"chartwrapper\" id=\"chartwrapper\" data-chartid=\"6a8c387f7c0e8\"><\/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 = \"6a8c387f7c0e8\";\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 = \"6a8c387f7c0e8\";<\/p>\n<p>        var companyName = \"ACATIS Value Event Fonds A\";\n        if(companyName.length <=0){\n        companyName = \"DE000A0X7541 - EUFUND\";\n        }\n        var code = \"DE000A0X7541\";\n        var exchange = \"EUFUND\";\n        var currency =\"EUR\";\n        var kursData = null;\n        var kursDataDate = null;\n        var chartHeight = \"\";\n        var chartWidth = \"250\"\n        var hidetitle = \"false\"\n        var hidelegend = \"false\"\n        let apiToken = \"za1j116n2273ab1vxukuh6\"\n        chartWidth = document.querySelector(`[data-chartid=\"${chartid}\"]`).offsetWidth\n        var chartData = [];\n        var timeframe = getTimeframe(\"1Y\");\n        var filter = \"adjusted_close\";\n        \n        httpGetAsync(\"https:\/\/api.leeway.tech\/api\/v1\/public\/historicalquotes\/\"+encodeURIComponent(code+\".\"+exchange)+\"?apitoken=\"+apiToken+\"&#038;filter=\"+filter+\"&#038;from=\"+timeframe.from+\"&#038;to=\"+timeframe.to, function (res) {\t\n            let newData = null;\n             chartData = newData = JSON.parse(res)\n            \/\/ chartData =  chartData.map(el=>{return{value:el.value, time:el.time, timestamp:new Date(el.time.year, el.time.month-1, el.time.day).getTime()}})\n             kursData = chartData[chartData.length-1].value\n             let options = { weekday: \"short\", year: \"numeric\", month: \"numeric\", day: \"numeric\" };\n             kursDataDate = chartData[chartData.length-1].time\n             let kursDate = new Date(kursDataDate.split(\"-\")[0], Number(kursDataDate.split(\"-\")[1])-1, kursDataDate.split(\"-\")[2]).toLocaleDateString(\"de-DE\", options)<\/p>\n<p>             renderTV(kursData,chartData,companyName,currency, Number(chartHeight), Number(chartWidth), code, exchange, kursDate, hidetitle, hidelegend, chartid)\n        });\n    });\n<\/script><\/p>\n<p>Gan\u00e9 zeigte sich \u00f6ffentlich \u00fcberrascht. Rathausky und Muhle erkl\u00e4rten, sie h\u00e4tten von der Entscheidung nicht direkt von Acatis, sondern aus der Presse erfahren.\u00a0Acatis sah die Vorgeschichte anders. Als ein Grund wurde die zunehmende Wettbewerbssituation durch eigene Fonds von Gan\u00e9 genannt.<\/p>\n<p>Wie auch immer man die Trennung bewertet: F\u00fcr Anleger entstand eine ungew\u00f6hnliche Situation. Der alte Fonds blieb bei Acatis. Die alten K\u00f6pfe gingen zu Gan\u00e9. Und pl\u00f6tzlich gab es 2 Produkte, die f\u00fcr sich beanspruchen konnten, die Value-Event-Idee fortzuf\u00fchren.<\/p>\n<h3>Management-Duell: Johannes Hesche gegen Rathausky\/Muhle<\/h3>\n<p>Beim Acatis Value Event Fonds steht heute Johannes Hesche im Zentrum. Er kam 2018 zu Acatis, ist Executive Partner und Leiter des Qualitativen Portfoliomanagements. Neben dem Value Event Fonds verantwortet er auch den Acatis Value und Dividende.<\/p>\n<p>Sein Auftrag war alles andere als gew\u00f6hnlich: Hesche \u00fcbernahm einen der bekanntesten verm\u00f6gensverwaltenden Fonds im deutschsprachigen Raum \u2013 und das ausgerechnet inmitten der \u00f6ffentlichen Trennung von Acatis und dem fr\u00fcheren Management.<\/p>\n<p>Von einem Neustart wollte Hesche allerdings nichts wissen. \u201eKeine Revolution\u201c, k\u00f6nnte man seinen Ansatz \u00fcberschreiben. Er sieht sich vielmehr als Bewahrer der bew\u00e4hrten Investmentidee \u2013 allerdings mit eigener Handschrift. Im Mittelpunkt stehen ein konsequenter Bottom-up-Ansatz, die Analyse von Gesch\u00e4ftsmodellen, harte Renditekriterien und ein ausgepr\u00e4gtes Risikobewusstsein. Gegen\u00fcber dasinvestment.com beschreibt Hesche den Ansatz entsprechend: \u201eUnser Ansatz ist ein reiner Bottom-up-Approach.\u201c<\/p>\n<p>Rathausky und Muhle stehen dagegen f\u00fcr die urspr\u00fcngliche Value-Event-DNA. Sie haben die Methodik entwickelt und \u00fcber viele Jahre gepr\u00e4gt. Nach der Trennung von Acatis f\u00fchrten sie ihren Ansatz mit dem fr\u00fcheren Gan\u00e9 Global Balanced Fund weiter, der anschlie\u00dfend in Gan\u00e9 Value Event Fund umbenannt wurde.<\/p>\n<p>Damit treffen 2 Seiten derselben Investmentgeschichte aufeinander: Acatis steht f\u00fcr die Fortf\u00fchrung der Strategie unter Johannes Hesche \u2013 Gan\u00e9 f\u00fcr die R\u00fcckkehr jener Manager, die die Value-Event-Philosophie urspr\u00fcnglich entwickelt haben.<\/p>\n<p>Genau das macht das Duell so spannend: Es geht nicht nur um zwei Fonds, sondern um die Frage, wer die urspr\u00fcngliche Value-Event-Idee heute \u00fcberzeugender interpretiert.<\/p>\n<h3>Strategie-Duell: Value trifft auf Events<\/h3>\n<p>Die Grundidee beider Fonds ist \u00e4hnlich. Beide verbinden Value Investing mit Event-Orientierung. Gesucht werden Unternehmen mit attraktiver Bewertung, hoher Qualit\u00e4t und m\u00f6glichst planbaren Cashflows. Dazu kommen Ereignisse, die zus\u00e4tzlichen Wert freisetzen k\u00f6nnen: \u00dcbernahmen, Ver\u00e4nderungen der Kapitalstruktur, Sondersituationen oder besondere Entwicklungen bei Anleihen. Doch die Dosierung unterscheidet sich.<\/p>\n<p>Der Acatis Value Event Fonds wirkt heute defensiver. Aktien, Anleihen und Liquidit\u00e4t werden breiter miteinander kombiniert. Die Aktienquote lag zuletzt bei rund 68,6 Prozent, die Rentenquote bei 27,8 Prozent. Gan\u00e9 geht offensiver zu Werke. Die Aktienquote lag bei rund 82,9 Prozent, w\u00e4hrend auf Renten nur etwa 15,3 Prozent entfielen.<\/p>\n<p>Auch bei der Gr\u00f6\u00dfe gibt es einen deutlichen Unterschied: Acatis verwaltet rund 4,39 Milliarden Euro, Gan\u00e9 etwa 1,32 Milliarden Euro. Kurz gesagt: Acatis verkauft Kontinuit\u00e4t unter neuer F\u00fchrung. Gan\u00e9 verkauft die R\u00fcckkehr der alten DNA.<\/p>\n<h3>Portfolio-Duell: Acatis ruhiger, Gan\u00e9 mutiger<\/h3>\n<p>Ein Blick auf die gr\u00f6\u00dften Positionen macht die unterschiedliche Handschrift sichtbar. Beim Acatis Value Event Fonds finden sich unter anderem Alphabet, Roche, Amazon, SAP, Glencore, Schneider Electric, Brookfield, Berkshire Hathaway, Soci\u00e9t\u00e9 G\u00e9n\u00e9rale und ASML.<\/p>\n<p>Das Portfolio wirkt global, liquide und qualit\u00e4tsorientiert. Die gro\u00dfen Namen sind bekannt, die Gesch\u00e4ftsmodelle etabliert. \u00dcberraschungen sucht man hier eher bei der Gewichtung als bei der Auswahl der Unternehmen.<\/p>\n<p>Gan\u00e9 setzt dagegen st\u00e4rker auf spezielle Einzeltitel. Zu den gr\u00f6\u00dferen Aktienpositionen z\u00e4hlen Paycom Software, Credit Acceptance, Prosus, Ionos, Ulta Beauty, SAP, Nemetschek, Sika, Salesforce und Berkshire Hathaway. Das wirkt konzentrierter und weniger benchmarknah. Wer Gan\u00e9 kauft, kauft damit st\u00e4rker die \u00dcberzeugungen von Rathausky und Muhle.<\/p>\n<p>Die Fonds unterscheiden sich also nicht nur beim Namen, sondern auch beim Charakter: Acatis ist der ruhigere Klassiker. Gan\u00e9 die offensivere Managerwette.<\/p>\n<h3>Risiko-Duell: Mehr Chancen, mehr Schwankung<\/h3>\n<p>Wer auf Gan\u00e9 setzt, muss folgerichtig auch mehr Schwankungen aushalten. Beim Acatis Value Event Fonds lag die Volatilit\u00e4t \u00fcber 3 Jahre bei rund 7,2 Prozent, der maximale Verlust bei etwa 10,6 Prozent. Das passt zum defensiveren Mischfondsprofil.<\/p>\n<p>Gan\u00e9 schwankt hingegen st\u00e4rker. Die Volatilit\u00e4t lag seit Auflage bei rund 10,3 Prozent, \u00fcber ein Jahr sogar bei 12,3 Prozent. Der maximale Verlust seit Auflage betrug rund 12,2 Prozent. Das Beta zum MSCI World lag allerdings nur bei 0,49. Gan\u00e9 ist also offensiver als Acatis \u2013 aber keineswegs ein reiner Aktienfonds mit Vollgas. Der Risikopunkt geht dennoch an Acatis. Wer m\u00f6glichst ruhig durch die M\u00e4rkte kommen m\u00f6chte, findet beim Klassiker das defensivere Profil.<\/p>\n<h3>Kosten-Duell: Gan\u00e9 deutlich g\u00fcnstiger<\/h3>\n<p>Bei den laufenden Kosten dreht sich das Bild. Der AcatisValue Event Fonds A verlangt rund 1,80 Prozent laufende Kosten. Beim Gan\u00e9 Value Event Fund A sind es lediglich 1,08 Prozent. Auch beim Ausgabeaufschlag hat Gan\u00e9 die Nase vorn: Laut Factsheet betr\u00e4gt er in der betrachteten Anteilsklasse 0,00 Prozent, w\u00e4hrend Acatis mit bis zu 5,00 Prozent ausgewiesen wird.<\/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>Allerdings gibt es einen Haken: Gan\u00e9 verlangt eine Performance Fee von 15 Prozent auf die entsprechende Outperformance. Acatis verzichtet in der betrachteten Anteilsklasse auf eine Erfolgsgeb\u00fchr. Damit lautet das Urteil nicht einfach: \u201eGan\u00e9 ist billiger.\u201c Richtig ist vielmehr: Gan\u00e9 hat die niedrigeren laufenden Kosten, Acatis die einfacher kalkulierbare Geb\u00fchrenstruktur.<\/p>\n<h3>Performance-Duell: Gan\u00e9 hat seit der Trennung die Nase vorn<\/h3>\n<p>Hier wird es heikel. Die Langfristhistorie des Acatis Value Event Fonds ist stark. Doch diese Historie enth\u00e4lt eben auch die Jahre, in denen Rathausky und Muhle von Gan\u00e9 die Strategie pr\u00e4gten. Wer also die Zehnjahreszahlen des Acatis-Fonds feiert, feiert zu einem erheblichen Teil auch die alte Gan\u00e9 -\u00c4ra. F\u00fcr den heutigen Vergleich z\u00e4hlt deshalb besonders die Zeit nach dem Bruch.<\/p>\n<p>Aktuell zeigt sich: Der Acatis Value Event Fonds A kam \u00fcber ein Jahr auf 0,4 Prozent, \u00fcber 3 Jahre auf 11,6 Prozent und \u00fcber 5 Jahre auf 13,1 Prozent. Im Kalenderjahr 2026 lag er bislang bei minus 0,7 Prozent. Der Gan\u00e9 Value Event Fund A kam seit Auflage auf 17,3 Prozent, \u00fcber ein Jahr auf 2,1 Prozent und im Kalenderjahr 2026 bislang auf 1,6 Prozent. Rechnet man n\u00e4herungsweise auf Basis der ver\u00f6ffentlichten Monatsrenditen seit M\u00e4rz 2024, also seit der Trennung, liegt Gan\u00e9 klar vorn: rund 16 Prozent gegen\u00fcber etwa 10 Prozent bei Acatis. Das ist noch kein endg\u00fcltiges Langfristurteil. Aber es ist ein erstes Ausrufezeichen.<\/p>\n<h3>Der kritische Punkt: Beide sind aktuell keine erste Wahl<\/h3>\n<p>So spannend dieses Duell ist: Anleger sollten sich von der Story nicht blenden lassen. Im Zweikampf steht Gan\u00e9 seit dem Bruch besser da. Im breiteren Vergleich sieht die Sache n\u00fcchterner aus. Beide Fonds konnten seit Auflage des Gan\u00e9 Value Event Fund den Sektor Mischfonds ausgewogen Welt nicht \u00fcberzeugend hinter sich lassen. Das ist die unbequeme Wahrheit hinter der gro\u00dfen Erz\u00e4hlung.<\/p>\n<p>Der Acatis Value Event Fonds hat seit dem Bruch sichtbar an Glanz verloren. Gan\u00e9 hat zwar den direkten Vergleich gewonnen, liefert aber ebenfalls noch keinen Beweis, dass der Fonds im breiten Peergroup-Vergleich schon erste Wahl ist.<\/p>\n<p>Auch aktuelle Peergroup-Rankings sprechen nicht f\u00fcr eine Spitzenposition: CAPinside f\u00fchrt den Acatis Value Event Fonds A in der Peergroup Mischfonds ausgewogen Welt nur auf Rang 1112 von 1191. F\u00fcr den Gan\u00e9 Value Event Fund D wird Rang 1064 von 1117 ausgewiesen; einzelne andere Gan\u00e9 -Tranchen schneiden besser ab, aber auch hier entsteht kein klares Bild eines Peergroup-Leaders. Das relativiert das Duell: Gan\u00e9 schl\u00e4gt Acatis seit der Trennung. Aber beide Fonds m\u00fcssen erst wieder beweisen, dass Value Event nicht nur eine starke Vergangenheit, sondern auch eine \u00fcberlegene Gegenwart hat.<\/p>\n<h3>Das Urteil: Gan\u00e9 gewinnt die Story, Acatis die Stabilit\u00e4t<\/h3>\n<p>Punktsieg f\u00fcr Gan\u00e9 \u2013 aber kein uneingeschr\u00e4nktes Kaufsignal. Nicht, weil der Acatis Value Event Fonds unter Johannes Hesche schlecht w\u00e4re. Sondern weil Gan\u00e9 seit dem Bruch mehr Zug, niedrigere laufende Kosten und die \u00fcberzeugendere Kontinuit\u00e4tsgeschichte auf seiner Seite hat. Gegen\u00fcber der breiten Peergroup bleibt aber auch Gan\u00e9 beweispflichtig.<\/p>\n<p>Acatis punktet bei Gr\u00f6\u00dfe, Stabilit\u00e4t, geringerer Volatilit\u00e4t und Plattformst\u00e4rke. Johannes Hesche hat den Fonds nicht umgeworfen, sondern mit ruhiger Hand weitergef\u00fchrt und eigene Akzente gesetzt \u2013 vor allem \u00fcber Bottom-up-Selektion, Anleihen und Risikokontrolle. F\u00fcr einen Spitzenplatz im Sektor reicht das derzeit jedoch nicht.<\/p>\n<p>Gan\u00e9 punktet bei Managerkontinuit\u00e4t, aktiverer Aktienquote und j\u00fcngerer Performance. Rathausky und Muhle verk\u00f6rpern f\u00fcr viele Anleger die urspr\u00fcngliche Value-Event-Handschrift. Ihr neuer Fonds ist die offensivere Antwort auf den Bruch.<\/p>\n<p>Die Entscheidung h\u00e4ngt deshalb vom Anlegertyp ab. Wer einen gro\u00dfen, defensiveren Mischfonds sucht und Wert auf geringere Schwankungen legt, findet bei Acatis weiterhin einen nachvollziehbaren Kandidaten. Wer dagegen davon \u00fcberzeugt ist, dass die eigentliche Value-Event-DNA mit Rathausky und Muhle zu Gan\u00e9 gewandert ist, bekommt mit dem Gan\u00e9 Value Event Fund die spannendere Wette. Denn am Ende geht es bei diesem Duell um mehr als Performance, Kosten und Aktienquote. Die alte Erfolgsgeschichte trug beide Namen. Die neue wird getrennt geschrieben.<\/p>\n<p>\u00a0<\/p>\n<p style=\"font-size: 12px;\">Disclaimer:<br \/>\nKeine Anlageberatung. Kein Aufruf zum Kauf oder Verkauf von Wertpapieren.<\/p>\n<p>Der Beitrag <a href=\"https:\/\/www.ftd.de\/boerse\/anlagestrategie\/das-fonds-duell-acatis-gegen-gane-wem-gehoert-die-echte-value-event-dna\/\">Das Fonds-Duell: Acatis gegen Gan\u00e9 \u2013 wem geh\u00f6rt die echte Value-Event-DNA?<\/a> erschien zuerst auf <a href=\"https:\/\/www.ftd.de\/\">ftd.de<\/a>.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Im Performance-Vergleich erzielt Gan\u00e9 zwar die h\u00f6here Rendite, doch beide Mischfonds bleiben aktuell hinter der Peergroup zur\u00fcck. (KI-Bild: ftd.de-Redaktion mit Magnific AI) Einst machten Dr. Uwe Rathausky und J. Henrik Muhle den Acatis Value Event Fonds gro\u00df. Dann kam der Bruch. Heute f\u00fchrt Johannes Hesche den Milliardenfonds bei Acatis weiter \u2013 w\u00e4hrend Rathausky und Muhle [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":143056,"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-143055","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ft","category-topstory"],"_links":{"self":[{"href":"https:\/\/news.abusizz.ch\/de\/wp-json\/wp\/v2\/posts\/143055","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/news.abusizz.ch\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/news.abusizz.ch\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/news.abusizz.ch\/de\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/news.abusizz.ch\/de\/wp-json\/wp\/v2\/comments?post=143055"}],"version-history":[{"count":0,"href":"https:\/\/news.abusizz.ch\/de\/wp-json\/wp\/v2\/posts\/143055\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/news.abusizz.ch\/de\/wp-json\/wp\/v2\/media\/143056"}],"wp:attachment":[{"href":"https:\/\/news.abusizz.ch\/de\/wp-json\/wp\/v2\/media?parent=143055"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/news.abusizz.ch\/de\/wp-json\/wp\/v2\/categories?post=143055"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/news.abusizz.ch\/de\/wp-json\/wp\/v2\/tags?post=143055"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}