Housing

House Price Index

HPM09 <- cso_get_data("HPM09")
HPM09_long <- HPM09 %>%
  pivot_longer(!1:2, names_to = "year_month")
rm(HPM09)
HPM09 <- HPM09_long
rm(HPM09_long)

HPM09$Month <- as.Date(paste(HPM09$year_month, "01", sep = "-"), "%YM%m-%d")
HPM09$Year <- year(HPM09$Month)
HPM04 <- cso_get_data("HPM04")
HPM04_long <- HPM04 %>%
  pivot_longer(!1:5, names_to = "year_month")
rm(HPM04)
HPM04 <- HPM04_long
rm(HPM04_long)
### Date transformation
HPM04$Year <-substr(HPM04$year_month,1,4)
HPM04$Month <- sub(".* ", "", HPM04$year_month)
HPM04$Month_NR <- as.integer(factor(HPM04$Month, levels=month.name))
HPM04$Date <- as.yearmon(paste(HPM04$Year, HPM04$Month_NR), "%Y %m")
HPM04_join <- full_join(HPM04, GEO_Merge, by = "Eircode.Output")
HPM04 <- HPM04_join
rm(HPM04_join)
HPM09$month <- months(as.Date(HPM09$Month))

HPM09_1 <- HPM09 %>%
  filter(Statistic == "Residential Property Price Index")%>%
  filter(Type.of.Residential.Property == "National - all residential properties")

HPM09_2 <- HPM09 %>%
  filter(Statistic == "Percentage Change over 12 months for Residential Property Price Index")%>%
  filter(Type.of.Residential.Property == "National - all residential properties")

RPPI_tail_2 <- tail(HPM09_2,1)
RPPI_tail_2_lag <-head(tail(HPM09_2,2),1)
RRPI_Line_1 <- ggplot(data=HPM09_1, aes(x=Month, y=value, group = Type.of.Residential.Property))+
  geom_line(linejoin="mitre",size = 1.25, linetype = 1,alpha = 0.5, colour="#1b5545")+
  labs(title = "Residential Property Price Index" ,
       y="2015 = 100",
       x="Month")+
  geom_text_repel(aes(label=value),data = HPM09_1, size = 3)+
  theme(legend.position = "bottom")

RRPI_Line_1

HPM09_1_T12 <- tail(HPM09_1,12)
RRPI_Line_2 <- ggplot(data=HPM09_1_T12, aes(x=Month, y=value, group = Type.of.Residential.Property))+
  geom_line(linejoin="mitre",size = 1.25, linetype = 1,alpha = 0.5, colour="#1b5545")+
  labs(title = "Residential Property Price Index" ,
       subtitle = "12 Month Series",
       y="2015 = 100",
       x="Month")+
  geom_text(aes(label=value),vjust= 1.5, hjust = 0, size=3)+
  theme(legend.position = "bottom")

RRPI_Line_2

HPM09_2_T24 <- tail(HPM09_2,24)
colour <- ifelse(HPM09_2_T24$value < 0,"#CC0000","#1b5545")
RPPI_Bar_2 <- ggplot(data=HPM09_2_T24, aes(x=Month, y=value, group = Type.of.Residential.Property))+
  geom_col(alpha = 0.5, colour="#373634", fill = colour)+
  labs(title = "Year on Year Percentage Change for Residential Property Price Index" ,
       subtitle = "24 Month Series",
       y="Percentage change",
       x="Month")+
  geom_text(aes(label=value),vjust= 1.5, size=3)+
  theme(legend.position = "bottom")

rm(HPM09)

The national house price inflation for June is 14.1%. This represents a -0.3 change from May which was 14.4%.

HPM04_1A <- HPM04 %>%
  filter(Statistic == "Mean Sale Price")%>%
  filter(Dwelling.Status == "All Dwelling Statuses") %>%
  filter(Stamp.Duty.Event == "Executions") %>%
  filter(Type.of.Buyer == "All Buyer Types") %>%
  filter(Eircode.Output == "All")

