Documentation

LeanPool.AiyagariEquilibrium.Analysis.PowerMean

Weighted power means with a negative exponent #

The analytic engine of Carroll and Kimball (1996). For CRRA utility u' c = c ^ (-γ) the first-order condition of a consumption–saving problem reads

c = (β R) ^ (-1/γ) · (∑ π z' · c' z' ^ (-γ)) ^ (-1/γ),

so the consumption chosen against a given stock of end-of-period assets is a positive multiple of the weighted power mean, with exponent -γ, of next period's consumptions. Carroll and Kimball's induction therefore needs exactly one fact: a power mean with a negative exponent is concave and nondecreasing, so it carries concavity of next period's consumption functions to concavity of this period's.

The proof #

powerMean w p is positively homogeneous of degree one, so concavity is the statement that the set {x > 0 : powerMean w p x ≥ 1} is convex. With p < 0 that set is {x > 0 : ∑ w x ^ p ≤ 1} — a sublevel set of ∑ w x ^ p, which is convex because t ↦ t ^ p is. So the whole thing comes down to convexity of a single real function of one variable, and the scaling is bookkeeping.

convexOn_rpow_of_neg supplies that one function: Mathlib has x ^ p convex for 1 ≤ p and concave for 0 < p < 1, but not the negative case, and it is proved here from concavity of log and convexity of exp.

Kimball's risk-tolerance aggregation theorem is the differential form of the same fact. This is the integrated form, and it needs no derivatives.

x ^ p is convex for a negative exponent #

theorem LeanEconomics.convexOn_rpow_of_neg {p : ℝ} (hp : p < 0) :
ConvexOn ℝ (Set.Ioi 0) fun (x : ℝ) => x ^ p

A negative power is convex on the positive half-line. x ^ p = exp (p log x): log is concave, multiplying by p < 0 flips that to convex, and exp is convex and increasing.

The power mean #

theorem LeanEconomics.pos_of_convex_comb {u v θ φ : ℝ} (hu : 0 < u) (hv : 0 < v) (hθ : 0 ≤ θ) (hφ : 0 ≤ φ) (hθφ : θ + φ = 1) :
0 < θ * u + φ * v

A convex combination of two positive numbers is positive.

noncomputable def LeanEconomics.powerMean {ι : Type u_1} [Fintype ι] (w : ι → ℝ) (p : ℝ) (x : ι → ℝ) :

The weighted power mean of x with exponent p.

Equations
Instances For
    theorem LeanEconomics.sum_rpow_pos {ι : Type u_1} [Fintype ι] {w : ι → ℝ} {p : ℝ} {x : ι → ℝ} (hw : ∀ (i : ι), 0 ≤ w i) (hw1 : ∑ i : ι, w i = 1) (hx : ∀ (i : ι), 0 < x i) :
    0 < ∑ i : ι, w i * x i ^ p
    theorem LeanEconomics.powerMean_pos {ι : Type u_1} [Fintype ι] {w : ι → ℝ} {p : ℝ} {x : ι → ℝ} (hw : ∀ (i : ι), 0 ≤ w i) (hw1 : ∑ i : ι, w i = 1) (hx : ∀ (i : ι), 0 < x i) :
    0 < powerMean w p x
    theorem LeanEconomics.powerMean_rpow {ι : Type u_1} [Fintype ι] {w : ι → ℝ} {p : ℝ} {x : ι → ℝ} (hp : p ≠ 0) (hw : ∀ (i : ι), 0 ≤ w i) (hw1 : ∑ i : ι, w i = 1) (hx : ∀ (i : ι), 0 < x i) :
    powerMean w p x ^ p = ∑ i : ι, w i * x i ^ p

    The mean raised back to the exponent recovers the weighted sum.

    theorem LeanEconomics.powerMean_smul {ι : Type u_1} [Fintype ι] {w : ι → ℝ} {p : ℝ} {x : ι → ℝ} (hp : p ≠ 0) {c : ℝ} (hc : 0 < c) (hw : ∀ (i : ι), 0 ≤ w i) (hw1 : ∑ i : ι, w i = 1) (hx : ∀ (i : ι), 0 < x i) :
    (powerMean w p fun (i : ι) => c * x i) = c * powerMean w p x

    The power mean is positively homogeneous of degree one.

    theorem LeanEconomics.sum_rpow_div_powerMean {ι : Type u_1} [Fintype ι] {w : ι → ℝ} {p : ℝ} {x : ι → ℝ} (hp : p ≠ 0) (hw : ∀ (i : ι), 0 ≤ w i) (hw1 : ∑ i : ι, w i = 1) (hx : ∀ (i : ι), 0 < x i) :
    ∑ i : ι, w i * (x i / powerMean w p x) ^ p = 1

    Normalising by the mean makes the weighted sum exactly one. This is the statement that the level set {powerMean = 1} is where the scaling argument lands.

    theorem LeanEconomics.powerMean_mono {ι : Type u_1} [Fintype ι] {w : ι → ℝ} {p : ℝ} {x y : ι → ℝ} (hp : p < 0) (hw : ∀ (i : ι), 0 ≤ w i) (hw1 : ∑ i : ι, w i = 1) (hx : ∀ (i : ι), 0 < x i) (hy : ∀ (i : ι), 0 < y i) (hxy : ∀ (i : ι), x i ≤ y i) :
    powerMean w p x ≤ powerMean w p y

    A power mean with a negative exponent is nondecreasing.

    theorem LeanEconomics.sum_mul_rpow_pred_le {ι : Type u_1} [Fintype ι] {w x : ι → ℝ} {γ xmin : ℝ} (hw : ∀ (i : ι), 0 ≤ w i) (hx : ∀ (i : ι), 0 < x i) (hmin : 0 < xmin) (hle : ∀ (i : ι), xmin ≤ x i) :
    ∑ i : ι, w i * x i ^ (-γ - 1) ≤ (∑ i : ι, w i * x i ^ (-γ)) / xmin

    The gradient sum of a power mean is at most M / min x. The quantity ∑ w x^{-γ-1}, which is what a common shift costs when propagated through a power mean, is bounded termwise by ∑ w x^{-γ} / min x.

    This is worth recording as a WARNING rather than a tool. Normalised, it says the gradient sum A = ∑ w (x/M)^{-γ-1} is at most M / min x — and M / min x is exactly the multiplier that bounding the expectation by its smallest term produces. Measured in the overlapping-generations life cycle, A runs from 1.04 to 1.19 while M / min x runs from 4.7 to 5.9, so this bound discards the entire advantage of keeping the certainty equivalent. A usable bound on A has to see the WEIGHTS — the far states carry little probability — and not merely the support.

    theorem LeanEconomics.sum_mul_sq_eq_one_add_variance {ι : Type u_1} [Fintype ι] {w u : ι → ℝ} (hw1 : ∑ i : ι, w i = 1) (hu : ∑ i : ι, w i * u i = 1) :
    ∑ i : ι, w i * u i ^ 2 = 1 + ∑ i : ι, w i * (u i - 1) ^ 2

    The gradient sum is one plus the variance of the risk tilt. Write u i = (x i / M) ^ (-γ) for the tilt. By the definition of the power mean its weighted mean is exactly one, and then the gradient sum ∑ w u ^ (1 + 1/γ) is, at γ = 1 where the exponent is exactly two, one plus the weighted variance of u.

    This is the bound the minimum cannot give. sum_mul_rpow_pred_le sees only the support of x and returns M / min x, measured at 4.7 to 5.9; the variance sees the WEIGHTS, and is measured at 0.041. For γ > 1 the exponent 1 + 1/γ falls below two and Lyapunov's inequality gives ∑ w u ^ (1+1/γ) ≤ (1 + Var)^{(γ+1)/(2γ)}, which is an identity at γ = 1 and loses accuracy above it: measured 1.076 against a true 1.050 at γ = 1.5, and 1.26 against 1.08 at γ = 3, against an allowance of about 1.06 throughout. So this route closes at logarithmic utility and not above (WriteUps/WriteUpOLG/numerics/lyap.m).

    theorem LeanEconomics.sum_mul_rpow_le_rpow_sum_mul_sq {ι : Type u_1} [Fintype ι] {w u : ι → ℝ} {p : ℝ} (hp1 : 1 < p) (hp2 : p < 2) (hw : ∀ (i : ι), 0 ≤ w i) (hu : ∀ (i : ι), 0 ≤ u i) (hmean : ∑ i : ι, w i * u i = 1) :
    ∑ i : ι, w i * u i ^ p ≤ (∑ i : ι, w i * u i ^ 2) ^ (p - 1)

    The sharp moment bound. For weights summing to one, u ≥ 0 with ∑ w u = 1 and 1 < p < 2, ∑ w u^p ≤ (∑ w u²)^(p-1). It is Jensen for the concave x ↦ x^(p-1) under the tilted weights w u, which sum to one by hypothesis, and it is attained by the two-point law on {0, ∑ w u²}. With p = 1 + 1/γ it bounds the gradient sum of the two-rate chain by (1 + Var)^(1/γ), against Lyapunov's (1 + Var)^((γ+1)/(2γ)).

    theorem LeanEconomics.powerMean_concave {ι : Type u_1} [Fintype ι] {w : ι → ℝ} {p : ℝ} {x y : ι → ℝ} (hp : p < 0) (hw : ∀ (i : ι), 0 ≤ w i) (hw1 : ∑ i : ι, w i = 1) (hx : ∀ (i : ι), 0 < x i) (hy : ∀ (i : ι), 0 < y i) {θ φ : ℝ} (hθ : 0 ≤ θ) (hφ : 0 ≤ φ) (hθφ : θ + φ = 1) :
    θ * powerMean w p x + φ * powerMean w p y ≤ powerMean w p fun (i : ι) => θ * x i + φ * y i

    A power mean with a negative exponent is concave.

    Homogeneity turns concavity into the convexity of {x > 0 : ∑ w x ^ p ≤ 1}, and that is a sublevel set of a convex function. This is Kimball's risk-tolerance aggregation in integrated form: no derivative appears anywhere.

    theorem LeanEconomics.concaveOn_powerMean_comp {ι : Type u_1} [Fintype ι] {w : ι → ℝ} {p : ℝ} {D : Set ℝ} (hD : Convex ℝ D) (hp : p < 0) (hw : ∀ (i : ι), 0 ≤ w i) (hw1 : ∑ i : ι, w i = 1) {f : ι → ℝ → ℝ} (hpos : ∀ (i : ι), ∀ a ∈ D, 0 < f i a) (hconc : ∀ (i : ι), ConcaveOn ℝ D (f i)) :
    ConcaveOn ℝ D fun (a : ℝ) => powerMean w p fun (i : ι) => f i a

    The Carroll–Kimball step. A negative power mean of concave positive functions is concave: concavity of next period's consumption functions carries to the consumption chosen against a given stock of end-of-period assets.

    theorem LeanEconomics.monotoneOn_powerMean_comp {ι : Type u_1} [Fintype ι] {w : ι → ℝ} {p : ℝ} {D : Set ℝ} (hp : p < 0) (hw : ∀ (i : ι), 0 ≤ w i) (hw1 : ∑ i : ι, w i = 1) {f : ι → ℝ → ℝ} (hpos : ∀ (i : ι), ∀ a ∈ D, 0 < f i a) (hmono : ∀ (i : ι), MonotoneOn (f i) D) :
    MonotoneOn (fun (a : ℝ) => powerMean w p fun (i : ι) => f i a) D

    And nondecreasing, which the endogenous-gridpoint transfer also needs.