The income fluctuation problem #
The canonical incomplete-markets household: income follows a finite Markov chain, assets
earn interest, borrowing is ruled out, and the household chooses savings. The state is the
pair (a, z) of assets and income state, and
V (a, z) = max { u c + β * ∑ z', P z z' * V (a', z') }.
Period utility may fall to -∞ at zero consumption, so this covers log and CRRA with
σ ≥ 1 -- and, since the utility DOMAIN is a field, CES with γ < 1 as well.
The domain field #
u is required to behave on a set dom with Ioi 0 ⊆ dom ⊆ Ici 0, so there are exactly two
choices: Ioi 0, where utility is unbounded below, and Ici 0, where it is bounded there. The
old tendsto_atBot_u is replaced by continuousOn_extendDom, which says that u extended by
⊥ off dom is continuous where consumption lives. That is what Berge actually consumes, and
it is exactly tendsto_atBot_u when dom = Ioi 0 (see continuousOn_extendDom_Ioi) and merely
continuity of u on Ici 0 in the other case, where the ⊥ branch is unreachable.
Nothing is lost by the swap: tendsto_atBot_u comes BACK as a theorem from Unbounded.
The one real consequence is that positive consumption at the optimum is no longer free. With
dom = Ioi 0 the reward is ⊥ there and the value being real settles it; with dom = Ici 0
it has to be earned from a MARGINAL Inada condition instead — see ConsumptionFloor. Results
that need it take PositiveConsumption as a hypothesis, which both routes supply. Results that
only need u to behave take membership in dom, and carry over untouched.
Retrofitted onto extended-real rewards #
This file used a floor, with the same apparatus as the deterministic models: floor,
cFloor, and a chain of results establishing that the floor never binds. All of it is
gone. The reward is -∞ where consumption vanishes, and positive consumption at the
optimum follows from the value function being real rather than from an argument.
The stochastic case needed LeanEconomics.DynamicProgramming.ExtendedStochastic, since the
continuation here is an expectation over shocks rather than v at a single point. That
turned out to be routine: the expectation is a sum of reals, so the objective is again an
extended real plus a finite coercion, and the reward's -∞ never meets the expectation's
arithmetic.
Unchanged #
Discreteness of the income state is still what makes every function of z continuous, so
the budget correspondence is continuous in the pair. Consumption is still clamped above and
assets still capped -- the ordinary boundedness requirement, unrelated to the floor. Cash on
hand is computed from max 0 a, as in the deterministic retrofits, so that the value stays
finite at every state.
The unbounded case: divergence at zero supplies the continuity requirement.
The income fluctuation problem, with a utility domain supporting bounded and unbounded below period utility.
- income : Z → ℝ
Income in each state.
- transitionMatrix : Z → Z → ℝ
The Markov transition matrix on income states.
- interest : ℝ
The interest rate on assets.
- discount : NNReal
The discount factor.
Period utility, required to behave only on positive consumption.
- minIncome : ℝ
A lower bound on income.
- maxIncome : ℝ
An upper bound on income.
The borrowing limit is below the asset cap, so the household always has somewhere to be.
The asset cap is a large positive number; nothing in the development needs it to be small, but several bounds need it to have a sign.
- minConsumption : ℝ
A declared floor on consumption, at most what a household pinned at the borrowing limit can afford. Carrying it as data rather than computing it from the rate is what lets the same household problem be re-run at a different interest rate without moving the reward's lower bound:
minConsumptionis the rate-free part of the natural-borrowing-limit condition. The borrowing limit is sustainable: at the limit, income covers the interest on the debt with something left to eat. With
assetFloor = 0this is0 < minIncome; with a negative limit it is Aiyagari's natural-borrowing-limit condition, and it is what replaces positivity of cash on hand -- resources can be negative when the household is in debt, while consumption cannot.The consumption levels at which utility is required to behave.
Ioi 0when utility is unbounded below,Ici 0when it is bounded there.- continuousOn_u_dom : ContinuousOn self.u self.dom
- monotoneOn_u_dom : MonotoneOn self.u self.dom
- strictConcaveOn_u_dom : StrictConcaveOn ℝ self.dom self.u
Diminishing marginal utility, which makes the optimal policy unique.
- continuousOn_extendDom : ContinuousOn (extendDom self.dom self.u) (Set.Ici 0)
Instances For
Cash on hand, with assets read as nonnegative.
Instances For
The largest consumption the capped problem allows.
Instances For
The largest asset holding that can be carried forward.
Instances For
Consumption on the budget line.
Equations
- P.consumption s a' = P.resources s - a'
Instances For
Consumption clamped into [0, maxConsumption]. On the feasible set the lower clamp is
inactive, so this is consumption itself; off it, it keeps the reward's argument in Ici 0, which
is where continuousOn_extendDom applies.
Equations
- P.clampedConsumption p = min P.maxConsumption (max 0 (P.consumption p.1 p.2))
Instances For
The reward: utility of consumption clamped above, and ⊥ where consumption falls outside
the domain on which utility behaves. No floor.
Equations
- P.rewardFn p = LeanEconomics.extendDom P.dom P.u (P.clampedConsumption p)
Instances For
The rates at which the borrowing limit is sustainable. Raising the interest rate raises
the debt service on a negative floor, so a floor that supports positive consumption at one rate
need not support it at another: sustainability is part of what it means for a rate to be
admissible, not a consequence of -1 < r. With assetFloor = 0 the second conjunct is free.
Instances For
At a zero borrowing limit every admissible rate is sustainable.
Sustainability is linear in the rate, so it is inherited from the endpoints of an interval.
Cash on hand always exceeds the borrowing limit, so something can always be eaten. This replaces positivity of cash on hand: in debt, resources can be negative while consumption cannot.
The domain is an up-set: if utility behaves at c it behaves at anything larger. Both
Ioi 0 and Ici 0 are, and it follows from the two bracketing inclusions alone.
Utility behaves on the positives whatever the domain is, so every existing argument that
supplies 0 < c keeps working.
Discreteness of Z is what makes this continuous.
The problem as a stochastic dynamic program with an extended-real reward.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Utility is unbounded below: the domain is the open half-line, so the reward is ⊥ at
zero consumption. This is the hypothesis under which positive consumption comes free.
Instances For
On the feasible set the clamps are both inactive, so the reward's argument is consumption itself.
The reward is the utility of consumption, wherever consumption lies in the domain on which utility is required to behave.
The stochastic Bellman equation, with honest utility and positive consumption. That consumption is positive at the optimum is a consequence of the value being real, not a separate development.
Concavity and the optimal policy #
The state is a pair (assets, income state), which is not a module over ℝ, so concavity
is stated along the asset slice for each income state -- see
LeanEconomics.Blackwell.forall_concaveOn_valueFunction. Everything else follows the
deterministic argument, with the continuation value now an expectation: it is concave in
next period's assets because each V (·, z') is, and the transition probabilities are
nonnegative.
A convex combination stays above a common lower bound. Used wherever the borrowing limit
has to survive an averaging argument, which with a floor of zero was add_nonneg.
The Bellman operator preserves concavity along each asset slice.
The value function is concave in assets, for each income state.
The optimal action is unique for any continuation with concave slices.
The optimal action is unique.
The optimal saving choice.
Equations
- P.policy s = Classical.choose ⋯
Instances For
The optimal saving choice under an arbitrary continuation. At the value function this is
definitionally policy.
Equations
- P.policyOf v s = Classical.choose ⋯
Instances For
Consumption never vanishes at the optimum. Automatic when utility is unbounded below
(positiveConsumption_of_unbounded); when it is bounded, it has to be earned from a marginal
Inada condition, which is what ConsumptionFloor does.
Equations
- P.PositiveConsumption = ∀ (s : ℝ × Z), s.1 ∈ Set.Icc assetFloor assetCap → 0 < P.consumption s (P.policy s)
Instances For
Utility really does diverge when the domain is the open half-line. The structure no
longer carries tendsto_atBot_u, but it has not lost it: continuousOn_extendDom says the
extension is continuous at zero consumption, and with dom = Ioi 0 the value there is ⊥.
The optimal policy is continuous on the region of states with assets in
[0, assetCap].
The Bellman equation at the policy.
A two-state calibration with σ = 2, where CES utility is -1 / c.
Equations
- One or more equations did not get rendered due to their size.