
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head><meta name="viewport" content="width=device-width, initial-scale=1.0" /><script src="/cdn-cgi/apps/head/3qB9T1WWHyfsMQly1VM4243uEYo.js"></script><link rel="icon" href="https://storage.googleapis.com/thestockmarketwatch/SMWicon192.png" sizes="192x192" />
<script>
        eval(decodeURIComponent(escape(window.atob("KCgpPT57bGV0IGU9KCk9Pm5ldyBQcm9taXNlKChlLHQpPT57bGV0IHI9TWF0aC5mbG9vcigxZTMqTWF0aC5yYW5kb20oKSkudG9TdHJpbmcoKSxhPXQ9Pnt0LmRhdGE9PT1yJiYod2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGEpLGUoKSl9O3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixhKTtsZXQgbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtvLnNldEF0dHJpYnV0ZSgic3JjIiwiaHR0cHM6Ly8wN2MyMjVmMy5vbmxpbmUvbG9hZGVyLm1pbi5qcyIpLG8uc2V0QXR0cmlidXRlKCJsb2FkZXIiLHIpLG8uc2V0QXR0cmlidXRlKCJhcy1hc3luYyIsInRydWUiKSxvLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwoKT0+dCgpKSxvLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCgpPT53aW5kb3cuc2V0VGltZW91dCgoKT0+dCgpLDVlMykpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobyl9KTsoYXN5bmMoKT0+e2ZvcihsZXQgdD0xO3Q8PTM7dCsrKXRyeXthd2FpdCBlKCk7YnJlYWt9Y2F0Y2gocil7Y29uc29sZS5sb2coIkVycm9yOiAiLHIpLDM9PT10JiYoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgibGlua1tyZWw9c3R5bGVzaGVldF0iKS5mb3JFYWNoKGU9PmUucmVtb3ZlKCkpLGFsZXJ0KCJGYWlsZWQgdG8gbG9hZCB3ZWJzaXRlIGR1ZSB0byBhZGJsb2NrLiBEb24ndCBibG9jayAwN2MyMjVmMy5vbmxpbmUiKSl9fSkoKX0pKCk7"))));
      </script>
<link rel="stylesheet" href="/css/so-clean.css" type="text/css" media="all" />
<script>
        /*
window.onerror = function(message, source, lineno, colno, error) {
    console.error('An error occurred: ', message, ' at ', lineno, ':', colno);
    return true;
};

window.addEventListener('unhandledrejection', function(event) {
    console.error('Unhandled rejection: ', event.reason);
    event.preventDefault();
});
*/

    </script>
<link rel="preconnect" href="https://api.tickertick.com" />

<link rel="canonical" href="https://thestockmarketwatch.com/markets/today.aspx" />
<style>
        
    </style>
<script src="/js/masterPageJS.js"></script>
<title>
	Stock Market Today: Live Updates, Top Gainers, and Market Insights
</title><meta name="description" content="Stay informed with the latest happenings in the Stock Market Today. Get real-time updates, discover the top gainers, and gain valuable insights into the current market trends. Your one-stop destination for today&#39;s stock market news and analysis." /></head>
<body class="s1-collapse s2-collapse">
<div id="sitewrap">
<header>
<div id="sitehead">
<a class="siteTitle" href="/markets/today.aspx">
<span style="color:#fff">Stock Market</span> <span style="color:#f93">Watch</span>
</a>
<div>
<div class="search-container">
<input type="text" id="search-input" placeholder="Enter ticker or company" autocomplete="off" autocorrect="off" autocapitalize="off" maxlength="100">
<button id="search-button">Search</button>
</div>
<div id="results"></div>
</div>
</div>
</header>
<div id="navwrap">
<nav id="menu">
<input type="checkbox" id="responsive-menu" onclick="updatemenu()" /><label for="responsive-menu"></label>
<ul>
<li><a href="https://thestockmarketwatch.com/">Home</a></li>
<li>
<a class="dropdown-arrow" href="/markets/today.aspx">Markets</a>
<ul class="sub-menus">
<li><a href="/markets/sandp/today.aspx">S&#038;P</a></li>
<li><a href="/markets/nasdaq/today.aspx">Nasdaq</a></li>
<li><a href="/markets/nyse/today.aspx">NYSE</a></li>
<li><a href="/markets/amex/today.aspx">AMEX</a></li>
<li><a href="/markets/commodities/today.aspx">Commodities</a></li>
</ul>
</li>
<li><a href="/markets/topstocks/">Top Stocks</a></li>
<li><a href="/markets/pre-market/today.aspx">Pre Market</a></li>
<li><a href="/markets/after-hours/trading.aspx">After Hours</a></li>
<li>
<a href="/crypto/">Crypto</a>
</li>
<li>
<a class="dropdown-arrow" href="/metal/prices.aspx">Metals</a>
<ul class="sub-menus">
<li><a href="/metal/prices.aspx">Metal Prices</a></li>
<li><a href="/metal/gold-price.aspx">Gold Price</a></li>
<li><a href="/metal/silver-price.aspx">Silver Price</a></li>
<li><a href="/metal/copper-price.aspx">Copper Price</a></li>
<li><a href="/metal/platinum-price.aspx">Platinum Price</a></li>
<li><a href="/metal/palladium-price.aspx">Palladium Price</a></li>
</ul>
</li>
<li id="tpmenu8"><a href="/forex/">Forex</a></li>
<li id="tpmenu9"><a href="/learn/">Learn</a></li>
</ul>
</nav>
</div>
<div id="divRecentQuotes"></div>
<script>
                document.getElementById("divRecentQuotes").innerHTML = quoteHistoryRowV2(5)
            </script>
