No V? The lack of a V-shaped recovery may not be worrying stock markets too much, but it is a source concern for consumers who lost confidence over the course of May. Perhaps this was due to the glacial pace of easing of lockdown restrictions and annoyance at the government; or perhaps it was economic – worries about job losses and a big drop in house prices finally sinking in and offsetting the novelty of being furloughed.

Whatever the cause, GfK’s UK consumer confidence index slipped to –36 in the second half of May, down from –34 in the first half and near the –39 printed in July 2008. Meanwhile, Japanese household spending fell even further in April, declining more than 11%. This was the fastest drop in spending since 2001 and built on a 6% drop in March.

Stock markets fell yesterday, pausing what’s been a robust risk-on rally in June, whilst bond yields snapped out of their funk. European stock markets suffered a broad decline. The Nasdaq hit a record intra-day high but ended down 0.7% on the day. The Dow eked a small gain, but the broad S&P 500 index declined 0.34%, though held the 3100 handle after dropping as low as 3090.

European stock markets rebound, eyes on bonds after ECB QE hike

Today, European stock markets rallied back to their highs of the week in the first half hour of trading, with the FTSE rising above 6400 and the DAX at 12,700. Both set to complete a very strong week of gains, with a German stimulus package and ECB bond buying helping to lift sentiment. The DAX’s breach of the 61.8% retracement was a very good bullish signal –  since then, in the last week it has cleared the 200-day line and advanced through the 78.6% level, up close to 10% since last Friday’s close. The FTSE is over 5% higher this week.

Eyes on the bond market again: after being somewhat subdued by central bank actions for many weeks US 10yr yields broke out to 0.85% even as stocks slipped up, whilst 2s couldn’t move beyond 0.2%. I think you have to look deeper into what the central banks are doing here as well as the amount of issuance. The Fed is reducing the pace of asset purchases, but investors think it will need to keep a lid on the front end of the curve for a long time by keeping its target rate at zero.

The move in US yields seemed to be a result of the ECB move to increase QE by a further €600bn. I’m not sure we can draw any immediate conclusions from this sharp move in US rates, but it will be very interesting to watch how the Fed responds to this development. Does it seek to influence the yield curve – yield curve control like the Bank of Japan, or does it let bond markets function?

If investors are dumping longer-dated bonds, and driving up yields, it may be that the inflation trade is on – given the tsunami of issuance and central bank intervention, it is logical enough to expect a bout of inflation coming round the bend, even if the immediate pressures from the pandemic are deflationary. Or it may just be a signal that the bond market thinks the worst of the crisis is over and we can chill out a bit – the move up in yields and drop in the Vix under 25, combined with the rally in equities should all be telling us that things are hunky dory.

When you look at the economic data, however, it’s hard to be to very optimistic. One to watch.

US nonfarm payrolls report on tap

The US nonfarm payrolls print is the last big risk event of the week, and seen at –8m, albeit Wednesday’s ADP number was just –2.76m vs –9m expected. Last month showed a massive –20m drop, but it only really told us what we already knew after several weeks of dreadful weekly initial claims numbers. Yesterday, US initial jobless claims fell to 1.9m but the continuing claims number rose 650k from last week to 21.5, ahead of expectations.

The fact that this number is rising is a worry that either businesses are not rehiring very fast, or worse, workers laid off simply don’t want to go back to work because they earn more now being unemployed thanks to the expanded benefit package. One report indicated about 40% of US workers are better off not working.

WTI oil, Brent oil near highs as OPEC again suggests moving meeting

Oil was near the highs with WTI (Aug) above $38 and Brent (Aug) above $40.50 as OPEC brings its off-again, on-again meeting forward from June 9th to June 6th (tomorrow) – at least that is the current understanding.

At various stages this week it’s been taking place yesterday, next week and not at all. Russia and Saudi Arabia want to get this extension over the line before the start of the new trading week. The meeting taking place on a Saturday does raise the prospect of a gap open on Sunday night.

Dollar unwind continues, euro higher on ECB stimulus

In FX, the dollar continues to get hit in an unwind of the pandemic trade that pushed it aggressively higher. EURUSD has advanced with the ECB stimulus which is going to give the politicians a better chance of agreeing to fiscal stimulus as per the EC’s budget proposals.

EURUSD broke above 1.1350 to trade around 1.1370 – eyes on the 1.1450 target still. GBPUSD is up around 1.2640, near to breaching the 200-day moving average, despite worries about Brexit talks going nowhere and the British parliament rejecting any extension of the transition period. The break by the pound above the twin peaks of the April highs opens up the path back to 1.28 and then 1.31, but the 200-day line offers a big test first.

Candlestick price chart for the pound sterling to US dollar FX pair

Latest news

Sunday, 29 December 2024

Indices

Stock market today: Most Asian stocks fell after US equities declined

Sunday, 29 December 2024

Indices

MicroStrategy joins Nasdaq-100 index: MSTR stock performance analysis 2024

Sunday, 29 December 2024

Indices

Morning Note: Key Levels & Data Driving the Last Monday of 2024

Closing 2024

Thursday, 26 December 2024

Indices

Week ahead: Closing 2024 and First Economic data from 2025

