Skip to content

Commit a93997e

Browse files
committed
Update LaTeX notation and clarify economic expressions
Revised LaTeX math expressions for the consumption function, MPC, and value functions to use consistent variable names and notation (e.g., \cFunc(\mNrm), \vFunc(\mNrm)). Clarified economic interpretations and updated the description of deterministic and stochastic optimist MPC formulas for accuracy. Also updated Python version metadata in the notebook.
1 parent 7ae0c16 commit a93997e

File tree

2 files changed

+73
-73
lines changed

2 files changed

+73
-73
lines changed

code/notebook.ipynb

Lines changed: 67 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616
"id": "6c53e49f",
1717
"metadata": {
1818
"execution": {
19-
"iopub.execute_input": "2025-12-25T20:32:55.804840Z",
20-
"iopub.status.busy": "2025-12-25T20:32:55.804600Z",
21-
"iopub.status.idle": "2025-12-25T20:32:56.150045Z",
22-
"shell.execute_reply": "2025-12-25T20:32:56.149555Z"
19+
"iopub.execute_input": "2025-12-25T20:52:56.468470Z",
20+
"iopub.status.busy": "2025-12-25T20:52:56.468331Z",
21+
"iopub.status.idle": "2025-12-25T20:52:58.058792Z",
22+
"shell.execute_reply": "2025-12-25T20:52:58.058175Z"
2323
},
2424
"tags": [
2525
"hide-input"
@@ -229,10 +229,10 @@
229229
"id": "7202856e",
230230
"metadata": {
231231
"execution": {
232-
"iopub.execute_input": "2025-12-25T20:32:56.151544Z",
233-
"iopub.status.busy": "2025-12-25T20:32:56.151355Z",
234-
"iopub.status.idle": "2025-12-25T20:32:57.354059Z",
235-
"shell.execute_reply": "2025-12-25T20:32:57.353207Z"
232+
"iopub.execute_input": "2025-12-25T20:52:58.060363Z",
233+
"iopub.status.busy": "2025-12-25T20:52:58.060171Z",
234+
"iopub.status.idle": "2025-12-25T20:53:11.697801Z",
235+
"shell.execute_reply": "2025-12-25T20:53:11.697125Z"
236236
}
237237
},
238238
"outputs": [],
@@ -310,7 +310,7 @@
310310
"source": [
311311
"## Consumption Function Analysis\n",
312312
"\n",
313-
"The first set of figures will focus on the core of the consumption-saving problem: the consumption function, $c(m)$, which maps market resources, $m$, to a chosen level of consumption. We will demonstrate the extrapolation problem inherent in the standard EGM and show how the Method of Moderation resolves it by respecting theoretical bounds.\n",
313+
"The first set of figures will focus on the core of the consumption-saving problem: the consumption function $\\cFunc(\\mNrm)$, which maps market resources $\\mNrm$ to consumption. We will demonstrate the extrapolation problem inherent in the standard EGM and show how the Method of Moderation resolves it by respecting theoretical bounds.\n",
314314
"\n",
315315
"### Figure 1: The EGM Extrapolation Problem\n",
316316
"\n",
@@ -323,10 +323,10 @@
323323
"id": "0553a1e0",
324324
"metadata": {
325325
"execution": {
326-
"iopub.execute_input": "2025-12-25T20:32:57.356004Z",
327-
"iopub.status.busy": "2025-12-25T20:32:57.355848Z",
328-
"iopub.status.idle": "2025-12-25T20:32:57.551793Z",
329-
"shell.execute_reply": "2025-12-25T20:32:57.551183Z"
326+
"iopub.execute_input": "2025-12-25T20:53:11.699662Z",
327+
"iopub.status.busy": "2025-12-25T20:53:11.699482Z",
328+
"iopub.status.idle": "2025-12-25T20:53:12.287723Z",
329+
"shell.execute_reply": "2025-12-25T20:53:12.286842Z"
330330
}
331331
},
332332
"outputs": [
@@ -381,10 +381,10 @@
381381
"id": "64e7cde6",
382382
"metadata": {
383383
"execution": {
384-
"iopub.execute_input": "2025-12-25T20:32:57.553659Z",
385-
"iopub.status.busy": "2025-12-25T20:32:57.553482Z",
386-
"iopub.status.idle": "2025-12-25T20:32:57.715460Z",
387-
"shell.execute_reply": "2025-12-25T20:32:57.714849Z"
384+
"iopub.execute_input": "2025-12-25T20:53:12.289627Z",
385+
"iopub.status.busy": "2025-12-25T20:53:12.289402Z",
386+
"iopub.status.idle": "2025-12-25T20:53:12.730200Z",
387+
"shell.execute_reply": "2025-12-25T20:53:12.729484Z"
388388
}
389389
},
390390
"outputs": [
@@ -431,10 +431,10 @@
431431
"id": "9bd0c4d0",
432432
"metadata": {
433433
"execution": {
434-
"iopub.execute_input": "2025-12-25T20:32:57.717133Z",
435-
"iopub.status.busy": "2025-12-25T20:32:57.716970Z",
436-
"iopub.status.idle": "2025-12-25T20:32:57.976674Z",
437-
"shell.execute_reply": "2025-12-25T20:32:57.976056Z"
434+
"iopub.execute_input": "2025-12-25T20:53:12.732070Z",
435+
"iopub.status.busy": "2025-12-25T20:53:12.731879Z",
436+
"iopub.status.idle": "2025-12-25T20:53:13.170356Z",
437+
"shell.execute_reply": "2025-12-25T20:53:13.169737Z"
438438
}
439439
},
440440
"outputs": [
@@ -503,10 +503,10 @@
503503
"id": "9a4ddc67",
504504
"metadata": {
505505
"execution": {
506-
"iopub.execute_input": "2025-12-25T20:32:57.978484Z",
507-
"iopub.status.busy": "2025-12-25T20:32:57.978319Z",
508-
"iopub.status.idle": "2025-12-25T20:32:58.158797Z",
509-
"shell.execute_reply": "2025-12-25T20:32:58.158093Z"
506+
"iopub.execute_input": "2025-12-25T20:53:13.172083Z",
507+
"iopub.status.busy": "2025-12-25T20:53:13.171920Z",
508+
"iopub.status.idle": "2025-12-25T20:53:13.642245Z",
509+
"shell.execute_reply": "2025-12-25T20:53:13.641703Z"
510510
}
511511
},
512512
"outputs": [
@@ -552,10 +552,10 @@
552552
"id": "f063f0fe",
553553
"metadata": {
554554
"execution": {
555-
"iopub.execute_input": "2025-12-25T20:32:58.160946Z",
556-
"iopub.status.busy": "2025-12-25T20:32:58.160757Z",
557-
"iopub.status.idle": "2025-12-25T20:32:58.352843Z",
558-
"shell.execute_reply": "2025-12-25T20:32:58.352294Z"
555+
"iopub.execute_input": "2025-12-25T20:53:13.643529Z",
556+
"iopub.status.busy": "2025-12-25T20:53:13.643383Z",
557+
"iopub.status.idle": "2025-12-25T20:53:14.099497Z",
558+
"shell.execute_reply": "2025-12-25T20:53:14.098263Z"
559559
}
560560
},
561561
"outputs": [
@@ -614,10 +614,10 @@
614614
"id": "8bc3cf7d",
615615
"metadata": {
616616
"execution": {
617-
"iopub.execute_input": "2025-12-25T20:32:58.354667Z",
618-
"iopub.status.busy": "2025-12-25T20:32:58.354468Z",
619-
"iopub.status.idle": "2025-12-25T20:32:58.577898Z",
620-
"shell.execute_reply": "2025-12-25T20:32:58.577341Z"
617+
"iopub.execute_input": "2025-12-25T20:53:14.101905Z",
618+
"iopub.status.busy": "2025-12-25T20:53:14.101646Z",
619+
"iopub.status.idle": "2025-12-25T20:53:14.708429Z",
620+
"shell.execute_reply": "2025-12-25T20:53:14.707790Z"
621621
}
622622
},
623623
"outputs": [
@@ -675,10 +675,10 @@
675675
"id": "0809bb5a",
676676
"metadata": {
677677
"execution": {
678-
"iopub.execute_input": "2025-12-25T20:32:58.579652Z",
679-
"iopub.status.busy": "2025-12-25T20:32:58.579479Z",
680-
"iopub.status.idle": "2025-12-25T20:32:58.753221Z",
681-
"shell.execute_reply": "2025-12-25T20:32:58.752640Z"
678+
"iopub.execute_input": "2025-12-25T20:53:14.710629Z",
679+
"iopub.status.busy": "2025-12-25T20:53:14.710402Z",
680+
"iopub.status.idle": "2025-12-25T20:53:15.107110Z",
681+
"shell.execute_reply": "2025-12-25T20:53:15.106442Z"
682682
}
683683
},
684684
"outputs": [
@@ -722,7 +722,7 @@
722722
"\n",
723723
"### Figure 8: MoM MPC Bounded by Theory\n",
724724
"\n",
725-
"The **MPC** ($\\partial c / \\partial m$) is bounded between $\\MPCmin$ (optimist) and $\\MPCmax$ (at the borrowing constraint), as detailed in {ref}`the paper <a-tighter-upper-bound>` and Eq. {eq}`eq:MPCModeration` {cite:p}`Carroll2001MPCBound`. [](#fig:mpc-bounds) confirms MoM respects these bounds.\n",
725+
"The **MPC** ($\\partial \\cNrm / \\partial \\mNrm$) is bounded between $\\MPCmin$ (optimist) and $\\MPCmax$ (at the borrowing constraint), as detailed in {ref}`the paper <a-tighter-upper-bound>` and Eq. {eq}`eq:MPCModeration` {cite:p}`Carroll2001MPCBound`. [](#fig:mpc-bounds) confirms MoM respects these bounds.\n",
726726
"\n",
727727
"```{tip} Policy Applications\n",
728728
"Bounded MPC estimates prevent nonsensical policy multipliers in DSGE models. MoM ensures economically meaningful MPCs for policy analysis.\n",
@@ -735,10 +735,10 @@
735735
"id": "94f4a04f",
736736
"metadata": {
737737
"execution": {
738-
"iopub.execute_input": "2025-12-25T20:32:58.754915Z",
739-
"iopub.status.busy": "2025-12-25T20:32:58.754745Z",
740-
"iopub.status.idle": "2025-12-25T20:32:58.927163Z",
741-
"shell.execute_reply": "2025-12-25T20:32:58.926485Z"
738+
"iopub.execute_input": "2025-12-25T20:53:15.108673Z",
739+
"iopub.status.busy": "2025-12-25T20:53:15.108529Z",
740+
"iopub.status.idle": "2025-12-25T20:53:15.557454Z",
741+
"shell.execute_reply": "2025-12-25T20:53:15.556593Z"
742742
}
743743
},
744744
"outputs": [
@@ -770,12 +770,12 @@
770770
"metadata": {},
771771
"source": [
772772
"```{hint} MPC Economic Interpretation\n",
773-
"MoM MPC declines with $\\mNrm$: poor consumers spend windfalls immediately ($\\MPC \\to \\MPCmax$), wealthy consumers save them ($\\MPC \\to \\MPCmin$), reflecting diminishing marginal utility.\n",
773+
"MoM MPC declines with $\\mNrm$: poor consumers spend windfalls immediately (MPC $\\to \\MPCmax$), wealthy consumers save them (MPC $\\to \\MPCmin$), reflecting diminishing marginal utility.\n",
774774
"```\n",
775775
"\n",
776776
"### Figure 9: Value Functions Bounded by Theory\n",
777777
"\n",
778-
"The **value function** $v(m)$ is also bounded by optimist and pessimist solutions {cite:p}`Aiyagari1994,Huggett1993`. [](#fig:value-functions) compares truth, EGM, and MoM value functions."
778+
"The **value function** $\\vFunc(\\mNrm)$ is also bounded by optimist and pessimist solutions {cite:p}`Aiyagari1994,Huggett1993`. [](#fig:value-functions) compares truth, EGM, and MoM value functions."
779779
]
780780
},
781781
{
@@ -784,10 +784,10 @@
784784
"id": "19855a3d",
785785
"metadata": {
786786
"execution": {
787-
"iopub.execute_input": "2025-12-25T20:32:58.928934Z",
788-
"iopub.status.busy": "2025-12-25T20:32:58.928767Z",
789-
"iopub.status.idle": "2025-12-25T20:32:59.136353Z",
790-
"shell.execute_reply": "2025-12-25T20:32:59.135768Z"
787+
"iopub.execute_input": "2025-12-25T20:53:15.559005Z",
788+
"iopub.status.busy": "2025-12-25T20:53:15.558861Z",
789+
"iopub.status.idle": "2025-12-25T20:53:16.204063Z",
790+
"shell.execute_reply": "2025-12-25T20:53:16.203498Z"
791791
}
792792
},
793793
"outputs": [
@@ -830,7 +830,7 @@
830830
"\n",
831831
"### Figure 10: Inverse Value Functions $\\vInv(\\mNrm)$\n",
832832
"\n",
833-
"The **inverse value function** $\\vInv(\\mNrm) = \\uFunc^{-1}(\\vFunc(\\mNrm))$ gives the consumption equivalent of lifetime utility. It is more linear than $v(m)$ near the borrowing constraint, making it better suited for interpolation. [](#fig:inverse-value-functions) compares the three solutions."
833+
"The **inverse value function** $\\vInv(\\mNrm) = \\uFunc^{-1}(\\vFunc(\\mNrm))$ gives the consumption equivalent of lifetime utility. It is more linear than $\\vFunc(\\mNrm)$ near the borrowing constraint, making it better suited for interpolation. [](#fig:inverse-value-functions) compares the three solutions."
834834
]
835835
},
836836
{
@@ -839,10 +839,10 @@
839839
"id": "0bfa5d4d",
840840
"metadata": {
841841
"execution": {
842-
"iopub.execute_input": "2025-12-25T20:32:59.137917Z",
843-
"iopub.status.busy": "2025-12-25T20:32:59.137746Z",
844-
"iopub.status.idle": "2025-12-25T20:32:59.314017Z",
845-
"shell.execute_reply": "2025-12-25T20:32:59.313381Z"
842+
"iopub.execute_input": "2025-12-25T20:53:16.205614Z",
843+
"iopub.status.busy": "2025-12-25T20:53:16.205449Z",
844+
"iopub.status.idle": "2025-12-25T20:53:16.693927Z",
845+
"shell.execute_reply": "2025-12-25T20:53:16.692862Z"
846846
}
847847
},
848848
"outputs": [
@@ -897,10 +897,10 @@
897897
"id": "ada46eb7",
898898
"metadata": {
899899
"execution": {
900-
"iopub.execute_input": "2025-12-25T20:32:59.315537Z",
901-
"iopub.status.busy": "2025-12-25T20:32:59.315393Z",
902-
"iopub.status.idle": "2025-12-25T20:32:59.503246Z",
903-
"shell.execute_reply": "2025-12-25T20:32:59.502684Z"
900+
"iopub.execute_input": "2025-12-25T20:53:16.695600Z",
901+
"iopub.status.busy": "2025-12-25T20:53:16.695426Z",
902+
"iopub.status.idle": "2025-12-25T20:53:17.109251Z",
903+
"shell.execute_reply": "2025-12-25T20:53:17.108536Z"
904904
}
905905
},
906906
"outputs": [
@@ -954,10 +954,10 @@
954954
"id": "fdd03bd7",
955955
"metadata": {
956956
"execution": {
957-
"iopub.execute_input": "2025-12-25T20:32:59.505040Z",
958-
"iopub.status.busy": "2025-12-25T20:32:59.504871Z",
959-
"iopub.status.idle": "2025-12-25T20:32:59.722682Z",
960-
"shell.execute_reply": "2025-12-25T20:32:59.722082Z"
957+
"iopub.execute_input": "2025-12-25T20:53:17.110865Z",
958+
"iopub.status.busy": "2025-12-25T20:53:17.110704Z",
959+
"iopub.status.idle": "2025-12-25T20:53:17.567800Z",
960+
"shell.execute_reply": "2025-12-25T20:53:17.567096Z"
961961
}
962962
},
963963
"outputs": [
@@ -1008,10 +1008,10 @@
10081008
"id": "9287878d",
10091009
"metadata": {
10101010
"execution": {
1011-
"iopub.execute_input": "2025-12-25T20:32:59.724364Z",
1012-
"iopub.status.busy": "2025-12-25T20:32:59.724204Z",
1013-
"iopub.status.idle": "2025-12-25T20:32:59.911446Z",
1014-
"shell.execute_reply": "2025-12-25T20:32:59.910695Z"
1011+
"iopub.execute_input": "2025-12-25T20:53:17.569780Z",
1012+
"iopub.status.busy": "2025-12-25T20:53:17.569527Z",
1013+
"iopub.status.idle": "2025-12-25T20:53:18.094992Z",
1014+
"shell.execute_reply": "2025-12-25T20:53:18.094115Z"
10151015
}
10161016
},
10171017
"outputs": [
@@ -1053,7 +1053,7 @@
10531053
"metadata": {},
10541054
"source": [
10551055
"```{hint} Stochastic Returns Interpretation\n",
1056-
"Deterministic optimist uses $\\kappa = 1 - (\\beta R)^{1/\\rho}$; stochastic optimist uses $\\kappa_{stoch} = 1 - (\\beta \\mathbb{E}[R^{1-\\rho}])^{1/\\rho}$. Return uncertainty raises MPC and narrows the feasible region. See {ref}`stochastic-returns-mgf-derivation` for the MGF derivation.\n",
1056+
"Deterministic optimist uses $\\MPCmin = 1 - (\\DiscFac \\Rfree)^{1/\\CRRA}$; stochastic optimist uses $\\MPCmin = 1 - (\\DiscFac \\Ex[\\Risky^{1-\\CRRA}])^{1/\\CRRA}$. Return uncertainty raises MPC and narrows the feasible region. See {ref}`stochastic-returns-mgf-derivation` for the MGF derivation.\n",
10571057
"```\n",
10581058
"\n",
10591059
"## Summary\n",
@@ -1089,7 +1089,7 @@
10891089
"name": "python",
10901090
"nbconvert_exporter": "python",
10911091
"pygments_lexer": "ipython3",
1092-
"version": "3.12.3"
1092+
"version": "3.11.13"
10931093
}
10941094
},
10951095
"nbformat": 4,

code/notebook.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ mNrmMax = IndShockMoMApproxSol.mNrmMin + IndShockMoMApprox.aXtraGrid.max()
124124

125125
## Consumption Function Analysis
126126

127-
The first set of figures will focus on the core of the consumption-saving problem: the consumption function, $c(m)$, which maps market resources, $m$, to a chosen level of consumption. We will demonstrate the extrapolation problem inherent in the standard EGM and show how the Method of Moderation resolves it by respecting theoretical bounds.
127+
The first set of figures will focus on the core of the consumption-saving problem: the consumption function $\cFunc(\mNrm)$, which maps market resources $\mNrm$ to consumption. We will demonstrate the extrapolation problem inherent in the standard EGM and show how the Method of Moderation resolves it by respecting theoretical bounds.
128128

129129
### Figure 1: The EGM Extrapolation Problem
130130

@@ -326,7 +326,7 @@ Unbounded domain $(-\infty, \infty)$, monotonically increasing, asymptotically l
326326

327327
### Figure 8: MoM MPC Bounded by Theory
328328

329-
The **MPC** ($\partial c / \partial m$) is bounded between $\MPCmin$ (optimist) and $\MPCmax$ (at the borrowing constraint), as detailed in {ref}`the paper <a-tighter-upper-bound>` and Eq. {eq}`eq:MPCModeration` {cite:p}`Carroll2001MPCBound`. [](#fig:mpc-bounds) confirms MoM respects these bounds.
329+
The **MPC** ($\partial \cNrm / \partial \mNrm$) is bounded between $\MPCmin$ (optimist) and $\MPCmax$ (at the borrowing constraint), as detailed in {ref}`the paper <a-tighter-upper-bound>` and Eq. {eq}`eq:MPCModeration` {cite:p}`Carroll2001MPCBound`. [](#fig:mpc-bounds) confirms MoM respects these bounds.
330330

331331
```{tip} Policy Applications
332332
Bounded MPC estimates prevent nonsensical policy multipliers in DSGE models. MoM ensures economically meaningful MPCs for policy analysis.
@@ -344,12 +344,12 @@ plot_mom_mpc(
344344
```
345345

346346
```{hint} MPC Economic Interpretation
347-
MoM MPC declines with $\mNrm$: poor consumers spend windfalls immediately ($\MPC \to \MPCmax$), wealthy consumers save them ($\MPC \to \MPCmin$), reflecting diminishing marginal utility.
347+
MoM MPC declines with $\mNrm$: poor consumers spend windfalls immediately (MPC $\to \MPCmax$), wealthy consumers save them (MPC $\to \MPCmin$), reflecting diminishing marginal utility.
348348
```
349349

350350
### Figure 9: Value Functions Bounded by Theory
351351

352-
The **value function** $v(m)$ is also bounded by optimist and pessimist solutions {cite:p}`Aiyagari1994,Huggett1993`. [](#fig:value-functions) compares truth, EGM, and MoM value functions.
352+
The **value function** $\vFunc(\mNrm)$ is also bounded by optimist and pessimist solutions {cite:p}`Aiyagari1994,Huggett1993`. [](#fig:value-functions) compares truth, EGM, and MoM value functions.
353353

354354
```python
355355
# | label: fig:value-functions
@@ -374,7 +374,7 @@ Uncertainty matters most at low wealth where buffers are small; the optimist-pes
374374

375375
### Figure 10: Inverse Value Functions $\vInv(\mNrm)$
376376

377-
The **inverse value function** $\vInv(\mNrm) = \uFunc^{-1}(\vFunc(\mNrm))$ gives the consumption equivalent of lifetime utility. It is more linear than $v(m)$ near the borrowing constraint, making it better suited for interpolation. [](#fig:inverse-value-functions) compares the three solutions.
377+
The **inverse value function** $\vInv(\mNrm) = \uFunc^{-1}(\vFunc(\mNrm))$ gives the consumption equivalent of lifetime utility. It is more linear than $\vFunc(\mNrm)$ near the borrowing constraint, making it better suited for interpolation. [](#fig:inverse-value-functions) compares the three solutions.
378378

379379
```python
380380
# | label: fig:inverse-value-functions
@@ -477,7 +477,7 @@ plot_stochastic_bounds(
477477
```
478478

479479
```{hint} Stochastic Returns Interpretation
480-
Deterministic optimist uses $\kappa = 1 - (\beta R)^{1/\rho}$; stochastic optimist uses $\kappa_{stoch} = 1 - (\beta \mathbb{E}[R^{1-\rho}])^{1/\rho}$. Return uncertainty raises MPC and narrows the feasible region. See {ref}`stochastic-returns-mgf-derivation` for the MGF derivation.
480+
Deterministic optimist uses $\MPCmin = 1 - (\DiscFac \Rfree)^{1/\CRRA}$; stochastic optimist uses $\MPCmin = 1 - (\DiscFac \Ex[\Risky^{1-\CRRA}])^{1/\CRRA}$. Return uncertainty raises MPC and narrows the feasible region. See {ref}`stochastic-returns-mgf-derivation` for the MGF derivation.
481481
```
482482

483483
## Summary

0 commit comments

Comments
 (0)