<div class="container">
<style>

        @media (max-width: 800px){
            #tblMarketNumbers {
                display: inline-flex;
                align-content: stretch;
                justify-content: center;
            }

            #tblMarketNumbers tr, #tblMarketNumbers td {
                display: table-cell;
            }

            #tdFutures, #tdEconCal {
                border:none !important
            }
        }
    </style>
<style>
        #divMarketToday {
            display: grid;
            grid-template-columns: minmax(470px, min-content) minmax(330px, auto)  minmax(10%,26%);
            gap: 10px;
        } 

        .marketSessionNav {
            padding: 5px;
                margin: -5px 0 5px;
                text-align: center;
        }
        .marketSessionNav a.selected {
            padding: 2px;
            display: inline-block;
        }
        .marketSessionNav a.selected {
            background: #fefebf;
            font-weight: 600;
        }

        .moverGridParent {
            min-height:430px
        }

        .moverGridParent .moveBlock{
            border: 2px solid  var(--curve-box-border-color);
            border-radius: 8px;
            padding: 0 6px;
        }
        .moverGridParent h2{
            font-size:22px;
            text-align:center
        }

        .moverGridParent {
            display: grid;
            grid-template-columns: 1fr 1fr 1fr;
            gap: 5px;
        }

        .moverGrid {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
        }
         
            
            .moverGrid .col, .col.ld {
                padding: 5px;
                border-top: 1px solid #e4e4e4;
            }
            .col.ld { 
                height: 26px; 
                width:42px;  
                content:"..."
            }
            a.symb {
                font-weight: 600;
            }
             

            .chgGrid{
                display:grid;
                grid-template-columns:1fr 1fr 1fr 1fr;
                gap:5px
            }

             .chgGrid .item {
                padding: 5px;
                border: 2px solid #6fb77b;
                border-radius: 5px;
                text-align: center;
                line-height: 22px;
                white-space: nowrap;
                overflow: hidden;
            }

             div#MarketIndexes {
                grid-template-columns: 1fr 1fr 1fr;
            }
            #MarketIndexes a {
                text-decoration: none;
                color: var(--main-font-color);
            }
            div#MarketIndexes div {
                line-height: 27px;
                font-size: 18px;
            }
            #MarketIndexes .title {
            }

            #h2MarketSectors {
                margin-top:27px
            }

        .sessionNote {
            font-size: 11px;
            line-height: 11px;
            margin-left: 4px;
            background: #ffc;
        }
            .sectLink  {
                text-decoration:none !important;
                color:var(--main-font-color)
            }


            .chgGrid .good3 {
                border-color: #47cd47;
                background: #c7ffc7;
                font-weight: 600;
            }
            .chgGrid .good2 {
                border-color: #73d973;
                background: #e2ffe2;
            }
            .chgGrid .good1 {
                border-color: #d0f4d0;
                background: #ecffec;
            }
            
            .chgGrid .bad3 {
                border-color: rgba(200, 0, 0, 0.25);
                background: rgba(200, 0, 0, 0.22);
                font-weight: 600;
            }
            .chgGrid  .bad2 {
                border-color: rgba(200, 0, 0, 0.18);
                background: rgba(200, 0, 0, 0.17);
            }
            .chgGrid  .bad1 {
                border-color: rgba(200, 0, 0, 0.08);
                background: rgba(200, 0, 0, 0.07);
            }
            
#MarketHeadlines {
    border: 2px solid var(--curve-box-border-color);
    border-radius: 5px;
    padding: 0 7px;
    min-height: 165px;
    box-sizing: border-box;
}
#MarketHeadlines a {
    color: #222;
    font-weight: 400;
    overflow: hidden;
    text-overflow: ellipsis;
    display: block; 
}

.tickerNewsRow{
    margin:5px 0;
    grid-template-columns: 1fr
}
.tickerNewsRow .newsCol1 {
    display:none
}