HPM04_1B <- HPM04 %>%
  filter(Statistic == "Mean Sale Price")%>%
  filter(Dwelling.Status == "All Dwelling Statuses") %>%
  filter(Stamp.Duty.Event == "Executions") %>%
  filter(Type.of.Buyer == "All Buyer Types") %>%
  filter(Eircode.Output != "All")

HPM04_1B_Map <- na.omit(HPM04_1B)
HPM04_1B_Map<- HPM04_1B_Map %>%
  group_by(Seat_Tag, Date)%>% # change to/from County / Constituency
  summarise(Average_Value = mean(value))

HPM04_1B_Map$lagvalue_12mth <- Lag(HPM04_1B_Map$Average_Value,12)
HPM04_1B_Map$Diff <- HPM04_1B_Map$Average_Value - HPM04_1B_Map$lagvalue_12mth
HPM04_1B_Map$Diffpc <- HPM04_1B_Map$Diff / HPM04_1B_Map$lagvalue_12mth
HPM04_1B_Map$Diffpc<-percent(HPM04_1B_Map$Diffpc,2)


HPM04_1B_Map_June2022 <- HPM04_1B_Map%>%
  filter(Date == "June 2022") # change month

shpHPM <- merge(shp,HPM04_1B_Map_June2022, by.x = "CON_SEAT_", by.y="Seat_Tag")
HPM04_1B_Map_June2022_Dub <- HPM04_1B_Map_June2022 %>% 
  filter(grepl('Dublin|Laoghaire', Seat_Tag))

shpHPMDub <- merge(shp,HPM04_1B_Map_June2022_Dub, by.x = "CON_SEAT_", by.y="Seat_Tag")

Map2_DiffpcAll <-  shpHPM %>%
  ggplot()+
  geom_sf(aes(fill = Diffpc))+
 scale_fill_stepsn(n.breaks = 10,
    colors=c("#F92306","#FFFFFF","#0C4F00"),
    limits = c(-1,1),
    name = "% change")+
    ggtitle('Year on Year Change by Constituency - HPM04')+
  theme_void()+
  theme(legend.title = element_text(size = 10),
        legend.text = element_text(size = 8))+
    theme(legend.position = "left")+
  theme(plot.title = element_text(hjust = 1))

Map2_DiffpcDub <- shpHPMDub %>%
  ggplot()+
  geom_sf(aes(fill = Diffpc))+
 scale_fill_stepsn(n.breaks = 10,
    colors=c("#F92306","#FFFFFF","#0C4F00"),
    limits = c(-1,1),
    name = "% change")+
    theme_void()+
  theme(legend.position = "none")


Map2_Diffpc <- Map2_DiffpcAll + Map2_DiffpcDub +
  plot_layout(widths = c(2,1))

Map2_Diffpc

Average percentage change year on year is 8.38%. This was 2.24% in the Dublin constituencies.

These averages the mean value of the below:

HPM04_1B_Map_June2022%>%
  kbl(caption = "Year on Year ")%>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = T)%>%
  scroll_box(width = "600px", height = "300px") 
