InfHorz + Transitions, ExpAssets questions

I have spent some time reading VFI in InfHorz: Howards, PFI, and relation to implicit finite differences, which gives some background to the question(s) I pose here.

I’m modeling an energy provider (InfHorz) navigating an energy transition from fossil to renewable energy over a period of years (lots of transport runs on fossil fuel today, if you must know). Ignoring for the moment how the users of this energy are modeled (and how they transition), the naive solution that my model gives is that it should just do the whole transition in year 1 because that’s “best”. It’s also unrealistic.

I’d like to add to the model the constraint that the energy provider can install some small finite number of renewable units per period based on solving the GE for that period. Then we compute the optimum for the next period, and so forth, through the transition. This seems to call for an InfHorz experience asset, but I’m having trouble wrapping my head around what that means, because I’m having trouble relating in my own mind the concepts of InfHorz equilibrium time (a and aprime) with transition time (discrete periods). Strangely, I feel comfortable with FHorz equilibrium time (where ages flesh out a time-like distribution that is nevertheless a snapshot of actual time).

I also note that the experience asset implementation seems to be designed to move at most one grid point per period, not “some small finite number”. The posting I referenced at the top explains how experience assets increase efficiency of the solver by dramatically lowering the choice space within the state space. And perhaps I could leverage that by scaling my “small finite number” to 1 and taking advantage of the fact that I can extract intra-grid values from that, giving me the ability to recover my small finite number by multiplying and rounding.

Perahps I am overthinking things, and should just implement an aprimeFn that maps a decision variable to the range of increments reasonable within the model, and low, the right thing will happen. I.e., the decision variable gives me the “small finite number” which the aprime function digests into a maximum per-period investment value, creating a more incremental transition.

However, I don’t see (yet) how to communicate from one period in the transition to the next the new baseline of installed renewable capacity.

And there’s a lot of InfHorz_ExpAsset cases not yet implemented, so I want to make sure I’m understanding things before I push forward into that. If I’m misunderstanding which tools I should be using for my model, I’d rather pick the right tools from the Toolkit than to try to adapt the wrong tools to my purpose.

1 Like

Here’s an easy question: how do I “start” my InfHorz firm with zero PV assets?

Does it just happen by magic that everything starts with index=1 for all InfHorz VFIs, and moreover that whether or not those index=1 values are zero or not, we “guess” that they are zero, and then iteration will correct or validate that guess along the way to Howards happy solution?

I feel like you are mixing up the concepts of ‘inifinite horizon’ which is an infinitely lived agent, with the concept of stationary equilibrium.

It makes sense for an infinitely lived agent to gradually transition over time from ‘no renewables’ to add ‘small extra amount of renewables’ each period and eventually reach ‘all renewables’.

But this doesn’t make sense for a stationary equilbrium. One thing that might help is to think of the stationary equilibrium as ‘where you would end up in the infinite future’, which in this case is obviously going to be ‘all renewables’.

Note that one easy resolution might be just to recall that for a transition path, while you require that the final point in period T is a stationary general equilibrium, no such thing applies to the initial period 0. You can just start by inputting whatever agent distribution you want (so ‘no renewables’) without requiring that this be a stationary equilibrium.

The other resolution would be, first solve the initial eqm based on ‘high price of renewables’ (so the solution is a stationary eqm with ‘no renewables’), then solve the final eqm based on ‘low price of renewables’ (so the solution is a stationary eqm with ‘all renewables’), then solve the transition from initial to final, under some path on the price of renewables (could be price immediately jumps to low, or could be gradual fall to low).

This is not correct. You can move any number of grid points.

For example, you can do something really pointless like:

n_d=3;
n_a=3;
d_grid=[1;2;3];
a_grid=[1;2;3];
vfoptions.experienceasset=1;
vfoptions.aprimeFn=@(d,a) d;

notice that in this example, the experienceasset is actually just a standard endogenous state. Not something you would ever want to do in practice but makes it clear that you can move more than one grid point.

1 Like

Thank you for confirming my understanding (which is that the concepts of InfHorz and stationary equilibrium don’t mix when considering an initial starting point). You offer some creative ways to work around this, which I will think about and apply.

Good news: I have clarity on the best way to solve the problem of the starting point, in part because the starting point implicitly begins with an equilibrium that we will perturb (and ultimately solve) by making capital investment decisions based on access to renewable technologies. And as long as the decisions within our infinite time horizon can be implemented within the finite period of time to the next transition period–which we can condition on availability of labor and capital across the period–we can consider that to be the optimal go-forward move within that time horizon.

But I’m stumped as to how to properly solve the final equilibrium in this case:

