GenXProject / GenX.jl

GenX: a configurable power system capacity expansion model for studying low-carbon energy futures. More details at : https://genx.mit.edu
https://genxproject.github.io/GenX.jl/
GNU General Public License v2.0
269 stars 114 forks source link

CO2 tax as standard option in code (request and code draft) #200

Open DanielNavia1 opened 2 years ago

DanielNavia1 commented 2 years ago

Hi,

One feature that I think would be very useful is to allow the simulation to run with an exogenous price of CO2 (ie. a CO2 tax). I know some of the branches have been working on this. I have seen this commit https://github.com/GenXProject/GenX/commit/519862a4a4e708881b0d9dd107ff49495e200e37 and the FLECCs branch https://github.com/GenXProject/GenX/commit/688303f987c6d27628b40a524bccb4f9f0c651f4 which have CO2Tax module. My suggestion is to make this a standard option for the core implementation of GenX.

I realize the ability of GenX to solve for the dual price when CO2Cap is activated is very powerful, but there are many situations where users/planners will want to work the other way around: from a given CO2 tax to the resulting optimal dispatch, capacity expansion and level of CO2 emissions. When the CO2 cap & trade system covers other sectors besides power, translating aggregate restrictions into a relevant CO2 budget for electricity in GenX may be difficult, for example. There are cases of countries setting administrative carbon price floors (see Newbery, Reiner and Ritz, 2019 for the UK case and a literature review). In practice, this is how electricity/energy regulators are operating in many relevant cases (ACER uses an exogenous CO2 price for their planning of European networks, for example, and EU countries are using it for their indicative energy planning too).

I have written a version of this for my own use. I have a new CO2cap code (==4) for this option in the setup file (this way I rule out having emission budgets and a CO2 tax simultaneously. This is conceptually clearer, but I think this is not how the previous branches were approaching it. In reality both are coexisting in several cases, so that could be an interesting extension).

I am attaching the files for the modified functions here: https://github.com/DanielNavia1/GenX-CO2Tax/commit/34ec71db3b14ae4be42eed246a9138733702d5eb. The files are based in the code in version 2.0 (I did this before recent changes).

If you think this is something worth trying, I can update the functions for v0.3.0 and create a pull request with my proposal for the code.

Thanks again

Daniel Navia

JesseJenkins commented 2 years ago

Thanks for the suggestion. We plan to integrate this into an update soon. As you noted, it is present in a couple of development branches now and we were waiting to get v0.3.0 out the door before integrating. We appreciate the suggestion and sample code. Jesse Jenkins

On Mon, May 2, 2022 at 7:25 PM DanielNavia1 @.***> wrote:

Hi,

One feature that I think would be very useful is to allow the simulation to run with an exogenous price of CO2 (ie. a CO2 tax). I know some of the branches have been working on this. I have seen this commit 519862a https://github.com/GenXProject/GenX/commit/519862a4a4e708881b0d9dd107ff49495e200e37 and the FLECCs branch 688303f https://github.com/GenXProject/GenX/commit/688303f987c6d27628b40a524bccb4f9f0c651f4 which have CO2Tax module. My suggestion is to make this a standard option for the core implementation of GenX.

I realize the ability of GenX to solve for the dual price when CO2Cap is activated is very powerful, but there are many situations where users/planners will want to work the other way around: from a given CO2 tax to the resulting optimal dispatch, capacity expansion and level of CO2 emissions. When the CO2 cap & trade system covers other sectors besides power, translating aggregate restrictions into a relevant CO2 budget for electricity in GenX may be difficult, for example. There are cases of countries setting administrative carbon price floors (see Newbery, Reiner and Ritz, 2019 for the UK case and a literature review). In practice, this is how electricity/energy regulators are operating in many relevant cases (ACER uses an exogenous CO2 price for their planning of European networks, for example, and EU countries are using it for their indicative energy planning too).

I have written a version of this for my own use. I have a new CO2cap code (==4) for this option in the setup file (this way I rule out having emission budgets and a CO2 tax simultaneously. This is conceptually clearer, but I think this is not how the previous branches were approaching it. In reality both are coexisting in several cases, so that could be an interesting extension).

I am attaching the files for the modified functions here: @.*** https://github.com/DanielNavia1/GenX-CO2Tax/commit/34ec71db3b14ae4be42eed246a9138733702d5eb. The files are based in the code in version 2.0 (I did this before recent changes).

If you think this is something worth trying, I can update the functions for v0.3.0 and create a pull request with my proposal for the code.

Thanks again

Daniel Navia

— Reply to this email directly, view it on GitHub https://github.com/GenXProject/GenX/issues/200, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACPYTSC7E6MFG72EWGQKDALVIBQAJANCNFSM5U5MDEEQ . You are receiving this because you are subscribed to this thread.Message ID: @.***>

xuqingyu commented 2 years ago

Thank you, Daniel and Jesse, In the coming update, we'll have the option to implement both carbon cap and tax simultaneously in a system. Qingyu

xuqingyu commented 2 years ago

THis will be done in the #216

sambuddhac commented 2 years ago

So, as I understand currently, the #216 is under reformatting, right @xuqingyu ? I will then wait till that's finished. Will close this issue once I test and merge the newly formatted #216

xuqingyu commented 2 years ago

Yes, it is under reformatting.

sambuddhac commented 6 months ago

So this is same as Issue #526 and as pointed out by @JesseJenkins , @filippopecci , and myself, the CO2 slack is equivalent to this and the example in the tutorial https://github.com/GenXProject/GenX-Tutorials/blob/main/Tutorials/Tutorial_7_Setup.ipynb shows how to define CO2 price using the slack. @xuqingyu is there anything additional you think of?

JesseJenkins commented 6 months ago

The only difference between using the slack parameter for this and a true carbon tax would be calculating the tax revenue as a transfer, as that "cost" isn't really disappearing, it is collected as government revenues. The same could be true for emissions caps too if permits are auctioned. I'm not sure we need this functionality. Maybe other users have an opinion.

For now, I think we can close this with comment and point to an appropriate explanation in Docs on how to configure an emissions cap with a slack parameter to implement a carbon penalty/tax.

On Mon, Mar 25, 2024, 2:52 PM Chakrabarti, Sambuddha (Sam) < @.***> wrote:

So this is same as Issue #526 https://github.com/GenXProject/GenX.jl/issues/526 and as pointed out by @JesseJenkins https://github.com/JesseJenkins , @filippopecci https://github.com/filippopecci , and myself, the CO2 slack is equivalent to this and the example in the tutorial https://github.com/GenXProject/GenX-Tutorials/blob/main/Tutorials/Tutorial_7_Setup.ipynb shows how to define CO2 price using the slack. @xuqingyu https://github.com/xuqingyu is there anything additional you think of?

— Reply to this email directly, view it on GitHub https://github.com/GenXProject/GenX.jl/issues/200#issuecomment-2018683169, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACPYTSFU4AVKLSRZZQO5JITY2BW5XAVCNFSM5U5MDEE2U5DIOJSWCZC7NNSXTN2JONZXKZKDN5WW2ZLOOQ5TEMBRHA3DQMZRGY4Q . You are receiving this because you were mentioned.Message ID: @.***>

sambuddhac commented 5 months ago

This will be added as a new feature in GenX v0.4.1 hopefully.