Carbon emissions in the 20C G-Cubed model

This document describes the carbon emissions features of the 20C G-Cubed model version.

Use lowercase variables for variables in the database.

Use uppercase variables for variables in the model equations.

Throughout, all references to dollars are to US dollars.

Note that database values and values in simulation layers are all multiplied by 100. Therefore, when we prepare the database or simulation adjustment layers for use in the model, we first divide by 100.

Those variables with units that end in gdp, but not usgdp, are expressed as a fraction of local GDP, valued in base year US dollars. To prepare those variables for use in the model, we multiply them by YRATR, the base year ratio of local GDP to US GDP to convert fractions of local GDP to fractions of US GDP in the base year. For example, variables with units gdp and variables with units of mmtgdp are both multiplied by YRATR to convert them from their database representation to their model representation.

In the database file emco2 values represent 100x millions of metric tonnes per $US billions dollars of local GDP. It has units of mmtgdp. Therefore, when we prepare emco2 for use with the model, we divide by 100 and then multiply by YRATR. The resulting values for EMCO2 are millions of metric tonnes of emissions per billion dollars of US GDP:

EMCO2 = YRATR * (emco2 / 100)

Likewise, demand for an energy good by a sector in a region is given in the database by en. It is 100x $US billions of dollars of demand for the energy good by the sector per $US billions dollars of local GDP. Its units are gdp.

When we prepare that data for use with the model equations, we divide by 100 and multiply by YRATR. The resulting values for EN are $US billions of dollars of demand for the good by the sector per billion dollars of US GDP.

EN = YRATR * (en / 100)

Note that, once we have done raw projections, we convert raw projections of EMCO2 and EN etc back to database values by reversing the equation above, solving for the database value.

CO2 emission intensities

CO2 emission intensity is captured for each energy good used by each sector and for each energy good consumed by households (as part of their final demand).

The emissions intensity is captured in the form of coefficients. The coefficients are used to determine emissions from sectoral demand for energy goods and final demand for energy goods.

Note that these coefficients are specified for the goods with embodied CO2 are produced by the sectors:

  1. Coal mining - produces coal
  2. Gas extraction - produces natural gas
  3. Petroleum refining - produces liquid fossil fuels
  4. Oil extraction - produces all other oil-derivative products like bitumen, plastics etc. (This is ignored for now because the carbon in these derivative products is deemed to be sequestered. This approach follows that of the MIT EPPA model. The MIT model has emission coefficients on coal, refined oil, and natural gas.)

Define the carbon emissions intensity coefficient for a good used by a sector as:

co2coef = millions of metric tonnes of carbon emissions / $US billions of dollars of demand for the energy good by the sector.

The model equation for sectoral emissions

The equation for EMCO2 is:

EMCO2 = sum(energy goods, co2coef*EN)

Substitute in the units to check that the LHS and RHS are scaled correctly, we have:

millions of metric tonnes of emissions / billion dollars of US GDP = 
sum(energy goods, 
    (millions of metric tonnes of carbon emissions / billions of dollars of demand for the energy good) * 
   (billions of dollars of demand for the energy good / billion dollars of US GDP)
)

The billions of dollars of demand for the energy good cancel, confirming that this equation for EMCO in the model is consistent from a units perspective. Thus, there is no need for any scaling factor to be applied in the EMCO2 equation.

In logs, the equation is:

exp(lnEMCO2)*YRATR = sum(energy goods, co2coef*exp(lnEN)*YRATR)

Simplifying by multiplying through by YRATR and logging both sides, we have:

lnEMCO2 = ln( sum(energy goods, co2coef*exp(lnEN)))

Final demand emissions

CO2 emissions associated with final demand are measured as millions of metric tonnes per $US billions of GDP.

EMCO2FD = sum(goods_e, co2coefFD*FDEN);

Note that the final demand emissions intensity coefficients are again defined as:

co2coefFD = millions of metric tonnes of carbon emissions / $US billions of dollars of final demand for an energy good.

Total emissions by region

Total emissions are equal to the sum of emissions caused by each good, across sectors and final demand:

EMCO = sum(sec_std, EMCO2) + EMCO2FD;

Carbon taxes and prices

NOMINAL carbon tax, tcps, has dollar units. In the database and in simulation layers, tpcs captures 100 times the NOMINAL dollar tax per metric tonne of emissions caused by the energy good in the sector.

A value of 1,000 in the simulation layer CSV file, for example, represents a nominal tax of $10 per metric tonne of emissions. Divide tcps by 100 to get the model variable, TCPS, which measures units of dollars per metric tonne of emissions.

Note that there is a question about what currency TCPS is in.

The carbon tax is added to the pre-tax producer price of the energy good, in local currency units, PRS to give the tax-adjusted produce price of the energy good, PRT.

In the base year, 2018,PRS is the before-tax price of $1 worth of the energy good. To determine the tax associated with the emissions caused by $1 of the energy good in 2018, use the co2coef value. co2coef has units of 1,000,000s of metric tonnes of emissions per $1,000,000,000. This is equivalently metric tonnes of emissions per $1,000. To get metric tonnes of emissions per $1 of the energy good, divide co2coef by 1,000.

The dollar tax per metric tonne is TCPS so the tax associated with $1 of the energy good should be TCPS*co2coef/1,000. The adjustment of the shadow price on carbon, SCON, is identical. Thus, the after-tax sector-specific price of each energy good is given by:

goods_e: PRT  = ln( exp(PRS)*(1+TAX) + TXGS + (TCPS + SCON)*co2coef/1000 )

