European Briefing - Friday 06.11
Headlines
  • Trump Meets Natl Security As Decision On Iran War Expected Soon
  • Senior Iranian Official: Iran Sends Nuclear Proposal To US Via Qatar
  • Trump Meets Putin Envoy Kirill Dmitriev At White House
  • US Envoy Kushner Reports Productive Talks With Ukraine And NATO
  • Democrats Are Hatching A Plan To Reverse Trump’s Canada Tariffs
  • Carney's 2nd Budget Earmarks Billions For Affordability And Sovereignty
  • US Oct Payrolls Seen Rising 65K, Unemployment Rate Expected At 4.2%
  • Japan's Real Wages Rise For 9th Month In Sep, Backing BoJ Hike
  • Japan’s Takaichi Eyes BoJ ETF Sales To Fund Economic Security
  • Japan’s GPIF Results In Focus For Hints Of Allocation Shift
  • Saudi Aramco Cuts Dec Arab Light OSP To Asia To -$7/Bbl, Six-Year Low
  • South Korean Exchange Halts Trading As AI Stock Sell-Off Accelerates
  • Japan’s Nikkei Nears Bear Market Territory Amid AI Sell-Off
  • Major Investors Question Anthropic’s Proposed $1.5T IPO Valuation
  • Google Plans $17B Wyoming Data Centre Investment
  • Michael Burry Says He Sold 25% Of His Semiconductor ETF Puts
  • Microchip Second-Quarter Revenue Rise; Issues Q3 Guidance
  • Cloudflare Boosts Annual Profit View As AI Spurs Network Demand
  • Airbnb Posts 19% Revenue Jump As Chesky Hails ‘Growth Mode’
  • BMW AG Downgraded To 'A-' At S&P; Outlook Negative
Commentary
US Payrolls Growth May Help Guide Fed’s December Decision

Friday’s US employment report is expected to show that the labour market remained steady in October, leaving the Federal Reserve to judge whether hiring is in recovery or set to weaken more materially.

Economists’ estimates compiled by LiveSquawk point to a median forecast of 65,000 nonfarm payrolls, following September’s 29,000 gain. Forecasts range from 40,000 to 120,000, underlining some uncertainty around the underlying pace of hiring.

The unemployment rate is expected to remain at 4.2%, while average hourly earnings are seen rising 0.3% m/m and 2.9% y/y.

Although payrolls are expected to remain relatively subdued, the broader tone of the report may matter as much as the headline figure itself. Markets will also be watching revisions to prior months, labour force participation, the workweek and the household survey for a clearer read on underlying conditions. (LS – Continue Reading)

Japan’s GPIF Results In Focus For Hints Of Allocation Shift

Japan’s Government Pension Investment Fund is set to report quarterly results on Friday as investors look for any hints that it may shift its asset allocations.

Speculation has been rife for months that the ¥320 trillion ($2 trillion) fund, one of the world’s biggest public pension investors, may direct more money back to its home market in a move that would boost Japanese stocks and bonds. (BBG – Continue Reading)

Japan's Real Wages Rise For 9th Month In Sep, Backing BoJ Hike

Japan's real wages rose 2.2% in September from a year earlier, marking the ninth consecutive month of gains, government data showed on Friday, supporting the case for the Bank of Japan to keep raising interest rates.

Growth in real, or inflation-adjusted, pay picked up from August's revised 1.6% gain. Average nominal wages, or total cash earnings, rose 4.6% to 311,409 yen ($1,972.94), the fastest rise since January ⁠1997 and up from August's revised 3.9% growth.

Workers' base salaries, or regular pay, increased 3.7%, roughly in line with the 3.8% gain in August. A labour ministry official cited a steady rise in base salaries this year as a factor behind the improvement in real wages. (RTRS – Continue Reading)

Investors Skeptical Anthropic IPO Can Achieve $1.5T Valuation

Major investors are increasingly skeptical Anthropic’s blockbuster initial public offering can proceed at the expected valuation of $1.5 trillion after a deep market selloff tied to the unwinding of AI-related bets, according to people familiar with the matter.

Anthropic is aiming to stage the IPO the week before Thanksgiving and has been expected to raise up to $100 billion in an offering that could value the company at around $1.5 trillion. (WSJ – Continue Reading)

