Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .translate/state/os.md.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
source-sha: b27f1eb0ae52b5e20807d516a3d2f54a586e75fa
synced-at: "2026-07-18"
model: claude-sonnet-5
mode: RESYNC
section-count: 6
tool-version: 0.17.0
179 changes: 139 additions & 40 deletions lectures/os.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,22 @@ kernelspec:
display_name: Python 3
language: python
name: python3
translation:
title: 吃蛋糕问题 I:最优储蓄导论
headings:
Overview: 概述
The model: 模型
The model::Trade-off: 权衡
The model::Intuition: 直观理解
The value function: 价值函数
The value function::The Bellman equation: 贝尔曼方程
The value function::An analytical solution: 一个解析解
The optimal policy: 最优策略
The Euler equation: 欧拉方程
The Euler equation::Statement and implications: 陈述和含义
'The Euler equation::Derivation I: a perturbation approach': 推导 I:扰动法
'The Euler equation::Derivation II: using the Bellman equation': 推导 II:使用贝尔曼方程
Exercises: 练习
---

# 吃蛋糕问题 I:最优储蓄导论
Expand All @@ -17,17 +33,17 @@ kernelspec:

## 概述

在本讲中,我们介绍一个简单的吃蛋糕问题。
在本讲中,我们介绍一个简单的"吃蛋糕"问题。

这里的跨期问题是:今天要享受多少,为未来留下多少?

尽管这个主题听起来很平凡,但这种“当前效用与未来效用的权衡正是许多储蓄与消费问题的核心。
这种"当前效用与未来效用的权衡"正是许多储蓄与消费问题的核心。

一旦我们在这个简单环境中掌握了相关思想,我们就会逐步把它们应用到更具挑战性——也更有用——的问题中
一旦我们在这个简单环境中掌握了相关思想,我们就会逐步把它们应用到更具挑战性的问题中

我们用来解决吃蛋糕问题的主要工具是动态规划。

在阅读本讲之前,读者可能会发现复习以下讲座会有帮助
以下讲座包含动态规划的背景知识,值得回顾

* {doc}`最短路径讲座 <intro:short_path>`
* {doc}`基础McCall模型 <mccall_model>`
Expand All @@ -47,7 +63,7 @@ import numpy as np
```
## 模型

我们考虑一个无限期的时间区间 $t=0, 1, 2, 3...$
我们考虑一个具有无限时间区间的离散时间模型。

在 $t=0$ 时,决策者获得一个大小为 $\bar x$ 的完整蛋糕。

Expand All @@ -58,7 +74,7 @@ import numpy as np
如果在第 $t$ 期选择消费 $c_t$ 单位的蛋糕,那么在第 $t+1$ 期剩余的蛋糕量为

$$
x_{t+1} = x_t - c_t
x_{t+1} = x_t - c_t
$$

消费数量为 $c$ 的蛋糕会带来当期效用 $u(c)$。
Expand All @@ -73,11 +89,12 @@ u(c) = \frac{c^{1-\gamma}}{1-\gamma} \qquad (\gamma \gt 0, \, \gamma \neq 1)

在 Python 中表示为:

```{code-cell} ipython3
```{code-cell} python3
def u(c, γ):

return c**(1 - γ) / (1 - γ)
```

未来的蛋糕消费效用按照折现因子 $\beta \in (0,1)$ 进行折现。

具体来说,$t$ 期后的 $c$ 单位消费的现值是 $\beta^t u(c)$。
Expand All @@ -90,17 +107,19 @@ def u(c, γ):
\max_{\{c_t\}} \sum_{t=0}^\infty \beta^t u(c_t)
```

约束条件为,对所有 $t$,
约束条件为

```{math}
:label: cake_feasible