PRY is the pre-tax price of the composite energy good, combining locally production with imports. In the base year, 2018, it is the before-tax price of $1 worth of the composite energy good. The nominal carbon tax, TCPSFD, and the nominal shadow carbon tax, SCON also combine to increase the pre-tax purchase price of the composite energy good, PRY. To determine the tax associated with the emissions caused by that $1 of the energy good in 2018, use the co2coefFD value and again divide by 1000 so that we are capturing metric tonnes per $1.

For the combined energy good, E, the consumer pays the after-tax price, PRCE, given by:

PRCE =    cd_eH  *     sum(goods_e, delta_eH*ln( exp(PRY(goods_e)) + (TCPSFD(goods_e) + SCON)*co2coefFD/1,000 ))
     + (1-cd_eH) * ln( sum(goods_e, delta_eH*  ( exp(PRY(goods_e)) + (TCPSFD(goods_e) + SCON)*co2coefFD/1,000 ))^(1-sigma_eH)) / (1-sigma_eH*(1-cd_eH)) ;

Demand for the energy goods

The after-tax prices influence demand for the energy goods by the sectors and the consumer.

The sectoral demand for each energy good is:

goods_e: EN = delta_e  * ENT  * exp( PRE - PRT )^sigma_e(sec_std);

where PRE is the sector price of combined energy good, E, a weighted combination of PRT across energy goods.

In log form, this is written:

goods_e: exp(lnEN)*YRATR = delta_e  * exp(lnENT)*YRATR  * exp( PRE - PRT )^sigma_e(sec_std);

Cancelling YRATR on both sides and logging both sides gives the model equation in log form:

goods_e: lnEN = ln(delta_e)  + lnENT + sigma_e(sec_std)*(PRE - PRT);

The final demand for each energy good is:

goods_e: FDEN = CON;
goods_e: CON = delta_eH*CNPE*exp( PRCE - ln( exp(PRY) + (TCPSFD + SCON)*co2coefFD/1000 ) )^sigma_eH;

Note that CNPE is household demand for the combined energy good, E, produced by combining all of the different energy goods that are available to households.

In log form, this is written:

goods_e: exp(lnFDEN)*YRATR = exp(lnCON)*YRATR = 
goods_e: exp(lnCON)*YRATR = delta_eH*exp(lnCNPE)*YRATR*exp( PRCE - ln( exp(PRY) + (TCPSFD + SCON)*co2coefFD/1000 ) )^sigma_eH;

Cancelling YRATR on both sides and logging both sides gives the model equation in log form:

goods_e: lnFDEN = lnCON
goods_e: lnCON = ln(delta_eH)  + lnCNPE + sigma_eH * ( PRCE - ln( exp(PRY) + (TCPSFD + SCON)*co2coefFD/1000 ) );

Revenue from carbon taxes

The revenue from carbon taxes, on an energy good, in a sector, is captured as RVGSSG. It has units of billions of dollars of revenue per billions of dollars of US GDP.

Revenue calculation is based on co2coef, EN, and TCPS and the log price index, PRID.

co2coef * EN yields the millions of tonnes of emissions per billion dollars of US GDP.

The tax, TCPS, is the nominal tax per metric tonne so multiply it by 1,000,000 to get the tax per million metric tonnes of emissions. Thus co2coef * EN * TCPS * 1,000,000 is the nominal dollars of tax revenue per $US billions of dollars of US GDP.

The tax revenue needs to be expressed in billions of dollars per $US billions of dollars of US GDP rather than dollars per $US billions of dollars of US GDP so divide by 1,000,000,000.

Cancelling the 1,000,000 with the 1,000,000,000, we get the contribution to RVGSSG, in billions of dollars, per billion dollars of GDP:

RVGSSG = (co2coef * EN * TCPS / 1,000) / exp(PRID)

Similarly, for each region/energy good consumed as part of final demand, the total revenue from carbon taxes is:

RVGSFD = (co2coefFD * FDEN * TCPSFD / 1,000) / exp(PRID)

Note that the division by exp(PRID) converts the nominal billions of dollars of revenue to real billions of dollars of revenue.

Sum the contributions from all energy goods to get tax revenue by sector, RVGSS:

RVGSS = sum(good_e, RVGSSG)

Sum across sectors and final demand to get total tax revenue, RVGS in billions of dollars, per billion dollars of GDP:

RVGS = sum(sector, RVGSS) + RVGSFD

Recall that the database values for the various variables would be:

rvgssd = RVGSSG * (100 / YRATR)
rvgss = RVGSS * (100 / YRATR)
rvgsfd = RVGSFD * (100 / YRATR)
rvgs = RVGS * (100 / YRATR)
en = EN * (100 / YRATR)
fden = FDEN * (100 / YRATR)
tcps = TCPS * 100
tcpsfd = TCPSFD * 100
prid = PRID * 100

To compute rvgssg use these equivalencies to express the model equation in terms of database variables:

rvgssg * (YRATR / 100) = ((co2coef / 1,000) * (en * YRATR / 100)  * (tcps / 100)) / exp(prid/100)

Cancel YRATR / 100 on both sides and gather terms in the denominator:

rvgssg = ( (co2coef/1000) * en * (tcps / 100) ) / exp(prid/100)

Doing the same for rvgsfd:

rvgsfd = ( (co2coefFD/1000) * fden * (tcpsfd / 100) ) / exp(prid/100)

Sum revenue contributions for each region to get rvgs for that region.


This site uses Just the Docs, a documentation theme for Jekyll.