Basic question - running policy hypotheticals in DICE

Hi all,

I’m just starting to play around with DICE in Mimi. I’m hoping to find a way to compare the baseline scenario to a hypothetical carbon price path. I’d then like to be able to pull the different time-paths of variables into a .csv or excel file or similar (ideally the paths from both model runs). Is this possible?

Thanks in advance.

Hi @CharlieHutc welcome to the forum! What you suggest here does sound feasible to me, although I’m a little bit unclear perhaps on the details.

I would say that if you want to implement a hypothetical carbon price, you would need to decide how that is going to hook into the existing DICE model. For example, do you convert that price into an abatement path (currently the MIU variable in DICE), how do you link into effects on the economy etc. I’m guessing there are ideas and established methods in the literature one can use though so you won’t have to reinvent the wheel.

Once you decide how a carbon price would effect the variables in DICE, such as the abatement rate, the net economy, etc., then you could make the modifications necessary using functionality like adding or replacing components, updating exogenous variables, etc. and then use the data access functions like those described here to take a look at your outputs from different model specifications.

Happy to talk further about the way you can add those modifications to Mimi!

Hi @lrennels, thanks for the warm welcome.

I’m fairly new to this literature, so I may be misunderstanding (and forgive me if I am!). The reason I’m interested in the carbon price is because I’m hoping to run a policy hypothetical through DICE where I specify a path of carbon prices and see how the various components of the model react. The reason that I asked so bluntly is because of something I read in Nordhaus’ DICE-2013R user’s manual, which goes into detail on how the model operates. In this doc, Nordhaus says the following:

Early versions of the DICE and RICE models used the emissions control rate as the control variable in the optimization because it is most easily used in linear-program algorithms. In recent versions, we have also incorporated a carbon tax as a control variable. This can be accomplished using an Excel SOLVER version with a modified Newton method to find the optimum. It can also be used in the GAMS version if the carbon price is solved explicitly (which can be done in the current version). The carbon price is determined by assuming that the price is equal to the marginal cost of emissions. The marginal cost is easily calculated from the abatement cost equation in (6) and by substituting the output equations.

I suppose my questions are twofold:

  1. Can the control variable be switched from the emissions control rate to the carbon price? It seems to me (if I’ve understood this all correctly) that there should essentially be a mapping between the two of them, as the emissions control rate implies the marginal cost of abatement, which is (optimally) set equal to the carbon price.

  2. Is there a way to feed Mimi a hypothetical carbon price path and see how the other variables in the model react? This is why I’m wondering about 1) - what I would like to be able to do is have a hypothetical policy path/a vector of carbon prices over time and (not optimizing the model) run the vector through the equations of the model to see what the results are on the economy and the climate. For example - what Nordhaus calls the baseline scenario has an implied carbon price. What would the consequences be in the model if I were to increase that carbon price by $1 in every period relative to the baseline?

Thanks again for your help!!

Hi @CharlieHutc thanks for the response and I apologize if I created any confusion, since I am not deeply well versed in all the models on the platform I’ll try to hew closer to advising on Mimi support and functionality so as not to lead you astray, but you are correct it looks like DICE has a CPRICE variable in the neteconomy component, and that the equations there would let you map between emissions control rates and the carbon price. I see that variable here, so would say looking at that component and how it is connected to the model is probably the right first step! Our DICE model should mirror the published version, so variables, parameters, and equations found in GAMS and Excel are also seen in the Mimi model.

So I think your hypothesis for (1) is correct, there seems to be a mapping, although I’d need to look more closely at the equation to see if there’s any additional nuances there to be aware of.

For (2) you could certainly run the model in its baseline state and look at the carbon price that results from the baseline settings with something like the following (see 2 Run an Existing Model · Mimi.jl)

m = MimiDICE2013.get_model()
run(m)
explore(m) # for graphics
getdataframe(m, :neteconomy, :CPRICE) # for a dataframe

You can modifying exogenous variables with the update_param! function, so that could be used to update the control rate MIU or other parameters.

update_param!(m, :neteconomy, :MIU, <my vector of control rates>)
run(m)

And take a look at the results.

Again I’m not an expert on this aspect of DICE, so don’t take my word for what the right conceptual approach is but these are certainly things you can play with using the functionalities listed above. Let me know if that helps and if you have any further questions.