rm(list=ls())
library(stargazer)
library(plyr)
library(lfe)
library(zoo)
library(scales)
library(rdrobust)
library(data.table)
library(ggplot2)
library(dplyr)
library(fst)
library(fixest)

Main Sample

See “Merging ZTRAX Data” for sample construction code. The following sample is the subset of homes that were purchased in or before 2007.

zdata_reg <- readRDS("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Projects/MS-FIN-21-00651/second iteration/main_sample.rds")

Figure 3: Within Zip Code Variation of Effective Tax Rate

zdata_reg[,mean_tax_rate:=mean(Property_tax_rate_last_year),by=list(zip)]

zdata_reg[,tax_variation:= (Property_tax_rate_last_year-mean_tax_rate)*100]

ggplot(data=zdata_reg[abs(tax_variation)<1])+
  geom_histogram(aes(x=tax_variation,y=stat(count)/sum(stat(count))),fill="dodgerblue4",color="dodgerblue4",alpha=0.75)+
  labs(x="Tax Rate - Mean Zip code Tax Rate (%)",y="Fraction of Listings")+ 
  theme_minimal()+
  scale_y_continuous(labels = comma)

Figure 4: Effective Tax Rate and Years of Ownership

This figure replicates the relationship between the property tax rate and year of purchase using the main analytic sample. The plots for states IL and NY are available in the file: [enter the file name]

yofo_tax_rate <- zdata_reg[,.(mean_tax_rate=mean(Property_tax_rate_last_year)),by=list(PurchaseYear)]

ggplot(yofo_tax_rate,aes(x=PurchaseYear,y=mean_tax_rate))+
  geom_line(color="dodgerblue4")+
  geom_point(fill="dodgerblue4")+
  theme_minimal()+
  labs(x="Year of purchase",y="Property tax rate in 2016 (%)")+
  scale_x_continuous(breaks = 1996:2007) 

Table 1: Descriptive Statistics

stargazer(zdata_reg[,c("Purchase_price","predprice","Listing_price","lppp","sppp","Property_tax_last_year","Property_tax_rate_last_year","purchase_hpi","hpi_inflation","ownership_years","beds","baths","sqft","LotSizeSquareFeet","house_age","LTV_prev","avg_school_rating","avg_school_distance","totalpopulation","medianage","medianhouseholdincome","Renter_fraction")],
          summary.stat = c("mean","sd","p25","median","p75","n"),
          digits = 4,
          covariate.labels =c("Purchased price ($)","Predicted price ($)","Listing price ($)","Listing price/Predicted price","Selling price/Predicted price","Effective tax rate","Property taxes paid ($)","HPI_{Purchase}","HPI_{List}/HPI_{Purchase}","Years of ownership","Number of bedrooms","Number of bathrooms","House area (sq. ft)","Lot area (sq. ft)","Age of the house (years)","Loan-to-value_{Purchase}","GreatSchools rating","Distance to schools (miles)","Census tract population","Census tract median age","Census tract median income","Census traction fraction of renters") ,
          type="text" ) #
## 
## ===========================================================================================================
## Statistic                               Mean       St. Dev.     Pctl(25)      Median      Pctl(75)     N   
## -----------------------------------------------------------------------------------------------------------
## Purchased price ()                  451,405.2000 366,721.0000   225,000      361,000      575,000    25,043
## Predicted price ()                  600,015.2000 431,279.9000 346,363.3000 487,528.8000 716,175.0000 25,043
## Listing price ()                    656,090.0000 470,464.3000 386,082.5000 550,837.5000 779,112.5000 25,043
## Listing price/Predicted price          1.1335       0.5071       0.9294       1.0551       1.2258    25,043
## Selling price/Predicted price          1.0988       0.4861       0.9062       1.0263       1.1851    25,043
## Effective tax rate                   5,662.5980   4,165.6510   3,117.0000   4,710.0900   7,001.0400  25,043
## Property taxes paid ()                 0.0104       0.0038       0.0081       0.0099       0.0119    25,043
## HPIPurchase                         421,730.6000 246,198.4000   247,200      382,400      544,100    25,043
## HPIList/HPIPurchase                    1.4374       0.6143       0.9899       1.2438       1.7102    25,043
## Years of ownership                    12.5721       2.7679         11           12           14      25,043
## Number of bedrooms                     3.4190       0.8612         3            3            4       25,043
## Number of bathrooms                    2.4723       0.9872         2            2            3       25,043
## House area (sq. ft)                  1,981.8300    823.0664      1,406        1,805        2,382     25,043
## Lot area (sq. ft)                   17,381.1500  113,138.5000    5,662        7,200        10,018    25,043
## Age of the house (years)              39.0934      22.8029         19           35           56      25,043
## Loan-to-valuePurchase                  0.6406       0.4103       0.3956       0.7841       0.8000    25,018
## GreatSchools rating                    6.8557       2.0250       5.3333       7.0000       8.6667    25,016
## Distance to schools (miles)            1.4147       1.1363       0.8000       1.1333       1.6667    25,023
## Census tract population              5,876.4770   2,924.1920   4,122.0000   5,375.0000   6,813.0000  25,039
## Census tract median age               40.0738       7.8136      34.6000      39.2000      44.4000    25,037
## Census tract median income          81,070.0100  31,010.2200  57,963.2500  76,227.5000  99,688.0000  25,036
## Census traction fraction of renters    0.3227       0.1707       0.1923       0.2937       0.4296    25,037
## -----------------------------------------------------------------------------------------------------------

