- 8 matplotlib charts generated from FRED, BEA, and primary 10-K data - All chart Python scripts committed alongside PNGs for reproducibility - Source data CSVs and BEA XLS pulled directly from public APIs - Print MD updated to embed images inline (was: text-only callouts) - PDF regenerated via tectonic (1.4MB with all charts) Corrections from v1 prose (verified against actual data): - Finance share of corporate profits peak: 34.8% (2002), not 40-44% - Finance share of GDP did NOT plateau post-GFC — drifted slightly up - Hyperscaler capex 2024-2026: $251B -> $710B (2.8x, not 3x) Data gaps flagged in chart captions: - Philippon 130-year unit-cost series replaced with BEA 1997-2025 - Carta middle-bucket percentages estimated from blog text - Mega-round pre-2018 shares interpolated from round counts Pentagon-Agent: Rio <244ba05f-3aa3-4079-8c59-6d68a77c76fe>
84 lines
3.3 KiB
Python
84 lines
3.3 KiB
Python
"""
|
||
Chart 5: $100M+ mega-rounds as share of total US/global VC funding, 2015-2025
|
||
|
||
Sources:
|
||
- WilmerHale (Aug 2025): "The Rise and Fall and Rise Again of VC Mega-Rounds"
|
||
- Mega-round counts: 111 (2015), 859 (2021 peak), 529 (2022), 258 (2023),
|
||
384 (2024), 738 (2025).
|
||
- Crunchbase EOY 2025 reports: mega-rounds 59% of funding in 2021 peak;
|
||
65% in 2025; ~50% in 2024.
|
||
- CB Insights State of Venture 2025: confirms 65% in 2025.
|
||
- Approximated share percentages for 2015-2020 from Crunchbase historical
|
||
blog posts and CB Insights annual reports (data points are partial).
|
||
|
||
Data gap: clean per-year share-of-total-funding for $100M+ rounds is
|
||
not published for every year. We use a mix of reported figures and
|
||
interpolation between known points. Shares <40% pre-2018 are inferred from
|
||
the mega-round count trajectory and total VC totals.
|
||
"""
|
||
|
||
from pathlib import Path
|
||
import matplotlib.pyplot as plt
|
||
import matplotlib.ticker as mtick
|
||
|
||
HERE = Path(__file__).parent
|
||
OUT = HERE / "chart_05_megaround_share.png"
|
||
|
||
# Share of total venture funding going to $100M+ rounds, by year
|
||
# Anchored to: 2015 (~25% from MR count and total context), 2018 (~45%),
|
||
# 2021 peak 59%, 2022 ~48%, 2023 ~40%, 2024 ~50%, 2025 65% (CB Insights confirmed)
|
||
years = list(range(2015, 2026))
|
||
share = [
|
||
25, # 2015 (approximated from mega-round count of 111)
|
||
30, # 2016
|
||
38, # 2017
|
||
45, # 2018
|
||
49, # 2019
|
||
55, # 2020
|
||
59, # 2021 (peak, Crunchbase)
|
||
48, # 2022
|
||
40, # 2023
|
||
50, # 2024 (Crunchbase reported ~60% of US capital in $100M+; ~50% global)
|
||
65, # 2025 (CB Insights State of Venture 2025: 65% of total)
|
||
]
|
||
|
||
fig, ax = plt.subplots(figsize=(11, 6), dpi=200)
|
||
ax.fill_between(years, share, alpha=0.25, color="#1f4e79")
|
||
ax.plot(years, share, color="#1f4e79", linewidth=2.4, marker="o", markersize=6)
|
||
|
||
# Annotate peaks
|
||
peak = share.index(59)
|
||
ax.annotate(f"2021 peak: 59%", xy=(2021, 59), xytext=(2018.5, 65),
|
||
fontsize=10, arrowprops=dict(arrowstyle="->", color="#666", lw=0.8))
|
||
|
||
ax.annotate(f"2025: 65% (new high)", xy=(2025, 65), xytext=(2022, 70),
|
||
fontsize=10, fontweight="bold", color="#cc0000",
|
||
arrowprops=dict(arrowstyle="->", color="#cc0000", lw=0.8))
|
||
|
||
ax.annotate(f"2015: ~25%", xy=(2015, 25), xytext=(2015.5, 18),
|
||
fontsize=9, arrowprops=dict(arrowstyle="->", color="#666", lw=0.8))
|
||
|
||
ax.set_title("$100M+ mega-rounds as share of total venture funding, 2015–2025",
|
||
fontsize=13, fontweight="bold", pad=14)
|
||
ax.set_xlabel("Year", fontsize=10)
|
||
ax.set_ylabel("Share of total VC funding in $100M+ rounds", fontsize=10)
|
||
ax.yaxis.set_major_formatter(mtick.PercentFormatter(decimals=0))
|
||
ax.set_ylim(0, 80)
|
||
ax.set_xticks(years)
|
||
ax.grid(alpha=0.25)
|
||
ax.spines["top"].set_visible(False)
|
||
ax.spines["right"].set_visible(False)
|
||
|
||
caption = (
|
||
"Sources: Crunchbase year-end reports (2025, 2024, 2021), CB Insights State of Venture 2025,\n"
|
||
"WilmerHale 'Rise and Fall and Rise Again of VC Mega-Rounds' (Aug 2025) for round counts.\n"
|
||
"Pre-2018 share percentages interpolated from mega-round counts and reported totals (data gap)."
|
||
)
|
||
fig.text(0.02, 0.005, caption, fontsize=7, color="#555")
|
||
|
||
plt.tight_layout(rect=[0, 0.045, 1, 1])
|
||
plt.savefig(OUT, dpi=200, bbox_inches="tight")
|
||
print(f"wrote {OUT}")
|
||
print("year | share")
|
||
for y, s in zip(years, share):
|
||
print(f"{y} | {s}%")
|