Free Trial

MNI ANALYSIS: US Retail Lagging As Real Earnings Slow

Repeats Story Initially Transmitted at 17:20 GMT Mar 23/13:20 EST Mar 23
By Sara Haire and Holly Stokes
     WASHINGTON (MNI) - Despite a 17-year historic low unemployment rate and
average hourly earnings on the rise, retail sales have surprised with three
months of weakness - which lends itself to speculation on where consumers are
spending their money. 
     Average hourly earnings, AHE, have been rising for four months in a row,
and disposable income has been up every month since July, with January posting a
0.9% month/month surge. While increased earnings have traditionally meant
stronger retail spending, this trend has halted in recent months. Retail sales
have fallen by 0.1% in each of the last three months, even as disposable income
and AHE continued to increase. 
     February's overall sales decline and weak ex-auto sales came as an even
greater surprise, as many analysts had assumed that tax cuts would allow for a
rebound in retail sales. However, any increase in earnings did not flow through
to February's sales data.
--PCE SHOWS CONTINUED SPENDING
     While retail sales are an important indicator of overall consumption, they
do not account for all spending. Personal consumption expenditures measures how
much people are spending on all goods and services. When looking at the chained
PCE index, there have been continued gains since June. Though people are not
spending as much on retail sales in recent months, the trend of expenditures
increasing shows that earnings are still being put to use, but for other
purposes. 
     Inflation has been rising steadily since the recession, but if you break
the PCE price index down between goods and services, inflation for goods has
remained relatively low, averaging 0.3% while services has increased 2.2% on an
annual basis. While one might expect that consumers would be encouraged to buy
more goods as prices remain low, this is not necessarily the case as more income
is being directed towards necessary services, including housing and utility
expenditures.  
--COST OF LIVING ON THE RISE
     The year/year change in rent has been on an upswing since 2011. While the
change has seemed somewhat gradual month/month, the year/year percent increases
in rent of primary residences has been consistently closing in on 4% growth
since June 2015. As rental pressures continue to approach pre-housing bubble
levels,  AHE year/year have been struggling to keep up.
     Whether one rents or owns a home, utilities are an essential expenditure
for consumers. In an effort to slightly account for the monthly volatility in
energy prices, a look at the year-over-year change for CPI's energy services
price index shows a definitive rise (with the exception of a year and a half in
2015 to 2016). Since prices for utilities are rising, more people are forced to
spend the slight gain in their earnings on necessities and not as much on goods
captured in retail sales data. 
     According to an MNI analysis on wages published March 12, supervisory wages
have been boosting average hourly earnings in eight of the last 12 months,
clouding the fact that 80% of the US workforce have been experiencing more
modest wage gains. As lower income housing is typically less energy efficient,
it is the population of lower wage earners that are experiencing a greater
impact of rising energy costs, curbing their other spending. Compounding the
pressures of energy prices, extreme weather in recent years has increased
overall utility usage with no signs of slowing down.
--REAL EARNINGS STRUGGLING
     Given that the rise in the cost of living appears to be outpacing the
increases in average hourly earnings, it is important to consider what real
wages are doing and if wage inflation is able to keep up with the overall
economy.
     While average hourly earnings have been on a general upward climb, the path
for real average hourly earnings has been less steady. In particular, real
average hourly earnings have been on a downward trend since September 2017, but
are still strong compared to recent years. 
     Interestingly, this fall in real average hourly earnings coincides with the
unemployment rate slipping to its low 4.1% - leaving the question of just how
tight the labor market will need to get for wage inflation to match the overall
pace of the economy. The FOMC's median projection of a 3.6% unemployment rate by
2019 is perhaps a nod to the need for an even tighter labor market to keep up
with the economy and boost real wages. 
     As the unemployment rate continues to sit at historically low levels,
prices have begun to rise and should continue their upward trend in response.
Without an upward movement in wages in return, it opens the door for overall
consumption to decline in the near term as people's purchasing power declines
and they can only spend on the necessities. Despite the FOMC projections
revealing an upward revised forecast for GDP in 2018 to 2.7%, if the labor
market remains tight but real wages do not rise, this could be later revised in
future projections. 
--MNI Washington Bureau; +1 202-371-2121; email: holly.stokes@marketnews.com
--MNI Washington Bureau; +1 212-800-8517; email: sara.haire@marketnews.com

