Spending Trends

Federal Contract Market Concentration Trends

Federal Contract Market Concentration Trends shows how federal contract spending changes across the visible time series in FPDS-derived procurement data.

The latest visible point is 2025 at 81. Across the visible range, the series changed by -99.19%.

Federal Contract Spending Spending Trends Spending Series Series

Updated 03/20/2026

Latest Period
2025
81
Visible Change
-99.19%
-9.92K
Peak Period
1962
10K
Trend Direction
Down
Strong

Analysis

The latest visible point is 2025 at 81. Across the visible range, the series changed by -99.19%.

Why it matters: Use this page to evaluate how federal contract spending levels shift over time and identify inflection points.

Methodology: The query returns a structured time series, detects a period column and a primary numeric metric, and computes visible-series statistics such as latest value, peak, low, and overall change.

Commentary

Federal Contract Market Concentration Trends tracks federal contract spending over time in FPDS-derived data.

Key takeaway: The latest visible point is 2025 at 81. Overall visible change is -99.19%.

Analyst note: This page is best used for directional review, turning points, and quick comparison against related time windows or scopes.

Trend Chart

This chart plots Federal Contract Spending over the visible time series returned by the query.

Query Used

-- Federal Contract Market Concentration Trends
-- Measures annual market concentration using HHI based on contractor share of obligated dollars
SELECT
    fiscal_year,
    round(sum(spend_share * spend_share) * 10000, 2) AS hhi,
    count() AS vendor_count,
    round(max(spend_share) * 100, 2) AS top_vendor_share_pct,
    round(sumIf(spend_share, vendor_rank <= 4) * 100, 2) AS top_4_share_pct,
    round(sumIf(spend_share, vendor_rank <= 10) * 100, 2) AS top_10_share_pct
FROM
(
    SELECT
        fiscal_year,
        vendor_name,
        vendor_spending,
        vendor_spending / sum(vendor_spending) OVER (PARTITION BY fiscal_year) AS spend_share,
        row_number() OVER (
            PARTITION BY fiscal_year
            ORDER BY vendor_spending DESC, vendor_name ASC
        ) AS vendor_rank
    FROM
    (
        SELECT
            if(
                toUInt8(substring(content__award__relevantContractDates__signedDate, 6, 2)) >= 10,
                toUInt16(substring(content__award__relevantContractDates__signedDate, 1, 4)) + 1,
                toUInt16(substring(content__award__relevantContractDates__signedDate, 1, 4))
            ) AS fiscal_year,
            content__award__vendor__vendorHeader__vendorName AS vendor_name,
            sum(content__award__dollarValues__obligatedAmount) AS vendor_spending
        FROM fpds.data
        WHERE
            contract_type = 1
            AND content__award__relevantContractDates__signedDate != ''
            AND content__award__vendor__vendorHeader__vendorName IS NOT NULL
            AND content__award__vendor__vendorHeader__vendorName != ''
        GROUP BY
            fiscal_year,
            vendor_name
    )
)
WHERE fiscal_year < toYear(today())
GROUP BY fiscal_year
ORDER BY fiscal_year ASC

Trend Table

This table shows the structured time series returned by the query.

Fiscal Year Hhi Vendor Count Top Vendor Share Pct Top 4 Share Pct Top 10 Share Pct
1962 10,000.00 1 100 100 100
1965 10,000.00 1 100 100 100
1967 6,525.00 2 78 99 99
1970 10,000.00 1 100 100 100
1972 10,000.00 1 100 100 100
1974 9,041.00 2 95 99 99
1976 5,892.00 30 74 98 98
1977 6,305.00 6 78 97 97
1978 3,814.00 21 54 93 96
1979 236.00 19256 10 27 41
1980 82.00 21065 4 14 25
1981 83.00 22841 4 15 25
1982 86.00 22704 6 14 22
1983 85.00 14370 5 14 25
1984 75.00 19017 5 14 22
1985 294.00 10302 13 29 37
1986 91.00 14691 7 15 23
1987 64.00 55641 4 12 22
1988 321.00 13853 11 34 39
1989 27.00 71845 3 8 14
1990 16.00 83930 2 6 12
1991 31.00 88370 3 9 16
1992 23.00 96638 2 7 13
1993 21.00 88577 3 7 13
1994 58.00 87489 6 13 18
1995 18.00 84550 2 7 12
1996 58.00 87412 6 13 14
1997 35.00 80626 5 10 11
1998 46.00 61845 6 10 14
1999 44.00 64263 6 10 12
2000 43.00 68834 6 10 11
2001 49.00 73804 6 11 15
2002 32.00 88194 5 9 10
2003 49.00 132819 6 11 15
2004 36.00 170048 5 10 12
2005 21.00 222320 4 7 9
2006 30.00 228192 5 8 10
2007 29.00 214948 5 8 9
2008 26.00 246337 4 8 12
2009 28.00 211828 4 8 10
2010 23.00 205895 4 8 9
2011 32.00 196347 5 9 10
2012 37.00 175357 5 10 13
2013 59.00 155762 7 11 15
2014 38.00 148796 5 10 14
2015 48.00 145928 6 11 14
2016 69.00 143424 7 14 17
2017 77.00 149602 8 13 17
2018 59.00 129755 6 13 17
2019 66.00 118931 7 13 18
2020 114.00 115517 10 15 20
2021 45.00 109394 5 11 17
2022 54.00 106225 6 12 18
2023 83.00 111459 8 14 20
2024 43.00 111561 5 11 17
2025 81.00 104272 8 14 19

How This Trend Is Built

Measure how a selected procurement metric changes across time.

Query structure

  • The query selects a time dimension used as the x-axis for the trend.
  • It calculates or returns a numeric metric for each visible period.
  • The result is interpreted as a chronological series for trend analysis.
  • The metric focuses on obligated dollars or a directly related spending aggregate.

Included fields

  • fiscal_year — Defines the chronological unit used for the trend series.
  • hhi — Defines the main value plotted and analyzed over time.
  • vendor_count — Provides additional numeric context that can support interpretation.
  • top_vendor_share_pct — Provides additional numeric context that can support interpretation.
  • top_4_share_pct — Provides additional numeric context that can support interpretation.
  • top_10_share_pct — Provides additional numeric context that can support interpretation.

How to use this trend

  • trend direction analysis
  • time-series review
  • federal procurement timing analysis
  • spending trajectory review
  • budget pattern review

Computed Metrics

Series Points
56
First Visible Point
1962
10K
Mean
1,332.89
Median
58.00
Max
10,000.00
1962
Min
16.00
1990
Volatility
3,030.27
3.03K
Rows Returned
56

Series Extremes

Largest Increase
3.48K
1967 → 1970 · 53.26%
Largest Decrease
-3.58K
1978 → 1979 · -93.81%

Related Pages

Method Notes

  • Trend interpretation is based on the returned query result set ordered by the detected period column.
  • Change metrics compare the first visible point and the latest visible point in the series.
  • Volatility is based on the standard deviation of the visible numeric series.

Use FPDS Query for deeper trend analysis

Go beyond the published time series with custom SQL, broader filters, saved queries, and deeper procurement analysis across agencies, vendors, industries, states, contract structures, and competitive segments.

Continue from this trend page into full FPDS Query workflows with deeper filtering, custom SQL, saved queries, and broader market comparison.