US talks with North Korea have broken up without a deal. South Korean shares fell sharply as the meeting broke up, with Asian shares broadly in the red. I don’t think this will ultimately have too much bearing on global indices in the longer term, but for now with hopes of a deal with China on trade not exactly fading, but certainly not rising, it’s 0 from 2 for Trump this week and risk sentiment is suffering as a result. The combination of the lack of progress with North Korea and China will drag on equities and we might have to wait for a new catalyst to renew the bullish start to the year.

The FTSE 100 opened down 0.6%, extending its recent run of losses as it approached 7060. As we noted in yesterday’s note, the drop below 7100 brought this important 38% retracement level into focus. Below lies the 7000 round number target for bears, which is roughly where the channel trend support kicks in.

Oil was on the defensive as US production hit a fresh record and weaker Asian PMIs pointed to slackening demand.

China’s manufacturing PMI fell for a third straight month in February, slumping to a three-year low. Meanwhile Japan’s industrial production notched up its biggest fall in a year, slipping 3.7% in January. A definite sense that this is a symptom of the ongoing trade tensions and with no resolution in sight, data should continue to slacken and this will likely weigh on equities.

Brent has come off its highs following the large drawdown of US inventories on Wednesday, with the $67 level now looking like firm resistance. We may now expect some consolidation in the $65-$67 range. In forex, following the votes last night not a lot has really shifted on the Brexit front leaving the pound hovering near its highs but a little off. GBPUSD was last at 1.3285, having risen above 1.33 yesterday.

EURUSD was steady at 1.1380 having failed to break the key 50% Fib retracement. Broadly the dollar is doing the work here as it has come off its lows.

IAG: strong performance in face of headwinds, questions remain

This was a strong performance from IAG against a tough backdrop for the sector with higher fuel prices, air traffic control disruptions and foreign exchange headwinds. Operating profit and the dividend are a beat versus expectations.

Fourth quarter operating profit came in at £655m, delivering operating profit of €3.23bn before exceptional items, up 9.5% from a year before.

After completing a €500 million buyback last year, IAG plans on returning more than €1.3 billion to shareholders via ordinary dividends of €615 million, whilst also announcing a special dividend of €700 million. Fuel costs jumped 18%, so the flat performance on total cost per ASK looks like a good performance.

IAG also announced it is buying 18 Boeing 777-9 aircraft, plus the option on 24, for BA., underlining its confident outlook. Based on current oil prices and exchange rates, 2019 profits are expected to be broadly flat with last year. If anything that smacks of being too cautious.

Questions remain though for IAG. It’s been a tough time in the last few days after being dropped by MSCI from its global indices after changing foreign ownership rules to meet EU rules ahead of Brexit. Passive funds have been forced to sell IAG shares and the stock has suffered. It’s also in a spat with the Civil Aviation Authority over a deal with Heathrow. And the entire European short haul sector still has big question marks over demand and supply in 2019, not least because of Brexit. But having walked away from Norwegian, highlighting management’s capital discipline, investors should remain on side.

