Package 'r2dii.analysis'

Title: Measure Climate Scenario Alignment of Corporate Loans
Description: These tools help you to assess if a corporate lending portfolio aligns with climate goals. They summarize key climate indicators attributed to the portfolio (e.g. production, emission factors), and calculate alignment targets based on climate scenarios. They implement in R the last step of the free software 'PACTA' (Paris Agreement Capital Transition Assessment; <https://www.transitionmonitor.com/>). Financial institutions use 'PACTA' to study how their capital allocation decisions align with climate change mitigation goals.
Authors: Alex Axthelm [aut, cre] , Jackson Hoffart [aut, ctr] , Mauro Lepore [aut, ctr] , Klaus Hogedorn [aut], Nicky Halterman [aut], Jacob Kastl [aut, ctr] , RMI [cph, fnd]
Maintainer: Alex Axthelm <[email protected]>
License: MIT + file LICENSE
Version: 0.4.0.9002
Built: 2024-10-30 06:42:38 UTC
Source: https://github.com/rmi-pacta/r2dii.analysis

Help Index


Join a data-loanbook object to the abcd and scenario

Description

join_abcd_scenario() is a simple wrapper of several calls to ⁠dplyr::join_*()⁠, forming the master dataset to be used in later steps of the analysis.

Usage

join_abcd_scenario(
  data,
  abcd,
  scenario,
  region_isos = r2dii.data::region_isos,
  add_green_technologies = FALSE
)

Arguments

data

A data frame like the output of r2dii.match::prioritize.

abcd

An asset level data frame like r2dii.data::abcd_demo.

scenario

A scenario data frame like r2dii.data::scenario_demo_2020.

region_isos

A data frame like r2dii.data::region_isos (default).

add_green_technologies

Logical vector of length 1. FALSE defaults to outputting only technologies that are present in both data and abcd. Set to FALSE to add rows of all possible green technologies (with 0 production).

Value

Returns a fully joined data frame, linking portfolio, abcd and scenario.

See Also

Other utility functions: summarize_weighted_production()

Examples

library(r2dii.data)
library(r2dii.match)

valid_matches <- match_name(loanbook_demo, abcd_demo) %>%
# WARNING: Remember to validate matches (see `?prioritize`)
  prioritize()

valid_matches %>%
  join_abcd_scenario(
  abcd = abcd_demo,
  scenario = scenario_demo_2020,
  region_isos = region_isos_demo
  )

Summaries based on the weight of each loan per sector per year

Description

Based on on the weight of each loan per sector per year, summarize_weighted_production() and summarize_weighted_percent_change() summarize the production and percent-change, respectively.

Usage

summarize_weighted_production(data, ..., use_credit_limit = FALSE)

summarize_weighted_percent_change(data, ..., use_credit_limit = FALSE)

Arguments

data

A data frame like the output of join_abcd_scenario().

...

Variables to group by.

use_credit_limit

Logical vector of length 1. FALSE defaults to using the column loan_size_outstanding. Set to TRUE to instead use the column loan_size_credit_limit.

Value

A tibble with the same groups as the input (if any) and columns: sector, technology, and year; and weighted_production or weighted_production for summarize_weighted_production() and summarize_weighted_percent_change(), respectively.

Warning

The percent-change analysis excludes companies with 0 production. percent-change is undefined for companies that have no initial production; including such companies would cause percent-change percentage to be infinite, which is wrong.

See Also

join_abcd_scenario().

Other utility functions: join_abcd_scenario()

Examples

library(r2dii.data)
library(r2dii.match)

loanbook <- head(loanbook_demo, 150)
abcd <- head(abcd_demo, 100)
master <- loanbook %>%
  match_name(abcd) %>%
  prioritize() %>%
  join_abcd_scenario(
    abcd = abcd,
    scenario = scenario_demo_2020,
    region_isos = region_isos_demo
    ) %>%
  dplyr::filter(production != 0)

summarize_weighted_production(master)

summarize_weighted_production(master, use_credit_limit = TRUE)

summarize_weighted_percent_change(master)

summarize_weighted_percent_change(master, use_credit_limit = TRUE)

Add targets for production, using the market share approach

Description

This function calculates the portfolio-level production targets, as calculated using the market share approach applied to each relevant climate production forecast.

Usage

target_market_share(
  data,
  abcd,
  scenario,
  region_isos = r2dii.data::region_isos,
  use_credit_limit = FALSE,
  by_company = FALSE,
  weight_production = TRUE,
  increasing_or_decreasing = r2dii.data::increasing_or_decreasing
)

Arguments

data

A "data.frame" like the output of r2dii.match::prioritize.

abcd

An asset level data frame like r2dii.data::abcd_demo.

scenario

A scenario data frame like r2dii.data::scenario_demo_2020.

region_isos

A data frame like r2dii.data::region_isos (default).

use_credit_limit

Logical vector of length 1. FALSE defaults to using the column loan_size_outstanding. Set to TRUE to use the column loan_size_credit_limit instead.

by_company

Logical vector of length 1. FALSE defaults to outputting production_value at the portfolio-level. Set to TRUE to output production_value at the company-level.

weight_production

Logical vector of length 1. TRUE defaults to outputting production, weighted by relative loan-size. Set to FALSE to output the unweighted production values.

increasing_or_decreasing

A data frame like r2dii.data::increasing_or_decreasing.

Value

A tibble including the summarized columns metric, production, technology_share, percentage_of_initial_production_by_scope and scope. If by_company = TRUE, the output will also have the column name_abcd.

Handling grouped data

This function ignores existing groups and outputs ungrouped data.

See Also

Other functions to calculate scenario targets: target_sda()

Examples

library(r2dii.data)
library(r2dii.match)

loanbook <- head(loanbook_demo, 100)
abcd <- head(abcd_demo, 100)

matched <- loanbook %>%
  match_name(abcd) %>%
  prioritize()

# Calculate targets at portfolio level
matched %>%
  target_market_share(
    abcd = abcd,
    scenario = scenario_demo_2020,
    region_isos = region_isos_demo
    )

# Calculate targets at company level
matched %>%
  target_market_share(
  abcd = abcd,
  scenario = scenario_demo_2020,
  region_isos = region_isos_demo,
  by_company = TRUE
  )

matched %>%
  target_market_share(
    abcd = abcd,
    scenario = scenario_demo_2020,
    region_isos = region_isos_demo,
    # Calculate unweighted targets
    weight_production = FALSE
    )

Add targets for CO2 emissions per unit production at the portfolio level, using the SDA approach

Description

This function calculates targets of CO2 emissions per unit production at the portfolio-level, otherwise referred to as "emissions factors". It uses the sectoral-decarbonization approach (SDA) to calculate these targets.

Usage

target_sda(
  data,
  abcd,
  co2_intensity_scenario,
  use_credit_limit = FALSE,
  by_company = FALSE,
  region_isos = r2dii.data::region_isos
)

Arguments

data

A dataframe like the output of r2dii.match::prioritize().

abcd

An asset-level data frame like r2dii.data::abcd_demo.

co2_intensity_scenario

A scenario data frame like r2dii.data::co2_intensity_scenario_demo.

use_credit_limit

Logical vector of length 1. FALSE defaults to using the column loan_size_outstanding. Set to TRUE to instead use the column loan_size_credit_limit.

by_company

Logical vector of length 1. FALSE defaults to outputting weighted_production_value at the portfolio-level. Set to TRUE to output weighted_production_value at the company-level.

region_isos

A data frame like r2dii.data::region_isos (default).

Value

A tibble including the summarized columns emission_factor_metric and emission_factor_value. If by_company = TRUE, the output will also have the column name_abcd.

Handling grouped data

This function ignores existing groups and outputs ungrouped data.

See Also

Other functions to calculate scenario targets: target_market_share()

Examples

library(r2dii.match)
library(r2dii.data)

loanbook <- head(loanbook_demo, 150)
abcd <- head(abcd_demo, 100)

matched <- loanbook %>%
  match_name(abcd) %>%
  prioritize()

# Calculate targets at portfolio level
matched %>%
  target_sda(
   abcd = abcd,
   co2_intensity_scenario = co2_intensity_scenario_demo,
   region_isos = region_isos_demo
   )

# Calculate targets at company level
matched %>%
  target_sda(
   abcd = abcd,
   co2_intensity_scenario = co2_intensity_scenario_demo,
   region_isos = region_isos_demo,
   by_company = TRUE
   )