1. Introduction

The study of inflation lies at the core of economics and financial analysis. In the contemporary economic system, growth often occurs more rapidly through increased demand, which partly arises from the decline in prices. Nevertheless, as with any remedy, the difference between a cure and a poison lies in the dose — an excessive and broad-based rise in prices, unanchored from economic expectations, can bring about a wide range of political and socio-economic consequences.

In this context, U.S. inflation stands out as perhaps the most important to be analyzed, since global economic agents continuously adjust their expectations based on American economic data.


2. Packages and Data Loading

The acquisition and modeling of data are carried out using several R packages. The most important one is fredr, which provides direct access to the Federal Reserve Economic Data (FRED) API for downloading economic time series. Additional packages include tidyverse for data manipulation and visualization, patchwork for combining multiple plots, and tidyr for data transformation. The RColorBrewer package is used to enhance the visual aesthetics of the charts.

Regarding the fredr package, it is necessary to configure an API key to access FRED data. The key can be obtained for free on the FRED website, and its use is free and unrestricted. For security reasons, the key is not shared in this document. Users should insert their own API key in the code snippet below.

library(fredr)
library(tidyverse)
library(patchwork)
library(tidyr)
library(RColorBrewer)


2.1. Getting the data from FRED

As previously mentioned, accessing FRED data requires an API key. Once the key is loaded (more information can be found HERE, the dataset containing the components of the U.S. CPI can be downloaded using the following code:

indices <- c("CPIAUCSL", "CPIUFDSL", "CPIHOSSL", "CPIAPPSL",
             "CPITRNSL", "CPIMEDSL", "CPIRECSL", "CPIEDUSL", "CPIOGSSL")

colnames <- c("Date", "All_Items", "Food_and_Beverages", "Housing",
               "Apparel", "Transportation", "Medical_Care", "Recreation",
               "Education_and_Communication", "Other_Goods_and_Services")

The code above creates the list of components of the U.S. CPI, as listed in the FRED inflation table HERE, and also defines the column names to make them more user-friendly and improve visualization, facilitating data analysis.

The following code downloads all CPI component series directly from the FRED API and reshapes them into a single, wide-format dataset. Since the fredr() function does not allow downloading multiple series at once, the map_dfr() function is used to iterate over the list of series IDs, retrieving each dataset individually and combining them row by row. The resulting data frame is then transformed using pivot_wider() so that each CPI component becomes a column, facilitating analysis and visualization. Finally, column names are adjusted to more descriptive labels for clarity.

CPI_data_YoY_Rates <- map_dfr(
.x = indices, # List of FRED series IDs
.f = ~ fredr(series_id = .x, frequency = "m", units = "pc1") %>%
select(date, series_id, value) # Keep only date, ID, and YoY value
) %>%
pivot_wider(
names_from = series_id, # Convert series IDs into columns
values_from = value # Fill columns with corresponding YoY values
) %>%
select(date, all_of(indices)) # Keep columns in the same order as defined

colnames(CPI_data_YoY_Rates) <- c(colnames)

The fredr()function allows users to select and combine different data attributes. In this case, we specify frequency = “m” for monthly data and units = “pc1”, which represents the percent change from one year ago. For more details, please refer to the official fredr R package documentation .

Once the data is retrieved, it is important to perform a basic check to ensure data integrity — for instance, identifying missing values (NAs) or anomalies. This can be done easily using the summary() command:

summary(CPI_data_YoY_Rates)
##       Date              All_Items      Food_and_Beverages    Housing       
##  Min.   :1947-01-01   Min.   :-2.988   Min.   :-7.116     Min.   :-0.6991  
##  1st Qu.:1966-09-01   1st Qu.: 1.667   1st Qu.: 1.618     1st Qu.: 2.5406  
##  Median :1986-05-01   Median : 2.863   Median : 2.744     Median : 3.2787  
##  Mean   :1986-05-01   Mean   : 3.523   Mean   : 3.516     Mean   : 4.3114  
##  3rd Qu.:2006-01-01   3rd Qu.: 4.439   3rd Qu.: 4.557     3rd Qu.: 4.6462  
##  Max.   :2025-09-01   Max.   :14.592   Max.   :20.179     Max.   :18.3261  
##                       NA's   :12       NA's   :12         NA's   :252      
##     Apparel       Transportation      Medical_Care      Recreation     
##  Min.   :-7.692   Min.   :-13.7326   Min.   :-1.423   Min.   :-1.3005  
##  1st Qu.:-0.238   1st Qu.:  0.9653   1st Qu.: 3.066   1st Qu.: 0.6905  
##  Median : 1.274   Median :  3.0405   Median : 4.247   Median : 1.2142  
##  Mean   : 1.585   Mean   :  3.6532   Mean   : 4.976   Mean   : 1.3845  
##  3rd Qu.: 3.620   3rd Qu.:  5.8413   3rd Qu.: 6.502   3rd Qu.: 1.7578  
##  Max.   :10.579   Max.   : 23.1928   Max.   :13.902   Max.   : 5.1533  
##  NA's   :12       NA's   :12         NA's   :12       NA's   :564      
##  Education_and_Communication Other_Goods_and_Services
##  Min.   :-2.632              Min.   : 0.7991         
##  1st Qu.: 1.010              1st Qu.: 2.8053         
##  Median : 1.582              Median : 4.7314         
##  Mean   : 1.716              Mean   : 4.9897         
##  3rd Qu.: 2.557              3rd Qu.: 6.5716         
##  Max.   : 4.353              Max.   :12.6582         
##  NA's   :564                 NA's   :252

It is possible to observe that there are several NAs across different CPI categories, indicating that some data points are missing for certain components. In the case of the CPI, this typically occurs due to periodic changes in the composition or classification of its categories over time. Users should be aware of these structural adjustments when performing further analysis or visualization.

To address this issue, the missing values can be removed using the na.omit() function:

CPI_data_YoY_Rates <- na.omit(CPI_data_YoY_Rates)
summary(CPI_data_YoY_Rates)
##       Date              All_Items      Food_and_Beverages    Housing       
##  Min.   :1994-01-01   Min.   :-1.959   Min.   :-0.6797    Min.   :-0.6991  
##  1st Qu.:2001-12-01   1st Qu.: 1.684   1st Qu.: 1.7591    1st Qu.: 2.1807  
##  Median :2009-11-01   Median : 2.433   Median : 2.4181    Median : 2.7042  
##  Mean   :2009-10-31   Mean   : 2.549   Mean   : 2.8071    Mean   : 2.8532  
##  3rd Qu.:2017-10-01   3rd Qu.: 3.108   3rd Qu.: 3.3383    3rd Qu.: 3.1499  
##  Max.   :2025-09-01   Max.   : 8.999   Max.   :11.3820    Max.   : 8.2290  
##     Apparel         Transportation      Medical_Care      Recreation     
##  Min.   :-7.69206   Min.   :-13.7326   Min.   :-1.423   Min.   :-1.3005  
##  1st Qu.:-1.23160   1st Qu.: -0.7599   1st Qu.: 2.738   1st Qu.: 0.6905  
##  Median :-0.16556   Median :  2.1755   Median : 3.482   Median : 1.2142  
##  Mean   :-0.03122   Mean   :  2.5199   Mean   : 3.373   Mean   : 1.3846  
##  3rd Qu.: 0.81155   3rd Qu.:  5.0034   3rd Qu.: 4.247   3rd Qu.: 1.7578  
##  Max.   : 6.73104   Max.   : 22.5056   Max.   : 5.991   Max.   : 5.1533  
##  Education_and_Communication Other_Goods_and_Services
##  Min.   :-2.632              Min.   : 0.7991         
##  1st Qu.: 1.010              1st Qu.: 2.0218         
##  Median : 1.582              Median : 2.9807         
##  Mean   : 1.716              Mean   : 3.5116         
##  3rd Qu.: 2.557              3rd Qu.: 4.3900         
##  Max.   : 4.353              Max.   :10.4626

It is now possible to see that the dataset is clean, starting from January 1, 1994, and containing no missing values (NAs). In other words, it is ready to be used for further analysis.

Before moving on to the modeling and analytical stages, one last element must be defined — the category weights of the CPI. These weights reflect the relative importance of each expenditure category and vary over time to capture changes in consumer spending patterns. They are obtained directly from the U.S. Bureau of Labor Statistics (BLS) and will be stored in a fixed object called weights, as shown below:

weights <- c(All_Items = 100.000,
             Food_and_Beverages = 14.526,
             Housing = 44.201,
             Apparel = 2.480,
             Transportation = 16.571,
             Medical_Care = 8.273,
             Recreation = 5.292,
             Education_and_Communication = 5.732,
             Other_Goods_and_Services = 2.925)


3. Data Visualization

Now that the dataset is ready, we can begin the analysis and modeling process. However, every analysis starts with a fundamental question — the simplest and most direct of all: “Will inflation go up or down?”

This question, however, carries several methodological assumptions that must be clarified before proceeding. It is not possible to predict the future — that is, to forecast events that have not yet occurred. Inflation data are inherently lagged by about one month: price increases happen first, then they are recorded by official statistical agencies, compiled, and only afterward made publicly available.

Therefore, what an economist or analyst can truly attempt is to anticipate trends, not to guess the future price of the goods and services that make up the CPI basket.

There are several methods for analyzing economic data, some of which can be quite complex. However, it is common to begin with two fundamental comparative approaches: vertical analysis, which compares different CPI categories at a single point in time, and horizontal analysis, which compares a single category over different time periods to identify trends and changes.

This can be done using the following code:

CPI_data_YoY_Rates %>%
  # Filter only the last 4 reference dates
  filter(Date %in% c(
    max(Date),
    max(Date) %m-% months(1),
    max(Date) %m-% months(3),
    max(Date) %m-% years(1)
  )) %>%
  
  # Convert to long format for reshaping
  pivot_longer(-Date, names_to = "Category", values_to = "YoY") %>%
  
  # Pivot back to wide format, one column per date
  pivot_wider(names_from = Date, values_from = YoY) %>%
  
  # Rename columns dynamically to readable labels
  rename_with(~ case_when(
    .x == as.character(max(CPI_data_YoY_Rates$Date)) ~ "Most Recent",
    .x == as.character(max(CPI_data_YoY_Rates$Date) %m-% months(1)) ~ "1 Month Ago",
    .x == as.character(max(CPI_data_YoY_Rates$Date) %m-% months(3)) ~ "3 Months Ago",
    .x == as.character(max(CPI_data_YoY_Rates$Date) %m-% years(1)) ~ "1 Year Ago",
    TRUE ~ .x
  )) %>%
  
  # Reorder the columns for clarity
  select(Category, `Most Recent`, `1 Month Ago`, `3 Months Ago`, `1 Year Ago`) %>%
  
  # Optional: format as table when knitting to HTML
  knitr::kable(digits = 2)
Category Most Recent 1 Month Ago 3 Months Ago 1 Year Ago
All_Items 3.02 2.94 2.67 2.43
Food_and_Beverages 3.12 3.19 2.99 2.28
Housing 3.86 3.98 4.06 4.09
Apparel -0.01 0.25 -0.48 1.78
Transportation 1.77 1.06 -0.08 -1.12
Medical_Care 3.28 3.45 2.77 3.26
Recreation 3.06 2.31 2.07 0.72
Education_and_Communication 0.36 0.34 0.49 0.88
Other_Goods_and_Services 4.13 3.87 3.72 3.54

The data in the table provides valuable insights into the evolution of household costs. The CPI (All Items) appears to be rising again, mainly driven by increases in Transportation, Medical Care, Recreation, and Other Goods and Services.

Housing costs seem to have stabilized around an annual rate of 4%, while Apparel and Education and Communication remain relatively flat, hovering near zero growth.


4. Visualizing CPI Components Over Time

Visual analysis plays a central role in understanding inflation dynamics. By examining the evolution of CPI components over time, it becomes possible to identify which sectors have driven price movements and how their contributions have shifted across different economic cycles. In the next sections, a set of charts will illustrate both the long-term trends and the short-term behavior of U.S. inflation, offering a clearer picture of its underlying structure and recent momentum.


4.1. CPI All Items Over Time and its Components

The “All Items” CPI serves as the broadest measure of inflation, capturing price changes across the entire consumer basket. To analyze its behavior, we will visualize it from two complementary perspectives.

The first plot displays the year-over-year evolution of the CPI over the past 12 months, alongside its 2-year moving average (24 observations). This visualization highlights short-term fluctuations relative to the medium-term inflation trend, helping to distinguish temporary movements from more persistent dynamics.

# Create a smoothed 2-year (24 months) moving average
CPI_AllItems <- CPI_data_YoY_Rates %>%
select(Date, All_Items) %>%
arrange(Date) %>%
mutate(MA_2Y = zoo::rollmean(All_Items, k = 24, fill = NA, align = "right"))

# Plot 1: CPI All Items over the last 12 months vs 2-Year Moving Average
p1 <- CPI_AllItems %>%
  filter(Date >= max(Date) %m-% months(12)) %>%
  ggplot(aes(x = Date)) +
  geom_line(aes(y = All_Items, color = "CPI YoY (%)"), linewidth = 1) +
  geom_line(aes(y = MA_2Y, color = "2-Year Moving Average"),
                linewidth = 1, linetype = "dashed") +
  labs(
    title = "CPI All Items: Last 12 Months vs 2-Year Trend (MA)",
    x = "Date",
    y = "Year-over-Year Change (%)",
    color = ""
  ) +
  theme_minimal(base_size = 13) +
  theme(legend.position = "bottom")

# Plot the chart
p1

It is possible to observe from the 24-month (2-year) moving average that the CPI experienced a marked decline throughout 2025. However, recent data indicate a moderate recovery, with inflation levels returning to values similar to those seen at the beginning of the year. This pattern suggests a potential stabilization phase following the disinflationary momentum observed earlier in the year.

The second chart displays the monthly evolution of year-over-year inflation rates for the overall CPI (“All Items”) and its main components over the past 12 months, without applying any weighting scheme. This view highlights the relative behavior of each sector and helps identify which categories have driven the most significant movements in aggregate inflation during the recent period.

# Weighted CPI Components vs All Items (Stacked Bars + CPI Line)
p2 <- CPI_data_YoY_Rates %>%
  mutate(
    across(
      -Date,
      ~ if (cur_column() != "All_Items") {
        # Apply weights normalized to 100 excluding All_Items
        .x * (weights[cur_column()] / sum(weights[names(weights) != "All_Items"]))
      } else {
        .x
      }
    )
  ) %>%
  filter(Date >= max(Date) %m-% months(12)) %>%
  pivot_longer(
    cols = -Date,
    names_to = "Category",
    values_to = "Weighted_YoY"
  ) %>%
  filter(Category != "All_Items") %>%
  ggplot(aes(x = Date)) +

  # Weighted components as stacked bars
  geom_col(
    aes(y = Weighted_YoY, fill = Category),
    position = "stack",
    color = "white",
    linewidth = 0.2
  ) +

  # CPI (All Items) line on top
  geom_line(
    data = CPI_data_YoY_Rates %>%
      filter(Date >= max(Date) %m-% months(12)),
    aes(y = All_Items, color = "CPI (All Items)"),
    linewidth = 1.2
  ) +

  # Distinct palettes for components and CPI line
  scale_fill_manual(
    values = colorRampPalette(brewer.pal(8, "Set3"))(length(weights) - 1)
  ) +
  scale_color_manual(
    values = c("CPI (All Items)" = "black"),
    guide = guide_legend(order = 1)
  ) +

  labs(
    title = "Weighted CPI Components and Overall CPI: Last 12 Months",
    x = "Date",
    y = "Weighted Contribution to CPI (%)",
    fill = "CPI Category",
    color = ""
  ) +

  theme_minimal(base_size = 13) +
  theme(
    legend.position = "bottom",
    legend.title = element_text(size = 12),
    legend.text = element_text(size = 10),
    panel.grid.minor = element_blank(),
    plot.title = element_text(face = "bold")
  )

# Display the plot
p2

Over the past 12 months, the weighted contributions of CPI components show a clear pattern in U.S. inflation dynamics. Housing remained the dominant contributor, though its pace has slightly moderated in recent months. Transportation and Medical Care moved from subdued contributions earlier in the year to stronger positive impacts more recently, while Food and Beverages showed a steady, moderate influence throughout the period. Recreation gradually increased its contribution, whereas Apparel, Education and Communication, and Other Goods and Services remained relatively neutral. Overall, these trends provide an initial view of inflation drivers over the last year. In the following sections, we will add a layer of complexity by analyzing how these components relate to the FOMC’s 2% inflation target.


4.2. CPI Components vs FOMC Target

To assess inflation in the context of monetary policy, it is useful to compare the CPI with the FOMC’s 2% target. The next chart will display the CPI, its 2-year moving average, and the FOMC target, providing a visual benchmark to contextualize recent inflation dynamics.

# CPI All Items vs 2-Year Moving Average and FOMC Target (inline 2%)
p3 <- CPI_AllItems %>%
  filter(Date >= max(Date) %m-% months(12)) %>%
  ggplot(aes(x = Date)) +
  geom_line(aes(y = All_Items, color = "CPI YoY (%)"), linewidth = 1) +
  geom_line(aes(y = MA_2Y, color = "2-Year Moving Average"), 
            linewidth = 1, linetype = "dashed") +
  geom_hline(aes(yintercept = 2, color = "FOMC Target 2%"),
                 linetype = "dotdash", linewidth = 1) +
  scale_color_manual(values = c(
    "CPI YoY (%)" = "#F8766D",
    "2-Year Moving Average" = "#00BFC4",
    "FOMC Target 2%" = "darkgreen"
  )) +
  labs(
    title = "CPI All Items: Last 12 Months vs 2-Year Trend and FOMC Target",
    x = "Date",
    y = "Year-over-Year Change (%)",
    color = ""
  ) +
  theme_minimal(base_size = 13) +
  theme(legend.position = "bottom") +
  expand_limits(y = 0)

# Plot the chart
p3

It is evident from the chart that both the current inflation rate and the 2-year moving average remain above the FOMC’s 2% target. Although inflation has shown signs of slowing over the past year, current levels still indicate persistent inflationary pressure in the U.S. economy. The fact that the current rate exceeds both the moving average and the target suggests that inflationary pressures may continue.

Part of the observed inflation dynamics could be driven by seasonal effects. Prices of certain goods and services often fluctuate throughout the year due to predictable seasonal patterns, which can temporarily amplify or dampen inflation readings. A more detailed analysis of seasonality could therefore provide valuable insights into the underlying drivers of current inflation trends and help distinguish persistent pressures from transitory, seasonal effects.

# Seasonality of CPI All Items
p4 <- CPI_data_YoY_Rates %>%
  mutate(Month = lubridate::month(Date, label = TRUE)) %>%  # Extract month as factor
  group_by(Month) %>%
  summarise(Avg_CPI = mean(All_Items, na.rm = TRUE)) %>%     # Average CPI for each month
  ggplot(aes(x = Month, y = Avg_CPI, group = 1)) +
  geom_line(color = "#F8766D", linewidth = 1.2) +
  geom_point(color = "#F8766D", size = 2) +
  labs(
    title = "Seasonality of CPI All Items",
    x = "Month",
    y = "Average Year-over-Year CPI (%)"
  ) +
  theme_minimal(base_size = 13) +
  theme(
    panel.grid.minor = element_blank(),
    plot.title = element_text(face = "bold")
  )

# Plot the chart
p4

The chart indicates that U.S. inflation typically exhibits seasonal variation throughout the year, with upward pressures occurring in two distinct periods: November–January and June–August. Conversely, February–May and September–October usually show periods of reduction. However, the pattern observed in the current year deviates from the typical calendar effect, suggesting that this year is atypical in terms of inflationary adjustment.


4.3. Constructing a CPI Aligned with the FOMC Target

To assess how individual CPI components align with the Federal Reserve’s inflation target, a synthetic dataset is constructed. This dataset assigns each category a contribution proportional to its weight, scaled to reflect a 2% overall inflation rate. Such an approach allows a direct comparison between the target inflation and the current weighted components, facilitating subsequent analysis of deviations and potential inflationary pressures.

CPI_FOMC_data <- tibble(
  Date = max(CPI_data_YoY_Rates$Date)  # reference date
) %>%
  mutate(
    !!!set_names(
      2 * (weights[-1] / sum(weights[-1])),  # weighted contribution for 2% total
      names(weights)[-1]  # column names same as CPI_data_YoY_Rates, except All_Items
    ),
    All_Items = rowSums(across(all_of(names(weights)[-1])))  # sum components to get total CPI
  ) %>%
  select(names(CPI_data_YoY_Rates))  # ensure same column order as original dataset

The resulting dataset provides a benchmark for evaluating the extent to which each component contributes to overall inflation relative to the FOMC target. In the following sections, this information will be used to visualize weighted components alongside actual inflation data, highlighting areas where deviations from the target are most pronounced.


4.4 . CPI Components vs FOMC Target Table

To analyze how individual CPI components contribute to overall inflation relative to the FOMC’s 2% target, a table is presented instead of a chart. This format allows for a clear comparison of the weighted contribution of each category across multiple reference dates, highlighting which components are driving deviations from the target and providing a more precise understanding of the inflation structure than a line graph would.

CPI_data_YoY_Rates %>%
  filter(Date %in% c(
    max(Date),
    max(Date) %m-% months(1),
    max(Date) %m-% months(3),
    max(Date) %m-% years(1)
  )) %>%
  pivot_longer(-Date, names_to = "Category", values_to = "YoY") %>%
  filter(Category != "All_Items") %>%  # remove All_Items
  pivot_wider(names_from = Date, values_from = YoY) %>%
  rename_with(~ case_when(
    .x == as.character(max(CPI_data_YoY_Rates$Date)) ~ "Most Recent",
    .x == as.character(max(CPI_data_YoY_Rates$Date) %m-% months(1)) ~ "1 Month Ago",
    .x == as.character(max(CPI_data_YoY_Rates$Date) %m-% months(3)) ~ "3 Months Ago",
    .x == as.character(max(CPI_data_YoY_Rates$Date) %m-% years(1)) ~ "1 Year Ago",
    TRUE ~ .x
  )) %>%
  rowwise() %>%
  mutate(
    `Most Recent` = `Most Recent` * (weights[Category]/100),
    `1 Month Ago` = `1 Month Ago` * (weights[Category]/100),
    `3 Months Ago` = `3 Months Ago` * (weights[Category]/100),
    `1 Year Ago` = `1 Year Ago` * (weights[Category]/100),
    `FOMC Target (%)` = 2 * (weights[Category]/100)
  ) %>%
  ungroup() %>%
  select(Category, `Most Recent`, `1 Month Ago`, `3 Months Ago`,
                    `1 Year Ago`, `FOMC Target (%)`) %>%
  knitr::kable(digits = 3)
Category Most Recent 1 Month Ago 3 Months Ago 1 Year Ago FOMC Target (%)
Food_and_Beverages 0.453 0.464 0.434 0.331 0.291
Housing 1.706 1.760 1.795 1.808 0.884
Apparel 0.000 0.006 -0.012 0.044 0.050
Transportation 0.294 0.176 -0.013 -0.186 0.331
Medical_Care 0.272 0.285 0.229 0.269 0.165
Recreation 0.162 0.122 0.109 0.038 0.106
Education_and_Communication 0.021 0.020 0.028 0.050 0.115
Other_Goods_and_Services 0.121 0.113 0.109 0.104 0.058

The table above is constructed to highlight the weighted contribution of each CPI component to overall inflation, rather than the nominal rate of each category. Using this approach, the contribution of each component is compared to the optimal contribution implied by the FOMC’s 2% target, allowing a clear assessment of deviations over the past year.

The results indicate that Housing remains the primary driver of inflation, with a most recent weighted contribution of 1.706%, well above its target contribution of 0.884%. This pattern persists across all reference points (1 month, 3 months, and 1 year ago), reflecting sustained pressure from housing prices on total inflation.

Food and Beverages also contributes above its optimal level throughout the year, with a most recent weighted contribution of 0.453% versus the target of 0.291%, showing a consistent upward effect on inflation.

Transportation exhibits more variability, ranging from a negative contribution of -0.186% one year ago to a positive 0.294% in the most recent period, indicating that past price declines partially offset inflation, while recent increases add upward pressure.

Medical Care shows moderate positive contributions relative to its target (0.272% recently vs. 0.165% target), supporting overall inflation but with less impact than Housing or Food.

Other categories, with contributions close to zero, are less relevant to aggregate inflation and can be considered negligible in this context. Overall, the table provides a clear and quantitative view of which components are driving inflation above the FOMC target and by how much, allowing focused monitoring of the most influential price pressures.


Conclusion

The analysis indicates that, although there have been signs of a moderation in US inflation, uncertainties regarding its future trajectory remain. A comparison of CPI components with the FOMC target shows that categories such as Housing and Food continue to exert significant pressure on overall inflation, consistently exceeding their target contributions. These dynamics suggest that, despite some progress in containing inflation, structural challenges persist that may require ongoing attention from policymakers. Careful monitoring of these components will be crucial to assess the effectiveness of monetary policy measures and ensure long-term price stability.

Furthermore, in accordance with seasonal patterns, the full effects of inflation for the period will only become evident starting in January. The ongoing US government shutdown adds additional pressure, as it limits the availability of more recent data for analysis.