Exploratory Data Analysis: Will PCE Data Push Bitcoin?
[This article was first published on DataGeeek, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Could the latest PCE data catalyze Bitcoin to surge beyond major resistance and reach $70K? The last time that US PCE Price Index values were under the estimates (miss), BTC prices rocketed.
Source code:
library(tidyverse) library(tidyquant) library(timetk) #U.S. PCE Price Index YoY df_pce_yoy <- read.delim("https://raw.githubusercontent.com/mesdi/investingcom/refs/heads/main/us_pce_yoy.txt") %>% as_tibble() %>% janitor::clean_names() %>% rename(date = release_date) %>% #removing parentheses and the text within mutate(date = case_when(str_detect(date," \\(.*\\)") ~ str_remove(date," \\(.*\\)"), TRUE ~ date)) %>% mutate(date = parse_date(date, "%b %d, %Y"), actual = str_remove(actual, "%") %>% as.numeric(), forecast = str_remove(forecast, "%") %>% as.numeric()) %>% mutate(date = floor_date(date, "month") %m+% months(1), type = case_when( actual > forecast ~ "Beat", actual < forecast ~ "Miss", actual == forecast ~ "In Line" )) %>% select(date, type) %>% drop_na() #Bitcoin USD (BTC-USD) df_bitcoin <- tq_get("BTC-USD") %>% tq_transmute(select = "close", mutate_fun = to.monthly, col_rename = "btc") %>% mutate(date = as.Date(date)) #Merging the datasets df_merged <- df_pce_yoy %>% left_join(df_bitcoin) %>% drop_na() #Plot df_merged %>% ggplot(aes(date, btc, color = type)) + geom_line(aes(group = 1), size =2) + geom_point(size = 5) + geom_hline(yintercept = 70000, size = 1.5, color = "red", linetype = "dashed") + scale_x_date(expand = expansion(mult = c(.1, .1)), labels = scales::label_date("%Y %b"), breaks = c(make_date(2023,10,1), make_date(2024,1,1), make_date(2024,9,1))) + scale_y_continuous(labels = scales::label_dollar()) + scale_color_manual(values = c("In Line" = "darkgrey", "Beat" = "indianred", "Miss" = "darkgreen")) + labs(x= "", y ="", color = "Core PCE Estimates", title = "Bitcoin USD (Monthly)", subtitle = "In the case of the (YoY) PCE values <span style = 'color:indianred;'><br>beat</span>, <span style = 'color:darkgreen;'>miss,</span> or <span style = 'color:darkgrey;'>in line</span> with the estimates") + theme_minimal(base_size = 20, base_family = "Bricolage Grotesque") + theme(panel.grid = element_blank(), legend.position = "none", plot.title = element_text(face = "bold"), plot.subtitle = ggtext::element_markdown(face = "bold"), axis.text = element_text(face = "bold"), plot.background = element_rect(fill = "ghostwhite", color = "ghostwhite"), panel.background = element_rect(fill = "azure", color = "azure"))
To leave a comment for the author, please follow the link and comment on their blog: DataGeeek.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.