To read the full story

Close

Why MNI

MNI is the leading provider

of intelligence and analysis on the Global Fixed Income, Foreign Exchange and Energy markets. We use an innovative combination of real-time analysis, deep fundamental research and journalism to provide unique and actionable insights for traders and investors. Our "All signal, no noise" approach drives an intelligence service that is succinct and timely, which is highly regarded by our time constrained client base.

Our Head Office is in London with offices in Chicago, Washington and Beijing, as well as an on the ground presence in other major financial centres across the world.
}); window.REBELMOUSE_TASKS_QUEUE.push(function(){ window.dataLayer.push({ 'event' : 'logedout', 'loggedOut' : 'loggedOut' }); }); window.REBELMOUSE_TASKS_QUEUE.push(function(){ (function appendPosts () { var policyPosts = document.getElementsByClassName('policy-posts-wrapper')[0]; var policyPostsMenu = document.querySelector('.policy-posts-span'); policyPostsMenu.append(policyPosts); policyPosts.style.display = "block"; var empolicyPosts = document.getElementsByClassName('em-policy-posts-wrapper')[0]; var empolicyPostsMenu = document.querySelector('.em-policy-posts-span'); empolicyPostsMenu.append(empolicyPosts); empolicyPosts.style.display = "block"; var dataPosts = document.getElementsByClassName('data-posts-wrapper')[0]; var dataPostsMenu = document.querySelector('.data-posts-span'); dataPostsMenu.append(dataPosts); dataPosts.style.display = "block"; })(); }); window.REBELMOUSE_TASKS_QUEUE.push(function(){ document.querySelectorAll(".my-mni").forEach(function(item){ item.href="/core/users/email_login/"; item.innerHTML="Log In"; }) }); window.REBELMOUSE_TASKS_QUEUE.push(function(){ document.querySelector('.signup-form').addEventListener('submit', () => { window.dataLayer = window.dataLayer || []; dataLayer.push({ 'event' : 'submission_click', 'event_category': "Sign Up Button Clicks", 'event_label': "Posts" }); }) }); window.REBELMOUSE_TASKS_QUEUE.push(function(){ REBELMOUSE_STDLIB.createElementChangeListener('.signup-form.authentication--form',function(item){ item.onsubmit=function(e){ ga('b.send', 'event', {eventCategory: 'Signup', eventAction: 'CompletedForm', eventLabel:'pageTitle', eventValue:15}); window.dataLayer = window.dataLayer || []; dataLayer.push({ 'event' : 'signup_click', 'event_category': "Signup", 'event_action': 'CompletedForm', 'event_label': 'pageTitle', 'event_value': 15 }); } }) }); window.REBELMOUSE_TASKS_QUEUE.push(function(){ document.querySelectorAll("img").forEach(function (img) { img.addEventListener("contextmenu", function (e) { return false; }); }); document .querySelector(".site-logo img") .addEventListener("contextmenu", function (e) { return true; }); }); window.REBELMOUSE_TASKS_QUEUE.push(function(){ document.querySelector('.signup-form').addEventListener('submit', () => { window.dataLayer = window.dataLayer || []; dataLayer.push({ 'event' : 'submission_click', 'event_category': "Sign Up Button Clicks", 'event_label': "Posts" }); }) }); window.REBELMOUSE_TASKS_QUEUE.push(function(){ REBELMOUSE_STDLIB.createElementChangeListener('.signup-form.authentication--form',function(item){ item.onsubmit=function(e){ ga('b.send', 'event', {eventCategory: 'Signup', eventAction: 'CompletedForm', eventLabel:'pageTitle', eventValue:15}); window.dataLayer = window.dataLayer || []; dataLayer.push({ 'event' : 'signup_click', 'event_category': "Signup", 'event_action': 'CompletedForm', 'event_label': 'pageTitle', 'event_value': 15 }); } }) }); window.REBELMOUSE_TASKS_QUEUE.push(function(){ let posts = document.querySelectorAll(".all-content-wrapper .widget:not(.stream-story-processed)"); window.check_story_posts(posts, "streamOfPosts"); }); window.REBELMOUSE_LOW_TASKS_QUEUE.push(function(){ function populateInputsWithAPAPI(c) { document.querySelectorAll('.signup-form input[name="country"]').forEach(el => { el.setAttribute("value", c.country_name); }); document.querySelectorAll('.signup-form .country_name').forEach(el => { el.setAttribute("value", c.country_name); }); let country_code = c && c.country_code ? c.country_code.toLowerCase() : "auto"; document.querySelectorAll('.signup-form .country_code').forEach(el => { el.setAttribute("value", country_code); }); document.querySelectorAll('.signup-form .selected_country').forEach(el => { el.setAttribute("value", country_code); }); } const fetch = function (err, res) { var r = new XMLHttpRequest(); r.open("GET", err, !0), (r.responseType = "json"), (r.onload = function () { var err = r.status; res(200 === err ? null : err, r.response); }), r.send(); }; function setupCountry() { if (window.preventDuplicateExec) { return; } window.preventDuplicateExec = true; window.REBELMOUSE_STDLIB.onElementInViewport({ threshold: 0, firstOnly: true, oneTime: true, selector: ".signup-form", onIntersect: (entry) => { // when you need to get access to that data you call it in that way: let ipapiData = localStorage.getItem("ipapiData"); if (!ipapiData) { fetch("https://ipapi.co/json/", function (err, ipData) { console.log("populating inputs with data from IP API "); localStorage.setItem("ipapiData", JSON.stringify(ipData)); populateInputsWithAPAPI(ipData); }); } else { console.log( "populating inputs with data from IP API data stored in local storage" ); populateInputsWithAPAPI(JSON.parse(ipapiData)); } }, }); } setupCountry(); }); window.REBELMOUSE_LOW_TASKS_QUEUE.push(function(){ /* const sidebar = document.querySelector('.left-sidebar-container'); const stickyContent = document.querySelector('.sticky-content'); const siteContent = document.querySelector('.all-posts-stream'); if (sidebar && stickyContent && siteContent) { if (siteContent.clientHeight > sidebar.clientHeight) { console.log('grater -> ', siteContent.clientHeight + ' > ' + sidebar.clientHeight); stickyContent.style.height = (siteContent.clientHeight - sidebar.clientHeight) + 'px'; } } */ }); window.REBELMOUSE_LOW_TASKS_QUEUE.push(function(){ function populateInputsWithAPAPI(c) { document.querySelectorAll('.signup-form input[name="country"]').forEach(el => { el.setAttribute("value", c.country_name); }); document.querySelectorAll('.signup-form .country_name').forEach(el => { el.setAttribute("value", c.country_name); }); let country_code = c && c.country_code ? c.country_code.toLowerCase() : "auto"; document.querySelectorAll('.signup-form .country_code').forEach(el => { el.setAttribute("value", country_code); }); document.querySelectorAll('.signup-form .selected_country').forEach(el => { el.setAttribute("value", country_code); }); } const fetch = function (err, res) { var r = new XMLHttpRequest(); r.open("GET", err, !0), (r.responseType = "json"), (r.onload = function () { var err = r.status; res(200 === err ? null : err, r.response); }), r.send(); }; function setupCountry() { if (window.preventDuplicateExec) { return; } window.preventDuplicateExec = true; window.REBELMOUSE_STDLIB.onElementInViewport({ threshold: 0, firstOnly: true, oneTime: true, selector: ".signup-form", onIntersect: (entry) => { // when you need to get access to that data you call it in that way: let ipapiData = localStorage.getItem("ipapiData"); if (!ipapiData) { fetch("https://ipapi.co/json/", function (err, ipData) { console.log("populating inputs with data from IP API "); localStorage.setItem("ipapiData", JSON.stringify(ipData)); populateInputsWithAPAPI(ipData); }); } else { console.log( "populating inputs with data from IP API data stored in local storage" ); populateInputsWithAPAPI(JSON.parse(ipapiData)); } }, }); } setupCountry(); });