Gross capital formation (annual % growth)

Source: worldbank.org, 03.09.2025

Year: 2024

Flag Country Value Value change, % Rank
Angola Angola 7.22 -237% 42
Argentina Argentina -17.8 -2,680% 120
Armenia Armenia 11.4 +93.2% 23
Australia Australia 1.87 76
Austria Austria -7.41 -43% 110
Belgium Belgium -3.01 -288% 98
Benin Benin 10.5 -32.9% 26
Burkina Faso Burkina Faso 20 +62.4% 12
Bangladesh Bangladesh 3.27 +47.7% 62
Bulgaria Bulgaria 4.07 -132% 57
Bahamas Bahamas 19.8 +251% 13
Bosnia & Herzegovina Bosnia & Herzegovina 13.6 +561% 20
Belarus Belarus 7.22 -54% 43
Bermuda Bermuda 3.72 -253% 59
Brazil Brazil 10.8 -232% 25
Brunei Brunei -2.35 -1,201% 92
Botswana Botswana 14.6 -24.3% 18
Central African Republic Central African Republic 22.6 -1,578% 7
Canada Canada -1.99 -65.2% 91
Switzerland Switzerland 2.41 -32.9% 70
Chile Chile 1.02 -124% 80
China China 3.14 -8.5% 65
Côte d’Ivoire Côte d’Ivoire 9.32 -23.3% 30
Cameroon Cameroon 22.2 +392% 9
Congo - Kinshasa Congo - Kinshasa 19.1 -84% 14
Colombia Colombia 7.59 -147% 40
Comoros Comoros 3.09 +24.6% 66
Cape Verde Cape Verde 1.22 -56.4% 78
Costa Rica Costa Rica 9.64 -804% 29
Cyprus Cyprus -9.5 -243% 114
Czechia Czechia -4.27 -33.6% 101
Germany Germany -2.54 +237% 94
Djibouti Djibouti 43.4 -253% 2
Denmark Denmark -1.77 -86.5% 90
Dominican Republic Dominican Republic 2.56 +87.1% 69
Ecuador Ecuador -5.41 +18.3% 104
Egypt Egypt -6.14 -63.8% 107
Spain Spain 1.85 -217% 77
Estonia Estonia -2.67 -21.4% 96
Ethiopia Ethiopia 7.21 +33.8% 44
Finland Finland -4.75 -73.3% 103
France France -3.29 +151% 99
Gabon Gabon 7.61 +22.9% 39
United Kingdom United Kingdom 7.97 -308% 37
Georgia Georgia 2.19 -88.8% 73
Ghana Ghana 13 -147% 21
Guinea Guinea 47.9 -30.5% 1
Gambia Gambia 7.12 -6.9% 45
Guinea-Bissau Guinea-Bissau 34.7 -350% 3
Equatorial Guinea Equatorial Guinea -1.47 -116% 89
Greece Greece 23.1 +2,630% 6
Guatemala Guatemala 6.9 -28.8% 46
Honduras Honduras 15.3 -191% 17
Croatia Croatia 9.02 -237% 32
Haiti Haiti -36.3 +106% 123
Hungary Hungary -6.47 -61.4% 108
Indonesia Indonesia 7.47 +43.6% 41
India India 5.84 -44.5% 52
Ireland Ireland -33.8 -514% 122
Iran Iran 5.91 +329% 50
Iraq Iraq 14.4 -144% 19
Iceland Iceland 5.2 -19.2% 55
Israel Israel -9.43 +139% 113
Italy Italy -0.22 -81.6% 85
Kenya Kenya 2.19 -140% 74
Cambodia Cambodia 1.04 -396% 79
Libya Libya -8.36 -21.7% 111
Sri Lanka Sri Lanka 21.1 -469% 11
Lithuania Lithuania 3.21 -173% 63
Luxembourg Luxembourg -8.37 +683% 112
Latvia Latvia -11.7 -171% 116
Macao SAR China Macao SAR China 3.69 -83.6% 60
Morocco Morocco 11.2 +669% 24
Moldova Moldova -3.47 -68.9% 100
Madagascar Madagascar 9.02 -208% 31
Mexico Mexico 3.21 -79.4% 64
North Macedonia North Macedonia 8.88 -191% 33
Mali Mali 0.27 -73.1% 83
Malta Malta 2.39 -115% 71
Montenegro Montenegro 6.27 +155% 48
Mongolia Mongolia 22.2 -750% 10
Mozambique Mozambique 26.7 -162% 5
Malaysia Malaysia 6.02 +6.65% 49
Namibia Namibia -5.9 -111% 105
Niger Niger 3.54 -174% 61
Nicaragua Nicaragua 28.7 +83.6% 4
Netherlands Netherlands -2.83 -68.9% 97
Norway Norway -4.4 +17.6% 102
Nepal Nepal 0.494 -103% 81
Pakistan Pakistan -2.64 -80.6% 95
Peru Peru 8.71 -186% 35
Philippines Philippines 7.69 +22.2% 38
Poland Poland 3.96 -124% 58
Portugal Portugal 2.31 +14.2% 72
Paraguay Paraguay 11.9 -159% 22
Palestinian Territories Palestinian Territories -30 +826% 121
Romania Romania -0.489 -82.8% 87
Russia Russia 2.1 -89.4% 75
Rwanda Rwanda 16 -9,012% 16
Saudi Arabia Saudi Arabia -0.228 -104% 86
Sudan Sudan -15 -25% 117
Senegal Senegal -16.7 -672% 119
Singapore Singapore 10.1 -180% 27
Sierra Leone Sierra Leone 22.4 -49.4% 8
El Salvador El Salvador -0.868 -37.3% 88
Somalia Somalia 9.79 +13% 28
Serbia Serbia 16.2 +276% 15
Slovakia Slovakia 6.8 -158% 47
Slovenia Slovenia -2.37 -15.9% 93
Sweden Sweden 0.247 -104% 84
Seychelles Seychelles -16.7 -194% 118
Chad Chad 2.97 -29.6% 67
Togo Togo 2.66 -81% 68
Tunisia Tunisia 8.03 -148% 36
Tanzania Tanzania 5.58 -8.07% 53
Uganda Uganda 5.56 +43.4% 54
Ukraine Ukraine 8.88 -81.5% 34
Uruguay Uruguay -7.12 +759% 109
United States United States 4.53 -984% 56
Samoa Samoa -6.04 -139% 106
Kosovo Kosovo 5.91 +67.7% 51
South Africa South Africa -9.75 +3,533% 115
Zimbabwe Zimbabwe 0.485 -97.3% 82