x_{t+1} = x_t - c_t
\quad \text{} \quad
0\leq c_t\leq x_t
x_{t+1} = x_t - c_t
\quad \text{and} \quad
0\leq c_t\leq x_t
Comment on lines +115 to +117
```

一个满足{eq}`cake_feasible`的消费路径 ${c_t}$(其中 $x_0 = \bar{x}$)被称为**可行的**。
对所有 $t$ 成立。

一个满足 {eq}`cake_feasible` 且 $x_0 = \bar x$ 的消费路径 $\{c_t\}$ 被称为**可行的**。

在这个问题中,以下术语是标准的:

Expand All @@ -115,21 +134,28 @@ x_{t+1} = x_t - c_t
* 推迟消费是有代价的,因为存在折现因子。
* 但推迟部分消费也具有吸引力,因为效用函数 $u$ 是凹的。

$u$ 的凹性意味着*消费平滑*,即将消费分散在不同时期,给消费者带来价值
$u$ 的凹性意味着消费者能够从**消费平滑**中获得价值,即将消费分散在不同时期。

这是因为凹性意味着边际效用递减——在同一时期内,每多消费一勺蛋糕所带来的效用增加会逐渐减少。

### 直观理解

上述推理表明,贴现因子 $\beta$ 和曲率参数 $\gamma$ 在决定消费率时将起到关键作用。

我们可以合理猜测这些参数的影响:
下面是关于这些参数将产生何种影响的一个合理猜测。

首先,较高的 $\beta$ 意味着较少的折现,因此个体更有耐心,这应该会降低消费率。
1. 较高的 $\beta$ 意味着较少的折现,因此个体更有耐心,这应该会降低消费率。
2. 较高的 $\gamma$ 意味着 $u$ 的曲率更大,意味着对消费平滑有更强的偏好,因此消费率会更低。

其次,较高的 $\gamma$ 意味着边际效用 $u'(c) = c^{-\gamma}$ 随着 $c$ 的增加下降得更快。这意味着会有更多的消费平滑,因此消费率会更低。
```{note}
更正式地说,较高的 $\gamma$ 意味着更低的跨期替代弹性,因为 IES = $1/\gamma$。

总之,我们预期消费率会*随着这两个参数的增加而减少*。
这意味着消费者更不愿意在不同时期之间替代消费。

这种对消费平滑更强的偏好会导致更低的消费率。
```

总之,我们预期消费率会随着这两个参数的增加而减少。

让我们看看这是否正确。

Expand Down Expand Up @@ -187,32 +213,34 @@ v(x) = \max_{0\leq c \leq x} \{u(c) + \beta v(x-c)\}
```{math}
:label: crra_vstar

v^*(x_t) = \left( 1-\beta^{1/\gamma} \right)^{-\gamma}u(x_t)
v^*(x) = \left( 1-\beta^{1/\gamma} \right)^{-\gamma}u(x)
```

是贝尔曼方程的解,因此等于价值函数。

在下面的练习中,你需要验证这一点。

```{note}
解 {eq}`crra_vstar` 严重依赖于 CRRA 效用函数。

事实上,如果我们不使用CRRA效用函数,通常就完全没有解析解。

换句话说,在CRRA效用函数之外,我们知道价值函数仍然满足贝尔曼方程,但我们无法显式地写出它,作为状态变量和参数的函数。

在那种情况下,我们会在需要时通过数值方法来处理。
在后续讲座中,我们会用数值方法来处理这种情况。
```

下面是价值函数的一个 Python 表示:

```{code-cell} ipython3
```{code-cell} python3
def v_star(x, β, γ):

return (1 - β**(1 / γ))**(-γ) * u(x, γ)
```

下面的图,展示了在固定参数下该函数的形状:

```{code-cell} ipython3
```{code-cell} python3
β, γ = 0.95, 1.2
x_grid = np.linspace(0.1, 5, 100)

Expand All @@ -228,46 +256,48 @@ plt.show()

## 最优策略

既然我们已经得到了价值函数,那么在每个状态下计算最优行动就很直接了。
既然我们已经得到了价值函数 $v^*$,那么在每个状态下计算最优行动就很直接了。

我们应该选择一个消费水平,使得贝尔曼方程{eq}`bellman-cep`的右侧最大化
我们应该选择消费以最大化贝尔曼方程{eq}`bellman-cep`的右侧

$$
c^* = \arg \max_{c} \{u(c) + \beta v(x - c)\}
c^* = \arg \max_{0 \leq c \leq x} \{u(c) + \beta v^*(x - c)\}
$$

我们可以将这个最优选择视为状态 $x$ 的函数,此时称之为**最优策略** (optimal policy)
我们可以将这个最优选择视为状态 $x$ 的**函数**,此时称之为**最优策略**。

我们用 $\sigma^*$ 表示最优策略,因此