SettingsRequest history8.1.18PHP Version541msRequest Duration4MBMemory UsageGET news/{slug}
status
200 OK
full_url
https://web-qa.staging.markets.com/news/equities-head-strong-finish-all-eyes-on-bond-market-nfp-jobs...
controller_action
App\Http\Controllers\DynamicContentController@getNewsFromCollection
Theme
Open Button Position
Hide Empty Tabs
Autoshow
Reset to defaults
status
200 OK
full_url
https://web-qa.staging.markets.com/news/equities-head-strong-finish-all-eyes-on-bond-market-nfp-jobs...
action_name
controller_action
App\Http\Controllers\DynamicContentController@getNewsFromCollection
uri
GET news/{slug}
controller
App\Http\Controllers\DynamicContentController@getNewsFromCollection
file
app/Http/Controllers/DynamicContentController.php:370-421
middleware
web, SetDomain, GoMarkets, setlocale, trackingparams, redirects, Logout, pagecache, setrisk, gettranslations, getglobalsettings, urlstructure, saveReferral
duration
541ms
peak_memory
6MB
response
text/html; charset=UTF-8
request_format
html
request_query
[]
request_request
[]
request_headers
0 of 0
array:15 [ "accept-encoding" => array:1 [ 0 => "gzip, deflate, br, zstd" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "accept" => array:1 [ 0 => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "connection" => array:1 [ 0 => "keep-alive" ] "host" => array:1 [ 0 => "web-qa.staging.markets.com" ] ]
request_cookies
[]
response_headers
0 of 0
array:3 [ "content-type" => array:1 [ 0 => "text/html; charset=UTF-8" ] "cache-control" => array:1 [ 0 => "no-cache, private" ] "date" => array:1 [ 0 => "Thu, 03 Apr 2025 16:09:44 GMT" ] ]
session_attributes
0 of 0
array:1 [ "_token" => "s0zqUE7geBycTERZ8o1GkyKc8OorlO23rwpJFXlr" ]
  • infolog[16:09:44] LOG.info: api_d95cb3f61c45d0390bfea54f1a81e327 [ "\/news\/equities-head-strong-finish...
  • infolog[16:09:44] LOG.info: api_4e078374e807401c5e982920412a6cc7 [ "\/news\/equities-head-strong-finish...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • infolog[16:09:44] LOG.info: api_d357c0f226d96ae2d743e897bca9b8c7 [ "\/news\/equities-head-strong-finish...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[16:09:44] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • infolog[16:09:44] LOG.info: page_61ef26a78e4011b34629414f85915610 [ "\/news\/equities-head-strong-finis...
  • Booting (13.09ms)time
  • Application (527ms)time
  • Routing (1.26ms)
  • 1 x Application (97.58%)
    527ms
    1 x Booting (2.42%)
    13.09ms
    1 x Routing (0.23%)
    1.26ms
    95 templates were rendered
    • 1x news-contentnews-content.blade.php#?blade
    • 1x components.news-landingnews-landing.blade.php#?blade
    • 1x components.news-singlenews-single.blade.php#?blade
    • 1x components.article-navigationarticle-navigation.blade.php#?blade
    • 1x components.text-editortext-editor.blade.php#?blade
    • 1x components.share-listshare-list.blade.php#?blade
    • 1x repeatable.trading-tabletrading-table.blade.php#?blade
    • 6x repeatable.trading-table-labelstrading-table-labels.blade.php#?blade
    • 24x repeatable.trading-table-rowtrading-table-row.blade.php#?blade
    • 1x components.news-columnnews-column.blade.php#?blade
    • 34x components.strapi-imgstrapi-img.blade.php#?blade
    • 3x components.spacerspacer.blade.php#?blade
    • 1x components.news-rownews-row.blade.php#?blade
    • 1x layouts.mainmain.blade.php#?blade
    • 1x csscss.blade.php#?blade
    • 1x scripts.hrefmaphrefmap.blade.php#?blade
    • 1x layouts.headerheader.blade.php#?blade
    • 1x layouts.header.mobile-login-buttonsmobile-login-buttons.blade.php#?blade
    • 1x layouts.header.mobile-searchmobile-search.blade.php#?blade
    • 2x repeatable.languageslanguages.blade.php#?blade
    • 1x layouts.header.menumenu.blade.php#?blade
    • 1x layouts.header.search-togglesearch-toggle.blade.php#?blade
    • 1x layouts.header.login-buttonslogin-buttons.blade.php#?blade
    • 1x components.search-resultssearch-results.blade.php#?blade
    • 1x components.blur-animationblur-animation.blade.php#?blade
    • 1x layouts.floating.cookiescookies.blade.php#?blade
    • 1x scripts.breadcrumbsbreadcrumbs.blade.php#?blade
    • 1x components.corner-advertcorner-advert.blade.php#?blade
    • 1x layouts.footerfooter.blade.php#?blade
    • 1x scripts.functionalfunctional.blade.php#?blade
    • 1x scripts.trackingtracking.blade.php#?blade
    uri
    GET news/{slug}
    middleware
    web, SetDomain, GoMarkets, setlocale, trackingparams, redirects, Logout, pagecache, setrisk, gettranslations, getglobalsettings, urlstructure, saveReferral
    controller
    App\Http\Controllers\DynamicContentController@getNewsFromCollection
    file
    app/Http/Controllers/DynamicContentController.php:370-421
    0 statements were executed0μs
          _token
          s0zqUE7geBycTERZ8o1GkyKc8OorlO23rwpJFXlr
          ClearShow all
          Date ↕MethodURLData
          #12025-04-03 16:09:44GET/news/equities-head-strong-finish-all-eyes-on-bond-market-nfp-jobs-report/3495