Gross fixed capital formation (annual % growth)

Source: worldbank.org, 03.09.2025

Year: 2024

Flag Country Value Value change, % Rank
Angola Angola 7.22 -237% 32
Albania Albania 4.34 +316% 53
Argentina Argentina -17.4 +772% 120
Armenia Armenia 11.1 +9.9% 16
Australia Australia 4.51 +78.5% 50
Austria Austria -3.43 +6.92% 103
Belgium Belgium 1.43 -58.9% 80
Benin Benin 10.6 -32.7% 17
Burkina Faso Burkina Faso 3.41 +22.5% 58
Bangladesh Bangladesh 3.27 +47.7% 61
Bulgaria Bulgaria -1.12 -111% 91
Bahamas Bahamas 20.7 +215% 6
Belarus Belarus 7.79 -54.6% 28
Bermuda Bermuda 3.72 -253% 56
Brazil Brazil 7.29 -345% 31
Brunei Brunei -2.38 -1,264% 100
Botswana Botswana 5.06 +21.7% 44
Central African Republic Central African Republic 23 -1,730% 4
Canada Canada 0.109 -107% 84
Switzerland Switzerland -0.956 -946% 89
Chile Chile -1.45 +2,608% 96
Côte d’Ivoire Côte d’Ivoire 10.5 +23.3% 18
Cameroon Cameroon 10 +141% 19
Congo - Kinshasa Congo - Kinshasa 18.8 -84.3% 9
Congo - Brazzaville Congo - Brazzaville 5.6 -34.9% 40
Colombia Colombia 2.98 -123% 62
Comoros Comoros 3.35 +6.32% 59
Costa Rica Costa Rica 4.29 -50.1% 54
Cyprus Cyprus 0.0887 -99.2% 85
Czechia Czechia -1.16 -146% 92
Germany Germany -2.7 +124% 101
Djibouti Djibouti 9.39 -214% 22
Denmark Denmark 2.67 -140% 69
Dominican Republic Dominican Republic 2.87 +40.5% 67
Ecuador Ecuador -3.8 -1,790% 107
Egypt Egypt -6.55 -60.6% 110
Spain Spain 2.98 +39.4% 63
Estonia Estonia -6.93 -193% 112
Ethiopia Ethiopia 7.21 +33.8% 33
Finland Finland -7.09 -3.9% 113
France France -1.29 -431% 94
Gabon Gabon 7.61 +22.9% 29
United Kingdom United Kingdom 1.45 +360% 79
Georgia Georgia 15 -48.9% 12
Ghana Ghana 13.8 -148% 13
Guinea Guinea 45.6 -28.3% 1
Gambia Gambia 7.12 -6.9% 34
Guinea-Bissau Guinea-Bissau 9.31 +31.1% 23
Equatorial Guinea Equatorial Guinea -1.98 -118% 98
Greece Greece 4.5 -31.4% 51
Guatemala Guatemala 4.8 -39.3% 45
Hong Kong SAR China Hong Kong SAR China 2.42 -78.8% 71
Honduras Honduras 6.16 -45.2% 37
Croatia Croatia 9.9 -2.42% 20
Haiti Haiti -36.3 +106% 123
Hungary Hungary -11.1 +44.1% 117
Indonesia Indonesia 4.61 +22.7% 48
India India 6.13 -30.1% 38
Ireland Ireland -25.4 -1,009% 121
Iran Iran 1.86 -74.2% 76
Iraq Iraq 26.6 -409% 3
Iceland Iceland 7.46 +74.9% 30
Israel Israel -6.11 +245% 108
Italy Italy 0.519 -94.2% 82
Kenya Kenya 2.08 +8.57% 73
Cambodia Cambodia 0.933 -302% 81
Libya Libya -8.36 -21.7% 116
Sri Lanka Sri Lanka 19.4 -312% 8
Lithuania Lithuania -1.25 -114% 93
Luxembourg Luxembourg -7.25 +13.8% 114
Latvia Latvia -6.71 -168% 111
Macao SAR China Macao SAR China 4.61 -76.9% 49
Moldova Moldova 7.96 -21,749% 27
Madagascar Madagascar 17.5 +431% 10
Mexico Mexico 3.31 -80.1% 60
Mali Mali 4.8 +60% 46
Malta Malta 2.41 -114% 72
Montenegro Montenegro 9.3 +35.1% 24
Mongolia Mongolia 19.7 +270% 7
Mauritius Mauritius 8.27 -18.1% 26
Malaysia Malaysia 12 +120% 15
Namibia Namibia -7.9 -111% 115
Niger Niger -0.879 -106% 88
Nicaragua Nicaragua 17.3 +32.5% 11
Netherlands Netherlands -0.519 -140% 87
Norway Norway -1.91 +23.5% 97
Nepal Nepal 1.96 -112% 75
Pakistan Pakistan -3.62 -76.7% 104
Peru Peru 5.22 -195% 43
Philippines Philippines 6.32 -23% 36
Poland Poland -2.24 -118% 99
Portugal Portugal 2.96 -17.6% 65
Paraguay Paraguay 8.33 -401% 25
Palestinian Territories Palestinian Territories -30.7 +812% 122
Romania Romania -3.27 -122% 102
Russia Russia 6 -23.1% 39
Rwanda Rwanda 13.2 +10.5% 14
Saudi Arabia Saudi Arabia 1.56 -83.3% 78
Sudan Sudan -15 -25% 118
Senegal Senegal 2.79 -69.9% 68
Singapore Singapore 2.94 -424% 66
Sierra Leone Sierra Leone 21.8 +69.7% 5
El Salvador El Salvador 4.67 -50.4% 47
Somalia Somalia 9.79 +13% 21
Serbia Serbia 6.52 -32.8% 35
Slovakia Slovakia 1.85 -53.7% 77
Slovenia Slovenia -3.74 -197% 106
Sweden Sweden -1.08 -26.3% 90
Seychelles Seychelles -16.7 -194% 119
Chad Chad 2.97 -29.6% 64
Togo Togo 2.65 -81% 70
Thailand Thailand -0.0221 -102% 86
Tunisia Tunisia 2 -126% 74
Turkey Turkey 3.87 -53.7% 55
Tanzania Tanzania 5.28 -7.77% 42
Uganda Uganda 5.54 +49.5% 41
Ukraine Ukraine 3.53 -94.6% 57
Uruguay Uruguay -1.33 -76.7% 95
United States United States 4.43 +261% 52
Uzbekistan Uzbekistan 27.6 +18% 2
Samoa Samoa -6.14 -137% 109
South Africa South Africa -3.69 -196% 105
Zimbabwe Zimbabwe 0.48 -96.7% 83