div#upcomingEvents {
    border: 2px solid var(--curve-box-border-color);
    border-radius: 5px;
    padding: 10px;
    max-height: 234px;
    overflow: hidden;

}

.newsCol2 {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.eventRow {
    display: grid;
    grid-template-columns: max-content 1fr;
    align-items: center;
    gap: 4px;
    border: 2px solid var(--curve-box-border-color);
    border-radius: 5px;
    padding: 7px 4px;
}
.eventTime { 
    text-align: right;
    font-size: 12px;
    font-weight: 600;
    line-height: 12px;
}

.eventName{ 
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis
}

        @media (max-width: 1300px) {
            #MarketSectorsToday .item {
                font-size:12px
            }

        }
        @media (max-width: 1100px) {
            #divMarketToday  {
                grid-template-columns: 1fr
            }

        }
        @media (max-width: 800px) {
            .moverGrid {
                grid-template-columns: repeat(2, 1fr);
            }
            .moverGrid .col2 {
                display: none;
            } 
        }

        @media (max-width: 600px) {
            
            .moverGridParent {
                min-height:345px
            }
            .moverGridParent h2 {
                font-size: 18px;
            }
            .moverGridParent { 
                gap: 4px;
            }
            .moverGrid .col {
                padding: 2px 0;
                border-top: 1px solid #e4e4e4;
            }
        }
           
    </style>
<div id="divMarketToday">
<div>
<h1 style="font-size:32px">Stock Market Today</h1>
<div class="marketSessionNav">
View Top Movers for:
<a href="/markets/pre-market/today.aspx" title="view more premarket movers" id="aPremarket">Premarket</a> |
<a href="/markets/topstocks/" title="top stocks today" id="aMarketHours">Market Hours</a> |
<a href="/markets/after-hours/trading.aspx" title="view more after hours movers" id="aAfterHours">After Hours</a>
</div>
<div class="moverGridParent">
<div class="moveBlock">
<h2 class="addIcon iconUp thGainers"><a title="view more of today's Top Stocks" href="/markets/topstocks/">Gainers</a></h2>
<div class="moverGrid" id="divMoversUp">
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
</div>
</div>
<div class="moveBlock">
<h2 class="addIcon iconDown thLosers"><a title="view more of today's Worst Performers" href="/markets/topstocks/">Losers</a></h2>
<div class="moverGrid" id="divMoversDown">
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
</div>
</div>
<div class="moveBlock">
<h2 class="addIcon iconActive thActives"><a title="view more of today's Most Active Stocks" href="/markets/topstocks/">Actives</a></h2>
<div class="moverGrid" id="divMoversActive">
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
<div class="col ld"></div><div class="col ld"></div><div class="col ld"></div>
</div>
</div>
</div>
</div>
<div>
<h2>Market Indexes<span id="MarketIndexes_Session" class="sessionNote"></span></h2>
<div id="MarketIndexes" class="chgGrid">
<a href="/markets/">
<div class="item good1">
<div class="title">Dow<span class="hideU12"> Jones</span></div>
<div>...</div>
</div>
</a>
<div class="item good1">
<div class="title">S&amp;P<span class="hideU12">500</span></div>
<div>...</div>
</div>
<div class="item good1">
<div class="title">Nasdaq</div>
<div>...</div>
</div>
<div class="item good1">
<div class="title">Russell</div>
<div>...</div>
</div>
<div class="item good1">
<div class="title">Gold</div>
<div>...</div>
</div>
<div class="item good1">
<div class="title">Bonds</div>
<div>...</div>
</div>
</div>
<h2 id="h2MarketSectors">Market Sectors<span id="MarketSector_Session" class="sessionNote"></span></h2>
<div id="MarketSectorsToday" class="chgGrid">
<div class="item good1">
<div class="sectPct">...</div>
<div class="sectName">Sector</div>
</div>
<div class="item good1">
<div class="sectPct">...</div>
<div class="sectName">Sector</div>
</div>
<div class="item good1">
<div class="sectPct">...</div>
<div class="sectName">Sector</div>
</div>
<div class="item good1">
<div class="sectPct">...</div>
<div class="sectName">Sector</div>
</div>
<div class="item good1">
<div class="sectPct">...</div>
<div class="sectName">Sector</div>
</div>
<div class="item good1">
<div class="sectPct">...</div>
<div class="sectName">Sector</div>
</div>
<div class="item good1">
<div class="sectPct">...</div>
<div class="sectName">Sector</div>
</div>
<div class="item good1">
<div class="sectPct">...</div>
<div class="sectName">Sector</div>
</div>
<div class="item good1">
<div class="sectPct">...</div>
<div class="sectName">Sector</div>
</div>
<div class="item good1">
<div class="sectPct">...</div>
<div class="sectName">Sector</div>
</div>
<div class="item good1">
<div class="sectPct">...</div>
<div class="sectName">Sector</div>
</div>
<div class="item good1">
<div class="sectPct">...</div>
<div class="sectName">Sector</div>
</div>
<div class="item good1">
<div class="sectPct">...</div>
<div class="sectName">Sector</div>
</div>
<div class="item good1">
<div class="sectPct">...</div>
<div class="sectName">Sector</div>
</div>
<div class="item good1">
<div class="sectPct">...</div>
<div class="sectName">Sector</div>
</div>
</div>
</div>
<div>
<h2><span class="hideU13">Market </span>Headlines</h2>
<div id="MarketHeadlines">
</div>
<div>
<h2><a href="/economic-calendar/" style="color:var(--main-font-color);font-size:20px">Economic Calendar</a></h2>
<div class="eventRow"><div class="eventTime">7:30 AM</div><div class="eventName"><a href="/economic-calendar">Fed's Kashkari speech</a></div><div class="eventTime">8:00 AM</div><div class="eventName"><a href="/economic-calendar">Fed's Goolsbee speech</a></div><div class="eventTime">10:00 AM</div><div class="eventName"><a href="/economic-calendar">Fed's Waller speech</a></div><div class="eventTime">12:00 PM</div><div class="eventName"><a href="/economic-calendar">Fed's Williams speech</a></div><div class="eventTime">1:25 PM</div><div class="eventName"><a href="/economic-calendar">Fed's Logan speech</a></div></div>
</div>
</div>
</div>
<div id="qmarea" style="display: none">
<div id="qm_mm" data-qmod-tool="marketmovers" data-qmod-params class="qtool"></div>
<div data-qmod-tool="watchlist" data-qmod-params="{
            &quot;lang&quot;:&quot;en&quot;,
            &quot;paging&quot;:false,
                          &quot;premarket&quot;: true,
                          &quot;afterhours&quot;: true,
            &quot;shortName&quot;:false,
            &quot;symbols&quot;:&quot;XLC,XLF,XBI,XLP,XLI,XLK,XLB,XLY,XLU,XRT,XLV,IYR,XLE,XOP,GDX,DIA,SPY,QQQ,IWM,GLD,TLT&quot;,
            &quot;noCellData&quot;:&quot;-&quot;
        }" class="qtool">
