Introduction & Overview

The context of the study

Green bonds are a result of the continuing concern of investors worldwide about climate change and environmental issues. The green bond market is another long-term green financing channel besides bank loans and equity financing. It is significant to countries with high demand for green infrastructure investment but very limited long-term bank loans, raising funds to finance projects with environmental and climate benefits. As urbanization continues to increase globally, especially in emerging markets, and the share of carbon emissions from cities continues to grow, green bonds are a critical financing tool for municipalities and towns to meet the growing demand for climate infrastructure. At the same time, green bonds are also used to support green recycling and low-carbon development projects such as energy-saving and emission reduction technology transformation, new energy development and utilization, energy-saving and environmental protection industries, and low-carbon industries.

Currently, more and more international mainstream investment institutions are focusing on sustainable development investment. Investing in green bonds can reflect their support for climate change mitigation and get a more stable long-term return.

At the same time, regulatory action on the ‘green-washing’ phenomenon in the global green bond market is reaching a new peak in the first half of 2022. On the investment side, this refers to the failure of investors to conduct quality ESG reviews and the erroneous inclusion of many “non-green” targets. On the issuance side, it means that the funds raised from green bonds are not deployed according to the promised framework, or the environmental and social benefits of the projects are not disclosed or do not meet the promised targets.

Key Questions

Based on the above background of green bond market development, exploring the following questions can help us better understand the current green bond market worldwide and provide an outlook on the future of green bonds:

  • What are the largest issuers of green bonds?

  • What are the differences in the issuance of green bonds by countries with different incomes or regions?

  • What are the investments more in line with the goals of the Paris Climate Agreement or that contribute more to the fight against climate change for countries with different incomes and regions in the green bond market?

  • Is there a correlation between GDP, CO2 emissions, and green bond issuance for specific countries?

Data sets

The primary data sets covered in the following are:

  • Green bonds data set: the data source is Refinitiv and the export time is October 2022. This dataset was cleaned prior to analysis. Besides, after cross-comparison with Bloomberg’s dataset, we chose not to include the Eurobond and Multicountry subgroups in this study.

  • The country features and macroeconomics data set: the data sources are IMF and Worldbank.

  • CO2 emissions data set: the data source is Our World in Data.

#Create folder path for data access
folder_path <- partial(here, "03_data_processed")
#Import data
emissions_dataset <- folder_path("emissions_dataset.csv") %>%
  read_csv()

emissions_dataset_full <- folder_path("emissions_dataset_full.csv") %>%
  read_csv()

imf_weo_by_country_2022 <- folder_path("imf_weo_by_country_2022_oct.csv") %>%
  read_csv()

country_features_2022 <- folder_path("country_features_2022-10.csv") %>%
  read_csv()

Green_bond_full_dataset <- folder_path("Green_bond_full_dataset.csv") %>%
  read_csv()
#Get subsets of Green_bond_full_dataset
green_bond_issued_amount_10 <- Green_bond_full_dataset %>%
    group_by(country_of_issue) %>%
    summarize(issued_amount_usd = sum(issued_amount_usd)) %>%
    arrange(desc(issued_amount_usd)) %>%
    slice (1:10)

green_bond_outstanding_amount_10 <- Green_bond_full_dataset %>%
    group_by(country_of_issue) %>%
    summarize(amount_outstanding_usd = sum(amount_outstanding_usd)) %>%
    arrange(desc(amount_outstanding_usd)) %>%
    slice (1:10)
#Define gppr_theme() function

theme_gppr <- function(){ 
    font <- "Georgia"   #assign font family up front
    
    theme_pander() %+replace%    #replace elements we want to change
    
    theme(
    
      #text elements
      plot.title = element_text(             #title
                   family = font,            #set font family
                   size = 11,                #set font size
                   face = 'bold',            #bold typeface
                   hjust = 0,                #left align
                   vjust = 0),               #raise slightly
      
      plot.subtitle = element_text(          #subtitle
                   family = font,            #font family
                   size = 9),               #font size
      
      plot.caption = element_text(           #caption
                   family = font,            #font family
                   size = 9,                 #font size
                   hjust = 1),               #right align
      
      axis.title = element_text(             #axis titles
                   family = font,            #font family
                   size = 9),               #font size
      
      axis.text = element_text(              #axis text
                   family = font,            #axis famuly
                   size = 9),                #font size
      
      axis.text.x = element_text(            #margin for axis text
                    margin=margin(5, b = 10),
                    size = 9)
      
    )
}

