Gross savings (% of GDP)

Source: worldbank.org, 01.09.2025

Year: 2024

Flag Country Value Value change, % Rank
Angola Angola 29.9 +5.47% 13
Albania Albania 22 +0.256% 45
Argentina Argentina 15.2 -4.41% 70
Armenia Armenia 20.7 +8.94% 53
Australia Australia 23.1 -3.52% 41
Austria Austria 24.9 -6.55% 29
Azerbaijan Azerbaijan 27.4 -6.93% 22
Belgium Belgium 24 -3.11% 33
Bangladesh Bangladesh 34.4 -1.53% 8
Bulgaria Bulgaria 18.9 -8.2% 59
Bosnia & Herzegovina Bosnia & Herzegovina 21.6 -1.89% 51
Belarus Belarus 23.4 -12% 39
Brazil Brazil 14.5 -3.38% 72
Brunei Brunei 47.5 +3.64% 1
Canada Canada 21.4 -2.48% 52
Switzerland Switzerland 32.4 -1.16% 9
Chile Chile 21.8 +7.9% 47
Colombia Colombia 13.8 +9.11% 74
Cape Verde Cape Verde 19.6 +16.5% 54
Costa Rica Costa Rica 14.7 +3.03% 71
Cyprus Cyprus 10.6 -1.21% 80
Czechia Czechia 27.8 -10.2% 21
Germany Germany 27 -2.08% 23
Djibouti Djibouti 9.37 -38.3% 81
Denmark Denmark 34.7 +6.15% 6
Dominican Republic Dominican Republic 23.5 -2.66% 37
Ecuador Ecuador 23.9 +6.76% 34
Spain Spain 23.5 -0.677% 38
Estonia Estonia 23.9 +2.72% 35
Finland Finland 22.4 +0.868% 44
France France 21.7 +2.48% 49
United Kingdom United Kingdom 15.4 +2.06% 69
Georgia Georgia 18.5 -4.81% 61
Gambia Gambia 29.2 +2.95% 17
Greece Greece 11.5 +21.6% 77
Guatemala Guatemala 19.6 +0.377% 55
Hong Kong SAR China Hong Kong SAR China 28.6 +16.3% 18
Honduras Honduras 17.8 +0.123% 65
Croatia Croatia 22.8 -6.15% 43
Hungary Hungary 26 -1.47% 26
Indonesia Indonesia 34.7 -3.38% 7
India India 30 -3.01% 12
Iceland Iceland 24 -8.76% 32
Israel Israel 26.7 -10.6% 24
Italy Italy 23.3 +0.842% 40
Cambodia Cambodia 39.4 +1.56% 5
Lithuania Lithuania 22.9 -0.687% 42
Luxembourg Luxembourg 18.4 +10.2% 62
Latvia Latvia 19 -4.4% 56
Moldova Moldova 5.09 -41.9% 84
Mexico Mexico 19 -5.29% 57
North Macedonia North Macedonia 26.2 -12.6% 25
Malta Malta 21.7 -4.01% 48
Montenegro Montenegro 11.3 -30% 78
Mozambique Mozambique 7.84 +182% 83
Malaysia Malaysia 23.5 -1.97% 36
Namibia Namibia 8.65 -21.4% 82
Nicaragua Nicaragua 28 -6.09% 20
Netherlands Netherlands 29.2 -1.97% 16
Norway Norway 41.2 -4.73% 3
Nepal Nepal 43.5 +20.1% 2
Pakistan Pakistan 13.7 +5.93% 75
Peru Peru 21.9 +10% 46
Philippines Philippines 29.2 +6.95% 15
Poland Poland 17.9 -7.55% 64
Portugal Portugal 21.6 +4.77% 50
Paraguay Paraguay 18.9 -4.57% 58
Palestinian Territories Palestinian Territories 16.7 +27.4% 67
Romania Romania 15.9 -16.3% 68
Russia Russia 30.6 -1.33% 11
Saudi Arabia Saudi Arabia 29.6 -7.15% 14
Singapore Singapore 40.3 +4.15% 4
El Salvador El Salvador 18.6 -5.32% 60
Slovakia Slovakia 17.4 -7.1% 66
Slovenia Slovenia 25.9 -3.68% 27
Sweden Sweden 31.6 +0.209% 10
Thailand Thailand 24 -5.05% 31
Turkey Turkey 24.6 -7.24% 30
Ukraine Ukraine 11.3 -11.4% 79
Uruguay Uruguay 14.4 +2.57% 73
United States United States 18.1 -1.14% 63
Uzbekistan Uzbekistan 28.3 +6.3% 19
Samoa Samoa 25.8 +20.9% 28
South Africa South Africa 13.3 -7.08% 76

