Add WACC module and a new realization in the MACRO module about investment inefficiencies - #2278
daymontas1 wants to merge 73 commits into
Conversation
|
PR in mrremind for the required input data here: pik-piam/mrremind#778 |
nicobauer
left a comment
There was a problem hiding this comment.
HI Diamantis. I left a few comments. Mostly they are on deletions of unnecessary lines that are commented anyways. ONly in the postsolve for the WACCS are two more important comments. Thanks and see you latter.
| * WACC implementation on capital costs | ||
| ***--------------------------------------------------------------------------- | ||
| ***This equation calculates the weighted average cost of capital (WACC) costs for new and existing technologies while ensuring that each past investment is assigned the correct WACC from the year | ||
| q25_techwaccCost(t, regi)$(t.val > 2005).. |
There was a problem hiding this comment.
Do I see correctly that the tech-wacc parameters already include the country specific wacc parameters?
| sum((t2)$((t.val - t2.val <= pm_lifetime_max(regi,tewacc)) and (t2.val < t.val)), | ||
| (vm_costInvTeDir.l(t2, regi, tewacc) | ||
| + vm_costInvTeAdj.l(t2, regi, tewacc)$teAdj(tewacc) | ||
| ) * p25_techwacc(t2, regi, tewacc) * pm_ts(t2)/2); |
There was a problem hiding this comment.
The /2 is the critical parameter that you wanted to x-check with Ropert Pietzcker. Right?
|
@LaviniaBaumstark Hi Lavinia, before finalizing this PR, there is an issue we need to address. With the capital markets implementation, I face convergence issues in REMIND. I have mainly addressed these by decreasing the lifetime of macro investments. In the previous REMIND version, I increased the limit used in the respective equation (see slide 2 in the attached presentation to this PR, equation investment lifetime) from 1% to 10%, and the model converged Is it possible to relax REMIND in some way so that we deal with this more fundamentally while keeping the investment lifetime at its originally planned level (in principle, 1% of the original value)? Or close to that level ? Thanks! |
|
On Friday there was a (quick)fix for non-converging PkBudg-scenarios. I would try this. If possible, pull from develop branch |
…tment inefficiencies
00e1006 to
c21d420
Compare
The mrremind PR with the input data of this REMIND PR was merged: pik-piam/mrremind#822 |
|
I checked the calibration file for the macro-parameters. I find several gaps in the red-labeled calibrations (not for SSA, which was our bad case, but other countries). For example in the US I find this gap for late periods. We can see that the scenario wants the trajectory to decrease, but the model seems unable. This makes me wonder whether there are any lower bounds or bottlenecks that prevent the model to find a calibration that fits the benchmark data. @LaviniaBaumstark do you have any candidates? Is this encountered in other csaes as well? |
LaviniaBaumstark
left a comment
There was a problem hiding this comment.
please do not add soo many new config files, are all needed?
LaviniaBaumstark
left a comment
There was a problem hiding this comment.
Do we need to merge the realization "investment_inefficiencies" together with adding "25_WACC" module?
|
|
||
| vm_flexAdj(tall,all_regi,all_te) "flexibility mark-up cost or subsidy, used to emulate price changes of technologies which see lower-than-average or higher-than-average electricity prices due to more or less flexible operation[T$/TWa]" | ||
|
|
||
| vm_waccCost(ttot,all_regi) "difference between WACC costs in current and previous iteration" |
There was a problem hiding this comment.
Will this info be beprovided by the 25_WACC module? If so, the declaration should go to the module
There was a problem hiding this comment.
If I remember correctly, when I declared it in the 25 module a check flagged an issue, because it is an interface variable, it is used in more than one module (it also appears in the budget equation). This is why I moved it there. Now, I declare it only at this point. Should I move it to the 25_module ?
There was a problem hiding this comment.
yes, move it but keep the name
| *** | Contact: remind@pik-potsdam.de | ||
| *** SOF ./modules/25_WACC/off/bounds.gms | ||
| *fix the WACC term of the budget equation equal to zero for all times | ||
| vm_waccCost.fx(t, regi) = 0; |
There was a problem hiding this comment.
please add the declariation of vm_waccCost to the 25_WACC module
| *** | REMIND License Exception, version 1.0 (see LICENSE file). | ||
| *** | Contact: remind@pik-potsdam.de | ||
| *** SOF ./modules/25_WACC/off/bounds.gms | ||
| *fix the WACC term of the budget equation equal to zero for all times |
There was a problem hiding this comment.
please start this line with ***
| # the requested version of renv | ||
| version <- "1.1.7" | ||
| attr(version, "md5") <- NULL | ||
| attr(version, "md5") <- "dd5d60f155dadff4c88c2fc6680504b4" |
There was a problem hiding this comment.
do not merge changes on the renv folder
|
|
||
| ## [Unreleased] | ||
|
|
||
| - **scripts** include reporttransport/remind2 (EDGE-T/REMIND) variable harmonization. reporttransport (EDGE-T side) energy service demand is rescaled to match exactly remind2 ES/FE/Emi values for variables reported by both models |
There was a problem hiding this comment.
looks like a merge left over. Please add your changes (e.g. add new module 25_WACC) to the CHANGELOG.md
| *** | Contact: remind@pik-potsdam.de | ||
| *** SOF ./modules/25_WACC/standard/bounds.gms | ||
| *fix budget equation term to zero for 2005 | ||
| ***vm_waccCost.fx("2005",regi) = 0; |
There was a problem hiding this comment.
delete these out-commented line
| ) - p25_techwaccCostO(t, regi); | ||
|
|
||
| ***This equation calculates the capital costs for macroeconomic investments, including those coming from previous periods that are within their lifetime | ||
| q25_invwaccCost(t, regi)$(t.val > 2005) .. |
There was a problem hiding this comment.
you do not need to add $(t.val > 2005) if you use t in the equation
| ***--------------------------------------------------------------------------- | ||
| *' Calculation of total WACC costs | ||
| ***--------------------------------------------------------------------------- | ||
| p25_waccCostO_tewacc(t, regi, tewacc) = |
There was a problem hiding this comment.
Do you want to recalculate this also for fixed time periods?
|
|
||
| p25_techwaccCostO(t, regi) = sum(tewacc, p25_waccCostO_tewacc(t, regi, tewacc)); | ||
|
|
||
| *** EOF ./modules/25_WACC/standard/postsolve.gms |
| *** | REMIND License Exception, version 1.0 (see LICENSE file). | ||
| *** | Contact: remind@pik-potsdam.de | ||
| *** SOF ./modules/25_WACC/standard/presolve.gms | ||
|
|
There was a problem hiding this comment.
if this file is empty, delete it
| *** | Contact: remind@pik-potsdam.de | ||
| *** SOF ./modules/25_WACC/standard/sets.gms | ||
|
|
||
| *** No new sets are directly related to this module. |
There was a problem hiding this comment.
I do not understand this sentence as you are adding a set
They are independent, so we don't have to. However, that would require creating a new branch where I remove the investment inefficiencies realization and commit only the changes in module 25. Is there an easier way to do this? In any case, this new realization does not affect the standard realization in the macro module, and the corresponding mrremind data have already been merged. Based on these, how should I proceed? |
No, I can remove them. |
In general, I would prefer having seperate PRs for different features |
Ok, I will split them. |
|
Closing this in favor of PR #2378 (PR for investment inefficiencies will follow). |