Gross capital formation (GCF) is a crucial economic indicator that measures the net increase in physical assets within an economy over a given period. Specifically, it is defined as the total value of gross fixed capital formation and acquisitions of physical assets minus disposals of physical assets. The annual percentage growth of GCF indicates how quickly an economy is investing in productive capabilities, providing insight into future economic performance.

The importance of GCF cannot be overstated. It is a leading indicator of economic health, as higher levels of investment typically lead to economic growth, job creation, and improved living standards. When GCF rises, it often signals that businesses are confident in the economy's prospects, prompting them to invest in new projects, equipment, and infrastructure. A growing GCF can lead to increased productivity as new technologies are adopted and older equipment is replaced.

Understanding GCF's relationship with other economic indicators is vital for comprehensive economic analysis. GCF is closely linked with GDP growth, as investment is a crucial component of GDP. An increase in GCF usually corresponds with an increase in GDP, while a decline can signal economic trouble. GCF also interacts with indicators such as private consumption, government spending, and net exports. For instance, if the government invests in infrastructure, it may indirectly boost private sector confidence, resulting in higher consumption and business investments.

Several factors influence gross capital formation. Economic stability, policy frameworks, interest rates, and access to credit are notable determinants. For instance, low-interest rates can encourage borrowing for investment, while high rates might deter it. Furthermore, government policies that support infrastructure development, such as tax incentives for businesses, can drive up GCF. Political stability is also a major factor; investors are generally more willing to invest in countries where the political environment is stable and predictable, as it reduces the perceived risk associated with their investments.

Strategies to enhance GCF in an economy may include fostering a stable investment climate through regulatory reforms, improving access to credit, and incentivizing domestic and foreign investments. Countries can also invest in education and training to create a more skilled workforce, further attracting investments. Moreover, governments should prioritize infrastructure projects that can generate immediate jobs and drive longer-term economic growth.

While GCF provides valuable insights, it is not without its flaws. Data collection can be inconsistent, especially in developing nations where informal economies may hinder accurate accounting. Moreover, GCF does not account for the depreciation of capital stock, meaning that a high GCF does not automatically correlate with improved economic welfare. For example, if an economy is heavily investing in capital formation but also experiencing a significant level of depreciation, the net investment might not be as strong as it appears. Moreover, GCF does not reflect the quality of investments; an economy might be pouring resources into industries that do not yield sustainable growth.

In the context of new data for 2023, the median value of gross capital formation growth is reported at 0.63%. This relatively modest growth suggests that global investments are not booming but have stabilized somewhat. Among the top five areas showcasing remarkable GCF growth are Djibouti at an astonishing 104.26%, Congo - Kinshasa at 97.69%, and Chad at 56.52%. These figures indicate aggressive investments likely influenced by a combination of foreign aid, natural resource exploitation, and government initiatives aimed at developing infrastructure. Such high levels can be seen as indicators of rapidly growing economies, but they also raise questions regarding sustainability and the nature of the investments made.

Conversely, the bottom five areas are experiencing significant declines in GCF: Puerto Rico at -55.78%, Mozambique at -43.02%, and the Marshall Islands at -27.56%. These declines can stem from various issues, including political instability, economic mismanagement, or external pressures such as natural disasters or trade embargoes. For instance, Puerto Rico has been grappling with economic challenges and recovery from past crises that significantly affect such investments.

When examining the world values of GCF from 1996 to 2023, a fluctuating trend is visible. The data reveals particularly low points in the late 1990s and the aftermath of the 2008 financial crisis, where GCF dipped into negatives. The recovery seen post-2010 signifies an overall upward trend in the past decade, culminating in the latest figures for 2022 and 2023 showing a slight recovery to 1.18%. However, it implies an ongoing challenge to stimulate robust investment levels as economies recover from recent global uncertainties, such as the COVID-19 pandemic.

In conclusion, gross capital formation is an essential indicator for assessing economic vitality. It serves as a window into investment trends within a country and showcases the challenges and opportunities that economies face. Understanding its nuances allows policymakers, businesses, and economists to devise strategies that foster sustainable economic growth, leveraging the investment potential to drive comprehensive societal benefits.

                    
# 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.TOTL.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.TOTL.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))