Brokers note an improving sales trend in food over the first half for Metcash, however the loss of significant contracts continues to weigh on the outlook.
-Food earnings improve, assisted by reduced deflation
-Still a risk independent supermarkets may defect to Drakes
-Citi considers cash-flow yield less attractive because of earnings volatility
By Eva Brocklehurst
The outlook for grocery and hardware wholesaler Metcash ((MTS)) is improving, although the negative impact from the loss of the Drakes and 7-Eleven contracts, and the prospect of renewing the FoodWorks contract, will weigh on the stock in FY20.
Underlying net profit was $95.7m in the first half, down -4.6% but in line with, or better than, most expectations. Food earnings (EBIT) were up 0.3%, assisted by reduced deflation.
While cash flow was weak, and the main disappointment for Morgan Stanley, a reintroduction of some working capital should mean a recovery from FY21. Beyond this, an uplift in inventory should provide earnings leverage as food deflation moderates.
Morgan Stanley forecasts a -4% decline in earnings in FY20 with a -7% decline in food earnings. Excluding the impact of the loss of the Drakes contract and lower provision releases, earnings growth of 4%, similar to the first half, is expected.
Macquarie is yet to find evidence that food earnings have reacted positively to the to the investment in operating expenditure. As a result of the decline in earnings, margins contracted by -20 basis points to 1.9%. What pleased the broker was that the grocer group, IGA, like-for-like sales were up 0.4%.
However, there remains a risk with this grocery chain, as the number of those with the IGA banner are declining. There were 10 net closures of IGA stores over the half, although the company expects net openings in the second half. There is also a risk, Macquarie adds, that independent supermarkets could defect to wholesaler Drakes. Drakes has indicated it has been approached by independents but has to prove it will be cheaper.
Uncertainties
What is uncertain, in Credit Suisse’s view, is a longer-term understanding of what the loss of Drakes and 7-Eleven contracts mean for the Metcash distribution system. The next significant contract renewal is FoodWorks in September 2020.
Although supermarket wholesale sales, ex tobacco and contract losses, did grow in the first five weeks of the second half, the broker is not sure that Metcash can stabilise profits in the near term.
Under its Mfuture program, Metcash is targeting savings of $50m over FY20 and FY21 to offset cost deflation over the next five years. These initiatives are primarily around supply chain and logistics in the food business.
Capital expenditure is expected to rise as this program ramps up over the next 12 months. Citi estimates capex of $86m in FY20 and $100m from FY21 to FY24. Food capex was expected to be $165m over five years but the broker suspects this will be closer to $100m, as loans to store owners for the refurbishment program have been lower than initially expected.
Metcash may be trading at a -50% discount to grocery retailers but a cash flow yield in mid single digits remains far less appealing to Citi because of the earnings volatility. The broker is cautious about the ability of Metcash to return to sustainable growth and unable to envisage catalysts for a narrowing of the valuation gap to peers.
Ord Minnett is more positive and upgrades to Accumulate from Hold, as valuation support has emerged and there is an improving sales trends in food. Wholesale sales, excluding tobacco, are now growing and the competitive dynamics in grocery retailing are more rational, so the broker is confident that the FoodWorks contract can be maintained.
UBS agrees the outlook is improving and Metcash is the most leveraged of the listed grocers to price inflation, although the uncertainty over contract terms is likely to weigh on valuation. Hence, while stock screens attractively on valuation grounds, the broker envisages few catalysts until certainty over key contracts occurs.
Hardware
Significant synergies were realised in hardware, Ord Minnett points out, although the external environment, especially trade, is more difficult and there was a loss of a major Queensland customer. Yet hardware sales contracted -4.5% in the half-year and were weaker than Macquarie expected.
The company believes it is not losing share in tradies, despite the push by Bunnings ((WES)) into the category. Metcash acknowledged some competitors were experiencing reductions in sales in line with the fall in housing approvals but pointed out DIY is performing well. Macquarie notes Metcash would not comment on the acquisition of Total Tools, speculation about which was in the press recently.
The company continues to increase the focus on fresh food, intending to complete its trial of Kitchen Pantry by the end of FY20. Metcash has also increased the number of units in private-label liquor. In this space, as it moves online, Macquarie suspects the company will face headwinds.
The broker welcomes the investment in online but notes this is a highly competitive market and IGA is moving slowly. Macquarie also believes, despite suggestions to the contrary, that Amazon is unlikely to partner with Metcash in the Australian grocery market. Metcash has indicated no discussions have been held.
FNArena’s database has it all, two Buy, two Hold and two Sell ratings. The consensus target is $2.76, signalling -0.5% downside to the last share price. The dividend yield on FY20 and FY21 forecasts is 4.5% and 4.6% respectively.
See also, Metcash Under Scrutiny After Losing 7-Eleven on November 25, 2019.
Find out why FNArena subscribers like the service so much: “Your Feedback (Thank You)” – Warning this story contains unashamedly positive feedback on the service provided.
FNArena is proud about its track record and past achievements: Ten Years On
Click to view our Glossary of Financial Terms
MTS
WES
var fn_do_fb_login; var fn_check_login_state; var fn_get_fb_login_button; var fn_remove_fb_loading_btn; var fn_status_change_callback;
jQuery(document).ready(function(e){
window.fbAsyncInit = function() { FB.init({ appId : '2003222569780759', // dev version: 500318794096450 cookie : true, // Enable cookies to allow the server to access the session. xfbml : true, // Parse social plugins on this webpage. version : 'v4.0' // Use this Graph API version for this call. });
//check if all fb elements done rendering //========== fn_get_fb_login_button();
FB.Event.subscribe('xfbml.render', function(response) { fn_remove_fb_loading_btn(); }); //==========
FB.getLoginStatus(function(response) { // Called after the JS SDK has been initialized.
var fb_r = response;
if (fb_r && fb_r.status === 'connected') {
get_detail_data(fb_r.authResponse.userID); // Returns the login status.
// logout function // FB.logout(function(response) { // console.log('do logout'); // }); } }); };
(function(d, s, id){ var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) {return;} js = d.createElement(s); js.id = id; js.src = "https://connect.facebook.net/en_US/sdk.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));
//fb functionality //======================================================= fn_check_login_state = function check_login_state() { // Called when a person is finished with the Login Button.
//everytime event login triggered, reset the form fn_reset_form();
FB.getLoginStatus(function(response) {
var status_change_callback = fn_status_change_callback(response);
if (status_change_callback) {
FB.api('/me', function(response) {
console.log(response);
});
}
});
}
//new function to do fb login - since might need a separate function //between checking and login fn_do_fb_login = function do_fb_login() { // Called when a person is finished with the Login Button.
//everytime event login triggered, reset the form fn_reset_form();
FB.getLoginStatus(function(response) {
e('.form_loading').show();
var status_change_callback = fn_status_change_callback(response);
if (status_change_callback) {
FB.api('/me', function(response) {
console.log(response); set_detail_data_to_form_and_submit(response.id);
});
} else {
FB.login(function(fb_l_r) {
if (fb_l_r.authResponse && fb_l_r.status == 'connected') {
console.log(fb_l_r.authResponse.userID); set_detail_data_to_form_and_submit(fb_l_r.authResponse.userID);
} else { e('.form_loading').hide(); }
});
}
});
}
fn_status_change_callback = function status_change_callback(response) { // Called with the results from FB.getLoginStatus().
var check_status;
console.log('status_change_callback'); console.log(response); // The current login status of the person.
if (response.status === 'connected') { // Logged into your webpage and Facebook.
get_detail_data(response.id); check_status = true;
} else { // Not logged into your webpage or we are unable to tell.
console.log('facebook is not logged in'); check_status = false;
}
return check_status;
}
function get_detail_data(fb_id) {
FB.api( '/'+fb_id+'/', {fields: 'id,first_name,last_name,email'}, function (fb_r) {
var fb_data_json = JSON.stringify(fb_r);
if (fb_r && !fb_r.error) {
e('#fb_data').html(fb_data_json);
}
} );
}
//it's kinda silly, but since fb is an async, cannot use passing parameter on a function like jquery //so instead put it on FB.api function set_detail_data_to_form_and_submit(fb_id) {
e('.form_loading').show();
FB.api( '/'+fb_id+'/', {fields: 'id,first_name,last_name,email'}, function (fb_r) {
var fb_data_json = JSON.stringify(fb_r);
if (fb_r && !fb_r.error) {
var fb_id = fb_r.id; var fb_firstname = fb_r.first_name; var fb_lastname = fb_r.last_name; var fb_email = fb_r.email;
e('.sns_facebook').val(1); e('.sns_facebook_id').val(fb_id);
e('#fb_data').html(fb_data_json); do_submit_form();
//no form_loading hide - we gonna lock the form IF it's success
} else {
e('.form_loading').hide();
}
} );
}
fn_get_fb_login_button = function get_fb_login_button() {
var html = ''+ ''; e('.fb_button_placeholder').html(html);
}
fn_remove_fb_loading_btn = function remove_fb_loading_btn() {
e('.fb_loading_btn').hide(); e('.fb_login_wrapper').show();
}
fn_reset_form = function reset_form() {
e('.sns_facebook').val(''); e('.sns_facebook_id').val(''); e('.form_loading').hide();
}
function do_submit_form() {
var the_form = e('.formLogin:visible');
if (the_form.length) {
var target_form = the_form[0]; target_form.submit();
} else {
console.log('form not exist');
}
} //=======================================================
//initialize fn_reset_form();
});


