How much UBI spending should go to children?

By Nate Golden and Will Fedder, 2021-01-20

While the idea of a universal basic income has been around for centuries, it was recently brought into mainstream American political discourse by 2020 Presidential candidate Andrew Yang. Yang centered his campaign around paying every adult citizen $1,000 each month. Many other countries take the opposite approach, providing monthly “child allowance” payments for each child, an approach now favored by many US lawmakers. Here we explore which mix of these two approaches reduces poverty and inequality most effectively.

In a July 2020 post, we found that a child allowance would be more effective at reducing poverty than an adult UBI, for spending levels up to $500 billion, at which point a UBI for both children and adults before more effective; adult-only UBI was never the best option. But those three options—adults only, kids only, and equal for adults and kids—aren’t the only ones available. In this post, we calculate the optimal ratios of adult to child UBIs, depending on the total spending and objective.

import numpy as np
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go

# Turn off display bar
CONFIG = {"displayModeBar": False}

# Define UBI Center colors
BLUE = "#1976D2"
DARK_BLUE = "#1565C0"
LIGHT_BLUE = "#90CAF9"
GRAY = "#BDBDBD"
BARELY_BLUE = "#E3F2FD"

july_post = pd.read_csv("https://github.com/ngpsu22/blog/raw/master/july_2020.csv")

colors = {0: DARK_BLUE, 1: LIGHT_BLUE, 2: GRAY}

fig = px.line(
    july_post,
    x="spending_in_billions",
    y="poverty_rate",
    color="ubi_type",
    color_discrete_map={
        "Child allowance": DARK_BLUE,
        "Adult UBI": LIGHT_BLUE,
        "All UBI": GRAY,
    },
)
fig.update_layout(
    title="Overall poverty rate and spending on cash transfer programs",
    xaxis_title="Spending in billions",
    yaxis_title="SPM poverty rate",
    yaxis_ticksuffix="%",
    font=dict(family="Roboto"),
    hovermode="x",
    xaxis_tickprefix="$",
    xaxis_ticksuffix="B",
    plot_bgcolor="white",
    legend_title_text="",
)

fig.update_traces(mode="markers+lines", hovertemplate=None)

fig.show(config=CONFIG)