1# F5-conf-04 — VFI vs closed-form policy, optimal growth with log utility23## Question4A planner maximises Σ β^t ln c_t subject to y_{t+1} = (y_t − c_t)^α. Bellman equation: V(y) = max_{0<c<y} { ln c + β V((y−c)^α) }. We derive the closed-form solution, solve the model numerically by value-function iteration (VFI) on the prescribed grid, and compare the two at y = 0.5, 1, 2.56## Data and exclusions7Only `data/model.csv` is used (`n_input_rows` = 10 rows; SHA-256 098123…6195b). The parameters are α = 0.36, β = 0.95, a log-spaced grid of 400 points on [0.05, 5], VFI tolerance 1e‑8, and evaluation points 0.5, 1.0, 2.0. No rows were excluded (`out/exclusions.csv`). There was no departure from the prescribed design. The evaluation points are not grid nodes, so interpolation was needed; this is recorded in `data_issues`. Grid points used: `grid_points_used` = `n_analysed` = 400.89## Method10**Closed form (guess and verify).** Assumptions: log utility, Cobb–Douglas technology y' = k^α with productivity 1, full depreciation, 0<α<1, 0<β<1, and an interior solution (0<c<y). Guess V(y) = A + B ln y. The first-order condition 1/c = βBα/(y−c) gives c = y/(1+αβB). Matching the coefficient on ln y gives B = 1 + αβB, so B = 1/(1−αβ). Then:11- **c(y) = (1 − αβ) y**, and the savings rate is (y−c)/y = **αβ** (`savings_rate_closed_form` = 0.342, the baseline quantity).12- **A = [ln(1−αβ) + (αβ/(1−αβ)) ln(αβ)] / (1−β)**, so V(1) = A (`value_closed_y1` = −19.5244; `diag_closed_form_A`, `diag_closed_form_B` = 1.5198).1314The code checks that this solution satisfies the Bellman equation exactly (residual 0) and that it is the argmax of the right-hand side (`state/checks.md`).1516**VFI.** The state is y on the prescribed log grid. The choice is next-period output y' taken from the same grid, which requires savings k = y'^{1/α} and gives consumption c = y − k. Infeasible choices (c ≤ 0) get utility −∞. Starting from V₀ = 0, we apply TV = max_j {u_ij + βV_j} until ‖TV − V‖_∞ < 1e‑8. The policy is then read off from the converged V. The closed form is never used inside the VFI. The VFI policy c(y) is interpolated linearly in y at the evaluation points, and V is interpolated linearly in ln y at y = 1. The method is deterministic, so no random seed is used (`random_seed` = null).1718**Contraction.** The Bellman operator T is monotone (V ≤ W ⇒ TV ≤ TW) and discounts (T(V + a) = TV + βa). By Blackwell's sufficient conditions it is therefore a contraction in the sup norm with modulus β (`contraction_modulus` = 0.95). On (0,∞), log utility is unbounded, so this argument needs bounded returns. Those hold on the compact grid [0.05, 5], where every state has a feasible choice and returns are bounded. The modulus implies that after stopping, ‖V_n − V*_grid‖ ≤ β·tol/(1−β) = 1.9e‑7 (`diag_vfi_error_bound_tol`).1920## Results21| y | closed form | VFI | key |22|---|---|---|---|23| 0.5 | 0.32900 | 0.32882 | `c_closed_y05`, `c_num_y05` |24| 1.0 | 0.65800 | 0.65898 | `c_closed_y1`, `c_num_y1` |25| 2.0 | 1.31600 | 1.30959 | `c_closed_y2`, `c_num_y2` |2627- The maximum absolute policy error over the three points is 0.00641 (`max_abs_error_policy`), reached at y = 2 (relative error −0.49%). At y = 0.5 and y = 1 the relative errors are −0.06% and +0.15%.28- Value at y = 1: VFI −19.52476 (`value_num_y1`) against closed form −19.52441 (`value_closed_y1`), a gap of about 3.4e‑4.29- VFI converged after 361 iterations (`n_iterations`), with a final sup-norm change of 9.997e‑9 (`final_sup_change`).30- On the full grid, the maximum errors are 0.0251 for the policy (`diag_max_abs_policy_error_grid`) and 4.8e‑4 for the value function (`diag_max_abs_value_error_grid`).31- The optimal choice indices lie in [133, 276] (`diag_policy_index_range`), so the grid bounds never bind (`diag_policy_hits_grid_boundary` = false).3233## Uncertainty34There is no statistical uncertainty: this is a deterministic computation on theoretical parameters. The numerical error has two parts:351. **Iteration error.** At most 1.9e‑7 utils (`diag_vfi_error_bound_tol`), which is negligible.362. **Discretisation error (dominant).** It comes from restricting y' to the grid. The log step is h = 0.01154 (`diag_log_grid_step`), so the implied savings k = y'^{1/α} can be off by up to about h/(2α) ≈ 1.6% in relative terms. This error grows with y in absolute terms (k is proportional to y), which is why the largest error is at y = 2. Interpolating between grid nodes adds a further small error.3738The discretisation error shrinks as the grid gets finer (smaller h). It also depends on α, through the 1/α amplification from y' to k. It does not depend on the tolerance.3940## Limitations and open issues41- The numerical check covers only one parameter point (α = 0.36, β = 0.95) and one grid (400 log-spaced points on [0.05, 5]). It does not show that the VFI is accurate for other parameters, grids, or states outside [0.05, 5].42- The VFI uses a discrete choice on the state grid. A continuous-choice VFI (interpolating V off the grid) would give smaller policy errors. It was not run because the task prescribes the grid.43- The contraction argument with modulus β relies on bounded returns on the compact grid. The unbounded log utility on (0,∞) needs a weighted-norm argument, which we did not develop.44- `feasibility` = "complete"; no required value is null.45