Shares have jumped 3.6% with investors shrugging off the slightly uncertain outlook and embracing the special dividend.

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 Version819msRequest Duration4MBMemory UsageGET {locale}/news/{slug}
status
200 OK
full_url
https://web-qa.staging.markets.com/vc/news/us-korea-talks-end-without-deal-oil-slips-iag-results
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/vc/news/us-korea-talks-end-without-deal-oil-slips-iag-results
action_name
controller_action
App\Http\Controllers\DynamicContentController@getNewsFromCollection
uri
GET {locale}/news/{slug}
controller
App\Http\Controllers\DynamicContentController@getNewsFromCollection
prefix
/{locale}
where
file
app/Http/Controllers/DynamicContentController.php:370-421
middleware
web, SetDomain, GoMarkets, setlocale, trackingparams, redirects, Logout, pagecache, setrisk, gettranslations, getglobalsettings, urlstructure, saveReferral
duration
819ms
peak_memory
6MB
response
text/html; charset=UTF-8
request_format
html
request_query
[]
request_request
[]
request_headers
0 of 0
array:16 [ "cookie" => array:1 [ 0 => "mktv4_ip_override=eu; mktloc=eyJpdiI6Ik5FSlF1K1k3MzMyTTQwMEluL1daSnc9PSIsInZhbHVlIjoibDhtcUx2WTBNVzBLSkhXaFdYbFNFSENJazAvL0ZsV3FwbGpRaFRSaE8yQXp6UjhHaFdJVWxHYkZTVlllRUw4bSIsIm1hYyI6IjA0YTA5ZDcyYzJhZTQzZjZlMzg1MGQ0MTgyOWNkNGQzNTVmZjdkMGE0MjZhOGU0YzlmYzM5ZDFiNjFlNDEzMTkiLCJ0YWciOiIifQ%3D%3D; intent_group=%252Fnews%252Fweek-ahead-markets-set-for-another-busy-economic-calendar%252F; firstURL=https://web-qa.staging.markets.com/news/week-ahead-markets-set-for-another-busy-economic-calendar/; lastURL=https://web-qa.staging.markets.com/news/week-ahead-markets-set-for-another-busy-economic-calendar/; XSRF-TOKEN=eyJpdiI6InN6VlZ1VTBNRC9TSGN0WWNiazlCUFE9PSIsInZhbHVlIjoiTHFjSFVLeUg5R0FLVjYxcThGMjdsOWpSdUdlM0NpZC9rMkMwaGozdkE2VU15SWNUSmlKVG1zRHdzc0ZaT1NpVHpqR3pGQmRDMEZkK05zb2JNVk94eDYvei9uWVdRRXpDK09sdXViZUI3Zm80WDBTVGxQelNaZFpzTDE5eE5ERUMiLCJtYWMiOiI2ZWJlYTAxODVmMmZhZGIyMjY4MWNjZDI4YTdjMTM3NWY2OWQyMjEzYzQ4YzBmNzRlYTliZjQ3NmRlZTQ4ZWRmIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6IkhBQ0RrRHVtUDRkR1g0UkdPM3Y5cnc9PSIsInZhbHVlIjoiVmRZbDJGaXIwUS9VQTRyU3ZEcWtha1V5TkdXQ1lCbk84bTZNOWI2M2pSQis0T2RTamh2WExveHY0am1YVGJLU1dwQXJ0YXlTaTZEY3orSjlyS0VzMVZ3U3lndmRJT25RUHJMTmFYVXhXeklqMkpJeUgzMkxxZ3JXL1ljQTBmd2QiLCJtYWMiOiIwMzJjOWNiZTA2YTE5MTg5ZjEyMTdkYzM0OTJhMzU5ZGM2OTEzOWM4NDJkMmRkYmQ2MTU0OGRkNWU5Y2QyN2Q1IiwidGFnIjoiIn0%3Dmktv4_ip_override=eu; mktloc=eyJpdiI6Ik5FSlF1K1k3MzMyTTQwMEluL1daSnc9PSIsInZhbHVlIjoibDhtcUx2WTBNVzBLSkhXaFdYbFNFSENJazAvL0ZsV3FwbGpRaFRSaE8yQXp6UjhHaFdJVWxHYkZ" ] "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
0 of 0
array:7 [ "mktv4_ip_override" => null "mktloc" => "us,us" "intent_group" => null "firstURL" => null "lastURL" => null "XSRF-TOKEN" => "SzE5h7c6z0kVJbWlSbyTp2ZGoBIyAZGRnMs6XnLt" "laravel_session" => "KTqt6YJmyE979ZYUQ2Ljyp3uoj9dKcqFVml9ev5f" ]
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 => "Mon, 14 Apr 2025 18:56:35 GMT" ] ]
session_attributes
0 of 0
array:4 [ "_token" => "SzE5h7c6z0kVJbWlSbyTp2ZGoBIyAZGRnMs6XnLt" "PHPDEBUGBAR_STACK_DATA" => [] "_previous" => array:1 [ "url" => "https://web-qa.staging.markets.com/params" ] "_flash" => array:2 [ "old" => [] "new" => [] ] ]
  • infolog[18:56:35] LOG.info: api_1eec8f0ff4e9de9d4b2be764fa0242b4 [ "\/vc\/news\/us-korea-talks-end-with...
  • infolog[18:56:35] LOG.info: api_1e62237317eb4a0cd4caae0df1a1cb27 [ "\/vc\/news\/us-korea-talks-end-with...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • infolog[18:56:35] LOG.info: api_754cef4b2912422cef36b67e39552ed5 [ "\/vc\/news\/us-korea-talks-end-with...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • warninglog[18:56:35] LOG.warning: str_replace(): Passing null to parameter #3 ($subject) of type array|string ...
  • infolog[18:56:35] LOG.info: page_4b7210e693188ecebe6380d48207f577 [ "\/vc\/news\/us-korea-talks-end-wit...
  • Booting (13.02ms)time
  • Application (806ms)time
  • Routing (10.18ms)
  • 1 x Application (98.41%)
    806ms
    1 x Booting (1.59%)
    13.02ms
    1 x Routing (1.24%)
    10.18ms
    96 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.page-advertpage-advert.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 {locale}/news/{slug}
    middleware
    web, SetDomain, GoMarkets, setlocale, trackingparams, redirects, Logout, pagecache, setrisk, gettranslations, getglobalsettings, urlstructure, saveReferral
    controller
    App\Http\Controllers\DynamicContentController@getNewsFromCollection
    prefix
    /{locale}
    where
    file
    app/Http/Controllers/DynamicContentController.php:370-421
    0 statements were executed0μs
          _token
          SzE5h7c6z0kVJbWlSbyTp2ZGoBIyAZGRnMs6XnLt
          PHPDEBUGBAR_STACK_DATA
          []
          _previous
          array:1 [ "url" => "https://web-qa.staging.markets.com/params" ]
          _flash
          array:2 [ "old" => [] "new" => [] ]
          ClearShow all
          Date ↕MethodURLData
          #12025-04-14 18:56:35GET/vc/news/us-korea-talks-end-without-deal-oil-slips-iag-results/3696