Skip to content

Climate Risk and Emissions by Emmi

See our official documentation for full details including a breakdown of our climate scenarios.

Emmi employs a top-down approach to calculate company emissions, transition risk, physical climate risk, and asset hazard analysis across six asset classes. The analysis runs entirely within your Snowflake account, without data ever leaving your environment. It can be run through a guided user interface, or directly via Snowflake SQL so it can be incorporated into production-grade data pipelines.

Installation

Climate Risk and Emissions by Emmi is available as a Snowflake listing.

Before you start. You need the ACCOUNTADMIN role, or a role with the IMPORT SHARE and CREATE DATABASE privileges.

  1. Sign in to Snowsight, then select Catalog and Apps from the navigation menu.
  2. Select Climate Risk and Emissions by Emmi.
  3. Select the Security tab to review the privileges the app requests.
  4. Select Get.
  5. Enter a name for the app and choose the warehouse to install it with.
  6. Select Get again, then choose Open to launch the app or Done to finish.

When you first open the app, Snowsight prompts you to grant the privileges it requests, including CREATE COMPUTE POOL, BIND SERVICE ENDPOINT and CREATE WAREHOUSE. Grant each when prompted. After granting, the interface may take 1-2 minutes to appear the first time you open it while the compute pool starts up; later visits load much faster.

Once installed, open the app and follow the steps in Using the App.

Trial listing

If you installed the app from the limited trial listing, the trial lasts 30 days from installation and the app applies two limits:

  • Each run can process at most 25 input records. A record is one holdings row for Emissions and Climate Risk, or one asset for Geospatial Risk.
  • Across the whole trial, your completed runs can process at most 100 input records in total. Runs that fail or are cancelled do not count towards this total.

The web UI shows how much of the allowance you have used and checks both limits before a run is submitted. A run that exceeds a limit fails straight away with an error naming the limit. Contact Emmi using the 'Contact us' link in the app to move to a listing without limits.

What the app provides

Emissions

Scope 1, 2, and 3 across direct operations, purchased energy, and the full value chain. Reported data combined with machine learning covers any company or asset (all major asset classes).

Transition risk

The financial cost of a carbon-constrained economy. SBTi-aligned targets and forward-looking forecasts across all three scopes show where a company is actually heading. Emissions are measured against what is allowable under 16 climate scenarios. The overrun is priced at each scenario's carbon price and translated into a valuation impact: Transition Value at Risk (TVaR). Temperature alignment shows the warming pathway that an entity's emissions are currently tracking against.

Physical risk

Two complementary approaches:

  • Market-based analysis capturing second-order impacts, without requiring asset location data. Expressed as Physical Value at Risk (PVaR) across climate scenarios and time horizons.
  • Location-based hazard data for any given latitude and longitude. Projected acute hazard exposure across climate scenarios and time horizons, expressed as average annual loss (AAL).

Climate Value at Risk (CVaR)

Total climate risk as a single percentage of enterprise value. PVaR and TVaR share a scenario basis, so they are directly additive. Available for the current year, 2030 and 2050, with custom target years on request.

The two analysis types

Emissions & Climate Risk

Financed emissions reporting and scenario-based climate risk analysis across all assets and companies. The app uses a top-down methodology, combining reported data with modelled estimates to extend coverage well beyond what reported data alone can reach.

Carbon pricing is the anchor. Pricing each scenario's carbon budget overrun turns climate exposure into a valuation impact, expressed as a percentage of enterprise value, so assets and sectors are directly comparable and the effect of tightening carbon prices on value over time is visible.

Emissions & Climate Risk methodology ↗

Geospatial Risk

Rapid hotspot screening and early adaptation analysis for globally distributed assets. Modelled average annual loss (AAL) from major acute hazards, for any land-based location, by time horizon and warming scenario. Expressed as a fraction of asset value, so exposure is comparable across sites and hazard types.

Geospatial Risk methodology ↗

Asset classes

