General market trend before 2020

House Price Index for the United States (USSTHPI)

symbol <-fredr_series_observations(series_id = "USSTHPI", 
      observation_start = as.Date("2000-01-01"))
      
indicator <-as.data.frame(symbol)[,c(1,3)]

tail(indicator) %>% kable() %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed")) %>%
   column_spec(2, T, color = "red" ) 
date value
77 2019-01-01 431.1
78 2019-04-01 438.8
79 2019-07-01 444.4
80 2019-10-01 448.8
81 2020-01-01 453.3
82 2020-04-01 456.6
indicator <-as.data.frame(symbol)[,c(1,3)]

indicator %>% ggplot() + 
   geom_rect(aes(xmin= dmy('01-01-2020'), xmax=dmy('01-10-2020'), ymin = -Inf, ymax = Inf),
                   fill = "white", alpha = 0.02)+
  geom_line(mapping = aes(x=date,y=value),color="red",size=1)  +
     labs(title = "House Price Index", 
          subtitle = str_glue("From {min(indicator$date)} through {max(indicator$date)}"),
       x="Time", y="Index 1980=100",
       caption = "Data source: FRED Federal Reserve.   Illustration by @JoeLongSanDiego")+
    theme_economist()

General market trend before 2020

Homeownership Rate for the United States (USHOWN)

symbol <-fredr_series_observations(series_id = "USHOWN", 
      observation_start = as.Date("2010-01-01"))
      
indicator <-as.data.frame(symbol)[,c(1,3)]

tail(indicator) %>% kable() %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed")) %>%
   column_spec(2, T, color = "red" ) 
date value
5 2014-01-01 64.5
6 2015-01-01 63.7
7 2016-01-01 63.4
8 2017-01-01 63.9
9 2018-01-01 64.4
10 2019-01-01 64.6
indicator <-as.data.frame(symbol)[,c(1,3)]

indicator %>% ggplot() + 
   geom_rect(aes(xmin= dmy('01-01-2020'), xmax=dmy('01-10-2020'), ymin = -Inf, ymax = Inf),
                   fill = "white", alpha = 0.02)+
  geom_line(mapping = aes(x=date,y=value),color="red",size=1)  +
     labs(title = "Homeownership Rate", 
          subtitle = str_glue("From {min(indicator$date)} through {max(indicator$date)}"),
       x="Time", y="Percent ",
       caption = "Data source: FRED Federal Reserve.   Illustration by @JoeLongSanDiego")+
    theme_economist()

Median Sales Price of Existing Homes (HOSMEDUSM052N)

symbol <-fredr_series_observations(series_id = "HOSMEDUSM052N", 
      observation_start = as.Date("2019-01-01"))
      
indicator <-as.data.frame(symbol)[,c(1,3)]

indicator %>% kable() %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed")) %>%
   column_spec(2, T, color = "red" ) 
date value
2019-07-01 NA
2019-08-01 278800
2019-09-01 271500
2019-10-01 271100
2019-11-01 271300
2019-12-01 274500
2020-01-01 266200
2020-02-01 270400
2020-03-01 280700
2020-04-01 286700
2020-05-01 283600
2020-06-01 294500
2020-07-01 305500
2020-08-01 310600
indicator <-as.data.frame(symbol)[,c(1,3)]

indicator %>% ggplot() + 
   geom_rect(aes(xmin= dmy('01-01-2020'), xmax=dmy('01-10-2020'), ymin = -Inf, ymax = Inf),
                   fill = "white", alpha = 0.02)+
  geom_line(mapping = aes(x=date,y=value),color="red",size=1)  +
     labs(title = "Median Sales Price of Existing Homes", 
          subtitle = str_glue("From {min(indicator$date)} through {max(indicator$date)}"),
       x="Monthly", y="Dollars",
       caption = "Data source: FRED Federal Reserve.   Illustration by @JoeLongSanDiego")+
    theme_economist()
## Warning: Removed 1 row(s) containing missing values (geom_path).

Existing Single-Family Home Sales (EXSFHSUSM495N)

symbol <-fredr_series_observations(series_id = "EXSFHSUSM495N", 
      observation_start = as.Date("2019-01-01"))
      
indicator <-as.data.frame(symbol)[,c(1,3)]

indicator %>% kable() %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed")) %>%
   column_spec(2, T, color = "red" ) 
date value
2019-07-01 NA
2019-08-01 475000
2019-09-01 401000
2019-10-01 412000
2019-11-01 364000
2019-12-01 386000
2020-01-01 285000
2020-02-01 299000
2020-03-01 372000
2020-04-01 338000
2020-05-01 340000
2020-06-01 460000
2020-07-01 538000
2020-08-01 502000
indicator <-as.data.frame(symbol)[,c(1,3)]

