SPB Git

spb/wp29_uqo

Public

# F5-conf-04 — VFI vs closed-form policy, optimal growth with log utility

# Question

A planner maximises Σ β^t ln c_t subject to y_{t+1} = (y_t − c_t)^α (full depreciation, productivity 1). We derive the closed-form policy and value function, solve the Bellman equation numerically by value-function iteration (VFI) on the prescribed grid, and compare the two at y = 0.5, 1, 2 (policy) and y = 1 (value).

# Data and exclusions

Only data/model.csv (10 rows; n_input_rows) is used: α = 0.36, β = 0.95, grid of 400 points equally spaced in ln y on [0.05, 5] (grid_points_used, n_analysed), VFI tolerance 1e-8 (sup norm). SHA-256 and schema are in out/state/data_audit.md. No exclusions (out/exclusions.csv: 400 − 0 = 400). No deviation from the prescribed design was needed, so data_issues is empty. The evaluation points are not grid nodes, so the numerical policy is interpolated there (allowed by TASK.md).

# Method

Closed form (guess and verify). Assumptions: log utility, Cobb–Douglas technology y' = k^α with 0<α<1, full depreciation, productivity 1, 0<β<1, interior solution 0<c<y. Guess V(y) = A + B ln y. The first-order condition of max_c {ln c + β(A + Bα ln(y − c))} is 1/c = αβB/(y − c), so c = y/(1 + αβB). Substituting back and matching coefficients on ln y gives B = 1 + αβB, i.e. B = 1/(1 − αβ), hence

  • policy: c(y) = (1 − αβ) y, savings rate (y − c)/y = αβ;
  • value: V(y) = A + ln y /(1 − αβ), with A = [ln(1 − αβ) + (αβ/(1 − αβ)) ln(αβ)] / (1 − β). The objective is strictly concave in c, so the FOC gives the maximum; the code verifies the Bellman equation holds to 3.6e-15 (out/state/checks.md).

Contraction. On the compact grid the return ln(y − y'^{1/α}) is bounded over feasible choices, and the Bellman operator T V(y) = max {u + β V(y')} satisfies Blackwell's sufficient conditions (monotonicity; discounting T(V + a) = TV + βa). Hence it is a contraction in the sup norm with modulus β = 0.95 (contraction_modulus). (On the unbounded state space (0, ∞) log utility is unbounded and the standard argument needs a weighted norm; the numerical problem lives on the compact grid.)

VFI. State = current output y on the grid; choice = next-period output y' restricted to grid nodes, requiring capital k = y'^{1/α} < y, consumption c = y − k (discrete choice, vectorised 400×400). Start from V0 = 0 and iterate until the sup-norm change is below 1e-8. The policy is c at the argmax; values at y = 0.5, 1, 2 are obtained by linear interpolation in ln y (the grid is uniform in ln y and V is linear in ln y). The closed form is never used inside the VFI. No random numbers (random_seed = null). The optimal y' never hits a grid bound.

# Results

quantity closed form VFI
c(0.5) 0.329 (c_closed_y05) 0.32882 (c_num_y05)
c(1.0) 0.658 (c_closed_y1) 0.65899 (c_num_y1)
c(2.0) 1.316 (c_closed_y2) 1.30963 (c_num_y2)
V(1) −19.52441 (value_closed_y1) −19.52476 (value_num_y1)
  • Maximum absolute policy discrepancy over the three points: 0.00637 units of output (max_abs_error_policy), attained at y = 2, i.e. about 0.5% of consumption.
  • Value at y = 1 differs by about 3.4e-4 utils (value_closed_y1, value_num_y1).
  • Closed-form savings rate αβ = 0.342 (savings_rate_closed_form) (the baseline quantity).
  • Contraction modulus β = 0.95 (contraction_modulus); VFI converged in 361 iterations (n_iterations) with final sup change 9.997e-9 < 1e-8 (final_sup_change); feasibility = "complete".

# Uncertainty

The model is deterministic; there is no sampling uncertainty. The numerical error has two sources:

  1. Iteration (truncation) error: by the contraction property, ‖V_n − V*grid‖ ≤ β/(1 − β)·‖V_n − V{n−1}‖ ≤ 19 × 1e-8 ≈ 1.9e-7 utils (from final_sup_change, contraction_modulus), negligible.
  2. Discretisation error: dominant. The choice y' is restricted to grid nodes with log spacing ≈ 0.0115, i.e. capital moves in relative steps of ≈ 0.0115/α ≈ 3.2%, so the policy is a step function around the true linear policy; plus interpolation error at non-node evaluation points. On all grid nodes the maximum policy error is 0.025 and the maximum value error 4.8e-4 (diagnostic fields in results.json, not required keys). These errors shrink with finer grids (or continuous choice with interpolation).

# Limitations and open issues

  • The validation is for a single parameter point (α = 0.36, β = 0.95), one grid (400 log-spaced points on [0.05, 5]) and a discrete-choice VFI; it does not establish accuracy for other parameters, grids, or for states outside [0.05, 5].
  • The size of the discrepancy depends on grid density, the discrete restriction of the choice to grid nodes, and the interpolation rule (linear in ln y); a different but equally defensible implementation (e.g. continuous choice) would give different, likely smaller, errors. No grid-refinement study was performed (not required).
  • The closed form relies on log utility, Cobb–Douglas technology, full depreciation and an interior solution; it does not apply otherwise.
Files · main
Menu

Theme