What is the New Markets Tax Credit (NMTC)?

The NMTC program aims to attract private capital to low-income communities that would typically experience a lack of investment in an effort to revitalize struggling economies. The program allows investors to receive a tax credit against their federal income tax in exchange for making equity investments in Community Development Entities. The credit totals 39% of the investment amount and is claimed over a 7 year period.

Raw data source

You can download the full national dataset for New Markets Tax Credits for years 2003-2014 from https://www.cdfifund.gov/news-events/news/Pages/news-detail.aspx?NewsID=225&Category=Press%20Releases in the form of a spreadsheet. A Data Point Description on the first tab of the spreadsheet explains each variable. You can save the second tab of the spreadsheet “Financial Notes 1 - Data Set PU” off as a csv file to then manipulate in R.

The data has a row for each project ID and you can filter based on a variety of location variables and the year placed in service (Yr_PIS) or the allocation year (Yr_Alloc)

1. Load raw data for NMTC from Github and select New Markets Tax Credits in Syracuse

# Load relevant libraries
library( maptools )
library( sp )
library( dplyr )
library( pander )
library( rgdal )
library(geojsonio)
# Read in raw data with csv file
NMTC.full.dat <- read.csv( "https://raw.githubusercontent.com/lecy/SyracuseLandBank/master/DATA/RAW_DATA/NMTC_raw.csv", header=TRUE)

# Select only the rows for the city of Syracuse
NMTC.syr <- subset (NMTC.full.dat, City == "Syracuse")

2. Aggregate NMTC at the census tract level to create a new aggregated data set

# Select the census tract, origination year and amount columns to work with
NMTC.syr.year.dol<- select(NMTC.syr, X2010.Census.Tract, Origination.Year, QLICI.Amount)

# Clean values
NMTC.syr.year.dol$QLICI.Amount<-substring(NMTC.syr.year.dol$QLICI.Amount,2)
NMTC.syr.year.dol$QLICI.Amount <- as.numeric(gsub(",","",NMTC.syr.year.dol$QLICI.Amount))
#NMTC.syr.year.dol

# Aggregate dollars by census tract
NMTC.ct.group<- group_by(NMTC.syr.year.dol, X2010.Census.Tract, Origination.Year, QLICI.Amount)
#NMTC.ct.group
NMTC.agg <-aggregate(NMTC.ct.group$QLICI.Amount, by=list(NMTC.ct.group$X2010.Census.Tract, NMTC.ct.group$Origination.Year), FUN=sum, na.rm=TRUE)
colnames(NMTC.agg) <- c("TRACT","YEAR","NMTC_DOLLARS")
NMTC.agg

3. Data Visualization

# Read in parcel geojson file from Github

syr.parcel <- geojson_read("https://raw.githubusercontent.com/lecy/SyracuseLandBank/master/SHAPEFILES/syr_parcels.geojson", method="local", what="sp" )
# Convert geojson file to data frame and identify neighborhoods in census tracts that have NMTC

syr.parcel.dat<-as.data.frame(syr.parcel)
syr2<-select(syr.parcel.dat, CensusTrac, Nhood)

a. NMTC dollars by neighborhood

# Sort by dollars and create a bar plot by neighborhood
NMTC.bp<-NMTC.agg[order(NMTC.agg$NMTC_DOLLARS),]

NMTC.round <- round(NMTC.bp$NMTC_DOLLARS/1000000) 
NMTC.labels <- paste0("$",NMTC.round)

barplot<-barplot(NMTC.bp$NMTC_DOLLARS, width=1, names.arg=c("Northside", "Downtown", "Near Westside", "Park Ave"),
           main="Amount of NMTC Investments in Syracuse, by Neighborhood",  
           col= "lightgreen", axes=F, border="gray", ylim=c(0, 21500000)) 
text(x = barplot, y = 1300000,labels = NMTC.labels, pos = 3, cex = .9, font = 2, col = "white")
text(x = barplot, y = 0,labels = "million", pos = 3, cex = .9, font = 2, col = "white")

b. Map location of NMTC in Syracuse

# Plot Syracuse parcels and highlight those that receive NMTC

select.tracts <- syr.parcel[syr.parcel$CensusTrac=="15"|syr.parcel$CensusTrac=="32"| syr.parcel$CensusTrac=="30"| syr.parcel$CensusTrac=="21.01",]

plot(syr.parcel, col = "grey", border = F)
plot(select.tracts, add = T, col = "lightgreen", border = F)
title(main="Location of New Markets Tax Credits in Syracuse")

4. Save the new aggregated data set on to Github as a CSV file

# Generate a .CSV file 

setwd( "../../DATA/AGGREGATED_DATA" )
write.csv( NMTC.agg, "NMTC_aggregated.csv", row.names=F )