mandelkow.fr

Categories

Startseite > Periodika > Tageszeitungen > Bundesrepublik Deutschland > Financial Times Deutschland

Financial Times Deutschland

„Wir denken global, recherchieren gründlich, stellen Nachrichten in den Vordergrund. Unsere wichtigsten journalistischen Werte sind Präzision und Fairness. Wir haben Mut zur Meinung und ordnen Informationen in einen Kontext ein. Die FTD ist kompakt. Und sie ist lachsrosa.“ — Steffen Klusmann, Chefredakteur der Financial Times Deutschland

http://www.ftd.de/

Artikel

  • Hannover Messe 2024: Highlights in der Übersicht – Schaufenster der Industrie

    12. April, von Klemens Vogel
    Additive Fertigung auf der Hannover Messe 2023 (Foto: Deutsche Messe, Rainer Jensen) - Hannover Messe 2024: Highlights in der Übersicht – Schaufenster der Industrie

    Additive Fertigung auf der Hannover Messe 2023 (Foto: Deutsche Messe, Rainer Jensen)

    Hannover –Branchenvielfalt, Entscheiderdichte, Innovationskompass: Die Hannover Messe ist das weltweite Schaufenster der Industrie. Wer Rang und Namen hat, präsentiert sich vom 22. bis 26.April den rund 130.000 Gästen. 4.000 Aussteller, 1.870 Speaker und rund 300 Start-up sind mit dabei.

    „Energizing a Sustainable Industry“ – so lautet 2024 das Leitthema. Leistungsstark und klimaneutral soll die Produktion der Zukunft sein. Maschinenbau, Elektrotechnik, Digital- und Energiewirtschaft präsentieren wegweisende Lösungen für die Zukunft von Produktion und Energieversorgung.

    Offizielles Partnerland Norwegen – disruptive Start-ups erleben

    Norwegen ist offizielles Partnerland der Hannover Messe 2024. Die Partnerschaft betont Norwegens Engagement, innovative Lösungen für die grüne Transformation der Industrie zu entwickeln und voranzutreiben. Podiumsdiskussionen bietet etwa die Bühne des Norwegen-Pavillons (Halle 12).

    300 aufstrebende Start-ups sind dieses Jahr dabei – viele haben das Potenzial, ganze Branchen zu verändern. Die Hannover Messe macht es möglich, dass sich Gründer und Industriegiganten kennenlernen und vernetzen. Die Start-up-Areas und -Bühnen befinden sich in den Hallen 2 und 17.

    Jugend für MINT-Fächer gewinnen – Topthema grüner Wasserstoff

    Junge Talente für Technik und Naturwissenschaften begeistern – das ist Ziel des Programms „Your Future“. 2023 gestartet, spricht „Your Future“ Schülerinnen und Schüler aber auch Studierende an. Denn diese Generation kann dazu beitragen, mit Innovation eine lebenswerte Zukunft zu gestalten.

    Bei der Energiewende spielt grüner Wasserstoff eine wachsende Rolle. Auf der Hannover Messe sind 500 Aussteller der Wasserstoff- und Brennstoffzellenbranche vertreten. Hier geht es etwa um das künftige Speichern und das Management von Energie sowie die Integration in Stromnetze.

    Neuer Bereich Industrial Services – Karrierekongress Femworx

    „Industriedienstleistungen“ heißt ein neues Ausstellungsareal, mit dem die Hannover Messe auf den Wandel am Markt reagiert. Denn angesichts von Fachkräftemangel oder wachsender Bürokratie lagern immer mehr Betriebe Dienstleistungen aus, etwa Wartung, Recycling oder Reinigung.

    Ebenfalls Premiere feiert 2024 Karrierekongress Femworx (Convention Center). Das Event am 25. und 26. April bietet Netzwerken und Diskussionen rund um Diversität, Karriere, Nachhaltigkeit und moderne Arbeitswelten. Femworx setzt die bisherige WomenPower-Reihe unter neuem Namen fort.

    Drahtlose Kommunikation – Gipfel für Forschung und Innovation

    2024 wieder dabei: die „Industrial Wireless Arena“ (Halle 24). Die Partner VDMA, ZVEI und Deutsche Messe setzen das 2023 gestartete Format fort. Siemens, Huawei, Qualcomm – etwa 60 Aussteller demonstrieren Fähigkeiten und Potenziale industrieller Wireless-Systeme und 5G-Anwendungen.

    Kluge Köpfe aus Wirtschaft, Forschung, Politik und Gesellschaft treffen sich am 22. April beim Gipfel für Forschung und Innovation. 2024 findet das Forum im Rahmen der Hannover Messe statt. Motto: „Innovationen in Europa – Katalysatoren, Kompetenzen und Kooperationen am Beispiel von KI“.

    Eintrittskarten und Öffnungszeiten

    Messetickets, Eintrittskarten für Femworx 2024 und Tickets für geführte Messerundgänge können Fachbesucher und Privatleute im Online-Ticketshop erwerben. Die Hannover Messe ist vom 22. bis zum 26. April jeweils von 9 bis 18 Uhr geöffnet.

    Der Beitrag Hannover Messe 2024: Highlights in der Übersicht – Schaufenster der Industrie erschien zuerst auf ftd.de.

  • Bitcoin: Rekord-Prognose – 1 Milliarde Dollar! Das Update vor dem Halving

    12. April, von Klemens Vogel

    Illustration mit startender Rakete, dahinter Mond mit Bitcoin-Zeichen (Foto: Freepik, abubokor) - Bitcoin: Rekord-Prognose - 1 Milliarde Dollar! Das Update vor dem Halving

    Es ist die wohl bullishste Bitcoin-Prognose des Bull-Runs: Einer der bekanntesten Vermögensverwalter der Branche sieht Bitcoin (BTC) auf 1 Milliarde Dollar zusteuern. Was steckt dahinter – und bis wann explodiert demnach der Bitcoin-Kurs?

    Halving voraus – jetzt Bitcoin kaufen?

    Das vierte Bitcoin-Halving steht vor der Tür, in rund einer Woche ist es soweit: Das Netzwerk-Update reduziert die Anzahl neu ausgegebener Bitcoins um 50 Prozent, die Kryptowährung wird folglich deutlich rarer. Die gesamte Branche blickt auf das Event, denn: Analysen bescheinigen dem Bitcoin-Halving einen bullishen Effekt auf den Kurs, Prognosen sagen neue Allzeithöchststände voraus.

    Die Halvings der Vergangenheit vermochten den Bitcoin-Preis stets empfindlich nach oben zu bewegen: 2012 konnte die Kryptowährung Nummer 1 im Anschluss 9.500 Prozent zulegen, 2016 waren es plus 4.100 Prozent, 2020 immerhin noch plus 693 Prozent. Es ist allerdings ein wenig Geduld vonnöten: Bislang hat Bitcoin rund anderthalb Jahre gebraucht, um nach den jeweiligen Halvings neue Rekordpreise zu erreichen.

     

    <script id="tvChartLoader" async src="https://unpkg.com/lightweight-charts/dist/lightweight-charts.standalone.production.js"></script> <script id="declarations">
    var chartid = "66211bb60a37a";
    function renderTV(kursData, chartData,companyName,currency, chartHeight, chartWidth, code, exchange, kursDate, hidetitle, hidelegend, chartid) {
    console.log("render chart with id", document.querySelector(`[data-chartid="${chartid}"]`));
    let width = chartWidth?chartWidth:600;
    let ratio = 2
    let height = chartHeight?chartHeight:(width/ratio);
    document.querySelector(`[data-chartid="${chartid}"]`).style.height = chartHeight +50
    document.querySelector(`[data-chartid="${chartid}"]`).style.width = chartWidth

    // formatter for x achis dates
    function customXAchsisFormetter(timePoint, tickMarkType, locale) {
    let formatOptions = {};
    const date = new Date(timePoint);

    if(tickMarkType <=1){
    formatOptions = {day: "numeric", month: "short",year: "numeric",}

    }else{
    formatOptions = {day: "numeric", month: "short",year: "numeric",}
    }
    // from given date we should use only as UTC date or timestamp
    // but to format as locale date we can convert UTC date to local date
    const localDateFromUtc = new Date(
    date.getUTCFullYear(),
    date.getUTCMonth(),
    date.getUTCDate()
    );

    return localDateFromUtc.toLocaleString(locale, formatOptions);
    }

    //create buttons
    function createSimpleSwitcher(items, activeItem, activeItemChangedCallback) {
    var switcherElement = document.createElement("div");
    switcherElement.classList.add("switcher");

    var intervalElements = items.map(function (item) {
    var itemEl = document.createElement("button");
    itemEl.innerText = item;
    itemEl.classList.add("switcher-item");
    itemEl.classList.toggle("switcher-active-item", item === activeItem);
    itemEl.addEventListener("click", function () {
    onItemClicked(item);
    });
    switcherElement.appendChild(itemEl);
    return itemEl;
    });

    function onItemClicked(item) {
    if (item === activeItem) {
    return;
    }

    intervalElements.forEach(function (element, index) {
    element.classList.toggle("switcher-active-item", items[index] === item);
    });

    activeItem = item;

    activeItemChangedCallback(item);
    }

    return switcherElement;
    }
    // loading: true or false
    function handleAsyncUI(loading){
    var IntervalButtons = document.getElementsByClassName("switcher-item");
    for(var i = 0; i < IntervalButtons.length; i++){
    IntervalButtons[i].disabled = loading;
    }
    var chart = document.getElementsByClassName("tv-lightweight-charts")[0];
    if(loading){

    chart.style["display"] = "flex"
    chart.style["align-items"] = "center"
    chart.style["justify-content"] = "center"

    var loadingIndicator = document.createElement("div");
    loadingIndicator.classList.add("loader");
    //loadingIndicator.innerText = "Loading";
    loadingIndicator.id ="loadingIndicator"
    chart.appendChild(loadingIndicator);
    }else{
    document.getElementById("loadingIndicator").remove();
    chart.style["display"] = null
    chart.style["align-items"] =null
    chart.style["justify-content"] = null
    }

    }
    var intervals = ["1M","3M","6M","1Y","3Y","5Y"];
    var seriesesData = new Map([
    ["1M", []], // 1m (interval daten?), 3m, 6m, 1y, 3y, 5y
    ["3M", []],
    ["6M", []],
    ["1Y", chartData],
    ["3Y", []],
    ["5Y", []],
    ]);
    var switcherElement = createSimpleSwitcher(intervals, intervals[3], syncToInterval);
    var chartElement = document.createElement("div");
    const chart = LightweightCharts.createChart(chartElement, {
    width: width,
    height: height,
    rightPriceScale: {
    scaleMargins: {
    top: 0.2,
    bottom: 0.2,
    },
    borderVisible: false,
    },
    timeScale: {
    borderVisible: false,
    lockVisibleTimeRangeOnResize: true,

    rightOffset:1,
    tickMarkFormatter:customXAchsisFormetter

    },
    grid: {
    horzLines: {
    color: "#eee",
    visible: false,
    },
    vertLines: {
    color: "#ffffff",
    },
    },
    crosshair: {
    horzLine: {
    visible: false,
    labelVisible: false
    },
    vertLine: {
    visible: true,
    style: 0,
    width: 2,
    color: "rgba(80, 50, 25, 0.1)",
    labelVisible: false,
    }
    },
    handleScroll: {
    mouseWheel: false,
    pressedMouseMove: false,
    horzTouchDrag: false,
    vertTouchDrag: false
    },
    handleScale: {
    axisPressedMouseMove: false,
    mouseWheel: false,
    pinch: false,
    },
    });
    var areaSeries = null;
    var positionDIV = document.querySelector(`[data-chartid="${chartid}"]`)
    positionDIV.appendChild(chartElement);
    positionDIV.appendChild(switcherElement);
    function httpGetAsync(theUrl, callback) {
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.onreadystatechange = function () {
    if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
    callback(xmlHttp.responseText);
    }
    xmlHttp.open("GET", theUrl, true); // true for asynchronous
    xmlHttp.send(null);
    }
    function formatDate(date) {

    var month = "" + (date.getMonth()+1);
    var day = "" + date.getDate();
    var year = date.getFullYear();

    if (month.length < 2)
    month = "0" + month;
    if (day.length < 2)
    day = "0" + day;
    return [year, month, day].join("-");
    }
    function getTimeframe(interval){
    let from = null;
    let to = formatDate(new Date());
    switch (interval) {
    case "1M": from = formatDate(new Date(Date.now() - 31 * 24 * 60 * 60 * 1000)); break;
    case "3M": from = formatDate(new Date(Date.now() - 93 * 24 * 60 * 60 * 1000)); break;
    case "6M": from = formatDate(new Date(Date.now() - 186 * 24 * 60 * 60 * 1000)); break;
    case "1Y": from = formatDate(new Date(Date.now() - 372 * 24 * 60 * 60 * 1000)); break;
    case "3Y": from = formatDate(new Date(Date.now() - 1116 * 24 * 60 * 60 * 1000)); break;
    case "5Y": from = formatDate(new Date(Date.now() - 1860 * 24 * 60 * 60 * 1000)); break;
    default:from = formatDate(new Date(Date.now() - 372 * 24 * 60 * 60 * 1000));

    }
    return {from:from, to:to}
    }
    // what happens on button click
    function syncToInterval(interval) {
    if (areaSeries && seriesesData.get(interval).length <=0) {
    console.log("GETTING REMOTE DATA")

    chart.removeSeries(areaSeries);
    areaSeries = null;
    let apiToken = "za1j116n2273ab1vxukuh6"
    let timeframe = getTimeframe(interval)
    let filter = "adjusted_close"
    handleAsyncUI(true)
    httpGetAsync("https://api.leeway.tech/api/v1/public/historicalquotes/"+encodeURIComponent(code+"."+exchange)+"?apitoken="+apiToken+"&filter="+filter+"&from="+timeframe.from+"&to="+timeframe.to, function (res) {
    let newData = []
    newData = JSON.parse(res)//.map(el=>newData.push({time:el.date, value:el.close}))
    // newData = newData.map(el=>{
    // console.log(el.time.year)
    // console.log(el.time.month)
    // console.log(el.time.day)
    // console.log(el)
    // console.log(new Date(el.time.year, el.time.month-1, el.time.day));
    // return{value:el.value, time:el.time, timestamp:new Date(el.time.year, el.time.month-1, el.time.day).getTime()}})
    console.log("newData")
    console.log(newData)
    seriesesData.set(interval, newData)
    areaSeries = chart.addAreaSeries({
    topColor: "rgba(33, 108, 173, 0.56)",
    bottomColor: "rgba(33, 108, 173, 0.04)",
    lineColor: "rgba(33, 108, 173, 1)",
    lineWidth: 2,
    });
    kursData = seriesesData.get(interval)[seriesesData.get(interval).length-1].value
    areaSeries.setData(seriesesData.get(interval));
    chart.timeScale().fitContent();
    handleAsyncUI(false)
    })
    }else{
    console.log("GETTING LOADED DATA")
    if(areaSeries){
    console.log("DELETING LOADED DATA FROM CHART")
    chart.removeSeries(areaSeries);
    areaSeries = null;
    }
    kursData = seriesesData.get(interval)[seriesesData.get(interval).length-1].value
    areaSeries = chart.addAreaSeries({
    topColor: "rgba(33, 108, 173, 0.56)",
    bottomColor: "rgba(33, 108, 173, 0.04)",
    lineColor: "rgba(33, 108, 173, 1)",
    lineWidth: 2,
    });
    areaSeries.setData(seriesesData.get(interval));

    chart.timeScale().fitContent();
    }


    }
    // data interval at startup
    syncToInterval(intervals[3]);
    // Name and Kurs as Text in legend



    var watermark = document.createElement("img")
    watermark.classList.add("watermark")
    watermark.setAttribute("src", "https://api.leeway.tech/leeway-sign.png")
    var testA = document.querySelector(`[data-chartid="${chartid}"]`)
    var testB = document.querySelector(`[data-chartid="${chartid}"]`).getBoundingClientRect();
    var test = testA.getElementsByTagName("canvas")[0].getBoundingClientRect();
    watermark.style.position = "absolute";
    watermark.style.width = "90px";
    watermark.style.height = "30px";
    watermark.style.display = "block";
    //watermark.style.z-index = "1000000";
    watermark.style.bottom = "0";
    watermark.style.right = "10px";


    let linkLW = document.createElement("a")
    linkLW.href="https://www.ftd.de/leeway-tech";
    linkLW.target = "_blank";
    linkLW.appendChild(watermark)
    // append to DOM

    //div-chartwrapper -> div -> div -> table -> tr -> td td -> div
    const myElementA = document.querySelector(`[data-chartid="${chartid}"]`);
    let myElementB = myElementA.childNodes[0]
    let myElementC = myElementB.childNodes[0]
    let myElementD = myElementC.childNodes[0]
    let myElementE = myElementD.childNodes[0]
    let myElementF = myElementE.childNodes[1]
    let myElementG = myElementF.childNodes[0]
    myElementG.appendChild(linkLW);




    if(hidelegend == "false"){
    console.log("SHOW LEGEND!")
    var legend = document.createElement("div");
    legend.classList.add("legend");
    var offsets = document.querySelector(`[data-chartid="${chartid}"]`).getBoundingClientRect();
    var chartwrapperTop = offsets.top;

    var legendHeight = height *-1
    if(legendHeight>-210){legendHeight = -210;}
    legend.style.top = legendHeight*1.2 + "px"
    positionDIV.appendChild(legend);

    if(hidetitle == "false"){
    var firstRow = document.createElement("div");
    firstRow.classList.add("titleText");

    }

    var secondRow = document.createElement("div");
    secondRow.classList.add("secondRow");

    if(kursData !== null){
    if(hidetitle == "false"){
    firstRow.innerText = companyName
    legend.appendChild(firstRow);
    }

    secondRow.innerText = kursDate +": " + Number(kursData).toFixed(2) + " "+currency;
    legend.appendChild(secondRow);
    }else{
    if(hidetitle == "false"){
    firstRow.innerText = companyName
    legend.appendChild(firstRow);
    }

    legend.appendChild(secondRow);
    }


    // cursor moving and handling third row of legend
    chart.subscribeCrosshairMove((param) => {
    if (param.time) {
    let options = { weekday: "short", year: "numeric", month: "numeric", day: "numeric" };
    let currentDate = new Date(param.time).toLocaleDateString("de-DE", options)
    const price = param.seriesData.get(areaSeries).value;
    secondRow.innerText = currentDate + ": " + price.toFixed(2) + " "+(currency?currency:" ");
    }
    else {
    secondRow.innerText = kursDate +": " + Number(kursData).toFixed(2) + " "+currency;

    }
    });

    }

    }
    function httpGetAsync(theUrl, callback) {
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.onreadystatechange = function () {
    if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
    callback(xmlHttp.responseText);
    }
    xmlHttp.open("GET", theUrl, true); // true for asynchronous
    xmlHttp.send(null);
    };
    function getTimeframe(interval){
    let from = null;
    let to = formatDate(new Date());
    switch (interval) {
    case "1M": from = formatDate(new Date(Date.now() - 31 * 24 * 60 * 60 * 1000)); break;
    case "3M": from = formatDate(new Date(Date.now() - 93 * 24 * 60 * 60 * 1000)); break;
    case "6M": from = formatDate(new Date(Date.now() - 186 * 24 * 60 * 60 * 1000)); break;
    case "1Y": from = formatDate(new Date(Date.now() - 372 * 24 * 60 * 60 * 1000)); break;
    case "3Y": from = formatDate(new Date(Date.now() - 1116 * 24 * 60 * 60 * 1000)); break;
    case "5Y": from = formatDate(new Date(Date.now() - 1860 * 24 * 60 * 60 * 1000)); break;
    default:from = formatDate(new Date(Date.now() - 372 * 24 * 60 * 60 * 1000));

    }
    return {from:from, to:to}
    };
    function formatDate(date) {

    var month = "" + (date.getMonth()+1);
    var day = "" + date.getDate();
    var year = date.getFullYear();

    if (month.length < 2)
    month = "0" + month;
    if (day.length < 2)
    day = "0" + day;

    return [year, month, day].join("-");
    };
    </script>
    <script id="main">

    var scriptTV = document.querySelector("#tvChartLoader");
    scriptTV.addEventListener("load", function() {
    var chartid = "66211bb60a37a";

    var companyName = "Bitcoin US-Dollar";
    if(companyName.length <=0){
    companyName = "BTC-USD - CC";
    }
    var code = "BTC-USD";
    var exchange = "CC";
    var currency ="USD";
    var kursData = null;
    var kursDataDate = null;
    var chartHeight = "";
    var chartWidth = "250"
    var hidetitle = "false"
    var hidelegend = "false"
    let apiToken = "za1j116n2273ab1vxukuh6"
    chartWidth = document.querySelector(`[data-chartid="${chartid}"]`).offsetWidth
    var chartData = [];
    var timeframe = getTimeframe("1Y");
    var filter = "adjusted_close";

    httpGetAsync("https://api.leeway.tech/api/v1/public/historicalquotes/"+encodeURIComponent(code+"."+exchange)+"?apitoken="+apiToken+"&filter="+filter+"&from="+timeframe.from+"&to="+timeframe.to, function (res) {
    let newData = null;
    chartData = newData = JSON.parse(res)
    // 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()}})
    kursData = chartData[chartData.length-1].value
    let options = { weekday: "short", year: "numeric", month: "numeric", day: "numeric" };
    kursDataDate = chartData[chartData.length-1].time
    let kursDate = new Date(kursDataDate.split("-")[0], Number(kursDataDate.split("-")[1])-1, kursDataDate.split("-")[2]).toLocaleDateString("de-DE", options)

    renderTV(kursData,chartData,companyName,currency, Number(chartHeight), Number(chartWidth), code, exchange, kursDate, hidetitle, hidelegend, chartid)
    });
    });
    </script>

    Vor und nach dem Halving ist eher mit Volatilität zu rechnen. Trading-Legende Peter Brandt beispielsweise sieht den BTC-Kurs in einer neuen Prognose kurzfristig auf bis zu 80.000 Dollar steigen. Im Anschluss stellt der dienstälteste Trader der Branche (aktiv seit 1974) allerdings eine Korrektur auf bis zu 58.000 Dollar in Aussicht.

    Nichtdestotrotz: Die mögliche Spanne an kurzfristigen Auf- und Abwärtsbewegungen ist für Bitcoin-Verhältnisse wenig aufregend. Auch Krypto-Guru „PlanB“, der wohl populärste Bitcoin-Analyst, betont: „Es hat noch gar nicht angefangen.“ Seiner Einschätzung nach bewegt sich Bitcoin im laufenden Zyklus auf Preise jenseits von 500.000 Dollar zu, dem Kurs steht also ein Anstieg um mehr als 600 Prozent bevor. Das zeigt: Bitcoin kaufen könnte sich nach wie vor lohnen. Dafür spricht auch eine Bitcoin-Prognose von Fidelity Investments (4,9 Billionen US-Dollar AUM, Stand 2023), einem der bekanntesten Vermögensverwalter der Branche. Dessen Preisziel: 1 Milliarde Dollar pro BTC!

    Bullishe Prognose: Bitcoin auf 1 Milliarde Dollar

    Das entspricht in Relation zum aktuellen Kurs einer Erhöhung um 1.414.327 Prozent – fast anderthalb Millionen Prozent. Verrückte Zahlen, doch Fidelity ist überzeugt: Institutionelle Adaption und Bitcoin-ETFs werden die Nachfrage in den nächsten Jahren immer weiter anheizen. Das Finanzunternehmen betont Bitcoins Bedeutung als Wertspeicher und Inflationsschutz, hält vor diesem Zusammenhang bis 2038 einen Bitcoin-Kurs in 10-stelliger Höhe für möglich. Gewagt, aber immerhin: Das Signal dringt durch das Meme-Coin-Rauschen, das die Krypto-Märkte seit Wochen dominiert.

    Angesichts der makroökonomischen Unsicherheit auf der Welt sehnen sich viele Anleger offenbar nach einem finanziellen „Opt-out“ und setzen dabei auf Glücksspiel: Nicht nur die hochspekulativen Scherz-Währungen sind enorm gefragt, auch die Verkaufszahlen von Lotterie-Losen befinden sich gegenwärtig auf einem Allzeithoch. Online-Casinos und Sportwetten boomen ebenfalls.

    Meme-Coin-Top-Performer der letzten 24 Stunden: „Ponke“ (PONKE) mit einem Anstieg von 82,72 Prozent. Darüber hinaus pausieren die Krypto-Märkte im Moment: So notiert Bitcoin nach einem Rückgang um 0,41 Prozent seit gestern bei 70.600 Dollar, die globale Krypto-Marktkapitalisierung hingegen gibt 0,56 Prozent verloren, liegt bei 2,62 Billionen Dollar. Kritischer Widerstand auf Bitcoins Weg nach oben: 71.500 Dollar – diesen Bereich gilt es jetzt für nachhaltige Aufwärtsbewegungen zu knacken.

     

    Disclaimer:
    Der Autor und/oder verbundene Personen oder Unternehmen besitzt Kryptocoins, unter anderem auch Bitcoins. Dieser Beitrag stellt eine Meinungsäußerung und keine Anlageberatung dar.

    Der Beitrag Bitcoin: Rekord-Prognose – 1 Milliarde Dollar! Das Update vor dem Halving erschien zuerst auf ftd.de.

  • JP Morgan Quartalszahlen: Aktienlauf 2024 – höhere Zinserträge? Übersicht und Prognose

    12. April, von Klemens Vogel
    JPMorgan-Dependance mit Logo (Foto: JP Morgan) - JP Morgan Quartalszahlen: Aktienlauf 2024 – höhere Zinserträge? Übersicht und Prognose

    JPMorgan-Dependance mit Logo (Foto: JPMorgan)

    New York – Die Bank gewinnt immer – dieser Satz passt zum größten US-Institut, das unter CEO Jamie Dimon zuverlässig gute Ergebnisse abliefert. 2023 kletterte der Umsatz dank des Zinsanstiegs auf ein Rekordhoch. Heute (13 Uhr MESZ) legt das Kreditinstitut die Zahlen für das 1. Quartal vor.

    Die Kurse der US-Großbanken haben 2024 stärker als der S&P-500-Index zugelegt, JPMorgan Chase verzeichnet ein Plus von über 15 Prozent. Das wirtschaftliche Umfeld für US-Kreditinstitute ist vielschichtig. Einerseits ist die US-Konjunktur robust, andererseits sind Inflation und Zinsen hoch.

    Im Fokus der Beobachter steht der Nettozinsertrag (NII) – die Differenz zwischen erhaltenen und gezahlten Zinsen. Bleibt er weiter hoch, weil sich die erste Leitzinssenkung der Fed verzögert? Mit einem Gewinnanstieg rechnet etwa Kenneth Leon, Forschungsdirektor bei CFRA Research.

    Risiken im Immobiliensektor – neues Geschäftsfeld Marketing

    Störungen kommen vom Immobilienmarkt. Zum einen stehen Kredite für Büroimmobilien unter Druck, da viele Arbeitnehmer weiter im Homeoffice arbeiten – speziell US-Regionalbanken droht Stress. Aber auch bei Wohnhäusern gibt es Risiken, JPMorgan musste kürzlich Kredite überprüfen.

    Ein völlig neues Geschäftsfeld hat JPMorgan vergangene Woche gestartet: Die neue Plattform Chase Media Solutions soll die Vorzüge einer B2C-Plattform mit den Bank-Transaktionsdaten verknüpfen. Durch gezieltes Marketing auf Chase-Kanälen sollen Anbieter und Konsumenten zusammenkommen.

    CEO Dimon warnt in Aktionärsbrief – Nachfolgefrage nimmt Fahrt auf

    Große Beachtung fand diese Woche Jamie Dimons jährlicher Aktionärsbrief: Dort warnt er vor einem Leitzins-Anstieg auf 8 Prozent und mehr, ruft die US-Wähler auf, ihre Differenzen zu überwinden, um Amerikas Führungsrolle zu bewahren, und hebt die Bedeutung von Vielfalt und Integration hervor.

    Auch geopolitische Risiken wie Russlands Krieg in der Ukraine und der Nahost-Konflikt beschäftigen den JPMorgan-CEO. Er bemängelt die hohe Schuldenlast im US-Haushalt und weist darauf hin, dass die Notwendigkeit zum Ausbau des Militärs und die klimaneutrale Transformation die Inflation treiben.

    Unterdessen nimmt die Diskussion über Dimons Nachfolge Fahrt auf, der seit 18 Jahren an der Spitze der Großbank steht. Anfang des Jahres hat JPMorgan seine Führungsriege neu aufgestellt. Beobachter werten das als Vorbereitung des Wechsels an der Spitze, der wohl 2026 ansteht.

     

    <script id="tvChartLoader" async src="https://unpkg.com/lightweight-charts/dist/lightweight-charts.standalone.production.js"></script> <script id="declarations">
    var chartid = "66211bb60baaf";
    function renderTV(kursData, chartData,companyName,currency, chartHeight, chartWidth, code, exchange, kursDate, hidetitle, hidelegend, chartid) {
    console.log("render chart with id", document.querySelector(`[data-chartid="${chartid}"]`));
    let width = chartWidth?chartWidth:600;
    let ratio = 2
    let height = chartHeight?chartHeight:(width/ratio);
    document.querySelector(`[data-chartid="${chartid}"]`).style.height = chartHeight +50
    document.querySelector(`[data-chartid="${chartid}"]`).style.width = chartWidth

    // formatter for x achis dates
    function customXAchsisFormetter(timePoint, tickMarkType, locale) {
    let formatOptions = {};
    const date = new Date(timePoint);

    if(tickMarkType <=1){
    formatOptions = {day: "numeric", month: "short",year: "numeric",}

    }else{
    formatOptions = {day: "numeric", month: "short",year: "numeric",}
    }
    // from given date we should use only as UTC date or timestamp
    // but to format as locale date we can convert UTC date to local date
    const localDateFromUtc = new Date(
    date.getUTCFullYear(),
    date.getUTCMonth(),
    date.getUTCDate()
    );

    return localDateFromUtc.toLocaleString(locale, formatOptions);
    }

    //create buttons
    function createSimpleSwitcher(items, activeItem, activeItemChangedCallback) {
    var switcherElement = document.createElement("div");
    switcherElement.classList.add("switcher");

    var intervalElements = items.map(function (item) {
    var itemEl = document.createElement("button");
    itemEl.innerText = item;
    itemEl.classList.add("switcher-item");
    itemEl.classList.toggle("switcher-active-item", item === activeItem);
    itemEl.addEventListener("click", function () {
    onItemClicked(item);
    });
    switcherElement.appendChild(itemEl);
    return itemEl;
    });

    function onItemClicked(item) {
    if (item === activeItem) {
    return;
    }

    intervalElements.forEach(function (element, index) {
    element.classList.toggle("switcher-active-item", items[index] === item);
    });

    activeItem = item;

    activeItemChangedCallback(item);
    }

    return switcherElement;
    }
    // loading: true or false
    function handleAsyncUI(loading){
    var IntervalButtons = document.getElementsByClassName("switcher-item");
    for(var i = 0; i < IntervalButtons.length; i++){
    IntervalButtons[i].disabled = loading;
    }
    var chart = document.getElementsByClassName("tv-lightweight-charts")[0];
    if(loading){

    chart.style["display"] = "flex"
    chart.style["align-items"] = "center"
    chart.style["justify-content"] = "center"

    var loadingIndicator = document.createElement("div");
    loadingIndicator.classList.add("loader");
    //loadingIndicator.innerText = "Loading";
    loadingIndicator.id ="loadingIndicator"
    chart.appendChild(loadingIndicator);
    }else{
    document.getElementById("loadingIndicator").remove();
    chart.style["display"] = null
    chart.style["align-items"] =null
    chart.style["justify-content"] = null
    }

    }
    var intervals = ["1M","3M","6M","1Y","3Y","5Y"];
    var seriesesData = new Map([
    ["1M", []], // 1m (interval daten?), 3m, 6m, 1y, 3y, 5y
    ["3M", []],
    ["6M", []],
    ["1Y", chartData],
    ["3Y", []],
    ["5Y", []],
    ]);
    var switcherElement = createSimpleSwitcher(intervals, intervals[3], syncToInterval);
    var chartElement = document.createElement("div");
    const chart = LightweightCharts.createChart(chartElement, {
    width: width,
    height: height,
    rightPriceScale: {
    scaleMargins: {
    top: 0.2,
    bottom: 0.2,
    },
    borderVisible: false,
    },
    timeScale: {
    borderVisible: false,
    lockVisibleTimeRangeOnResize: true,

    rightOffset:1,
    tickMarkFormatter:customXAchsisFormetter

    },
    grid: {
    horzLines: {
    color: "#eee",
    visible: false,
    },
    vertLines: {
    color: "#ffffff",
    },
    },
    crosshair: {
    horzLine: {
    visible: false,
    labelVisible: false
    },
    vertLine: {
    visible: true,
    style: 0,
    width: 2,
    color: "rgba(80, 50, 25, 0.1)",
    labelVisible: false,
    }
    },
    handleScroll: {
    mouseWheel: false,
    pressedMouseMove: false,
    horzTouchDrag: false,
    vertTouchDrag: false
    },
    handleScale: {
    axisPressedMouseMove: false,
    mouseWheel: false,
    pinch: false,
    },
    });
    var areaSeries = null;
    var positionDIV = document.querySelector(`[data-chartid="${chartid}"]`)
    positionDIV.appendChild(chartElement);
    positionDIV.appendChild(switcherElement);
    function httpGetAsync(theUrl, callback) {
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.onreadystatechange = function () {
    if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
    callback(xmlHttp.responseText);
    }
    xmlHttp.open("GET", theUrl, true); // true for asynchronous
    xmlHttp.send(null);
    }
    function formatDate(date) {

    var month = "" + (date.getMonth()+1);
    var day = "" + date.getDate();
    var year = date.getFullYear();

    if (month.length < 2)
    month = "0" + month;
    if (day.length < 2)
    day = "0" + day;
    return [year, month, day].join("-");
    }
    function getTimeframe(interval){
    let from = null;
    let to = formatDate(new Date());
    switch (interval) {
    case "1M": from = formatDate(new Date(Date.now() - 31 * 24 * 60 * 60 * 1000)); break;
    case "3M": from = formatDate(new Date(Date.now() - 93 * 24 * 60 * 60 * 1000)); break;
    case "6M": from = formatDate(new Date(Date.now() - 186 * 24 * 60 * 60 * 1000)); break;
    case "1Y": from = formatDate(new Date(Date.now() - 372 * 24 * 60 * 60 * 1000)); break;
    case "3Y": from = formatDate(new Date(Date.now() - 1116 * 24 * 60 * 60 * 1000)); break;
    case "5Y": from = formatDate(new Date(Date.now() - 1860 * 24 * 60 * 60 * 1000)); break;
    default:from = formatDate(new Date(Date.now() - 372 * 24 * 60 * 60 * 1000));

    }
    return {from:from, to:to}
    }
    // what happens on button click
    function syncToInterval(interval) {
    if (areaSeries && seriesesData.get(interval).length <=0) {
    console.log("GETTING REMOTE DATA")

    chart.removeSeries(areaSeries);
    areaSeries = null;
    let apiToken = "za1j116n2273ab1vxukuh6"
    let timeframe = getTimeframe(interval)
    let filter = "adjusted_close"
    handleAsyncUI(true)
    httpGetAsync("https://api.leeway.tech/api/v1/public/historicalquotes/"+encodeURIComponent(code+"."+exchange)+"?apitoken="+apiToken+"&filter="+filter+"&from="+timeframe.from+"&to="+timeframe.to, function (res) {
    let newData = []
    newData = JSON.parse(res)//.map(el=>newData.push({time:el.date, value:el.close}))
    // newData = newData.map(el=>{
    // console.log(el.time.year)
    // console.log(el.time.month)
    // console.log(el.time.day)
    // console.log(el)
    // console.log(new Date(el.time.year, el.time.month-1, el.time.day));
    // return{value:el.value, time:el.time, timestamp:new Date(el.time.year, el.time.month-1, el.time.day).getTime()}})
    console.log("newData")
    console.log(newData)
    seriesesData.set(interval, newData)
    areaSeries = chart.addAreaSeries({
    topColor: "rgba(33, 108, 173, 0.56)",
    bottomColor: "rgba(33, 108, 173, 0.04)",
    lineColor: "rgba(33, 108, 173, 1)",
    lineWidth: 2,
    });
    kursData = seriesesData.get(interval)[seriesesData.get(interval).length-1].value
    areaSeries.setData(seriesesData.get(interval));
    chart.timeScale().fitContent();
    handleAsyncUI(false)
    })
    }else{
    console.log("GETTING LOADED DATA")
    if(areaSeries){
    console.log("DELETING LOADED DATA FROM CHART")
    chart.removeSeries(areaSeries);
    areaSeries = null;
    }
    kursData = seriesesData.get(interval)[seriesesData.get(interval).length-1].value
    areaSeries = chart.addAreaSeries({
    topColor: "rgba(33, 108, 173, 0.56)",
    bottomColor: "rgba(33, 108, 173, 0.04)",
    lineColor: "rgba(33, 108, 173, 1)",
    lineWidth: 2,
    });
    areaSeries.setData(seriesesData.get(interval));

    chart.timeScale().fitContent();
    }


    }
    // data interval at startup
    syncToInterval(intervals[3]);
    // Name and Kurs as Text in legend



    var watermark = document.createElement("img")
    watermark.classList.add("watermark")
    watermark.setAttribute("src", "https://api.leeway.tech/leeway-sign.png")
    var testA = document.querySelector(`[data-chartid="${chartid}"]`)
    var testB = document.querySelector(`[data-chartid="${chartid}"]`).getBoundingClientRect();
    var test = testA.getElementsByTagName("canvas")[0].getBoundingClientRect();
    watermark.style.position = "absolute";
    watermark.style.width = "90px";
    watermark.style.height = "30px";
    watermark.style.display = "block";
    //watermark.style.z-index = "1000000";
    watermark.style.bottom = "0";
    watermark.style.right = "10px";


    let linkLW = document.createElement("a")
    linkLW.href="https://www.ftd.de/leeway-tech";
    linkLW.target = "_blank";
    linkLW.appendChild(watermark)
    // append to DOM

    //div-chartwrapper -> div -> div -> table -> tr -> td td -> div
    const myElementA = document.querySelector(`[data-chartid="${chartid}"]`);
    let myElementB = myElementA.childNodes[0]
    let myElementC = myElementB.childNodes[0]
    let myElementD = myElementC.childNodes[0]
    let myElementE = myElementD.childNodes[0]
    let myElementF = myElementE.childNodes[1]
    let myElementG = myElementF.childNodes[0]
    myElementG.appendChild(linkLW);




    if(hidelegend == "false"){
    console.log("SHOW LEGEND!")
    var legend = document.createElement("div");
    legend.classList.add("legend");
    var offsets = document.querySelector(`[data-chartid="${chartid}"]`).getBoundingClientRect();
    var chartwrapperTop = offsets.top;

    var legendHeight = height *-1
    if(legendHeight>-210){legendHeight = -210;}
    legend.style.top = legendHeight*1.2 + "px"
    positionDIV.appendChild(legend);

    if(hidetitle == "false"){
    var firstRow = document.createElement("div");
    firstRow.classList.add("titleText");

    }

    var secondRow = document.createElement("div");
    secondRow.classList.add("secondRow");

    if(kursData !== null){
    if(hidetitle == "false"){
    firstRow.innerText = companyName
    legend.appendChild(firstRow);
    }

    secondRow.innerText = kursDate +": " + Number(kursData).toFixed(2) + " "+currency;
    legend.appendChild(secondRow);
    }else{
    if(hidetitle == "false"){
    firstRow.innerText = companyName
    legend.appendChild(firstRow);
    }

    legend.appendChild(secondRow);
    }


    // cursor moving and handling third row of legend
    chart.subscribeCrosshairMove((param) => {
    if (param.time) {
    let options = { weekday: "short", year: "numeric", month: "numeric", day: "numeric" };
    let currentDate = new Date(param.time).toLocaleDateString("de-DE", options)
    const price = param.seriesData.get(areaSeries).value;
    secondRow.innerText = currentDate + ": " + price.toFixed(2) + " "+(currency?currency:" ");
    }
    else {
    secondRow.innerText = kursDate +": " + Number(kursData).toFixed(2) + " "+currency;

    }
    });

    }

    }
    function httpGetAsync(theUrl, callback) {
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.onreadystatechange = function () {
    if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
    callback(xmlHttp.responseText);
    }
    xmlHttp.open("GET", theUrl, true); // true for asynchronous
    xmlHttp.send(null);
    };
    function getTimeframe(interval){
    let from = null;
    let to = formatDate(new Date());
    switch (interval) {
    case "1M": from = formatDate(new Date(Date.now() - 31 * 24 * 60 * 60 * 1000)); break;
    case "3M": from = formatDate(new Date(Date.now() - 93 * 24 * 60 * 60 * 1000)); break;
    case "6M": from = formatDate(new Date(Date.now() - 186 * 24 * 60 * 60 * 1000)); break;
    case "1Y": from = formatDate(new Date(Date.now() - 372 * 24 * 60 * 60 * 1000)); break;
    case "3Y": from = formatDate(new Date(Date.now() - 1116 * 24 * 60 * 60 * 1000)); break;
    case "5Y": from = formatDate(new Date(Date.now() - 1860 * 24 * 60 * 60 * 1000)); break;
    default:from = formatDate(new Date(Date.now() - 372 * 24 * 60 * 60 * 1000));

    }
    return {from:from, to:to}
    };
    function formatDate(date) {

    var month = "" + (date.getMonth()+1);
    var day = "" + date.getDate();
    var year = date.getFullYear();

    if (month.length < 2)
    month = "0" + month;
    if (day.length < 2)
    day = "0" + day;

    return [year, month, day].join("-");
    };
    </script>
    <script id="main">

    var scriptTV = document.querySelector("#tvChartLoader");
    scriptTV.addEventListener("load", function() {
    var chartid = "66211bb60baaf";

    var companyName = "JP Morgan Chase";
    if(companyName.length <=0){
    companyName = "JPM - NYSE";
    }
    var code = "JPM";
    var exchange = "NYSE";
    var currency ="USD";
    var kursData = null;
    var kursDataDate = null;
    var chartHeight = "";
    var chartWidth = "250"
    var hidetitle = "false"
    var hidelegend = "false"
    let apiToken = "za1j116n2273ab1vxukuh6"
    chartWidth = document.querySelector(`[data-chartid="${chartid}"]`).offsetWidth
    var chartData = [];
    var timeframe = getTimeframe("1Y");
    var filter = "adjusted_close";

    httpGetAsync("https://api.leeway.tech/api/v1/public/historicalquotes/"+encodeURIComponent(code+"."+exchange)+"?apitoken="+apiToken+"&filter="+filter+"&from="+timeframe.from+"&to="+timeframe.to, function (res) {
    let newData = null;
    chartData = newData = JSON.parse(res)
    // 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()}})
    kursData = chartData[chartData.length-1].value
    let options = { weekday: "short", year: "numeric", month: "numeric", day: "numeric" };
    kursDataDate = chartData[chartData.length-1].time
    let kursDate = new Date(kursDataDate.split("-")[0], Number(kursDataDate.split("-")[1])-1, kursDataDate.split("-")[2]).toLocaleDateString("de-DE", options)

    renderTV(kursData,chartData,companyName,currency, Number(chartHeight), Number(chartWidth), code, exchange, kursDate, hidetitle, hidelegend, chartid)
    });
    });
    </script>

    Prognosen für Umsatz und Gewinn

    Der JPMorgan-Gewinn pro Aktie wird nach der mittleren Schätzung von 21 Analysten auf finanzen.net im 1. Quartal 2024 bei rund 4,17 US-Dollar liegen. Das ist ein Anstieg gegenüber rund 3,04 US-Dollar im Vergleich zum 4. Quartal 2023. Rund 4,10 US-Dollar meldete JPMorgan im Vorjahresquartal.

    Einen Zuwachs verheißen auch die Umsatzprognosen – rund 41,69 Milliarden US-Dollar schätzen 17 Analysten im Mittel für das 1. Quartal. Das ist mehr als im Vorjahresquartal (rund 38,35 Milliarden US-Dollar) und als im 4. Quartal 2023 (rund 38,57 Milliarden). Das Geschäftsjahr endet am 31. Dezember.

     

    Disclaimer:
    Alle Angaben ohne Gewähr auf Vollständigkeit, Richtigkeit und Aktualität. Der Text stellt keine Handelsempfehlung oder Anlageberatung dar.

    Der Beitrag JP Morgan Quartalszahlen: Aktienlauf 2024 – höhere Zinserträge? Übersicht und Prognose erschien zuerst auf ftd.de.

  • Cybercrime-Studie: 6 Länder sind Hotspots der kriminellen Hacker

    11. April, von ftd_admin

    Gesichtsloser Hacker mit Kapuze - Cybercrime Symbolbild (Foto: Freepik, perezfotografi) - Studie: 6 Länder sind Hotspots der kriminellen Hacker

    Oxford – Laut dem neuen World Cybercrime Index unter der Leitung von Miranda Bruce von der University of Oxford konzentrieren sich die meisten Bedrohungen durch Cyber-Kriminalität auf China, Russland, die Ukraine, die USA, Rumänien und Nigeria. Sie gehören zu den Top 10 in jeder der 5 Kategorien. Dabei verursachen die Attacken weltweit jedes Jahr hunderte Millionen bis hin zu Milliarden an Kosten. Jene Orte zu finden, von denen diese Kriminellen aus operieren, ist jedoch eine Herausforderung. Sie sind, so die Experten, sehr geschickt darin, ihren Standort zu verbergen.

    Jedes Land hat eine „Spezialität“

    Die Forscher haben führende Experten zur geografischen Verteilung der Bedrohungen durch Cyber-Verbrechen befragt. 92 Fachleute aus der ganzen Welt beantworteten den Fragebogen der Forscher. Sie benannten dabei auch die Länder, die ihrer Einschätzung nach die größten Knotenpunkte bei 5 verschiedenen Kategorien sind. Dabei handelt es sich um technische Produkte oder Services, Angriffe und Erpressung, Daten- oder Identitätsdiebstahl, Gaunereien und Abgänge oder Geldwäsche.

    Auf Grundlage der Ergebnisse der Umfrage können die Wissenschaftler die einzelnen Ländern miteinander vergleichen. Sie gehen davon aus, dass sich die Bedrohung auf eine kleine Anzahl an Ländern konzentriert. 97 Länder wurden zumindest von einem Experten als Knotenpunkt für eine bestimmte Kategorie genannt. Unterschiedliche Länder wurden jedoch häufiger mit bestimmten Kategorien assoziiert. Die aktuellen Forschungsergebnisse sind in „PLOS ONE“ veröffentlicht worden.

    Präventive Maßnahmen wichtig

    Cybercrime-Fälle im Bereich technischer Produkte und Services stehen mit China an erster Stelle. Bei Daten- oder Identitätsdiebstahl sind in den USA führend. Bei Angriffen und Erpressung hingegen steht der Iran ganz oben. Der World Cybercrime Index könnte die Forschung in diesem Bereich unterstützen und auch präventive Anstrengungen in Hinblick auf bestimmte Knotenpunkte erleichtern. Die Forscher räumen allerdings ein, dass eine größere Anzahl von teilnehmenden Experten durchaus ein Vorteil sein könnte.

     

    Quelle: www.pressetext.com
    (pte027/11.04.2024/13:30)

    Der Beitrag Cybercrime-Studie: 6 Länder sind Hotspots der kriminellen Hacker erschien zuerst auf ftd.de.

  • Starbucks Aktie: Viel mehr als Kaffee – Marke mit Rendite-Potenzial

    11. April, von ftd_admin
    Kaffeebecher in New York (Foto: Freepik)

    Kaffeebecher in New York (Foto: Freepik)

    Wenn Sie an eine Kaffeehauskette denken, kommt Ihnen bestimmt Starbucks in den Sinn. Zumindest werden Sie von Starbucks bereits gehört haben. Starbucks ist eine der bekanntesten Marken auf Erden. Aus einem kleinen Kaffee- und Gewürzgeschäft in Seattle wurde die größte Kaffeehauskette der Welt mit rund 38.600 Filialen weltweit.

    Für Langfristanleger war Starbucks eine Goldgrube. Doch in den letzten 5 Jahren wäre das Geld in einem Welt-ETF besser angelegt gewesen. Die Aktie von Starbucks lieferte in den letzten 5 Jahren einen Gesamtgewinn (inklusive Dividende) von 28 Prozent, während der iShares MSCI World ETF ein Plus von 78 Prozent vorzuweisen hat.

    Das große Wachstum liegt hinter Starbucks

    Starbucks ist heute ein global agierendes Unternehmen. Das Umsatzwachstum lag in den letzten 10 Jahren bei durchschnittlich 9,2 Prozent. Das Free-Cashflow-Wachstum betrug im selben Zeitraum bei 7,6 Prozent. Dieses Wachstum in die Zukunft zu projizieren ist sehr optimistisch. Dennoch ist Starbucks kein Auslaufmodell. Der Kaffeehaus-Gigant war trotz des herausfordernden Marktumfelds auch im 4. Quartal 2023 in der Lage, die Umsätze auf Same-Store-Sales-Basis um 5 Prozent zu erhöhen (3 Prozent absatzbezogen und 2 Prozent preisbezogen).

    Kapitalintensives Wachstum vs. Innovation

    Starbucks ist sich seiner Reife bewusst und versucht durch Produktinnovation stets weiteres Wachstum zu schaffen, denn die reine Expansion über neue Filialen bringt viele Risiken mit sich. Der Cashflow wird durch stets steigende Investitionskosten (CAPEX) in das Filialnetz gedrückt, da Starbucks auf eigene Filialen setzt und nur wenige Franchise-Filialen hat. Hinzu kommt die Gefahr, dass Löhne noch länger stark steigen und Gewerkschaftsstreiks die Gewinne und die Effizienz von Starbucks belasten.

    Der größte Wachstumsmarkt von Starbucks ist China. Die zunehmenden geopolitischen Spannungen bergen ein weiteres Risiko, wenn Wachstum verstärkt durch Expansion am chinesischen Markt erfolgt. Aktuell macht China jedoch nur rund 9 Prozent des Umsatzes aus. Rund 74 Prozent werden am US-Heimatmarkt erzielt. An nahezu jeder Ecke findet man in den Städten einen Starbucks.

    Mit neuen Produkten versuchte Starbucks in den vergangenen Jahren neue Zielgruppen zu erschließen. Dazu zählen, neben den zahlreichen Kaffeeprodukten in heißer und kalter Form, auch Energy-Drinks in Dosen oder pflanzenbasierte Milchprodukte. Über Lizenz-Modelle mit Nestlé werden auch trinkfertige Getränke wie Frappuccino und Starbucks Doubleshot im Einzelhandel vertrieben.

    Omni-Channel ist ein wesentlicher Baustein

    Starbucks ist zwar eine starke Marke, doch Vertriebskanäle müssen an Trends und Zielgruppen angepasst werden. Omni-Channel Ansätze werden von den jüngeren Kunden sehr geschätzt. Starbucks ist mit seiner Starbucks Rewards-App ein Vorreiter. App-Nutzer können Geschäfte in ihrer Nähe finden, sie müssen nicht mehr in der Schlange warten und sie können im Voraus bestellen und bezahlen. Die App gibt personalisierte Empfehlungen, die beispielsweise auf dem lokalen Ladenbestand, dem Wetter und früheren Bestellungen basieren. Und Kunden können ganz einfach Geld auf ihr Starbucks-Konto einzahlen und im Laufe der Zeit auf Treuerabatte zugreifen, etwa kostenlose Getränke und Snacks.

    Automatisierung für mehr Profitabilität

    Die Automatisierung kann alle Aspekte eines Café-Geschäfts betreffen, was eine Kette von Aufgaben beinhaltet. Im Café-Bereich hat Starbucks hochautomatische Kaffeemaschinen eingeführt, die den Arbeitsablauf von Mitarbeitern rationalisieren und die Zubereitung von mehr Getränken in kürzerer Zeit ermöglichen. Dadurch können beispielsweise der Mahlgrad angepasst und mehrere Getränkerezepte, über die die Mitarbeiter die Kontrolle haben, verarbeitet werden.

    Ein weiterer positiver Effekt ist der reduzierte Schulungsbedarf der Mitarbeiter. Mit dieser Automatisierung werden Qualität und Prozesse optimiert. Kunden werden nicht nur schneller bedient, sondern erhalten auch ein hochqualitatives, individuelles Getränk. Zudem können sich Baristas auf die technischeren Aspekte der Getränkezubereitung konzentrieren.

     

    <script id="tvChartLoader" async src="https://unpkg.com/lightweight-charts/dist/lightweight-charts.standalone.production.js"></script> <script id="declarations">
    var chartid = "6620a38f76bdf";
    function renderTV(kursData, chartData,companyName,currency, chartHeight, chartWidth, code, exchange, kursDate, hidetitle, hidelegend, chartid) {
    console.log("render chart with id", document.querySelector(`[data-chartid="${chartid}"]`));
    let width = chartWidth?chartWidth:600;
    let ratio = 2
    let height = chartHeight?chartHeight:(width/ratio);
    document.querySelector(`[data-chartid="${chartid}"]`).style.height = chartHeight +50
    document.querySelector(`[data-chartid="${chartid}"]`).style.width = chartWidth

    // formatter for x achis dates
    function customXAchsisFormetter(timePoint, tickMarkType, locale) {
    let formatOptions = {};
    const date = new Date(timePoint);

    if(tickMarkType <=1){
    formatOptions = {day: "numeric", month: "short",year: "numeric",}

    }else{
    formatOptions = {day: "numeric", month: "short",year: "numeric",}
    }
    // from given date we should use only as UTC date or timestamp
    // but to format as locale date we can convert UTC date to local date
    const localDateFromUtc = new Date(
    date.getUTCFullYear(),
    date.getUTCMonth(),
    date.getUTCDate()
    );

    return localDateFromUtc.toLocaleString(locale, formatOptions);
    }

    //create buttons
    function createSimpleSwitcher(items, activeItem, activeItemChangedCallback) {
    var switcherElement = document.createElement("div");
    switcherElement.classList.add("switcher");

    var intervalElements = items.map(function (item) {
    var itemEl = document.createElement("button");
    itemEl.innerText = item;
    itemEl.classList.add("switcher-item");
    itemEl.classList.toggle("switcher-active-item", item === activeItem);
    itemEl.addEventListener("click", function () {
    onItemClicked(item);
    });
    switcherElement.appendChild(itemEl);
    return itemEl;
    });

    function onItemClicked(item) {
    if (item === activeItem) {
    return;
    }

    intervalElements.forEach(function (element, index) {
    element.classList.toggle("switcher-active-item", items[index] === item);
    });

    activeItem = item;

    activeItemChangedCallback(item);
    }

    return switcherElement;
    }
    // loading: true or false
    function handleAsyncUI(loading){
    var IntervalButtons = document.getElementsByClassName("switcher-item");
    for(var i = 0; i < IntervalButtons.length; i++){
    IntervalButtons[i].disabled = loading;
    }
    var chart = document.getElementsByClassName("tv-lightweight-charts")[0];
    if(loading){

    chart.style["display"] = "flex"
    chart.style["align-items"] = "center"
    chart.style["justify-content"] = "center"

    var loadingIndicator = document.createElement("div");
    loadingIndicator.classList.add("loader");
    //loadingIndicator.innerText = "Loading";
    loadingIndicator.id ="loadingIndicator"
    chart.appendChild(loadingIndicator);
    }else{
    document.getElementById("loadingIndicator").remove();
    chart.style["display"] = null
    chart.style["align-items"] =null
    chart.style["justify-content"] = null
    }

    }
    var intervals = ["1M","3M","6M","1Y","3Y","5Y"];
    var seriesesData = new Map([
    ["1M", []], // 1m (interval daten?), 3m, 6m, 1y, 3y, 5y
    ["3M", []],
    ["6M", []],
    ["1Y", chartData],
    ["3Y", []],
    ["5Y", []],
    ]);
    var switcherElement = createSimpleSwitcher(intervals, intervals[3], syncToInterval);
    var chartElement = document.createElement("div");
    const chart = LightweightCharts.createChart(chartElement, {
    width: width,
    height: height,
    rightPriceScale: {
    scaleMargins: {
    top: 0.2,
    bottom: 0.2,
    },
    borderVisible: false,
    },
    timeScale: {
    borderVisible: false,
    lockVisibleTimeRangeOnResize: true,

    rightOffset:1,
    tickMarkFormatter:customXAchsisFormetter

    },
    grid: {
    horzLines: {
    color: "#eee",
    visible: false,
    },
    vertLines: {
    color: "#ffffff",
    },
    },
    crosshair: {
    horzLine: {
    visible: false,
    labelVisible: false
    },
    vertLine: {
    visible: true,
    style: 0,
    width: 2,
    color: "rgba(80, 50, 25, 0.1)",
    labelVisible: false,
    }
    },
    handleScroll: {
    mouseWheel: false,
    pressedMouseMove: false,
    horzTouchDrag: false,
    vertTouchDrag: false
    },
    handleScale: {
    axisPressedMouseMove: false,
    mouseWheel: false,
    pinch: false,
    },
    });
    var areaSeries = null;
    var positionDIV = document.querySelector(`[data-chartid="${chartid}"]`)
    positionDIV.appendChild(chartElement);
    positionDIV.appendChild(switcherElement);
    function httpGetAsync(theUrl, callback) {
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.onreadystatechange = function () {
    if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
    callback(xmlHttp.responseText);
    }
    xmlHttp.open("GET", theUrl, true); // true for asynchronous
    xmlHttp.send(null);
    }
    function formatDate(date) {

    var month = "" + (date.getMonth()+1);
    var day = "" + date.getDate();
    var year = date.getFullYear();

    if (month.length < 2)
    month = "0" + month;
    if (day.length < 2)
    day = "0" + day;
    return [year, month, day].join("-");
    }
    function getTimeframe(interval){
    let from = null;
    let to = formatDate(new Date());
    switch (interval) {
    case "1M": from = formatDate(new Date(Date.now() - 31 * 24 * 60 * 60 * 1000)); break;
    case "3M": from = formatDate(new Date(Date.now() - 93 * 24 * 60 * 60 * 1000)); break;
    case "6M": from = formatDate(new Date(Date.now() - 186 * 24 * 60 * 60 * 1000)); break;
    case "1Y": from = formatDate(new Date(Date.now() - 372 * 24 * 60 * 60 * 1000)); break;
    case "3Y": from = formatDate(new Date(Date.now() - 1116 * 24 * 60 * 60 * 1000)); break;
    case "5Y": from = formatDate(new Date(Date.now() - 1860 * 24 * 60 * 60 * 1000)); break;
    default:from = formatDate(new Date(Date.now() - 372 * 24 * 60 * 60 * 1000));

    }
    return {from:from, to:to}
    }
    // what happens on button click
    function syncToInterval(interval) {
    if (areaSeries && seriesesData.get(interval).length <=0) {
    console.log("GETTING REMOTE DATA")

    chart.removeSeries(areaSeries);
    areaSeries = null;
    let apiToken = "za1j116n2273ab1vxukuh6"
    let timeframe = getTimeframe(interval)
    let filter = "adjusted_close"
    handleAsyncUI(true)
    httpGetAsync("https://api.leeway.tech/api/v1/public/historicalquotes/"+encodeURIComponent(code+"."+exchange)+"?apitoken="+apiToken+"&filter="+filter+"&from="+timeframe.from+"&to="+timeframe.to, function (res) {
    let newData = []
    newData = JSON.parse(res)//.map(el=>newData.push({time:el.date, value:el.close}))
    // newData = newData.map(el=>{
    // console.log(el.time.year)
    // console.log(el.time.month)
    // console.log(el.time.day)
    // console.log(el)
    // console.log(new Date(el.time.year, el.time.month-1, el.time.day));
    // return{value:el.value, time:el.time, timestamp:new Date(el.time.year, el.time.month-1, el.time.day).getTime()}})
    console.log("newData")
    console.log(newData)
    seriesesData.set(interval, newData)
    areaSeries = chart.addAreaSeries({
    topColor: "rgba(33, 108, 173, 0.56)",
    bottomColor: "rgba(33, 108, 173, 0.04)",
    lineColor: "rgba(33, 108, 173, 1)",
    lineWidth: 2,
    });
    kursData = seriesesData.get(interval)[seriesesData.get(interval).length-1].value
    areaSeries.setData(seriesesData.get(interval));
    chart.timeScale().fitContent();
    handleAsyncUI(false)
    })
    }else{
    console.log("GETTING LOADED DATA")
    if(areaSeries){
    console.log("DELETING LOADED DATA FROM CHART")
    chart.removeSeries(areaSeries);
    areaSeries = null;
    }
    kursData = seriesesData.get(interval)[seriesesData.get(interval).length-1].value
    areaSeries = chart.addAreaSeries({
    topColor: "rgba(33, 108, 173, 0.56)",
    bottomColor: "rgba(33, 108, 173, 0.04)",
    lineColor: "rgba(33, 108, 173, 1)",
    lineWidth: 2,
    });
    areaSeries.setData(seriesesData.get(interval));

    chart.timeScale().fitContent();
    }


    }
    // data interval at startup
    syncToInterval(intervals[3]);
    // Name and Kurs as Text in legend



    var watermark = document.createElement("img")
    watermark.classList.add("watermark")
    watermark.setAttribute("src", "https://api.leeway.tech/leeway-sign.png")
    var testA = document.querySelector(`[data-chartid="${chartid}"]`)
    var testB = document.querySelector(`[data-chartid="${chartid}"]`).getBoundingClientRect();
    var test = testA.getElementsByTagName("canvas")[0].getBoundingClientRect();
    watermark.style.position = "absolute";
    watermark.style.width = "90px";
    watermark.style.height = "30px";
    watermark.style.display = "block";
    //watermark.style.z-index = "1000000";
    watermark.style.bottom = "0";
    watermark.style.right = "10px";


    let linkLW = document.createElement("a")
    linkLW.href="https://www.ftd.de/leeway-tech";
    linkLW.target = "_blank";
    linkLW.appendChild(watermark)
    // append to DOM

    //div-chartwrapper -> div -> div -> table -> tr -> td td -> div
    const myElementA = document.querySelector(`[data-chartid="${chartid}"]`);
    let myElementB = myElementA.childNodes[0]
    let myElementC = myElementB.childNodes[0]
    let myElementD = myElementC.childNodes[0]
    let myElementE = myElementD.childNodes[0]
    let myElementF = myElementE.childNodes[1]
    let myElementG = myElementF.childNodes[0]
    myElementG.appendChild(linkLW);




    if(hidelegend == "false"){
    console.log("SHOW LEGEND!")
    var legend = document.createElement("div");
    legend.classList.add("legend");
    var offsets = document.querySelector(`[data-chartid="${chartid}"]`).getBoundingClientRect();
    var chartwrapperTop = offsets.top;

    var legendHeight = height *-1
    if(legendHeight>-210){legendHeight = -210;}
    legend.style.top = legendHeight*1.2 + "px"
    positionDIV.appendChild(legend);

    if(hidetitle == "false"){
    var firstRow = document.createElement("div");
    firstRow.classList.add("titleText");

    }

    var secondRow = document.createElement("div");
    secondRow.classList.add("secondRow");

    if(kursData !== null){
    if(hidetitle == "false"){
    firstRow.innerText = companyName
    legend.appendChild(firstRow);
    }

    secondRow.innerText = kursDate +": " + Number(kursData).toFixed(2) + " "+currency;
    legend.appendChild(secondRow);
    }else{
    if(hidetitle == "false"){
    firstRow.innerText = companyName
    legend.appendChild(firstRow);
    }

    legend.appendChild(secondRow);
    }


    // cursor moving and handling third row of legend
    chart.subscribeCrosshairMove((param) => {
    if (param.time) {
    let options = { weekday: "short", year: "numeric", month: "numeric", day: "numeric" };
    let currentDate = new Date(param.time).toLocaleDateString("de-DE", options)
    const price = param.seriesData.get(areaSeries).value;
    secondRow.innerText = currentDate + ": " + price.toFixed(2) + " "+(currency?currency:" ");
    }
    else {
    secondRow.innerText = kursDate +": " + Number(kursData).toFixed(2) + " "+currency;

    }
    });

    }

    }
    function httpGetAsync(theUrl, callback) {
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.onreadystatechange = function () {
    if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
    callback(xmlHttp.responseText);
    }
    xmlHttp.open("GET", theUrl, true); // true for asynchronous
    xmlHttp.send(null);
    };
    function getTimeframe(interval){
    let from = null;
    let to = formatDate(new Date());
    switch (interval) {
    case "1M": from = formatDate(new Date(Date.now() - 31 * 24 * 60 * 60 * 1000)); break;
    case "3M": from = formatDate(new Date(Date.now() - 93 * 24 * 60 * 60 * 1000)); break;
    case "6M": from = formatDate(new Date(Date.now() - 186 * 24 * 60 * 60 * 1000)); break;
    case "1Y": from = formatDate(new Date(Date.now() - 372 * 24 * 60 * 60 * 1000)); break;
    case "3Y": from = formatDate(new Date(Date.now() - 1116 * 24 * 60 * 60 * 1000)); break;
    case "5Y": from = formatDate(new Date(Date.now() - 1860 * 24 * 60 * 60 * 1000)); break;
    default:from = formatDate(new Date(Date.now() - 372 * 24 * 60 * 60 * 1000));

    }
    return {from:from, to:to}
    };
    function formatDate(date) {

    var month = "" + (date.getMonth()+1);
    var day = "" + date.getDate();
    var year = date.getFullYear();

    if (month.length < 2)
    month = "0" + month;
    if (day.length < 2)
    day = "0" + day;

    return [year, month, day].join("-");
    };
    </script>
    <script id="main">

    var scriptTV = document.querySelector("#tvChartLoader");
    scriptTV.addEventListener("load", function() {
    var chartid = "6620a38f76bdf";

    var companyName = "Starbucks Corporation";
    if(companyName.length <=0){
    companyName = "SBUX - US";
    }
    var code = "SBUX";
    var exchange = "US";
    var currency ="USD";
    var kursData = null;
    var kursDataDate = null;
    var chartHeight = "";
    var chartWidth = "250"
    var hidetitle = "false"
    var hidelegend = "false"
    let apiToken = "za1j116n2273ab1vxukuh6"
    chartWidth = document.querySelector(`[data-chartid="${chartid}"]`).offsetWidth
    var chartData = [];
    var timeframe = getTimeframe("1Y");
    var filter = "adjusted_close";

    httpGetAsync("https://api.leeway.tech/api/v1/public/historicalquotes/"+encodeURIComponent(code+"."+exchange)+"?apitoken="+apiToken+"&filter="+filter+"&from="+timeframe.from+"&to="+timeframe.to, function (res) {
    let newData = null;
    chartData = newData = JSON.parse(res)
    // 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()}})
    kursData = chartData[chartData.length-1].value
    let options = { weekday: "short", year: "numeric", month: "numeric", day: "numeric" };
    kursDataDate = chartData[chartData.length-1].time
    let kursDate = new Date(kursDataDate.split("-")[0], Number(kursDataDate.split("-")[1])-1, kursDataDate.split("-")[2]).toLocaleDateString("de-DE", options)

    renderTV(kursData,chartData,companyName,currency, Number(chartHeight), Number(chartWidth), code, exchange, kursDate, hidetitle, hidelegend, chartid)
    });
    });
    </script>

    Starbucks: Eine wertvolle Marke mit Preissetzungsmacht

    Starbucks ist ein wahrer Gigant im Vergleich zu seinem Wettbewerb. Der Marktanteil von Starbucks liegt bei rund 22 Prozent. Dunkin Donut hat einen Marktanteil von nur 16 Prozent und McDonalds McCafé einen Anteil von 12 Prozent. Der Fokus auf einem besonderen Kundenerlebnis, gepaart mit hoher Qualität, haben Starbucks zu einer starken Marke werden lassen. Trotz stets steigender Rohstoffpreise und höherer Personalkosten, konnte Starbucks seine Margen stabil halten.

    Im Vergleich zum Wettbewerb kann Starbucks deutlich höhere Preise verlangen. Die Kunden sind bereit, das doppelte für ihr Getränke zu bezahlen. Sie kommen zu Starbucks, weil sie dort keinen Standard-Kaffee erhalten, sondern ein ganz spezielles Getränk. In Eile gibt es zügig einen Coffee-to-Go und für Genießer ein ansprechendes Ambiente mit Internetverbindung. In den USA suchen viele Starbucks mit ihrem Arbeitslaptop auf, um von dort ihre Arbeit zu verrichten. Letztlich kommt die wertvolle Marke ins Spiel: Der Kunde weiß, was er bekommt. Egal ob er in New York, Berlin, Sydney oder Tokio eine Filiale mit dem grünen Meerjungfrauen Logo besucht.

    Cashflow, Dividende, ROIC: Bewertung scheint attraktiv

    Wer Starbucks auf seiner Watchliste hat oder nach einer starken Marke im Depot Ausschau hält, sollte nun aufmerksam werden. Starbucks wird aktuell zu einem KGV (Kurs-Gewinn-Verhältnis) von 20 bewertet. Das Gewinnwachstum soll in den nächsten Jahren sogar zweistellig sein. Starbucks hat zudem einen freien Cashflow von rund 10 Prozent und bietet aktuell eine Dividendenrendite von 2,5 Prozent. Der ROIC des Unternehmens liegt bei atemberaubenden 36 Prozent. Und die Verschuldung ist für ein kapitalintensives Unternehmen wie Starbucks mit einer Nettoverschuldung zu EBITDA von 2 gering.

    Der Beitrag Starbucks Aktie: Viel mehr als Kaffee – Marke mit Rendite-Potenzial erschien zuerst auf ftd.de.