Year on Year
Seat_Tag Date Average_Value lagvalue_12mth Diff Diffpc
Carlow-Kilkenny (5) Jun 2022 290148.0 230619.7 59528.333 25.81%
Cavan-Monaghan (5) Jun 2022 156998.9 184512.3 -27513.476 -14.91%
Clare (4) Jun 2022 208611.7 183509.7 25102.000 13.68%
Cork East (4) Jun 2022 288422.0 216923.7 71498.286 32.96%
Cork North-Central (4) Jun 2022 349381.0 333970.7 15410.333 4.61%
Cork North-West (3) Jun 2022 262542.7 256189.8 6352.867 2.48%
Cork South-Central (4) Jun 2022 356091.0 363660.0 -7569.000 -2.08%
Cork South-West (3) Jun 2022 304938.3 304216.3 722.000 0.24%
Donegal (5) Jun 2022 186309.7 152709.3 33600.333 22.00%
Dublin Bay North (5) Jun 2022 527835.0 508511.0 19324.000 3.80%
Dublin Bay South (4) Jun 2022 880223.0 690948.3 189274.667 27.39%
Dublin Central (4) Jun 2022 325367.0 358731.0 -33364.000 -9.30%
Dublin Fingal (5) Jun 2022 414737.0 414875.2 -138.200 -0.03%
Dublin Mid-West (4) Jun 2022 360225.5 356383.5 3842.000 1.08%
Dublin North-West (3) Jun 2022 493080.0 448469.0 44611.000 9.95%
Dublin Rathdown (3) Jun 2022 607667.0 598791.0 8876.000 1.48%
Dublin South-West (5) Jun 2022 551231.3 518392.7 32838.667 6.33%
Dublin South Central (4) Jun 2022 416659.2 413275.2 3384.000 0.82%
Dublin West (4) Jun 2022 394520.5 404034.0 -9513.500 -2.35%
Dun Laoghaire (4) Jun 2022 762657.0 892525.5 -129868.500 -14.55%
Galway East (3) Jun 2022 237002.3 218774.3 18228.000 8.33%
Galway West (5) Jun 2022 257253.0 270855.5 -13602.500 -5.02%
Kerry (5) Jun 2022 250008.2 200931.0 49077.250 24.42%
Kildare North (4) Jun 2022 423639.5 397063.0 26576.500 6.69%
Kildare South (4) Jun 2022 319098.4 290461.4 28637.000 9.86%
Laois-Offaly (5) Jun 2022 232208.0 178397.0 53811.000 30.16%
Limerick City (4) Jun 2022 261204.0 254983.0 6221.000 2.44%
Limerick County (3) Jun 2022 198018.0 175311.0 22707.000 12.95%
Longford-Westmeath (4) Jun 2022 220917.3 193130.0 27787.333 14.39%
Louth (5) Jun 2022 278667.0 278551.0 116.000 0.04%
Mayo (4) Jun 2022 199769.3 163979.8 35789.500 21.83%
Meath East (3) Jun 2022 331878.4 333675.0 -1796.600 -0.54%
Meath West (3) Jun 2022 314856.0 299195.0 15661.000 5.23%
Roscommon-Galway (3) Jun 2022 152232.7 138395.7 13837.000 10.00%
Sligo-Leitrim (4) Jun 2022 192613.5 153848.2 38765.250 25.20%
Tipperary (5) Jun 2022 202336.5 167959.6 34376.875 20.47%
Waterford (4) Jun 2022 230525.7 198129.7 32396.000 16.35%
Wexford (5) Jun 2022 257212.8 222413.2 34799.500 15.65%
Wicklow (5) Jun 2022 409492.5 414499.2 -5006.750 -1.21%

CPI

Headline & Summary

#Load
CPM01 <- cso_get_data("CPM01") # Selected Sub Indices
CPM03 <- cso_get_data("CPM03") # Selected Sub Indices
CPM11 <- cso_get_data("CPM11") # Contributions to changes in the Consumer Price Index
CPM15 <- cso_get_data("CPM15") # Harmonised Index of Consumer Prices

#Long
CPM01_long <- CPM01 %>%
  pivot_longer(!1:2, names_to = "year_month")
CPM01<- CPM01_long
rm(CPM01_long)
CPM01$Year <-substr(CPM01$year_month,1,4)
CPM01$Month <- sub(".* ", "", CPM01$year_month)
CPM01$Month_NR <- as.integer(factor(CPM01$Month, levels=month.name))
CPM01$Date <- as.yearmon(paste(CPM01$Year, CPM01$Month_NR), "%Y %m")

CPM03_long <- CPM03 %>%
  pivot_longer(!1:2, names_to = "year_month")