Yes, we can imagine a final state where the cost of renewables is low, but how do we guarantee that we can reach the state, having banked the necessary decisions to do so? What if management had been so recalcitrant in the preceding periods to have never invested a dollar in renewables? We can certainly create a ReturnFn that allows the extraordinary investment of huge amounts of capital to build out 25 years worth of infrastructure by somehow selling an equally extraordinary amount of the company, but realistically that last period’s decision should really be based on some reasonable preceding period’s equilibrium that the final period merely perfects. A good ReturnFn could score more highly the value of putting the finishing touches on a properly executed plan vs. selling out the company at the last moment to do in one year what it should have been doing for the past 25. But the function I have in mind would not even consider such a wide aperature. It would look only at making the period’s capital deployment for what can be achieved within that period.

We could simply walk ourselves forward, period by period, making the myopically best decisions we can, but we might over-invest too soon (cost of capital vs. further price reductions of renewable technologies), or under-invest in terms of reaching the target.

Pieces of the toolkit know how to find optimal paths under certain conditions. Is this something that can be covered or might be covered in the near future? How might one express the uncertainties of the transitional parameters on the way from initial to final state?

I remember reading a in the Workshop examples (OLGTPath6) of scaredy-cat vs. curious cat. I wonder whether this is similar in nature, albeit different in detail and implementation. One could run 3 different OLG TPath calculations for the firms (myopically aggressive, myopically conservative, and myopically middle-of-the-road) and present an overall comparison of how the three play out in terms of final valuation. Is that the best way forward or are there other ways of formulating the problem and using the toolkit that are more elegant and more powerful?

You cannot have uncertainty in the parameters of the transition (in ParamPath). Would necessitate a different equilibrium concept (not one the toolkit can handle; such a thing does exist but is not something the toolkit can do at present as it is a vastly more complicated problem to solve; difficulty lies in how these uncertainties feed back into the general eqm so we then need to also consider the uncertainty in general eqm parameters).

What you say in the final paragraph sounds closest to how I would approach things, namely think of running ‘three different scenarios’. Note, this would be solving three different problems (not solving one problem with three different permanent types). [Obviously ‘three’ is an arbitrary number, you can run 37, or any other number of, different scenarios if you like.] [Whether or not these scenarios involve different final eqm, or just different ParamPath, is an open question that depends on what kind of scenarios seem most relevant to you.]

1 Like

Simple question: are there models I could study where firms pay dividends, labor, and taxes from profits, but pay for long-term capital investments with debt? The debt allows cash flow to balance with ROI over time. If so, how do we think about waiting for investments paying off, and how do we think about debt being paid down…in an InfHorz case?

Related question: If I gave my firms some tminus1 statistics such as PVs installed, capital banked, shares outstanding, debt owed, they can make a set of allocation decisions to move along the transition path. Each step along the way would use the outputs of the previous step to set the baseline for the next step. Is that a good way to model the transition? I’m skeptical that the existing transition path code provides enough transparency to the capital machinery. Maybe I just don’t have a good feel for what kinds of systems are faithfully modeled by the existing Transition path codes.

I suspect the answer is yes but I don’t know the firm dynamics literature well enough to point to where exactly to look.

Related question:

I don’t think you need to use _tminus1 to do this. I suspect that is already covered by the endogenous states.

PS. I suspect you don’t need to distinguish equity and debt in your model (most models don’t need to, the two are equivalent in simple setups, a result known as Modigliani-Miller, you need to add some complications to the model to make the two meaningfully different).

1 Like

I’m starting with the complication that we cannot buy back stocks :wink:

You may have put your finger on precisely what I don’t understand about managing the behavior of the infinite horizon vs transition paths. If I maintain the full endogenous state space I want for the model across all time and try to constrain the size of the move possible in a single transition period based on limiting the state space of the decision variable, it looks like policy function iteration simply iterates until some distant equilibrium is met, which is not very transition path-y. Perhaps I am misinterpreting what is happening.

I haven’t fully explored the possible ways I can use price to govern appetite, so perhaps I need to be more creative there.

What in your mind is the reason the transition cannot occur in a single period? Once you can pin that reason down in a way you can explain in a single sentence, you can begin to see how to get it into the model.

I don’t think this actually breaks Modigliani-Miller.

(is not a question of realism, obviously stocks and bonds differ, anyone can see that, is a question of how much you have to add to model before they will differ meaningfully in the model that they need to be kept track of separately)

[not to mention that firms regularly buy back stocks]

1 Like

As Fred Brooks explained in “The Mythical Man Month”, the bearing of a child takes nine months no matter how many woman are assigned. In a similar fashion, there’s a finite limit on the number of engineers, electricians, consents, etc., that can effect unit transitions in a given time period. Not to mention the rate-limiting step of shifting energy consumption itself from fossil-based machines to electric machines.