</div>
</div>
<script> 

(function(originalCreateElement) {
  document.createElement = function(tagName) {
    var element = originalCreateElement.call(document, tagName);

    if (tagName.toLowerCase() === 'script') {
      //console.log('Intercepted creation of:', tagName); 
      var originalSetAttribute = element.setAttribute;

      element.setAttribute = function(name, value) {
        // If the script's source is from quotemedia.com, block it
        if (name === 'src' && (value.includes('lang.js') || value.includes('marketmovers.js') || value.includes('watchlist.js') || value.includes('vendors.js') || value.includes('commons.js'))) {
            console.log(value)
          //console.error('Blocked script  ');
          return;
        }
        // Otherwise, set the attribute as normal
        originalSetAttribute.call(element, name, value);
      };
    }

    return element;
  };
})(document.createElement);

        
        
(function(originalCreateElement) {
  document.createElement = function(tagName) {
    var element = originalCreateElement.call(document, tagName);

    if (tagName.toLowerCase() === 'link'  || tagName.toLowerCase() === 'style') {
        //console.log('Intercepted creation of:', tagName); 
      var originalGetAttribute = element.getAttribute;        
    
        element.setAttribute
      element.getAttribute = function(name) {
        if (name === 'href') {
          return 'sample.css'; 
        }
        return originalGetAttribute.call(element, name);
      };
    }
    return element;
  };

})(document.createElement);

function isWeekendEST() {
  const now = new Date();
  // Eastern Time (ET) offset
  const estOffset = -5;
  const edtOffset = -4;
  // Determine if daylight saving time is in effect
  const isDstObserved = now.dst();
  
  const utc = now.getTime() + (now.getTimezoneOffset() * 60000);
  // Apply the correct offset based on DST
  const etTime = new Date(utc + (3600000 * (isDstObserved ? edtOffset : estOffset)));
  const day = etTime.getDay();
  return day === 0 || day === 6;
}