Setting Up Regressions

controls1 = "log(predprice)+beds+baths+log(sqft)+avg_school_rating+avg_school_distance+walk_score+log(house_age)+log(LotSizeSquareFeet)+LTV_prev+medianage+log(medianhouseholdincome)+Renter_fraction|zip_list_month|"

controls2 = "log(predprice)+beds+baths+log(sqft)+avg_school_rating+avg_school_distance+walk_score+log(house_age)+log(LotSizeSquareFeet)+LTV_prev+medianage+log(medianhouseholdincome)+Renter_fraction|tract_list_month|"


controls3 = "log(predprice)+beds+baths+log(sqft)+avg_school_rating+avg_school_distance+walk_score+log(house_age)+log(LotSizeSquareFeet)+LTV_prev+medianage+log(medianhouseholdincome)+Renter_fraction+log(nominalloss)|zip_list_month|"

controls4 = "log(adj_purch_price)+beds+baths+log(sqft)+avg_school_rating+avg_school_distance+walk_score+log(house_age)+log(LotSizeSquareFeet)+LTV_prev|zip_list_month|"


cluster = "|zip"
instruments = "ownership_years" #
endo_var = "Property_tax_rate_last_year"

Table 2: Effect of Years of Ownership on Effective Tax Rate in California

regs <- list()
regs[[1]] <- felm(as.formula(paste("I(prop_tax_rate*100)~ownership_years+",controls1,"0",cluster,sep="")),data=zdata_reg)
regs[[2]] <- felm(as.formula(paste("I(prop_tax_rate*100)~ownership_years+",controls2,"0","|GEOID",sep="")),data=zdata_reg)


stargazer(regs,
          no.space = T,align = T,
          omit.stat=c("ser","f", "rsq"),
          style = "qje",omit.table.layout = "n", 
          dep.var.labels.include = F,
          covariate.labels = c("Ownership years","log(Predicted price)","Number of bedrooms","Number of bathrooms","House area","GreatSchools rating","Distance to schools","Distance to amenities","log(Age of the house)","log(Lot area)","Loan-to-value_{Purchase}","Census tract median age","log(Census tract median income)","Census tract fraction of renters"),
          type="text")
## 
## ====================================================
##                                     (1)       (2)   
## ----------------------------------------------------
## Ownership years                  -0.054*** -0.052***
##                                   (0.001)   (0.001) 
## log(Predicted price)             -0.724*** -0.797***
##                                   (0.020)   (0.025) 
## Number of bedrooms               0.039***  0.033*** 
##                                   (0.007)   (0.009) 
## Number of bathrooms               0.019*   0.044*** 
##                                   (0.011)   (0.009) 
## House area                       0.289***  0.290*** 
##                                   (0.034)   (0.049) 
## GreatSchools rating              0.013***    0.014  
##                                   (0.004)   (0.009) 
## Distance to schools                0.004     0.002  
##                                   (0.004)   (0.010) 
## Distance to amenities            -0.0003*  -0.001** 
##                                  (0.0002)  (0.0003) 
## log(Age of the house)            -0.095*** -0.109***
##                                   (0.009)   (0.014) 
## log(Lot area)                    0.046***  0.050*** 
##                                   (0.007)   (0.010) 
## Loan-to-valuePurchase            0.039***  0.031*** 
##                                   (0.007)   (0.012) 
## Census tract median age          0.002***           
##                                   (0.001)   (0.000) 
## log(Census tract median income)  0.130***           
##                                   (0.020)   (0.000) 
## Census tract fraction of renters 0.104***           
##                                   (0.035)   (0.000) 
## N                                 23,977    23,977  
## Adjusted R2                        0.619     0.653  
## ====================================================

