SBTi.target_validation

Module Contents

Classes

TargetProtocol

This class validates the targets, to make sure that only active, useful targets are considered. It then combines the targets with company-related data into a dataframe where there's one row for each of the nine possible target types (short, mid, long * S1+S2, S3, S1+S2+S3). This class follows the procedures outlined by the target protocol that is a part of the "Temperature Rating Methodology" (2020), which has been created by CDP Worldwide and WWF International.

class SBTi.target_validation.TargetProtocol(config: Type[SBTi.configs.PortfolioAggregationConfig] = PortfolioAggregationConfig)

This class validates the targets, to make sure that only active, useful targets are considered. It then combines the targets with company-related data into a dataframe where there’s one row for each of the nine possible target types (short, mid, long * S1+S2, S3, S1+S2+S3). This class follows the procedures outlined by the target protocol that is a part of the “Temperature Rating Methodology” (2020), which has been created by CDP Worldwide and WWF International.

Parameters

config – A Portfolio aggregation config

process(self, targets: List[SBTi.interfaces.IDataProviderTarget], companies: List[SBTi.interfaces.IDataProviderCompany]) pandas.DataFrame

Process the targets and companies, validate all targets and return a data frame that combines all targets and company data into a 9-box grid.

Parameters
  • targets – A list of targets

  • companies – A list of companies

Returns

A data frame that combines the processed data

validate(self, target: SBTi.interfaces.IDataProviderTarget) bool

Validate a target, meaning it should:

  • Have a valid type

  • Not be finished

  • A valid end year

Parameters

target – The target to validate

Returns

True if it’s a valid target, false if it isn’t

_split_s1s2s3(self, target: SBTi.interfaces.IDataProviderTarget) Tuple[SBTi.interfaces.IDataProviderTarget, Optional[SBTi.interfaces.IDataProviderTarget]]

If there is a s1s2s3 scope, split it into two targets with s1s2 and s3

Parameters

target – The input target

:return The split targets or the original target and None

_combine_s1_s2(self, target: SBTi.interfaces.IDataProviderTarget)

Check if there is an S2 target that matches this target exactly (if this is a S1 target) and combine them into one target.

Parameters

target – The input target

Returns

The combined target (or the original if no combining was required)

_convert_s1_s2(self, target: SBTi.interfaces.IDataProviderTarget)

Convert a S1 or S2 target into a S1+S2 target.

Parameters

target – The input target

Returns

The converted target (or the original if no conversion was required)

_boundary_coverage(self, target: SBTi.interfaces.IDataProviderTarget) SBTi.interfaces.IDataProviderTarget

Test on boundary coverage:

Option 1: minimal coverage threshold For S1+S2 targets: coverage% must be at or above 95%, for S3 targets coverage must be above 67%

Option 2: weighted coverage Thresholds are still 95% and 67%, target is always valid. Below threshold ambition is scaled.* New target ambition = input target ambition * coverage *either here or in tem score module

Option 3: default coverage Target is always valid, % uncovered is given default score in temperature score module.

Parameters

target – The input target

Returns

The original target with a weighted reduction ambition, if so required

_time_frame(self, target: SBTi.interfaces.IDataProviderTarget) SBTi.interfaces.IDataProviderTarget

Time frame is forward looking: target year - current year. Less than 5y = short, between 5 and 15 is mid, 15 to 30 is long

Parameters

target – The input target

Returns

The original target with the time_frame field filled out (if so required)

_prepare_target(self, target: SBTi.interfaces.IDataProviderTarget)

Prepare a target for usage later on in the process.

Parameters

target

Returns

prepare_targets(self, targets: List[SBTi.interfaces.IDataProviderTarget])
_find_target(self, row: pandas.Series, target_columns: List[str]) pandas.Series

Find the target that corresponds to a given row. If there are multiple targets available, filter them.

Parameters
  • row – The row from the data set that should be looked for

  • target_columns – The columns that need to be returned

Returns

returns records from the input data, which contains company and target information, that meet specific criteria. For example, record of greatest emissions_in_scope

group_targets(self)

Group the targets and create the 9-box grid (short, mid, long * s1s2, s3, s1s2s3). Group valid targets by category & filter multiple targets# Input: a list of valid targets for each company: For each company:

Group all valid targets based on scope (S1+S2 / S3 / S1+S2+S3) and time frame (short / mid / long-term) into 6 categories.

For each category: if more than 1 target is available, filter based on the following criteria – Highest boundary coverage – Latest base year – Target type: Absolute over intensity – If all else is equal: average the ambition of targets