Gross Fixed Capital Formation (GFCF) is a crucial economic indicator that measures the net increase in physical assets within an economy over a specified period, typically one year. Expressed as a percentage growth rate, GFCF provides insights into how an economy is investing in its long-term productive capacity, including expenditures on fixed assets such as buildings, machinery, and infrastructure. This indicator is pivotal for understanding the health of an economy, as it reflects the confidence that businesses and the government have in future economic prospects.

GFCF is essential for several reasons. Primarily, it signals the level of investment that businesses and governments are making to enhance future output and productivity. High levels of GFCF can indicate a robust economy where businesses are expanding and investing in technology and infrastructure, which typically leads to job creation and economic growth. Conversely, low or negative growth in GFCF can indicate economic stagnation or decline, highlighting potential economic challenges ahead.

The importance of GFCF becomes more pronounced when we examine its relationship with other economic indicators. For instance, it is closely linked to GDP growth; a rise in GFCF often correlates with increased GDP, as higher capital investments contribute to more productive activities. Similarly, GFCF can influence labor market dynamics, as increased investment usually leads to job creation and reduced unemployment rates. Inflation rates can also be impacted by GFCF; while investments can drive economic growth, an excessive increase in GFCF could lead to overheating of the economy and inflationary pressures.

Several factors influence GFCF in an economy. Interest rates play a significant role; lower interest rates reduce the cost of financing investments, making it more appealing for businesses to borrow for capital projects. Government policies also impact GFCF through fiscal incentives, tax breaks, or direct investment in infrastructure. Economic stability and market confidence are crucial; uncertainty in political, economic, or social landscapes can deter investment, leading to reduced GFCF. Additionally, technological advancements encourage corporations to invest in cutting-edge technologies, facilitating GFCF growth.