$$
\sigma^*(x) := \arg \max_{c} \{u(c) + \beta v(x - c)\}
\quad \text{对所有 } x
\sigma^*(x) := \arg \max_{c} \{u(c) + \beta v^*(x - c)\}
\quad \text{对所有 } \; x \geq 0
$$

如果我们将价值函数的解析表达式{eq}`crra_vstar`代入右侧并计算最优值,可以得到

```{math}
:label: crra_opt_pol

\sigma^*(x) = \left( 1-\beta^{1/\gamma} \right) x
\sigma^*(x) = \left( 1-\beta^{1/\gamma} \right) x
```

现在让我们回顾一下关于参数影响的直觉。

我们之前猜测,消费率会随着这两个参数的增加而减少。

从{eq}`crra_opt_pol`可以看出,事实确实如此。

这里有一些图表来说明。

```{code-cell} ipython3
```{code-cell} python3
def c_star(x, β, γ):

return (1 - β ** (1/γ)) * x
```

继续使用前面给定的参数 $\beta$ 和 $\gamma$,绘制出的图形如下:

```{code-cell} ipython3
```{code-cell} python3
fig, ax = plt.subplots()
ax.plot(x_grid, c_star(x_grid, β, γ), label='默认参数')
ax.plot(x_grid, c_star(x_grid, β + 0.02, γ), label=r'更高的$\beta$')
Expand All @@ -283,7 +313,7 @@ plt.show()

在上面的讨论中,我们已经在 CRRA 效用的情形下给出了吃蛋糕问题的完整解。

事实上,还有另一种方法可以求解最优策略,即基于所谓的**欧拉方程**(Euler equation)
事实上,还有另一种方法可以求解最优策略,即基于所谓的**欧拉方程**。

尽管我们已经得到了完整解,但现在正是研究欧拉方程的好时机。

Expand All @@ -299,16 +329,17 @@ plt.show()
u^{\prime} (c^*_{t})=\beta u^{\prime}(c^*_{t+1})
```

这是最优路径的必要条件
这是最优消费路径 $\{c^*_t\}_{t \geq 0}$ 的必要条件

它表明,在最优路径上,经过适当折现之后,跨期边际收益是相等的。

这很合理:最优性是通过平滑消费直到没有额外的边际收益为止得到的。

我们也可以用策略函数来表述欧拉方程。

**可行消费策略**是一个满足 $0 \leq \sigma(x) \leq x$ 的映射 $x \mapsto \sigma(x)$。

