Monetary Policy Statement Review - South Africa March 2024
Author
Kudzanai Tsunga
Overview
The monetary policy statement motivated for leaving the repo rate unchanged at 8.25% and this was motivated by services inflation, inflation expectations, and the global trend. It noted an acceleration in services inflation, which was at its highest level since 2019, indicated that services, rather than goods, as being the main inflation driver. This phenomenon has become a global trend and inflation expectations can contribute to elevated underlying inflation rates, as there is little room to absorb shocks when expectations remain high. Despite low unemployment rates, major central banks are expected to adjust rates cautiously. Emerging markets, previously hiking rates, now see reductions, yet rates remain above inflation. Thus, the return to the target inflation rate of 4.5% has been slow. Recent inflation numbers show a delay in reaching the target, with headline inflation reaching 5.6% in February, closer to the top of the target range. South Africa’s, economic performance was below expectations due to supply-side issues, notably electricity shortages and transport constraints, but forecasts suggest modest growth acceleration as supply constraints ease, particularly regarding electricity shortages.
Sentiment
The monetary policy committee (MPC) has put the repo rate on hold citing services inflation, global inflation trends, tidytext shows a moderately positive statement given the choice of words used in the statement. The AFINN index of the statement had an overall positive score of 5 and the summary table showed emphasis on growth as a positive and risk for the negative words.
library(tidytext)library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr 1.1.4 ✔ readr 2.1.5
✔ forcats 1.0.0 ✔ stringr 1.5.1
✔ ggplot2 3.5.0 ✔ tibble 3.2.1
✔ lubridate 1.9.3 ✔ tidyr 1.3.1
✔ purrr 1.0.2
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(tibble)# summarise the statement and create tibble summary_text <-readLines("za_mpc_27032024")
Warning in readLines("za_mpc_27032024"): incomplete final line found on
'za_mpc_27032024'
summary_text <-tribble(~summary, summary_text)tokenized_summary <- summary_text %>%unnest_tokens(word, summary)afinn_lexicon <-get_sentiments("afinn")# Join the tokenized summary with the AFINN lexiconscored_summary <- tokenized_summary %>%inner_join(afinn_lexicon, by ="word")# Create a custom color palettepos_ <-"green"neg_ <-"red"# Filter out words with neutral sentiment (score = 0)filtered_summary <- scored_summary %>%filter(value !=0)total_score <- scored_summary %>%summarise(total_sentiment =sum(value))cat("Sentiment Score for the Statement:", total_score$total_sentiment, "\n")
The word summary and wordcloud show inflation being mentioned 26 times with the next frequent word with 8 mentions being rates. This complements the concerns of services and food inflation as significant concern for the MPC. The bigram summary showed inflation being mentioned the most with food (3 times), and twice mentioned with: headline, expectations, and core. The bgram chart summarises the top bigrams (given in Table 2) and the direction of relationship.
library("tm") #load library
Loading required package: NLP
Attaching package: 'NLP'
The following object is masked from 'package:ggplot2':
annotate
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (2): mpc_issue, statement
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.