The indicator of Gross Savings as a percentage of GDP plays a crucial role in the economic landscape of any nation. This metric reflects the portion of national income that is saved rather than spent. It encapsulates the capacity of an economy to invest in growth, manage funds for future consumption, and maintain stability in times of financial uncertainty.

Understanding and evaluating gross savings is important as it provides insights into national economic health. A higher gross savings rate typically indicates that a country is generating enough revenue to invest in future prosperity while maintaining a safety net against economic shocks. Conversely, a low or negative savings rate raises concerns about a nation’s ability to fund essential services, invest in infrastructure, and support long-term growth initiatives.

In 2023, the global median value of gross savings as a percentage of GDP was recorded at 22.29%. This statistic serves as a benchmark for evaluating individual countries' economic performance. For instance, certain nations like Brunei, with a remarkable 45.96%, and Norway, at 43.79%, demonstrate a significant surplus in savings, suggesting they have robust economies capable of fostering high levels of investment. Such high rates may stem from factors like wealth generated from natural resources, prudent fiscal policies, and effective governance.

Comparatively, nations that fail to generate positive savings can be severely hampered in their developmental goals. The bottom five areas, which include Timor-Leste at -1.67% and Mozambique at 2.26%, exemplify economies that face challenges in their savings capacity. These nations might struggle with political instability, inefficient resource management, and other economic constraints that hinder savings accumulation. The negative savings rate indicates they are consuming more than they earn, which can lead to increased debt or reliance on foreign capital.

The relationship between gross savings and other economic indicators is also significant. For instance, there is a close connection between gross savings rates and investment levels. Higher savings typically enable higher investment rates within the economy, laying the groundwork for enhanced productivity and growth over time. Additionally, gross savings frequently align with other essential indicators such as current account balances, foreign direct investment inflows, and overall economic stability. A country with a high gross savings rate often boasts a strong current account surplus, evidencing excess savings relative to domestic investment needs.

Factors affecting gross savings rates can vary significantly between different economies. A nation's cultural attitudes towards saving and spending can shape consumer behavior and influence savings rates. Additionally, fiscal policies—such as incentives for savings or tax implications—play a critical role in determining the level of savings. Economic stability, wage growth, and employment opportunities are also critical factors; rising incomes can lead to increased savings, while recessionary environments typically decrease capacity to save.

To enhance gross savings, various strategies can be implemented. Governments may consider promoting financial literacy through education, creating saving incentives, and offering tax breaks for savings accounts. Encouraging investment in domestic industries can also create jobs and increase household incomes, bolstering the savings rate. Additionally, fostering an environment conducive to entrepreneurship can drive innovation and productivity, leading to higher overall economic output and improved savings.

However, challenges exist regarding gross savings as an economic indicator. While larger savings are generally beneficial, excessively high savings can indicate an economy that is not adequately investing in consumption or infrastructure. This phenomenon can lead to an imbalance in economic dynamics, resulting in stagnation and reduced growth. Additionally, over-reliance on increased savings can deter consumption, which is equally vital for economic vitality.

Examining the historical progression of gross savings globally provides additional context. Between 1981 and 2023, the world value of this indicator exhibited fluctuations ranging from a high of 27.91% in 2006 to a dip to 22.87% in 1981. The trend indicates a gradual decline in gross savings over the decades leading up to the present 25.87%. Such trends can be analyzed against various global events—such as financial crises, policy shifts, and demographic changes—that have influenced national savings behaviors.

In conclusion, gross savings as a percentage of GDP serves as an essential metric for evaluating economic health and stability. While the current global median stands at a commendable level, the stark contrast seen between top-performing and underperforming nations underscores the complexities involved in savings dynamics. By understanding the factors influencing this indicator and implementing sound economic policies, nations can strive toward enhanced savings rates, fostering a foundation for sustainable growth and prosperity.

                    
# 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 = 'NY.GNS.ICTR.ZS'

# 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 <- 'NY.GNS.ICTR.ZS'

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