Table 4: Effect of Property Taxes on Listing Price

olsformula <- as.formula(paste("log(Listing_price)~Property_tax_rate_last_year+",controls1,"0",cluster,sep=""))
ivformula <- as.formula(paste("log(Listing_price)~",controls1,"(",endo_var,"~",instruments,")",cluster,sep=""))
ivformula_tract <-as.formula(paste("log(Listing_price)~",controls2,"(",endo_var,"~",instruments,")","|GEOID",sep="")) 
ivformula_tract_loss <-as.formula(paste("log(Listing_price)~",controls3,"(",endo_var,"~",instruments,")",cluster,sep=""))
ivformula_listingpremium <- as.formula(paste("lppp~",controls1,"(",endo_var,"~",instruments,")",cluster,sep=""))

regs <- list()

regs[[1]] <- felm(olsformula,data=zdata_reg)
regs[[2]] <- felm(ivformula,data=zdata_reg)
regs[[3]] <- felm(ivformula_tract,data=zdata_reg)
regs[[4]] <- felm(ivformula_tract_loss,data=zdata_reg)
regs[[5]] <- felm(ivformula_listingpremium,data=zdata_reg)


stargazer(regs,
          no.space = T,align = T,
          omit.stat=c("ser","f", "rsq"),style = "qje",omit.table.layout = "n", 
          dep.var.labels.include = FALSE,
          covariate.labels = c("Effective tax rate","log(Predicted price)","Number of bedrooms","Number of bathrooms","log(House area)","GreatSchools rating","Distance to schools","Distance to amenities","log(Age of the house)","log(Lot area)","Loan-to-value_{Purchase}","Census tract median age","log(Census tract median income)","Census tract fraction of renters","log(Nominal loss)"),
          column.labels=c("OLS","IV"),column.separate=c(1,3),
          add.lines = list(c("zipmonth", "Yes", "Yes", "No","Yes","Yes"),
                           c("tractmonth", "No", "No", "Yes","No","No"),
                           c("Cond. F. Stat",
                             "",
                             round(condfstat(regs[[2]])[[1]],2),
                             round(condfstat(regs[[3]])[[1]],2),
                             round(condfstat(regs[[4]])[[1]],2),
                             round(condfstat(regs[[5]])[[1]],2))),
          type="text")