Capital Market Modelling in REMIND.pptx
Cost_of_Capital_Documentation_v2.docx
Purpose of this PR
This PR introduces (1) a new realization in the macro module that accounts for investment losses arising from domestic capital market inefficiencies, and (2) a new module (Module 25_WACC) for calculating capital costs associated with energy-system and macroeconomic investments.
Description
Investment_Inefficiencies
The Investment_Inefficiencies realization in the macro module computes the share of new investments that is not transformed into productive capital due to financial frictions, misallocation, installation costs, or other inefficiencies. A parameter, φ, is introduced into the capital accumulation equation to represent these inefficiencies.
Specifically, φ captures the share of gross investment that successfully translates into productive capital in each region. Regional φ values are calibrated using literature-defined bounds* and empirical data on the efficiency of financial systems.
Module 25_WACC
Module 25_WACC computes, for each time period, technology-specific weighted average cost of capital (WACC)–related costs for the energy system, as well as costs associated with macroeconomic investment flows.
Energy-technology WACC costs consist of:
(i) costs associated with newly installed capacity in the current period, and
(ii) residual costs of technologies that remain in operation from previous periods.
This structure relies on the assumption that the repayment period equals the technical lifetime of each technology. Input WACC data are primarily drawn from Calcaterra et al. and are aggregated to REMIND regions using GDP-weighted averages of the countries comprising each region.
From these values, WACC mark-ups are derived and defined as the difference between the WACC of a given technology–region pair and the lowest observed WACC. The latter corresponds to natural-gas power generation in the USA and the CAZ region (Canada, Australia, and New Zealand), which serves as the risk-free reference case (i.e., zero mark-up) against which all other combinations are benchmarked.
To preserve budget neutrality, WACC-related costs are recycled back into the economy. At the same time, to capture the stimulating effect of WACC costs on investment decisions, WACC costs calculated in the previous model iteration are deducted from those computed in the current iteration. As the model converges, the net WACC cost component in the budget constraint approaches zero.
Further documentation is provided in the attached presentation and Word file.
Parts concerned
Impact
Checklist
Do not delete any line. Leave unfinished elements unchecked so others know how far along you are.
In the end all checkboxes must be ticked before you can merge.
make test) after my final commit and all tests pass (FAIL 0)remind2if and where it was neededforbiddenColumnNamesin readCheckScenarioConfig.R in case the PR leads to deprecated switchesCHANGELOG.mdcorrectly (added, changed, fixed, removed, input data/calibration)Further information (optional)