Rewiring Aotearoa proposes that the bulk of the transition can be accomplished by 2040, which is 14 years from now. It would be good to show what that might look like, a year or three at a time. It’s my opinion that showing the intermediate steps is key to getting more people on board with making it happen.

One friction that breaks Modigliani-Miller is the non-negative dividend constraint: it is a simple form of financial friction. You can read Gourio and Miao (2010), there is also a replication with the toolkit.
Another paper that uses a non-negative dividend constraint is Gomes, AER 2001 “Financing investment”, which is basically a firm dynamics model a la Hopenhayn with financial frictions. Gomes (2001) can be replicated easily with the toolkit starting from the codes for Hopenhayn and Rogerson.

References

2 Likes

Sounds to me like an input to the renewables production function that is in very limited supply, and that the production is inelastic to that input. So if you try to ‘convert’ more than a fraction of energy each period the price goes through the roof.

1 Like

I’m trying to make the price reflect the inelasticity, but don’t see how to get past the policy function iteration. I.e., if we make 4-at-a-time the maximum affordable choice, how do I stop Howards from just doing 25 iterations to buy all 100 PVs and saying “there…solved it for you!”?

I think my problem is that equilibria and transition periods are two different things that I don’t know how to keep separated without some really heavy-handed intervention (such as giving my functions a starting state and a both a very small state space of decision variables and endogenous values within which to search).

1 Like

Debugging further…

I’ve modified my return function to forbid any states that have more than 7 PVs (valid indexes 1..8). I see that my V from ValueFnIter has -Inf for all ExpAsset values above 8 and Policy is 1 in a similar fashion:

V_init.firm(1,:,7)

ans =

  Columns 1 through 27 (and beyond)

   -0.4999   -0.4341   -0.4244   -0.4147   -0.2701   -0.2603   -0.2506   -0.2409      -Inf      -Inf      -Inf      -Inf      -Inf      -Inf      -Inf      -Inf      -Inf      -Inf      -Inf      -Inf      -Inf      -Inf      -Inf      -Inf      -Inf      -Inf      -Inf

find(Policy_init.firm(1,:,9:end,:)-1)

ans =

  0×1 empty gpuArray double column vector

We we head into computing the stationary distribution, we make an initial guess that creates a single entry for each z value:

StationaryDist(ceil(N_a/2),:)=z_stat';

With 7 z values, that’s an initial distribution of 7 values in the geometric the middle of my arrays (and close to the value center, but not quite, since I have a cubic ramp up from zero at the start).

Now, my aprime function is not restricted the same way I have restricted my Return Function. Thus, no matter how many PVs are passed as values to aprime, it dutifully adds the number of PVs the decision function wants to install (some number between zero and 3) and it returns the sum, up to a maximum of 100. Perhaps it is a problem for aprime to return a value that is forbidden by the Return function? I don’t think so, because we will get our chance later to reject it when we compute \beta * V(aprime,…).

In any case, the Tan improvement actually iterates the location of my 7 non-zero points in the stationary distribution from the geometric center to the value center. For my 101-element array from zero to 100, that value center is 50. The stationary distribution that is returned has precisely 7 non-zero elements which, when used to count installed PVs using my AggVals function, tells me that initially I’m starting with 50 PVs. Which is not permitted by my ReturnFn.

Suggestions welcome as to how I should unpaint myself from this corner.

In order to continue my progress, I’ve made the following compromises:

I’ve dialed back my ExpAssets so that the decision variable and the aprimeFn covers the asset state space. Previously the decision variable covered a fraction of the asset state space but the aprimeFn covered the whole state space. This was leading to anomalous behavior. The size of the action space now covers the range of transition activities we expect from period to period. It is not large enough to cover the whole transition as if the agents could do 50 years of work in a single period just by adding capital (or whatever).

Using the ParamPath functionality, I’ve introduced a parameter value representing transition assets installed in previous periods. Thus the transition problem is making the optimal decision from time t to time t+1. Initially the model fills in the estimates using a linear function from start to presumed end point. What is not yet done is to take the output from a given transition period and force that back into the ParamPath as updated reality. The resulting transition graphs are starting to look credible (for example, the cost of an ever-increasing carbon tax has an inverted U shape, going up in the early years because tax rate dominates the calculation, then falling as the reduction of total carbon burned dominates the calculation).

At this point I’m questioning whether treating these assets as ExpAssets is all that beneficial, since there’s not really any shrinking of the action space vs. using normal assets. My original thought was that I could make small decisions each period while achieving the transition, but I think that crossed too many logical wires as to what part of the toolkit is supposed to be doing what.

If I gain any major new insights I’ll update this thread, but most likely will start new threads as I reach new starting points.

1 Like

I’ve thought about this before as a possibility but never tried it. Let me know if it does work.

1 Like