## 
## =======================================================================================
##                                       OLS                   IV                          
##                                       (1)        (2)        (3)       (4)        (5)   
## ---------------------------------------------------------------------------------------
## Effective tax rate                 18.804***                                           
##                                     (0.921)                                            
## log(Predicted price)                0.460***   0.410***  0.398***   0.402***  -0.880***
##                                     (0.020)    (0.019)    (0.025)   (0.019)    (0.033) 
## Number of bedrooms                  0.028***   0.031***  0.025***   0.031***   0.082** 
##                                     (0.007)    (0.007)    (0.008)   (0.007)    (0.040) 
## Number of bathrooms                  0.023*     0.025*   0.047***    0.025*     0.056  
##                                     (0.012)    (0.013)    (0.008)   (0.013)    (0.037) 
## log(House area)                     0.154***   0.173***  0.166***   0.177***    0.042  
##                                     (0.034)    (0.036)    (0.052)   (0.036)    (0.214) 
## GreatSchools rating                 0.012***   0.013***   0.013**   0.013***  0.023*** 
##                                     (0.003)    (0.003)    (0.006)   (0.003)    (0.007) 
## Distance to schools                  -0.004     -0.003    0.0001     -0.003    -0.002  
##                                     (0.003)    (0.003)    (0.006)   (0.003)    (0.005) 
## Distance to amenities              -0.0003*** -0.0003*** -0.001*** -0.0003***  -0.001* 
##                                     (0.0001)   (0.0001)  (0.0002)   (0.0001)   (0.001) 
## log(Age of the house)               -0.015**  -0.023***  -0.030*** -0.024***  -0.055** 
##                                     (0.007)    (0.007)    (0.010)   (0.007)    (0.027) 
## log(Lot area)                       0.069***   0.072***  0.069***   0.073***  0.114*** 
##                                     (0.007)    (0.007)    (0.010)   (0.007)    (0.018) 
## Loan-to-valuePurchase                0.001      0.002     -0.003     0.002      0.002  
##                                     (0.004)    (0.004)    (0.006)   (0.004)    (0.016) 
## Census tract median age             0.003***   0.003***             0.003***  0.004*** 
##                                     (0.0005)   (0.0005)   (0.000)   (0.0005)   (0.001) 
## log(Census tract median income)     0.082***   0.091***             0.092***  0.162*** 
##                                     (0.012)    (0.012)    (0.000)   (0.012)    (0.040) 
## Census tract fraction of renters    0.069***   0.075***             0.076***  0.138*** 
##                                     (0.021)    (0.021)    (0.000)   (0.021)    (0.035) 
## log(Nominal loss)                                                    0.001             
##                                                                     (0.0004)           
## `Property_tax_rate_last_year(fit)`            12.718***  13.401*** 11.797***  12.388***
##                                                (0.993)    (1.564)   (1.035)    (1.387) 
## zipmonth                              Yes        Yes        No        Yes        Yes   
## tractmonth                             No         No        Yes        No        No    
## Cond. F. Stat                                   217.95      107      185.04    217.95  
## N                                    23,977     23,977    23,977     23,977    23,977  
## Adjusted R2                          0.941      0.940      0.948     0.940      0.395  
## =======================================================================================

Table 5: Variation by Expectation of Loss

regs <- list()
regs[[1]] <- felm(olsformula,data=zdata_reg[nominalloss>1])
regs[[2]] <- felm(olsformula,data=zdata_reg[nominalloss<=1])
regs[[3]] <- felm(olsformula,data=zdata_reg[pricechangeqt<=8])
regs[[4]] <- felm(olsformula,data=zdata_reg[pricechangeqt %in% 8:16])
regs[[5]] <- felm(ivformula,data=zdata_reg[pricechangeqt<=8])
regs[[6]] <- felm(ivformula,data=zdata_reg[pricechangeqt  %in% 8:16])


stargazer(regs,
          no.space = T,align = T,
          omit.stat=c("ser","f", "rsq"),style = "qje",omit.table.layout = "n", 
          dep.var.labels.include = FALSE,
          covariate.labels = c("Effective tax rate","log(Predicted price)"),
          column.labels=c("OLS","IV"),column.separate=c(4,2),
          add.lines = list(c("Controls", "Yes", "Yes", "Yes","Yes","Yes","Yes"),
                           c("zipmonth", "Yes", "Yes", "Yes","Yes","Yes","Yes"),
                           c("Cond. F. Stat","","","","",
                             round(condfstat(regs[[5]])[[1]],2),
                             round(condfstat(regs[[6]])[[1]],2))),
          keep=c("Property_tax_rate_last_year","predprice"),
          type="text")
## 
## ==============================================================================================
##                                                      OLS                           IV         
##                                       (1)       (2)       (3)       (4)       (5)       (6)   
## ----------------------------------------------------------------------------------------------
## Effective tax rate                 22.437*** 16.114*** 20.015*** 18.271***                    
##                                     (2.444)   (1.040)   (1.468)   (0.990)                     
## log(Predicted price)               0.660***  0.385***  0.536***  0.422***  0.506***  0.368*** 
##                                     (0.049)   (0.022)   (0.034)   (0.020)   (0.036)   (0.019) 
## `Property_tax_rate_last_year(fit)`                                         17.219*** 11.016***
##                                                                             (1.974)   (1.047) 
## Controls                              Yes       Yes       Yes       Yes       Yes       Yes   
## zipmonth                              Yes       Yes       Yes       Yes       Yes       Yes   
## Cond. F. Stat                                                                41.7     224.04  
## N                                    5,041    18,936     9,459    16,109     9,459    16,109  
## Adjusted R2                          0.931     0.951     0.896     0.918     0.895     0.916  
## ==============================================================================================

Table 6: Other Cross-Sectional Splits