The largest sovereign issuers of green bonds

According to Refinitiv, the top ten countries with the highest value of green bond issuance as of October 2022 are (from high to low): the United States, China, France, Germany, Canada, the United Kingdom, Japan, Sweden, Norway, and Australia. From an issuing country perspective, the concentration of green bond issuance is apparent, with the top two countries, the US and China, far ahead of the rest in terms of combined issuance value. At the same time, any one of the top four countries has more than double the value of green bond issuance of the remaining countries individually.

In addition, the top ten countries with the highest green bond outstanding values show the same trend, which can be cross-checked with the above.

#Horizontal barplot in terms of Top 10 countries with the highest issuance amount of green bonds
ggplot(green_bond_issued_amount_10, aes(x = reorder(country_of_issue,round(issued_amount_usd/1000000,2)), y = round(issued_amount_usd/1000000,2))) +
  geom_bar(stat = 'identity',fill = "#9DC183") + 
  coord_flip() +
  scale_y_continuous(labels = dollar) +
  labs(
    x = "",
    y = "Issued amount of Green bonds in USD (Millions)",
    title = "Who are the largest issuers of green bonds?",
    subtitle = "Top 10 countries with the highest issuance amount of green bonds",
    caption = "Data source: Refinitiv"
    )+
  theme_gppr()

#Horizontal barplot in terms of top 10 countries with the highest outstanding amount of green bonds
ggplot(green_bond_outstanding_amount_10, aes(x = reorder(country_of_issue,round(amount_outstanding_usd/1000000,2)), y = round(amount_outstanding_usd/1000000,2))) + 
  geom_bar(stat = 'identity',fill = "#9DC183") + 
  coord_flip() +
  scale_y_continuous(labels = dollar) +
  labs(
    x = "",
    y = "Outstanding amount of Green bonds in USD (Millions)",
    title = "Who are the largest issuers of green bond?",
    subtitle = "Top 10 countries with the highest outstanding amount of green bonds",
    caption = "Data source: Refinitiv"
    )+
  theme_gppr()

Comparing differences in green bond issuance across country groups

In this section, we further investigate the characteristics of the current green bond market by comparing the differences in green bond issuance across country income groups and regions.

When we group by country income and compare the total value of green bond issuance across the different groups, we can see that the aggregate difference between the groups is significant. The green bond issuance for the high-income group is more than three times that of the upper-middle-income group, while the green bond issuance for the upper-middle-income group is even more than seventy times that of the lower-middle-income group. At the same time, all low-income group countries have yet to issue green bonds.

This shows that green bond issuance is still highly concentrated in high-income and upper-middle-income countries, but there is also some room for development in low-middle-income countries. The top-income countries generally have good financial market facilities and abundant capital flows, which are all relevant to green bond issuance.

#join country_features_2022 and get a subset of Green_bond_full_dataset

green_bond_country_features_sum <- Green_bond_full_dataset %>%
    left_join(country_features_2022, by = "iso3c") %>%
    group_by(country_of_issue, wb_income_group, wb_region, )%>%
    summarize(issued_amount_usd = sum(issued_amount_usd),
        amount_outstanding_usd = sum(amount_outstanding_usd))
#Group by income & region
green_bond_sum_by_income <- green_bond_country_features_sum %>%
    group_by(wb_income_group) %>%
    summarize(issued_amount_usd = sum(issued_amount_usd),
        amount_outstanding_usd = sum(amount_outstanding_usd))

green_bond_sum_by_region<- green_bond_country_features_sum %>%
    group_by(wb_region) %>%
    summarize(issued_amount_usd = sum(issued_amount_usd),
        amount_outstanding_usd = sum(amount_outstanding_usd))