CPM03<- CPM03_long
rm(CPM03_long)
CPM03$Year <-substr(CPM03$year_month,1,4)
CPM03$Month <- sub(".* ", "", CPM03$year_month)
CPM03$Month_NR <- as.integer(factor(CPM03$Month, levels=month.name))
CPM03$Date <- as.yearmon(paste(CPM03$Year, CPM03$Month_NR), "%Y %m")

CPM11_long <- CPM11 %>%
  pivot_longer(!1:2, names_to = "year_month")
CPM11<- CPM11_long
rm(CPM11_long)
CPM11$Year <-substr(CPM11$year_month,1,4)
CPM11$Month <- sub(".* ", "", CPM11$year_month)
CPM11$Month_NR <- as.integer(factor(CPM11$Month, levels=month.name))
CPM11$Date <- as.yearmon(paste(CPM11$Year, CPM11$Month_NR), "%Y %m")

CPM15_long <- CPM15 %>%
  pivot_longer(!1:2, names_to = "year_month")
CPM15<- CPM15_long
rm(CPM15_long)
CPM15$Year <-substr(CPM15$year_month,1,4)
CPM15$Month <- sub(".* ", "", CPM15$year_month)
CPM15$Month_NR <- as.integer(factor(CPM15$Month, levels=month.name))
CPM15$Date <- as.yearmon(paste(CPM15$Year, CPM15$Month_NR), "%Y %m")

# Translate/Merge Files
COICOP<- read_excel("/Users/charten/OneDrive - Glenveagh Properties/Research & Development/1. Analysis/COICOP.xlsx")
COICOPDIV <- COICOP %>%
  filter(`Level 1` == "1")
COICOP <- COICOPDIV
rm(COICOPDIV)
# Subset for Analysis
## CPM01_1 = All Items, Percentage Change over 12 months for Consumer Price Index (%)
CPM01_1 <- CPM01%>%
  filter(Statistic == "Percentage Change over 12 months for Consumer Price Index (%)")%>%
  filter(Commodity.Group == "All items")
## CPM01_1A = All Items, Percentage Change over 12 months for Consumer Price Index (%)
CPM01_1A <- CPM01%>%
  filter(Statistic == "Percentage Change over 12 months for Consumer Price Index (%)")%>%
  filter(Commodity.Group == "All items")%>%
  filter(Year >= 2016)
## CPM01_1B = All Items, Consumer Price Index (Base Dec 2016=100)
CPM01_1B <- CPM01%>%
  filter(Statistic == "Percentage Change over 12 months for Consumer Price Index (%)")%>%
  filter(Commodity.Group == "All items")%>%
  filter(Year >= 2020)
## CPM01_2 = All Items, Consumer Price Index (Base Dec 2016=100)
CPM01_2 <- CPM01%>%
  filter(Statistic == "Consumer Price Index (Base Dec 2016=100)")%>%
  filter(Commodity.Group == "All items")%>%
  filter(Year >= 1997)
## CPM01_2A = All Items, Consumer Price Index (Base Dec 2016=100)
CPM01_2A <- CPM01%>%
  filter(Statistic == "Consumer Price Index (Base Dec 2016=100)")%>%
  filter(Commodity.Group == "All items")%>%
  filter(Year >= 2020)


## CPM03_1 = Percentage Change over 12 months for Consumer Price Index (%)
CPM03_1 <- CPM03%>%
  filter(Statistic == "Percentage Change over 12 months for Consumer Price Index (%)")%>%
  filter(Selected.Sub.Indices == "Energy Products" |Selected.Sub.Indices == "CPI excluding Energy Products" |Selected.Sub.Indices == "Mortgage Interest")
## CPM03_2 = Consumer Price Index (Base Dec 2016=100) >= 2016
CPM03_2 <- CPM03%>%
  filter(Statistic == "Percentage Change over 12 months for Consumer Price Index (%)")%>%
  filter(Selected.Sub.Indices == "Energy Products" |Selected.Sub.Indices == "CPI excluding Energy Products" |Selected.Sub.Indices == "Mortgage Interest")%>%
    filter(Year >= 2016)