Addressing the challenges related to GFCF growth requires a combination of strategies and solutions. Policymakers can stimulate GFCF by implementing favorable tax policies and providing incentives for investment in critical sectors. Governments can also prioritize infrastructure projects that have broad economic benefits, fostering a conducive environment for private sector investment. Improved access to financing for small and medium enterprises (SMEs) can further enhance GFCF, as these businesses play a vital role in driving innovation and growth. Lastly, fostering a stable political environment can bolster investor confidence, encouraging capital inflow and, subsequently, higher GFCF.

However, several flaws or challenges may arise regarding the interpretation and reliability of GFCF data. For instance, while GFCF can provide a snapshot of investment activity, it does not account for the quality of investments or their long-term sustainability. High GFCF figures can be misleading if accompanied by low productivity gains or environmental degradation. Additionally, the measurement of GFCF might differ from one country to another due to variations in accounting practices, which may result in inconsistencies in international comparisons.

Looking into the specific 2023 statistics, the global median growth rate for GFCF stands at 4.28%, suggesting a relatively healthy investment climate. However, the range of values globally reveals disparities in economic performance and investment confidence. For example, the top five areas, including Congo - Kinshasa (a staggering 97.95%), Namibia (69.31%), and Chad (62.8%), exhibit extraordinary investment growth, potentially buoyed by specific resources or post-conflict recovery periods. Such high rates of GFCF growth in these countries may reflect a combination of factors, including new resource discoveries, increased foreign investments, or significant government-led infrastructure initiatives aimed at rebuilding and modernizing.

On the other hand, the bottom five areas reveal concerning declines in GFCF: Egypt (-21.71%), Sudan (-20.0%), Malta (-18.19%), Haiti (-17.63%), and the Marshall Islands (-17.19%). These figures suggest severe economic challenges that could stem from political instability, inadequate infrastructure, or insufficient foreign direct investment, leading to a contraction in productive capacity. Such declines indicate not only a lack of investment but also potential structural issues within their economies that warrant immediate attention.

The historical trajectory of GFCF shows fluctuations influenced by global economic conditions. The data from 1988 to 2023 reflects this variability, with peaks and troughs in GFCF growth, often tied to broader economic events. For instance, the sharp decline to -9.14% in 2009 corresponds with the global financial crisis, illustrating how external economic shocks can dramatically affect capital investments. The recovery to growth rates of 6.59% in 2021 following the pandemic highlights the resilience of economies as they adjust and respond to changing conditions.

In conclusion, Gross Fixed Capital Formation is a vital indicator of economic health and future growth potential. Understanding its importance, relationships with other economic metrics, affecting factors, and strategic solutions can help societies strengthen their economies. The disparities in GFCF growth among different nations, as seen in the latest data, tell a story of challenges and opportunities that require nuanced approaches tailored to each country's unique context.

                    
# Install missing packages
import sys
import subprocess

def install(package):
subprocess.check_call([sys.executable, "-m", "pip", "install", package])

# Required packages
for package in ['wbdata', 'country_converter']:
try:
__import__(package)
except ImportError:
install(package)

# Import libraries
import wbdata
import country_converter as coco
from datetime import datetime

# Define World Bank indicator code
dataset_code = 'NE.GDI.FTOT.KD.ZG'

# Download data from World Bank API
data = wbdata.get_dataframe({dataset_code: 'value'},
date=(datetime(1960, 1, 1), datetime.today()),
parse_dates=True,
keep_levels=True).reset_index()

# Extract year
data['year'] = data['date'].dt.year

# Convert country names to ISO codes using country_converter
cc = coco.CountryConverter()
data['iso2c'] = cc.convert(names=data['country'], to='ISO2', not_found=None)
data['iso3c'] = cc.convert(names=data['country'], to='ISO3', not_found=None)

# Filter out rows where ISO codes could not be matched — likely not real countries
data = data[data['iso2c'].notna() & data['iso3c'].notna()]

