Trade in Europe stalling with drought as the Rhine drops below 40cm level required for large ships, heading for 30cm.
In the short run reducing dependence of Russian energy for Germany will require increased consumption of coal. With the Rhine at impassable levels this will disrupt supply. Uniper, who were recently bailed out by the German government to the tune of 15 billion euro, warned that there would be limited output from the a large coal power station near Frankfurt due to the low water levels. According to the FT inland waterways account for 6% of overall German transport volumes, but 30% of coal, oil and gas. Scheisse.
Bank of England forecast gloomy outlook for the UK to accompany largest rate hike in 27 years.
The BOE hiked interest rates by 50 basis points on the 4th of August, but it was not the large hike that generate the shock but the gloomy forecast. Inflation is forecasted to peak at 13% by Q4 and GDP to decline over 2%, with the UK heading for a recession which will last over a year. Read the Monetary Policy Summary, August 2022 for more details.
Trump raided by the FBI casts doubts over re-election bid.
There is a portion of Trumps base that he can never alienate, that was seen of late by Liz Cheney who looks set to be defeated in the primary contest for her seat un the US House. - She is also a vocal Republican critic of Trump since the US Capitol attack and the daughter of a former vice-president. If his supporters won’t leave him they may have to do without him, as he has allegedly committed serious offences. A poll from Politico shows that most think he should be convicted and barred from running again, including 23% of Republicans. So who knows?
Erdogan and Putin agree to “increase co-operation”, leaving NATO on high alert.
Turkey, a NATO member is facing high inflation with Erdogans reluctance to raise interest rates. Increasingly a liability, it was recently reported in the FT, citing Interfax, that Russian officials claim Turkey has agreed to pay for gas in roubles. Turkish exports to Russia grew 45% over the last 3 months, vs the same period last year. Erdogan is also set to meet Zelenskyy in what will be his first trip there since the war began.
Saudi Aramco post record profits, for any listed company ever.
Its plan to reinvest the profits, part of which is to boost capacity of 12 million barrels per day to 13 million. This is two weeks after OPEC disappoint with decision to boost production by 100,000 barrels per day. The group also plans to increase natural gas by 50% by 2030, and invest in renewable energy sources.
Tax Bands look set to be widened over introducing Leos 30% rate.
Budget 2023 looks set to include a widening of the tax bands. The cut off rate is currently at €36,800 moving from 20% to 40% income tax. As opposed to adding an additional band at 30% the government looks set to widen the bands to help with the inflation pressures. Some politicking likely at play here, with the Greens apparently opposed to the 30% rate but in favour of widening, so Varadkar may be using it as a dummy concession.
Bear Market rally continues
I still can’t see how this rally is not markets getting excited. Inflation “peaking” is a narrative in the US at present, the July CPI came in lower than expected at 8.5% on the year, still well above the 2% target. I gather that markets rallied on the assumption that this means the FED will ease rate hikes sooner, but materially inflation is still the issue. - So further downside seems most probable.
# Ensure to change CSV name to apprpriate version number / working directory
SNP <- getSymbols("^GSPC",src='yahoo',auto.assign=FALSE)
ISEQ <- getSymbols("^ISEQ",src='yahoo',auto.assign=FALSE)
write.csv(SNP,"SNP.N1.csv")
write.csv(ISEQ,"ISEQ.N1.csv")
SNP_Aug22 <- SNP %>%
subset(date(index(.))>= "2022-08-01")
ISEQ_Aug22 <- ISEQ %>%
subset(date(index(.))>= "2022-08-01")
SNP_YTD <- SNP %>%
subset(date(index(.))>= "2022-01-01")
ISEQ_YTD <- ISEQ %>%
subset(date(index(.))>= "2022-01-01")
ggplot(data=SNP_YTD,aes(x=Index,y=GSPC.Close,group=1))+
geom_line(colour="#D49CFE")+
geom_text_repel(aes(label=round(GSPC.Close,digits=2)),data = SNP_YTD, size = 3,max.overlaps = 3,colour="#f6f7f6")+
theme_dark()+
ggtitle("S&P YTD")+
xlab("Dates")
ggplot(data=ISEQ_YTD,aes(x=Index,y=ISEQ.Close,group=1))+
geom_line(colour="#A5FE9C")+
geom_text_repel(aes(label=round(ISEQ.Close,digits=2)),data = ISEQ_YTD, size = 3,max.overlaps = 2,colour="#f6f7f6")+
theme_dark()+
ggtitle("ISEQ YTD")+
xlab("Dates")
ggplot(data=SNP_Aug22,aes(x=Index,y=GSPC.Close,group=1))+
geom_line(colour="#D49CFE")+
geom_text_repel(aes(label=round(GSPC.Close,digits=2)),data = SNP_Aug22, size = 3,max.overlaps = 3,colour="#f6f7f6")+
theme_dark()+
ggtitle("S&P Aug22")+
xlab("Dates")
ggplot(data=ISEQ_Aug22,aes(x=Index,y=ISEQ.Close,group=1))+
geom_line(colour="#A5FE9C")+
geom_text_repel(aes(label=round(ISEQ.Close,digits=2)),data = ISEQ_Aug22, size = 3,max.overlaps = 2,colour="#f6f7f6")+
theme_dark()+
ggtitle("ISEQ Aug22")+
xlab("Dates")
BRENT <- getSymbols("BZ=F",src='yahoo',auto.assign=FALSE)
WTI <- getSymbols("CL=F",src='yahoo',auto.assign=FALSE)
NGAS <- getSymbols("NG=F",src='yahoo',auto.assign=FALSE)
write.csv(BRENT,"BRENT.N1.csv")
write.csv(WTI,"WTI.N1.csv")
write.csv(NGAS,"NGAS.N1.csv")
BRENT_AVG <- mean(BRENT$`BZ=F.Close`,na.rm=TRUE)
BRENT_TAIL <- tail(BRENT,1)
BRENT_CLOSE <- mean(BRENT_TAIL$`BZ=F.Close`,na.rm=TRUE)
WTI_AVG <- mean(WTI$`CL=F.Close`,na.rm=TRUE)
WTI_TAIL <- tail(WTI,1)
WTI_CLOSE <- mean(WTI_TAIL$`CL=F.Close`,na.rm=TRUE)
NGAS_AVG <- mean(NGAS$`NG=F.Close`,na.rm=TRUE)
NGAS_TAIL <- tail(NGAS,1)
NGAS_CLOSE <- mean(NGAS_TAIL$`NG=F.Close`,na.rm=TRUE)
#Oil Plots
Fig.Brent1<-ggplot(data=BRENT,aes(x=Index,y=`BZ=F.Close`,group=1))+
geom_line()+
geom_hline(yintercept=BRENT_CLOSE,alpha=0.5)+
geom_hline(yintercept=BRENT_AVG,linetype='dashed')+
theme_bw()+
ggtitle("Brent Crude Price (BZ=F)")+
ylab("Price - USD")+
xlab("Dates")
Fig.WTI1<-ggplot(data=WTI,aes(x=Index,y=`CL=F.Close`,group=1))+
geom_line(colour="darkgrey")+
geom_hline(yintercept=WTI_CLOSE,colour="darkgrey",alpha=0.8)+
geom_hline(yintercept=WTI_AVG,linetype='dashed',colour="darkgrey")+
theme_bw()+
ggtitle("West Texas Intermediary (WTI) Price (CL=F)")+
ylab("Price - USD")+
xlab("Dates")
#Gas Plots
Fig.NGAS1<-ggplot(data=NGAS,aes(x=Index,y=`NG=F.Close`,group=1))+
geom_line(colour="darkblue")+
geom_hline(yintercept=NGAS_CLOSE,colour="darkblue",alpha=0.5)+
geom_hline(yintercept=NGAS_AVG,linetype='dashed',colour="darkblue")+
theme_bw()+
ggtitle("Natural Gas Price (NG=F)")+
ylab("Price - USD")+
xlab("Dates")+
labs(caption = "dashed line = average, solid line = closing price")
# Total Series for Energy
Fig.Brent1 + Fig.WTI1 + Fig.NGAS1 +
plot_layout(nrow=3)
Oil shows a decline on the month to date, with Gas increasing towards highs seen at the start of the war. With the situation in Russia motivating Russia to cut off supplies via Nord Stream 1 to Germany the energy prices look set to soar in the back end of the year.
BRENT_YTD <- BRENT %>%
subset(date(index(.))>= "2022-01-01")
WTI_YTD <- WTI %>%
subset(date(index(.))>= "2022-01-01")
NGAS_YTD <- NGAS %>%
subset(date(index(.))>= "2022-01-01")
BRENT_YTD_AVG <- mean(BRENT_YTD$`BZ=F.Close`,na.rm=TRUE)
BRENT_YTD_TAIL <- tail(BRENT_YTD,1)
BRENT_YTD_CLOSE <- mean(BRENT_YTD_TAIL$`BZ=F.Close`,na.rm=TRUE)
WTI_YTD_AVG <- mean(WTI_YTD$`CL=F.Close`,na.rm=TRUE)
WTI_YTD_TAIL <- tail(WTI_YTD,1)
WTI_YTD_CLOSE <- mean(WTI_YTD_TAIL$`CL=F.Close`,na.rm=TRUE)
NGAS_YTD_AVG <- mean(NGAS_YTD$`NG=F.Close`,na.rm=TRUE)
NGAS_YTD_TAIL <- tail(NGAS_YTD,1)
NGAS_YTD_CLOSE <- mean(NGAS_YTD_TAIL$`NG=F.Close`,na.rm=TRUE)
#Oil Plots
Fig.Brent2<-ggplot(data=BRENT_YTD,aes(x=Index,y=`BZ=F.Close`,group=1))+
geom_line()+
geom_hline(yintercept=BRENT_YTD_CLOSE,alpha=0.5)+
geom_hline(yintercept=BRENT_YTD_AVG,linetype='dashed')+
theme_bw()+
ggtitle("Brent Crude Price (BZ=F)")+
ylab("Price - USD")+
xlab("Dates")
Fig.WTI2<-ggplot(data=WTI_YTD,aes(x=Index,y=`CL=F.Close`,group=1))+
geom_line(colour="darkgrey")+
geom_hline(yintercept=WTI_YTD_CLOSE,colour="darkgrey",alpha=0.8)+
geom_hline(yintercept=WTI_YTD_AVG,linetype='dashed',colour="darkgrey")+
theme_bw()+
ggtitle("West Texas Intermediary (WTI) Price (CL=F)")+
ylab("Price - USD")+
xlab("Dates")
#Gas Plots
Fig.NGAS2<-ggplot(data=NGAS_YTD,aes(x=Index,y=`NG=F.Close`,group=1))+
geom_line(colour="darkblue")+
geom_hline(yintercept=NGAS_YTD_CLOSE,colour="darkblue",alpha=0.5)+
geom_hline(yintercept=NGAS_YTD_AVG,linetype='dashed',colour="darkblue")+
theme_bw()+
ggtitle("Natural Gas Price (NG=F)")+
ylab("Price - USD")+
xlab("Dates")+
labs(caption = "dashed line = average, solid line = closing price")
# Total Series for Energy
Fig.Brent2 + Fig.WTI2 + Fig.NGAS2 +
plot_layout(nrow=3)
rm(ISEQ)
rm(ISEQ_July22)
rm(ISEQ_YTD)
rm(SNP)
rm(SNP_July22)
rm(SNP_YTD)
This is the first time I have pulled in bond yields, I am not going to spend time analysing them. I am tipping through The Strategic Bond Investor by Anthony Crescenzi at the moment. This will likely be the source of any commentary on this going forward, or at least in part.
For now, consider the trend seen on the tiles below when looking at the cost of borrowing in the next section.
# Euro Area
EA.1YR <- get_data("YC.B.U2.EUR.4F.G_N_A.SV_C_YM.SR_1Y")
EA.1YR$obstime<-convert_dates(EA.1YR$obstime)
Fig_EA.1YR<-ggplot(data=EA.1YR,aes(x=obstime,y=obsvalue,group=ref_area))+
geom_line(colour="blue")+
geom_hline(yintercept = 0, linetype='dotted')+
geom_text_repel(aes(label=round(obsvalue,digits=2)),data = EA.1YR, size = 3)+
theme_bw()+
theme(legend.position = "bottom")+
ggtitle("1 Year Maturity")+
ylab("yield (%)")+
xlab(NULL)
EA.5YR <- get_data("YC.B.U2.EUR.4F.G_N_A.SV_C_YM.SR_5Y")
EA.5YR$obstime<-convert_dates(EA.5YR$obstime)
Fig_EA.5YR<-ggplot(data=EA.5YR,aes(x=obstime,y=obsvalue,group=ref_area))+
geom_line(colour="blue")+
geom_hline(yintercept = 0, linetype='dotted')+
geom_text_repel(aes(label=round(obsvalue,digits=2)),data = EA.5YR, size = 3)+
theme_bw()+
theme(legend.position = "bottom")+
ggtitle("5 Year Maturity")+
ylab("yield (%)")+
xlab(NULL)
EA.10YR <- get_data("YC.B.U2.EUR.4F.G_N_A.SV_C_YM.SR_10Y")
EA.10YR$obstime<-convert_dates(EA.10YR$obstime)
Fig_EA.10YR<-ggplot(data=EA.10YR,aes(x=obstime,y=obsvalue,group=ref_area))+
geom_line(colour="blue")+
geom_hline(yintercept = 0, linetype='dotted')+
geom_text_repel(aes(label=round(obsvalue,digits=2)),data = EA.10YR, size = 3)+
theme_bw()+
theme(legend.position = "bottom")+
ggtitle("10 Year Maturity")+
ylab("yield (%)")+
xlab(NULL)
EA.30YR <- get_data("YC.B.U2.EUR.4F.G_N_A.SV_C_YM.SR_30Y")
EA.30YR$obstime<-convert_dates(EA.30YR$obstime)
Fig_EA.30YR<-ggplot(data=EA.30YR,aes(x=obstime,y=obsvalue,group=ref_area))+
geom_line(colour="blue")+
geom_hline(yintercept = 0, linetype='dotted')+
geom_text_repel(aes(label=round(obsvalue,digits=2)),data = EA.30YR, size = 3)+
theme_bw()+
theme(legend.position = "bottom")+
ggtitle("30 Year Maturity")+
ylab("yield (%)")+
xlab(NULL)
Fig_EA.1YR+Fig_EA.5YR+Fig_EA.10YR+Fig_EA.30YR+
plot_layout(nrow=2,ncol=2)
# Generate yield curve
EA.1YR_Print<-tail(EA.1YR,1)
EA.5YR_Print<-tail(EA.5YR,1)
EA.10YR_Print<-tail(EA.10YR,1)
EA.30YR_Print<-tail(EA.30YR,1)
EA.YieldCurve <- rbind(EA.1YR_Print,EA.5YR_Print,EA.10YR_Print,EA.30YR_Print)
EA.YieldCurve$year <- sub("\\Y.*","",EA.YieldCurve$data_type_fm)
EA.YieldCurve$year <- sub(".*SR_","",EA.YieldCurve$year)
EA.YieldCurve$year <- as.numeric(EA.YieldCurve$year)
Fig_EA.YieldCurve<-ggplot(data=EA.YieldCurve,aes(x=year,y=obsvalue,group=ref_area))+
geom_line(colour="blue")+
geom_hline(yintercept = 0, linetype='dotted')+
geom_text(label=round(EA.YieldCurve$obsvalue,digits=2),vjust=-1,hjust=1,colour="blue")+
theme_bw()+
theme(legend.position = "bottom")+
ggtitle("Yield Curve")+
ylab("yield (%)")+
xlab(NULL)
Fig_EA.YieldCurve
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 series is 0.12 percentage points. Where as the standard deviation of the Euro Area is 0.07 percentage points. Euro Area cost of borrowing has increased by more than one standard deviation 4 months on the bounce. It’s been over a decade since it has done so in this direction. - The last three monthly movements have been 2 standard deviation moves.
Considering that the ECB hiked rates in July and these are June numbers, it is telling of what is to come.
SD_COB.H_IE<- sd(COB.H_IE$Diff, na.rm=TRUE)
SD_COB.H_EA<- sd(COB.H_EA$Diff, na.rm=TRUE)
## Year to date - 2022
# COB.H_IE_22 <- COB.H_IE %>%
# filter(obstime >= "2022-01-01")
# COB.C_IE_22 <- COB.C_IE %>%
# filter(obstime >= "2022-01-01")
#
# COB.H_EA_22 <- COB.H_EA %>%
# filter(obstime >= "2022-01-01")
# COB.C_EA_22 <- COB.C_EA %>%
# filter(obstime >= "2022-01-01")
#
# COB.H_22 <- bind_rows(COB.H_IE_22,COB.H_EA_22)
# COB.C_22 <- bind_rows(COB.C_IE_22,COB.C_EA_22)
#
# # Household graphs YTD
#
# Fig.COB.H3 <- ggplot(data=COB.H_22,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_22, 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.H4 <- ggplot(data=COB.H_22,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_22, size = 3)+
# theme_bw()+
# theme(legend.position = "bottom")+
# ylab("monthly change percentage points")+
# xlab(NULL)
#
# FacetH22<- Fig.COB.H4+ facet_wrap(~ref_area, nrow = 2)
#
# Fig.COB.H3 + FacetH22 + plot_layout(ncol=2,widths = c(2,1))
#
## 2021 to date
COB.H_IE_21 <- COB.H_IE %>%
filter(obstime >= "2021-01-01")
COB.C_IE_21 <- COB.C_IE %>%
filter(obstime >= "2021-01-01")
COB.H_EA_21 <- COB.H_EA %>%
filter(obstime >= "2021-01-01")
COB.C_EA_21 <- COB.C_EA %>%
filter(obstime >= "2021-01-01")
COB.H_21 <- bind_rows(COB.H_IE_21,COB.H_EA_21)
COB.C_21 <- bind_rows(COB.C_IE_21,COB.C_EA_21)
# Household graphs
Fig.COB.H5 <- ggplot(data=COB.H_21,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_21, 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.H6 <- ggplot(data=COB.H_21,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_21, size = 3)+
theme_bw()+
theme(legend.position = "bottom")+
ylab("monthly change percentage points")+
xlab(NULL)+
geom_hline(yintercept=SD_COB.H_EA,linetype='dashed',colour="blue")+
geom_hline(yintercept=-SD_COB.H_EA,linetype='dashed',colour="blue")+
geom_hline(yintercept=SD_COB.H_IE,linetype='dashed',colour="darkgreen")+
geom_hline(yintercept=-SD_COB.H_IE,linetype='dashed',colour="darkgreen")+
labs(caption="dashed lines represent 1 +/- standard deviation moves")
FacetH21<- Fig.COB.H6+ facet_wrap(~ref_area, nrow = 2)
Fig.COB.H5 + FacetH21 + plot_layout(ncol=2,widths = c(2,1))
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))
Latest numbers from the CSO
The June numbers for the residential property price index shows the index pass previous peaks. No doubt that will motivate many newspaper headlines referring to the “boom”. The housing market is in a very different place to 2006, as is the economy, but with the cost of borrowing set to increase, the house prices finally look set to cool.
GEO_Merge <- readxl::read_xlsx(path="C:\\Users\\harte\\OneDrive\\Experimental\\HPM04_GEO.xlsx",sheet = 1)
shp <- sf::read_sf("/Users/harte/OneDrive/Experimental//Constituency_Boundaries_Ungeneralised___OSi_National_Electoral_Boundaries___2017.shp", stringsAsFactors=FALSE)
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)
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")
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.
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")
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% |
The inflation print pairs last month, energy continues to dominate but as is the theme of the day, mortgage interest will become a more volatile in the months to come. - As it has been in the past.
#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")
# 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)
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")
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 |
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
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
A Chinese “Final Warning”
According to the Origin from Wikipedia a Chinese Final Warning is a (translated) Russian proverb originating from the Soviet Union era. Where American military fighter jets regularly patrolled the Taiwan Strait, which led to formal protests being regularly lodged by the Chinese Communist Party in the form of a “final warning”. I’ve read that 70+ such warnings were issued, the Wikipedia origin cites 900 from a Russia source. Irrespective it’s a fitting term for the scenes in Taiwan of late.
With China conducting military drills in retaliation to US Speaker Nancy Pelosis visit. If deterring the US was the aim, then its failed. Other US officials appear emboldened, with a further delegation of US lawmakers arriving in Taiwan this week. - See Reuters for more.
The economic situation worsens as the official statistics published today miss estimates on multiple fronts. According to Bloomberg industrial production, retail sales and jobs all missed estimates. Youth unemployment now approaching 20%.
In a country where the books are expected to be cooked, this is not good. In addition the CCP has introduced a rate cut (10 bps), to stimulate the economy, whether this is too little too late romaines to be seen. Milken Institutes Chief Economist, William Lee on Bloomberg today cited sources estimating a growth of ~2% in GDP for the quarter. Some way off the 5% or so estimated to hit their yearly targets.