& Year>1980,
c("Year", "avgDetW_T_cn_rTAAA1_1") ]) ,
aes(x= Year, y=  avgDetW_T_cn_rTAAA1_1 , colour = "Software"),
size = 2)+
geom_hline(yintercept=0, linetype="dashed", color = "black")+
labs(y = "Net tax rate")+
scale_color_discrete("") +
theme_bw()+ mytheme
# Figure 3: Preferred wedges excluding 1986 for structures---------------
ggplot() +
geom_line(data = unique(tableTaxDiscounts_Full_constant_DPrice_rate[
Category == "Equipment" & Year>1980, c("Year", "avgW_T_cn_rTAAA1_1") ]) ,
aes(x= Year, y=  avgW_T_cn_rTAAA1_1  , colour = "Equipment"),
size = 2)+
geom_line(data = unique(tableTaxDiscounts_Full_constant_DPrice_rate[
Subcategory == "Nonresidential structures" & Year>1986, c("Year", "avgSubW_T_cn_rTAAA1_1") ]) ,
aes(x= Year, y=  avgSubW_T_cn_rTAAA1_1  , colour = "Nonresidential structures"),
size = 2) +
geom_line(data = unique(tableTaxDiscounts_Full_constant_DPrice_rate[DetCategory == "Software"
& Year>1980,
c("Year", "avgDetW_T_cn_rTAAA1_1") ]) ,
aes(x= Year, y=  avgDetW_T_cn_rTAAA1_1 , colour = "Software"),
size = 2)+
geom_hline(yintercept=0, linetype="dashed", color = "black")+
labs(y = "Net tax rate")+
scale_color_discrete("") +
theme_bw()+ mytheme
ggsave(paste0(figureDir,"/Fig3_All_Wedges_Fix.png"),
device = "png", width = 12, height = 10)
# Figure 3: Excluding reevaluation---------------
ggplot() +
geom_line(data = unique(
tableTaxDiscounts_Full_constant_DPrice_rate_delta_myopic_tax_allowances[
Category == "Equipment" & Year>1980, c("Year", "avgW_T_cn_rTAAA1_1") ]) ,
aes(x= Year, y=  avgW_T_cn_rTAAA1_1  , colour = "Equipment"),
size = 2)+
geom_line(data = unique(
tableTaxDiscounts_Full_constant_DPrice_rate_delta_myopic_tax_allowances[
Subcategory == "Nonresidential structures" & Year>1980, c("Year", "avgSubW_T_cn_rTAAA1_1") ]) ,
aes(x= Year, y=  avgSubW_T_cn_rTAAA1_1  , colour = "Nonresidential structures"),
size = 2) +
geom_line(data = unique(
tableTaxDiscounts_Full_constant_DPrice_rate_delta_myopic_tax_allowances[DetCategory == "Software"
& Year>1980,
c("Year", "avgDetW_T_cn_rTAAA1_1") ]) ,
aes(x= Year, y=  avgDetW_T_cn_rTAAA1_1 , colour = "Software"),
size = 2)+
geom_hline(yintercept=0, linetype="dashed", color = "black")+
labs(y = "Net tax rate")+
scale_color_discrete("") +
theme_bw()+ mytheme
ggsave(paste0(figureDir,"/Fig3_All_Wedges_NoReeval.png"),
device = "png", width = 12, height = 10)
# Figure 3: with labor---------------
ggplot() +
geom_line(data = unique(
tableTaxDiscounts_Full_constant_DPrice_rate_delta_myopic_tax_allowances[
Category == "Equipment" & Year>1980, c("Year", "avgW_T_cn_rTAAA1_1") ]) ,
aes(x= Year, y=  avgW_T_cn_rTAAA1_1  , colour = "Equipment"),
size = 2)+
geom_line(data = unique(
tableTaxDiscounts_Full_constant_DPrice_rate_delta_myopic_tax_allowances[
Subcategory == "Nonresidential structures" & Year>1980, c("Year", "avgSubW_T_cn_rTAAA1_1") ]) ,
aes(x= Year, y=  avgSubW_T_cn_rTAAA1_1  , colour = "Nonresidential structures"),
size = 2) +
geom_line(data = unique(
tableTaxDiscounts_Full_constant_DPrice_rate_delta_myopic_tax_allowances[DetCategory == "Software"
& Year>1980,
c("Year", "avgDetW_T_cn_rTAAA1_1") ]) ,
aes(x= Year, y=  avgDetW_T_cn_rTAAA1_1 , colour = "Software"),
size = 2)+
geom_line(data = tableTaxes[Year>1980, c("Year", "T_H") ] ,
aes(x= Year, y=  T_H, color = "T_L" ) , size = 2)+
geom_line(data = tableTaxes[Year>1980, c("Year", "T_H_U") ] ,
aes(x= Year, y=  T_H_U , colour = "T_L_U"), size = 2)+
geom_hline(yintercept=0, linetype="dashed", color = "black")+
labs( y = "Average tax rate")+
scale_color_manual(
name = "",
values = c("T_L" = "red",
"T_L_U" = "purple",
"Equipment" = "#F8766D",
"Nonresidential structures" = "#00BA38",
"Software" = "#619CFF"),
breaks = c("T_L",
"T_L_U",
"Equipment",
"Nonresidential structures",
"Software"),
labels = c(expression("Labor, " ~ tau ^ l ),
expression("Labor, " ~ tau ^ l + tau ^ u ),
"Equipment",
"Nonresidential structures",
"Software"))+
geom_hline(yintercept=0, linetype="dashed", color = "black")+
theme_bw()+
mytheme
ggsave(paste0(figureDir,"/Fig3_All_Wedges_NoReeval_Labor.png"),
device = "png", width = 12, height = 10)
# using the pp tax rate
ggplot() +
geom_line(data = unique(
tableTaxDiscounts_Full_constant_DPrice_rate_delta_myopic_tax_allowances[
Category == "Equipment" & Year>1980, c("Year", "avgW_T_pp_rTAAA1_1") ]) ,
aes(x= Year, y=  avgW_T_pp_rTAAA1_1  , colour = "Equipment"),
size = 2)+
geom_line(data = unique(
tableTaxDiscounts_Full_constant_DPrice_rate_delta_myopic_tax_allowances[
Subcategory == "Nonresidential structures" & Year>1980, c("Year", "avgSubW_T_pp_rTAAA1_1") ]) ,
aes(x= Year, y=  avgSubW_T_pp_rTAAA1_1  , colour = "Nonresidential structures"),
size = 2) +
geom_line(data = unique(
tableTaxDiscounts_Full_constant_DPrice_rate_delta_myopic_tax_allowances[DetCategory == "Software"
& Year>1980,
c("Year", "avgDetW_T_pp_rTAAA1_1") ]) ,
aes(x= Year, y=  avgDetW_T_pp_rTAAA1_1 , colour = "Software"),
size = 2)+
geom_hline(yintercept=0, linetype="dashed", color = "black")+
labs(y = "Net tax rate")+
scale_color_discrete("") +
theme_bw()+ mytheme
ggsave(paste0(figureDir,"/Fig3_All_Wedges_NoReeval_pp.png"),
device = "png", width = 12, height = 10)
# Using the all-corporate tax rate
ggplot() +
geom_line(data = unique(
tableTaxDiscounts_Full_constant_DPrice_rate_delta_myopic_tax_allowances[
Category == "Equipment" & Year>1980, c("Year", "avgW_T_cn_rTAAA1_1") ]) ,
aes(x= Year, y=  avgW_T_cn_s_rTAAA1_1  , colour = "Equipment"),
size = 2)+
geom_line(data = unique(
tableTaxDiscounts_Full_constant_DPrice_rate_delta_myopic_tax_allowances[
Subcategory == "Nonresidential structures" & Year>1980, c("Year", "avgSubW_T_cn_rTAAA1_1") ]) ,
aes(x= Year, y=  avgSubW_T_cn_s_rTAAA1_1  , colour = "Nonresidential structures"),
size = 2) +
geom_line(data = unique(
tableTaxDiscounts_Full_constant_DPrice_rate_delta_myopic_tax_allowances[DetCategory == "Software"
& Year>1980,
c("Year", "avgDetW_T_cn_rTAAA1_1") ]) ,
aes(x= Year, y=  avgDetW_T_cn_s_rTAAA1_1 , colour = "Software"),
size = 2)+
geom_line(data = tableTaxes[Year>1980, c("Year", "T_H") ] ,
aes(x= Year, y=  T_H, color = "T_L" ) , size = 2)+
geom_line(data = tableTaxes[Year>1980, c("Year", "T_H_U") ] ,
aes(x= Year, y=  T_H_U , colour = "T_L_U"), size = 2)+
geom_hline(yintercept=0, linetype="dashed", color = "black")+
labs( y = "Average tax rate")+
scale_color_manual(
name = "",
values = c("T_L" = "red",
"T_L_U" = "purple",
"Equipment" = "#F8766D",
"Nonresidential structures" = "#00BA38",
"Software" = "#619CFF"),
breaks = c("T_L",
"T_L_U",
"Equipment",
"Nonresidential structures",
"Software"),
labels = c(expression("Labor, " ~ tau ^ l ),
expression("Labor, " ~ tau ^ l + tau ^ u ),
"Equipment",
"Nonresidential structures",
"Software"))+
geom_hline(yintercept=0, linetype="dashed", color = "black")+
theme_bw()+
mytheme
ggsave(paste0(figureDir,"/Fig3_All_Wedges_NoReeval_Labor_S.png"),
device = "png", width = 12, height = 10)
ggplot() +
geom_line(data = unique(
tableTaxDiscounts_Full_constant_DPrice_rate_delta_myopic_tax_allowances[
Category == "Equipment" & Year>1980, c("Year", "avgW_T_cn_s_rTAAA1_1") ]) ,
aes(x= Year, y=  avgW_T_cn_s_rTAAA1_1  , colour = "Equipment"),
size = 2)+
geom_line(data = unique(
tableTaxDiscounts_Full_constant_DPrice_rate_delta_myopic_tax_allowances[
Subcategory == "Nonresidential structures" & Year>1980, c("Year", "avgSubW_T_cn_s_rTAAA1_1") ]) ,
aes(x= Year, y=  avgSubW_T_cn_s_rTAAA1_1  , colour = "Nonresidential structures"),
size = 2) +
geom_line(data = unique(
tableTaxDiscounts_Full_constant_DPrice_rate_delta_myopic_tax_allowances[DetCategory == "Software"
& Year>1980,
c("Year", "avgDetW_T_cn_s_rTAAA1_1") ]) ,
aes(x= Year, y=  avgDetW_T_cn_s_rTAAA1_1 , colour = "Software"),
size = 2)+
geom_line(data = tableTaxes[Year>1980, c("Year", "T_H") ] ,
aes(x= Year, y=  T_H, color = "T_L" ) , size = 2)+
geom_line(data = tableTaxes[Year>1980, c("Year", "T_H_U") ] ,
aes(x= Year, y=  T_H_U , colour = "T_L_U"), size = 2)+
geom_hline(yintercept=0, linetype="dashed", color = "black")+
labs( y = "Average tax rate")+
scale_color_manual(
name = "",
values = c("T_L" = "red",
"T_L_U" = "purple",
"Equipment" = "#F8766D",
"Nonresidential structures" = "#00BA38",
"Software" = "#619CFF"),
breaks = c("T_L",
"T_L_U",
"Equipment",
"Nonresidential structures",
"Software"),
labels = c(expression("Labor, " ~ tau ^ l ),
expression("Labor, " ~ tau ^ l + tau ^ u ),
"Equipment",
"Nonresidential structures",
"Software"))+
geom_hline(yintercept=0, linetype="dashed", color = "black")+
theme_bw()+
mytheme
ggsave(paste0(figureDir,"/Fig3_All_Wedges_NoReeval_Labor_S.png"),
device = "png", width = 12, height = 10)
#SETUP-----------------------
# Run the setup lines in Master if running as stand-alone
# garbage collection
gc()
# remove all variables except those defining directory and graph theme
rm(list = setdiff(ls(), c(ls()[grep("Dir", ls())], "mytheme")))
# GENERATE DATA FOR THE FOLLOWING INSTANCES
myopic_taxes = F
myopic_allowances = F
# 1. ALL RATES CAN CHANGE, "RAW SERIES"
constant_DPrice = F
# Option for constant delta
constant_delta = F
# Option for constant rate
constant_rate = F
source(paste0(binDir, "/computeDatasets.R"))
gc()
# remove all variables except those defining directory and graph theme
rm(list = setdiff(ls(), c(ls()[grep("Dir", ls())], "mytheme")))
# 2. INTEREST RATES ARE CONSTANT
myopic_taxes = F
myopic_allowances = F
constant_DPrice = F
# Option for constant delta
constant_delta = F
# Option for constant rate
constant_rate = T
source(paste0(binDir, "/computeDatasets.R"))
gc()
# remove all variables except those defining directory and graph theme
rm(list = setdiff(ls(), c(ls()[grep("Dir", ls())], "mytheme")))
# 3. PRICES INCREASE AT CONSTANT RATE
myopic_taxes = F
myopic_allowances = F
constant_DPrice = T
# Option for constant delta
constant_delta = F
# Option for constant rate
constant_rate = F
source(paste0(binDir, "/computeDatasets.R"))
gc()
# remove all variables except those defining directory and graph theme
rm(list = setdiff(ls(), c(ls()[grep("Dir", ls())], "mytheme")))
# 3. INTEREST RATES ARE CONSTANT, PRICES INCREASE AT CONSTANT RATE
myopic_taxes = F
myopic_allowances = F
constant_DPrice = T
# Option for constant delta
constant_delta = F
# Option for constant rate
constant_rate = T
source(paste0(binDir, "/computeDatasets.R"))
# 4. FIX EVERYTHING AND COMPUTE "MYOPIC" ALLOWANCES, without revaluation effects
constant_DPrice = T
# Option for constant delta
constant_delta = T
# Option for constant rate
constant_rate = T
myopic_taxes = T
myopic_allowances = T
source(paste0(binDir, "/computeDatasets.R"))
# load raw Wedges: rates, depreciation and DPrice all vary
load(paste0(outDir,"/Wedges.RData") )
# load Wedges with constant rates
load(paste0(outDir,"/Wedges_constant_rate.RData") )
# load Wedges with constant DPrice
load(paste0(outDir,"/Wedges_constant_DPrice.RData") )
# load Wedges with constant DPrice AND rates
load(paste0(outDir,"/Wedges_constant_DPrice_rate.RData") )
# load Wedges where only taxes and discounts change and agents are myopic
load(paste0(outDir,"/Wedges_constant_DPrice_rate_delta_myopic_tax_allowances.RData") )
#SETUP: LIBRARIES---------
# Libraries
library(readr)
library(dplyr)
#library(reshape2)
library(tibble)
library(data.table)
library(ggplot2)
library(zoo)
library(TTR)
library(ggpubr)
library(xtable)
library(scales)
library(forecast)
# SETUP: DIRECTORIES ##########
# Change this to run in another directory with same folder structure
baseDir = "/Users/andreamanera/Dropbox (MIT)/Research/Brookings20"
binDir = paste0(baseDir,"/DepreciationData/R/bin")
# data sources
rawDir = paste0(baseDir,"/DepreciationData/R/raw")
# source for Tax BEA data
taxDir = paste0(rawDir,"/TaxSeries")
# out other
outDir = paste0(baseDir,"/DepreciationData/R/out")
# out figures
figureDir = paste0(outDir,"/Figures")
# McDaniel dir: where dataset McDanielMine is
McDanielDir = paste0(baseDir,"/McDanielComp/out")
# Investment dir
invDir = paste0(rawDir,"/InvPrices")
# SETUP : ggplot theme -------
mytheme<-theme(plot.title = element_text(hjust = 0.5,
size=18),
legend.position = "bottom",
legend.text = element_text(size=18),
axis.text.x = element_text(size=18, angle = 0),
axis.text.y = element_text(size=18),
axis.title.x = element_text(size=18),
axis.title.y = element_text(size=18),
legend.key = element_rect(size = 5),
legend.key.size = unit(1.5, 'lines'))
# load raw Wedges: rates, depreciation and DPrice all vary
load(paste0(outDir,"/Wedges.RData") )
# load Wedges with constant rates
load(paste0(outDir,"/Wedges_constant_rate.RData") )
# load Wedges with constant DPrice
load(paste0(outDir,"/Wedges_constant_DPrice.RData") )
# load Wedges with constant DPrice AND rates
load(paste0(outDir,"/Wedges_constant_DPrice_rate.RData") )
# load Wedges where only taxes and discounts change and agents are myopic
load(paste0(outDir,"/Wedges_constant_DPrice_rate_delta_myopic_tax_allowances.RData") )
View(tableTaxDiscounts_Full)
tabShort = tableTaxDiscounts_Full[Year == 2015,]
tabShort = tableTaxDiscounts_Full[Year == 2015,c("Category", "Subcategory", "DetCategory", "deltaCat", "deltaSubCat", "deltaDetCat", "DPriceCat", "DPriceSubCat", "DPriceDetCat")]
View(tabShort)
#SETUP-----------------------
# Run the setup lines in Master if running as stand-alone
# garbage collection
gc()
# remove all variables except those defining directory and graph theme
rm(list = setdiff(ls(), c(ls()[grep("Dir", ls())], "mytheme")))
baseDir = "/Users/andreamanera/Dropbox (MIT)/Research/Brookings20"
binDir = paste0(baseDir,"/DepreciationData/R/bin")
source(paste0(binDir, "/setupLines.R"))
# PART I: Import and arrange data  -----------
# Step 1. Import IRS_IDB, obtain the share of S-corporations over partnership + corporations Net income-----------
# IRS data on income by type of corporation
tableIRS = setDT(read_csv(paste0(taxDir,"/IRS_IBD.csv")))
# Net income less deficit, net income for corp, C-corp, S-corp, Partnerships, RIC/REIT are pass-through. Assume all goes to shareholders
tableIRS = tableIRS[Line == 12 | Line == 13 | Line ==19 | Line ==20 | Line == 26 | Line == 27 |
Line ==33 | Line ==34 | Line ==40 | Line ==41 , ]
tableIRS$Item = c("NI_D_TOT_CORP","NI_TOT_CORP", "NI_D_C_CORP", "NI_C_CORP", "NI_D_RIC_REIT", "NI_RIC_REIT",
"NI_D_S_CORP", "NI_S_CORP", "NI_D_PART", "NI_PART")
tableIRS = tableIRS[,Line:= NULL]
tableIRS = melt(tableIRS,
id.vars = c("Item"),
measure.vars = colnames(tableIRS)[colnames(tableIRS) !="Item"],
variable.name = "Year",
value.name = "Value")
tableIRS$Value = as.numeric(tableIRS$Value)
tableIRS$Year = as.numeric(as.character(tableIRS$Year))
tableIRS = setDT(dcast(tableIRS, Year~ Item, value.var="Value"))
tableIRS = tableIRS[!(is.na(Year)),]
# UNITS are thousands of dollars, translate into billions
colNorm = setdiff(colnames(tableIRS), "Year" )
tableIRS  = tableIRS[, c(colNorm) := lapply(.SD , function(x) {x/1000000} ),
.SDcols  = c(colNorm)]
# GET SHARES----------
tableIRS = tableIRS[ , SHARE_RR_CORP :=  NI_RIC_REIT/NI_TOT_CORP ]
tableIRS = tableIRS[ , SHARE_S_CORP :=  NI_S_CORP/NI_TOT_CORP ]
tableIRS = tableIRS[ , SHARE_C_CORP :=  NI_C_CORP/NI_TOT_CORP ]
tableIRS = tableIRS[ , SHARE_S_SPART :=  NI_S_CORP/(NI_S_CORP + NI_PART) ] # share of S over S + Partnerships
# INTERPOLATE MISSING VALUES FOR 1990
tableIRS[Year==1990, "SHARE_RR_CORP" ] = (tableIRS[Year==1989, "SHARE_RR_CORP" ] +
tableIRS[Year==1991, "SHARE_RR_CORP" ])/2
tableIRS[Year==1990, "SHARE_S_CORP" ] = (tableIRS[Year==1989, "SHARE_S_CORP" ] +
tableIRS[Year==1991, "SHARE_S_CORP" ])/2
tableIRS[Year==1990, "SHARE_C_CORP" ] = (tableIRS[Year==1989, "SHARE_C_CORP" ] +
tableIRS[Year==1991, "SHARE_C_CORP" ])/2
tableIRS[Year==1990, "SHARE_S_SPART" ] = (tableIRS[Year==1989, "SHARE_S_SPART" ] +
tableIRS[Year==1991, "SHARE_S_SPART" ])/2
# COMPLETE::::: FILL LAST VALUE FOR YEARS AFTER 2013---------------
#tableBEA[Year>2013, "SHARE_INC_C_CORP" ] = tableBEA[Year==2013, "SHARE_INC_C_CORP" ]
# Step 2. Import for \tau^{\text{DIV}}: tax series from LT_taxes_77_2014 from office of Tax Analysis --------
tableOTA = setDT(read_csv(paste0(capTaxDir,"/LT_taxes_77_2014.csv")))
colnames(tableOTA) <- c("Year", "TAU_DIV")
tableOTA$TAU_DIV = tableOTA$TAU_DIV/100
# Step 3. Get qualified/unqualified dividends-----------
tableDiv = setDT(read_csv(paste0(capTaxDir,"/17intaba.csv")))
tableDiv = tableDiv[Line == 17 | Line == 19 , ]
tableDiv$Item = c("ORD_DIV","QUALIF_DIV")
# SetDT and translate into billions
tableDiv = tableDiv[,Line:= NULL]
tableDiv = melt(tableDiv,
id.vars = c("Item"),
measure.vars = colnames(tableDiv)[colnames(tableDiv) !="Item"],
variable.name = "Year",
value.name = "Value")
tableDiv$Value = as.numeric(tableDiv$Value)
tableDiv$Year = as.numeric(as.character(tableDiv$Year))
tableDiv = setDT(dcast(tableDiv, Year~ Item, value.var="Value"))
tableDiv = tableDiv[!(is.na(Year)),]
tableDiv[, 2:3] = tableDiv[, 2:3]/1000000
# Step 4. Get Net Dividends from BEA ----------
tableBEADiv = setDT(read_csv(
paste0(capTaxDir,"/BEA_1_12_National_income_by_type.csv")))
tableBEADiv = tableBEADiv[Line == 16 , ]
tableBEADiv$Item = c("NET_DIV_CORP")
tableBEADiv = tableBEADiv[,Line:= NULL]
tableBEADiv = melt(tableBEADiv,
id.vars = c("Item"),
measure.vars = colnames(tableBEADiv)[colnames(tableBEADiv) !="Item"],
variable.name = "Year",
value.name = "Value")
tableBEADiv$Value = as.numeric(tableBEADiv$Value)
tableBEADiv$Year = as.numeric(as.character(tableBEADiv$Year))
tableBEADiv = setDT(dcast(tableBEADiv, Year~ Item, value.var="Value"))
tableBEADiv = tableBEADiv[!(is.na(Year)),]
# Step 5. get the BEA table containing NOSCORP_IRS (and the other tax rates)-------
load(paste0(outDir,"/TaxSeries.RData") )
rm( list = "tableTaxes")
# Keep only net operating surpluses
tableBEA = tableBEA[ , c("Year", "NOSCORP_IRS", "NOSPUE_IRS", "T_K_corp_net", "T_INC", "T_K_taxbase_pp",
"LABOR_SHARE_CORP", "NOSPUE_IRS", "T_PROP"),
with = F]
# Step 6. Get IRS data on short-term capital gains in various forms--------
tableCapGain = setDT(read_csv(paste0(capTaxDir,"/yearly_cap_gain.csv")))
tableCapGain[, 2:length(colnames(tableCapGain))] =
tableCapGain[, 2:length(colnames(tableCapGain))] /1000000
# Step 7. Import Line Items to get S-corp income ------------
tableLineItems = setDT(read_csv(paste0(capTaxDir,"/Line_Counts_S_corps.csv")))
tableLineItems[, 2:length(colnames(tableLineItems))] =
tableLineItems[, 2:length(colnames(tableLineItems))] /1000000
# Merge all data sets
tableDATA = merge.data.frame(tableBEA, tableBEADiv, by = "Year", all = T)
tableDATA = merge.data.frame(tableCapGain, tableDATA, by = "Year", all = T)
tableDATA = merge.data.frame(tableDiv, tableDATA, by = "Year", all = T)
tableDATA = merge.data.frame(tableIRS, tableDATA, by = "Year", all = T)
tableDATA = merge.data.frame(tableLineItems, tableDATA, by = "Year", all = T)
tableDATA = merge.data.frame(tableOTA, tableDATA, by = "Year", all = T)
# PART II: Compute quantities -------------
# Step 1: xi_ST_C_Corp Share of surplus realized as non-qualif. dividends, IRS distributions, cap gain distributions, S.T. cap gain -------
tableDATA = setDT(tableDATA)
# most complete measure including NET short-term capital gains minus losses (assets can change hands multiple times)
tableDATA[ , xi_ST_C_Corp :=
(ORD_DIV + cap_gain_Dist_TOT + taxable_IRA + Corp_ST_net)/(SHARE_C_CORP * NOSCORP_IRS) ]
# Excluding ST CORP capital gain per se, these are available only for very few years
tableDATA[ , xi_ST_C_Corp_noCG :=
(ORD_DIV + cap_gain_Dist_TOT + taxable_IRA)/(SHARE_C_CORP * NOSCORP_IRS) ]
# Including only dividends
tableDATA[ , xi_ST_C_Corp_DIV :=
(ORD_DIV)/(SHARE_C_CORP * NOSCORP_IRS) ]
tableDATA[, xi_ST_C_Corp_DIV_mean := mean(xi_ST_C_Corp_DIV, na.rm = T)]
tableDATA[, xi_ST_C_Corp_noCG_mean := mean(xi_ST_C_Corp_noCG, na.rm = T)]
tableDATA[, xi_ST_C_Corp_mean := mean(xi_ST_C_Corp, na.rm = T)]
# Step 2: xi_ST_S_Corp, share of S_CORP surplus realized as s.t. gain---------
tableDATA[, share_S_C := SHARE_C_CORP + SHARE_S_CORP]
tableDATA[, xi_ST_S_Corp :=  SHARE_S_SPART * SP_ST_net / (SHARE_S_CORP * NOSCORP_IRS) ]
tableDATA[ xi_ST_S_Corp < 0 , "xi_ST_S_Corp"] = NA
# Step 3: xi_inc,  share of S_CORP surplus realized as income ---------
tableDATA[, xi_inc :=  S_net_inc  / (SHARE_S_CORP * NOSCORP_IRS) ]
tableDATA[, xi_S_inc_ST :=  (S_net_inc + SHARE_S_SPART * SP_ST_net)  / (SHARE_S_CORP * NOSCORP_IRS) ]
# PART II: take averages and apply formula.
xi_S_inc_ST = mean(tableDATA$xi_S_inc_ST, na.rm = T)
xi_ST_C_Corp = tableDATA$xi_ST_C_Corp_mean[1]
# FORMULA:
tableDATA = tableDATA[, one_minus_T_K_div:= ((1 - T_INC) * ((1 - LABOR_SHARE_CORP)*
NOSPUE_IRS +
NOSCORP_IRS - CT) + CT)
/((1 - LABOR_SHARE_CORP)*NOSPUE_IRS + NOSCORP_IRS  )  ]
tableDATA = tableDATA[, one_minus_T_c_div:=  SHARE_C_CORP * (1 - T_K_corp_net) *
(xi_ST_C_Corp_mean * (1-T_INC) + (1 - xi_ST_C_Corp_mean) * (1 - TAU_DIV)) +
SHARE_S_CORP * (mean(xi_S_inc_ST, na.rm = T) * (1-T_INC) + (1 - mean(xi_S_inc_ST, na.rm = T)) * (1 - TAU_DIV)) +
(1 - SHARE_C_CORP - SHARE_S_CORP) * (1-T_INC)]
tableDATA = tableDATA[, T_c_div:=   1 -one_minus_T_c_div]
tableDATA = tableDATA[, T_K_all_nopp:= (T_INC * ((1 - LABOR_SHARE_CORP)*NOSPUE_IRS) +
T_c_div * NOSCORP_IRS )
/( (1 - LABOR_SHARE_CORP)*NOSPUE_IRS + NOSCORP_IRS  )  ]
# Using average marginal tax rate from the 80's in Barro
# tableDATA = tableDATA[, T_K_all_nopp:= (.3 * ((1 - LABOR_SHARE_CORP)*NOSPUE_IRS) +
#                                           T_c_div * NOSCORP_IRS )
#                       /( (1 - LABOR_SHARE_CORP)*NOSPUE_IRS + NOSCORP_IRS  )  ]
data_c_Div = tableDATA[ !(is.na(T_c_div)), ]
data_T_k_pp = tableDATA[ !(is.na(T_K_taxbase_pp)), ]
data_T_cn = tableDATA[ !(is.na(T_K_corp_net)), ]
data_T_k_all = tableDATA[ !(is.na(T_K_all_nopp)), ]
ggplot(tableDATA)+
geom_line(aes(x= Year, y=  T_c_div , colour = "T_c_div"), size = 2)+
geom_line(aes(x= Year, y=  T_K_taxbase_pp , colour = "T_pp"), size = 2)+
geom_line(aes(x= Year, y=  T_K_corp_net , colour = "T_cn"), size = 2)+
geom_line(aes(x= Year, y=  T_K_all_nopp , colour = "T_k_all"), size = 2)+
geom_hline(yintercept=0, linetype="dashed", color = "black")+
labs( y = "Average tax rate")+
scale_color_manual(
name = "",
values = c("blue", "forestgreen", "darkorange", "red"),
breaks = c("T_c_div",
"T_pp",
"T_cn",
"T_k_all"),
labels = c(expression("Capital tax, dividends " ~ tau ^ "div" ),
expression("Capital tax, old all, "~ tau ^ "c,pp"),
expression("Capital tax, corp., "~ tau ^ c),
expression("Capital tax, all new, "~ tau ^ "k,all")))+
theme_bw()+
mytheme
mean(xi_S_inc_ST, na.rm = T)