The app supports the following asset classes:

  • Public Equity: Listed companies, identified by ISIN. Each ISIN is resolved against Emmi's pre-computed public equity universe.
  • Public Debt: Corporate and government debt securities, identified by ISIN. Each ISIN is resolved against Emmi's fixed income universe. Scope 1, 2 and 3 for a bond are financed emissions: the share of the issuer's emissions attributed to that bond (the issuer's emissions scaled by the bond's outstanding amount over its enterprise value including cash, or over PPP-adjusted GDP for a government bond), the same figure Emmi delivers for the bond elsewhere. A government bond carries Scope 1 only. Intensity columns (WACI, EVIC carbon intensity) describe the issuer.
  • Property: Directly held property assets, one row per asset.
  • Infrastructure: Directly held infrastructure assets, one row per asset.
  • Private Equity: Privately held companies, one row per company and year.
  • Private Debt: Loans to privately held borrowers, one row per loan and year. The columns are the Private Equity columns plus the loan's maturity date and outstanding amount. Scope 1, 2 and 3 for a loan are financed emissions: the borrower's emissions, estimated in your account, scaled by the outstanding amount over the borrower's enterprise value including cash (total assets when EVIC is not supplied). That ratio is written as OWNERSHIP.
  • Geospatial: Physical assets pinned to a location, one row per asset.

Using the App

Via the user interface

  1. Input. Upload a CSV or Excel file for a single asset class per run. Templates and sample files for each asset class are provided in the 'About' page of the app.

  2. Mapping. Confirm which of your columns maps to each required field. Rows with problems are flagged here and must be fixed before you can run.

  3. Run. Submit the portfolio. Large portfolios take a few minutes. You can leave the page and reopen the run when it completes.

  4. Results. Review the summary, charts and most exposed entities, or download the full set of results.

Via SQL

You can also run the app without the UI. The pages below cover the full SQL surface and every input and output column; this section is the short version.

  • SQL reference: every procedure the app grants you, with arguments and examples.
  • Data dictionary: the columns you supply and the columns you get back, per asset class.
-- grant permissions to the app
GRANT EXECUTE TASK ON ACCOUNT TO APPLICATION <app>;
GRANT EXECUTE MANAGED TASK ON ACCOUNT TO APPLICATION <app>;

-- bind your portfolio view to the app's input_portfolio reference (the UI
-- does not need this; it works from an uploaded file):
CALL <app>.SRC.UPDATE_REFERENCE(
  'input_portfolio', 'ADD',
  SYSTEM$REFERENCE('VIEW', '<your_db>.<your_schema>.<portfolio_view>', 'PERSISTENT', 'SELECT')
);

-- for geospatial risk from SQL, bind a view of your assets to the app's
-- input_assets reference (again, the UI uploads a file instead):
CALL <app>.SRC.UPDATE_REFERENCE(
  'input_assets', 'ADD',
  SYSTEM$REFERENCE('VIEW', '<your_db>.<your_schema>.<assets_view>', 'PERSISTENT', 'SELECT')
);

-- (no INIT step: granting EXECUTE MANAGED TASK above fires the app's grant
-- callback, which provisions the serverless run tasks automatically)

-- submit a run (returns a job id). Risk is not a separate task type: it is an
-- output of the emissions task, requested via the params `outputs` list plus
-- `scenarios` (and, optionally, `risk_years`).

-- emissions only:
CALL <app>.SRC.SUBMIT_TASK('emissions', {});

-- emissions + climate risk (writes both DATA.EMISSIONS and DATA.CLIMATE_RISK).
-- Omit `scenarios` to run all 16; the ids are listed under "Climate scenarios"
-- below. An id outside that list fails the run before any compute.
CALL <app>.SRC.SUBMIT_TASK('emissions', OBJECT_CONSTRUCT('outputs', ARRAY_CONSTRUCT('emissions','risk'), 'scenarios', ARRAY_CONSTRUCT('ngfs_net_zero','ipcc_ar6_bau'), 'risk_years', ARRAY_CONSTRUCT(2030, 2050)));

-- geospatial risk for every asset in the view bound to input_assets:
CALL <app>.SRC.SUBMIT_TASK('geospatial', {});

-- check progress:
SELECT * FROM <app>.DATA.TASKS ORDER BY TASK_ID DESC;

-- read results once the job is COMPLETED:
SELECT * FROM <app>.DATA.EMISSIONS;
SELECT * FROM <app>.DATA.CLIMATE_RISK;
SELECT * FROM <app>.DATA.GEOSPATIAL_RESULTS;