Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
227 lines (192 sloc) 13.4 KB
---
title: Some notes on investor and corporate ownership of residential properties
author: Jens von Bergmann
date: '2019-06-18'
slug: some-notes-on-investor-and-corporate-ownership-of-residential-properties
categories:
- CANSIM
tags: []
description: "A quick post on the recent CHSP data release."
featured: ''
images: ["https://doodles.mountainmath.ca/posts/2019-06-18-some-notes-on-investor-and-corporate-ownership-of-residential-properties_files/figure-html/multiple-owners-1.png"]
featuredalt: "multiple ownership"
featuredpath: ""
linktitle: ''
type: "post"
blackfriday:
fractions: false
hrefTargetBlank: true
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(
echo = FALSE,
message = FALSE,
warning = FALSE,
fig.width = 8,
cache=TRUE
)
library(tidyverse)
library(cansim)
```
One week ago the [new batch of CHSP data on ownership of residential properties in British Columbia, Ontario and Nova Scocia came out](https://www150.statcan.gc.ca/n1/daily-quotidien/190611/dq190611a-eng.htm), and I [tweeted some quick graphs](https://twitter.com/vb_jens/status/1138574885591048192). While there has been reporting on some aspect of the numbers in the news a couple of days after, it struck me that this did not really hit all the questions that are on the public mind that the data can address.
Thus a quick post serving two purposes, putting a couple more graphs and data points into the public eye and [providing the code to reproduce the visuals](https://github.com/mountainMath/doodles/blob/master/content/posts/2019-06-18-some-notes-on-investor-and-corporate-ownership-of-residential-properties.Rmarkdown) and serve as a launching point in case others want to further explore different angles.
## Multiple ownership
The first question the data answers is how many individual owners own more than one property.
```{r multiple-owners}
d2 <- get_cansim("46-10-0030-01") %>%
normalize_cansim_values() %>%
filter(`Ownership type`=="Individual",
Estimates=="Number of property owners") %>%
#group_by(GEO,`Residency status of property owner`) %>%
#select(`Number of properties owned by the property owner`,VALUE) %>%
left_join((.) %>%
filter(`Number of properties owned by the property owner`=="Total, all number of properties owned categories",
`Residency status of property owner`=="Total, all residency status of property owner categories") %>%
select(GEO,VALUE) %>%
rename(Total=VALUE)) %>%
#spread(key=`Number of properties owned by the property owner`,value=VALUE) %>%
filter(`Number of properties owned by the property owner`!="Total, all number of properties owned categories",
`Residency status of property owner`!="Total, all residency status of property owner categories",
`Number of properties owned by the property owner`!="One property") %>%
mutate(Share=VALUE/Total) %>%
mutate(Category=factor(
paste0(`Number of properties owned by the property owner`," (",`Residency status of property owner`,")"),
levels=c("Two properties (Resident)", "Three or more properties (Resident)", "Two properties (Non-resident)","Three or more properties (Non-resident)") %>% rev))
ggplot(d2,aes(x=GEO,y=Share,fill=Category)) +
geom_bar(stat="identity") +
scale_fill_brewer(palette = "Paired") +
scale_y_continuous(labels=scales::percent) +
theme_light() +
labs(title="Individual owners by residency and multiple ownership status",x="",
y="Share of individual owners","Residency and multiple ownership status",
caption="MountainMath, StatCan table 46-10-0030")
```
The answer is quite simple, it's about 15% in British Columbia and Ontario, and about `r scales::percent(d2 %>% filter(GEO=="Nova Scotia") %>% pull(Share) %>% sum,2)` in Nova Scotia.
## Individual investors
Next up a question that Nathan Lauster and I [looked at a while ago using different methods](https://doodles.mountainmath.ca/blog/2018/01/11/local-vs-overseas-investors/), that is how many investment properties, i.e. properties owned by individuals but not occpied by them, are owned by *local investors*, so investors residing in Canada, vs by *overseas investors* that is investors residing outside of Canada.
```{r}
d1<-get_cansim("46-10-0029-01") %>%
normalize_cansim_values(factors=TRUE) %>%
filter(grepl("^Vancouver",GEO))
plot_data <- d1 %>% #group_by(GEO,`Property type`) %>%
filter(Estimates=="Number of properties",
`Property type`!="Vacant land",
`Property type`!="Total, all property types",
`Property use`!="Total, all property use categories",
`Residency ownership`!="Total, all residency ownership types") %>%
select(GEO,`Property type`,`Property use`,`Residency ownership`,VALUE) %>%
filter(!is.na(VALUE)) %>%
bind_rows((.) %>%
group_by(GEO,`Property use`,`Residency ownership`) %>%
summarize(VALUE=sum(VALUE,na.rm=TRUE)) %>%
mutate(`Property type`="All property types (except vacant land)") %>%
ungroup) %>%
group_by(GEO,`Property type`) %>%
mutate(Total=sum(VALUE,na.rm=TRUE)) %>%
#filter(`Property use`!="Owner-occupied") %>%
mutate(Share=VALUE/Total) %>%
mutate(Category=paste0(`Property use`," (",`Residency ownership`,")")) %>%
ungroup %>%
filter(`Property use`!="Owner-occupied",
`Property type`!="Unspecified property type") %>%
mutate(GEO=recode(GEO,"Vancouver, census metropolitan area"="Vancouver CMA","Vancouver"="City of Vancouver"))
metro_van_ratio <- plot_data %>% filter(GEO=="Vancouver CMA",
`Property type`=="All property types (except vacant land)") %>%
select(`Residency ownership`,VALUE) %>%
spread(key=`Residency ownership`,value=VALUE) %>%
mutate(ratio=(`Non-resident owned`+`Resident owned`)/`Non-resident owned`) %>%
pull(ratio)
ggplot(plot_data,aes(x=GEO,y=Share,fill=fct_rev(`Residency ownership`))) +
geom_bar(stat="identity") +
facet_wrap("`Property type`") +
scale_fill_brewer(palette = "Set2",direction = -1) +
scale_y_continuous(labels=scales::percent) +
theme_light() +
coord_flip() +
theme(legend.position = "bottom") +
labs(title="Share of properties that are not owner-occupied",x="", fill="",
y="Share of properties",
caption="MountainMath, StatCan table 46-10-0029")
```
This confirms the estimates of our previous work that about 4 in 5 investment properties are owned by *local investors*, a result that attracted some heated (and uniformed) emails when we first put it out. It also adds context to the news stories that focused on the ownership rates and implied that investors were mostly a product of owners living overseas, which is directly contradicted by the very data the news stories were based on.
The above were the two images I already tweeted out this week, but there were several other tables in the CHSP release that I want to briefly take a look at.
## Non-individuals owners
```{r}
d4 <- get_cansim("39-10-0003") %>%
normalize_cansim_values(factors=TRUE) %>%
filter(GEO %in% c("British Columbia","Vancouver, census metropolitan area"),
`Residency status`=="Total, all residency status categories",
Estimates=="Number") %>%
select(GEO,`Ownership type`,VALUE) %>%
group_by(GEO) %>%
spread(key=`Ownership type`, value=VALUE) %>%
mutate(Share=`Non-individual`/`Total, all ownership types`) %>%
select(GEO,Share) %>%
spread(key=GEO,value=Share)
```
Next up is non-individual owners, so owners of property that are corporations, governemnt agencies, trusts and such. We [already saw that the portion of properties owned by non-individual owners is quite small](https://doodles.mountainmath.ca/blog/2018/07/22/fact-checking-vancouver-s-swamp-drainers/), with `r scales::percent(d4 %>% pull("British Columbia"))` of properties in British Columbia owned by non-individuals, dropping down to `r scales::percent(d4 %>% pull("Vancouver, census metropolitan area"))` for Metro Vancouver.
The new data gives information on the owners of these properties.
```{r fig.width=9}
d3 <- get_cansim("46-10-0035") %>%
normalize_cansim_values(factors=TRUE) %>%
filter(`Legal type`!="Total, all legal types",
Estimates=="Number of property owners")
plot_data <- d3 %>% filter(`North American Industry Classification System (NAICS) sector`=="Total, all North American Industry Classification System (NAICS) sectors") %>%
mutate(`Properties owned`=recode_factor(`Properties owned`,"Total, all number of properties owned categories"="Total, all categories"))
ggplot(plot_data,aes(x=GEO,y=VALUE,fill=fct_rev(`Legal type`))) +
geom_bar(stat="identity") +
facet_wrap("`Properties owned`",
scales="free_y") +
scale_y_continuous(labels=scales::comma) +
theme_light() +
theme(legend.position = "bottom") +
labs(title="Non-individual owners",y="Number of owners",x="",fill="")
```
The vast majority of non-individual owners are corporations, with Government taking the second spot and, as one would expect, tend to own a large number of properties. But how about **bare trusts** that get a lot of attention these days?
Bare trusts aren't split out, but are a sub-category of *Other and multiple legal types*. And looking at the overall number of these in British Columbia, there aren't many.
```{r}
other_types_bc <- get_cansim("46-10-0035") %>%
normalize_cansim_values(factors=TRUE) %>%
filter(`Legal type`!="Total, all legal types",
Estimates=="Number of property owners",
`Legal type`=="Other and multiple legal types",
`North American Industry Classification System (NAICS) sector`=="Total, all North American Industry Classification System (NAICS) sectors",
GEO=="British Columbia") %>%
select(`Properties owned`,VALUE) %>%
na.omit()
otbc <- other_types_bc %>% spread(key=`Properties owned`,value=VALUE)
other_types_bc %>%
knitr::kable(col.names = c("Number of proerties owned","Number of owners"))
```
So `r pull(otbc,"Total, all number of properties owned categories")` different owners are trusts, `r pull(otbc,"One property")` of which own one property only and the remaining owning multiple properties. Again, this category includes bare trusts among other legal structures, so it is an upper bound on the number of bare trusts owning property in BC. This number may surprise some, given how much attention bare trusts get in the public mind.
It also helps re-focus the discussion about bare trusts on what is at it's core: Transparency. Or the lack thereof. Just because the number of trusts is very small does not mean we should ignore it. But given how small it is one does wonder why not just get rid of ownership by bare trusts, that seems like a much simpler solution than continuing with bare trust owbership and trying to fix the transparency problem. Someone better informed about the uses of bare trusts may have good arguments why trusts can't just be replaced by company ownership, but so far I have not seen any good reasons.
## Multiple ownership of immigrants
The data also has tables on immigrant owners. Unfortunately it does not include totals for the number of all people considered, or all immigrants, or all recent immigrants. It only has numbers of property owners, I would be curious to look at ownership rates, although some of this has been reported on before using IMDB data.
What we can look at is *multiple ownership rates*, that is how many owners in each immigration category own multiple properties.
```{r}
library(ghibli)
d5 <- get_cansim("46-10-0032") %>%
normalize_cansim_values(factors=TRUE) %>%
filter(Estimates=="Number of property owners") %>%
select(GEO,`Immigrant status and period of immigration`,`Number of properties owned by the property owner`,VALUE) %>%
left_join((.) %>%
filter(`Number of properties owned by the property owner`=="Total, all number of properties owned categories") %>%
select(-`Number of properties owned by the property owner`) %>% rename(Total=VALUE)) %>%
filter(`Number of properties owned by the property owner`!="Total, all number of properties owned categories",
`Number of properties owned by the property owner`!="One property") %>%
mutate(Share=VALUE/Total) %>%
mutate(`Immigrant status and period of immigration`=recode_factor(`Immigrant status and period of immigration`,"Total, all immigrant status and period of immigration"="All individual owners")) %>%
mutate_at(c("Immigrant status and period of immigration","Number of properties owned by the property owner"),fct_rev)
ggplot(d5,aes(x=`Immigrant status and period of immigration`,y=Share,fill=`Number of properties owned by the property owner`)) +
geom_bar(stat="identity") +
facet_wrap("GEO") +
coord_flip() +
scale_fill_ghibli_d("MarnieMedium1") +
theme_light() +
scale_y_continuous(labels = scales::percent) +
theme(legend.position = "bottom") +
labs(title="Multiple ownership by immigrant status",fill="",y="Share of owners",caption="MountainMath, StatCan table 46-10-0032")
```
While this does not speak to the overall ownership rates of each category, it does tell use the the share of owners that own multiple properties for immigrants is on par with that for non-immigrants in British Columbia and Ontario, with recent immigrants showing lower rates of multiple ownership.
## Upshot
That's a wrap for now. There are still some tables that we haven't explored in this post, but we encourage anyone interested to [grab the code](https://github.com/mountainMath/doodles/blob/master/content/posts/2019-06-18-some-notes-on-investor-and-corporate-ownership-of-residential-properties.Rmarkdown) and have a go at it.
You can’t perform that action at this time.