#Barchart for income group
ggplot(green_bond_sum_by_income, aes(x = reorder(wb_income_group,-round(issued_amount_usd/1000000,2)), y = round(issued_amount_usd/1000000,0))) +
  geom_bar(stat = 'identity',fill = "#9DC183") + 
  scale_y_continuous(labels = dollar) +
  geom_text(aes(label = paste(round(issued_amount_usd/1000000,0),'M',sep=''),
                vjust=-0.5,
                family = 'Georgia'),
            size = 2.7) +
  labs(
    x = "Income Groups",
    y = "Issued amount of Green bonds in USD (Millions)",
    title = "Comparing differences in green bond issuance across country groups",
    subtitle = "Total issued amount of green bonds in different income groups",
    caption = "Data source: Refinitiv, IMF"
    )+
  theme_gppr()

When we grouped countries by region and compared the total value of green bond issuance across the different groups, we likewise found significant aggregate differences between the groups. Green bond issuance is currently highly concentrated in three regions: Europe and Central Asia, North America, and East Asia & Pacific (from highest to lowest).

In comparison to the first section, we can determine that France and Germany are the main contributors to green bond issuance in Europe and Central Asia, the US and Canada are the main contributors to green bond issuance in North America, and China and Japan are the main contributors to green bond issuance in East Asia & Pacific.

#Barchart for region
ggplot(green_bond_sum_by_region, aes(x = reorder(wb_region,round(issued_amount_usd/1000000,2)), y = round(issued_amount_usd/1000000,0))) +
  geom_bar(stat = 'identity',fill = "#9DC183") + 
  coord_flip() +
  scale_y_continuous(labels = dollar) +
  geom_text(aes(label = paste(round(issued_amount_usd/1000000,0),'M',sep=''),
                hjust=0.3,
                family = 'Georgia'),
            size = 2.0) +
  labs(
    x = "Region Groups",
    y = "Issued amount of Green bonds in USD (Millions)",
    title = "Comparing differences in green bond issuance across country groups",
    subtitle = "Total issued amount of green bonds in different region groups",
    caption = "Data source: Refinitiv, IMF"
    )+
  theme_gppr()

#join country_features_2022 and get a subset of Green_bond_full_dataset

green_bond_country_features <- Green_bond_full_dataset %>%
    left_join(country_features_2022, by = "iso3c") %>%
    group_by(country_of_issue, wb_income_group, wb_region)%>%
    summarize(issued_amount_usd_mean = mean(issued_amount_usd),
        amount_outstanding_usd_mean = mean(amount_outstanding_usd))

In this section, we examine the distributional differences in the country groupings regarding the average issuance value of individual green bonds in different countries.

Compared to the other two groups, the average issue value of individual green bonds in the high-income country group is relatively evenly distributed, suggesting that there is also some variation in the volume of the green bond market within high-income countries, with the average size of individual country green bond issues being more diverse. The upper-middle-income and lower-middle-income groups show a more pronounced tendency for the average individual country green bond issuance to be concentrated at less than 1,000 million. However, the upper middle-income group is even more concentrated than the lower middle-income group. Proportionally, the individual country’s average green bond issuance for the upper-middle-income group also shows a small peak near 700 million.

For the regional subgroups, the distribution of the average issue value of individual green bonds is characterized by more variation, but there does not seem to be an evident trend. For North America, the average individual country green bond issuance is highly concentrated at 500 million, while for Europe and Central Asia, the overall distribution is very even.

ggplot(green_bond_country_features, aes(x=round(issued_amount_usd_mean/1000000,2), group= wb_income_group, fill=wb_income_group)) +
    geom_density(adjust=1.5) +
    scale_fill_viridis(discrete=TRUE) +
    scale_color_viridis(discrete=TRUE) +
    facet_wrap(~wb_income_group) +
    labs(
    x = "Average issued amount of green bonds in USD (Millions)",
    y = "",
    title = "Comparing differences in green bond issuance across countries",
    subtitle = "The distribution of average issuance amount of green bonds for different income groups",
    caption = "Data source: Refinitiv, IMF"
    )+
  theme_gppr()+
  theme(
      legend.position="none",
      panel.spacing = unit(0.1, "lines"),
      axis.ticks.x=element_blank()
    )

