How a tax-funded UBI can improve the lives of Indigenous Americans

By Nate Golden, 2020-10-12

Indigenous People’s Day is a time to celebrate and honor Indigenous Americans, while also recognizing the history of discrimination, oppression, and genocide they have faced since Europeans arrived in the Americas more than 500 years ago.

For centuries, American public policy has treated Indigenous Americans as second class citizens—enforcing migration, barring citizenship, and refusing to give them the fundamental rights granted to them by the Constitution. All of this produced large economic disparities that continue to this day. Indigenous Americans are 35 percent more likely to be in poverty than non-Indigenous Americans, and their median income is a third lower. While public policy has historically been used to marginalize Indigenous Americans, it can also be used as a tool to build them up. In this paper, I examine how a tax-funded Universal Basic Income (UBI) would impact Indigenous Americans.


To conduct the simulation I used data from the Census Bureau’s Annual Social and Economic Supplement (ASEC), which reports on data from 2019. For each simulation, a UBI is given to every American of all ages and funded by a flat tax on Adjusted Gross Income (AGI). AGI includes labor and capital income, and subtracts specific deductions like half of the self-employment taxes and contributions to certain retirement accounts. Unlike taxable income, AGI does not account for most itemized deductions or the standard deduction. I assume no labor supply responses to the new taxes or income.

For each UBI amount ranging from $0 per month to $1,000 per month, I calculated the necessary tax rates (below; each $100 per month requires a 3.3 percent tax on AGI), and change in poverty rates and income distributions for both Indigenous and non-Indigenous Americans after taxes and the UBI.

# Import Libraries
import numpy as np
import pandas as pd
import microdf as mdf
import as px

# Import data
person = pd.read_csv('')

# Create Demographic Columns
person.columns = person.columns.str.lower()
person['child'] = person.age < 18
person['adult'] = person.age >= 18
person['native'] = person.race == 300
person['non_native'] = person.race != 300

# Calculate total AGI
person['adjginc'].replace({99999999: 0}, inplace=True)
population = person.asecwt.sum()
person['weighted_agi'] = person.adjginc * person.asecwt
total_agi = person.weighted_agi.sum()

# Calculate AGI tax rate per dollar of UBI
fed_tax_rate_per_dollar_ubi_monthly = (population * 12) / total_agi

# Create table showing tax amounts
tax_rates = pd.DataFrame(np.arange(0,1001, 50))
tax_rates.columns = ['monthly_ubi']

def tax(monthly_ubi):
    return (monthly_ubi * fed_tax_rate_per_dollar_ubi_monthly * 100).round(1)

def tax_row(row):
    return tax(row.monthly_ubi)

tax_rates['tax_rate'] = tax_rates.apply(tax_row, axis=1)
tax_rates.columns = ['monthly_ubi', 'tax_rate']

fig = px.line(tax_rates, x='monthly_ubi', y='tax_rate')
    title='Tax rate on AGI needed to fund each UBI level',
    xaxis_title='Monthly UBI amount',
    yaxis_title='Required tax rate on adjusted gross income',
fig.update_traces(mode='markers+lines', hovertemplate=None){'displayModeBar': False})