regs <- list()
regs[[1]] <- felm(ivformula,data=zdata_reg[Listing_price<listing_q3])
regs[[2]] <- felm(ivformula,data=zdata_reg[Listing_price>=listing_q3])

    CA <- read_fst("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Projects/Sunk Cost/Processed Data/all_homes_prev/CA_all_homes_prev.fst",columns = c("BuildingAreaSqFt","zip","Bedrooms"),as.data.table = T)
    CA_summary <- CA[,.(
      sqft_lb=quantile(BuildingAreaSqFt,0.25, na.rm=T),
      sqft_hb=quantile(BuildingAreaSqFt,0.75, na.rm=T)),
      by=zip]
    temp <- CA[,.(
      beds_lb=quantile(Bedrooms,0.25, na.rm=T),
      beds_hb=floor(quantile(Bedrooms,0.75, na.rm=T)+0.99)),
      by=zip]
    CA_summary <- merge(CA_summary,temp,by="zip")
    
    
zdata_reg <- merge(zdata_reg,CA_summary,by="zip",all.x=T)
zdata_reg[,outlider_sqft:=ifelse(sqft>sqft_hb ,1,0)]
zdata_reg[,outlider_beds:=ifelse(beds>beds_hb,1,0)]

regs[[3]] <- felm(ivformula,data=zdata_reg[outlider_sqft==0 & outlider_beds==0])
regs[[4]] <- felm(ivformula,data=zdata_reg[outlider_sqft==1 | outlider_beds==1])

    popbyzip<- fread("https://raw.githubusercontent.com/fissehab/US_Population_Data/master/pop-by-zip-code.csv")
    popbyzip <- popbyzip[,c("zip_code","y-2016")]
    names(popbyzip) <- c("zip","population")
    redfin <- read.csv("C:/Users/dratnadiwakara2/Documents/Research/UH computer27/sunkcost_2019/home_sales_redfin.csv")
    redfin <- merge(redfin,popbyzip,by="zip")
    redfin$month <- as.Date(redfin$month,origin="1900-01-01")
    redfin <- data.table(redfin)
    redfin[,home_sales:=home_sales/population]
    redfin <- redfin[redfin$month<="2016-01-01"]
    redfin <- redfin[,.(median_home_sales=median(home_sales)),by=list(zip)]
    redfin[,low_activiy:=ifelse(redfin$median_home_sales<quantile(redfin$median_home_sales,0.5),1,0)]
    
    names(redfin) <- c("zip","median_home_sales_2","low_activity_2")
    
    zdata_reg <- merge(zdata_reg,redfin,by="zip",all.x=TRUE)


regs[[5]] <- felm(ivformula,data=zdata_reg[low_activity_2==1])
regs[[6]] <- felm(ivformula,data=zdata_reg[low_activity_2==0])




  temp <- zdata_reg[!duplicated(zdata_reg$GEOID)]
  median_age <- median(temp$medianage,na.rm = TRUE)
  zdata_reg[,agelow:=ifelse(medianage<=median_age,1,0)]

regs[[7]] <- felm(ivformula,data=zdata_reg[medianage<=median_age])
regs[[8]] <- felm(ivformula,data=zdata_reg[medianage>median_age])

  medincome <- median(temp$medianhouseholdincome,na.rm = TRUE)
  zdata_reg[,inclow:=ifelse(medianhouseholdincome<=medincome,1,0)]
  
regs[[9]] <- felm(ivformula,data=zdata_reg[medianhouseholdincome<=medincome])
regs[[10]] <- felm(ivformula,data=zdata_reg[medianhouseholdincome>medincome])

  median_renterfrac <- median(temp$Renter_fraction,na.rm = TRUE)
  zdata_reg[,rentlow:=ifelse(Renter_fraction<=median_renterfrac,1,0)]

regs[[11]] <- felm(ivformula,data=zdata_reg[Renter_fraction<=median_renterfrac])
regs[[12]] <- felm(ivformula,data=zdata_reg[Renter_fraction>median_renterfrac])