indicator %>% ggplot() + 
   geom_rect(aes(xmin= dmy('01-01-2020'), xmax=dmy('01-10-2020'), ymin = -Inf, ymax = Inf),
                   fill = "white", alpha = 0.02)+
  geom_line(mapping = aes(x=date,y=value),color="red",size=1)  +
     labs(title = "Existing Single-Family Home Sales", 
          subtitle = str_glue("From {min(indicator$date)} through {max(indicator$date)}"),
       x="Monthly", y="Thousands",
       caption = "Data source: FRED Federal Reserve.   Illustration by @JoeLongSanDiego")+
    theme_economist()
## Warning: Removed 1 row(s) containing missing values (geom_path).

Housing Inventory Estimate:

Vacant Housing Units for the United States (EVACANTUSQ176N)

symbol <-fredr_series_observations(series_id = "EVACANTUSQ176N", 
      observation_start = as.Date("2019-01-01"))
      
indicator <-as.data.frame(symbol)[,c(1,3)]

indicator %>% kable() %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed")) %>%
   column_spec(2, T, color = "red" ) 
date value
2019-01-01 16826
2019-04-01 17044
2019-07-01 17051
2019-10-01 16123
2020-01-01 15975
2020-04-01 13877
indicator <-as.data.frame(symbol)[,c(1,3)]

indicator %>% ggplot() + 
   geom_rect(aes(xmin= dmy('01-01-2020'), xmax=dmy('01-10-2020'), ymin = -Inf, ymax = Inf),
                   fill = "white", alpha = 0.02)+
  geom_line(mapping = aes(x=date,y=value),color="red",size=1)  +
     labs(title = "Vacant Housing Units (Estimate of Housing Inventory)", 
          subtitle = str_glue("From {min(indicator$date)} through {max(indicator$date)}"),
       x="Quarterly", y="Thousands",
       caption = "Data source: FRED Federal Reserve.   Illustration by @JoeLongSanDiego")+
    theme_economist()

Housing Inventory: Active Listing Count in the United States (ACTLISCOUUS)

symbol <-fredr_series_observations(series_id = "ACTLISCOUUS", 
      observation_start = as.Date("2019-01-01"))
      
indicator <-as.data.frame(symbol)[,c(1,3)]

indicator %>% kable() %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed")) %>%
   column_spec(2, T, color = "red" ) 
date value
2019-01-01 1206431
2019-02-01 1200121
2019-03-01 1211907
2019-04-01 1231819
2019-05-01 1279367
2019-06-01 1325305
2019-07-01 1349468
2019-08-01 1355241
2019-09-01 1357620
2019-10-01 1319570
2019-11-01 1251758
2019-12-01 1134513
2020-01-01 1042037
2020-02-01 1016679
2020-03-01 1024667
2020-04-01 1043205
2020-05-01 1024721
2020-06-01 961837
2020-07-01 908983
2020-08-01 862124
2020-09-01 828576
indicator <-as.data.frame(symbol)[,c(1,3)]

indicator %>% ggplot() + 
   geom_rect(aes(xmin= dmy('01-01-2020'), xmax=dmy('01-10-2020'), ymin = -Inf, ymax = Inf),
                   fill = "white", alpha = 0.02)+
  geom_line(mapping = aes(x=date,y=value),color="red",size=1)  +
     labs(title = "  Active Listing Count ", 
          subtitle = str_glue("From {min(indicator$date)} through {max(indicator$date)}"),
       x="Monthly", y="Level",
       caption = "Data source: FRED Federal Reserve.   Illustration by @JoeLongSanDiego")+
    theme_economist()

New Private Housing Units Authorized by Building Permits (PERMITNSA)

symbol <-fredr_series_observations(series_id = "PERMITNSA", 
      observation_start = as.Date("2019-01-01"))
      
indicator <-as.data.frame(symbol)[,c(1,3)]

tail(indicator) %>% kable() %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed")) %>%
   column_spec(2, T, color = "red" ) 
date value
16 2020-04-01 96.0
17 2020-05-01 104.4
18 2020-06-01 124.0
19 2020-07-01 135.4
20 2020-08-01 126.2
21 2020-09-01 134.2
indicator <-as.data.frame(symbol)[,c(1,3)]

indicator %>% ggplot() + 
   geom_rect(aes(xmin= dmy('01-01-2020'), xmax=dmy('01-10-2020'), ymin = -Inf, ymax = Inf),
                   fill = "white", alpha = 0.02)+
  geom_line(mapping = aes(x=date,y=value),color="red",size=1)  +
     labs(title = "New Housing Construction Permit", 
          subtitle = str_glue("From {min(indicator$date)} through {max(indicator$date)}"),
       x="Time", y="Thousands",
       caption = "Data source: FRED Federal Reserve.   Illustration by @JoeLongSanDiego")+
    theme_economist()

Housing Starts: Total: New Privately Owned Housing Units Started (HOUSTNSA)

symbol <-fredr_series_observations(series_id = "HOUSTNSA", 
      observation_start = as.Date("2019-01-01"))
      
