The global oil market is in very rare territory right now, with futures pricing that points to near-term tightness while also flagging a “meaningful surplus” further out, according to Morgan Stanley.
“The Brent forward curve has an unusual shape at the moment: downward sloping across the first nine contracts and upward sloping thereafter,” analysts including Martijn Rats and Charlotte Firkins said in a note. “This is so unusual that, in fact, there is little historical precedent,” they said.
Crude has been rocked this month by the fall-out from the US-led trade war, moves by OPEC+ to boost supply at a faster-than-expected clip, and growing expectations for a surplus. Those drivers have combined to spur a steep drop in headline prices in April — with Brent 12% lower — but simultaneously suggest a more complex underlying story about the timing of the glut.
At present, Brent’s nearer months are still pricier than those next in sequence, a pattern known as backwardation that’s seen as bullish as it shows traders are willing to pay a premium for more prompt barrels. But the curve flips to the opposite structure, known as contango, further into 2026.
“The contango after the ninth contract signals a rapid weakening later this year, with slowing demand and robust supply growth driving a surplus,” the analysts said. “In about 30 years’ of historical data, there has not been another period when the forward curve showed a ‘smile’ the way it currently does.”
Global benchmark Brent is expected to drop back into the low $60s-a-barrel later this year, according to Morgan Stanley, which retained its quarterly forecasts. Futures for the soon-to-expire front month of June were last below $65 a barrel, while those for July were about $1 lower.
“Trade tariffs will turn into a meaningful headwind for oil demand,” the analysts said. “Our crude balance shows a deficit in the third quarter, but this turns into a meaningful surplus thereafter.”
Generated by readers, the comments included herein do not reflect the views and opinions of Rigzone. All comments are subject to editorial review. Off-topic, inappropriate or insulting comments will be removed.
MORE FROM THIS AUTHOR
Bloomberg
element
var scriptTag = document.createElement(‘script’);
scriptTag.src = url;
scriptTag.async = true;
scriptTag.onload = implementationCode;
scriptTag.onreadystatechange = implementationCode;
location.appendChild(scriptTag);
};
var div = document.getElementById(‘rigzonelogo’);
div.innerHTML += ” +
‘‘ +
”;
var initJobSearch = function () {
//console.log(“call back”);
}
var addMetaPixel = function () {
if (-1 > -1 || -1 > -1) {
/*Meta Pixel Code*/
!function(f,b,e,v,n,t,s)
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version=’2.0′;
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s)}(window, document,’script’,
‘https://connect.facebook.net/en_US/fbevents.js’);
fbq(‘init’, ‘1517407191885185’);
fbq(‘track’, ‘PageView’);
/*End Meta Pixel Code*/
} else if (0 > -1 && 88 > -1)
{
/*Meta Pixel Code*/
!function(f,b,e,v,n,t,s)
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version=’2.0′;
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s)}(window, document,’script’,
‘https://connect.facebook.net/en_US/fbevents.js’);
fbq(‘init’, ‘1517407191885185’);
fbq(‘track’, ‘PageView’);
/*End Meta Pixel Code*/
}
}
// function gtmFunctionForLayout()
// {
//loadJS(“https://www.googletagmanager.com/gtag/js?id=G-K6ZDLWV6VX”, initJobSearch, document.body);
//}
// window.onload = (e => {
// setTimeout(
// function () {
// document.addEventListener(“DOMContentLoaded”, function () {
// // Select all anchor elements with class ‘ui-tabs-anchor’
// const anchors = document.querySelectorAll(‘a .ui-tabs-anchor’);
// // Loop through each anchor and remove the role attribute if it is set to “presentation”
// anchors.forEach(anchor => {
// if (anchor.getAttribute(‘role’) === ‘presentation’) {
// anchor.removeAttribute(‘role’);
// }
// });
// });
// }
// , 200);
//});