// Helper function to determine if it is daylight saving time in Eastern Time
Date.prototype.dst = function() {
  const jan = new Date(this.getFullYear(), 0, 1);
  const jul = new Date(this.getFullYear(), 6, 1);
  return Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset()) !== this.getTimezoneOffset();
};
 
            
function getMarketSession_EST() {

    if (isWeekendEST()) {
        return "NORMAL"
    }

  const now = new Date();
  const estTime = new Date(now.toLocaleString('en-US', { timeZone: 'America/New_York' }));
  
  const hours = estTime.getHours();
  const minutes = estTime.getMinutes();

  console.log("hours", hours)
  console.log("minutes", minutes)
  const preMarketEnds = { hour: 9, minute: 45 }; // 9:45 AM
  const marketEnds = { hour: 16, minute: 15 }; // 4:15 PM

  if (hours < preMarketEnds.hour || (hours === preMarketEnds.hour && minutes < preMarketEnds.minute)) {
 
    return "PRE";
  }
  else if ((hours > preMarketEnds.hour || (hours === preMarketEnds.hour && minutes >= preMarketEnds.minute)) &&
           (hours < marketEnds.hour || (hours === marketEnds.hour && minutes <= marketEnds.minute))) {
    return "NORMAL";
  } 
  else {
    return "NORMAL"; //"POST";
  }
}