CPM01_tail_2 <- tail(CPM01_1,1)
CPM01_tail_2_lag <-head(tail(CPM01_1,2),1)

The headline inflation for July is 9.1%. This represents a 0 percentage change from June which was 9.1%.

CPM01_trim <- subset(CPM01_1, select = -c(Statistic, year_month, Month, Year, Month_NR))
CPM01_tail1 <- kable(tail(CPM01_trim), caption = "Percentage Change over 12 months")
CPM01_tail1 %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = F) %>%
  row_spec(6, bold = T)%>%
  pack_rows("Latest Period", 6, 6, color="#1b5545")
Percentage Change over 12 months
Commodity.Group value Date
All items 5.6 Feb 2022
All items 6.7 Mar 2022
All items 7.0 Apr 2022
All items 7.8 May 2022
All items 9.1 Jun 2022
Latest Period
All items 9.1 Jul 2022
rm(CPM01_trim)
colour_set <- ifelse(CPM01_1B$value < 0,"#CC0000","#007589")
FigCPM01_1B <- ggplot(data=CPM01_1B,aes(x=Date,y=value))+
  geom_col(fill= colour_set, alpha = 0.5)+
  labs(title = "CPI - CSO: CPM01", subtitle = "2020 to Date")+
  xlab("Year-Month")+
  ylab("Percentage Change over 12 months")+
  theme(panel.border = element_rect(linetype = 1, fill = NA))+
  geom_text(data=CPM01_1B,aes(label = value, 
            vjust= ifelse(value >=0,0.25,0.5),
            hjust= ifelse(value >=0,-0.25,1)),
            size = 2, 
            angle = 90)
FigCPM01_1B

FigCPM01_2A<- ggplot(data=CPM01_2A,aes(x=Date,y=value))+
  geom_line(size = 1.15, linetype=1, alpha = 0.6, colour = "#946627")+
  geom_hline(aes(yintercept=100), 
             colour= "#404040",
             linetype = 1)+
   labs(title = "CPI - CSO: CPM01", subtitle = "1997 to Date")+
  xlab("Year-Month")+
  ylab("Consumer Price Index (Base Dec 2016=100)")+
  theme(panel.border = element_rect(linetype = 1, fill = NA))


FigCPM01_2A

Analysis / Trend

FigCPM01_2 <- ggplot(data=CPM01_2,aes(x=Date,y=value))+
  geom_line(size = 1.15, linetype=1, alpha = 0.6, colour = "#946627")+
  geom_hline(aes(yintercept=100), 
             colour= "#404040",
             linetype = 1)+
  labs(title = "CPI - CSO: CPM01", subtitle = "2016 to Date")+
  xlab("Year-Month")+
  ylab("Consumer Price Index (Base Dec 2016=100)")+
  theme(panel.border = element_rect(linetype = 1, fill = NA))
FigCPM01_2

FigCPM03_2 <- ggplot(data=CPM03_2, aes(x=Date, y=value, group=Selected.Sub.Indices, colour=Selected.Sub.Indices))+
  scale_colour_manual(values=c("#0389bb", "#0c122f", "#88b66c"))+
  labs(title = "CPI - CSO: CPM03", subtitle = "2016 to Date, selected sub indicies")+
  xlab("Year-Month")+
  ylab("Consumer Price Index (Base Dec 2016=100)")+
  geom_line(size = 1.05, linetype=1, alpha = 0.85)+
  geom_hline(aes(yintercept=0), 
             colour= "#404040",
             linetype = 1)+
  theme(axis.text.x = element_text(angle=0))+
  theme(legend.position="bottom")+
  theme(axis.text = element_text(size = rel(1)))+
  theme(plot.title=(element_text(vjust =2)))+
  theme(panel.border = element_rect(linetype = 1, fill = NA))

FigCPM03_2