Files & Links
LS PREVIEWS/ REPORTS
DATA
WAR NEWS
GOVERNMENT/CENTRAL BANKS
FIXED INCOME NEWS
FX NEWS
COMMODITIES
EARNINGS
EQUITIES
CRYPTO 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; const TOKEN_ENDPOINT = "https://www.livesquawk.com/api/get_token.php"; 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; case 'GetConnectionState': checkSocketConnectionState(); 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 }); } async function join_publisher_channel(data) { if (typeof data.jwt_token === 'string' && data.jwt_token !== '') { if (!socket || socket.readyState !== WebSocket.OPEN) { console.warn("[Page worker] JWT join skipped: socket not open"); return; } socket.send(JSON.stringify({ type: "join_publisher_channel", jwt_token: data.jwt_token, publisher_channel: data.publisher_channel, username: data.username, subscriber_group: data.subscriber_group, display_name: data.display_name, single_sign_on: data.single_sign_on, remote_ip: data.remote_ip, http_referrer: data.http_referrer, current_page: data.current_page, php_session_id: data.php_session_id, from_react: data.from_react, ...(typeof data.api_key === "string" && data.api_key.trim() !== "" ? { api_key: data.api_key } : {}), })); console.log("[Page worker] Sent supplied JWT join"); postMessage({ action: 'PublisherChannelJoined' }); return; } const joinSocket = socket; if (!joinSocket || joinSocket.readyState !== WebSocket.OPEN) { return; } const apiKey = typeof data.api_key === "string" ? data.api_key.trim() : ""; const partnerName = partnerFromCurrentPage(data.current_page); let tokenBody; if (apiKey !== "") { tokenBody = { api_key: apiKey }; } else if (partnerName) { tokenBody = { partner_name: partnerName }; } else { tokenBody = { username: data.username || "", publisher_channel: data.publisher_channel || "", }; } let jwtToken = null; try { const requestStartedAt = Date.now(); const response = await fetch(TOKEN_ENDPOINT, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(tokenBody), credentials: "same-origin", cache: "no-store", }); if (!response.ok) { throw new Error(`token endpoint returned ${response.status}`); } const tokenData = await response.json(); if ( !tokenData || typeof tokenData.token !== "string" || tokenData.token === "" ) { throw new Error("token endpoint returned no token"); } const expiresIn = Number(tokenData.expires_in); if (!Number.isFinite(expiresIn) || expiresIn <= 0) { throw new Error("token endpoint returned an invalid lifetime"); } const expiresAt = requestStartedAt + (expiresIn * 1000); if (expiresAt <= Date.now() + 30000) { throw new Error("token response has insufficient remaining lifetime"); } jwtToken = tokenData.token; } catch (error) { console.warn("[Page worker] Token request failed", error); // API-key requests must not silently bypass token authentication. if (apiKey !== "") { postMessage({ action: "auth_failed" }); return; } } // A reconnect during the fetch makes this join attempt obsolete. if ( socket !== joinSocket || joinSocket.readyState !== WebSocket.OPEN ) { return; } const payload = { type: "join_publisher_channel", publisher_channel: data.publisher_channel, username: data.username, subscriber_group: data.subscriber_group, display_name: data.display_name, single_sign_on: data.single_sign_on, remote_ip: data.remote_ip, http_referrer: data.http_referrer, current_page: data.current_page, php_session_id: data.php_session_id, from_react: data.from_react, }; if (apiKey !== "") { payload.api_key = apiKey; } if (jwtToken) { payload.jwt_token = jwtToken; } console.log( jwtToken ? "[Page worker] Sending fetched JWT with legacy details" : "[Page worker] Sending legacy join without JWT" ); joinSocket.send(JSON.stringify(payload)); postMessage({ action: "PublisherChannelJoined" }); } function partnerFromCurrentPage(current_page) { try { if (!current_page) return ''; const fullUrl = current_page.startsWith('http') ? current_page : `https://${current_page}`; return new URL(fullUrl).searchParams.get('partner_name') || ''; } catch (e) { return ''; } } 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 checkSocketConnectionState() { postMessage({ action: 'SocketConnectionState', connected: Boolean(socket && socket.readyState === WebSocket.OPEN && connected_to_assigned ), }); } 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; } }