#generate ridgeline plot for income groups
ggplot(green_bond_country_features, aes(x = round(issued_amount_usd_mean/1000000,2), y = wb_income_group, fill = wb_income_group, height = ..density..)) +
  geom_density_ridges(scale = 3, rel_min_height = 0.005, stat = "density") +
  scale_y_discrete(expand = c(0.01, 0)) +
  scale_x_continuous(expand = c(0.01, 0)) +
  scale_colour_brewer(palette = "Greens")+
  labs(
    x = "Average issued amount of green bonds in USD (Millions)",
    y = "",
    title = "Comparing differences in green bond issuance across countries",
    subtitle = "The distribution of average issuance amount of green bonds for different income groups",
    caption = "Data source: Refinitiv, IMF"
    )+
  theme_gppr() +
    theme(
      legend.position="none"
    )

#generate ridgeline plot for region groups

ggplot(green_bond_country_features, aes(x = round(issued_amount_usd_mean/1000000,2), y = wb_region, fill = wb_region, height = ..density..)) +
  geom_density_ridges(scale = 3, rel_min_height = 0.005, stat = "density") +
  scale_y_discrete(expand = c(0.01, 0)) +
  scale_x_continuous(expand = c(0.01, 0)) +
  scale_colour_brewer(palette = "Greens")+
  labs(
    x = "Average issued amount of green bonds in USD (Millions)",
    y = "",
    title = "Comparing differences in green bond issuance across countries",
    subtitle = "The distribution of average issuance amount of green bonds for different region groups",
    caption = "Data source: Refinitiv, IMF"
    )+
  theme_gppr() +
    theme(
      legend.position="none",
    )

ESG bond types across country groups

According to the Climate Bonds Standard and Certification Scheme, green bonds can be classified into three categories in terms of their contribution to climate change: CBI Certificate Green Bond, CBI Aligned Green Bond, and Self-labeled Green Bond. If you are interested in CBI Certificate Green Bond and would like to learn more about it, you can click here to access the detailed database.

In this section, we will explore the qualitative characteristics of the green bond market in different country groups, guided by the above classification of green bonds, in order to further examine the distribution of green bonds that are consistent with the objectives of the Paris Climate Agreement, or that actually contribute to the fight against climate change.

However, looking at the share of different green bond categories in each country’s income group, we can find that CBI Certificate Green Bond has the highest percentage in the lower-middle-income group. This may give us a basis to re-examine the quality of the green bond market in the countries of the lower-middle-income group. In contrast, Self-labeled Green Bond has the highest share in the upper-middle-income group and the lowest in the high-income group. I believe that further research on the quality characteristics of green bonds may contribute to raising the priority of investments that genuinely contribute to the fight against climate change in a world with much skepticism about greenwashing.

#join country_features_2022 and get a subset of Green_bond_full_dataset
green_bond_country_features_cbi <- Green_bond_full_dataset %>%
    left_join(country_features_2022, by = "iso3c") %>%
    group_by(country_of_issue, wb_income_group, wb_region, ESG_bond_type) %>%
    summarize(issued_amount_usd = sum(issued_amount_usd),
        amount_outstanding_usd = sum(amount_outstanding_usd)) %>%
    arrange(desc(amount_outstanding_usd))    
#Grouped barchart for income group

ggplot(green_bond_country_features_cbi, aes(fill=ESG_bond_type, y=round(issued_amount_usd/1000000,0), x=reorder(wb_income_group,-round(issued_amount_usd/1000000,0)))) + 
    geom_bar(position="stack", stat="identity") +
    scale_fill_viridis(discrete = T) +
    scale_y_continuous(labels = dollar) +
    labs(
        x = "Income Groups",
        y = "Issued amount of Green bonds in USD (Millions)",
        title = "ESG bond types across country groups",
        subtitle = "Issued amount of different green bond types in different income groups",
        caption = "Data source: Refinitiv, IMF"
        )+
    theme_gppr()