stargazer(regs,
          no.space = T,align = T,omit.stat=c("ser","f", "rsq"),
          style = "qje",omit.table.layout = "n", dep.var.labels.include = FALSE,
          covariate.labels = c("Effective tax rate"),
          column.labels=c("L Pr.","H Pr","L Sz","H Sz","L Act","H Act","L Ag","H Ag","L Inc","H Inc","L Ren","H Ren"),
          add.lines = list(
            c("Controls", rep("Yes",12)),
            c("zipmonth", rep("Yes",12)),
            c("Cond. F. Stat",
              round(c(condfstat(regs[[1]])[[1]],
                      condfstat(regs[[2]])[[1]],
                      condfstat(regs[[3]])[[1]],
                      condfstat(regs[[4]])[[1]],
                      condfstat(regs[[5]])[[1]],
                      condfstat(regs[[6]])[[1]],
                      condfstat(regs[[7]])[[1]],
                      condfstat(regs[[8]])[[1]],
                      condfstat(regs[[9]])[[1]],
                      condfstat(regs[[10]])[[1]],
                      condfstat(regs[[11]])[[1]],
                      condfstat(regs[[12]])[[1]]),2))),
          keep=c("Property_tax_rate_last_year"), flip=T,
          type= "text")
## 
## =======================================================================================================================================
##                     L Pr.     H Pr      L Sz     H Sz      L Act     H Act     L Ag     H Ag      L Inc     H Inc     L Ren     H Ren  
##                      (1)       (2)      (3)       (4)       (5)       (6)      (7)       (8)       (9)      (10)      (11)      (12)   
## ---------------------------------------------------------------------------------------------------------------------------------------
## Effective tax rate 7.922*** 20.844*** 9.299*** 19.159*** 10.406*** 12.483*** 7.981*** 14.617*** 16.119*** 11.314*** 12.464*** 12.837***
##                    (0.959)   (3.009)  (1.112)   (2.213)   (1.245)   (1.369)  (1.589)   (1.292)   (1.977)   (1.140)   (1.339)   (1.614) 
## Controls             Yes       Yes      Yes       Yes       Yes       Yes      Yes       Yes       Yes       Yes       Yes       Yes   
## zipmonth             Yes       Yes      Yes       Yes       Yes       Yes      Yes       Yes       Yes       Yes       Yes       Yes   
## Cond. F. Stat       184.17    24.4     148.39    75.78    127.23    112.32    59.17    146.68     44.11    185.36    129.84     67.56  
## N                   18,340    5,637    15,544    8,433    10,794    11,913    9,354    14,623     8,442    15,535    15,450     8,527  
## Adjusted R2         0.950     0.955    0.936     0.945     0.926     0.946    0.933     0.936     0.908     0.934     0.941     0.939  
## =======================================================================================================================================

Table 7: Effect of Property Taxes on Selling Price and Days-on-Market

regs <- list()
regs[[1]] <- felm(as.formula(paste("log(sales_price)~Property_tax_rate_last_year+",controls1,"0",cluster,sep="")),data=zdata_reg)
regs[[2]] <- felm(as.formula(paste("log(sales_price)~",controls1,"(",endo_var,"~",instruments,")",cluster,sep="")),data=zdata_reg)
regs[[3]] <- felm(as.formula(paste("log(Time_on_market)~Property_tax_rate_last_year+",controls1,"0",cluster,sep="")),data=zdata_reg)
regs[[4]] <- felm(as.formula(paste("log(Time_on_market)~",controls1,"(",endo_var,"~",instruments,")",cluster,sep="")),data=zdata_reg)


stargazer(regs,
          no.space = T,align = T,
          omit.stat=c("ser","f", "rsq"),style = "qje",
          omit.table.layout = "n", dep.var.labels.include = FALSE,
          covariate.labels = c("Effective tax rate","log(Predicted price)"),
          column.labels=c("log(Sales price)","log(Days on market)"),column.separate=c(2,2),
          add.lines = list(c("Controls", "Yes", "Yes", "Yes","Yes","Yes","Yes"),
                           c("zipmonth", "Yes", "Yes", "Yes","Yes","Yes","Yes"),
                           c("Cond. F. Stat","",
                             round(condfstat(regs[[2]])[[1]],2),"",
                             round(condfstat(regs[[4]])[[1]],2))),
          keep=c("Property_tax_rate_last_year","predprice"),
          type="text")
