Energy Shock Pushes UK Inflation Higher Ahead Of BoE Rate Decision
- Sharp rise in energy costs drive inflation higher - Raw material costs accelerate - Labour market remains subdued as wages stall - BoE expected to hold rates steady on Thursday
LONDON - Ahead of this week’s Bank of England rate decision, policymakers have received the latest inflation and labour market data, and it doesn’t make for easy reading.
On Wednesday, the Office for National Statistics reported that the UK’s headline annual CPI rate increased to 3.1% in August from 2.9% the previous month, matching expectations. On the month, prices rose 0.5%, two-tenths of a percentage point faster than in July and also in line with estimates.
Core CPI held steady at 2.6%, again in line with expectations.
Unsurprisingly, the ongoing conflict in the Middle East played a significant role in raising costs over the summer.
Grant Fitzner, chief economist at the ONS, said: “Sharp price rises for petrol and diesel pushed inflation up again in August. Higher airfares, particularly for long-haul journeys, also contributed to the increase.”
Petrol rose by 9.1 pence a litre during August to 161.3p, its highest level since November 2022. Diesel rose by 14.2p to 181.8p a litre. Overall, motor-fuel prices were 23.0% higher year-on-year, compared with 15.5% in July.
In the 12 months to August, the CPI goods rate rose to 2.7% from 2.2%, while CPI services inflation was unchanged at 3.4%.
Analysts at Daiwa Capital noted that while the figures were in line with the consensus view, the headline rate was 0.3 percentage points above the BoE’s projection in its July Monetary Policy Report, primarily due to the subsequent sharp increase in wholesale energy prices.
There was some welcome news for household budgets, as food inflation remained relatively subdued. Statisticians said the 12-month rate for food and non-alcoholic beverages was 1.3% in August, unchanged from July. The rate was last lower in September 2021, when it stood at 0.8%.
Pipeline costs accelerate
Source: Consumer price inflation from the Office for National Statistics
Producer price data showed that pressure further up the supply chain strengthened considerably over the month.
PPI output prices rose 3.7% in the year to August, four-tenths of a percentage point higher than expected and up from a revised rise of 3.3% in July. On the month, prices increased by 0.7%.
PPI input prices jumped 6.1% year-on-year, well in excess of the 5.4% predicted and up from a revised rise of 5.8% in the year to July.
Fitzner said: “Rising crude oil and petrol prices increased both the annual cost of raw materials and the price of goods leaving factories respectively.”
Crude-oil inputs were 26.7% more expensive than a year earlier. Refined-petroleum factory-gate prices jumped 8.6% during August and were 49.1% higher than a year ago. Conversely, domestic food inputs fell 2.2% annually, while factory-gate food prices were down 0.9%.
The ONS said the figures continued to reflect the conflict in the Middle East and cautioned that recent oil estimates were provisional and prone to revision.
Labour market remains subdued
A day earlier, the ONS released its latest labour market figures, reporting that conditions remained broadly stable, with employment and unemployment rates largely unchanged in the latest period. Payrolled employment fell by 19,000 in July and by 101,000 over the year.
Provisional estimates for August showed another monthly decline of 26,000, leaving 30.2 million employees—145,000 fewer than a year earlier.
Source: Monthly Wages and Salaries Survey from the Office for National Statistics
BoE expected to hold rates
Despite the rise in headline inflation and the jump in raw material prices, economists do not expect the BoE’s Monetary Policy Committee to pivot at Thursday’s meeting and subsequent announcement.
Nomura’s Josie Anderson noted that the lack of an increase in core and services inflation had likely cemented an unchanged Bank Rate decision this week, following Tuesday’s mixed labour market report.
“Despite rising energy prices, BoE-speak has been clear that the majority of the MPC likely prefers to keep rates where they are this month,” the analyst added.
Looking beyond September, however, the data leave the Bank in an awkward position. On the one hand, the jobs and wage figures are disinflationary, with payrolls, vacancies and nominal wage growth weakening.
August’s increase in consumer inflation was principally the result of an external energy shock, with core and services inflation stable. However, rapidly rising producer and import costs create a risk that the initial energy shock spreads into broader goods and transport prices, increasing the likelihood of secondary effects within the economy.
/*jshint esversion: 6 */
var socket;
var assigned_server = 3001;
var distributor_server = 3010;
var publisher_channel = '';
var broadcaster_channel = '';
var remote_ip = '';
var session_info = {};
var logging_interval;
var logging_interval_time = 120000;
var socket_emits = 0;
var session_start_time;
var reconnectionDelayGrowFactor = 1.2;
var reconnection_delay = 1000;
var playing = false;
var connected_to_assigned = false;
var socket_close_timeout;
var player_disconnected_annoucement_play_delay = 1500;
var player_disconnected_annoucement_play_timeout = null;
self.onmessage = function (msg) {
switch(msg.data.action) {
case 'Reactivate': reactivate(); break;
case 'ConnectDistributor': connect_to_distributor(msg); break;
case 'SessionStaticInfo': session_static_info(msg); break;
case 'SessionInfo': update_session_info(msg.data); break;
case 'PauseLogging': clearTimeout(logging_interval); break;
case 'RestartLogging': postMessage({action: 'RequestSessionStaticInfo' }); break;
case 'JoinPublisherChannel': join_publisher_channel(msg.data); break;
case 'JoinPlayerChannel': join_player_channel(msg.data); break;
case 'CheckChannelStatus': check_channel_status(msg.data); break;
case 'PlayerLogResponse': player_log_response(msg.data); break;
case 'CloseSocket': close_socket(); break;
case 'RequestMessageSearch': request_message_search(msg.data); break;
case 'RequestMoreMessages': request_more_messages(msg.data); break;
case 'PlayerDisconnectedAnnoucementTimeoutStart': player_disconnected_annoucement_timeout_start(); break;
case 'PlayerDisconnectedAnnoucementTimeoutClear': player_disconnected_annoucement_timeout_clear(); break;
}
};
function player_disconnected_annoucement_timeout_clear() {
clearTimeout(player_disconnected_annoucement_play_timeout);
player_disconnected_annoucement_play_timeout = null;
}
function player_disconnected_annoucement_timeout_start() {
player_disconnected_annoucement_play_timeout = setTimeout(function() { send_play_disconnect_annoucement(); }, player_disconnected_annoucement_play_delay );
}
function send_play_disconnect_annoucement() {
postMessage({action: "PlayDisconnectAnnoucement"});
}
function reactivate() {
playing = false;
connect_to_assigned_server();
}
function player_log_response(data) {
var data_array = {};
data_array.type = 'PlayerLogResponse';
data_array.respond_to_socket_final = data.respond_to_socket_final;
data_array.respond_to_socket = data.respond_to_socket;
data_array.player_socket_id = data.player_socket_id;
data_array.logs = data.logs;
var msg_string = JSON.stringify(data_array);
if (socket.readyState == 1) { socket.send(msg_string); }
}
function request_message_search(data) {
var data_array = {};
data_array.type = 'request_message_search';
data_array.publisher_channel = data.publisher_channel;
data_array.search_term = data.search_term;
var msg_string = JSON.stringify(data_array);
if (socket.readyState == 1) { socket.send(msg_string); }
}
function request_more_messages(data) {
var data_array = {};
data_array.type = 'request_more_messages';
data_array.publisher_channel = data.publisher_channel;
data_array.last_record_id = data.last_record_id;
var msg_string = JSON.stringify(data_array);
if (socket.readyState == 1) { socket.send(msg_string); }
}
function check_channel_status(data) {
var data_array = {};
data_array.type = 'check_channel_status';
data_array.app_name = data.app_name;
var msg_string = JSON.stringify(data_array);
if (socket.readyState == 1 && connected_to_assigned) { socket.send(msg_string); }
else { setTimeout(function() { check_channel_status(data); },500); }
}
function check_channel_status_response(data) {
postMessage({ action: 'CheckChannelStatusReponse', stream_status: data.stream_status.status, onair: data.stream_status.onair, connected: data.stream_status.connected });
}
function join_publisher_channel(data) {
var data_array = {};
data_array.type = 'join_publisher_channel';
if (typeof data.api_key !== 'undefined') { data_array.api_key = data.api_key; }
else {
data_array.publisher_channel = data.publisher_channel;
data_array.username = data.username;
data_array.subscriber_group = data.subscriber_group;
data_array.display_name = data.display_name;
data_array.single_sign_on = data.single_sign_on;
data_array.remote_ip = data.remote_ip;
data_array.http_referrer = data.http_referrer;
data_array.current_page = data.current_page;
data_array.php_session_id = data.php_session_id;
data_array.from_react = data.from_react;
}
var msg_string = JSON.stringify(data_array);
if (socket.readyState == 1) {
socket.send(msg_string); }
postMessage({action: 'PublisherChannelJoined' });
}
function session_static_info(msg) {
set_static_session_info(msg.data);
start_log();
}
function connect_to_distributor(msg) {
publisher_channel = msg.data.publisher_channel;
remote_ip = msg.data.remote_ip;
socket = new WebSocket("wss://ws.livesquawk.com/ws"+distributor_server);
socket.onopen = function(event) { request_server_assignment(); };
socket.onmessage = function(event) {
var msg_string = event.data.toString();
var data = JSON.parse(msg_string);
switch(data.type) {
case 'server_assignment_response': server_assignment_response(data); break;
}
};
}
function session_info_interval() {
postMessage({action: 'RequestSessionInfo' });
logging_interval = setTimeout(session_info_interval,logging_interval_time);
}
function server_assignment_response(data) {
assigned_server = data.selected_server;
socket.close();
connect_to_assigned_server();
}
function request_server_assignment() {
var data_array = {};
data_array.type = 'request_server_assignment';
var msg_string = JSON.stringify(data_array);
if (socket.readyState == 1) { socket.send(msg_string); }
}
function connect_to_assigned_server() {
socket = new WebSocket("wss://ws.livesquawk.com/ws"+assigned_server);
socket.onopen = function(event) {
postMessage({ action: 'VisibleConsole',console_string: "Connected to server "+assigned_server });
console.log("Connected to server "+assigned_server);
postMessage({ action: 'ConnectedToAssigned' });
connected_to_assigned = true;
if (playing) {
postMessage({ action: 'RejoinPlayerChannel' });
}
};
socket.onmessage = function(event) {
var msg_string = event.data.toString();
var data = JSON.parse(msg_string);
if (data.type != 'server_ping') { /* console.log(data.type); */ }
switch(data.type) {
case 'reconnect': postMessage({ action: 'VisibleConsole',console_string: "Reconnected" }); break;
case 'reload': postMessage({ action: 'Reload' }); break;
case 'start_log_response': start_log_response(data); break;
case 'application_refresh_start': application_refresh_start(data); break;
case 'application_refresh_stop': application_refresh_stop(data); break;
case 'player_log_request':
case 'check_channel_status_response': check_channel_status_response(data); break;
case 'PlayerLogRequest':
case 'new_tweet':
case 'new_latest_news':
case 'delete_report':
case 'add_report':
case 'add_ref_doc':
case 'calendar_change':
case 'calendar_insert':
case 'calendar_delete':
case 'new_note':
case 'AppStart':
case 'AppStop':
case 'BroadcasterStarted':
case 'BroadcasterStopped':
case 'added_cme_report':
case 'updated_cme_report':
case 'added_cme_commentary':
case 'updated_cme_commentary':
case 'server_assignment_response':
case 'initial_messages':
case 'message_categories':
case 'more_messages':
case 'matched_messages':
pass_straight_to_post_message(data);
break;
case 'output':
case 'server_ping':
case 'reconnect':
case 'disconnect':
break;
}
};
socket.onerror = function(event) {
postMessage({ action: 'VisibleConsole',console_string: "LS Socket Error" + event.type });
console.log(event);
postMessage({ action: 'LSSocketConnectionError' });
};
socket.onclose = function(event) {
console.log('Socket is closed. Reconnect will be attempted in 1 second.', event.reason);
socket_close_timeout = setTimeout(connect_to_assigned_server, reconnection_delay);
reconnection_delay = reconnection_delay*reconnectionDelayGrowFactor;
connected_to_assigned = false;
};
}
function close_socket() {
clearTimeout(socket_close_timeout);
socket_close_timeout = null;
socket.onclose = function(event) {};
socket.onmessage = function(event) {};
socket.onerror = function(event) {};
socket.close(1000);
console.log('Socket Closed');
}
function pass_straight_to_post_message(data) {
data.action = data.type;
postMessage(data);
}
function join_player_channel(data) {
var data_array = {};
data_array.type = 'join_player_channel';
data_array.player_channel = data.player_channel;
data_array.remote_ip = data.remote_ip;
data_array.username = data.username;
data_array.app_name = data.app_name;
data_array.onair_status = data.onair_status;
data_array.http_referrer = data.http_referrer;
data_array.current_page = data.current_page;
data_array.php_session_id = data.php_session_id;
var msg_string = JSON.stringify(data_array);
if (socket.readyState == 1) { socket.send(msg_string); }
postMessage({action: 'PlayerChannelJoined' });
playing = true;
}
function start_log_response(data) {
session_info.session_id = data.log_record_id;
session_info_interval();
}
function application_refresh_start(data) {
if (data.app_name == session_info.application_name) { postMessage({action: 'ApplicationRefreshStart' }); }
}
function application_refresh_stop(data) {
if (data.app_name == session_info.application_name) { postMessage({action: 'ApplicationRefreshStop' }); }
}
function set_static_session_info(data) {
session_info.browser_codename = data.browser_codename;
session_info.browser_name = data.browser_name;
session_info.user_agent = data.user_agent;
session_info.browser_version = data.browser_version;
session_info.cookies_enabled = data.cookies_enabled;
session_info.platform = data.platform;
session_info.player_version = data.player_version;
session_info.stream = data.stream;
session_info.connection_protocol = data.protocol;
session_info.delay_target = data.delay_target;
session_info.session_email = data.session_email;
session_info.remote_ip = data.remote_ip;
session_info.php_session_id = data.php_session_id;
session_info.application_name = data.application_name;
session_info.http_referrer = data.http_referrer;
}
function start_log() {
var session_start_date = new Date();
session_start_time = session_start_date.getTime();
var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
var session_start_date_string = session_start_date.getDate() + " " + months[session_start_date.getMonth()] + " " + session_start_date.getFullYear();
var data_array = {};
data_array.type = 'webrtc_start_log';
data_array.remote_ip = session_info.remote_ip;
data_array.username = session_info.session_email;
data_array.php_session_id = session_info.php_session_id;
data_array.webrtc_protocol = '';
data_array.session_start_time = (session_start_time/1000).toFixed(0);
data_array.stream_name = session_info.stream;
data_array.session_start_date = session_start_date_string;
var msg_string = JSON.stringify(data_array);
if (socket.readyState == 1) { socket.send(msg_string); }
}
function update_session_info(data) {
var data_array = {};
var msg_string = '';
var current_date = new Date();
var current_time = current_date.getTime();
session_info.protocol = data.protocol;
session_info.curr_delay = (data.effective_latency / 1000).toFixed(2);
session_info.session_length = current_time - session_start_time;
session_info.ping_time = data.ping_time;
session_info.jitter = data.jitter;
session_info.packet_loss = data.packet_loss;
session_info.effective_latency = data.effective_latency;
session_info.mean_opinion_score = data.mean_opinion_score;
session_info.restarts = data.restarts;
if (socket_emits == 0) {
data_array = {};
data_array.type = 'webrtc_log_data_full';
data_array.connection_protocol = session_info.protocol;
data_array.threshold = 0;
data_array.curr_delay = session_info.curr_delay;
data_array.session_length = session_info.session_length;
data_array.date = current_time;
data_array.browser_codename = session_info.browser_codename;
data_array.browser_name = session_info.browser_name;
data_array.user_agent = session_info.user_agent;
data_array.browser_version = session_info.browser_version;
data_array.cookies_enabled = session_info.cookies_enabled;
data_array.platform = session_info.platform;
data_array.player_version = session_info.player_version;
data_array.stream = session_info.stream;
data_array.restarts = session_info.restarts;
data_array.delay_target = 0;
data_array.op_sys = '';
data_array.flash_version = '';
data_array.remote_ip = session_info.remote_ip;
data_array.http_referrer = session_info.http_referrer;
data_array.php_session_id = session_info.php_session_id;
data_array.user_email = session_info.session_email;
data_array.webrtc_protocol = session_info.protocol;
data_array.ping_time = session_info.ping_time;
data_array.jitter = session_info.jitter;
data_array.packet_loss = session_info.packet_loss;
data_array.effective_latency = session_info.effective_latency;
data_array.mean_opinion_score = session_info.mean_opinion_score;
data_array.session_id = session_info.session_id;
msg_string = JSON.stringify(data_array);
if (socket.readyState == 1) { socket.send(msg_string); }
}
else {
data_array = {};
data_array.type = 'webrtc_log_data';
data_array.session_id = session_info.session_id;
data_array.php_session_id = session_info.php_session_id;
data_array.connection_protocol = session_info.protocol;
data_array.restarts = session_info.restarts;
data_array.threshold = 0;
data_array.curr_delay = session_info.curr_delay;
data_array.session_length = session_info.session_length;
data_array.date = current_time;
data_array.webrtc_protocol = session_info.protocol;
data_array.ping_time = session_info.ping_time;
data_array.jitter = session_info.jitter;
data_array.packet_loss = session_info.packet_loss;
data_array.effective_latency = session_info.effective_latency;
data_array.mean_opinion_score = session_info.mean_opinion_score;
data_array.stream = session_info.stream;
msg_string = JSON.stringify(data_array);
if (socket.readyState == 1) { socket.send(msg_string); }
}
socket_emits++;
if (socket_emits == 100) { socket_emits = 0; }
}
- Sharp rise in energy costs drive inflation higher
- Raw material costs accelerate
- Labour market remains subdued as wages stall
- BoE expected to hold rates steady on Thursday
By Harry Daniels
LiveSquawk News
@HarryDaniels71
17:00 GMT | 17 September 2026
LONDON - Ahead of this week’s Bank of England rate decision, policymakers have received the latest inflation and labour market data, and it doesn’t make for easy reading.
On Wednesday, the Office for National Statistics reported that the UK’s headline annual CPI rate increased to 3.1% in August from 2.9% the previous month, matching expectations. On the month, prices rose 0.5%, two-tenths of a percentage point faster than in July and also in line with estimates.
Core CPI held steady at 2.6%, again in line with expectations.
Unsurprisingly, the ongoing conflict in the Middle East played a significant role in raising costs over the summer.
Grant Fitzner, chief economist at the ONS, said: “Sharp price rises for petrol and diesel pushed inflation up again in August. Higher airfares, particularly for long-haul journeys, also contributed to the increase.”
Petrol rose by 9.1 pence a litre during August to 161.3p, its highest level since November 2022. Diesel rose by 14.2p to 181.8p a litre. Overall, motor-fuel prices were 23.0% higher year-on-year, compared with 15.5% in July.
In the 12 months to August, the CPI goods rate rose to 2.7% from 2.2%, while CPI services inflation was unchanged at 3.4%.
Analysts at Daiwa Capital noted that while the figures were in line with the consensus view, the headline rate was 0.3 percentage points above the BoE’s projection in its July Monetary Policy Report, primarily due to the subsequent sharp increase in wholesale energy prices.
There was some welcome news for household budgets, as food inflation remained relatively subdued. Statisticians said the 12-month rate for food and non-alcoholic beverages was 1.3% in August, unchanged from July. The rate was last lower in September 2021, when it stood at 0.8%.
Producer price data showed that pressure further up the supply chain strengthened considerably over the month.
PPI output prices rose 3.7% in the year to August, four-tenths of a percentage point higher than expected and up from a revised rise of 3.3% in July. On the month, prices increased by 0.7%.
PPI input prices jumped 6.1% year-on-year, well in excess of the 5.4% predicted and up from a revised rise of 5.8% in the year to July.
Fitzner said: “Rising crude oil and petrol prices increased both the annual cost of raw materials and the price of goods leaving factories respectively.”
Crude-oil inputs were 26.7% more expensive than a year earlier. Refined-petroleum factory-gate prices jumped 8.6% during August and were 49.1% higher than a year ago. Conversely, domestic food inputs fell 2.2% annually, while factory-gate food prices were down 0.9%.
The ONS said the figures continued to reflect the conflict in the Middle East and cautioned that recent oil estimates were provisional and prone to revision.
A day earlier, the ONS released its latest labour market figures, reporting that conditions remained broadly stable, with employment and unemployment rates largely unchanged in the latest period. Payrolled employment fell by 19,000 in July and by 101,000 over the year.
Provisional estimates for August showed another monthly decline of 26,000, leaving 30.2 million employees—145,000 fewer than a year earlier.
Despite the rise in headline inflation and the jump in raw material prices, economists do not expect the BoE’s Monetary Policy Committee to pivot at Thursday’s meeting and subsequent announcement.
Nomura’s Josie Anderson noted that the lack of an increase in core and services inflation had likely cemented an unchanged Bank Rate decision this week, following Tuesday’s mixed labour market report.
“Despite rising energy prices, BoE-speak has been clear that the majority of the MPC likely prefers to keep rates where they are this month,” the analyst added.
Looking beyond September, however, the data leave the Bank in an awkward position. On the one hand, the jobs and wage figures are disinflationary, with payrolls, vacancies and nominal wage growth weakening.
August’s increase in consumer inflation was principally the result of an external energy shock, with core and services inflation stable. However, rapidly rising producer and import costs create a risk that the initial energy shock spreads into broader goods and transport prices, increasing the likelihood of secondary effects within the economy.