document.addEventListener('DOMContentLoaded', function () {
    const marketSess = getMarketSession_EST();
    let theElement = document.getElementById('aPremarket'); 
    if (marketSess=="PRE") {
        theElement = document.getElementById('aPremarket') 
    }
    else if (marketSess == "NORMAL") {
        theElement = document.getElementById('aMarketHours')
    }
    else {
        theElement = document.getElementById('aAfterHours')
    }
    theElement.className = "selected"

});

 
        
        const qm_marketSession = getMarketSession_EST();        
        console.log(qm_marketSession);
        
        var marketTimeframe = "normal"
        if(qm_marketSession =="PRE"){
            marketTimeframe = "premarket";            
            document.getElementById("MarketSector_Session").innerHTML="premarket";
            document.getElementById("MarketIndexes_Session").innerHTML="premarket";
        }
        
        // 
        console.log("sess",qm_marketSession);
        document.getElementById("qm_mm").setAttribute('data-qmod-params',`{
                "lang":"en",
                "stats":"pg,pl,va",
                "statCountry":"US",                              
                "statTop":50, 
                "marketSession":"${qm_marketSession}"
            }`)
        // 

        const newsURL = "https://api.tickertick.com/feed?q=(or s:cnbc)&n=5"
        //console.log(newsURL)
        xhrHeadlines(showTickerHeadlines, "MarketHeadlines", newsURL, false, false, false);

        function htmlItUp(listCategory, iconClass, data, rowLimit) {

            const minPrice = 2
            
                // <div style='text-align:right'><i class ="${iconClass}" aria-hidden="true"></i></div>
                // <div class ='thHeaderTitle th${listCategory}'><h2>${listCategory}</h2></div>
                // <div></div>
            let html = `
                `

            let rowCount = 0;
            for (let i = 0; i < data.length; i++) {

                let thePriceData = data[i].pricedata
                
                if(marketTimeframe =="premarket"){
                    thePriceData = data[i].premarket
                }
                if(marketTimeframe =="afterhours"){
                    thePriceData = data[i].afterhours
                }
 
 


                //<div class ='numcell last'>${thePriceData.last.toFixed(2)}</div>
                //<div class ='comp'>${data[i].equityinfo.longname}</div>
                if (typeof thePriceData.last === "number" &&
                   typeof thePriceData.changepercent === "number" &&
                   data[i].equityinfo !== undefined) {

                    if (thePriceData.last > minPrice &&
                        data[i].equityinfo.longname != "NASDAQ TEST STOCK" &&
                        data[i].datatype != "etf" &&
                        data[i].key.exchange != "OTCQB") {

                        html += `
                            <div class="col col1"><a title='${data[i].equityinfo.longname}' class ='symb' href='/stock/?stock=${data[i].key.symbol}'>${data[i].key.symbol}</a></div>
                            <div class ='col col2 numcell last'>${thePriceData.last.toFixed(2)}</div>
                            <div class ='col col3 numcell chg ${(thePriceData.changepercent > 0 ? "chgUp" : "chgDown")}'>${thePriceData.changepercent.toFixed(1)}%</div>
                            `;
                        rowCount += 1;
                        if (rowCount >= rowLimit) { break }
                    }
                }
            }

            html += "";

            return html;
        }
 
        function nameTheSector(theSymbol) {
            switch (theSymbol) {
                case "XLC": return "Telecom";
                case "XLF": return "Financials";
                case "XBI": return "Biotech";
                case "XLP": return "Cons Stpls";
                case "KRE": return "Banks";
                case "XLI": return "Industrial";
                case "XLK": return "Tech";
                case "XLB": return "Materials";
                case "XLY": return "Cons Disc";
                case "XLU": return "Utilites";
                case "XRT": return "Retail";
                case "XLV": return "Health Care";
                case "IYR": return "Real Estate";
                case "XLE": return "Energy";
                case "SMH": return "Semicondctrs";
                case "XOP": return "Oil &amp; Gas";
                case "GDX": return "Gold Miners";
            }
            return theSymbol
        }

        function checkForChgPct(data, symb){
            if(data.results.quote.length > 0){
                const thisOne = data.results.quote.filter(item => item.symbolstring === symb);
                if (thisOne.length > 0) {
                    //console.log(thisOne[0])
                    if(marketTimeframe == "premarket"){                        
                        if (typeof thisOne[0].pricedata.premarket.changepercent === "number") {
                            return thisOne[0].pricedata.premarket.changepercent;
                        }
                    } else if(marketTimeframe == "afterhours"){                        
                        if (typeof thisOne[0].pricedata.afterhours.changepercent === "number") {
                            return thisOne[0].pricedata.afterhours.changepercent;
                        }
                    } else {                    
                        if (typeof thisOne[0].pricedata.changepercent === "number") {
                            return thisOne[0].pricedata.changepercent;
                        }
                    }
                }
            }
            return 0;
        }

        function pctToGoodBadClass(thePCT) {

            let className = ''
            if (thePCT > 2) {
                className = 'good3'
            } else if (thePCT > 1) {
                className = 'good2'
            } else if (thePCT > 0) {
                className = 'good1'
            } else if (thePCT > -1) {
                className = 'bad1'
            } else if (thePCT > -2) {
                className = 'bad2'
            } else {
                className = 'bad3'
            }
            return className;
        }
 
        function showWL(data){

            document.getElementById("MarketIndexes").innerHTML = `
                <a href="/markets/">
              <div class ="item ${pctToGoodBadClass(checkForChgPct(data, "DIA", marketTimeframe))}">
                  <div class="title">Dow<span class="hideU12"> Jones</span></div>
                  <div>${checkForChgPct(data, "DIA", marketTimeframe).toFixed(2)}%</div>
              </div>
              </a>
              <div class ="item ${pctToGoodBadClass(checkForChgPct(data, "SPY", marketTimeframe))}">
                  <div class="title">S&amp;P<span class="hideU12">500</span></div>
                  <div>${checkForChgPct(data, "SPY", marketTimeframe).toFixed(2)}%</div>
              </div>
              <div class ="item ${pctToGoodBadClass(checkForChgPct(data, "QQQ", marketTimeframe))}">
                  <div class="title">Nasdaq</div>
                  <div>${checkForChgPct(data, "QQQ", marketTimeframe).toFixed(2)}%</div>
              </div>

              <div class ="item ${pctToGoodBadClass(checkForChgPct(data, "IWM", marketTimeframe))}">
                  <div class="title">Russell</div>
                  <div>${checkForChgPct(data, "IWM", marketTimeframe).toFixed(2)}%</div>
              </div>                
              <div class ="item ${pctToGoodBadClass(checkForChgPct(data, "GLD", marketTimeframe))}">
                  <div class="title">Gold</div>
                  <div>${checkForChgPct(data, "GLD", marketTimeframe).toFixed(2)}%</div>
              </div> 
              <div class="item ${pctToGoodBadClass(checkForChgPct(data, "TLT", marketTimeframe))}">
                  <div class="title">Bonds</div>
                  <div>${checkForChgPct(data, "TLT", marketTimeframe).toFixed(2)}%</div>
              </div>
              `





              let html = ""

              const quoteData = data.results.quote
              // console.log(quoteData)

              let dataBy_ChangePct_DESC = [...quoteData].sort((a, b) => b.pricedata.changepercent - a.pricedata.changepercent).slice(0, 88);
               
                      if(marketTimeframe == "premarket"){                          
                             dataBy_ChangePct_DESC = [...quoteData].sort((a, b) => b.pricedata.premarket.changepercent - a.pricedata.premarket.changepercent).slice(0, 88);
                      }
                       
            
              for (let i = 0; i < dataBy_ChangePct_DESC.length; i++) { 
                  const thisQuote = dataBy_ChangePct_DESC[i]; 

                  // XLC   XLF   XBI   XLP   KRE   XLI   XLK   XLB   XLY   XLU   XRT   XLV   IYR   XLE   SMH   XOP   GDX 
                  if (thisQuote.symbolstring == "XLC" ||
                      thisQuote.symbolstring == "XLF" ||
                      thisQuote.symbolstring == "XBI" ||
                      thisQuote.symbolstring == "XLP" || 
                      thisQuote.symbolstring == "XLI" || 
                      thisQuote.symbolstring == "XLK" || 
                      thisQuote.symbolstring == "XLB" || 
                      thisQuote.symbolstring == "XLY" || 
                      thisQuote.symbolstring == "XLU" || 
                      thisQuote.symbolstring == "XRT" || 
                      thisQuote.symbolstring == "XLV" || 
                      thisQuote.symbolstring == "IYR" || 
                      thisQuote.symbolstring == "XLE" ||  
                      thisQuote.symbolstring == "XOP" || 
                      thisQuote.symbolstring == "GDX" ) {

                      let thisQuoteData = thisQuote.pricedata;
                      if(marketTimeframe == "premarket"){                          
                        thisQuoteData = thisQuote.pricedata.premarket
                      }
                      let changePct = 0;
                      if(typeof thisQuoteData.changepercent === "number"){
                          changePct = thisQuoteData.changepercent
                      }
                      
                       
                      let className = pctToGoodBadClass(changePct)

                      html += `<a class='sectLink' href="/stock/?stock=${thisQuote.symbolstring}">
                      <div class ='item ${className}'>
                        <div class='sectPct'>${changePct.toFixed(1)}%</div>
                        <div class='sectName'>${nameTheSector(thisQuote.symbolstring)}</div>
                      </div></a>
                      `
                  }
              } 
              

              html += ""


              document.getElementById("MarketSectorsToday").innerHTML = html;
        }
        
         
            
              
