Closing Wrap - Friday 08.05
Headlines
  • US Awaiting Response From Iran Over Ceasefire Proposals, Says Rubio
  • US Military Strikes Tankers Trying To Break Blockade
  • Iranian MP: Iran Has Unfinished Business With UAE
  • Iranian MP: US Naval Blockade Attempts Will Face Military Response
  • Fed’s Miran: Fed Policy Holding Back Job Market
  • Fed's Goolsbee Tells CNBC That Job Market Is Holding In
  • UK PM Starmer Under Pressure, As Labour Suffers Heavy Elections Losses
  • Burnham Allies ‘Offer MPs Peerages To Stand Aside’ So He Can Run For PM
  • Aramco, Adnoc Sneak Oil Through Hormuz As Iran Menaces Strait
  • Libya's Zawiya Oil Refinery Shut Due To Nearby Clashes
  • Apollo, Blackstone Weigh USD35 Bln Financing For Broadcom
  • US Said To Suspect Nvidia Chips Smuggled To Alibaba Via Thailand
  • Chris Hohn Slashes USD8 Bln Microsoft Stake In Warning Over AI Disruption
  • Apple, Intel Have Reached Preliminary Chip-Making Agreement
  • Airlines Cannot Add Fuel Surcharges After Ticket Sales, EU Says
Commentary
Back-To-Back US Jobs Gains, But Hiring Caution Lingers

The US jobs report has come in notably stronger than expected for a second consecutive month. Payrolls rose 115k in April versus the 65k expectation, while last month's initial print of 178k is now 185k. This is the first back-to-back monthly jobs increase since May of last year. Other key metrics are that the unemployment rate held steady at 4.3% with the details contradicting the payrolls' data, in that the household survey suggests employment fell 226k while the number of people declaring themselves unemployed rose 134k. Meanwhile, average hourly earnings rose 0.2%MoM/3.6%YoY, which was below the 0.3%/3.8% consensus prediction.

The details show private education and healthcare services added 46k jobs, while transportation and warehousing added 30k and retail contributed 22k, with leisure and hospitality employment increasing 14k. Manufacturing lost 2k though, with information dropping 13k and financial activities losing 11k. Over the past twelve months, the US has added 238k jobs, or just under 20k per month on average, most of which have come in the past two months. (ING – Continue Reading)

UK Election Results Mark "Historic Shift In British Politics," Trump Ally Farage Says As Big Parties Reel

The United Kingdom's governing Labour Party and the opposition Conservative Party, which together have dominated British politics and seated every prime minister for more than 100 years, both took a gut punch in a major round of local elections on Thursday.

For Labour leader and current Prime Minister Keir Starmer, the heavy losses on city councils across England, even with votes still being counted in Scotland and Wales, paint a bruising picture.

Starmer took office less than two years ago, after Labour won a landslide in the last national parliamentary elections. In Thursday's voting, the party lost more than half of its seats on local councils, fuelling renewed calls for Starmer to resign as leader of both his party and the country. (CBS – Continue Reading)

Trump Is ‘Bored’ With The War He Started

President Trump really, really wants the war with Iran to end. He has declared victory many times, including about three weeks ago, when Iran briefly reopened the Strait of Hormuz. He has repeatedly extended his cease-fire deadlines instead of following through on his (sometimes-apocalyptic) threats to resume hostilities. This week, his administration abruptly abandoned an effort to escort ships through the strait in part because of a fear that it could provoke violent, escalating confrontations.

Trump is tired of the war, which has proved far more difficult and lasted far longer than he had expected. His party is warily watching rising gas prices and falling poll numbers. He doesn’t want to be bogged down in a Middle East conflict like some of his predecessors were. He doesn’t want it to upend his high-stakes summit next week in China. He is ready to move on. (The Atlantic – Continue Reading)

UBS Economist: Consumers Footing The Bill As Firms Pass On Rising Costs From War

People in developed economies are cutting savings to maintain living standards, as higher costs linked to the Iran war are pushed directly onto households, an economist told CNN.

“Companies are effectively passing costs on to the end consumer,” said Paul Donovan, global chief economist for UBS Wealth Management.

His comments come as consumer sentiment in the US continued to decline this month, hitting a record low as the ongoing closure of the Strait of Hormuz rattles global energy markets. (CNN – Continue Reading)

Fitch Ratings Raises Its Near-Term Oil And European Gas Price Assumptions

Fitch Ratings has raised its 2026-2027 oil price assumptions due to the longer-than-expected effective closure of the Strait of Hormuz amid the Iran conflict. They are now based on an assumption the strait will begin reopening around July. The higher 2026-2027 Title Transfer Facility (TTF) assumptions reflect disrupted liquefied natural gas (LNG) flows from Qatar through the strait and damage to the country’s LNG infrastructure.

The key driver of the oil price change is our revised assumption on the duration of the effective closure of Hormuz. Before the war, 15 million barrels a day (mmbpd) of crude oil and 5 mmboepd of oil products transited through Hormuz, accounting for about 20% of global oil consumption. Reopening could happen relatively quickly, but the process could also be fractious and uncertain. We have assumed the strait closure will last for about five months for our revised oil price assumptions, compared with one-to-two months previously. Average annual oil prices are likely to be lower if the closure lasts for less than five months. (Fitch – Continue Reading)

Files & Links
DATA
IRAN WAR
GOVERNMENT/CENTRAL BANK NEWS
FIXED INCOME NEWS
FX NEWS
CRYPTO NEWS
ENERGY/COMMODITY NEWS
EQUITY NEWS
EMERGING MARKETS NEWS
/*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; } }