Add WACC module and a new realization in the MACRO module about investment inefficiencies#2278
Add WACC module and a new realization in the MACRO module about investment inefficiencies#2278daymontas1 wants to merge 2 commits intoremindmodel:developfrom
Conversation
…tment inefficiencies
|
PR in mrremind for the required input data here: pik-piam/mrremind#778 |
| * (1 - pm_delta_kap(regi,in)) | ||
| ** (pm_ttot_val(ttot+1) - pm_ttot_val(ttot)) | ||
| + p01_cumDeprecFactor_old(ttot+1,regi,in) * vm_invMacro(ttot,regi,in) * p01_investeffectv(regi) | ||
| * + p01_cumDeprecFactor_old(ttot+1,regi,in) * vm_invMacro(ttot,regi,in) |
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.
| + p01_cumDeprecFactor_old(ttot+1,regi,in) * vm_invMacro(ttot,regi,in) * p01_investeffectv(regi) | ||
| * + p01_cumDeprecFactor_old(ttot+1,regi,in) * vm_invMacro(ttot,regi,in) | ||
| + p01_cumDeprecFactor_new(ttot+1,regi,in) * vm_invMacro(ttot+1,regi,in) * p01_investeffectv(regi) | ||
| * + p01_cumDeprecFactor_new(ttot+1,regi,in) * vm_invMacro(ttot+1,regi,in) |
| * + p01_cumDeprecFactor_new(ttot+1,regi,in) * vm_invMacro(ttot+1,regi,in) | ||
| ; | ||
|
|
||
| * * p01_investeffectv(regi) * (1 + (sum(inLocal, vm_invMacro(ttot+1,regi,inLocal)) - sum(inLocal, vm_invMacro(ttot,regi,inLocal))) / sum(inLocal, vm_invMacro(ttot,regi,inLocal))) |
| *fix the WACC term of the budget equation equal to zero for all times | ||
| vm_waccCost.fx(t, regi) = 0; | ||
|
|
||
| ***vm_techwaccCost(t, regi) = 0; |
There was a problem hiding this comment.
If not needed, Please delete.
| *** | 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; |
| ***Zero WACC for energy technologies is used for calibration | ||
| ***p25_techwacc(t, regi, tewacc) = 0; | ||
|
|
||
| Parameter p25_invwacc(ttot, all_regi) "WACC markup for each country" |
There was a problem hiding this comment.
please reneame to counwacc or similar. "inv" is not so intuitive b/c it wcould also refer to techs. Also the ccs4r files should be named more intuitively.
| *** | Contact: remind@pik-potsdam.de | ||
| *** SOF ./modules/25_WACC/standard/declarations.gms | ||
|
|
||
| Parameters |
There was a problem hiding this comment.
Please add the units. That helps a lot to understand the code.
| ***--------------------------------------------------------------------------- | ||
| * 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 |
There was a problem hiding this comment.
Please add a line in the comments about the p25_techwaccCostO. Same for next commend.
| * 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?
| ***--------------------------------------------------------------------------- | ||
| *' Calculation of total WACC costs | ||
| ***--------------------------------------------------------------------------- | ||
| p25_waccCostO_tewacc(t, regi, tewacc) = |
There was a problem hiding this comment.
Wherre is this parameter used again?
| 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?
| vm_taxrevimplicitQttyTargetTax(ttot,all_regi) "tax revenue of implict tax for quantity target bound [T$]" | ||
| vm_taxrevimplicitPriceTax(ttot,all_regi,entySe,all_enty,sector) "tax revenue of implict tax for final energy price target [T$]" | ||
| vm_taxrevimplicitPePriceTax(ttot,all_regi,all_enty) "tax revenue of implict tax forprimary energy price target [T$]" | ||
| vm_waccCost(ttot,all_regi) "difference between WACC costs in current and previous iteration" |
There was a problem hiding this comment.
why are these variables added here? Might it be a merge error?
There was a problem hiding this comment.
please delete empty files
| *' * (singleSectorGr) neo-classical, single sector growth model | ||
| $setGlobal macro singleSectorGr !! def = singleSectorGr | ||
| *' * (Investment_Inefficiencies) Investment losses due to domestic capital market inefficiencies | ||
| $setGlobal macro Investment_Inefficiencies !! def = singleSectorGr |
There was a problem hiding this comment.
the default scenario would still be singleSectorGr please check for the final PR!
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)