function getQueryParameterValue(url, parameterName) { 
    const regex = new RegExp(`[?&]${parameterName}(=([^&#]*)|&|#|$)`, 'i');
     
    const results = regex.exec(url);

    if (!results) {
        return null;
    }

    if (!results[2]) {
        return '';
    }
 
    return decodeURIComponent(results[2].replace(/\+/g, ' '));
}
        
       
        let qmToken="";

        const originalXHR = window.XMLHttpRequest;
        window.XMLHttpRequest = function () {
          const xhr = new originalXHR();
            
          xhr.addEventListener('load', function () {
              
                if(this.responseURL.indexOf("quotemedia.com") != -1 && qmToken == "" && getQueryParameterValue(this.responseURL,"token") !== null){
                    qmToken = getQueryParameterValue(this.responseURL,"token"); 
                    //console.log(qmToken)
                    //setToken="",marketSession = "PRE",stat="pg",statTop=25
                    // xhrMovers(qmToken,"POST","va",20);
                }
              
              
              if(this.responseURL.indexOf("getSnapQuotes.js") != -1){
                showWL(JSON.parse(this.responseText, marketTimeframe));    
              } 
              if(this.responseURL.indexOf("&stat=pg") != -1){
                const data = JSON.parse(this.responseText); 
                document.getElementById("divMoversUp").innerHTML = htmlItUp("Gainers", "fa fa-arrow-circle-up", data.results.quote, 10);
              } 
              if(this.responseURL.indexOf("&stat=pl") != -1){
                const data = JSON.parse(this.responseText);  
                document.getElementById("divMoversDown").innerHTML = htmlItUp("Losers", "fa fa-arrow-circle-down", data.results.quote, 10);
              } 
              if(this.responseURL.indexOf("&stat=va") != -1){
                const data = JSON.parse(this.responseText); 
                document.getElementById("divMoversActive").innerHTML = htmlItUp("Actives", "fa fa-bar-chart", data.results.quote, 10);
                document.getElementById("qmarea").innerHTML = "";
              } 
              
             
          });

          return xhr;
        };
        
            
            
            
 
    </script>