# Sort for calculation
data = data.sort_values(['iso3c', 'year'])

# Calculate YoY absolute and percent change
data['value_change'] = data.groupby('iso3c')['value'].diff()
data['value_change_percent'] = data.groupby('iso3c')['value'].pct_change() * 100

# Calculate ranks (higher GDP per capita = better rank)
data['rank'] = data.groupby('year')['value'].rank(ascending=False, method='dense')

# Calculate rank change from previous year
data['rank_change'] = data.groupby('iso3c')['rank'].diff()

# Select desired columns
final_df = data[['country', 'iso2c', 'iso3c', 'year', 'value',
'value_change', 'value_change_percent', 'rank', 'rank_change']].copy()

# Optional: Add labels as metadata (could be useful for export or UI)
column_labels = {
'country': 'Country name',
'iso2c': 'ISO 2-letter country code',
'iso3c': 'ISO 3-letter country code',
'year': 'Year',
'value': 'GDP per capita (current US$)',
'value_change': 'Year-over-Year change in value',
'value_change_percent': 'Year-over-Year percent change in value',
'rank': 'Country rank by GDP per capita (higher = richer)',
'rank_change': 'Change in rank from previous year'
}

# Display first few rows
print(final_df.head(10))

# Optional: Save to CSV
#final_df.to_csv("gdp_per_capita_cleaned.csv", index=False)
                    
                
                    
# Check and install required packages
required_packages <- c("WDI", "countrycode", "dplyr")

for (pkg in required_packages) {
  if (!requireNamespace(pkg, quietly = TRUE)) {
    install.packages(pkg)
  }
}

# Load the necessary libraries
library(WDI)
library(dplyr)
library(countrycode)

# Define the dataset code (World Bank indicator code)
dataset_code <- 'NE.GDI.FTOT.KD.ZG'

# Download data using WDI package
dat <- WDI(indicator = dataset_code)

# Filter only countries using 'is_country' from countrycode
# This uses iso2c to identify whether the entry is a recognized country
dat <- dat %>%
  filter(countrycode(iso2c, origin = 'iso2c', destination = 'country.name', warn = FALSE) %in%
           countrycode::codelist$country.name.en)

# Ensure dataset is ordered by country and year
dat <- dat %>%
  arrange(iso3c, year)

# Rename the dataset_code column to "value" for easier manipulation
dat <- dat %>%
  rename(value = !!dataset_code)

# Calculate year-over-year (YoY) change and percentage change
dat <- dat %>%
  group_by(iso3c) %>%
  mutate(
    value_change = value - lag(value),                              # Absolute change from previous year
    value_change_percent = 100 * (value - lag(value)) / lag(value) # Percent change from previous year
  ) %>%
  ungroup()

# Calculate rank by year (higher value => higher rank)
dat <- dat %>%
  group_by(year) %>%
  mutate(rank = dense_rank(desc(value))) %>% # Rank countries by descending value
  ungroup()

# Calculate rank change (positive = moved up, negative = moved down)
dat <- dat %>%
  group_by(iso3c) %>%
  mutate(rank_change = rank - lag(rank)) %>% # Change in rank compared to previous year
  ungroup()

# Select and reorder final columns
final_data <- dat %>%
  select(
    country,
    iso2c,
    iso3c,
    year,
    value,
    value_change,
    value_change_percent,
    rank,
    rank_change
  )

# Add labels (variable descriptions)
attr(final_data$country, "label") <- "Country name"
attr(final_data$iso2c, "label") <- "ISO 2-letter country code"
attr(final_data$iso3c, "label") <- "ISO 3-letter country code"
attr(final_data$year, "label") <- "Year"
attr(final_data$value, "label") <- "GDP per capita (current US$)"
attr(final_data$value_change, "label") <- "Year-over-Year change in value"
attr(final_data$value_change_percent, "label") <- "Year-over-Year percent change in value"
attr(final_data$rank, "label") <- "Country rank by GDP per capita (higher = richer)"
attr(final_data$rank_change, "label") <- "Change in rank from previous year"

# Print the first few rows of the final dataset
print(head(final_data, 10))