FigCPM03_1 <- ggplot(data=CPM03_1, aes(x=Date, y=value, group=Selected.Sub.Indices, colour=Selected.Sub.Indices))+
  scale_colour_manual(values=c("#0389bb", "#0c122f", "#88b66c"))+
  labs(title = "CPI - CSO: CPM03", subtitle = "Historical Series, selected sub indicies")+
  xlab("Year-Month")+
  ylab("Percentage change year on year")+
  geom_line(size = 1.05, linetype=1, alpha = 0.85)+
  geom_hline(aes(yintercept=0), 
             colour= "#404040",
             linetype = 1)+
  theme(axis.text.x = element_text(angle=0))+
  theme(legend.position="bottom")+
  theme(axis.text = element_text(size = rel(1)))+
  theme(plot.title=(element_text(vjust =2)))+
  theme(panel.border = element_rect(linetype = 1, fill = NA))

FigCPM03_1

ECB Statistics

Cost of Borrowing

Data as of 2022-06-01, the ECB rate hike was on the 12th July. That considered the move to June was significant in the Euro Area.

Household Cost of Borrowing

Fig.COB.H1 <- ggplot(data=COB.H,aes(x=obstime, y=obsvalue,group=ref_area))+
  geom_line(aes(colour=ref_area))+
  scale_color_manual(values=c("darkgreen", "blue"))+
  geom_text_repel(aes(label=obsvalue),data = COB.H, size = 3)+
  theme_bw()+
  theme(legend.position = "bottom")+
  ggtitle("Household Cost of Borrowing")+
  labs(subtitle = "Monetary Financial Institutions (MFIs) - Interest Rates",
       caption = "Data Source: ECB - U2: Euro Area")+
  ylab("interest rate %")+
  xlab(NULL)

Fig.COB.H2 <- ggplot(data=COB.H,aes(x=obstime, y=Diff,group=ref_area))+
  geom_col(aes(fill=ref_area),alpha=0.5)+
  scale_fill_manual(values=c("darkgreen", "blue"))+
  geom_hline(yintercept = 0, linetype='dotted')+
  geom_text_repel(aes(label=round(Diff,digits=2)),data = COB.H, size = 3)+
  theme_bw()+
  theme(legend.position = "bottom")+
  ylab("monthly change percentage points")+
  xlab(NULL)

Facet1<- Fig.COB.H2+ facet_wrap(~ref_area, nrow = 2)

Fig.COB.H1 + Facet1 + plot_layout(ncol=2,widths = c(2,1))

The standard deviation of the Irish households series is 0.12 percentage points. Where as the standard deviation of the Euro Area households is 0.07 percentage points

Corporation Cost of Borrowing

Fig.COB.C1 <- ggplot(data=COB.C,aes(x=obstime, y=obsvalue,group=ref_area))+
  geom_line(aes(colour=ref_area))+
  scale_color_manual(values=c("darkgreen", "blue"))+
  geom_text_repel(aes(label=obsvalue),data = COB.C, size = 3)+
  theme_bw()+
  theme(legend.position = "bottom")+
  ggtitle("Corporation Cost of Borrowing")+
  labs(subtitle = "Monetary Financial Institutions (MFIs) - Interest Rates",
       caption = "Data Source: ECB - U2: Euro Area")+
  ylab("interest rate %")+
  xlab(NULL)

Fig.COB.C2 <- ggplot(data=COB.C,aes(x=obstime, y=Diff,group=ref_area))+
  geom_col(aes(fill=ref_area),alpha=0.5)+
  scale_fill_manual(values=c("darkgreen", "blue"))+
  geom_hline(yintercept = 0, linetype='dotted')+
  geom_text_repel(aes(label=round(Diff,digits=2)),data = COB.C, size = 3)+
  theme_bw()+
  theme(legend.position = "bottom")+
  ylab("monthly change percentage points")+
  xlab(NULL)

Facet2<- Fig.COB.C2+ facet_wrap(~ref_area, nrow = 2)

Fig.COB.C1 + Facet2 + plot_layout(ncol=2,widths = c(2,1))