#Percent stacked barchart for income group
ggplot(green_bond_country_features_cbi, aes(fill=ESG_bond_type, y=round(issued_amount_usd/1000000,0), x=reorder(wb_income_group,-round(issued_amount_usd/1000000,0)))) + 
    geom_bar(position="fill", stat="identity")+
    scale_fill_viridis(discrete = T) +
    labs(
        x = "Income Groups",
        y = "Percentage of green bonds",
        title = "ESG bond types across country groups",
        subtitle = "Percentage of different green bond types in different income groups",
        caption = "Data source: Refinitiv, IMF"
        )+
    theme_gppr()

In terms of regional distribution, Europe and Central Asia have the highest overall issue values for both CBI Certificate Green Bonds and CBI Aligned Green Bonds. On the other hand, North America and East Asia & Pacific regions provide additional contributions to the issue value of Self-labeled Green Bonds.

When we turn our perspective to the share of different green bond classifications by region, South Asia and Sub-Saharan Africa regions surprisingly have the highest percentage of CBI Certificate Green Bonds. Although the impact of these two regions in the global green bond market is not as significant in terms of the total number of green bonds, this part of the finding reflects the quality of their green bond market in a very positive way. In contrast, the percentage of Self-labeled Green Bond in the Middle East & North Africa and East Asia & Pacific also indicates that the quality of the green bond market in these two regions is not recognized under the CBI standard.

#Grouped barchart for region group
ggplot(green_bond_country_features_cbi, aes(fill=ESG_bond_type, y=round(issued_amount_usd/1000000,0), x=reorder(wb_region,round(issued_amount_usd/1000000,0)))) + 
    geom_bar(position="stack", stat="identity") +
    coord_flip() +
    scale_fill_viridis(discrete = T) +
    scale_y_continuous(labels = dollar) +
    labs(
        x = "Income Groups",
        y = "Issued amount of Green bonds in USD (Millions)",
        title = "ESG bond types across country groups",
        subtitle = "Issued amount of different green bond types in different income groups",
        caption = "Data source: Refinitiv, IMF"
         ) + 
    theme_gppr()

#Percent stacked barchart for region group
ggplot(green_bond_country_features_cbi, aes(fill=ESG_bond_type, y=round(issued_amount_usd/1000000,0), x=reorder(wb_region,round(issued_amount_usd/1000000,0)))) + 
    geom_bar(position="fill", stat="identity")+
    coord_flip() +
    scale_fill_viridis(discrete = T) +
    labs(
        x = "Region Groups",
        y = "Percentage of green bonds",
        title = "ESG bond types across country groups",
        subtitle = "Percentage of different green bond types in different region groups",
        caption = "Data source: Refinitiv, IMF"
        )+
    theme_gppr()

#join country_features_2022 and get a subset of Green_bond_full_dataset
green_bond_country_features_cbi_type <- Green_bond_full_dataset %>%
    left_join(country_features_2022, by = "iso3c") %>%
    group_by(country_of_issue, wb_income_group, wb_region, ESG_bond_type)
#Count obs in green_bond_country_features_cbi
green_bond_country_features_cbi_n <- green_bond_country_features_cbi_type %>%
    count(wb_income_group, wb_region, ESG_bond_type)
#generate alluvial plot

ggplot(data = green_bond_country_features_cbi_n,
       aes(axis1 = wb_income_group, axis2 = ESG_bond_type, axis3 = wb_region, y = n), width = 0.5, knot.pos = 0.8, alpha = 0.8) +
  geom_alluvium(aes(fill = ESG_bond_type)) +
  geom_stratum(width = 0.6) +
  geom_text(stat = "stratum",
            aes(label = after_stat(stratum)), size= 1.8) +
  scale_x_discrete(limits = c("Income group", "ESG bond type", "Region"),
                   expand = c(0.8, 0.8)) +
  scale_fill_viridis_d() +
   labs(
    x = "",
    y = "",
    caption = "Data source: Refinitiv, IMF"
    )+
  theme_void() +
     theme(
      legend.position="none",
    )+
  guides(fill = guide_legend(title = "ESG bond type"))