这里的约束条件表明,我们不能消费超过剩余蛋糕的数量。
(这个约束条件表明,我们不能消费超过剩余蛋糕的数量。

如果一个可行消费策略 $\sigma$ 对于所有 $x > 0$ 满足以下条件,则称其**满足欧拉方程**:

Expand All @@ -329,19 +360,19 @@ u^{\prime}( \sigma(x) )
**泛函方程**是一个未知对象为函数的方程。
```

关于欧拉方程在更一般情况下充分性的证明,请参见{cite}`ma2020income`中的命题2.2。
关于欧拉方程在非常一般情况下充分性的证明,请参见{cite}`ma2020income`中的命题2.2。

下面的论证将聚焦于必要性,解释为什么任何最优路径或最优策略都必须满足欧拉方程。S
下面的论证将聚焦于必要性,解释为什么最优路径或最优策略应当满足欧拉方程。

### 推导 I:扰动法

我们把 $c$ 作为消费路径 $\left\{{c_t}\right\}_{t=0}^\infty$ 的简写。
我们把 $c$ 作为消费路径 $\{c_t\}_{t=0}^\infty$ 的简写。

整个吃蛋糕的最大化问题可以写作

$$
\max_{c \in F} U(c)
\quad \text{ 其中 } U(c) := \sum_{t=0}^\infty \beta^t u(c_t)
\quad \text{其中 } U(c) := \sum_{t=0}^\infty \beta^t u(c_t)
$$

其中 $F$ 是所有可行消费路径的集合。
Expand All @@ -352,7 +383,7 @@ $$
$U'(c^*) = 0$。

```{note}
如果你想确切了解导数 $U'(c^*)$ 是如何定义的,考虑到参自变量 $c^*$ 是一个无限长的向量,你可以从学习[加托导数](https://baike.baidu.com/item/%E5%8A%A0%E6%89%98%E5%AF%BC%E6%95%B0)开始。不过,下文并不假定需要这些知识。
如果你想确切了解导数 $U'(c^*)$ 是如何定义的,考虑到自变量 $c^*$ 是一个无限长的向量,你可以从学习[加托导数](https://baike.baidu.com/item/%E5%8A%A0%E6%89%98%E5%AF%BC%E6%95%B0)开始。不过,下文并不假定需要这些知识。
```

换句话说,对于任何无穷小的(且可行的)偏离最优路径的扰动,$U$ 的变化率必须为零。
Expand Down Expand Up @@ -398,6 +429,11 @@ $$

另一种推导欧拉方程的方法是使用贝尔曼方程{eq}`bellman-cep`。

```{note}
以下论证假定价值函数是可微的。
关于价值函数可微性的证明,可参见[EDTC](https://johnstachurski.net/edtc.html)的定理10.1.13。
```

对贝尔曼方程右侧关于 $c$ 求导并令其等于零,我们得到

```{math}
Expand Down Expand Up @@ -437,7 +473,7 @@ v' (x) =
```
(这个推导是[包络定理](https://blog.csdn.net/qq_25018077/article/details/123295394)的一个例子。)

结合{eq}`bellman_FOC`得到
但现在应用{eq}`bellman_FOC`得到

```{math}
:label: bellman_v_prime
Expand All @@ -460,7 +496,7 @@ u^{\prime}(c) = v^{\prime}(x)

假设我们不知道解,并从一个假设出发:最优策略是线性的。

换句话说,我们猜测存在一个正的 $\theta$,使得令使得对所有 $t$,设定$c_t^*=\theta x_t$会产生一个最优路径。
换句话说,我们猜测存在一个正的 $\theta$,使得对所有 $t$,设定 $c_t^*=\theta x_t$ 会产生一个最优路径。

从这个猜想出发,尝试获得解 {eq}`crra_vstar` 和 {eq}`crra_opt_pol`。

Expand Down Expand Up @@ -553,3 +589,66 @@ $$

我们的论述现已得到验证。
```

```{exercise}
:label: cep_ex2

验证最优策略{eq}`crra_opt_pol`满足欧拉方程{eq}`euler_pol`。
```

```{solution} cep_ex2
:class: dropdown

回顾一下,最优策略为

$$
\sigma^*(x) = (1 - \beta^{1/\gamma})x
$$

而策略形式下的欧拉方程为

$$
u'(\sigma(x)) = \beta u'(\sigma(x - \sigma(x)))
$$

对于CRRA效用函数 $u(c) = \frac{c^{1-\gamma}}{1-\gamma}$,边际效用为

$$
u'(c) = c^{-\gamma}
$$

现在让我们来验证欧拉方程。左边为

$$
u'(\sigma^*(x))
= [\sigma^*(x)]^{-\gamma}
= [(1 - \beta^{1/\gamma})x]^{-\gamma}
= (1 - \beta^{1/\gamma})^{-\gamma} x^{-\gamma}
$$

对于右边,我们首先计算下一期的状态:

$$
x - \sigma^*(x) = x - (1 - \beta^{1/\gamma})x = x\beta^{1/\gamma}
$$

在最优策略下,下一期的消费为

$$
\sigma^*(x - \sigma^*(x)) = \sigma^*(x\beta^{1/\gamma}) = (1 - \beta^{1/\gamma}) \cdot x\beta^{1/\gamma}
$$

因此,欧拉方程的右边为

$$
\begin{aligned}
\beta u'(\sigma^*(x - \sigma^*(x)))
&= \beta [(1 - \beta^{1/\gamma}) \cdot x\beta^{1/\gamma}]^{-\gamma} \\
&= \beta (1 - \beta^{1/\gamma})^{-\gamma} x^{-\gamma} (\beta^{1/\gamma})^{-\gamma} \\
&= \beta (1 - \beta^{1/\gamma})^{-\gamma} x^{-\gamma} \beta^{-1} \\
&= (1 - \beta^{1/\gamma})^{-\gamma} x^{-\gamma}
\end{aligned}
$$

由于左边等于右边,最优策略 $\sigma^*$ 满足欧拉方程。
```
Loading