CINXE.COM

Goldman Sachs | GS - Stock Price | Live Quote | Historical Chart

<!doctype html> <html > <head id="ctl00_Head1"><meta charset="utf-8" /><title> Goldman Sachs | GS - Stock Price | Live Quote | Historical Chart </title><meta id="metaDesc" name="description" content="Goldman Sachs stock price, live market quote, shares value, historical data, intraday chart, earnings per share and news. " /><meta id="metaKeyword" name="keywords" content="Goldman,Sachs,GS,stock,equity,live,intraday,earnings,share,price,historical data,chart,calendar,dividend,yield,news" /><meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1,maximum-scale=1" /><meta name="theme-color" content="#333333" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.2.3/css/bootstrap.min.css" integrity="sha512-SbiR/eusphKoMVVXysTKG/7VseWii+Y3FdHrt0EpKgpToZeemhqHeZeLWLhJutz/2ut2Vw1uQEj2MbRF+TVBUA==" crossorigin="anonymous" referrerpolicy="no-referrer" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-icons/1.10.2/font/bootstrap-icons.min.css" integrity="sha512-YFENbnqHbCRmJt5d+9lHimyEMt8LKSNTMLSaHjvsclnZGICeY/0KYEeiHwD1Ux4Tcao0h60tdcMv+0GljvWyHg==" crossorigin="anonymous" referrerpolicy="no-referrer" /> <link href="//d3fy651gv2fhd3.cloudfront.net/stylesheet.min.css?v=20241101b" rel="stylesheet" /> <script type="text/javascript">var TEChartSettings = {}; var TESymbol = ''; var TECountry = ''; var TECategory = ''; var TEFrequency = ''; var TELanguage = ''; var TELastUpdate = '20241031000000'; var TEChartVersion = ''; var symbol = ''; var symbolType = ''; var hasCalendar = false; var isLoggedIn = false; var TEAlertsName = ''; var TEChartsDatasource = 'https://d3ii0wo49og5mi.cloudfront.net'; var IsMobile = false; var TEChartsMeta = ''; var TEForecast = []; var TEAuthorization = ''; var TESecurify = ''; var TESecurifyUrl = ''; var TEType = ''; var TEChartUrl = '/gs:us'; var TEComparable = 0; var isAlertsLoaded = false; var IsDarkMode = false; var isPakoLoaded = false; var TEChartsToken = '20240229:nazare'; var TEObfuscationkey = 'tradingeconomics-charts-core-api-key'; var isCopyright = false;</script> <script type="text/javascript">var DEBUG = false;if (window.location.host.indexOf('localhost') > -1) DEBUG = true;else if (window.location.href.indexOf('debug') > -1) DEBUG = true;if (!DEBUG) {if (!window.console) window.console = {};var methods = ["log", "debug", "info"];for (var i = 0; i < methods.length; i++) {console[methods[i]] = function () { };}}</script> <link rel="icon" href="//d3fy651gv2fhd3.cloudfront.net/favicon.ico" /><link rel="canonical" href="https://tradingeconomics.com/gs:us" /> <script type="application/ld+json">{"@context":"https://schema.org/","@graph":[ {"@context": "https://schema.org","@type": "Organization","url": "https://tradingeconomics.com","name": "TRADING ECONOMICS","logo": {"@type": "ImageObject","url": "https://tradingeconomics.com/images/logo.png?v=schema"}}, {"@type": "Dataset","name": "Goldman Sachs | GS - Stock Price | Live Quote | Historical Chart","alternateName": "","description": "Goldman Sachs stock price, live market quote, shares value, historical data, intraday chart, earnings per share and news. ","url":"https://tradingeconomics.com/gs:us","keywords": "Goldman,Sachs,GS,stock,equity,live,intraday,earnings,share,price,historical data,chart,calendar,dividend,yield,news","temporalCoverage": "2000-01-01/2024-11-25","spatialCoverage": "United States", "creator": {"@type": "Organization","url": "https://tradingeconomics.com","name": "TRADING ECONOMICS","logo": {"@type": "ImageObject","url": "https://tradingeconomics.com/images/logo.png?v=schema"}}, "distribution": [{"@type": "DataDownload","encodingFormat": "CSV","contentUrl": "https://tradingeconomics.com/gs:us"},{"@type": "DataDownload","encodingFormat": "JSON","contentUrl": "https://tradingeconomics.com/gs:us"},{"@type": "DataDownload","encodingFormat": "XML","contentUrl": "https://tradingeconomics.com/gs:us"},{"@type": "DataDownload","encodingFormat": "Excel","contentUrl": "https://tradingeconomics.com/gs:us"}], "includedInDataCatalog": {"@type": "DataCatalog","name": "TRADING ECONOMICS"},"version": "20241125","dateModified": "20241125T09: 18: 00.00Z", "isAccessibleForFree": true,"license" : "https://creativecommons.org/licenses/by/4.0/" }]}</script> </head> <body > <script>IsDarkMode=false;</script> <form method="post" action="/gs:us" id="aspnetForm"> <div class="aspNetHidden"> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="PiaZ46x8bdR35CByVPc4gj9PDv2oCjGJ0fUq7/qGrQhE5mKAX6nJ/83e2B+vY+nW4qPLp1gWyURj6De7T4ei5zx16Ew=" /> </div> <script type="text/javascript" language="Javascript">TESymbol = 'gs:us'; console.log('TESymbol:', TESymbol);TEType = 'market'; console.log('TEType:', TEType);TECategory = 'Stock'; console.log('TECategory:', TECategory);TEFrequency = 'daily'; console.log('TEFrequency:', TEFrequency);TELanguage = ''; console.log('TELanguage:', TELanguage);TEAlertsName= 'Goldman Sachs'; console.log('TEAlertsName:', TEAlertsName);TELastUpdate = '202411242059'; console.log('TELastUpdate:', TELastUpdate);</script><script type="text/javascript" language="Javascript"></script><script type="text/javascript" language="Javascript">symbol = 'gs:us'; console.log('symbol:', symbol);symbolType = 'us'; console.log('symbolType:', symbolType);</script><script type="text/javascript" language="Javascript">TEChartsMeta = [{"value":603.080000000000,"converted_value":603.080000000000,"symbol":"GS:US","first_date":"\/Date(925776000000)\/","last":603.080000000000,"type":"Stocks","name":"Goldman Sachs","full_name":"Goldman Sachs","ticker":"GS:US","description":"Goldman Sachs","timezone":"UTC","supported_resolutions":["5","15","30","60","120","180","240","D","W","M"],"has_daily":true,"has_weekly_and_monthly":true,"has_no_volume":true,"minmov":0.1,"minmov2":1,"pricescale":100,"ieconomics_url":null,"allowed_interval":"5m","default_interval":null,"has_intraday":true,"industry":"Institutional Financial Svcs","sector":"Financials","chart_type":null}]; console.log('TEChartsMeta:', TEChartsMeta);</script> <div class="aspNetHidden"> <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="9ED6FB81" /> </div> <nav id="ctl00_NavigationUC1_ctl00_menu" class="navbar navbar-dark fixed-top" role="navigation"> <div class="container"> <div class="navbar-header navbar-header-search" id="searchMobileHeader"> <div class="d-flex justify-content-between"> <a class="navbar-brand" style="width: 100%"> <input type="text" placeholder="Search" id="thisIstheTinySearchBoxIdTag" autocomplete="off" class="nav-search-input-class navbar-search-2" /> </a> <ul id="thisIstheTinySearchResultsIdTag" class="dropdown-menu navbar-search-1"> <li> <div class="container-fluid"> <div id="dpSearch-resultCnt-tiny" class="dpTaResult"> </div> </div> </li> </ul> <div class="navbar-mobile-close-search"> <a noref class="navbar-mobile-item" id="thisIsTheTinyRemoveId"><i class="bi bi-x-lg"></i></a> </div> </div> </div> <div class="navbar-header navbar-collapse float-end" id="mainHeader"> <div class="d-flex"> <button type="button" class="navbar-toggler" data-bs-toggle="offcanvas" data-bs-target="#tesidemenu" aria-controls="tesidemenuoptions"> <span class="navbar-toggler-icon"></span> </button> <div class="logo-banner d-flex justify-content-between float-right"> <a class="navbar-brand" href="/"> <svg width="129" height="35" version="1.1" viewBox="0 0 34.131 9.2604" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" aria-label = "Trading Economics logo"> <g fill="#858585" stroke="#858585" stroke-width=".1" ><path d="m1.3315 8.5517v-3.7879h2.8086v0.64079h-2.0438v0.83974h1.9017v0.6382h-1.9017v1.0309h2.1162v0.6382z"/><path d="m7.2846 7.1591 0.74156 0.23513q-0.17053 0.62012-0.56844 0.92242-0.39532 0.29972-1.0051 0.29972-0.75448 0-1.2402-0.51418-0.48576-0.51676-0.48576-1.4108 0-0.94568 0.48834-1.4676 0.48834-0.52452 1.2842-0.52452 0.69505 0 1.1291 0.41083 0.25838 0.24288 0.38757 0.69763l-0.75706 0.18087q-0.067179-0.29456-0.28164-0.46509-0.21187-0.17053-0.51676-0.17053-0.42116 0-0.68471 0.30231-0.26097 0.30231-0.26097 0.97927 0 0.7183 0.25838 1.0232 0.25838 0.30489 0.67179 0.30489 0.30489 0 0.52452-0.19379 0.21962-0.19379 0.31523-0.60978z"/><path d="m8.5275 6.681q0-0.57878 0.17312-0.97152 0.12919-0.28939 0.3514-0.51935 0.22479-0.22996 0.49093-0.34106 0.35398-0.14986 0.81649-0.14986 0.83716 0 1.3384 0.51935 0.50385 0.51935 0.50385 1.4444 0 0.91726-0.49868 1.4366-0.49868 0.51676-1.3333 0.51676-0.84491 0-1.3436-0.51418-0.49868-0.51676-0.49868-1.4211zm0.78807-0.025838q0 0.64337 0.29714 0.97669 0.29714 0.33073 0.75448 0.33073 0.45734 0 0.74931-0.32815 0.29456-0.33073 0.29456-0.9896 0-0.65112-0.2868-0.97152-0.28422-0.32039-0.75706-0.32039-0.47284 0-0.76223 0.32556-0.28939 0.32298-0.28939 0.97669z"/><path d="m12.806 8.5517v-3.7879h0.74414l1.5503 2.5296v-2.5296h0.71055v3.7879h-0.7674l-1.527-2.4701v2.4701z"/><path d="m16.465 6.681q0-0.57878 0.17312-0.97152 0.12919-0.28939 0.3514-0.51935 0.22479-0.22996 0.49093-0.34106 0.35398-0.14986 0.81649-0.14986 0.83716 0 1.3384 0.51935 0.50384 0.51935 0.50384 1.4444 0 0.91726-0.49868 1.4366-0.49868 0.51676-1.3333 0.51676-0.84491 0-1.3436-0.51418-0.49868-0.51676-0.49868-1.4211zm0.78807-0.025838q0 0.64337 0.29714 0.97669 0.29714 0.33073 0.75448 0.33073t0.74931-0.32815q0.29456-0.33073 0.29456-0.9896 0-0.65112-0.2868-0.97152-0.28422-0.32039-0.75706-0.32039t-0.76223 0.32556q-0.28939 0.32298-0.28939 0.97669z"/><path d="m20.726 8.5517v-3.7879h1.1446l0.6873 2.5838 0.67955-2.5838h1.1472v3.7879h-0.71055v-2.9817l-0.75189 2.9817h-0.73639l-0.74931-2.9817v2.9817z"/><path d="m25.121 8.5517v-3.7879h0.76481v3.7879z"/><path d="m29.038 7.1591 0.74156 0.23513q-0.17053 0.62012-0.56844 0.92242-0.39532 0.29972-1.0051 0.29972-0.75448 0-1.2402-0.51418-0.48576-0.51676-0.48576-1.4108 0-0.94568 0.48834-1.4676 0.48834-0.52452 1.2842-0.52452 0.69505 0 1.1291 0.41083 0.25838 0.24288 0.38757 0.69763l-0.75706 0.18087q-0.06718-0.29456-0.28164-0.46509-0.21187-0.17053-0.51676-0.17053-0.42116 0-0.68471 0.30231-0.26097 0.30231-0.26097 0.97927 0 0.7183 0.25838 1.0232 0.25838 0.30489 0.67179 0.30489 0.30489 0 0.52452-0.19379 0.21962-0.19379 0.31523-0.60978z"/><path d="m30.242 7.3193 0.74414-0.072347q0.06718 0.37465 0.2713 0.55035 0.2067 0.1757 0.55552 0.1757 0.36949 0 0.55552-0.15503 0.18862-0.15761 0.18862-0.3669 0-0.13436-0.0801-0.22738-0.077514-0.095602-0.27388-0.16536-0.13436-0.046509-0.61237-0.16536-0.61495-0.15245-0.863-0.37465-0.34882-0.31264-0.34882-0.76223 0-0.28939 0.16278-0.54002 0.16536-0.25321 0.47284-0.38499 0.31006-0.13178 0.74672-0.13178 0.71314 0 1.0723 0.31264 0.36174 0.31264 0.37982 0.83457l-0.76481 0.03359q-0.04909-0.29197-0.21187-0.41858-0.1602-0.12919-0.48317-0.12919-0.33331 0-0.52193 0.13694-0.12144 0.08785-0.12144 0.23513 0 0.13436 0.11369 0.22996 0.14469 0.12144 0.7028 0.25321t0.82424 0.27389q0.26872 0.13953 0.41858 0.38499 0.15244 0.24288 0.15244 0.60203 0 0.32556-0.18087 0.60978-0.18087 0.28422-0.5116 0.42375-0.33073 0.13694-0.82424 0.13694-0.7183 0-1.1033-0.33073-0.38499-0.33331-0.45992-0.96893z"/></g> <g fill="#ddd" stroke="#ddd" stroke-width=".1" ><path d="m1.4629 4.2437v-2.8324h-1.0116v-0.57671h2.7091v0.57671h-1.0092v2.8324z"/><path d="m3.607 4.2437v-3.4091h1.4487q0.54648 0 0.79297 0.093018 0.24882 0.090692 0.39765 0.32556 0.14883 0.23487 0.14883 0.53718 0 0.3837-0.22557 0.63484-0.22557 0.24882-0.67438 0.31393 0.22324 0.13022 0.36742 0.28603 0.1465 0.1558 0.393 0.55345l0.41625 0.66508h-0.82321l-0.49764-0.74182q-0.2651-0.39765-0.36277-0.49997-0.097668-0.10464-0.20696-0.14185-0.1093-0.039532-0.34649-0.039532h-0.13953v1.4232zm0.68833-1.9673h0.50927q0.49532 0 0.61857-0.041858t0.19301-0.14418q0.069763-0.10232 0.069763-0.2558 0-0.17208-0.093018-0.27673-0.090692-0.10697-0.25812-0.13488-0.083716-0.011627-0.50229-0.011627h-0.53718z"/><path d="m10.118 4.2437h-0.74879l-0.29766-0.77437h-1.3627l-0.28138 0.77437h-0.73019l1.3278-3.4091h0.72786zm-1.2674-1.3488-0.46974-1.265-0.46044 1.265z"/><path d="m10.481 0.8346h1.2581q0.42556 0 0.6488 0.065112 0.29998 0.088367 0.51392 0.31393 0.21394 0.22557 0.32556 0.55345 0.11162 0.32556 0.11162 0.8046 0 0.4209-0.10464 0.72554-0.1279 0.37207-0.36509 0.60229-0.17906 0.17441-0.48369 0.27208-0.22789 0.072089-0.60926 0.072089h-1.2953zm0.68833 0.57671v2.258h0.51392q0.28835 0 0.41625-0.032556 0.16743-0.041858 0.27673-0.14185 0.11162-0.099994 0.18138-0.32789 0.06976-0.23022 0.06976-0.62554t-0.06976-0.60694-0.19534-0.33021q-0.12557-0.1186-0.31858-0.16046-0.14418-0.032556-0.56508-0.032556z"/><path d="m13.902 4.2437v-3.4091h0.68833v3.4091z"/><path d="m15.253 4.2437v-3.4091h0.66973l1.3953 2.2766v-2.2766h0.6395v3.4091h-0.69066l-1.3743-2.2231v2.2231z"/><path d="m20.271 2.9903v-0.57438h1.4836v1.3581q-0.21627 0.20929-0.62787 0.36974-0.40928 0.15813-0.83018 0.15813-0.53485 0-0.9325-0.22324-0.39765-0.22557-0.59764-0.64182-0.19999-0.41858-0.19999-0.90925 0-0.53253 0.22324-0.94645 0.22324-0.41393 0.65345-0.63484 0.32789-0.16976 0.81623-0.16976 0.63484 0 0.99064 0.26743 0.35812 0.2651 0.46044 0.73484l-0.68368 0.1279q-0.072088-0.25115-0.27208-0.39532-0.19766-0.1465-0.49532-0.1465-0.45114 0-0.71856 0.28603-0.2651 0.28603-0.2651 0.84879 0 0.60694 0.26975 0.91157 0.26975 0.30231 0.70693 0.30231 0.21627 0 0.43253-0.083716 0.21859-0.086041 0.3744-0.20696v-0.43253z"/></g> </svg> </a> <div class="d-flex align-items-center nav-options"> <div class="d-flex align-items-center nav-entry-link-group"> <a class="nav-entry-link d-none d-md-block" href="/calendar"><span>Calendar</span></a> <a class="nav-entry-link d-none d-md-block" href="/stream"><span>News</span></a> <div class="dropdown"> <a href="#" class="dropdown d-flex nav-entry-link d-none d-md-block" data-bs-toggle="dropdown"><span>Markets</span></a> <ul class="dropdown-menu nav-dropdown-menu"> <li class='dropdown-item nav-dropdown-item'><a href="/commodities">Commodities</a></li> <li class='dropdown-item nav-dropdown-item'><a href="/currencies">Currencies</a></li> <li class='dropdown-item nav-dropdown-item'><a href="/stocks">Stocks</a></li> <li class='dropdown-item nav-dropdown-item'><a href="/bonds">Bonds</a></li> <li class='dropdown-item nav-dropdown-item'><a href="/crypto">Crypto</a></li> <li class='dropdown-item nav-dropdown-item'><a href="/earnings">Earnings</a></li> </ul> </div> <a class="nav-entry-link d-none d-lg-block" href="/indicators"><span>Indicators</span></a> <a class="nav-entry-link d-none d-xl-block" href="/countries"><span >Countries</span></a> <div class="dropdown"> <a href="#" class="dropdown d-flex nav-entry-link d-none d-md-block" data-bs-toggle="dropdown"><span>Forecasts</span></a> <ul class="dropdown-menu nav-dropdown-menu"> <li class='dropdown-item nav-dropdown-item'><a href="/forecast/commodity">Commodities</a></li> <li class='dropdown-item nav-dropdown-item'><a href="/forecast/currency">Currencies</a></li> <li class='dropdown-item nav-dropdown-item'><a href="/forecast/stock-market">Stocks</a></li> <li class='dropdown-item nav-dropdown-item'><a href="/forecast/government-bond-10y">Bonds</a></li> <li class='dropdown-item nav-dropdown-item'><a href="/forecast/crypto">Crypto</a></li> <li class='dropdown-item nav-dropdown-item'><a href="/forecasts">Countries</a></li> <li class='dropdown-item nav-dropdown-item'><a href="/indicators?g=forecast">Indicators</a></li> </ul> </div> </div> <div class="search-li d-none d-lg-block"> <a noref id="thisIsTheSearchPlaceholderId" class="nav-searchbox-class stickydropdown d-block" title="Search"> <div id="thisIsTheSearchBoxWrapperId" class="typeahead-searchbox-glyphicon-wrapper d-flex "> <input type="text" placeholder="Search" aria-label="Search" id="thisIstheSearchBoxIdTag" autocomplete="off" class="d-none d-md-block nav-search-input-class"> </div> </a> <ul id="thisIstheSearchResultsIdTag" class="dropdown-menu nav-dropdown-menu typeahead-wrapper"> <li> <div class="container"> <div id="dpSearch-resultCnt" class="dpTaResult"> </div> </div> </li> </ul> </div> <div> <a class="d-block d-lg-none navbar-mobile-item" id="thisIsTheTinyGlyphiconId"><i class="bi bi-search me-2"></i></a> </div> <div class="dropdown dropdown-notification-list"> <button class="btn btn-notification-list" type="button" id="dropdownNotificationList" data-bs-toggle="offcanvas" data-bs-target="#offcanvasTop"> <svg xmlns="http://www.w3.org/2000/svg" width="21px" height="21px" viewBox="0 0 24 24" id="notification-empty" style="vertical-align:middle !important" data-name="notification-empty"><rect id="view-box" width="24" height="24" fill="none"/><path id="Shape" d="M6,17v-.5H2.25A2.253,2.253,0,0,1,0,14.25v-.382a2.542,2.542,0,0,1,1.415-2.289A1.248,1.248,0,0,0,2.1,10.572l.446-4.91a6.225,6.225,0,0,1,12.4,0l.446,4.91a1.26,1.26,0,0,0,.686,1.005,2.547,2.547,0,0,1,1.418,2.29v.382a2.252,2.252,0,0,1-2.25,2.25H11.5V17A2.75,2.75,0,0,1,6,17Zm1.5,0A1.25,1.25,0,0,0,10,17v-.5H7.5ZM4.045,5.8,3.6,10.708A2.738,2.738,0,0,1,2.089,12.92a1.055,1.055,0,0,0-.589.949v.382A.751.751,0,0,0,2.25,15h13A.751.751,0,0,0,16,14.25v-.382a1.054,1.054,0,0,0-.586-.948A2.739,2.739,0,0,1,13.9,10.708L13.456,5.8a4.725,4.725,0,0,0-9.411,0Z" transform="translate(3.25 2.25)" fill="#ddd"/></svg> <svg xmlns="http://www.w3.org/2000/svg" width="21px" height="21px" viewBox="0 0 24 24" id="notification-new" style="vertical-align:middle !important; display:none" data-name="notification-new"><rect id="view-box" width="24" height="24" fill="none" /><path id="Shape" d="M6,17v-.5H2.25A2.253,2.253,0,0,1,0,14.25v-.382a2.542,2.542,0,0,1,1.415-2.289A1.247,1.247,0,0,0,2.1,10.572l.446-4.91A6.227,6.227,0,0,1,10.618.286a5.477,5.477,0,0,0-.635,1.374A4.794,4.794,0,0,0,8.75,1.5,4.7,4.7,0,0,0,4.045,5.8L3.6,10.708A2.739,2.739,0,0,1,2.089,12.92a1.055,1.055,0,0,0-.589.949v.382A.751.751,0,0,0,2.25,15h13A.751.751,0,0,0,16,14.25v-.382a1.053,1.053,0,0,0-.586-.948A2.739,2.739,0,0,1,13.9,10.708l-.2-2.18a5.473,5.473,0,0,0,1.526.221l.166,1.822a1.26,1.26,0,0,0,.686,1.005,2.547,2.547,0,0,1,1.418,2.29v.382a2.252,2.252,0,0,1-2.25,2.25H11.5V17A2.75,2.75,0,0,1,6,17Zm1.5,0A1.25,1.25,0,0,0,10,17v-.5H7.5ZM15.047,6.744A3.486,3.486,0,0,1,13.5,6.28L13.456,5.8a4.7,4.7,0,0,0-1.648-3.185,3.5,3.5,0,0,1,.61-1.417A6.221,6.221,0,0,1,14.95,5.662l.1,1.081v0Z" transform="translate(3.25 2.25)" fill="#ddd" /> <path id="Shape-2" data-name="Shape" d="M3.5,7A3.5,3.5,0,1,1,7,3.5,3.5,3.5,0,0,1,3.5,7Z" transform="translate(15 2)" fill="#4287f5" /> </svg> </button> <div class="offcanvas offcanvas-top notification-list container custom-offcanvas" tabindex="-1" id="offcanvasTop" data-bs-scroll="true" aria-labelledby="offcanvasTopLabel" style="top:50px !important; border: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);"> <div class="empty-notificationlist"> <div class="empty-notificationlist-content"> <span>You have no new notifications</span> <br> <i class="bi bi-bell-slash-fill"></i> <br> <div><a href="/stream" title="Show all news" class="empty-notificationlist-more"><div class="btn btn-outline-secondary">All News</div></a></div> </div> </div> </div> </div> <div class="userOptionsMenu"> <a title="" data-bs-toggle="offcanvas" href="#offcanvasGuest" role="button" aria-controls="offcanvasGuest"><i class="bi bi-person"></i></a> </div> </div> </div> </div> </div> <div class="offcanvas offcanvas-end" tabindex="-1" id="offcanvasGuest" aria-labelledby="offcanvasGuestLabel"> <div class="offcanvas-header"> <h5 class="offcanvas-title" id="offcanvasGuestLabel"><b>Members</b></h5> <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button> </div> <div class="offcanvas-body user-offcanvas-body"> <div class="list-group list-group-user"> <a href="/analytics/pricing.aspx?source=menu " class="user-item list-group-item"> <b class="list-group-item-heading"><i class="bi bi-save2-fill me-2"></i>&nbsp;DATA PLANS</b><br> <span class="list-group-item-text">Download historical data for 20 million indicators using your browser.</span> </a> <div class="user-item list-group-item"> <div class="navbar-user-link"> <a href="/analytics/pricing.aspx?source=menu" class="navbar-te-link mx-1">Subscription Plans</a> | <a href="/analytics/features.aspx?source=menu" class="navbar-te-link mx-1">Features</a> </div> </div> </div> <div class="list-group list-group-user"> <a href="/api/" class="user-item list-group-item"> <b class="list-group-item-heading"><i class="bi bi-phone mx-1 me-2"></i>API GATEWAY</b><br> <span class="list-group-item-text mx-1">Direct access to our data from your apps using any programing language.</span> </a> <div class="user-item list-group-item"> <div> <a href="https://docs.tradingeconomics.com/" target="_blank" class="navbar-te-link mx-1">Docs</a> | <a href="/api/?source=menu" class="navbar-te-link mx-1">Features</a> | <a href="https://developer.tradingeconomics.com/" class="navbar-te-link mx-1">Developer</a> </div> </div> </div> <div class="list-group list-group-user"> <a class="user-item list-group-item" href="https://sso.tradingeconomics.com/sso/login?returnurl=https://tradingeconomics.com/gs:us"><i class="bi bi-person-fill"></i> Already a user? <b>Login</b></a> </div> <style> .form-switch { width: 3.5em !important; height: 2em !important } .bi-sun-fill { font-size: 12px; color: #ddd !important; } .bi-moon-fill { font-size: 10px; color: #333 !important; } .darkmode-toggle-container { width: auto; padding: 0px; margin-left: 0px; margin-top: 0px; border: none; } .form-check-div-sun { width: 20px; margin-bottom: 3px; margin-left: -54px; position: relative } .form-check-div-moon { width: 20px; margin-bottom: 3px; margin-left: 3px; position: relative } .dk-switch-right-menu{ padding-left:10px; } </style> <div class="list-group list-group-user dk-switch-right-menu"> <div class="d-flex align-items-center darkmode-toggle-container"> <div class="form-check form-switch darkmode-form-switch user-item"> <input class="form-check-input p-1" type="checkbox" role="button" id="flexSwitchCheckChecked"> </div> <div class="form-check-div-sun"> <label class="form-check-label form-check-label-sun p-1 d-inline" for="flexSwitchCheckChecked"><i class="bi bi-sun-fill"></i></label> </div> <div class="form-check-div-moon"> <label class="form-check-label form-check-label-moon p-1 d-inline" for="flexSwitchCheckChecked"><i class="bi bi-moon-fill"></i></label> </div> </div> </div> <script> function SetTheme(isDark) { console.log('Changing theme', isDark); if (IsDarkMode != isDark) { IsDarkMode = isDark; document.body.classList.toggle("dark-theme"); // Set cookie const d = new Date(); d.setTime(d.getTime() + (365 * 24 * 60 * 60 * 1000)); let expires = "expires=" + d.toUTCString(); document.cookie = "IsDarkMode" + "=" + IsDarkMode + ";" + expires + ";path=/"; IsDarkMode ? ga('event', 'te_darkmode_on') : ga('event', 'te_darkmode_off'); window.location.reload(); } } document.addEventListener('DOMContentLoaded', function () { let checkbox = document.getElementById("flexSwitchCheckChecked"); let sundiv = document.getElementsByClassName("form-check-label-sun")[0]; let moondiv = document.getElementsByClassName("form-check-label-moon")[0]; if (IsDarkMode) { sundiv.classList.add("d-none"); moondiv.classList.remove("d-none"); } else { moondiv.classList.add("d-none"); sundiv.classList.remove("d-none"); } checkbox.checked = IsDarkMode; }); document.getElementById("flexSwitchCheckChecked").addEventListener("change", function () { SetTheme(!IsDarkMode) }); </script> </div> </div> <div class="offcanvas offcanvas-start" tabindex="-1" id="tesidemenu" aria-labelledby="tesidemenuoptions"> <div class="offcanvas-header"> <h5 class="offcanvas-title" id="offcanvasWithBothOptionsLabel"></h5> <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button> </div> <div class="offcanvas-body"> <div class="row navbar-nav-scroll" style="--bs-scroll-height: 95vh;"> <div class="accordion" id="accordionNavbar"> <div class="accordion-item"> <div class="accordion-header menu-main-option"><a class="nav-link accordion-button navmenu-mobile-item" href="/calendar" target="_self"><i class="bi bi-calendar3 me-2"></i>Calendar</a></div> </div> <div class="accordion-item"> <div class="accordion-header menu-main-option"><a class="nav-link accordion-button navmenu-mobile-item" href="/stream" target="_self"><i class="bi bi-layout-text-sidebar me-2"></i>News</a></div> </div> <div class="accordion-item"> <div class="accordion-header menu-main-option d-flex align-items-center"> <button class="accordion-button navmenu-mobile-item collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseMarkets" aria-expanded="false" aria-controls="collapseTwo"> <i class="bi bi-arrow-down-up me-2"></i>Markets <i class="bi bi-caret-up-fill ms-auto caret-toggle"></i> </button> </div> <div id="collapseMarkets" class="accordion-collapse collapse show" data-bs-parent="#accordionNavbar"> <div class="accordion-body mobile-accordion-body"> <ul class="nav navbar-nav navbarMobile"> <li><a class="navmobile-link nav-link" href="/currencies" target="_self">Currencies</a></li> <li><a class="navmobile-link nav-link" href="/stocks" target="_self">Stocks</a></li> <li><a class="navmobile-link nav-link" href="/commodities" target="_self">Commodities</a></li> <li><a class="navmobile-link nav-link" href="/bonds" target="_self">Bonds</a></li> <li><a class="navmobile-link nav-link" href="/crypto" target="_self">Crypto</a></li> <li><a class="navmobile-link nav-link" href="/earnings" target="_self">Earnings</a></li> <li><a class="navmobile-link nav-link" href="/holidays" target="_self">Holidays</a></li> </ul> </div> </div> </div> <div class="accordion-item"> <div class="accordion-header menu-main-option d-flex align-items-center"> <button class="accordion-button navmenu-mobile-item collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseCountries" aria-expanded="false" aria-controls="collapseTwo"> <i class="bi bi-globe me-2"></i>Countries<i class="bi bi-caret-down-fill ms-auto caret-toggle"></i> </button> </div> <div id="collapseCountries" class="accordion-collapse collapse" data-bs-parent="#accordionNavbar"> <div class="accordion-body mobile-accordion-body"> <ul class="nav navbar-nav navbarMobile"> <li><a class="navmobile-link nav-link" href="/united-states/indicators" target="_self">United States</a></li> <li><a class="navmobile-link nav-link" href="/united-kingdom/indicators" target="_self">United Kingdom</a></li> <li><a class="navmobile-link nav-link" href="/euro-area/indicators" target="_self">Euro Area</a></li> <li><a class="navmobile-link nav-link" href="/australia/indicators" target="_self">Australia</a></li> <li><a class="navmobile-link nav-link" href="/canada/indicators" target="_self">Canada</a></li> <li><a class="navmobile-link nav-link" href="/japan/indicators" target="_self">Japan</a></li> <li><a class="navmobile-link nav-link" href="/china/indicators" target="_self">China</a></li> <li><a class="navmobile-link nav-link" href="/brazil/indicators" target="_self">Brazil</a></li> <li><a class="navmobile-link nav-link" href="/russia/indicators" target="_self">Russia</a></li> <li><a class="navmobile-link nav-link" href="/india/indicators" target="_self">India</a></li> <li><a class='navmobile-link nav-link' href="/countries" target="_self"><i class="bi bi-plus-square me-2"></i>More Countries</a></li> </ul> </div> </div> </div> <div class="accordion-item"> <div class="accordion-header menu-main-option d-flex align-items-center"> <button class="accordion-button navmenu-mobile-item collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseIndicators" aria-expanded="false" aria-controls="collapseTwo"> <i class="bi bi-bar-chart-fill me-2"></i>Indicators <i class="bi bi-caret-down-fill ms-auto caret-toggle"></i> </button> </div> <div id="collapseIndicators" class="accordion-collapse collapse" data-bs-parent="#accordionNavbar"> <div class="accordion-body mobile-accordion-body"> <ul class="nav navbar-nav navbarMobile"> <li><a class="navmobile-link nav-link" href="/country-list/interest-rate" target="_self">Interest Rate</a></li> <li><a class="navmobile-link nav-link" href="/country-list/inflation-rate" target="_self">Inflation Rate</a></li> <li><a class="navmobile-link nav-link" href="/country-list/unemployment-rate" target="_self">Unemployment Rate</a></li> <li><a class="navmobile-link nav-link" href="/country-list/gdp-growth-rate" target="_self">GDP Growth</a></li> <li><a class="navmobile-link nav-link" href="/country-list/gdp-per-capita" target="_self">GDP per Capita</a></li> <li><a class="navmobile-link nav-link" href="/country-list/current-account-to-gdp" target="_self">Current Account</a></li> <li><a class="navmobile-link nav-link" href="/country-list/gold-reserves" target="_self">Gold Reserves</a></li> <li><a class="navmobile-link nav-link" href="/country-list/government-debt-to-gdp" target="_self">Government Debt</a></li> <li><a class="navmobile-link nav-link" href="/country-list/crude-oil-production" target="_self">Crude Oil Production</a></li> <li><a class="navmobile-link nav-link" href="/country-list/gasoline-prices" target="_self">Gasoline Prices</a></li> <li><a class="navmobile-link nav-link" href="/country-list/rating" target="_self">Credit Rating</a></li> <li><a class='navmobile-link nav-link' href="/indicators" target="_self"><i class="bi bi-plus-square me-2"></i>More Indicators</a></li> </ul> </div> </div> </div> <div class="accordion-item"> <div class="accordion-header menu-main-option d-flex align-items-center"> <button class="accordion-button navmenu-mobile-item collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseForecasts" aria-expanded="false" aria-controls="collapseTwo"> <i class="bi bi-graph-down-arrow me-2"></i>Forecasts <i class="bi bi-caret-down-fill ms-auto caret-toggle"></i> </button> </div> <div id="collapseForecasts" class="accordion-collapse collapse" data-bs-parent="#accordionNavbar"> <div class="accordion-body mobile-accordion-body"> <ul class="nav navbar-nav navbarMobile"> <li class="d-block d-sm-none"><a class="navmobile-link nav-link" href="/indicators?g=forecast" target="_self">Markets & Indicators</a></li> <li class="d-block d-sm-none"><a class="navmobile-link nav-link" href="/forecasts" target="_self">Countries</a></li> <li class="d-none d-sm-block"><a class='navmobile-link nav-link' href="/forecasts">Countries</a></li> <li class="d-none d-sm-block"><a class='navmobile-link nav-link' href="/indicators?g=forecast">Indicators</a></li> <li class="d-none d-sm-block"><a class='navmobile-link nav-link' href="/forecast/currency">Currencies</a></li> <li class="d-none d-sm-block"><a class='navmobile-link nav-link' href="/forecast/stock-market">Stocks</a></li> <li class="d-none d-sm-block"><a class='navmobile-link nav-link' href="/forecast/commodity">Commodities</a></li> <li class="d-none d-sm-block"><a class='navmobile-link nav-link' href="/forecast/government-bond-10y">Bonds</a></li> <li class="d-none d-sm-block"><a class='navmobile-link nav-link' href="/forecast/crypto">Crypto</a></li> </ul> </div> </div> </div> <div class="accordion-item"> <div class="accordion-header menu-main-option d-flex align-items-center"> <button class="accordion-button navmenu-mobile-item collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseSolutions" aria-expanded="false" aria-controls="collapseTwo"> <i class="bi bi-code-square me-2"></i>Solutions <i class="bi bi-caret-down-fill ms-auto caret-toggle"></i> </button> </div> <div id="collapseSolutions" class="accordion-collapse collapse" data-bs-parent="#accordionNavbar"> <div class="accordion-body mobile-accordion-body"> <ul class="nav navbar-nav navbarMobile"> <li><a class="navmobile-link nav-link" href="/analytics/features.aspx" title="Register">Data Subscriptions</a></li> <li><a class="navmobile-link nav-link" href="/api/" title="Register">API Access</a></li> <li><a class="navmobile-link nav-link" href="/analytics/pricing.aspx?source=nav">Pricing</a></li> </ul> </div> </div> </div> <div class="accordion-item"> <div class="accordion-header menu-main-option d-flex align-items-center"> <button class="accordion-button navmenu-mobile-item collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseApps" aria-expanded="false" aria-controls="collapseTwo"> <i class="bi bi-phone me-2"></i>Apps <i class="bi bi-caret-down-fill ms-auto caret-toggle"></i> </button> </div> <div id="collapseApps" class="accordion-collapse collapse" data-bs-parent="#accordionNavbar"> <div class="accordion-body mobile-accordion-body"> <ul class="nav navbar-nav navbarMobile"> <li><a class="navmobile-link nav-link" href="https://itunes.apple.com/us/app/trading-economics/id1142178921?mt=8" target="_self">App Store</a></li> <li><a class="navmobile-link nav-link" href="https://play.google.com/store/apps/details?id=com.tradingeconomics.calendar" target="_self">Google Play</a></li> <li><a class="navmobile-link nav-link" href="https://www.twitter.com/teconomics" target="_self">Twitter</a></li> </ul> </div> </div> </div> <div class="accordion-item"> <div class="accordion-header menu-main-option d-flex align-items-center"> <button class="accordion-button navmenu-mobile-item collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseMore" aria-expanded="false" aria-controls="collapseTwo"> <i class="bi bi-question-circle me-2"></i>About <i class="bi bi-caret-down-fill ms-auto caret-toggle"></i> </button> </div> <div id="collapseMore" class="accordion-collapse collapse" data-bs-parent="#accordionNavbar"> <div class="accordion-body mobile-accordion-body"> <ul class="nav navbar-nav navbarMobile"> <li><a class="navmobile-link nav-link" href="/api/customers.aspx" target="_self">Customers</a></li> <li><a class="navmobile-link nav-link" href="/investors.aspx" target="_self">Investors</a></li> <li><a class="navmobile-link nav-link" href="/careers.aspx" target="_self">Careers</a></li> <li><a class="navmobile-link nav-link" href="/about-te.aspx" target="_self">About us</a></li> <li><a class="navmobile-link nav-link" href="/contact.aspx" target="_self">Contact</a></li> </ul> </div> </div> </div> <div class="accordion-item d-block d-md-none" style="border: none"> <div class="accordion-header menu-main-option accordion-last-item" style="padding: 30px 0px !important;"></div> </div> </div> </div> </div> </div> </div> </nav> <script> document.addEventListener('DOMContentLoaded', function () { let accordionHeaders = document.querySelectorAll('.menu-main-option'); accordionHeaders.forEach(function (header) { header.addEventListener('click', function () { let caretIcon = header.querySelector('.caret-toggle'); let allCaretIcons = document.querySelectorAll('.menu-main-option .caret-toggle'); allCaretIcons.forEach(function (icon) { if (icon !== caretIcon) { icon.classList.remove('bi-caret-up-fill'); icon.classList.add('bi-caret-down-fill'); } }); caretIcon.classList.toggle('bi-caret-down-fill'); caretIcon.classList.toggle('bi-caret-up-fill'); }); }); }); </script> <div class="container"> <div class="row"> <div class='col-xl-8 col-lg-8' role="main"> <style>.te-title-footer {border: 1px solid #dddd;padding:10px; background-color: #f5f5f5;font-size: 16px;}.te-description-footer {border: 1px solid #dddd;padding:20px; margin-top: 20px;}</style> <style>body {padding-top: 140px;}.pagemenu {top: 50px;}.pagetabs {top: 90px;}.navbar-default .navbar-nav>.active>a{ background-color: whitesmoke;} .navbar .navbar-expand-lg>.active, .navbar .navbar-expand-lg>.active>a{background-color: #f5f5f5;} .navbar .navbar-expand-lg>li:hover, .navbar .navbar-expand-lg>li:hover>a{background-color: #fff;} .nav-link:focus{color: #000;}</style> <style>.title-notes {padding-left: 10px;font-size: 80%;padding-top: 3px;font-weight:lighter;}</style> <div id="ctl00_ContentPlaceHolder1_ctl00_PageMenuUC1_pageMenu"> <div class="pagemenu"> <div class="container"> <div class="row"> <div class='col-xl-12' style="display: flex; flex-direction: row"> <h1 style='width: 100%'><span class="title-indicator">Goldman Sachs | GS</span><span class='title-notes hidden-sm hidden-md hidden-xs'>Stock Price | Live Quote | Historical Chart</span></h1> </div> </div> </div> </div> </div> <div id="ctl00_ContentPlaceHolder1_ctl00_PageMenuUC1_pageTabs" class="pagetabs"> <div class="container "> <ul id="pagemenutabs" class="nav nav-tabs " style="border-bottom: none;"> <li class="nav-item scroll-top-on-click"> <a class="nav-link active" href="#historical" data-bs-toggle='tab' data-bs-target='#historical' class="scroll-top-on-click" > Chart </a> </li> <li class="nav-item "> <a class="nav-link " href="#quotes" data-bs-toggle='tab' class="page-scroll-adjusted" > Quotes </a> </li> <li class="nav-item d-none"> <a class="nav-link " href="#financialsList" data-bs-toggle='tab' class="page-scroll-adjusted" > Financials </a> </li> <li class="nav-item scroll-top-on-click"> <a class="nav-link " href="#alerts" data-bs-toggle='tab' data-bs-target='#alerts' class="scroll-top-on-click" > Alerts </a> </li> </ul> </div> </div> <div class="tab-content"> <div role="tabpanel" class="tab-pane active show" id="historical"></div> <div role="tabpanel" class="tab-pane" id="alerts"><div id="alerts-chart" style="padding: 5px 15px 5px 15px;display: inline-block; width: 100%;"></div></div> </div> <div id="ctl00_ContentPlaceHolder1_ctl00_panel_default" class="market-panel"> <style> .market-header-values { padding-top: 5px; margin-left: 0px; margin-right: 0px; margin-bottom: 10px; } .te-market-header { padding-top: 5px; } .market-header-value { border: solid thin #ddd; background-color: #fafafa; white-space: nowrap; margin-left: -2px; margin-right: -2px; } .recommendation-img { max-width: 560px; height: auto; } @media only screen and (max-width:560px) { .recommendation-img{ max-width: 350px; } } </style> <div class="market-header-values row" style="display: block;"> <div class="market-header-value col-md-3 col-4"> <div class="te-market-header"> Stock Price </div> <span id="market_last">603.08</span> </div> <div class="market-header-value col-md-3 col-4" style="display: inline-block;"> <div class="te-market-header"> Daily Change </div> <div class="te-market-changes-spacing d-flex align-items-center"> <span id="market_daily_chg" class="d-none d-sm-block" style="color: #8ecf61;"> 6.62 </span> <span id="market_chg_arrow" class="market-positive-image"></span> <span id="market_daily_Pchg" style="color: #8ecf61;"> 1.11% </span> </div> </div> <div class="market-header-value col-md-2 col-4" style="display: inline-block;"> <div class="te-market-header"> Monthly </div> <span id="market_Ychg_arrow" class="market-positive-image"></span> <span style="color: #8ecf61;"> 16.60% </span> </div> <div class="market-header-value col-md-2 col-4" > <div class="te-market-header"> Yearly </div> <span id="market_Ychg_arrow" class="market-positive-image"></span> <span style="color: #8ecf61;"> 77.82% </span> </div> <div class="market-header-value col-md-2 col-4" > <div class="te-market-header"> Q4 Forecast </div> <span>520.60</span> </div> </div> </div> <style>.chart-link {cursor: pointer; }.te-chart {border: solid 1px #f5f5f5;} .te-chart-nav { padding: 10px 0px; background-color: #f5f5f5;border: solid 1px #ddd;}</style> <div style="min-height: 5px;"></div> <div id="UpdatePanelChart"> <div id="chart"><div id="trading_chart" style="position: relative; height: 600px"></div></div> </div> <div id="quotes" class="table-responsive markets2 market-border" style=""> <br /><br /> <div class="card table-minimize" data-minimizer-height="700" style="position: relative; overflow: hidden; margin-top: 20px;"> <table class="table table-hover sortable-theme-minimal table-heatmap table-striped" data-sortable=""> <thead> <tr> <th style="cursor: pointer;">Peers</th> <th style="cursor: pointer;">Price</th> <th style="text-align: right;"></th> <th class="d-none d-sm-table-cell" style="text-align: right; cursor: pointer;">Chg</th> <th style="text-align: center; cursor: pointer;" data-heatmap="1" data-heatmap-limit="10">Day</th> <th class="d-none d-sm-table-cell" data-heatmap="1" data-heatmap-limit="100" style="text-align: right; cursor: pointer;">Year</th> <th style="text-align: right; cursor: pointer;" class="d-none d-md-table-cell">Date</th> </tr> </thead> <tr data-decimals="2" data-symbol="8604:JP" > <td> <a href="/8604:jp"> Nomura </a> </td> <td id="p">933.70 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">3.70 </td> <td id="pch" style="text-align: right;">0.40%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">53.22%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/25 </td> </tr> <tr data-decimals="2" data-symbol="ALLY:US" > <td> <a href="/ally:us"> Ally Financial </a> </td> <td id="p">37.85 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">0.66 </td> <td id="pch" style="text-align: right;">1.77%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">39.10%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="APO:US" > <td> <a href="/apo:us"> Apollo Global Management </a> </td> <td id="p">167.56 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">2.54 </td> <td id="pch" style="text-align: right;">1.54%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">83.85%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="AXP:US" data-subscribe='AXP:US'> <td> <a href="/axp:us"> American Express </a> </td> <td id="p">301.46 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">8.84 </td> <td id="pch" style="text-align: right;">3.02%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">83.35%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="BAC:US" data-subscribe='BAC:US'> <td> <a href="/bac:us"> Bank Of America </a> </td> <td id="p">47.28 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">0.29 </td> <td id="pch" style="text-align: right;">0.62%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">59.95%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/25 </td> </tr> <tr data-decimals="2" data-symbol="BAER:VX" > <td> <a href="/baer:vx"> Julius Baer Gruppe </a> </td> <td id="p">56.30 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">0.72 </td> <td id="pch" style="text-align: right;">1.30%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">19.25%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="BARC:LN" data-subscribe='BARC:LN'> <td> <a href="/barc:ln"> Barclays </a> </td> <td id="p">261.00 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">3.80 </td> <td id="pch" style="text-align: right;">1.48%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">86.16%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/25 </td> </tr> <tr data-decimals="2" data-symbol="BEN:US" data-subscribe='BEN:US'> <td> <a href="/ben:us"> Franklin Resources </a> </td> <td id="p">21.99 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">0.28 </td> <td id="pch" style="text-align: right;">1.27%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">-7.70%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="BK:US" data-subscribe='BK:US'> <td> <a href="/bk:us"> Bank Of New York Mellon </a> </td> <td id="p">80.20 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">1.30 </td> <td id="pch" style="text-align: right;">1.65%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">69.37%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="BLK:US" data-subscribe='BLK:US'> <td> <a href="/blk:us"> BlackRock </a> </td> <td id="p">1,037.25 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">8.63 </td> <td id="pch" style="text-align: right;">0.84%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">42.07%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="BNP:FP" data-subscribe='BNP:FP'> <td> <a href="/bnp:fp"> BNP Paribas </a> </td> <td id="p">57.15 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">0.23 </td> <td id="pch" style="text-align: right;">0.40%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">1.29%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/25 </td> </tr> <tr data-decimals="2" data-symbol="BX:US" data-subscribe='BX:US'> <td> <a href="/bx:us"> Blackstone </a> </td> <td id="p">199.08 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">4.89 </td> <td id="pch" style="text-align: right;">2.52%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">86.06%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="C:US" data-subscribe='C:US'> <td> <a href="/c:us"> Citigroup </a> </td> <td id="p">69.87 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">0.87 </td> <td id="pch" style="text-align: right;">1.26%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">54.48%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="CFG:US" data-subscribe='CFG:US'> <td> <a href="/cfg:us"> Citizens Financial </a> </td> <td id="p">47.64 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">0.83 </td> <td id="pch" style="text-align: right;">1.76%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">77.30%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="CG:US" > <td> <a href="/cg:us"> Carlyle </a> </td> <td id="p">53.65 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">0.86 </td> <td id="pch" style="text-align: right;">1.63%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">64.72%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="CMA:US" data-subscribe='CMA:US'> <td> <a href="/cma:us"> Comerica </a> </td> <td id="p">71.08 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">2.09 </td> <td id="pch" style="text-align: right;">3.03%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">62.43%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="COF:US" data-subscribe='COF:US'> <td> <a href="/cof:us"> Capital One Financial </a> </td> <td id="p">187.36 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">5.06 </td> <td id="pch" style="text-align: right;">2.77%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">75.80%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="DB:US" > <td> <a href="/db:us"> Deutsche Bank </a> </td> <td id="p">16.20 </td> <td id="triangle"> <span class="market-negative-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">-0.60 </td> <td id="pch" style="text-align: right;">-3.57%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">33.33%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="DBK:GR" data-subscribe='DBK:GR'> <td> <a href="/dbk:gr"> Deutsche Bank </a> </td> <td id="p">15.74 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">0.19 </td> <td id="pch" style="text-align: right;">1.22%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">42.44%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/25 </td> </tr> <tr data-decimals="2" data-symbol="DFS:US" data-subscribe='DFS:US'> <td> <a href="/dfs:us"> Discover Financial Services </a> </td> <td id="p">179.29 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">4.49 </td> <td id="pch" style="text-align: right;">2.57%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">106.63%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="EVR:US" > <td> <a href="/evr:us"> Evercore Partners </a> </td> <td id="p">311.35 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">1.82 </td> <td id="pch" style="text-align: right;">0.59%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">111.95%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="FITB:US" data-subscribe='FITB:US'> <td> <a href="/fitb:us"> Fifth Third Bancorp </a> </td> <td id="p">47.90 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">0.78 </td> <td id="pch" style="text-align: right;">1.66%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">75.78%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="GS:US" data-subscribe='GS:US'> <td> <a href="/gs:us"> Goldman Sachs </a> </td> <td id="p">603.08 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">6.62 </td> <td id="pch" style="text-align: right;">1.11%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">77.82%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="HBAN:US" data-subscribe='HBAN:US'> <td> <a href="/hban:us"> Huntington Bancshares </a> </td> <td id="p">17.89 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">0.27 </td> <td id="pch" style="text-align: right;">1.53%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">64.43%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="HSBA:LN" data-subscribe='HSBA:LN'> <td> <a href="/hsba:ln"> HSBC Holdings </a> </td> <td id="p">729.40 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">5.00 </td> <td id="pch" style="text-align: right;">0.69%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">20.09%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/25 </td> </tr> <tr data-decimals="2" data-symbol="INGA:NA" data-subscribe='INGA:NA'> <td> <a href="/inga:na"> ING </a> </td> <td id="p">14.62 </td> <td id="triangle"> <span class="market-negative-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">-0.03 </td> <td id="pch" style="text-align: right;">-0.19%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">15.59%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/25 </td> </tr> <tr data-decimals="2" data-symbol="IVZ:US" data-subscribe='IVZ:US'> <td> <a href="/ivz:us"> Invesco </a> </td> <td id="p">17.75 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">0.09 </td> <td id="pch" style="text-align: right;">0.48%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">28.53%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="JPM:US" data-subscribe='JPM:US'> <td> <a href="/jpm:us"> JPMorgan </a> </td> <td id="p">248.86 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">3.98 </td> <td id="pch" style="text-align: right;">1.63%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">62.08%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="KEY:US" data-subscribe='KEY:US'> <td> <a href="/key:us"> KeyCorp </a> </td> <td id="p">19.61 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">0.37 </td> <td id="pch" style="text-align: right;">1.90%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">62.83%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="KKR:US" > <td> <a href="/kkr:us"> KKR </a> </td> <td id="p">158.63 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">0.96 </td> <td id="pch" style="text-align: right;">0.61%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">129.23%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="LAZ:US" > <td> <a href="/laz:us"> Lazard </a> </td> <td id="p">57.70 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">0.58 </td> <td id="pch" style="text-align: right;">1.02%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">109.29%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="MC:US" > <td> <a href="/mc:us"> Moelis & Company </a> </td> <td id="p">75.05 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">0.41 </td> <td id="pch" style="text-align: right;">0.55%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">66.89%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="MS:US" data-subscribe='MS:US'> <td> <a href="/ms:us"> Morgan Stanley </a> </td> <td id="p">134.09 </td> <td id="triangle"> <span class="market-negative-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">-0.35 </td> <td id="pch" style="text-align: right;">-0.26%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">70.49%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="MTB:US" data-subscribe='MTB:US'> <td> <a href="/mtb:us"> M&T Bank </a> </td> <td id="p">221.48 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">4.59 </td> <td id="pch" style="text-align: right;">2.11%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">76.31%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="NTRS:US" data-subscribe='NTRS:US'> <td> <a href="/ntrs:us"> Northern </a> </td> <td id="p">109.56 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">0.60 </td> <td id="pch" style="text-align: right;">0.55%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">43.47%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="PNC:US" data-subscribe='PNC:US'> <td> <a href="/pnc:us"> PNC </a> </td> <td id="p">209.15 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">4.46 </td> <td id="pch" style="text-align: right;">2.17%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">62.51%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="RF:US" data-subscribe='RF:US'> <td> <a href="/rf:us"> Regions Financial </a> </td> <td id="p">27.32 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">0.60 </td> <td id="pch" style="text-align: right;">2.25%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">70.19%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="RJF:US" data-subscribe='RJF:US'> <td> <a href="/rjf:us"> Raymond James Financial </a> </td> <td id="p">165.39 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">1.46 </td> <td id="pch" style="text-align: right;">0.89%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">56.81%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="SCHW:US" data-subscribe='SCHW:US'> <td> <a href="/schw:us"> Charles Schwab </a> </td> <td id="p">80.72 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">0.45 </td> <td id="pch" style="text-align: right;">0.56%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">43.04%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="STT:US" data-subscribe='STT:US'> <td> <a href="/stt:us"> State Street </a> </td> <td id="p">97.53 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">1.20 </td> <td id="pch" style="text-align: right;">1.24%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">38.57%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="TROW:US" data-subscribe='TROW:US'> <td> <a href="/trow:us"> T. Rowe Price </a> </td> <td id="p">119.95 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">1.76 </td> <td id="pch" style="text-align: right;">1.48%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">22.04%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="UBSG:VX" data-subscribe='UBSG:VX'> <td> <a href="/ubsg:vx"> UBS </a> </td> <td id="p">28.59 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">0.29 </td> <td id="pch" style="text-align: right;">1.02%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">24.25%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/25 </td> </tr> <tr data-decimals="2" data-symbol="USB:US" data-subscribe='USB:US'> <td> <a href="/usb:us"> US Bancorp </a> </td> <td id="p">52.49 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">1.06 </td> <td id="pch" style="text-align: right;">2.06%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">41.10%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="V:US" data-subscribe='V:US'> <td> <a href="/v:us"> Visa </a> </td> <td id="p">309.76 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">0.14 </td> <td id="pch" style="text-align: right;">0.05%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">21.81%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> <tr data-decimals="2" data-symbol="WFC:US" data-subscribe='WFC:US'> <td> <a href="/wfc:us"> Wells Fargo </a> </td> <td id="p">75.98 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td class="d-none d-sm-table-cell" id="nch" data-no-triangle="true" style="text-align: right;">1.13 </td> <td id="pch" style="text-align: right;">1.51%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">77.03%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/22 </td> </tr> </table> </div><br /> <div class="card"> <table class="table table-hover sortable-theme-minimal table-heatmap table-striped" data-sortable=""> <thead> <tr> <th style="cursor: pointer;">Indexes</th> <th style="cursor: pointer;">Price</th> <th></th> <th></th> <th data-heatmap="1" data-heatmap-limit="10" style="text-align: right; cursor: pointer;">Day</th> <th class="d-none d-sm-table-cell" data-heatmap="1" data-heatmap-limit="30" style="text-align: right; cursor: pointer;">Year</th> <th style="text-align: right; cursor: pointer;" class="d-none d-md-table-cell">Date</th> </tr> </thead> <tr data-decimals="2" data-symbol="SPX:IND" data-subscribe="SPX:IND"> <td> <a href="/united-states/stock-market">US500 </a> </td> <td id="p">5994 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td id="nch" data-no-triangle="true" style="text-align: right;">20.64 </td> <td id="pch" style="text-align: right;">0.35%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">31.73%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/25 </td> </tr> <tr data-decimals="0" data-symbol="INDU:IND" data-subscribe="INDU:IND"> <td> <a href="/indu:ind">US30 </a> </td> <td id="p">44527 </td> <td id="triangle"> <span class="market-positive-image"></span> </td> <td id="nch" data-no-triangle="true" style="text-align: right;">426.16 </td> <td id="pch" style="text-align: right;">0.97%</td> <td class="d-none d-sm-table-cell" style="text-align: right;">26.02%</td> <td id="date" style="text-align: right;" class="d-none d-md-table-cell">Nov/25 </td> </tr> </table></div> </div> <div id="ctl00_ContentPlaceHolder1_ctl00_PanelDescription"> <div class="card card-body"> <div class='card-body' style='text-align: justify'><h2>Goldman Sachs traded at $603.08 this Friday November 22nd, increasing $6.62 or 1.11 percent since the previous trading session. Looking back, over the last four weeks, Goldman Sachs gained 16.60 percent. Over the last 12 months, its price rose by 77.82 percent. Looking ahead, we forecast Goldman Sachs to be priced at 520.60 by the end of this quarter and at 501.62 in one year, according to Trading Economics global macro models projections and analysts expectations. </h2></div> <div class='card-footer' style='text-align: justify'>The Goldman Sachs Group, Inc. is a global financial institution that delivers a range of financial services across investment banking, securities, investment management and consumer banking to a diversified client base that includes corporations, financial institutions, governments and individuals. The Company operates in four business segments: Investment Banking, Global Markets, Asset Management, and Consumer & Wealth Management. The Investment Banking segment consists of financial advisory, underwriting and corporate lending activities. The Global Markets segment consists of fixed income, currency and commodities (FICC) and equities, and intermediation and financing activities. The Asset Management segment provides investment services to help clients preserve and grow their financial assets. Consumer & Wealth Management segment provides a range of wealth advisory and banking services, including financial planning, investment management, deposit taking and lending.</div> </div> </div> <br /> <div id="financialsList" class='card'> <div class='card-header' style="padding-left: 30px;">Financials </div> <div class='card-body row'> <div class="col-md-6"> <a href="/gs:us:assets ">Assets </a> </div> <div class="col-md-6"> <a href="/gs:us:cash-and-equivalent ">Cash and Equivalent </a> </div> <div class="col-md-6"> <a href="/gs:us:cost-of-sales ">Cost of Sales </a> </div> <div class="col-md-6"> <a href="/gs:us:current-assets ">Current Assets </a> </div> <div class="col-md-6"> <a href="/gs:us:current-liabilities ">Current Liabilities </a> </div> <div class="col-md-6"> <a href="/gs:us:debt ">Debt </a> </div> <div class="col-md-6"> <a href="/gs:us:dy ">Dividend Yield </a> </div> <div class="col-md-6"> <a href="/gs:us:ebit ">EBIT </a> </div> <div class="col-md-6"> <a href="/gs:us:ebitda ">EBITDA </a> </div> <div class="col-md-6"> <a href="/gs:us:employees ">Employees </a> </div> <div class="col-md-6"> <a href="/gs:us:eps ">EPS Earnings Per Share </a> </div> <div class="col-md-6"> <a href="/gs:us:equity-capital-and-reserves ">Equity Capital and Reserves </a> </div> <div class="col-md-6"> <a href="/gs:us:gross-profit-on-sales ">Gross Profit on Sales </a> </div> <div class="col-md-6"> <a href="/gs:us:interest-income ">Interest Income </a> </div> <div class="col-md-6"> <a href="/gs:us:loan-capital ">Loan Capital </a> </div> <div class="col-md-6"> <a href="/gs:us:market-capitalization ">Market Capitalization </a> </div> <div class="col-md-6"> <a href="/gs:us:net-income ">Net Income </a> </div> <div class="col-md-6"> <a href="/gs:us:operating-expenses ">Operating Expenses </a> </div> <div class="col-md-6"> <a href="/gs:us:operating-profit ">Operating Profit </a> </div> <div class="col-md-6"> <a href="/gs:us:ordinary-share-capital ">Ordinary Share Capital </a> </div> <div class="col-md-6"> <a href="/gs:us:pe ">PE Price to Earnings </a> </div> <div class="col-md-6"> <a href="/gs:us:pre-tax-profit ">Pre-Tax Profit </a> </div> <div class="col-md-6"> <a href="/gs:us:sales ">Sales Revenues </a> </div> <div class="col-md-6"> <a href="/gs:us:selling-and-administration-expenses ">Selling and Administration Expenses </a> </div> <div class="col-md-6"> <a href="/gs:us:trade-creditors ">Trade Creditors </a> </div> <div class="col-md-6"> <a href="/gs:us:trade-debtors ">Trade Debtors </a> </div> </div> </div> <br /> <br /> <br /> <style>.news-link {padding-bottom: 5px;}</style> <div id="ctl00_ContentPlaceHolder1_ctl01_DivArticles"> <div class="row"> <div id="ctl00_ContentPlaceHolder1_ctl01_tdRelatedNews" class="col-md-6"> <div class="card"> <div class="card-header">Related</div> <div class="card-body"> <div class="news-link"><a href='/united-states/government-bond-yield'>US 10-Year Yield Drops as Bessent Nominated for Treasury</a></div> <div class="news-link"><a href='/united-states/currency'>Dollar Falls as Trump Nominates Bessent for Treasury</a></div> <div class="news-link"><a href='/united-states/stock-market'>US Futures Rise to Begin Holiday-Shortened Week</a></div> <div class="news-link"><a href='/calendar?article=29275&g=top&importance=2&startdate=2024-11-22'>Week Ahead - Nov 25th</a></div> <div class="news-link"><a href='/united-states/michigan-inflation-expectations'>US Year-Ahead Inflation Expectations Unrevised at 2.6%</a></div> <div class="news-link"><a href='/united-states/consumer-confidence'>US Consumer Sentiment Revised Lower But Still Holds at 7-Month High</a></div> <div class="news-link"><a href='/united-states/services-pmi'>US Services Activity Soars: S&P Global</a></div> <div class="news-link"><a href='/united-states/composite-pmi'>US Private Sector Growth Picks Up to Over 2-1/2-Year High</a></div> <div class="news-link"><a href='/united-states/manufacturing-pmi'>US Manufacturing PMI Matches Forecasts: S&P Global</a></div> <div class="news-link"><a href='/united-states/30-year-mortgage-rate'>US 30-Year Mortgage Rate Rises to 4-Month High</a></div> <br /> <a id="ctl00_ContentPlaceHolder1_ctl01_moreNews" href="united-states/news"> <div class="btn-group btn-group-sm"> <button type="button" class="btn btn-outline-secondary"> <i class="bi bi-plus-lg"></i> </button> </div> </a> </div> </div> </div> <div class="col-md-6"> <div id="ctl00_ContentPlaceHolder1_ctl01_tdTopNews"> <div class="card"> <div class="card-header">Latest</div> <div class="card-body"> <div class="news-link"><a href='/italy/stock-market'>Italian Stocks Drop on Monday</a></div> <div class="news-link"><a href='/euro-area/currency'>Euro Edges Up</a></div> <div class="news-link"><a href='/spain/stock-market'>Spanish Stocks Open the Week Higher</a></div> <div class="news-link"><a href='/united-kingdom/stock-market'>UK Equities Start Week with Gains</a></div> <div class="news-link"><a href='/france/stock-market'>French Stocks Begin the Week Higher</a></div> <div class="news-link"><a href='/euro-area/stock-market'>European Shares Gain</a></div> <div class="news-link"><a href='/taiwan/retail-sales-annual'>Taiwan Retail Sales Tumble in October</a></div> <div class="news-link"><a href='/czech-republic/business-confidence'>Czech Business Mood at 5-Month High</a></div> <div class="news-link"><a href='/spain/producer-prices-change'>Spain Producer Prices Down for 20th Month</a></div> <div class="news-link"><a href='/hong-kong/stock-market'>Hang Seng Retreats for 3rd Session</a></div> <br /> <a id="ctl00_ContentPlaceHolder1_ctl01_moreTopNews" href="stream"> <div class="btn-group btn-group-sm"> <button type="button" class="btn btn-outline-secondary"> <i class="bi bi-plus-lg"></i> </button> </div> </a> </div> </div> </div> </div> </div> </div> <br /> <br /> </div> <div id="ctl00_rightSideMenu" class="col-xl-4 col-lg-4"> <style>#sidebar {padding-left: 2px; padding-right: 2px;} #sidebar .accordion-header{border-radius: 0;}</style> <div id="sidebar"> <div id="PanelAllMenus"> <style> #market-widget .nav {flex-wrap:nowrap;}#market-widget .nav>li>a {padding-left: 3px;padding-right: 3px;outline:none;} .market-widget-thead{font-size: 12px;}.market-widget-th-left{text-align: left;}.market-widget-th-center{text-align: center;}.market-widget-row{padding: 0px;}.market-widget-first{padding-left: 10px!important; max-width: 80px; overflow: hidden;}.market-widget-last{text-align: center;max-width: 70px; overflow: hidden;}.market-widget-change{text-align: left; min-width: 70px}.market-widget-pct{text-align: center;} @media only screen and (max-width: 380px) {#market-widget .nav > li > a {padding-left: 3px;padding-right: 3px;}} </style> <div id="ctl00_LeftSideMenuContainer1__ff4f7d4783150324_Panel1"> <div id="market-widget" class="card"> <ul class="nav nav-tabs " role="tablist" id="mainWidget"> <li role="presentation" class="nav-item"><a aria-current="page" href="#Commodity" class=" nav-link d-table-cell" role="tab" data-bs-toggle="tab">Commodity</a></li> <li role="presentation" class="nav-item"><a aria-current="page" href="#FX" class=" nav-link d-table-cell" role="tab" data-bs-toggle="tab">Forex</a></li> <li role="presentation" class="nav-item"><a aria-current="page" href="#Index" class="active nav-link d-table-cell" role="tab" data-bs-toggle="tab">Index</a></li> <li role="presentation" class="nav-item d-lg-none d-xl-block"><a aria-current="page" href="#Share" class=" nav-link d-table-cell" role="tab" data-bs-toggle="tab">Stock</a></li> <li role="presentation" class="nav-item"><a aria-current="page" href="#Bond" class=" nav-link d-table-cell" role="tab" data-bs-toggle="tab">Bond</a></li> <li role="presentation" class="nav-item"><a aria-current="page" href="#Crypto" class=" nav-link d-table-cell" role="tab" data-bs-toggle="tab">Crypto</a></li> </ul> <div class="tab-content" style="margin-bottom: -15px"> <input type="hidden" name="ctl00$LeftSideMenuContainer1$_ff4f7d4783150324$Repeater1$ctl00$group" id="ctl00_LeftSideMenuContainer1__ff4f7d4783150324_Repeater1_ctl00_group" value="Commodity" /> <div role="tabpanel" class="tab-pane fade show " id='Commodity'> <table class="table table-condensed" style="padding-bottom: -10px;"> <thead class="market-widget-thead" > <tr> <th> </th> <th style="text-align: center;">Actual</th> <th style="text-align: left;" class="d-lg-none d-xl-table-cell">Chg</th> <th style="text-align: center;">%Chg</th> </tr> </thead> <tbody> <tr class='datatable-row' data-symbol="CL1:COM" data-decimals="3"> <td class="datatable-item-first"> <a href="/commodity/crude-oil">Crude Oil</a> </td> <td id="p" class="market-widget-last"> 70.899 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.34 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.48% </td> </tr> <tr class='datatable-row-alternating' data-symbol="CO1:COM" data-decimals="3"> <td class="datatable-item-first"> <a href="/commodity/brent-crude-oil">Brent</a> </td> <td id="p" class="market-widget-last"> 74.888 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.28 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.38% </td> </tr> <tr class='datatable-row' data-symbol="NG1:COM" data-decimals="4"> <td class="datatable-item-first"> <a href="/commodity/natural-gas">Natural gas</a> </td> <td id="p" class="market-widget-last"> 3.3350 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.21 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 6.58% </td> </tr> <tr class='datatable-row-alternating' data-symbol="XB1:COM" data-decimals="4"> <td class="datatable-item-first"> <a href="/commodity/gasoline">Gasoline</a> </td> <td id="p" class="market-widget-last"> 2.0497 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.01 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.47% </td> </tr> <tr class='datatable-row' data-symbol="HO1:COM" data-decimals="4"> <td class="datatable-item-first"> <a href="/commodity/heating-oil">Heating Oil</a> </td> <td id="p" class="market-widget-last"> 2.2736 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.00 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.01% </td> </tr> <tr class='datatable-row-alternating' data-symbol="XAUUSD:CUR" data-decimals="2"> <td class="datatable-item-first"> <a href="/commodity/gold">Gold</a> </td> <td id="p" class="market-widget-last"> 2674.84 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 41.01 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -1.51% </td> </tr> <tr class='datatable-row' data-symbol="XAGUSD:CUR" data-decimals="3"> <td class="datatable-item-first"> <a href="/commodity/silver">Silver</a> </td> <td id="p" class="market-widget-last"> 30.844 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.50 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -1.59% </td> </tr> <tr class='datatable-row-alternating' data-symbol="HG1:COM" data-decimals="4"> <td class="datatable-item-first"> <a href="/commodity/copper">Copper</a> </td> <td id="p" class="market-widget-last"> 4.1081 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.03 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.84% </td> </tr> <tr class='datatable-row' data-symbol="S 1:COM" data-decimals="2"> <td class="datatable-item-first"> <a href="/commodity/soybeans">Soybeans</a> </td> <td id="p" class="market-widget-last"> 990.02 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 6.52 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.66% </td> </tr> <tr class='datatable-row-alternating' data-symbol="W 1:COM" data-decimals="2"> <td class="datatable-item-first"> <a href="/commodity/wheat">Wheat</a> </td> <td id="p" class="market-widget-last"> 539.81 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 4.44 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.82% </td> </tr> <tr class='datatable-row' data-symbol="XAL1:COM" data-decimals="2"> <td class="datatable-item-first"> <a href="/commodity/coal">Coal</a> </td> <td id="p" class="market-widget-last"> 141.25 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.25 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.18% </td> </tr> <tr class='datatable-row-alternating' data-symbol="JBP:COM" data-decimals="2"> <td class="datatable-item-first"> <a href="/commodity/steel">Steel</a> </td> <td id="p" class="market-widget-last"> 3299.00 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 7.00 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.21% </td> </tr> <tr class='datatable-row' data-symbol="SCO:COM" data-decimals="2"> <td class="datatable-item-first"> <a href="/commodity/iron-ore">Iron Ore</a> </td> <td id="p" class="market-widget-last"> 101.95 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.07 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.07% </td> </tr> <tr class='datatable-row-alternating' data-symbol="NGEU:COM" data-decimals="2"> <td class="datatable-item-first"> <a href="/commodity/eu-natural-gas">TTF Gas</a> </td> <td id="p" class="market-widget-last"> 47.52 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.62 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 1.33% </td> </tr> <tr class='datatable-row' data-symbol="LB1:COM" data-decimals="2"> <td class="datatable-item-first"> <a href="/commodity/lumber">Lumber</a> </td> <td id="p" class="market-widget-last"> 591.06 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 5.96 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -1.00% </td> </tr> </tbody> <tfoot> <tr> <td colspan="4" class="more-link"><a style="text-decoration: underline" aria-label = "Read more" href="/commodities">More</a> </td> </tr> </tfoot> </table> </div> <input type="hidden" name="ctl00$LeftSideMenuContainer1$_ff4f7d4783150324$Repeater1$ctl01$group" id="ctl00_LeftSideMenuContainer1__ff4f7d4783150324_Repeater1_ctl01_group" value="Currency" /> <div role="tabpanel" class="tab-pane fade show " id='FX'> <table class="table table-condensed" style="padding-bottom: -10px;"> <thead class="market-widget-thead" > <tr> <th> </th> <th style="text-align: center;">Actual</th> <th style="text-align: left;" class="d-lg-none d-xl-table-cell">Chg</th> <th style="text-align: center;">%Chg</th> </tr> </thead> <tbody> <tr class='datatable-row' data-symbol="EURUSD:CUR" data-decimals="5"> <td class="datatable-item-first"> <a href="/euro-area/currency">EURUSD</a> </td> <td id="p" class="market-widget-last"> 1.04790 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.0062 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.59% </td> </tr> <tr class='datatable-row-alternating' data-symbol="GBPUSD:CUR" data-decimals="5"> <td class="datatable-item-first"> <a href="/united-kingdom/currency">GBPUSD</a> </td> <td id="p" class="market-widget-last"> 1.25743 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.0042 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.33% </td> </tr> <tr class='datatable-row' data-symbol="AUDUSD:CUR" data-decimals="5"> <td class="datatable-item-first"> <a href="/australia/currency">AUDUSD</a> </td> <td id="p" class="market-widget-last"> 0.65124 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.0012 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.19% </td> </tr> <tr class='datatable-row-alternating' data-symbol="NZDUSD:CUR" data-decimals="5"> <td class="datatable-item-first"> <a href="/new-zealand/currency">NZDUSD</a> </td> <td id="p" class="market-widget-last"> 0.58473 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.0016 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.27% </td> </tr> <tr class='datatable-row' data-symbol="USDJPY:CUR" data-decimals="3"> <td class="datatable-item-first"> <a href="/japan/currency">USDJPY</a> </td> <td id="p" class="market-widget-last"> 154.562 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.1480 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.10% </td> </tr> <tr class='datatable-row-alternating' data-symbol="USDCNY:CUR" data-decimals="5"> <td class="datatable-item-first"> <a href="/china/currency">USDCNY</a> </td> <td id="p" class="market-widget-last"> 7.25363 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.0047 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.06% </td> </tr> <tr class='datatable-row' data-symbol="USDCHF:CUR" data-decimals="5"> <td class="datatable-item-first"> <a href="/switzerland/currency">USDCHF</a> </td> <td id="p" class="market-widget-last"> 0.89005 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.0039 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.44% </td> </tr> <tr class='datatable-row-alternating' data-symbol="USDCAD:CUR" data-decimals="5"> <td class="datatable-item-first"> <a href="/canada/currency">USDCAD</a> </td> <td id="p" class="market-widget-last"> 1.39563 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.0020 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.14% </td> </tr> <tr class='datatable-row' data-symbol="USDMXN:CUR" data-decimals="4"> <td class="datatable-item-first"> <a href="/mexico/currency">USDMXN</a> </td> <td id="p" class="market-widget-last"> 20.3842 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.0518 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.25% </td> </tr> <tr class='datatable-row-alternating' data-symbol="USDINR:CUR" data-decimals="4"> <td class="datatable-item-first"> <a href="/india/currency">USDINR</a> </td> <td id="p" class="market-widget-last"> 84.2477 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.1783 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.21% </td> </tr> <tr class='datatable-row' data-symbol="USDBRL:CUR" data-decimals="5"> <td class="datatable-item-first"> <a href="/brazil/currency">USDBRL</a> </td> <td id="p" class="market-widget-last"> 5.80100 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.0022 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.04% </td> </tr> <tr class='datatable-row-alternating' data-symbol="USDRUB:CUR" data-decimals="4"> <td class="datatable-item-first"> <a href="/russia/currency">USDRUB</a> </td> <td id="p" class="market-widget-last"> 103.9485 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.4015 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.38% </td> </tr> <tr class='datatable-row' data-symbol="USDKRW:CUR" data-decimals="2"> <td class="datatable-item-first"> <a href="/south-korea/currency">USDKRW</a> </td> <td id="p" class="market-widget-last"> 1401.38 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 1.0200 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.07% </td> </tr> <tr class='datatable-row-alternating' data-symbol="USDTRY:CUR" data-decimals="4"> <td class="datatable-item-first"> <a href="/turkey/currency">USDTRY</a> </td> <td id="p" class="market-widget-last"> 34.5714 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.0078 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.02% </td> </tr> <tr class='datatable-row' data-symbol="DXY:CUR" data-decimals="3"> <td class="datatable-item-first"> <a href="/united-states/currency">DXY</a> </td> <td id="p" class="market-widget-last"> 107.025 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.4979 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.46% </td> </tr> </tbody> <tfoot> <tr> <td colspan="4" class="more-link"><a style="text-decoration: underline" aria-label = "Read more" href="/currencies">More</a> </td> </tr> </tfoot> </table> </div> <input type="hidden" name="ctl00$LeftSideMenuContainer1$_ff4f7d4783150324$Repeater1$ctl02$group" id="ctl00_LeftSideMenuContainer1__ff4f7d4783150324_Repeater1_ctl02_group" value="Index" /> <div role="tabpanel" class="tab-pane fade show active" id='Index'> <table class="table table-condensed" style="padding-bottom: -10px;"> <thead class="market-widget-thead" > <tr> <th> </th> <th style="text-align: center;">Actual</th> <th style="text-align: left;" class="d-lg-none d-xl-table-cell">Chg</th> <th style="text-align: center;">%Chg</th> <th class=''></th> </tr> </thead> <tbody> <tr class='datatable-row' data-symbol="SPX:IND" data-decimals="2"> <td class="datatable-item-first"> <a href="/united-states/stock-market">US500</a> </td> <td id="p" class="market-widget-last"> 5994.23 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 25 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.42% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: darkred' title='closed trading session'></span></td> </tr> <tr class='datatable-row-alternating' data-symbol="INDU:IND" data-decimals="0"> <td class="datatable-item-first"> <a href="/indu:ind">US30</a> </td> <td id="p" class="market-widget-last"> 44527 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 230 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.52% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: darkred' title='closed trading session'></span></td> </tr> <tr class='datatable-row' data-symbol="US100:IND" data-decimals="0"> <td class="datatable-item-first"> <a href="/us100:ind">US100</a> </td> <td id="p" class="market-widget-last"> 20889 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 113 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.54% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: darkred' title='closed trading session'></span></td> </tr> <tr class='datatable-row-alternating' data-symbol="NKY:IND" data-decimals="0"> <td class="datatable-item-first"> <a href="/japan/stock-market">JP225</a> </td> <td id="p" class="market-widget-last"> 38762 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 478 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 1.25% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: darkred' title='closed trading session'></span></td> </tr> <tr class='datatable-row' data-symbol="UKX:IND" data-decimals="0"> <td class="datatable-item-first"> <a href="/united-kingdom/stock-market">GB100</a> </td> <td id="p" class="market-widget-last"> 8297 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 35 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.42% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: green' title='open trading session'></span></td> </tr> <tr class='datatable-row-alternating' data-symbol="DAX:IND" data-decimals="0"> <td class="datatable-item-first"> <a href="/germany/stock-market">DE40</a> </td> <td id="p" class="market-widget-last"> 19399 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 76 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.39% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: green' title='open trading session'></span></td> </tr> <tr class='datatable-row' data-symbol="CAC:IND" data-decimals="0"> <td class="datatable-item-first"> <a href="/france/stock-market">FR40</a> </td> <td id="p" class="market-widget-last"> 7298 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 42 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.59% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: green' title='open trading session'></span></td> </tr> <tr class='datatable-row-alternating' data-symbol="FTSEMIB:IND" data-decimals="0"> <td class="datatable-item-first"> <a href="/italy/stock-market">IT40</a> </td> <td id="p" class="market-widget-last"> 33448 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 47 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.14% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: green' title='open trading session'></span></td> </tr> <tr class='datatable-row' data-symbol="IBEX:IND" data-decimals="0"> <td class="datatable-item-first"> <a href="/spain/stock-market">ES35</a> </td> <td id="p" class="market-widget-last"> 11727 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 70 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.60% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: green' title='open trading session'></span></td> </tr> <tr class='datatable-row-alternating' data-symbol="AS51:IND" data-decimals="0"> <td class="datatable-item-first"> <a href="/australia/stock-market">ASX200</a> </td> <td id="p" class="market-widget-last"> 8434 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 40 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.48% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: darkred' title='closed trading session'></span></td> </tr> <tr class='datatable-row' data-symbol="SHCOMP:IND" data-decimals="0"> <td class="datatable-item-first"> <a href="/china/stock-market">SHANGHAI</a> </td> <td id="p" class="market-widget-last"> 3264 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 3 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.11% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: darkred' title='closed trading session'></span></td> </tr> <tr class='datatable-row-alternating' data-symbol="SENSEX:IND" data-decimals="0"> <td class="datatable-item-first"> <a href="/india/stock-market">SENSEX</a> </td> <td id="p" class="market-widget-last"> 79980 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 863 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 1.09% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: green' title='open trading session'></span></td> </tr> <tr class='datatable-row' data-symbol="SPTSX:IND" data-decimals="0"> <td class="datatable-item-first"> <a href="/canada/stock-market">TSX</a> </td> <td id="p" class="market-widget-last"> 25444 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 54 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.21% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: darkred' title='closed trading session'></span></td> </tr> <tr class='datatable-row-alternating' data-symbol="INDEXCF:IND" data-decimals="0"> <td class="datatable-item-first"> <a href="/russia/stock-market">MOEX</a> </td> <td id="p" class="market-widget-last"> 2563 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 18 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.70% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: green' title='open trading session'></span></td> </tr> <tr class='datatable-row' data-symbol="IBOV:IND" data-decimals="0"> <td class="datatable-item-first"> <a href="/brazil/stock-market">IBOVESPA</a> </td> <td id="p" class="market-widget-last"> 129126 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 2,203 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 1.74% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: darkred' title='closed trading session'></span></td> </tr> </tbody> <tfoot> <tr> <td colspan="4" class="more-link"><a style="text-decoration: underline" aria-label = "Read more" href="/stocks">More</a> </td> </tr> </tfoot> </table> </div> <input type="hidden" name="ctl00$LeftSideMenuContainer1$_ff4f7d4783150324$Repeater1$ctl03$group" id="ctl00_LeftSideMenuContainer1__ff4f7d4783150324_Repeater1_ctl03_group" value="Stocks" /> <div role="tabpanel" class="tab-pane fade show " id='Share'> <table class="table table-condensed" style="padding-bottom: -10px;"> <thead class="market-widget-thead" > <tr> <th> </th> <th style="text-align: center;">Actual</th> <th style="text-align: left;" class="d-lg-none d-xl-table-cell">Chg</th> <th style="text-align: center;">%Chg</th> </tr> </thead> <tbody> <tr class='datatable-row' data-symbol="AAPL:US" data-decimals="2"> <td class="datatable-item-first"> <a href="/aapl:us">Apple</a> </td> <td id="p" class="market-widget-last"> 230.03 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 1.56 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.68% </td> </tr> <tr class='datatable-row-alternating' data-symbol="TSLA:US" data-decimals="2"> <td class="datatable-item-first"> <a href="/tsla:us">Tesla</a> </td> <td id="p" class="market-widget-last"> 352.61 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 12.60 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 3.71% </td> </tr> <tr class='datatable-row' data-symbol="MSFT:US" data-decimals="2"> <td class="datatable-item-first"> <a href="/msft:us">Microsoft</a> </td> <td id="p" class="market-widget-last"> 417.08 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 3.94 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.95% </td> </tr> <tr class='datatable-row-alternating' data-symbol="AMZN:US" data-decimals="2"> <td class="datatable-item-first"> <a href="/amzn:us">Amazon</a> </td> <td id="p" class="market-widget-last"> 197.09 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 1.28 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.65% </td> </tr> <tr class='datatable-row' data-symbol="FB:US" data-decimals="2"> <td class="datatable-item-first"> <a href="/fb:us">Meta</a> </td> <td id="p" class="market-widget-last"> 559.12 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 4.03 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.72% </td> </tr> <tr class='datatable-row-alternating' data-symbol="NVDA:US" data-decimals="2"> <td class="datatable-item-first"> <a href="/nvda:us">Nvidia</a> </td> <td id="p" class="market-widget-last"> 142.10 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 4.76 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -3.24% </td> </tr> <tr class='datatable-row' data-symbol="V:US" data-decimals="2"> <td class="datatable-item-first"> <a href="/v:us">Visa</a> </td> <td id="p" class="market-widget-last"> 309.76 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.14 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.05% </td> </tr> <tr class='datatable-row-alternating' data-symbol="JPM:US" data-decimals="2"> <td class="datatable-item-first"> <a href="/jpm:us">JPMorgan</a> </td> <td id="p" class="market-widget-last"> 248.86 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 3.98 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 1.63% </td> </tr> <tr class='datatable-row' data-symbol="INTC:US" data-decimals="2"> <td class="datatable-item-first"> <a href="/intc:us">Intel</a> </td> <td id="p" class="market-widget-last"> 24.51 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.04 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.16% </td> </tr> <tr class='datatable-row-alternating' data-symbol="JNJ:US" data-decimals="2"> <td class="datatable-item-first"> <a href="/jnj:us">J&J</a> </td> <td id="p" class="market-widget-last"> 155.20 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.32 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.21% </td> </tr> <tr class='datatable-row' data-symbol="PG:US" data-decimals="2"> <td class="datatable-item-first"> <a href="/pg:us">P&G</a> </td> <td id="p" class="market-widget-last"> 176.27 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 3.74 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 2.17% </td> </tr> <tr class='datatable-row-alternating' data-symbol="XOM:US" data-decimals="2"> <td class="datatable-item-first"> <a href="/xom:us">Exxon Mobil</a> </td> <td id="p" class="market-widget-last"> 121.86 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.02 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.02% </td> </tr> <tr class='datatable-row' data-symbol="MMM:US" data-decimals="2"> <td class="datatable-item-first"> <a href="/mmm:us">3M</a> </td> <td id="p" class="market-widget-last"> 128.44 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 1.18 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.93% </td> </tr> <tr class='datatable-row-alternating' data-symbol="GS:US" data-decimals="2"> <td class="datatable-item-first"> <a href="/gs:us">Goldman Sachs</a> </td> <td id="p" class="market-widget-last"> 603.08 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 6.62 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 1.11% </td> </tr> <tr class='datatable-row' data-symbol="CAT:US" data-decimals="2"> <td class="datatable-item-first"> <a href="/cat:us">Caterpillar</a> </td> <td id="p" class="market-widget-last"> 397.95 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 8.55 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 2.20% </td> </tr> </tbody> <tfoot> <tr> <td colspan="4" class="more-link"><a style="text-decoration: underline" aria-label = "Read more" href="/stocks">More</a> </td> </tr> </tfoot> </table> </div> <input type="hidden" name="ctl00$LeftSideMenuContainer1$_ff4f7d4783150324$Repeater1$ctl04$group" id="ctl00_LeftSideMenuContainer1__ff4f7d4783150324_Repeater1_ctl04_group" value="Bond" /> <div role="tabpanel" class="tab-pane fade show " id='Bond'> <table class="table table-condensed" style="padding-bottom: -10px;"> <thead class="market-widget-thead" > <tr> <th> </th> <th style="text-align: center;">Actual</th> <th style="text-align: left;" class="d-lg-none d-xl-table-cell">Chg</th> <th style="text-align: center;">%Chg</th> </tr> </thead> <tbody> <tr class='datatable-row' data-symbol="USGG10YR:IND" data-decimals="4"> <td class="datatable-item-first"> <a href="/united-states/government-bond-yield">United States </a> </td> <td id="p" class="market-widget-last"> 4.3490 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.062 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.06% </td> </tr> <tr class='datatable-row-alternating' data-symbol="GUKG10:IND" data-decimals="4"> <td class="datatable-item-first"> <a href="/united-kingdom/government-bond-yield">United Kingdom </a> </td> <td id="p" class="market-widget-last"> 4.3680 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.024 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.02% </td> </tr> <tr class='datatable-row' data-symbol="GJGB10:IND" data-decimals="4"> <td class="datatable-item-first"> <a href="/japan/government-bond-yield">Japan </a> </td> <td id="p" class="market-widget-last"> 1.0740 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.006 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.01% </td> </tr> <tr class='datatable-row-alternating' data-symbol="GACGB10:IND" data-decimals="4"> <td class="datatable-item-first"> <a href="/australia/government-bond-yield">Australia </a> </td> <td id="p" class="market-widget-last"> 4.5150 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.054 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.05% </td> </tr> <tr class='datatable-row' data-symbol="GDBR10:IND" data-decimals="4"> <td class="datatable-item-first"> <a href="/germany/government-bond-yield">Germany </a> </td> <td id="p" class="market-widget-last"> 2.2380 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.014 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.01% </td> </tr> <tr class='datatable-row-alternating' data-symbol="GEBR10Y:IND" data-decimals="4"> <td class="datatable-item-first"> <a href="/brazil/government-bond-yield">Brazil </a> </td> <td id="p" class="market-widget-last"> 12.8800 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.080 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.08% </td> </tr> <tr class='datatable-row' data-symbol="RUGE10Y:GOV" data-decimals="4"> <td class="datatable-item-first"> <a href="/russia/government-bond-yield">Russia </a> </td> <td id="p" class="market-widget-last"> 16.2300 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.070 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.07% </td> </tr> <tr class='datatable-row-alternating' data-symbol="GIND10YR:IND" data-decimals="4"> <td class="datatable-item-first"> <a href="/india/government-bond-yield">India </a> </td> <td id="p" class="market-widget-last"> 6.8550 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.025 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.03% </td> </tr> <tr class='datatable-row' data-symbol="GCAN10YR:IND" data-decimals="4"> <td class="datatable-item-first"> <a href="/canada/government-bond-yield">Canada </a> </td> <td id="p" class="market-widget-last"> 3.4245 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.031 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.03% </td> </tr> <tr class='datatable-row-alternating' data-symbol="GBTPGR10:IND" data-decimals="4"> <td class="datatable-item-first"> <a href="/italy/government-bond-yield">Italy </a> </td> <td id="p" class="market-widget-last"> 3.5100 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.007 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.01% </td> </tr> <tr class='datatable-row' data-symbol="GFRN10:IND" data-decimals="4"> <td class="datatable-item-first"> <a href="/france/government-bond-yield">France </a> </td> <td id="p" class="market-widget-last"> 3.0580 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.012 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.01% </td> </tr> <tr class='datatable-row-alternating' data-symbol="GSAB10YR:GOV" data-decimals="4"> <td class="datatable-item-first"> <a href="/south-africa/government-bond-yield">South Africa </a> </td> <td id="p" class="market-widget-last"> 9.1240 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.144 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.14% </td> </tr> <tr class='datatable-row' data-symbol="GCNY10YR:GOV" data-decimals="4"> <td class="datatable-item-first"> <a href="/china/government-bond-yield">China </a> </td> <td id="p" class="market-widget-last"> 2.0690 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.011 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.01% </td> </tr> <tr class='datatable-row-alternating' data-symbol="GSWISS10:IND" data-decimals="4"> <td class="datatable-item-first"> <a href="/switzerland/government-bond-yield">Switzerland </a> </td> <td id="p" class="market-widget-last"> 0.3030 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.029 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.03% </td> </tr> <tr class='datatable-row' data-symbol="CHLGOVBON10Y:GOV" data-decimals="4"> <td class="datatable-item-first"> <a href="/chile/government-bond-yield">Chile </a> </td> <td id="p" class="market-widget-last"> 5.5700 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.040 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.04% </td> </tr> </tbody> <tfoot> <tr> <td colspan="4" class="more-link"><a style="text-decoration: underline" aria-label = "Read more" href="/bonds">More</a> </td> </tr> </tfoot> </table> </div> <input type="hidden" name="ctl00$LeftSideMenuContainer1$_ff4f7d4783150324$Repeater1$ctl05$group" id="ctl00_LeftSideMenuContainer1__ff4f7d4783150324_Repeater1_ctl05_group" value="Crypto" /> <div role="tabpanel" class="tab-pane fade show " id='Crypto'> <table class="table table-condensed" style="padding-bottom: -10px;"> <thead class="market-widget-thead" > <tr> <th> </th> <th style="text-align: center;">Actual</th> <th style="text-align: left;" class="d-lg-none d-xl-table-cell">Chg</th> <th style="text-align: center;">%Chg</th> </tr> </thead> <tbody> <tr class='datatable-row' data-symbol="BTCUSD:CUR" data-decimals="0"> <td class="datatable-item-first"> <a href="/btcusd:cur">Bitcoin</a> </td> <td id="p" class="market-widget-last"> 98753 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 971 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.99% </td> </tr> <tr class='datatable-row-alternating' data-symbol="ETHUSD:CUR" data-decimals="2"> <td class="datatable-item-first"> <a href="/ethusd:cur">Ether</a> </td> <td id="p" class="market-widget-last"> 3431.91 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 73.1788 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 2.18% </td> </tr> <tr class='datatable-row' data-symbol="BNBUSD:CUR" data-decimals="1"> <td class="datatable-item-first"> <a href="/bnbusd:cur">Binance</a> </td> <td id="p" class="market-widget-last"> 669.5 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 10.3300 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 1.57% </td> </tr> <tr class='datatable-row-alternating' data-symbol="ADAUSD:CUR" data-decimals="5"> <td class="datatable-item-first"> <a href="/adausd:cur">Cardano</a> </td> <td id="p" class="market-widget-last"> 1.06261 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.0398 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 3.89% </td> </tr> <tr class='datatable-row' data-symbol="SOLUSD:CUR" data-decimals="4"> <td class="datatable-item-first"> <a href="/solusd:cur">Solana</a> </td> <td id="p" class="market-widget-last"> 255.5300 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 2.4300 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.96% </td> </tr> <tr class='datatable-row-alternating' data-symbol="XRPUSD:CUR" data-decimals="5"> <td class="datatable-item-first"> <a href="/xrpusd:cur">Ripple</a> </td> <td id="p" class="market-widget-last"> 1.50689 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.0772 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 5.40% </td> </tr> <tr class='datatable-row' data-symbol="DOTUSD:CUR" data-decimals="2"> <td class="datatable-item-first"> <a href="/dotusd:cur">Polkadot</a> </td> <td id="p" class="market-widget-last"> 9.12 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.3049 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 3.46% </td> </tr> <tr class='datatable-row-alternating' data-symbol="AVXUSD:CUR" data-decimals="2"> <td class="datatable-item-first"> <a href="/avxusd:cur">Avalanche</a> </td> <td id="p" class="market-widget-last"> 47.07 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 5.0522 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 12.02% </td> </tr> <tr class='datatable-row' data-symbol="MTCUSD:CUR" data-decimals="2"> <td class="datatable-item-first"> <a href="/mtcusd:cur">Polygon</a> </td> <td id="p" class="market-widget-last"> 0.57 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.0014 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.24% </td> </tr> <tr class='datatable-row-alternating' data-symbol="ATMUSD:CUR" data-decimals="2"> <td class="datatable-item-first"> <a href="/atmusd:cur">Cosmos</a> </td> <td id="p" class="market-widget-last"> 8.75 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.0146 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.17% </td> </tr> <tr class='datatable-row' data-symbol="DAIUSD:CUR" data-decimals="5"> <td class="datatable-item-first"> <a href="/daiusd:cur">Dai</a> </td> <td id="p" class="market-widget-last"> 0.99992 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.0001 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.01% </td> </tr> <tr class='datatable-row-alternating' data-symbol="LTCUSD:CUR" data-decimals="3"> <td class="datatable-item-first"> <a href="/ltcusd:cur">Litecoin</a> </td> <td id="p" class="market-widget-last"> 98.440 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 1.5100 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 1.56% </td> </tr> <tr class='datatable-row' data-symbol="UNIUSD:CUR" data-decimals="2"> <td class="datatable-item-first"> <a href="/uniusd:cur">Uniswap</a> </td> <td id="p" class="market-widget-last"> 11.64 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.7310 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 6.70% </td> </tr> <tr class='datatable-row-alternating' data-symbol="ALGUSD:CUR" data-decimals="2"> <td class="datatable-item-first"> <a href="/algusd:cur">Algorand</a> </td> <td id="p" class="market-widget-last"> 0.29 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.0003 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.10% </td> </tr> <tr class='datatable-row' data-symbol="BCHUSD:CUR" data-decimals="2"> <td class="datatable-item-first"> <a href="/bchusd:cur">Bitcoin Cash</a> </td> <td id="p" class="market-widget-last"> 526.34 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 11.9698 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 2.33% </td> </tr> </tbody> <tfoot> <tr> <td colspan="4" class="more-link"><a style="text-decoration: underline" aria-label = "Read more" href="/crypto">More</a> </td> </tr> </tfoot> </table> </div> </div> </div> </div> <div class="card"> <div class="card-header">News</div> <div style="padding-left: 10px; padding-top: 5px; padding-bottom: 5px;"> <a style="" href='/germany/stock-market' >DAX Adds 0.5% </a><br /> <a style="" href='/currencies' >FX Updates: Euro Increases by 0.46% </a><br /> <a style="" href='/italy/stock-market' >Italian Stocks Drop on Monday </a><br /> <a style="" href='/euro-area/currency' >Euro Edges Up </a><br /> <a style="" href='/spain/stock-market' >Spanish Stocks Open the Week Higher </a><br /> <a style="" href='/united-kingdom/stock-market' >UK Equities Start Week with Gains </a><br /> <a style="" href='/france/stock-market' >French Stocks Begin the Week Higher </a><br /> <a style="" href='/euro-area/stock-market' >European Shares Gain </a><br /> <a style="" href='/hong-kong/stock-market' >Hang Seng Retreats for 3rd Session </a><br /> <a style="" href='/commodities' >Agricultural Commodities Updates: Pal... </a><br /> <a href='/stream?i=markets' style="text-decoration: underline;">More</a> </div> </div> <input type="hidden" name="ctl00$LeftSideMenuContainer1$_ff18a94846808763$hCategory" id="ctl00_LeftSideMenuContainer1__ff18a94846808763_hCategory" value="*" /> </div> <br /> <br /> <div id="ctl00_LeftSideMenuContainer1_AdAnalyticsSquare_AdPanel"> <style>.te-ad{border:thin solid #d3d3d3;width:100%;height:100%;background-image: linear-gradient(#333, #808080); text-align:left;padding:20px;color:#333}.te-ad-link{color:#fff;text-decoration:underline}.te-ad-text{padding-top:10px;color:#ededed}.te-ad-h2{font-size:24px;line-height: 22px; font-weight:700;color: #fff}.te-ad-h1{font-size:11px;padding-bottom:0; color: #fff}.te-ad-item{font-weight:bold}</style> <a href="https://tradingeconomics.com/analytics/features.aspx?source=300x250" target="_blank" style="text-decoration: none;"> <div class="te-ad"> <div class="te-ad-h1">TRADING ECONOMICS</div> <span class="te-ad-h2">Subscriptions&nbsp;&nbsp;</span> <div class="te-ad-text"> <div> We have a plan for your needs. Standard users can export data in a easy to use web interface. Advanced users can use our excel add-in or our Python/R/Matlab packages. API users can feed a custom application. </div> <br /> <div class="row"> <div class="col-xs-12 col-md-7"> <div class="te-ad-item">Economic Calendar</div> <div class="te-ad-item">Historical Data</div> <div class="te-ad-item">News Stream</div> <div class="te-ad-item">Earnings Releases</div> <div class="te-ad-item">Credit Ratings</div> <div class="te-ad-item">Forecasts</div> </div> <div class="col-xs-12 col-md-5"> <div class="te-ad-item">Markets</div> <div class="te-ad-item">Currencies</div> <div class="te-ad-item">Stocks</div> <div class="te-ad-item">Commodities</div> <div class="te-ad-item">Bonds</div> <div class="te-ad-item">Crypto</div> </div> </div> <br /> <div class="btn btn-primary">Get Started</div> </div> </div> <br /></a> </div> <br /> <div id="ctl00_LeftSideMenuContainer1_ctl02_AdPanel"> <style>.te-job-ad{background-image: linear-gradient(#f2f2f2, #fff)}.te-job-ad-text{padding-bottom:7px;padding-top:3px;}.te-job-ad-title{font-size:24px;font-weight:700;}.te-job-ad-item{font-weight:normal} body.dark-theme .te-job-ad{background-image: none;} </style> <div class="te-job-ad"> <a href="https://tradingeconomics.com/careers.aspx?source=jobad" target="_blank" style="text-decoration: none;"> <div class="card"> <div class="card-body"> <div class="te-job-ad-title"> We Are Hiring </div> <div class="te-job-ad-text"> Trading Economics welcomes candidates from around the world. Current job openings: </div> <div class="te-job-ad-item"><b>Web Developer</b> | <b>Data Analyst</b> | <b>Sales</b></div> <br /> <span class="btn btn-info">Apply Now</span> <br /> </div> </div> </a> <br /> </div> </div> <br /> </div> <br /> <br /> <br /> </div> </div> <br /> <br /> </div> <div class="container-fluid te-footer"> <footer> <div class="container"> <div class="row"> <div id="ctl00_Footer1_PanelFooter"> <style>.footer-spacer{padding: 4px}.footer-spacer-head{padding: 30px 4px 4px 4px;}@media only screen and (max-width:768px){.footer-icons{display: flex;margin-left: 50%;}.footer-icons a{padding: 0 12px 8px 0px; }}.footer-twitter{width: 50px; height: 50px;}.footer-github{width: 40px; height: 40px;}.footer-appstore{display: inline-block; overflow: hidden; background: url(//d3fy651gv2fhd3.cloudfront.net/images/appstore-lrg.svg?v=20171228) no-repeat; width: 135px; height: 40px; background-size: contain;}</style> <br /> <br /> <div class="container"> <div class="row"> <div class="col-lg-2 col-md-2 col-6"> <div class="footerHeader">Indicators</div> <a id="ctl00_Footer1_HyperLink6" class="footerItems" href="./">Homepage</a><br /> <a id="ctl00_Footer1_HyperLink17" class="footerItems" href="countries">Countries</a><br /> <a id="ctl00_Footer1_HyperLink18" class="footerItems" href="indicators">Indicators</a><br /> <a id="ctl00_Footer1_HyperLink1" class="footerItems" href="calendar">Calendar</a><br /> <a id="ctl00_Footer1_HyperLink2" class="footerItems" href="forecasts">Forecasts</a><br /> <a id="ctl00_Footer1_HyperLink11" class="footerItems" href="country-list/rating">Ratings</a> </div> <div class="col-lg-2 col-md-2 col-6"> <div class="footerHeader">Solutions</div> <a href="/analytics/features.aspx?source=footer"><span class="footerItems">Data Subscriptions</span></a><br /> <a href="/api/?source=footer"><span class="footerItems">API Access</span></a><br /> <a href="/analytics/excel.aspx"><span class="footerItems">Excel Add-In</span></a><br /> <a href="https://developer.tradingeconomics.com/" target="_blank"><span class="footerItems">Developer Account</span></a><br /> <a href="https://docs.tradingeconomics.com/" target="_blank"><span class="footerItems">Documentation</span></a><br /> <a href="/analytics/pricing.aspx?source=footer" target="_blank"><span class="footerItems">Pricing</span></a><br /> <br /> </div> <div class="col-lg-2 col-md-2 col-6"> <div class="footerHeader">About Us</div> <a id="ctl00_Footer1_HyperLink8" class="footerItems" href="api/customers.aspx">Customers</a><br /> <a id="ctl00_Footer1_HyperLink23" class="footerItems" href="careers.aspx">Careers</a><br /> <a id="ctl00_Footer1_HyperLink21" class="footerItems" href="investors.aspx">Investors</a><br /> <a id="ctl00_Footer1_HyperLink20" class="footerItems" href="advertise.aspx">Advertisers</a><br /> <a id="ctl00_Footer1_HyperLink19" class="footerItems" href="about-te.aspx">About us</a><br /> <a id="ctl00_Footer1_HyperLink9" class="footerItems" href="privacy-policy.aspx">Privacy</a> </div> <div class="col-lg-2 col-md-2 col-6"> <div class="footer-spacer-head"></div> <a href="https://itunes.apple.com/us/app/trading-economics/id1142178921?mt=8" class="footer-appstore"></a> <div class="footer-spacer"></div> <a href="https://play.google.com/store/apps/details?id=com.tradingeconomics.calendar"> <img alt="Android app on Google Play" src="https://d3fy651gv2fhd3.cloudfront.net/images/google-play.png" /></a> </div> </div> </div> <br /> <div class="footer-copyright"> <br /> <span>Copyright ©2024 TRADING ECONOMICS<br /> All Rights Reserved</span><br /> </div> <br /> <br /> </div> </div> </div> </footer> </div> </form> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.1/js/bootstrap.bundle.min.js"></script> <style>.modal-dialog-centered{display:flex;align-items:center;justify-content:center;height:calc(100% - 60px)}.modal-footer,.modal-header{padding:10px 15px;border:none}#menu-download-dropdown li{padding:0;border-top:none}#menu-download-dropdown li a{padding:10px 20px;display:flex}</style> <script> $(function(){ console.log("/js/pagemenu-exports") // Bootstrap offcanvas events, fix for static one $('.navbar-toggler-icon').click(function () { $(".pagemenu, .pagetabs").css('padding-right', '17px'); }); $('.userOptionsMenu').click(function () { $(".pagemenu, .pagetabs").css('padding-right', '17px'); }); $('.offcanvas').on('show.bs.offcanvas hidden.bs.offcanvas', function () { var isShown = $(this).hasClass('show'); $(".pagemenu, .pagetabs").css('padding-right', isShown ? '17px' : ''); }); var pageTabs = document.querySelector(".pagetabs"); if (pageTabs) { pageTabs.addEventListener("click", function (e) { if (e.target.classList.contains("scroll-top-on-click")) { window.scroll(0, 0); } }); } // build the event to the click $('body').on("click", "a[data-download]", function (event) { event.preventDefault(); event.stopPropagation(); downloadBtnClickEvent(event); }); $('.pagetabs').on('click', '.page-scroll', function () { $('html, body').animate({ scrollTop: $($.attr(this, 'href')).offset().top }, 500); return false; }); $('.pagetabs').on('click', '.page-scroll-adjusted', function () { $('html, body').animate({ scrollTop: $($.attr(this, 'href')).offset().top - 135 }, 500); return false; }); var indicatorPage = false, calendarPage = false, forecastPage = false, snapshotPage = false;; var URL = window.location.pathname; var hasTabs = false; var tab = '<li class="nav-item"><a class="nav-link dropdown-toggle" href="" id="menu-download-btn" class="dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"><i class="bi bi-download"></i>&nbsp;Export</a>' tab += '<ul id="menu-download-dropdown" class="dropdown-menu">' tab += '<li class="dropdown-item"><a href="#" data-download="csv"><img src="https://d3fy651gv2fhd3.cloudfront.net/images/downloadicons/download-csv-filled.svg" alt="CSV download button" style="height: 25px; width: 25px">&nbsp;&nbsp;Download Data</a></li>' tab += '<li class="dropdown-item"><a href="#" data-download="excel"><img src="https://d3fy651gv2fhd3.cloudfront.net/images/downloadicons/microsoft-excel-filled.svg" alt="Excel download button" style="height: 25px; width: 25px">&nbsp;&nbsp;Excel Add-in</a></li>' tab += '<li class="dropdown-item"><a href="#" data-download="api"><img src="https://d3fy651gv2fhd3.cloudfront.net/images/downloadicons/download-api.svg" alt="API download button" style="height: 25px; width: 25px">&nbsp;&nbsp;API Access</a></li>' tab += '</ul></li>' if ( URL.indexOf("/currencies") > -1 || URL.indexOf("/stocks") > -1 || URL.indexOf("/bonds") > -1 || URL.indexOf("/commodities") > -1 || URL.indexOf("/crypto") > -1 || URL.indexOf(":") > -1 || URL.indexOf("/forecast/currency") > -1 || URL.indexOf("/forecast/stock-market") > -1 || URL.indexOf("/forecast/government-bond-10y") > -1 || URL.indexOf("/forecast/commodity") > -1 || URL.indexOf("/forecast/crypto") > -1 || // !isLoggedIn because API endpoints are still not implemented (!isLoggedIn && URL.split('/').length == 3 && (['indicators', 'forecast'].includes(URL.split('/')[2]) || ['country-list','forecastt'].includes(URL.split('/')[1])))) { var download_link = "https://docs.tradingeconomics.com/"; if (!isLoggedIn) { if (!hasTabs) { console.log("/js/pagemenu", "appending tab") if (IsMobile) { var tab = "<li><a href='" + download_link + "' data-download='csv' class='nav-link'><i class='bi bi-download d-none d-lg-inline'></i>&nbsp;Export</a></li>"; $('#pagemenutabs').append(tab); } else { $('#pagemenutabs').append(tab); } hasTabs = true; snapshotPage = true; } } else { var download_link = "https://api.tradingeconomics.com/"; if (URL.indexOf("/forecast/commodity") > -1) { download_link += "/markets/forecasts/commodity"; } else if (URL.indexOf("/forecast/currency") > -1) { download_link += "/markets/forecasts/currency"; } else if (URL.indexOf("/forecast/stock-market") > -1) { download_link += "/markets/forecasts/index"; } else if (URL.indexOf("/forecast/government-bond-10y") > -1) { download_link += "/markets/forecasts/bond"; } else if (URL.indexOf("/forecast/crypto") > -1) { download_link += "/markets/forecasts/crypto"; } else if (URL.indexOf("/currencies") > -1) { download_link += "markets/currency"; } else if (URL.indexOf("/stocks") > -1) { download_link += "markets/index"; } else if (URL.indexOf("/bonds") > -1) { download_link += "markets/bond"; } else if (URL.indexOf("/commodities") > -1) { download_link += "markets/commodities"; } else if (URL.indexOf("/crypto") > -1) { download_link += "markets/crypto"; } else if (URL.indexOf(":") > -1) { var currCsvDownload = $("#data a.export-btn-csv").attr("href"); download_link = currCsvDownload; } if (!hasTabs) { var tab = "<li class='nav-item'><a class ='nav-link' href='" + download_link + "' data-download='csv'><i class='bi bi-download'></i>&nbsp;Export</a></li>"; $('#pagemenutabs').append(tab); hasTabs = true; } } snapshotPage = true; } else if (URL.indexOf("/stock-market") > -1 || URL.indexOf("/currency") > -1 || URL.indexOf("/commodity/") > -1 || URL.indexOf("yield") > -1) { if (!isLoggedIn && !hasTabs) { console.log('@pagemmenu - adding download tab') if (IsMobile) { var tab = "<li class='nav-item'><a class ='nav-link' href='" + download_link + "' data-download='csv'><i class='bi bi-download d-none d-lg-inline'></i>&nbsp;Export</a></li>"; $('#pagemenutabs').append(tab); hasTabs = true; } else { $('#pagemenutabs').append(tab); } hasTabs = true; } } else if ($("#menu-download-btn") && $("#menu-download-btn").length > 0) { indicatorPage = true; buildDownloadList($("#menu-download-btn")); $("#menu-download-btn").click(function () { ga('event', 'te_click_data_dropdown'); }); } else if ($(".calendar-download") && $(".calendar-download").length > 0) { calendarPage = true; buildDownloadButton($(".calendar-download")); } else if ($(".indicators-download") && $(".indicators-download").length > 0) { buildDownloadButton($(".indicators-download")); } function downloadBtnClickEvent(event) { console.log("download click .."); var downloadBtn = $(event.target).closest("a"); var dataDownload = $(downloadBtn).attr("data-download"); if (!dataDownload) return; console.log("data-download = " + dataDownload); var modalTitle = ""; var modalContent = ""; var modalFooter = ""; var loginReturn = "https://sso.tradingeconomics.com/?returnurl=https://tradingeconomics.com" + URL; var loginAction = "<a class='btn btn-outline-secondary' href='" + loginReturn + "' target='_blank'>" + (IsMobile ? "Login" : "Member? <b>Login</b>") + "</a>"; var GAEvent = null; var gCategory = null; if (indicatorPage) { gCategory = 'Indicator'; if (gCategory && URL.indexOf("forecast") > -1) { gCategory += '_forecast' }; } else if (calendarPage) { gCategory = 'Calendar'; if (gCategory && URL.indexOf("forecast") > -1) { gCategory += '_forecast' }; } else if (snapshotPage) { gCategory = 'Snapshot'; if (URL.indexOf("/forecast/commodity") > -1) gCategory = "markets_forecasts_commodity"; else if (URL.indexOf("/forecast/currency") > -1) gCategory = "markets_forecasts_currency"; else if (URL.indexOf("/forecast/stock-market") > -1) gCategory = "markets_forecasts_index"; else if (URL.indexOf("/forecast/government-bond-10y") > -1) gCategory = "_markets_forecasts_bond"; else if (URL.indexOf("/forecast/crypto") > -1) gCategory = "markets_forecasts_crypto"; else if (URL.indexOf("/currencies") > -1) gCategory = "markets_currency"; else if (URL.indexOf("/stocks") > -1) gCategory = "markets_index"; else if (URL.indexOf("/bonds") > -1) gCategory = "markets_bond"; else if (URL.indexOf("/commodities") > -1) gCategory = "markets_commodities"; else if (URL.indexOf("/crypto") > -1) gCategory = "markets_crypto"; else if (URL.indexOf(":") > -1) gCategory = "markets_symbols"; else if (URL.indexOf("/country-list/") > -1) gCategory = 'category'; else if (URL.indexOf("/forecast/") > -1) gCategory = 'category_forecast'; else if (URL.indexOf("forecast") > -1) gCategory = 'country_forecast'; else if (URL.indexOf("/indicators") > -1) gCategory = 'country'; } switch (dataDownload) { case "csv": if (isLoggedIn) { GAEvent = 'te_click_csv_download'; ga('event', GAEvent); console.log('GAEvent', GAEvent); downloadItem(event.target, dataDownload); return; } else { //modalTitle = "<b>Join Trading Economics</b>"; modalContent = "Trading Economics has more than 20 million economic indicators for nearly 200 countries, plus exchange rates, government bond yields, stock indexes, shares and commodity prices. "; modalContent += "Subscription users can use our site to export data in <b>CSV</b>, <b>JSON</b> or <b>XML</b>. Users can get it directly through an <b>Excel</b> add-in. "; modalContent += "Clients can also use an <b>API</b> to have direct access to our data, to query our real-time economic calendar and to subscribe to updates from any programming language."; modalFooter += "<div style='text-align:center;'><div class='btn-group'><a class='btn btn-outline-secondary' href='https://tradingeconomics.com/analytics/features.aspx' target='_blank'>Learn More</a>"; modalFooter += "<a class='btn btn-outline-secondary' href='https://tradingeconomics.com/analytics/pricing.aspx' target='_blank'>Pricing</a>"; modalFooter += "<a class='btn btn-outline-secondary' href='https://tradingeconomics.com/contact.aspx?subject=data' target='_blank'>" + (IsMobile ? "Contact" : "Questions? <b>Contact us</b>") + "</a>"; modalFooter += loginAction; modalFooter += "</div></div>" GAEvent = 'te_click_csv'; if (gCategory != null) GAEvent += '_' + gCategory.toLowerCase(); } break; case "excel": modalTitle = "<b>Trading Economics Excel Add-in</b>"; modalContent += "The Trading Economics Excel Addin allows users with an active subscription to access our data directly from excel. " modalContent += "Trading Economic provides more than 20 million economic indicators for nearly 200 countries, plus exchange rates, government bond yields, stock indexes, and commodity prices. "; modalFooter = "<div style='text-align:center;'><div class='btn-group'><a class='btn btn-outline-secondary' href='https://tradingeconomics.com/analytics/excel.aspx' target='_blank'>Learn More</a>"; modalFooter += "<a class='btn btn-outline-secondary' data-download='excel-addin'>Download Addin</a>"; modalFooter += "<a class='btn btn-outline-secondary' href='https://tradingeconomics.com/contact.aspx?subject=excel' target='_blank'>Questions? <b>Contact us</b></a>"; if (!isLoggedIn) modalFooter += loginAction; modalFooter += "</div></div>"; GAEvent = 'te_click_excel'; if (gCategory != null) GAEvent += '_' + gCategory.toLowerCase(); break; case "api": modalTitle = "<b>Trading Economics API</b>"; modalContent = "<div>"; modalContent += "API Users have direct access to our economic data from any programming language, can query our real-time calendar, retrieve financial market quotes and subscribe to live updates. "; modalContent += "Trading Economics provides more than 20 million economic indicators for nearly 200 countries, plus exchange rates, government bond yields, stock indexes, and commodity prices." modalContent += "</div>"; modalFooter = "<div style='text-align:center;'><div class='btn-group'><a class='btn btn-outline-secondary' href='https://tradingeconomics.com/api/' target='_blank'>Learn More</a>"; modalFooter += "<a class='btn btn-outline-secondary' href='https://docs.tradingeconomics.com/' target='_blank'>API Docs</a>"; modalFooter += "<a class='btn btn-outline-secondary' href='https://tradingeconomics.com/api/contact.aspx' target='_blank'>Questions? <b>Contact us</b></a>"; if (!isLoggedIn) modalFooter += loginAction; modalFooter += "</div></div>"; GAEvent = 'te_click_api'; if (gCategory != null) GAEvent += '_' + gCategory.toLowerCase(); break; case "api-calendar": modalTitle = "<b>Trading Economics API</b>" modalContent = "The Trading Economics API provides you with direct access to our calendar, instant updates after economic events get released, historical data on thousands of indicators and live market quotes. "; modalFooter = "<div style='text-align:center'><div class='btn-group'><a class='btn btn-outline-secondary' href='../api/?source=calendar' target='_blank'>Learn More</a>"; modalFooter += "<a class='btn btn-outline-secondary' href='https://tradingeconomics.com/api/contact.aspx?subject=api+calendar' target='_blank'>Any question? <b>Contact us</b></a>"; if (!isLoggedIn) modalFooter += loginAction; modalFooter += "</div></div>"; GAEvent = 'te_click_calendar_api'; break; case "excel-addin": GAEvent = 'te_click_excel'; window.location = 'https://github.com/tradingeconomics/tradingeconomics/raw/master/Excel/All_Releases/ExcelAddInDeploy_latest.msi'; return; break; case "forecast": //modalTitle = "<b>Trading Economics Forecasts</b>"; modalContent += "At TRADING ECONOMICS, our forecasts rely on our proprietary global macro model and analysts expectations. We believe that global economies and financial markets are closely intertwined. Our approach involves establishing a general directional bias and then utilizing computer algorithms to calculate price levels. " modalContent += "<br><br>We have five standard investment ratings: " modalContent += "<br><br><img class='recommendation-img' src='//d3fy651gv2fhd3.cloudfront.net/images/recommendations.png' />" modalContent += "<br><br><p><b>Disclaimer</b></p>"; modalContent += "Forecasts and ratings displayed on TRADING ECONOMICS are for informational purposes only. Trading involves a significant risk of loss and may not be suitable for all investors. Therefore, we advise users to exercise caution and do their own research before making any financial decisions." modalFooter += "</div></div>" GAEvent = 'te_click_forecast'; } if (GAEvent != null) { ga('event', GAEvent); console.log('GAEvent: ', GAEvent); } showDownloadModal(modalTitle, modalContent, modalFooter); } function showDownloadModal(modalTitle, modalContent, modalFooter) { var modal = "<div class ='modal' id='downloadModal' tabindex='-1' role='dialog' aria-labelledby='myModalLabel'>"; modal += "<div class='modal-dialog modal-dialog-centered' role='document'>"; modal += "<div class='modal-content'>"; modal += "<div class='modal-header'><div class='modal-title'></div><button type='button' class ='btn-close' data-bs-dismiss='modal' aria-label='Close'></button></div>"; modal += "<div class='modal-body' style='text-align:justify;'></div>" modal += "<div class='modal-footer'></div>" modal += "</div></div></div>" var jModal = $(modal); $(jModal).find(".modal-title").html(modalTitle); // define the modal content if (modalContent) $(jModal).find(".modal-body").html(modalContent); else $(jModal).find(".modal-body").remove(); // define the modal footer if (modalFooter) $(jModal).find(".modal-footer").html(modalFooter); else $(jModal).find(".modal-footer").remove(); $(jModal).on('show.bs.modal', function (e) { $(".navbar").css("padding-right", "17px"); $(".pagemenu").css("padding-right", "17px"); $(".pagetabs").css("padding-right", "17px"); }); $(jModal).on('hide.bs.modal', function (e) { $(".navbar").css("padding-right", ""); $(".pagemenu").css("padding-right", ""); $(".pagetabs").css("padding-right", ""); }); $(jModal).modal("show"); } function buildDownloadList(downloadBtn) { console.log("/js/pagemenu", "buildDownloadList", downloadBtn) downloadBtn.addClass("dropdown-toggle"); downloadBtn.attr("data-bs-toggle", "dropdown"); var csvLink = $("<li><a href='#' data-download='csv'><img src='https://d3fy651gv2fhd3.cloudfront.net/images/downloadicons/download-csv-filled.svg' alt='CSV download button' style='height: 25px; width: 25px'>&nbsp;&nbsp;Download Data</a></li>"); var excelLink = $("<li><a href='#' data-download='excel'><img src='https://d3fy651gv2fhd3.cloudfront.net/images/downloadicons/microsoft-excel-filled.svg' alt='Excel download button' style='height: 25px; width: 25px'>&nbsp;&nbsp;Excel Add-in</a></li>"); var apiLink = $("<li><a href='#' data-download='api'><img src='https://d3fy651gv2fhd3.cloudfront.net/images/downloadicons/download-api.svg' alt='API download button' style='height: 25px; width: 25px'>&nbsp;&nbsp;API Access</a></li>"); var dataportalLink = $("<li><a href='https://data.tradingeconomics.com'><i class='bi bi-save2-fill ms-1'></i>&nbsp;&nbsp;Data Portal</a></li>"); // THIS IS A HACK SO WE DONT NEED TO REWRITE THE LINK BUILT IN THIS MOMENT var currCsvDownload = $("#data a.export-btn-csv").attr("href"); if (currCsvDownload) csvLink = $("<li><a href='" + currCsvDownload + "' data-download='csv' target='_blank'><img src='https://d3fy651gv2fhd3.cloudfront.net/images/downloadicons/download-csv-filled.svg' alt='CSV download button' style='height: 25px; width: 25px'>&nbsp;&nbsp;Download Data</a></li>"); var downloadList = $("<ul id='menu-download-dropdown' class='dropdown-menu'>"); downloadList.append(csvLink); downloadList.append(excelLink); downloadList.append(apiLink); if (isLoggedIn) downloadList.append(dataportalLink); downloadBtn.after(downloadList); } function buildDownloadButton(container) { if (isLoggedIn) { var downloadBtn = $("<a id='HyperLinkToDownload' href='https://api.tradingeconomics.com/calendar' class='btn btn-info' data-download='csv'><i class='bi bi-download'></i><span class='d-none d-lg-inline'>&nbsp;Download</span></a>"); var apiBtn = $("<a id='HyperLinkToAPI' href='#' class='btn btn btn-outline-secondary' data-download='api-calendar'><i class='bi bi-grid-fill hidden-sm'></i>&nbsp;API</a>"); $(container).append(downloadBtn); $(container).append(apiBtn); } else { var downloadBtn = $("<a id='HyperLinkToDownload' href='https://api.tradingeconomics.com/calendar' class='btn btn-outline-secondary' data-download='api-calendar'><i class='bi bi-download'></i><span class='d-none d-lg-inline'>&nbsp;Download</span></a>"); $(container).append(downloadBtn); } } var lock_download = false; function downloadItem(target, format) { target = $(target).closest('a'); if (!target || target.length == 0 || !$(target).is('a')) { console.log('Download link not found'); return; } if (lock_download) return; lock_download = true; var url = $(target).attr('href'); console.log('url to download = ' + url); var d_type = format; if (format == 'csv') { url = url.replace('format=csv', 'format=json'); d_type = 'json'; } var loader = $("<span>&nbsp;</span><div class='loader' style='height: 15px;width: 15px;display: inline-block;vertical-align: text-bottom;'></div>"); $(target).append(loader); $.ajax({ url: url, type: "GET", dataType: d_type, xhrFields: { withCredentials: true }, }).done(function (data, status, xhr) { console.log('SUCCESS'); console.log('status = ' + xhr.status); console.log('data = ' + data.length); // ga event for logged in successful CSV download if (indicatorPage) { var GAEvent = 'te_click_data_dropdown' ga('event', GAEvent, { 'format': format }); console.log('GAEvent:', GAEvent); } else if (calendarPage) { var GAEvent = 'te_click_calendar' ga('event', GAEvent, { 'format': format }); console.log('GAEvent:', GAEvent); } else if (snapshotPage) { var GAEvent = 'te_click_snapshot' ga('event', GAEvent, { 'format': format }); console.log('GAEvent:', GAEvent); } var filename = buildFilename(url, format); downloadData(data, filename, format); }).fail(function (xhr, status, error) { console.log('ERROR'); console.log('status = ' + xhr.status); console.log('error message = ' + xhr.responseText) // ga event for logged in failed CSV download if (indicatorPage) { var GAEvent = 'te_click_data_dropdown' ga('event', GAEvent, { 'format': format }); console.log('GAEvent::', GAEvent); } else if (calendarPage) { var GAEvent = 'te_click_calendar' ga('event', GAEvent, { 'format': format }); console.log('GAEvent::', GAEvent); } else if (snapshotPage) { var GAEvent = 'te_click_snapshot' ga('event', GAEvent, { 'format': format }); console.log('GAEvent::', GAEvent); } if (xhr.status) { switch (xhr.status) { case 401: // unauthorized launchInvalidKeyModal(); break; case 403: // forbidden launchTrialOverModal(); break; case 400: // bad request launchBadRequestModal(); break; case 409: // conflict (more requests per second than allowed) launchThrottleModal(); break; default: console.log('Unhandled status = ' + xhr.status) var redirect_url = ''; if (TECountry) { redirect_url = 'https://data.tradingeconomics.com/data/export/bycountry?country=' + TECountry; } else { redirect_url = 'https://data.tradingeconomics.com/'; } console.log('redirecting to: ' + redirect_url); window.open(redirect_url, '_blank'); break; } } }).always(function (xhr, status, error) { lock_download = false; console.log('done downloading!'); loader.remove(); }); }; function buildFilename(url, format) { var filename = decodeURI(url); filename = filename.replace("https://api.tradingeconomics.com/", ""); var questionMark = filename.indexOf('?'); if (questionMark != -1) filename = filename.substring(0, questionMark); filename = filename.replace(/\//g, '_'); filename = filename.replace(/\s/g, '_'); filename = filename.replace(/:/g, '_'); filename = filename.replace(/-/g, '_'); return filename + '.' + format; } function downloadData(data, filename, type) { var dataFile = null; switch (type) { case "csv": var csv = convertArrayOfObjectsToCSV({ data: data }); if (csv == null) return; // create the csv file var dataFile = new Blob([csv], { type: "text/csv;charset=utf-8" }); break; case "json": var dataFile = new Blob([JSON.stringify(data)], { type: "text/json;charset=utf-8" }); break; case "xml": var dataFile = new Blob([new XMLSerializer().serializeToString(data.documentElement)], { type: "text/plain;charset=utf-8" }); break; } if (dataFile != null) { var anchor = document.createElement('a'); anchor.href = window.URL.createObjectURL(dataFile); anchor.setAttribute("d-none", true); anchor.setAttribute("target", "_self"); anchor.setAttribute("download", filename); document.body.appendChild(anchor); anchor.click(); anchor.remove(); } } /* Download CSV from: https://halistechnology.com/2015/05/28/use-javascript-to-export-your-data-as-csv/ */ function convertArrayOfObjectsToCSV(args) { var result, ctr, keys, columnDelimiter, lineDelimiter, data; data = args.data || null; if (data == null || !data.length) { return null; } columnDelimiter = args.columnDelimiter || ','; lineDelimiter = args.lineDelimiter || '\r\n'; keys = Object.keys(data[0]); result = ''; result += keys.join(columnDelimiter); result += lineDelimiter; data.forEach(function (item) { ctr = 0; keys.forEach(function (key) { if (ctr > 0) result += columnDelimiter; result += item[key]; ctr++; }); result += lineDelimiter; }); return result; } function errorModal(title, text, actionLink, actionMsg, contactSubject) { var modalTitle = "<span><b>" + title + "</b></span>"; var modalFooter = "<div style='text-align:center;'><div class='btn-group'>"; if (actionLink && actionMsg) modalFooter += "<a class='btn btn-primary' href='" + actionLink + "'>" + actionMsg + "</a>"; modalFooter += "<a class='btn btn-outline-secondary' href='https://tradingeconomics.com/contact.aspx?subject=" + contactSubject + "' target='_blank'>Any question? <b>Contact us</b></a></div></div>"; showDownloadModal(modalTitle, text, modalFooter); } function launchTrialOverModal(experience) { errorModal("Trading Economics Data", "Activate your plan to get more data from Trading Economics", "https://billing.tradingeconomics.com/plans.aspx?activate=true", "ACTIVATE", "account+limit"); } function launchInvalidKeyModal() { errorModal("Trading Economics Data", "Trading Economics provides its premium members with access to more than 20 million indicators for 196 countries plus historical/delayed/live quotes for exchange rates, stocks, indexes, bonds and commodity prices. Subscribe to a plan to download data in a easy to use web interface, using our excel addin or our API.", "https://billing.tradingeconomics.com/plans.aspx?lead=true", "Get Started", "Subscription+Plans"); } function launchThrottleModal() { errorModal("Trading Economics Data", "Limit of request per second reached", null, null, "API+Access"); } function launchBadRequestModal() { errorModal("Trading Economics Data", "Something went wrong with the request, please contact support@tradingeconomics.com, or click the button bellow", "https://tradingeconomics.com/api/contact.aspx?subject=Bad+Request", "CONTACT SUPPORT", "API+Access"); } }); </script>  <script> console.log('/controls/io.ascx') TEdecryptk = 'j9ONifjoKzxt7kmfYTdKK/5vve0b9Y1UCj/n50jr8d8=' TEdecryptn = 'Ipp9HNSfVBUntqFK7PrtofYaOPV312xy' var socket_url = 'https://live.tradingeconomics.com?key=rain'; console.log("IO Connecting to " + socket_url) var TE_URL = window.location.pathname; socket_url += "&url=" + TE_URL; $.ajaxSetup({ cache: !0 }); $.getScript('//d3fy651gv2fhd3.cloudfront.net/js/io.js?v=20240223', function () { OnSocketIOLoad(); }); var socket = null; var MKTChannels = [] var Subscribed = [] function base64ToUint8Array(base64) { const binaryString = atob(base64); const length = binaryString.length; const bytes = new Uint8Array(length); for (let i = 0; i < length; i++) { bytes[i] = binaryString.charCodeAt(i); } return bytes; } function decryptMessage(ciphertext) { const key = base64ToUint8Array(TEdecryptk); const nonce = base64ToUint8Array(TEdecryptn); const ciphertextUint8Array = new Uint8Array(ciphertext); let decryptedPlaintext = sodium.crypto_secretbox_open_easy(ciphertextUint8Array, nonce, key); decryptedPlaintext = pako.inflate(decryptedPlaintext, { to: 'string' }); if (decryptedPlaintext !== undefined) { return (JSON.parse(decryptedPlaintext)) } } function OnSocketIOLoad() { var MKT_TBL_SELEC = "#table-logic-handler-for-sockets"; var TEChannels = ['calendar']; if (TE_URL == '/') TEChannels = ['calendar', 'market']; else if (TE_URL == "/calendar") TEChannels = ['calendar']; else if (TE_URL.indexOf("calendar") > -1) TEChannels = ['calendar', 'market']; else if (TE_URL.indexOf("/dividends") > -1 || TE_URL.indexOf("/ipo") > -1 || TE_URL.indexOf("/stock-splits") > -1 || TE_URL.indexOf("/earnings") > -1) TEChannels = ['calendar', 'market']; else if (TE_URL.indexOf("stream") > -1) TEChannels = ['calendar', 'market', 'stream']; else if (TE_URL.indexOf("/currencies") > -1) TEChannels = ['currencies', 'calendar']; else if (TE_URL.indexOf("/stocks") > -1) TEChannels = ['indexes', 'calendar']; else if (TE_URL.indexOf("/bonds") > -1) TEChannels = ['bonds', 'calendar']; else if (TE_URL.indexOf("/commodities") > -1) TEChannels = ['commodities', 'calendar']; else if (TE_URL.indexOf("/crypto") > -1) TEChannels = ['crypto', 'calendar']; else if (TE_URL.indexOf("/forecast/government-bond-10y") > -1) TEChannels = ['bonds', 'calendar']; else if (TE_URL.indexOf("/forecast/commodity") > -1) TEChannels = ['commodities', 'calendar']; else if (TE_URL.indexOf("/currency") > -1 || TE_URL.indexOf("/stock-market") > -1 || TE_URL.indexOf("/commodity/") > -1 || TE_URL.indexOf("/government-bond-yield") > -1) TEChannels = ['market', 'calendar']; else if (TE_URL.split(':').length == 2) TEChannels = ['calendar', 'market']; console.log('IO EPOCH: 1732526323'); console.log('IO IP: 8.222.208.146'); console.log('IO URL: /gs:us');console.log('IO TOKEN: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJlcG9jaCI6MTczMjUyNjMyMywiaXAiOiI4LjIyMi4yMDguMTQ2IiwidXJsIjoiL2dzOnVzIn0.Uu5trnkH5XV41KCQSiqGO1Xa_6mGwEmtJ-FDrShQwTY'); socket = io.connect(socket_url, { withCredentials: true, // Needed for ELB Cookies Stickyness auth: { token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJlcG9jaCI6MTczMjUyNjMyMywiaXAiOiI4LjIyMi4yMDguMTQ2IiwidXJsIjoiL2dzOnVzIn0.Uu5trnkH5XV41KCQSiqGO1Xa_6mGwEmtJ-FDrShQwTY', url: TE_URL } }); socket.on('connect', function () { ioErrorCount = 0; IS_CONNECTED = !0; // Subscribe to the page symbol if (TE_URL.split(':').length == 2 && TESymbol != '') { var socketSymbol = TESymbol.toUpperCase() console.log('IO Subscribe', socketSymbol, 'No lag'); socket.emit('subscribe', { s: [socketSymbol] }) Subscribed.push(socketSymbol) } // Subscribe to channels if (TEChannels && TEChannels.length) { console.log('IO Subscribing to TEChannels', TEChannels); socket.emit('subscribe', { s: TEChannels }) } else { console.log('IO No TEChannels to Subscribe'); } // Subscribe to symbols if (TE_URL != '/' && TE_URL.indexOf("calendar") <= -1 && (TE_URL.split('/').length > 2 || TE_URL.indexOf(":ind") > -1 )) { gatherMKTChannels(); if (MKTChannels && MKTChannels.length) { console.log('IO Subscribing to', MKTChannels.length, 'symbols:', MKTChannels); if (MKTChannels.length <= 36) { socket.emit('subscribe', { s: MKTChannels}) } else { console.log('IO Subscribing using Chunks'); var i, j, temparray, chunk = 36; for (i = 0, j = MKTChannels.length; i < j; i += chunk) { temparray = MKTChannels.slice(i, i + chunk); console.log('IO Subscribing to', temparray.length, 'channels:', temparray); socket.emit('subscribe', { s: temparray }) } } } else { console.log('IO No MKTChannels to Subscribe'); } } socket.on('disconnect', function () { IS_CONNECTED = !1; console.log('Got disconnect!') }); socket.on("smooth-disconnect", function () { socket.disconnect() }) }); var isSnap = !0; for (var i = 0; i < TEChannels.length; i++) { channel = TEChannels[i]; if (channel == 'calendar' || channel == 'stream') continue; console.log('IO Snap ' + channel); socket.on(channel, function (a) { a = decryptMessage(a) //console.log(a) if (a.length > 0) { for (i = 0; i < a.length; i++) { TE_UpdateTable(a[i], isSnap) } isSnap = !1 } else { console.log('IO Sent Empty Market Update') } }) } var ioErrorCount = 0; socket.on("connect_error", (err) => { ioErrorCount++; console.log('IO Connect Error', ioErrorCount); console.log(err.message); if (TE_URL.indexOf("calendar") <= -1 && ioErrorCount % 10 == 0) { console.log('Disconnecting IO'); socket.disconnect(); if (ioErrorCount < 100) { var sleepSecs = ioErrorCount * 5; console.log('Connecting again in', sleepSecs, 'seconds'); setInterval(function () { socket.connect() }, sleepSecs * 1000) } else console.log('Stay disconnected'); } }); socket.on('tick', function (t) { t = decryptMessage(t) TE_UpdateTable(t); if (TE_URL.split(':').length == 2) UpdateMarketTick(t); }); function gatherMKTChannels() { // Temporary block to avoid too many symbols return var nMarkets = $("[data-subscribe]").length; console.log("IO data-subscribe tag present in ", nMarkets, "markets") if (nMarkets == null || typeof input !== "undefined") return else if (nMarkets > 600) console.log("IO Skipping [data-subscribe] because of too many symbols") else { console.log("IO Searching [data-subscribe]") var sCount = 0; $("[data-subscribe]").each(function (i, item) { var socketSymbol = $(item).attr('data-subscribe') if (!MKTChannels.includes(socketSymbol) && !Subscribed.includes(socketSymbol)) { sCount++; console.log('IO [data-subscribe]', sCount, socketSymbol) MKTChannels.push(socketSymbol) } else console.log('Already Subscribed. Skip', socketSymbol) }) } } function TE_UpdateTable(d, isSnap) { var s = d.s; let element_price; $('tr[data-symbol="' + s + '"]').each((i, el) => { element_price = $(el).find("td#p"); }) if (element_price == undefined) { return } const p0 = parseFloat(element_price.text()) var r = $('tr[data-symbol="' + s + '"]'); var p = r.find('td#p'); var dec = 4; if (typeof r.data('decimals') !== 'undefined' && r.data('decimals') !== "") dec = r.data("decimals"); if (p0 != d.p.toFixed(dec)) { p.text(d.p.toFixed(dec)); fg = d.nch > 0 ? 'darkgreen' : d.nch < 0 ? 'darkred' : 'black'; if (IsDarkMode) fg = '#fff' triangle = d.nch > 0 ? '<span class="market-positive-image"></span>' : d.nch < 0 ? '<span class="market-negative-image"></span>' : '<span class="market-neutral-image"></span>'; var previous_triangle = r.find('td#triangle'); if (previous_triangle && previous_triangle.length) { previous_triangle.html(triangle) } var nch = r.find('td#nch'); if (nch) { nch.each(function (i, item) { if ($(item).attr("data-no-triangle")) { $(item).text(d.nch.toFixed(dec)); $(item).css("color", fg); $(item).html(Math.abs(d.nch.toFixed(dec))) } else { $(item).text(d.nch.toFixed(dec)); $(item).css("color", fg); $(item).html(triangle + ' ' + Math.abs(d.nch.toFixed(dec))) } }) } var pch = r.find('td#pch'); pch.text(d.pch.toFixed(2) + '%'); if (TEChannels != "market") { nch.attr('data-value', d.nch); pch.attr('data-value', d.pch) } r.find('td#pch') pch.css("color", fg); bg = IsDarkMode == true ? '#254f73' : '#cdebf9'; p.css("backgroundColor", bg); setTimeout(function () { p.css("backgroundColor", 'transparent') }, 1000) if (!isSnap) { var dt = new Date(); var h = dt.getHours(); if (h < 10) { h = "0" + h } var m = dt.getMinutes(); if (m < 10) { m = "0" + m } var ds = [h, m].join(':'); r.find('td#date').html(ds) } if (d.type && d.type == 'index') { var stateColor = '', stateSpan = ''; var state = d.state; if (d.dstate) state = d.dstate; if (state == 'open') stateColor = 'green'; else if (state == 'closed') stateColor = 'red'; else if (state == 'pre') stateColor = '#CFB53B'; else if (state == 'after') stateColor = '#CFB53B'; else { console.log('IO - Unknown Session State', s); return; } if (stateColor != '') { stateSpan = '<span class="bi bi-clock" style="font-size:10px; color: ' + stateColor + '" title="' + state + ' trading session"></span>'; r.find('td#session').html(stateSpan) } } } }; var TENotifications = 0; function TENotification(_title, _text, _url, _importance) { TENotifications++; console.log("IO => Notification => ", _title, _text, _url, _importance, TENotifications); if (TENotifications > 2 & _importance <= 1) return; if (TENotifications > 4 & _importance <= 2) return; var IsDesktop = !1; var _titleHTML = 'ALERT'; var _alertType = 'NEWS'; var _color = "#5bc0de"; if (_importance > 0) { _alertType = 'CALENDAR'; if (_importance > 1) { IsDesktop = !0; _color = '#5cb85c'; if (_importance > 2) _color = '#d9534f' } } upsertNotification({ title: _title, text: _text, url: _url, importance: _importance }, false, true); _titleHTML = '<div style="padding-bottom:10px; font-size: 11px;color: #fff; font-weight: bold;"><span style="background-color: #000; padding: 3px;">' + _alertType + '</span><span style="background-color: ' + _color + '; padding: 3px;">ALERT</span></div>'; var _textHTML = _text; if (_text && _text.length > 200) { console.log("Trim text"); _textHTML = _text.substring(0, 200) + '...'; _textHTML += ' <a style="text-decoration: underline;" target="_new" href="' + _url + '">More</a>' } else if (_text) { _textHTML += ' <a style="text-decoration: underline;" target="_new" href="' + _url + '">More</a>' } PNotify.desktop.permission(); (new PNotify({ title: _titleHTML, text: _textHTML, hide: !0, animation: 'fade', shadow: !0, icon: !1, mouse_reset: !1, delay: 20000, buttons: { sticker: !1, closer_hover: !1 }, addclass: 'custom', })).get().click(function (e) { if ($('.ui-pnotify-closer, .ui-pnotify-closer *').is(e.target)) { console.log("Closed Notification"); return } window.location = _url }); if (IsDesktop) { var _tag = _url + "?v=" + new Date().toISOString().slice(0, 10).replace(/-/g, ""); console.log("PNotify tag", _tag); (new PNotify({ title: _titleHTML, text: _textHTML, hide: !1, animation: 'fade', shadow: !0, icon: !1, mouse_reset: !1, hide: !0, delay: 20000, buttons: { sticker: !1, closer_hover: !1 }, addclass: 'custom', type: 'info', desktop: { desktop: IsDesktop, title: 'TRADING ECONOMICS', text: _text, tag: _tag, fallback: !1 } })).get().click(function (e) { if ($('.ui-pnotify-closer, .ui-pnotify-closer *').is(e.target)) { console.log("Closed Notification"); return } window.location = _url }) } } function TECalendarRowUpdate(c) { console.log("UPDATE CALENDAR ROW"); console.log(c); var $row = $('tr[data-id="' + c.CalendarId + '"]'); console.log($row); var $td = $row.find('span#actual'); console.log($td); $td.text(c.Actual); console.log(c.Actual); console.log($td.text); bg = '#5bc0de'; $td.css("backgroundColor", bg); color = c.Actual.toString().indexOf("-") ? 'darkgreen' : 'darkred'; $td.css("color", color); $row.find('span#previous').text(c.Previous); $row.find('img#incoming').css("display", 'none'); setInterval(function () { $td.css("backgroundColor", '#ffffff') }, 2000)} socket.on('calendar', function (c) { console.log("IO CALENDAR") c = decryptMessage(c) console.log(c); if (c.Importance >= 1) { var _title = c.Country.trim() + ' ' + c.Event.trim(); var _text = _title; if (c.Actual != null && c.Actual != '') _text += ' reported at ' + c.Actual + '. '; if (c.Forecast != null && c.Forecast != '') _text += 'Consensus was ' + c.Forecast + '. '; if (c.Previous != null && c.Previous != '') _text += 'Previously at ' + c.Previous + '.'; var _url = 'https://tradingeconomics.com' + c.URL; if (TE_URL.indexOf("calendar") > -1 || (TELanguage != null && TELanguage.length > 0 && TE_URL == '/' )) TECalendarRowUpdate(c); TENotification(_title, _text, _url, c.Importance) } }); socket.on('stream', function (j) { console.log("IO STREAM") j = decryptMessage(j) console.log(j); var _title = j.title; var _description = j.description; var _url = j.url; if (_title && _description && _url) { TENotification(_title, _description, _url, 0) } }); var KILL_SOCKET_AFTER_IDLE = 1000 * 60 * 30; var IS_RELOAD_REQUIRED = !1; var IS_QUESTION_OPEN = !1; var IS_CONNECTED = !1; var LAST_VISIBLE = new Date().getTime(); if (TE_URL.indexOf("calendar") > -1 || TE_URL.indexOf("/currency") > -1 || TE_URL.indexOf("/stock-market") > -1 || TE_URL.indexOf("/commodity/") > -1 || TE_URL.indexOf("/government-bond-yield") > -1 || TE_URL.indexOf("stream") > -1 || TE_URL.indexOf("/currencies") > -1 || TE_URL.indexOf("/stocks") > -1 || TE_URL.indexOf("/bonds") > -1 || TE_URL.indexOf("/commodities") > -1) { KILL_SOCKET_AFTER_IDLE = 1000 * 60 * 60; IS_RELOAD_REQUIRED = !0 } // To be users in market pages ex aapl:us function UpdateMarketTick(t) { if (t.state && t.state == 'closed') { console.log('market is closed'); } var s = t.s; if (!s || s.toLowerCase() != symbol.toLowerCase()) { return; } $('#market_last').html(t.p); $('#market_daily_chg').html(t.nch + ' '); $('#market_daily_Pchg').html(t.pch + '%'); if (t.nch > 0) { $('#market_chg_arrow').attr('class', 'market-positive-image'); $('#market_daily_chg').css({ color: '#8ecf61' }); $('#market_daily_Pchg').css({ color: '#8ecf61' }); } else { $('#market_chg_arrow').attr('class', 'market-negative-image'); $('#market_daily_chg').css({ color: '#ed3b3b' }); $('#market_daily_Pchg').css({ color: '#ed3b3b' }); } } function saveSocketNetworkBW() { console.log("Socket check if alive"); setInterval(function () { if (typeof document == 'undefined' || !document) { console.log("ws: undefined"); return LAST_VISIBLE = new Date().getTime() } if (typeof document.hidden != 'boolean') { console.log("ws: hidden"); return LAST_VISIBLE = new Date().getTime() } if (!document.hidden) { console.log("ws: live"); if (!IS_CONNECTED) { console.log('ws: connecting'); socket.connect() } return LAST_VISIBLE = new Date().getTime() } var now = new Date().getTime(); if (now - LAST_VISIBLE > KILL_SOCKET_AFTER_IDLE) { if (IS_CONNECTED) { console.log('ws: disconnecting'); socket.disconnect(); if (IS_RELOAD_REQUIRED && IS_QUESTION_OPEN == !1) { var result = confirm("Please Press Ok to Refresh the Data in this Page"); IS_QUESTION_OPEN = !0; if (result) { IS_QUESTION_OPEN = !1; document.location = document.location.href } } } } }, 1000 * 60) } saveSocketNetworkBW() // pnotify !function (t, i) { "function" == typeof define && define.amd ? define("pnotify", ["jquery"], function (s) { return i(s, t) }) : "object" == typeof exports && "undefined" != typeof module ? module.exports = i(require("jquery"), global || t) : t.PNotify = i(t.jQuery, t) }("undefined" != typeof window ? window : this, function (t, i) { var s = function (i) { var e, o, n = { dir1: "down", dir2: "left", push: "bottom", spacing1: 36, spacing2: 36, context: t("body"), modal: !1 }, a = t(i), r = function () { o = t("body"), c.prototype.options.stack.context = o, a = t(i), a.bind("resize", function () { e && clearTimeout(e), e = setTimeout(function () { c.positionAll(!0) }, 10) }) }, h = function (i) { var s = t("<div />", { class: "ui-pnotify-modal-overlay" }); return s.prependTo(i.context), i.overlay_close && s.click(function () { c.removeStack(i) }), s }, c = function (t) { this.state = "initializing", this.timer = null, this.animTimer = null, this.styles = null, this.elem = null, this.container = null, this.title_container = null, this.text_container = null, this.animating = !1, this.timerHide = !1, this.parseOptions(t), this.init() }; return t.extend(c.prototype, { version: "3.2.0", options: { title: !1, title_escape: !1, text: !1, text_escape: !1, styling: "brighttheme", addclass: "", cornerclass: "", auto_display: !0, width: "300px", min_height: "16px", type: "notice", icon: !0, animation: "fade", animate_speed: "normal", shadow: !0, hide: !0, delay: 8e3, mouse_reset: !0, remove: !0, insert_brs: !0, destroy: !0, stack: n }, modules: {}, runModules: function (t, i) { var s; for (var e in this.modules) s = "object" == typeof i && e in i ? i[e] : i, "function" == typeof this.modules[e][t] && (this.modules[e].notice = this, this.modules[e].options = "object" == typeof this.options[e] ? this.options[e] : {}, this.modules[e][t](this, "object" == typeof this.options[e] ? this.options[e] : {}, s)) }, init: function () { var i = this; return this.modules = {}, t.extend(!0, this.modules, c.prototype.modules), "object" == typeof this.options.styling ? this.styles = this.options.styling : this.styles = c.styling[this.options.styling], this.elem = t("<div />", { class: "ui-pnotify " + this.options.addclass, css: { display: "none" }, "aria-live": "assertive", "aria-role": "alertdialog", mouseenter: function (t) { if (i.options.mouse_reset && "out" === i.animating) { if (!i.timerHide) return; i.cancelRemove() } i.options.hide && i.options.mouse_reset && i.cancelRemove() }, mouseleave: function (t) { i.options.hide && i.options.mouse_reset && "out" !== i.animating && i.queueRemove(), c.positionAll() } }), "fade" === this.options.animation && this.elem.addClass("ui-pnotify-fade-" + this.options.animate_speed), this.container = t("<div />", { class: this.styles.container + " ui-pnotify-container " + ("error" === this.options.type ? this.styles.error : "info" === this.options.type ? this.styles.info : "success" === this.options.type ? this.styles.success : this.styles.notice), role: "alert" }).appendTo(this.elem), "" !== this.options.cornerclass && this.container.removeClass("ui-corner-all").addClass(this.options.cornerclass), this.options.shadow && this.container.addClass("ui-pnotify-shadow"), !1 !== this.options.icon && t("<div />", { class: "ui-pnotify-icon" }).append(t("<span />", { class: !0 === this.options.icon ? "error" === this.options.type ? this.styles.error_icon : "info" === this.options.type ? this.styles.info_icon : "success" === this.options.type ? this.styles.success_icon : this.styles.notice_icon : this.options.icon })).prependTo(this.container), this.title_container = t("<h4 />", { class: "ui-pnotify-title" }).appendTo(this.container), !1 === this.options.title ? this.title_container.hide() : this.options.title_escape ? this.title_container.text(this.options.title) : this.title_container.html(this.options.title), this.text_container = t("<div />", { class: "ui-pnotify-text", "aria-role": "alert" }).appendTo(this.container), !1 === this.options.text ? this.text_container.hide() : this.options.text_escape ? this.text_container.text(this.options.text) : this.text_container.html(this.options.insert_brs ? String(this.options.text).replace(/\n/g, "<br />") : this.options.text), "string" == typeof this.options.width && this.elem.css("width", this.options.width), "string" == typeof this.options.min_height && this.container.css("min-height", this.options.min_height), "top" === this.options.stack.push ? c.notices = t.merge([this], c.notices) : c.notices = t.merge(c.notices, [this]), "top" === this.options.stack.push && this.queuePosition(!1, 1), this.options.stack.animation = !1, this.runModules("init"), this.state = "closed", this.options.auto_display && this.open(), this }, update: function (i) { var s = this.options; return this.parseOptions(s, i), this.elem.removeClass("ui-pnotify-fade-slow ui-pnotify-fade-normal ui-pnotify-fade-fast"), "fade" === this.options.animation && this.elem.addClass("ui-pnotify-fade-" + this.options.animate_speed), this.options.cornerclass !== s.cornerclass && this.container.removeClass("ui-corner-all " + s.cornerclass).addClass(this.options.cornerclass), this.options.shadow !== s.shadow && (this.options.shadow ? this.container.addClass("ui-pnotify-shadow") : this.container.removeClass("ui-pnotify-shadow")), !1 === this.options.addclass ? this.elem.removeClass(s.addclass) : this.options.addclass !== s.addclass && this.elem.removeClass(s.addclass).addClass(this.options.addclass), !1 === this.options.title ? this.title_container.slideUp("fast") : this.options.title !== s.title && (this.options.title_escape ? this.title_container.text(this.options.title) : this.title_container.html(this.options.title), !1 === s.title && this.title_container.slideDown(200)), !1 === this.options.text ? this.text_container.slideUp("fast") : this.options.text !== s.text && (this.options.text_escape ? this.text_container.text(this.options.text) : this.text_container.html(this.options.insert_brs ? String(this.options.text).replace(/\n/g, "<br />") : this.options.text), !1 === s.text && this.text_container.slideDown(200)), this.options.type !== s.type && this.container.removeClass(this.styles.error + " " + this.styles.notice + " " + this.styles.success + " " + this.styles.info).addClass("error" === this.options.type ? this.styles.error : "info" === this.options.type ? this.styles.info : "success" === this.options.type ? this.styles.success : this.styles.notice), (this.options.icon !== s.icon || !0 === this.options.icon && this.options.type !== s.type) && (this.container.find("div.ui-pnotify-icon").remove(), !1 !== this.options.icon && t("<div />", { class: "ui-pnotify-icon" }).append(t("<span />", { class: !0 === this.options.icon ? "error" === this.options.type ? this.styles.error_icon : "info" === this.options.type ? this.styles.info_icon : "success" === this.options.type ? this.styles.success_icon : this.styles.notice_icon : this.options.icon })).prependTo(this.container)), this.options.width !== s.width && this.elem.animate({ width: this.options.width }), this.options.min_height !== s.min_height && this.container.animate({ minHeight: this.options.min_height }), this.options.hide ? s.hide || this.queueRemove() : this.cancelRemove(), this.queuePosition(!0), this.runModules("update", s), this }, open: function () { this.state = "opening", this.runModules("beforeOpen"); var t = this; return this.elem.parent().length || this.elem.appendTo(this.options.stack.context ? this.options.stack.context : o), "top" !== this.options.stack.push && this.position(!0), this.animateIn(function () { t.queuePosition(!0), t.options.hide && t.queueRemove(), t.state = "open", t.runModules("afterOpen") }), this }, remove: function (s) { this.state = "closing", this.timerHide = !!s, this.runModules("beforeClose"); var e = this; return this.timer && (i.clearTimeout(this.timer), this.timer = null), this.animateOut(function () { if (e.state = "closed", e.runModules("afterClose"), e.queuePosition(!0), e.options.remove && e.elem.detach(), e.runModules("beforeDestroy"), e.options.destroy && null !== c.notices) { var i = t.inArray(e, c.notices); -1 !== i && c.notices.splice(i, 1) } e.runModules("afterDestroy") }), this }, get: function () { return this.elem }, parseOptions: function (i, s) { this.options = t.extend(!0, {}, c.prototype.options), this.options.stack = c.prototype.options.stack; for (var e, o = [i, s], n = 0; n < o.length && void 0 !== (e = o[n]); n++)if ("object" != typeof e) this.options.text = e; else for (var a in e) this.modules[a] ? t.extend(!0, this.options[a], e[a]) : this.options[a] = e[a] }, animateIn: function (t) { this.animating = "in"; var i = this, s = function () { i.animTimer && clearTimeout(i.animTimer), "in" === i.animating && (i.elem.is(":visible") ? (t && t.call(), i.animating = !1) : i.animTimer = setTimeout(s, 40)) }; "fade" === this.options.animation ? (this.elem.one("webkitTransitionEnd mozTransitionEnd MSTransitionEnd oTransitionEnd transitionend", s).addClass("ui-pnotify-in"), this.elem.css("opacity"), this.elem.addClass("ui-pnotify-fade-in"), this.animTimer = setTimeout(s, 650)) : (this.elem.addClass("ui-pnotify-in"), s()) }, animateOut: function (i) { this.animating = "out"; var s = this, e = function () { if (s.animTimer && clearTimeout(s.animTimer), "out" === s.animating) if ("0" != s.elem.css("opacity") && s.elem.is(":visible")) s.animTimer = setTimeout(e, 40); else { if (s.elem.removeClass("ui-pnotify-in"), s.options.stack.overlay) { var o = !1; t.each(c.notices, function (t, i) { i != s && i.options.stack === s.options.stack && "closed" != i.state && (o = !0) }), o || s.options.stack.overlay.hide() } i && i.call(), s.animating = !1 } }; "fade" === this.options.animation ? (this.elem.one("webkitTransitionEnd mozTransitionEnd MSTransitionEnd oTransitionEnd transitionend", e).removeClass("ui-pnotify-fade-in"), this.animTimer = setTimeout(e, 650)) : (this.elem.removeClass("ui-pnotify-in"), e()) }, position: function (t) { var i = this.options.stack, s = this.elem; if (void 0 === i.context && (i.context = o), i) { "number" != typeof i.nextpos1 && (i.nextpos1 = i.firstpos1), "number" != typeof i.nextpos2 && (i.nextpos2 = i.firstpos2), "number" != typeof i.addpos2 && (i.addpos2 = 0); var e = !s.hasClass("ui-pnotify-in"); if (!e || t) { i.modal && (i.overlay ? i.overlay.show() : i.overlay = h(i)), s.addClass("ui-pnotify-move"); var n, r, c; switch (i.dir1) { case "down": c = "top"; break; case "up": c = "bottom"; break; case "left": c = "right"; break; case "right": c = "left" }n = parseInt(s.css(c).replace(/(?:\..*|[^0-9.])/g, "")), isNaN(n) && (n = 0), void 0 !== i.firstpos1 || e || (i.firstpos1 = n, i.nextpos1 = i.firstpos1); var p; switch (i.dir2) { case "down": p = "top"; break; case "up": p = "bottom"; break; case "left": p = "right"; break; case "right": p = "left" }switch (r = parseInt(s.css(p).replace(/(?:\..*|[^0-9.])/g, "")), isNaN(r) && (r = 0), void 0 !== i.firstpos2 || e || (i.firstpos2 = r, i.nextpos2 = i.firstpos2), ("down" === i.dir1 && i.nextpos1 + s.height() > (i.context.is(o) ? a.height() : i.context.prop("scrollHeight")) || "up" === i.dir1 && i.nextpos1 + s.height() > (i.context.is(o) ? a.height() : i.context.prop("scrollHeight")) || "left" === i.dir1 && i.nextpos1 + s.width() > (i.context.is(o) ? a.width() : i.context.prop("scrollWidth")) || "right" === i.dir1 && i.nextpos1 + s.width() > (i.context.is(o) ? a.width() : i.context.prop("scrollWidth"))) && (i.nextpos1 = i.firstpos1, i.nextpos2 += i.addpos2 + (void 0 === i.spacing2 ? 25 : i.spacing2), i.addpos2 = 0), "number" == typeof i.nextpos2 && (i.animation ? s.css(p, i.nextpos2 + "px") : (s.removeClass("ui-pnotify-move"), s.css(p, i.nextpos2 + "px"), s.css(p), s.addClass("ui-pnotify-move"))), i.dir2) { case "down": case "up": s.outerHeight(!0) > i.addpos2 && (i.addpos2 = s.height()); break; case "left": case "right": s.outerWidth(!0) > i.addpos2 && (i.addpos2 = s.width()) }switch ("number" == typeof i.nextpos1 && (i.animation ? s.css(c, i.nextpos1 + "px") : (s.removeClass("ui-pnotify-move"), s.css(c, i.nextpos1 + "px"), s.css(c), s.addClass("ui-pnotify-move"))), i.dir1) { case "down": case "up": i.nextpos1 += s.height() + (void 0 === i.spacing1 ? 25 : i.spacing1); break; case "left": case "right": i.nextpos1 += s.width() + (void 0 === i.spacing1 ? 25 : i.spacing1) } } return this } }, queuePosition: function (t, i) { return e && clearTimeout(e), i || (i = 10), e = setTimeout(function () { c.positionAll(t) }, i), this }, cancelRemove: function () { return this.timer && i.clearTimeout(this.timer), this.animTimer && i.clearTimeout(this.animTimer), "closing" === this.state && (this.state = "open", this.animating = !1, this.elem.addClass("ui-pnotify-in"), "fade" === this.options.animation && this.elem.addClass("ui-pnotify-fade-in")), this }, queueRemove: function () { var t = this; return this.cancelRemove(), this.timer = i.setTimeout(function () { t.remove(!0) }, isNaN(this.options.delay) ? 0 : this.options.delay), this } }), t.extend(c, { notices: [], reload: s, removeAll: function () { t.each(c.notices, function (t, i) { i.remove && i.remove(!1) }) }, removeStack: function (i) { t.each(c.notices, function (t, s) { s.remove && s.options.stack === i && s.remove(!1) }) }, positionAll: function (i) { if (e && clearTimeout(e), e = null, c.notices && c.notices.length) t.each(c.notices, function (t, s) { var e = s.options.stack; e && (e.overlay && e.overlay.hide(), e.nextpos1 = e.firstpos1, e.nextpos2 = e.firstpos2, e.addpos2 = 0, e.animation = i) }), t.each(c.notices, function (t, i) { i.position() }); else { var s = c.prototype.options.stack; s && (delete s.nextpos1, delete s.nextpos2) } }, styling: { brighttheme: { container: "brighttheme", notice: "brighttheme-notice", notice_icon: "brighttheme-icon-notice", info: "brighttheme-info", info_icon: "brighttheme-icon-info", success: "brighttheme-success", success_icon: "brighttheme-icon-success", error: "brighttheme-error", error_icon: "brighttheme-icon-error" }, bootstrap3: { container: "alert", notice: "alert-warning", notice_icon: "glyphicon glyphicon-exclamation-sign", info: "alert-info", info_icon: "glyphicon glyphicon-info-sign", success: "alert-success", success_icon: "bi bi-check-lg-sign", error: "alert-danger", error_icon: "glyphicon glyphicon-warning-sign" } } }), c.styling.fontawesome = t.extend({}, c.styling.bootstrap3), t.extend(c.styling.fontawesome, { notice_icon: "fa fa-exclamation-circle", info_icon: "fa fa-info", success_icon: "fa fa-check", error_icon: "fa fa-warning" }), i.document.body ? r() : t(r), c }; return s(i) }); !function (o, s) { "function" == typeof define && define.amd ? define("pnotify.buttons", ["jquery", "pnotify"], s) : "object" == typeof exports && "undefined" != typeof module ? module.exports = s(require("jquery"), require("./pnotify")) : s(o.jQuery, o.PNotify) }("undefined" != typeof window ? window : this, function (o, s) { return s.prototype.options.buttons = { closer: !0, closer_hover: !0, sticker: !0, sticker_hover: !0, show_on_nonblock: !1, labels: { close: "Close", stick: "Stick", unstick: "Unstick" }, classes: { closer: null, pin_up: null, pin_down: null } }, s.prototype.modules.buttons = { init: function (s, i) { var n = this; s.elem.on({ mouseenter: function (o) { !n.options.sticker || s.options.nonblock && s.options.nonblock.nonblock && !n.options.show_on_nonblock || n.sticker.trigger("pnotify:buttons:toggleStick").css("visibility", "visible"), !n.options.closer || s.options.nonblock && s.options.nonblock.nonblock && !n.options.show_on_nonblock || n.closer.css("visibility", "visible") }, mouseleave: function (o) { n.options.sticker_hover && n.sticker.css("visibility", "d-none"), n.options.closer_hover && n.closer.css("visibility", "d-none") } }), this.sticker = o("<div />", { class: "ui-pnotify-sticker", "aria-role": "button", "aria-pressed": s.options.hide ? "false" : "true", tabindex: "0", title: s.options.hide ? i.labels.stick : i.labels.unstick, css: { cursor: "pointer", visibility: i.sticker_hover ? "d-none" : "visible" }, click: function () { s.options.hide = !s.options.hide, s.options.hide ? s.queueRemove() : s.cancelRemove(), o(this).trigger("pnotify:buttons:toggleStick") } }).bind("pnotify:buttons:toggleStick", function () { var i = null === n.options.classes.pin_up ? s.styles.pin_up : n.options.classes.pin_up, e = null === n.options.classes.pin_down ? s.styles.pin_down : n.options.classes.pin_down; o(this).attr("title", s.options.hide ? n.options.labels.stick : n.options.labels.unstick).children().attr("class", "").addClass(s.options.hide ? i : e).attr("aria-pressed", s.options.hide ? "false" : "true") }).append("<span />").trigger("pnotify:buttons:toggleStick").prependTo(s.container), (!i.sticker || s.options.nonblock && s.options.nonblock.nonblock && !i.show_on_nonblock) && this.sticker.css("display", "none"), this.closer = o("<div />", { class: "ui-pnotify-closer", "aria-role": "button", tabindex: "0", title: i.labels.close, css: { cursor: "pointer", visibility: i.closer_hover ? "d-none" : "visible" }, click: function () { s.remove(!1), n.sticker.css("visibility", "d-none"), n.closer.css("visibility", "d-none") } }).append(o("<span />", { class: null === i.classes.closer ? s.styles.closer : i.classes.closer })).prependTo(s.container), (!i.closer || s.options.nonblock && s.options.nonblock.nonblock && !i.show_on_nonblock) && this.closer.css("display", "none") }, update: function (o, s) { !s.closer || o.options.nonblock && o.options.nonblock.nonblock && !s.show_on_nonblock ? this.closer.css("display", "none") : s.closer && this.closer.css("display", "block"), !s.sticker || o.options.nonblock && o.options.nonblock.nonblock && !s.show_on_nonblock ? this.sticker.css("display", "none") : s.sticker && this.sticker.css("display", "block"), this.sticker.trigger("pnotify:buttons:toggleStick"), this.closer.find("span").attr("class", "").addClass(null === s.classes.closer ? o.styles.closer : s.classes.closer), s.sticker_hover ? this.sticker.css("visibility", "d-none") : o.options.nonblock && o.options.nonblock.nonblock && !s.show_on_nonblock || this.sticker.css("visibility", "visible"), s.closer_hover ? this.closer.css("visibility", "d-none") : o.options.nonblock && o.options.nonblock.nonblock && !s.show_on_nonblock || this.closer.css("visibility", "visible") } }, o.extend(s.styling.brighttheme, { closer: "brighttheme-icon-closer", pin_up: "brighttheme-icon-sticker", pin_down: "brighttheme-icon-sticker brighttheme-icon-stuck" }), o.extend(s.styling.bootstrap3, { closer: "bi bi-x-lg", pin_up: "glyphicon glyphicon-pause", pin_down: "glyphicon glyphicon-play" }), o.extend(s.styling.fontawesome, { closer: "fa fa-times", pin_up: "fa fa-pause", pin_down: "fa fa-play" }), s }); !function (i, t) { "function" == typeof define && define.amd ? define("pnotify.desktop", ["jquery", "pnotify"], t) : "object" == typeof exports && "undefined" != typeof module ? module.exports = t(require("jquery"), require("./pnotify")) : t(i.jQuery, i.PNotify) }("undefined" != typeof window ? window : this, function (i, t) { var o, n = function (i, t) { return (n = "Notification" in window ? function (i, t) { return new Notification(i, t) } : "mozNotification" in navigator ? function (i, t) { return navigator.mozNotification.createNotification(i, t.body, t.icon).show() } : "webkitNotifications" in window ? function (i, t) { return window.webkitNotifications.createNotification(t.icon, i, t.body) } : function (i, t) { return null })(i, t) }; return t.prototype.options.desktop = { desktop: !1, fallback: !0, icon: null, tag: null, title: null, text: null }, t.prototype.modules.desktop = { genNotice: function (i, t) { null === t.icon ? this.icon = "https://sciactive.com/pnotify/includes/desktop/" + i.options.type + ".png" : !1 === t.icon ? this.icon = null : this.icon = t.icon, null !== this.tag && null === t.tag || (this.tag = null === t.tag ? "PNotify-" + Math.round(1e6 * Math.random()) : t.tag), i.desktop = n(t.title || i.options.title, { icon: this.icon, body: t.text || i.options.text, tag: this.tag }), !("close" in i.desktop) && "cancel" in i.desktop && (i.desktop.close = function () { i.desktop.cancel() }), i.desktop.onclick = function () { i.elem.trigger("click") }, i.desktop.onclose = function () { "closing" !== i.state && "closed" !== i.state && i.remove() } }, init: function (i, n) { if (n.desktop) { if (0 !== (o = t.desktop.checkPermission())) return void (n.fallback || (i.options.auto_display = !1)); this.genNotice(i, n) } }, update: function (i, t, n) { 0 !== o && t.fallback || !t.desktop || this.genNotice(i, t) }, beforeOpen: function (i, t) { 0 !== o && t.fallback || !t.desktop || i.elem.css({ left: "-10000px" }).removeClass("ui-pnotify-in") }, afterOpen: function (i, t) { 0 !== o && t.fallback || !t.desktop || (i.elem.css({ left: "-10000px" }).removeClass("ui-pnotify-in"), "show" in i.desktop && i.desktop.show()) }, beforeClose: function (i, t) { 0 !== o && t.fallback || !t.desktop || i.elem.css({ left: "-10000px" }).removeClass("ui-pnotify-in") }, afterClose: function (i, t) { 0 !== o && t.fallback || !t.desktop || (i.elem.css({ left: "-10000px" }).removeClass("ui-pnotify-in"), "close" in i.desktop && i.desktop.close()) } }, t.desktop = { permission: function () { "undefined" != typeof Notification && "requestPermission" in Notification ? Notification.requestPermission() : "webkitNotifications" in window && window.webkitNotifications.requestPermission() }, checkPermission: function () { return "undefined" != typeof Notification && "permission" in Notification ? "granted" === Notification.permission ? 0 : 1 : "webkitNotifications" in window && 0 == window.webkitNotifications.checkPermission() ? 0 : 1 } }, o = t.desktop.checkPermission(), t }); !function (i, o) { "function" == typeof define && define.amd ? define("pnotify.mobile", ["jquery", "pnotify"], o) : "object" == typeof exports && "undefined" != typeof module ? module.exports = o(require("jquery"), require("./pnotify")) : o(i.jQuery, i.PNotify) }("undefined" != typeof window ? window : this, function (i, o) { return o.prototype.options.mobile = { swipe_dismiss: !0, styling: !0 }, o.prototype.modules.mobile = { init: function (i, o) { var t = this, e = null, n = null, s = null; this.swipe_dismiss = o.swipe_dismiss, this.doMobileStyling(i, o), i.elem.on({ touchstart: function (o) { t.swipe_dismiss && (e = o.originalEvent.touches[0].screenX, s = i.elem.width(), i.container.css("left", "0")) }, touchmove: function (o) { if (e && t.swipe_dismiss) { var a = o.originalEvent.touches[0].screenX; n = a - e; var c = (1 - Math.abs(n) / s) * i.options.opacity; i.elem.css("opacity", c), i.container.css("left", n) } }, touchend: function () { if (e && t.swipe_dismiss) { if (Math.abs(n) > 40) { var o = n < 0 ? -2 * s : 2 * s; i.elem.animate({ opacity: 0 }, 100), i.container.animate({ left: o }, 100), i.remove() } else i.elem.animate({ opacity: i.options.opacity }, 100), i.container.animate({ left: 0 }, 100); e = null, n = null, s = null } }, touchcancel: function () { e && t.swipe_dismiss && (i.elem.animate({ opacity: i.options.opacity }, 100), i.container.animate({ left: 0 }, 100), e = null, n = null, s = null) } }) }, update: function (i, o) { this.swipe_dismiss = o.swipe_dismiss, this.doMobileStyling(i, o) }, doMobileStyling: function (o, t) { t.styling ? (o.elem.addClass("ui-pnotify-mobile-able"), i(window).width() <= 480 ? (o.options.stack.mobileOrigSpacing1 || (o.options.stack.mobileOrigSpacing1 = o.options.stack.spacing1, o.options.stack.mobileOrigSpacing2 = o.options.stack.spacing2), o.options.stack.spacing1 = 0, o.options.stack.spacing2 = 0) : (o.options.stack.mobileOrigSpacing1 || o.options.stack.mobileOrigSpacing2) && (o.options.stack.spacing1 = o.options.stack.mobileOrigSpacing1, delete o.options.stack.mobileOrigSpacing1, o.options.stack.spacing2 = o.options.stack.mobileOrigSpacing2, delete o.options.stack.mobileOrigSpacing2)) : (o.elem.removeClass("ui-pnotify-mobile-able"), o.options.stack.mobileOrigSpacing1 && (o.options.stack.spacing1 = o.options.stack.mobileOrigSpacing1, delete o.options.stack.mobileOrigSpacing1), o.options.stack.mobileOrigSpacing2 && (o.options.stack.spacing2 = o.options.stack.mobileOrigSpacing2, delete o.options.stack.mobileOrigSpacing2)) } }, o }); // Test //TE_UpdateTable({ "s": "NDX:IND", "p": 15274.39, "nch": -199.53, "pch": -1.29, "type": "index", "state": "open", "dstate": "open" }, false) //TEST notificationList /*setTimeout(() => { TENotification("United States Core Inflation Rate YoY", "United States Core Inflation Rate YoY reported at 3.3%. Consensus was 3.4%. Previously at 3.4%", "/", "3") }, 25000) setTimeout(() => { TENotification("United States CPI", "United States CPI reported at 314.18. Consensus was 314.63. Previously at 314.07.", "/", "3") }, 30001) setTimeout(() => { TENotification("United States Inflation Rate YoY", "United States Inflation Rate YoY reported at 3.0%. Consensus was 3.1%. Previously at 3.3%.", "/", "3") }, 35002) setTimeout(() => { TENotification("United States Inflation Rate MoM", "United States Inflation Rate MoM reported at -0.1%. Consensus was 0.1%. Previously at 0.0%.", "/", "3") }, 40003) setTimeout(() => { TENotification("United States Core Inflation Rate MoM", "United States Core Inflation Rate MoM reported at 0.1%. Consensus was 0.2%. Previously at 0.2%.", "/", "3") }, 45004)*/ }</script> <script>console.log("/js/chartmk.ascx");</script> <script src="https://d1v8a2ofhkdel3.cloudfront.net/cdn/highstock_exporting.2024.10.1.0.js"></script> <link rel="stylesheet" href="https://d1v8a2ofhkdel3.cloudfront.net/production/css/mk.css?v=20240320" /> <script src="https://d1v8a2ofhkdel3.cloudfront.net/production/js/mk.min.js?v=20240320"></script> <style>.logo-banner {float: none;}</style> <script> $(function () { var quotesTab = $('a[href="#quotes"]'); if (quotesTab) { $(quotesTab[0]).closest("a").addClass("page-scroll-adjusted"); } var financialsLinks = document.getElementById("financialsList") if (financialsLinks) { var financialsTab = $('a[href="#financialsList"]'); if (financialsTab) { $(financialsTab[0]).closest("li").removeClass("d-none"); $(financialsTab[0]).closest("a").addClass("page-scroll-adjusted"); } } }); </script> <script>/*! sortable.js 0.8.0 */(function () { var a, b, c, d, e, g; a = "table[data-sortable]", d = /^-?[£$¤]?[\d,.]+%?$/, g = /^\s+|\s+$/g, c = ["click"], b = function (a, b, c) { return null != a.addEventListener ? a.addEventListener(b, c, !1) : a.attachEvent("on" + b, c) }, e = { init: function (b) { var c, d, f, g, h; for (null == b && (b = {}), null == b.selector && (b.selector = a), d = document.querySelectorAll(b.selector), h = [], f = 0, g = d.length; g > f; f++)c = d[f], h.push(e.initTable(c)); return h }, initTable: function (a) { var b, c, d, f, g, h; if (1 === (null != (h = a.tHead) ? h.rows.length : void 0) && "true" !== a.getAttribute("data-sortable-initialized")) { for (a.setAttribute("data-sortable-initialized", "true"), d = a.querySelectorAll("th"), b = f = 0, g = d.length; g > f; b = ++f)c = d[b], "false" !== c.getAttribute("data-sortable") && e.setupClickableTH(a, c, b); return a } }, setupClickableTH: function (a, d, f) { var g, h, i, j, k, l; for (i = e.getColumnType(a, f), h = function (b) { var c, g, h, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D; if (b.handled === !0) return !1; for (b.handled = !0, m = "true" === this.getAttribute("data-sorted"), n = this.getAttribute("data-sorted-direction"), h = m ? "ascending" === n ? "descending" : "ascending" : i.defaultSortDirection, p = this.parentNode.querySelectorAll("th"), s = 0, w = p.length; w > s; s++)d = p[s], d.setAttribute("data-sorted", "false"), d.removeAttribute("data-sorted-direction"); if (this.setAttribute("data-sorted", "true"), this.setAttribute("data-sorted-direction", h), o = a.tBodies[0], l = [], m) { for (D = o.rows, v = 0, z = D.length; z > v; v++)g = D[v], l.push(g); for (l.reverse(), B = 0, A = l.length; A > B; B++)k = l[B], o.appendChild(k) } else { for (r = null != i.compare ? i.compare : function (a, b) { return b - a }, c = function (a, b) { return a[0] === b[0] ? a[2] - b[2] : i.reverse ? r(b[0], a[0]) : r(a[0], b[0]) }, C = o.rows, j = t = 0, x = C.length; x > t; j = ++t)k = C[j], q = e.getNodeValue(k.cells[f]), null != i.comparator && (q = i.comparator(q)), l.push([q, k, j]); for (l.sort(c), u = 0, y = l.length; y > u; u++)k = l[u], o.appendChild(k[1]) } return "function" == typeof window.CustomEvent && "function" == typeof a.dispatchEvent ? a.dispatchEvent(new CustomEvent("Sortable.sorted", { bubbles: !0 })) : void 0 }, l = [], j = 0, k = c.length; k > j; j++)g = c[j], l.push(b(d, g, h)); return l }, getColumnType: function (a, b) { var c, d, f, g, h, i, j, k, l, m, n; if (d = null != (l = a.querySelectorAll("th")[b]) ? l.getAttribute("data-sortable-type") : void 0, null != d) return e.typesObject[d]; for (m = a.tBodies[0].rows, h = 0, j = m.length; j > h; h++)for (c = m[h], f = e.getNodeValue(c.cells[b]), n = e.types, i = 0, k = n.length; k > i; i++)if (g = n[i], g.match(f)) return g; return e.typesObject.alpha }, getNodeValue: function (a) { var b; return a ? (b = a.getAttribute("data-value"), null !== b ? b : "undefined" != typeof a.innerText ? a.innerText.replace(g, "") : a.textContent.replace(g, "")) : "" }, setupTypes: function (a) { var b, c, d, f; for (e.types = a, e.typesObject = {}, f = [], c = 0, d = a.length; d > c; c++)b = a[c], f.push(e.typesObject[b.name] = b); return f } }, e.setupTypes([{ name: "numeric", defaultSortDirection: "descending", match: function (a) { return a.match(d) }, comparator: function (a) { return parseFloat(a.replace(/[^0-9.-]/g, ""), 10) || 0 } }, { name: "date", defaultSortDirection: "ascending", reverse: !0, match: function (a) { return !isNaN(Date.parse(a)) }, comparator: function (a) { return Date.parse(a) || 0 } }, { name: "alpha", defaultSortDirection: "ascending", match: function () { return !0 }, compare: function (a, b) { return a.localeCompare(b) } }]), setTimeout(e.init, 0), "function" == typeof define && define.amd ? define(function () { return e }) : "undefined" != typeof exports ? module.exports = e : window.Sortable = e }).call(this);</script> <script> $(function(){ console.log("Heatmap2"); //if (!IsDarkMode && window.location.pathname.length <= 1 ) return var IsDarkModeByForce = false; if (window.location.pathname.length <= 1 || window.location.pathname.indexOf("matrix") > -1) IsDarkModeByForce = true; function shadeColor2(color, percent) { var f = parseInt(color.slice(1), 16), t = percent < 0 ? 0 : 255, p = percent < 0 ? percent * -1 : percent, R = f >> 16, G = f >> 8 & 0x00FF, B = f & 0x0000FF; return "#" + (0x1000000 + (Math.round((t - R) * p) + R) * 0x10000 + (Math.round((t - G) * p) + G) * 0x100 + (Math.round((t - B) * p) + B)).toString(16).slice(1); } function colorMyTable() { console.log("Heatmap2 - ColorMyTable") var table = $(".table-heatmap"); var tbody = table.find('tbody'); var _columns = {}; table.find('thead').find('tr').find('th').each(function (i, th) { if ($(th).attr('data-heatmap')) { _columns[i] = { 'index': i, 'limit': $(th).attr('data-heatmap-limit'), 'upColor': $(th).attr('data-heatmap-upcolor') || '#f93639', 'dnColor': $(th).attr('data-heatmap-dncolor') || '#34d65f' }; } }); $(tbody).find('tr').each(function (i, row) { var tdArr = $(row).find('td'); for (var key in _columns) { var thisColumn = _columns[key], td; if (!(td = tdArr[key])) { continue; } var value = $(td).attr('data-heatmap-value') || Number($(td).html().replace('%', '')); if (!value) { //console.log("no value ...", key); continue; } var range = Math.floor(Math.abs(value) / (thisColumn.limit / 10)); if (range > 10) range = 10; var percentToShade = (10 - range) / 10; if (TEComparable == -1 || TEComparable == 2) { thisColumn.upColor = '#34d65f'; thisColumn.dnColor = '#f93639'; } var color = shadeColor2(value < 0 ? thisColumn.upColor : thisColumn.dnColor, percentToShade); //console.log(value, percentToShade) if (IsDarkMode || IsDarkModeByForce) { if ($(td).children().length > 0) $(td).children().css({ 'color': color }); else $(td).css({ 'color': color }); } else $(td).css({ 'background-color': color}); } }); } colorMyTable(); setInterval(colorMyTable, 60 * 1000); }); </script> <style> .table-minimizer { height: 50px; width:100%; padding-top: 12px; color: #000; cursor: pointer; background-color: #fff; /* background: -webkit-linear-gradient(bottom, rgba(255, 255, 255, 0.7), #ffffff); background: -o-linear-gradient(bottom, rgba(255, 255, 255, 0.7), #ffffff); background: -moz-linear-gradient(bottom, rgba(255, 255, 255, 0.7), #ffffff); background: linear-gradient(to bottom, rgba(255, 255, 255, 0.7), #ffffff); */ position: absolute; bottom:0; font-weight: 500; text-align: center; box-shadow: 0px -2px 4px 0px rgba(4, 60, 174, 0.06);; } body.dark-theme .table-minimizer { height: 40px; padding-top: 5px; color: #fff; background-color: #333; box-shadow: 0px -2px 4px 0px rgba(215, 223, 240, 0.06);; /* background: -webkit-linear-gradient(bottom, #333, #222); background: -o-linear-gradient(bottom, #333, #222); background: -moz-linear-gradient(bottom, #333, #222); background: linear-gradient(to bottom, #333, #222); */ } </style> <script> $(function(){ TableMinimizer = { init: function () { $('.table-minimize').each(function (i, item) { var element = $(item), elementHeight = element.outerHeight(), maxHeight = element.attr('data-minimizer-height') ? Number(element.attr('data-minimizer-height')) : 300; //console.log('table height:', elementHeight, 'maxHeight: ', maxHeight); if (elementHeight <= maxHeight) { return; } //apply minimizer var step = element.attr('data-minimizer-step') ? Number(element.attr('data-minimizer-step')) : 300, stepCount = 1; icon = '<svg style="width:24px;height:24px; float: right;" viewBox="0 0 24 24"><path fill="#000" d="M7,10L12,15L17,10H7Z" /></svg>', mask = $('<div class="table-minimizer"><div style="display: table; margin: 0px auto;"><span style="display: inline-block;padding-top: 3px;text-decoration: underline;">Show More</span> '+icon+'</div> </div>'); element.append(mask); element.css({ height: maxHeight }); mask.on('click', function (e) { stepCount++; var newHeigh = stepCount * step; //SHOW ALL element.css({ height: elementHeight }); mask.hide(); return; if (newHeigh > elementHeight) { element.css({ height: elementHeight }); mask.hide(); return; } element.css({ height: newHeigh }); }); }); } }; TableMinimizer.init(); }); </script> <script> $(function(){ console.log("js/alerts.ascx") var isAlertsLoaded = false; function LoadAlertsScript() { console.log("Loading Alerts JS") $.getScript('https://d107vmm87795sh.cloudfront.net/historical/te-alerts-bs5.js?v=20230830'); //Bootstrap3: https://d107vmm87795sh.cloudfront.net/historical/te-alerts.js?v=20200117 isAlertsLoaded = true; } $('a[data-bs-toggle="tab"]').on('shown.bs.tab', function (e) { if (!isAlertsLoaded) { var target = $(e.target).attr("href"); if (target == "#alerts") { LoadAlertsScript(); $(window).scrollTop(0); } else if (target == "#calendar-table") { $("#pagemenutabs li").removeClass("active"); document.getElementById("calendar-table").scrollIntoView(); }; } }); if (!isAlertsLoaded && location.href.indexOf("#alerts") != -1) { LoadAlertsScript(); } }); </script> <script type="text/javascript" src="//d3fy651gv2fhd3.cloudfront.net/js/search.min.js?v=20240502" async></script> <script> TENotificationsHistorical = [] TENotificationsNews = [] //console.log('• Notifications Script Loaded - 20240701') setTimeout(() => { getNotificationsFromCookie() loadBellStatus() },1000) function loadBellStatus() { //console.log("• get bell status from cookie") var seenData = false const cookieData = document.cookie.split(';').find(item => item.trim().startsWith('TENewNotifications')); if (cookieData) { seenData = cookieData.split('TENewNotifications=')[1].split(',')[0] } if (seenData == 'true') { //console.log("new notification") $('#notification-new').show() $('#notification-empty').hide() } else { $('#notification-new').hide() $('#notification-empty').show() } } function setNotificationCookieStatus(status) { document.cookie = `TENewNotifications=${status.toString()}; expires=${createExpirationDate('eod')}; path=/`; } function changeIconStatus(isHover) { try { //console.log("change bell") if (TENotificationsHistorical.length > 0 && !isHover) { $('#notification-new').show() $('#notification-empty').hide() setNotificationCookieStatus(true) } else if (TENotificationsNews.length > 0 && !isHover) { $('#notification-new').show() $('#notification-empty').hide() setNotificationCookieStatus(true) } else { $('#notification-new').hide() $('#notification-empty').show() setNotificationCookieStatus(false) } } catch (e) { console.error(e) } } function timeAgo(datetime) { try { const now = new Date(); const diff = now - new Date(datetime); let seconds = Math.floor(diff / 1000); const minuteInSecs = 60; const hourInSecs = minuteInSecs * 60; let timeAgoString; if (seconds < minuteInSecs) { if (seconds == 0) { seconds = 1 } const plural = seconds == 1 ? '' : 's'; timeAgoString = `${seconds} second${plural} ago`; } else if (seconds < hourInSecs) { const minutes = Math.floor(seconds / minuteInSecs); timeAgoString = `${minutes} minutes ago`; } else { const hours = Math.floor(seconds / hourInSecs); const plural = hours > 1 ? 's' : ''; timeAgoString = `${hours} hour${plural} ago`; } return timeAgoString; } catch (e) { console.error(e) } } function createExpirationDate(span) { const expires = new Date(); if (span == '1d') { expires.setDate(expires.getDate() + 1) return expires.toUTCString() } else if (span == '1h') { expires.setHours(expires.getHours() + 1); return expires.toUTCString(); } else if (span == 'eod') { //end of day const expiresTime = new Date(expires.getTime()); expiresTime.setHours(23, 59, 59); return expiresTime.toUTCString(); } } function removeNotificationIndex(i) { try { if (TENotificationsHistorical.length == 0 && TENotificationsNews.length > 0) { TENotificationsNews.splice(i, 1); document.cookie = `TELastNews=${JSON.stringify(TENotificationsNews)}; path=/`; } if (TENotificationsHistorical.length > 0) { TENotificationsHistorical.splice(i, 1); } $('.notification-list').empty(); addNotificationCookie() if (TENotificationsNews.length == 0 || (TENotificationsNews.length == 0 && TENotificationsHistorical.length == 0)) { addEmptyContent() } if (TENotificationsHistorical.length > 0 || TENotificationsNews.length > 0) { upsertNotification(null, true, false) } } catch (e) { console.error(e) } } function addEmptyContent() { try { //console.log("Add Empty Content") const notificationList = $('.notification-list'); notificationList.empty(); //notificationList.append('<div style="display:flex;justify-content:space-between;align-itens:center"><span style="margin-left:18px"><b>Notifications</b></span></div>') let html = `<div class="empty-notificationlist"> <div class="empty-notificationlist-content"> <span>You have no new notifications</span> <br> <i class="bi bi-bell-slash-fill"></i> <br> <div><a href="/stream" title="Show all news" class="empty-notificationlist-more"><div class="btn btn-outline-secondary">All News</div></a></div> </div> </div>`; notificationList.append(html); } catch (e) { console.error(e) } } function addContent() { try { //console.log("AddContent") const notifiList = TENotificationsHistorical.length > 0 ? TENotificationsHistorical : TENotificationsNews; const notificationList = $('.notification-list'); notificationList.empty(); if (notifiList.length > 0) { notificationList.append('<div class="notificationList-first-title"><span style="margin-left:18px"><b>Notifications</b></span><span class="notifications-clean-all" title="Delete all notifications">Clear all</span></div>') for (let i = notifiList.length - 1; i >= 0; i--) { const notification = notifiList[i]; let html = `<div> <div class="card notificationlist-card" style="margin:0;"> <div class="card-body notificationlist-body"> <div class="notificationlist-header"> <div class="notificationlist-header-title"><a href="${notification.url}"><b>${notification.title}</b></a><span class="badge badge-notification-type" style="background-color:${notification.color}">${notification.type}</span></div> <span id="n-${i}" title="Delete" style="cursor:pointer"><i id="cleanIndividualNotif" class="bi bi-trash3"></i></span> </div> <span style="font-size:15px">${notification.text}</span> <div class="notificationlist-footer"> <p>${timeAgo(notification.datetime)}</p> </div> </div> </div> </div>`; notificationList.append(html); $(`#n-${i}`).on('click', function () { removeNotificationIndex(i) }) } notificationList.append('<div class="notificationlist-more-div"><a href="/stream" title="Show more streams" class="notificationlist-more"><div class="btn btn-outline-secondary">More News</div></a></div>') $('.notifications-clean-all').on('click', function () { //console.log("Clicked") notificationList.empty(); if (TENotificationsHistorical.length > 0) { document.cookie = "TENotifications=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/"; TENotificationsHistorical = [] } else if (TENotificationsNews.length > 0) { document.cookie = `TELastNews=[]; path=/`; TENotificationsNews = [] } upsertNotification(null, true, false) }); } } catch (e) { console.error(e) } } function fetchLastNews() { try { //console.log("• Fetch News") TENotificationsNews = [] const newsUrl = '/ws/stream.ashx?start=0&size=3' fetch(newsUrl) .then(response => { if (!response.ok) { console.error(`HTTP error! status: ${response.status}`); } return response.json(); }) .then(data => { for (let item of data) { if (item.description.length > 300) { item.description = item.description.substring(0, 300) + ' ...'; let lastPeriodIndex = Math.min(item.description.lastIndexOf('. '), 300); if (lastPeriodIndex !== -1) { item.description = item.description.substring(0, lastPeriodIndex + 1) + '..'; } else { item.description = item.description.substring(0, 300) + '...'; } } TENotificationsNews.unshift({ title: item.title, url: item.url, text: item.description, importance: item.importance, datetime: item.date, type: 'News', color: '#ddd' }) } document.cookie = `TELastNews=${JSON.stringify(TENotificationsNews)}; path=/`; // console.log("• Saved News on Cookies TELastNews") upsertNotification(null, true, false) }) .catch(error => { console.error('Error fetching last news:', error); }); } catch (e) { console.error(e) } } function getNotificationsFromCookie() { try { //console.log("• get Notifications From Cookie") const cookieData = document.cookie.split(';').find(item => item.trim().startsWith('TENotifications')); if (cookieData) { let encodedData = cookieData.split('TENotifications=')[1].split(',') //const decrompressedData = pako.inflate(encodedData, { to: 'string' }); try { TENotificationsHistorical = JSON.parse(encodedData); //console.log(TENotificationsHistorical) if (TENotificationsHistorical.length > 0) { upsertNotification(null, true, false) } } catch (error) { console.error("Error parsing existing cookie data:", error); } } } catch (e) { console.error(e) } } function estimateNotificationSize() { return JSON.stringify(TENotificationsHistorical).length; } function getCookieSize() { try { let safeLoop = 0 const cookies = document.cookie.split(';'); let total = 0 for (const cookie of cookies) { if (safeLoop == 50) { return 0; } const [key, value] = cookie.trim().split('='); if (key !== 'TENotifications') { total = total + JSON.stringify(cookie).length + 2 } safeLoop++ } return total; } catch (e) { console.error(e); } } function manageCookieSize(maxSize) { try { //console.log("• Check threshold of cookies size"); const currentCookieSize = getCookieSize(); const currentNotificationsSize = estimateNotificationSize(); let totalBytes = currentCookieSize + currentNotificationsSize; let nLoopCount = 0; //console.log("• Current Cookies Estimated Size: " + currentCookieSize); //console.log("• With Notifications Cookie Estimated Size: " + currentNotificationsSize); if (totalBytes > maxSize) { while (nLoopCount < 10 && totalBytes > maxSize) { //console.log("---------------------> nLoopCount: " + nLoopCount); TENotificationsHistorical.shift(); totalBytes = currentCookieSize + estimateNotificationSize(); //console.log(`• Notification removed to control cookie size. New size: ${totalBytes} bytes`); if (totalBytes <= maxSize) { //console.log(`• Cookie size is already within limit: ${totalBytes} bytes`); break; } nLoopCount++; } }// else { //console.log(`• Cookie size is within limit: ${totalBytes} bytes`); //} } catch (e) { console.error(e); } } function addNotificationCookie() { try { //console.log("• Add Notifications on Cookie"); const isEmptyNews = TENotificationsNews.length === 0; const isEmptyHistorical = TENotificationsHistorical.length === 0; document.cookie = `TELastNews=${isEmptyNews ? '[]' : JSON.stringify(TENotificationsNews)}; path=/`; manageCookieSize(3400); if (isEmptyHistorical) { document.cookie = `TENotifications=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/`; } else { document.cookie = `TENotifications=${JSON.stringify(TENotificationsHistorical)}; expires=${createExpirationDate('1d')}; path=/`; } } catch (e) { console.error(e); } } function createDefaultNotification(n) { return { ...n, datetime: new Date(), type: n.importance > 0 ? 'Calendar' : 'News', color: n.importance > 0 ? '#ffb3ba' : '#ddd', }; } function upsertNotification(n, cookie, fromStream) { try { //console.log("-----------------------------------------------> Start of upsert Notification on list flow"); //console.log(`• Dealing with ${JSON.stringify(n)}`); if (!cookie) { const newNotification = createDefaultNotification(n); const existingNotification = TENotificationsHistorical.find(item => item.text === newNotification.text); if (existingNotification) { TENotificationsHistorical.splice(TENotificationsHistorical.indexOf(existingNotification), 1); } TENotificationsHistorical.push(newNotification); } const notificationListContainer = $('.offcanvas-top.notification-list.container'); const notificationList = $('.notification-list'); if (!notificationList.length) { notificationListContainer.append(`<div class="offcanvas-header"></div>`); } if (TENotificationsHistorical.length > 0 || TENotificationsNews.length > 0) { if (fromStream == true) { changeIconStatus(false); setNotificationCookieStatus(true); } if (!cookie) { addNotificationCookie(); } addContent(); } else { addEmptyContent(); } } catch (e) { console.error(e); } } $('.btn-notification-list').on('click', function (event) { //console.log('click') event.preventDefault() let cookieNewsIsPresent = false //console.log("• Check if there is LastNews Cookie") const cookieData = document.cookie.split(';').find(item => item.trim().startsWith('TELastNews')); if (cookieData) { let cookieNews = cookieData.split('TELastNews=')[1].split(',') cookieNewsIsPresent = true TENotificationsNews = JSON.parse(cookieNews) } //console.log(cookieNewsIsPresent) if (TENotificationsHistorical.length == 0 && TENotificationsNews.length == 0 && !cookieNewsIsPresent) { //console.log("IF") $('.offcanvas-top').removeClass("show") $('.offcanvas-top').removeClass("showing") fetchLastNews() } else { if (TENotificationsNews.length > 0 || TENotificationsHistorical.length > 0) { upsertNotification(null, true, false) } else { addEmptyContent() } } changeIconStatus(true) }); </script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-SZ14JCTXWQ"></script> <script> window.dataLayer = window.dataLayer || []; function ga() { dataLayer.push(arguments); } ga('js', new Date()); ga('config', 'G-SZ14JCTXWQ', { 'allow_google_signals': false }); </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10