## 
## ==========================================================================
##                                      log(Sales price)    log(Days on market)
##                                       (1)        (2)       (3)      (4)   
## --------------------------------------------------------------------------
## Effective tax rate                 18.423***              3.445*          
##                                     (0.899)              (1.784)          
## log(Predicted price)               0.447***   0.399***    0.046*  0.085** 
##                                     (0.019)    (0.019)   (0.026)  (0.034) 
## `Property_tax_rate_last_year(fit)`            12.555***           8.222***
##                                                (1.045)            (3.162) 
## Controls                              Yes        Yes       Yes      Yes   
## zipmonth                              Yes        Yes       Yes      Yes   
## Cond. F. Stat                                  217.95              217.95 
## N                                   23,977     23,977     23,977   23,977 
## Adjusted R2                          0.916      0.915     0.336    0.336  
## ==========================================================================

RDD Sample

See “Merging ZTRAX Data” for sample construction code.

rddsample <- readRDS("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Projects/MS-FIN-21-00651/second iteration/rdd_sample.rds")

Table 8: Impact of June 01 Cutoff: Regression Evidence

regs = list()
regs[[1]] = felm(I(Property_tax_rate_last_year*100)~postJune+purch_week+I(purch_week^2)+I(purch_week^3)+log(predprice)+beds+baths+log(sqft)+avg_school_rating+avg_school_distance+walk_score+log(house_age)+log(LotSizeSquareFeet)+LTV_prev+medianage+log(medianhouseholdincome)+Renter_fraction|zip_purch_list|0|zip,data=rddsample)
regs[[2]] = felm(log(Listing_price)~postJune+purch_week+I(purch_week^2)+I(purch_week^3)+log(predprice)+beds+baths+log(sqft)+avg_school_rating+avg_school_distance+walk_score+log(house_age)+log(LotSizeSquareFeet)+LTV_prev+medianage+log(medianhouseholdincome)+Renter_fraction|zip_purch_list|0|zip,data=rddsample)
regs[[3]] = felm(log(Selling_price)~postJune+purch_week+I(purch_week^2)+I(purch_week^3)+log(predprice)+beds+baths+log(sqft)+avg_school_rating+avg_school_distance+walk_score+log(house_age)+log(LotSizeSquareFeet)+LTV_prev+medianage+log(medianhouseholdincome)+Renter_fraction|zip_purch_list|0|zip,data=rddsample)
regs[[4]] = felm(log(Purchase_price)~postJune+purch_week+I(purch_week^2)+I(purch_week^3)+log(predprice)+beds+baths+log(sqft)+avg_school_rating+avg_school_distance+walk_score+medianage+log(medianhouseholdincome)+Renter_fraction|zip_purch_list|0|zip,data=rddsample)

stargazer(regs,no.space = T,align = T,
          omit.stat=c("ser","f", "rsq"),style = "qje",omit.table.layout = "n",
          dep.var.labels.include = FALSE,
          covariate.labels = c("Purchased after June 01","Week of purchase","Week of purchase^{2}"),
          column.labels=c("Effective tax rate","log(Listing price)","log(Selling price)","log(Purchased price)"),
          add.lines = list(
            c("Controls", "Yes", "Yes", "Yes","Yes","Yes","Yes"),
            c("zippurchmonth", "Yes", "Yes", "Yes","Yes","Yes","Yes")),
          keep=c("postJune","purch_week"),type="text")
## 
## =====================================================================================================
##                         Effective tax rate log(Listing price) log(Selling price) log(Purchased price)
##                                (1)                (2)                (3)                 (4)         
## -----------------------------------------------------------------------------------------------------
## Purchased after June 01     -0.016***           -0.009**           -0.014*              0.001        
##                              (0.005)            (0.004)            (0.008)             (0.001)       
## Week of purchase              0.001*            -0.0001             0.0002             0.001***      
##                              (0.0003)           (0.0002)           (0.0004)            (0.0001)      
## Week of purchase2            0.00001            0.00002*           0.00001            0.00001***     
##                             (0.00001)          (0.00001)          (0.00002)           (0.00000)      
## I(purch_week3)               -0.00000           -0.00000           -0.00000          -0.00000***     
##                             (0.00000)          (0.00000)          (0.00000)           (0.00000)      
## Controls                       Yes                Yes                Yes                 Yes         
## zippurchmonth                  Yes                Yes                Yes                 Yes         
## N                             52,489             52,489             52,489              52,522       
## Adjusted R2                   0.597              0.940              0.804               0.992        
## =====================================================================================================