indicator <-as.data.frame(symbol)[,c(1,3)]

tail(indicator) %>% kable() %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed")) %>%
   column_spec(2, T, color = "red" ) 
date value
16 2020-04-01 84.9
17 2020-05-01 95.1
18 2020-06-01 118.8
19 2020-07-01 138.7
20 2020-08-01 124.5
21 2020-09-01 125.0
indicator <-as.data.frame(symbol)[,c(1,3)]

indicator %>% ggplot() + 
   geom_rect(aes(xmin= dmy('01-01-2020'), xmax=dmy('01-10-2020'), ymin = -Inf, ymax = Inf),
                   fill = "white", alpha = 0.02)+
  geom_line(mapping = aes(x=date,y=value),color="red",size=1)  +
     labs(title = "Housing Construction Starts", 
          subtitle = str_glue("From {min(indicator$date)} through {max(indicator$date)}"),
       x="Time", y="Thousands",
       caption = "Data source: FRED Federal Reserve.   Illustration by @JoeLongSanDiego")+
    theme_economist()

New Privately-Owned Housing Units Under Construction: Total (UNDCONTNSA)

symbol <-fredr_series_observations(series_id = "UNDCONTNSA", 
      observation_start = as.Date("2019-01-01"))
      
indicator <-as.data.frame(symbol)[,c(1,3)]

tail(indicator) %>% kable() %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed")) %>%
   column_spec(2, T, color = "red" ) 
date value
16 2020-04-01 1189
17 2020-05-01 1183
18 2020-06-01 1193
19 2020-07-01 1216
20 2020-08-01 1226
21 2020-09-01 1231
indicator <-as.data.frame(symbol)[,c(1,3)]

indicator %>% ggplot() + 
   geom_rect(aes(xmin= dmy('01-01-2020'), xmax=dmy('01-10-2020'), ymin = -Inf, ymax = Inf),
                   fill = "white", alpha = 0.02)+
  geom_line(mapping = aes(x=date,y=value),color="red",size=1)  +
     labs(title = "Housing Units Under Construction", 
          subtitle = str_glue("From {min(indicator$date)} through {max(indicator$date)}"),
       x="Time", y="Thousands",
       caption = "Data source: FRED Federal Reserve.   Illustration by @JoeLongSanDiego")+
    theme_economist()

New Privately-Owned Housing Units Completed: Total (COMPUTNSA)

symbol <-fredr_series_observations(series_id = "COMPUTNSA", 
      observation_start = as.Date("2019-01-01"))
      
indicator <-as.data.frame(symbol)[,c(1,3)]

tail(indicator) %>% kable() %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed")) %>%
   column_spec(2, T, color = "red" ) 
date value
16 2020-04-01 94.6
17 2020-05-01 98.5
18 2020-06-01 110.7
19 2020-07-01 117.1
20 2020-08-01 112.0
21 2020-09-01 121.1
indicator <-as.data.frame(symbol)[,c(1,3)]

indicator %>% ggplot() + 
   geom_rect(aes(xmin= dmy('01-01-2020'), xmax=dmy('01-10-2020'), ymin = -Inf, ymax = Inf),
                   fill = "white", alpha = 0.02)+
  geom_line(mapping = aes(x=date,y=value),color="red",size=1)  +
     labs(title = "Housing Units Completed", 
          subtitle = str_glue("From {min(indicator$date)} through {max(indicator$date)}"),
       x="Time", y="Thousands",
       caption = "Data source: FRED Federal Reserve.   Illustration by @JoeLongSanDiego")+
    theme_economist()

Median Sales Price for New Houses Sold in the United States (MSPNHSUS)

symbol <-fredr_series_observations(series_id = "MSPNHSUS", 
      observation_start = as.Date("2019-01-01"))
      
indicator <-as.data.frame(symbol)[,c(1,3)]

tail(indicator) %>% kable() %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed")) %>%
   column_spec(2, T, color = "red" ) 
date value
15 2020-03-01 328200
16 2020-04-01 310100
17 2020-05-01 317100
18 2020-06-01 337700
19 2020-07-01 327800
20 2020-08-01 312800
indicator <-as.data.frame(symbol)[,c(1,3)]

indicator %>% ggplot() + 
   geom_rect(aes(xmin= dmy('01-01-2020'), xmax=dmy('01-10-2020'), ymin = -Inf, ymax = Inf),
                   fill = "white", alpha = 0.02)+
  geom_line(mapping = aes(x=date,y=value),color="red",size=1)  +
     labs(title = " Median Sales Price for New Houses", 
          subtitle = str_glue("From {min(indicator$date)} through {max(indicator$date)}"),
       x="Time", y=" Dollars",
       caption = "Data source: FRED Federal Reserve.   Illustration by @JoeLongSanDiego\nCaution: Each median sales price reflected different mix of housing products")+
    theme_economist()