Zero Interest Policy and the Tech Job Boom¶

Low interest rates (2010-2022) drove massive capital into venture funding → startups hired aggressively → tech salaries surged → bubble dynamics formed → rate hikes triggered correction.

In [1]:
import pandas as pd
import matplotlib.pyplot as plt
from urllib.request import Request, urlopen
import io
In [2]:
df_fed = pd.read_csv('FEDFUNDS.csv')
df_tech = pd.read_csv('CES6054150001.csv')
In [3]:
df_fed["observation_date"] = pd.to_datetime(df_fed["observation_date"])
df_tech["observation_date"] = pd.to_datetime(df_tech["observation_date"])

df = pd.merge(
    df_fed,
    df_tech,
    on="observation_date",
    how="inner"
)

df["Fed Funds Rate"] = (
    (df["FEDFUNDS"] - df["FEDFUNDS"].min()) /
    (df["FEDFUNDS"].max() - df["FEDFUNDS"].min())
)

df["Tech Employment"] = (
    (df["CES6054150001"] - df["CES6054150001"].min()) /
    (df["CES6054150001"].max() - df["CES6054150001"].min())
)

# Plot
plt.figure(figsize=(16,7))

plt.plot(
    df["observation_date"],
    df["Fed Funds Rate"],
    linewidth=2.5,
    color="firebrick",
    label="Federal Funds Rate (Normalized)"
)

plt.plot(
    df["observation_date"],
    df["Tech Employment"],
    linewidth=2.5,
    color="steelblue",
    label="Tech Employment (Normalized)"
)


plt.axvspan(
    pd.Timestamp("2008-12-01"),
    pd.Timestamp("2015-12-01"),
    color="gold",
    alpha=0.20,
    label="ZIRP (Dec 2008 – Dec 2015)"
)


plt.axvspan(
    pd.Timestamp("2020-03-01"),
    pd.Timestamp("2022-03-01"),
    color="green",
    alpha=0.15,
    label="COVID ZIRP (Mar 2020 – Mar 2022)"
)

# ----------------------------
# Key Events
# ----------------------------

events = {
    "Dot-com Bust": "2001-03-01",
    "Lehman\nCollapse": "2008-09-01",
    "Liftoff\n2015": "2015-12-01",
    "COVID": "2020-03-01",
    "Rate Hikes": "2022-03-01",
}

for label, date in events.items():
    d = pd.Timestamp(date)
    plt.axvline(d, color="gray", linestyle="--", alpha=0.6)
    plt.text(
        d,
        1.02,
        label,
        rotation=90,
        fontsize=9,
        ha="center",
        va="bottom"
    )

plt.title(
    "Federal Funds Rate vs Tech Employment (Normalized)\n"
    "Key Monetary Policy Regimes",
    fontsize=16,
    weight="bold"
)

plt.xlabel("Year")
plt.ylabel("Normalized Value")
plt.grid(True, alpha=0.3)

plt.legend(
    loc="upper left",
    frameon=True,
    fontsize=10
)

plt.tight_layout()
plt.show()
No description has been provided for this image