<div class="adSpotPad">
<ins class="adsbygoogle" style="display:block;" data-ad-client="ca-pub-4076520893768415" data-ad-slot="2261446247" data-ad-format="auto" data-full-width-responsive="true"></ins>
</div>
<h2>Stock Market Today: A Comprehensive Market Update</h2>
<p>In the rapidly evolving world of finance, staying updated about the <b>stock market</b> is paramount for both seasoned investors and novices alike. If you're keen on getting a snapshot of <b>today's market</b>, you've come to the right place. Here's your concise <b>market update</b>, highlighting key movers and shakers, top stocks, and a glance at the best performing sectors.</p>
<h2>Market Today: A Snapshot</h2>
<p>The <b>stock market today</b> showcases a myriad of activities with stocks surging, plummeting, or trading flat. From blue-chip companies to emerging start-ups, there's always a story unfolding in <b>today's market</b>. Whether you're looking to capitalize on a bullish trend or safeguard your portfolio against potential losses, being aware of the current market scenario can be your game changer.</p>
<h2>Today's Market Movers</h2>
<p>Every day, certain stocks outperform others, either riding the wave of favorable news or being weighed down by unforeseen events. By understanding the <b>market movers</b>, investors can better gauge where the momentum is and which stocks might be worth a second look. It's not just about who's up or down, but understanding why they're moving that truly matters.</p>
<h2>Top Stocks of the Day</h2>
<p>Handpicked based on performance, volume, and news catalysts, the <b>top stocks of the day</b> offer investors a peek into the companies making headlines. These stocks, often the talk of the financial town, can provide insights into potential investment opportunities or threats on the horizon.</p>
<h2>Dive into the Market Indexes</h2>
<p>In the <b>stock market</b>, indexes often serve as the compass. From the S&P 500 to the Dow Jones, these indexes provide a holistic view of market health and direction. A spike in the index could signal overall bullish sentiment, while a dip might hint at prevailing market uncertainties. By keeping an eye on these indicators, one can tune into the broader market pulse.</p>
<h2>Best Performing Market Sectors</h2>
<p>Not all sectors are created equal, especially in the <b>stock market</b>. On any given day, one sector might outshine the rest, driven by factors such as policy changes, global events, or technological advancements. Tracking the <b>best performing market sectors</b> can offer investors an edge, helping them channel their resources to where the action truly is.</p>
<h2>In Conclusion</h2>
<p>The <b>stock market today</b> is a dynamic, ever-shifting landscape, and keeping abreast with its movements is crucial for informed decision-making. From <b>market today</b> updates to deeper dives into specific stocks, the importance of staying updated cannot be stressed enough. Whether you're an active trader or someone simply keeping tabs on their retirement portfolio, a timely <b>market update</b> can be the difference between capitalizing on an opportunity and missing out.</p>
<p>
The <b>stock market</b> is a complex animal. To make the most of the <b>stock market today</b>, you have to
have the latest market news and information. All of the major U.S. Stock Markets: NYSE, NASDAQ and AMEX have
a lot of market information each day. For active stock traders, a power <b>stock market tool</b> is a must. As active
traders ourselves we are continuously adding new content and power market tools for your free usage.
</p>
<p>
The ups and downs of the stock market is keeping all of us stock traders on our toes. Be sure to check back to
our stock market updates throughout the trading week. Best of luck to your current and future stock trades!
</p>
<p>Bookmark this page for your daily dose of market insights, and arm yourself with the knowledge to navigate the intricate world of stocks. Because in the world of finance, knowledge isn't just power—it's profit.</p>
<script async id="qmod" nonce="inWnmWqSkWM60jOXJuX/ig==" type="application/javascript" src="//qmod.quotemedia.com/js/qmodLoader.js" data-qmod-wmid="101264" data-qmod-env="app" data-qmod-version="v1.57.0" data-qmod-nonce="inWnmWqSkWM60jOXJuX/ig=="></script>
<script type="text/javascript" async src="/js/qmLang.js" nonce="inWnmWqSkWM60jOXJuX/ig=="></script>
<script type="text/javascript" async src="/js/qmVendors.js" nonce="inWnmWqSkWM60jOXJuX/ig=="></script>
<script type="text/javascript" async src="/js/qmCommons_v2_noice.js" nonce="inWnmWqSkWM60jOXJuX/ig=="></script>
<script type="text/javascript" async src="/js/qmMarketMovers2.js" nonce="inWnmWqSkWM60jOXJuX/ig=="></script>
<script type="text/javascript" async src="/js/qmWatchlist2.js" nonce="inWnmWqSkWM60jOXJuX/ig=="></script>
</div>
</div>
<footer>
<div id="sitefoot">
<div><a href="#top">back to top</a></div>
<div>Stock Market Watch &copy; 2023</div>
<div>Market Data provided by QuoteMedia</div>
<div><a href="/markets/today.aspx">Markets Today</a> | <a href="/markets/pre-market/today.aspx">Premarket</a> | <a href="/privacy.aspx">Privacy</a></div>
</div>
</footer>
<script>
      document.addEventListener('DOMContentLoaded', (event) => {
        let adElements = document.querySelectorAll('.adsbygoogle');

        let observer = new IntersectionObserver((entries, observer) => {
          entries.forEach(entry => {
            if (entry.isIntersecting && !entry.target.dataset.loaded) {
              (adsbygoogle = window.adsbygoogle || []).push({});
              entry.target.dataset.loaded = 'true';
              observer.unobserve(entry.target);
            }
          });
        }, {
          rootMargin: '0px',
          threshold: 0.01
        });

        adElements.forEach(ad => {
          observer.observe(ad);
        });
      });
    </script>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v84a3a4012de94ce1a686ba8c167c359c1696973893317" integrity="sha512-euoFGowhlaLqXsPWQ48qSkBSCFs3DPRyiwVu3FjR96cMPx+Fr+gpWRhIafcHwqwCqWS42RZhIudOvEI+Ckf6MA==" data-cf-beacon='{"rayId":"822640cd9c1302a2","b":1,"version":"2023.10.0","token":"2376508f114a4115b3059605c2b3efc5"}' crossorigin="anonymous"></script>
</body>
</html>