Exploring the relationships among GDP, CO2 Emission, and Green bond Issuance

In this last section, I designed an interactive bubble chart exploring the relationship between GDP per capita (PPP), cumulative CO2 emissions per capita, and green bond issuance. In this section, the horizontal and vertical axes represent GDP per capita (PPP) and cumulative CO2 emissions per capita, respectively, while the size of the bubble represents the overall size of green bond issuance in that country. In addition, the region of each country is distinguished by the color of the bubbles. When the cursor is moved to the bubble of the corresponding country, a text box will automatically display basic information about the country, including the country name, region, population, GDP per capita, cumulative CO2 emissions per capita, and the overall amount of green bonds issued.

This interactive bubble chart shows the correlation between GDP per capita (PPP) and cumulative CO2 emissions per capita. At the same time, although there is some positive correlation between GDP per capita and green bond issuance, and between cumulative CO2 emissions per capita and green bond issuance, it is relatively insignificant.

Countries in Europe & Central Asia and Latin America & Caribbean are more densely distributed, while countries in East Asia & Pacific are significantly more discrete.

In the lower-left corner of the bubble chart, we can see that China is an outlier in terms of green bond issuance that does not fit well with mainstream distribution. In contrast, in the lower right corner, we can see that two countries with relatively low cumulative CO2 emissions per capita and relatively high GDP per capita are Ireland and Singapore. This may be partly due to their population size.

#Get subsets and join and clean
cumulative_co2_per_capita <- emissions_dataset_full %>%
    filter(year == 2019) %>%
    select(iso3c, cumulative_co2_per_capita)

green_bond_issued_amount <- Green_bond_full_dataset %>%
    group_by(country_of_issue, iso3c) %>%
    summarize(issued_amount_usd = sum(issued_amount_usd))

emission_gdp_green_bond <- green_bond_issued_amount %>%
    left_join(cumulative_co2_per_capita, by = "iso3c") %>%
    left_join(country_features_2022, by = "iso3c")

emission_gdp_green_bond_clean <- emission_gdp_green_bond %>% 
    filter(!is.na(cumulative_co2_per_capita))
# Interactive version data set
interactive_emission_gdp_green_bond <- emission_gdp_green_bond_clean %>%
  mutate(gdpPercap=round(nominal_gdp_per_capita_ppp/1000,1)) %>%
  mutate(pop=round(population_mn,2)) %>%
  mutate(cumulative_co2_per_capita=round(cumulative_co2_per_capita,1)) %>%
  mutate(green_bound_issued=round(issued_amount_usd/1000000,0)) %>%
  # Reorder countries
  arrange(desc(green_bound_issued)) %>%
  # prepare text for tooltip
  mutate(text = paste("Country: ", country_of_issue, "\nRegion: ", wb_region, "\nPopulation (M): ", pop, "\nCumulative CO2 per capita: ", cumulative_co2_per_capita, "\nGdp per capita (K): ", gdpPercap, "\nGreen bond issue amount (M): ", green_bound_issued, sep="")) %>%
  # Classic ggplot
  ggplot( aes(x=gdpPercap, y=cumulative_co2_per_capita, size = green_bound_issued, color = wb_region, text=text)) +
    geom_point(alpha=0.7) +
    scale_size(range = c(1, 30), name="Green bond issue amount (M)") +
    scale_color_viridis(discrete=TRUE,guide=FALSE) +
    labs(
        x = "Gdp per capita (K)",
        y = "Cumulative CO2 per capita",
        caption = "Data source: Refinitiv, Our World In Data, IMF"
        )+
    theme_gppr() +
    theme(legend.position="none")

# turn ggplot interactive with plotly
interactive_emission_gdp_green_bond_output <- ggplotly(interactive_emission_gdp_green_bond, tooltip="text")
interactive_emission_gdp_green_bond_output