|
16 | 16 | "id": "6c53e49f", |
17 | 17 | "metadata": { |
18 | 18 | "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" |
23 | 23 | }, |
24 | 24 | "tags": [ |
25 | 25 | "hide-input" |
|
229 | 229 | "id": "7202856e", |
230 | 230 | "metadata": { |
231 | 231 | "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" |
236 | 236 | } |
237 | 237 | }, |
238 | 238 | "outputs": [], |
|
310 | 310 | "source": [ |
311 | 311 | "## Consumption Function Analysis\n", |
312 | 312 | "\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", |
314 | 314 | "\n", |
315 | 315 | "### Figure 1: The EGM Extrapolation Problem\n", |
316 | 316 | "\n", |
|
323 | 323 | "id": "0553a1e0", |
324 | 324 | "metadata": { |
325 | 325 | "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" |
330 | 330 | } |
331 | 331 | }, |
332 | 332 | "outputs": [ |
|
381 | 381 | "id": "64e7cde6", |
382 | 382 | "metadata": { |
383 | 383 | "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" |
388 | 388 | } |
389 | 389 | }, |
390 | 390 | "outputs": [ |
|
431 | 431 | "id": "9bd0c4d0", |
432 | 432 | "metadata": { |
433 | 433 | "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" |
438 | 438 | } |
439 | 439 | }, |
440 | 440 | "outputs": [ |
|
503 | 503 | "id": "9a4ddc67", |
504 | 504 | "metadata": { |
505 | 505 | "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" |
510 | 510 | } |
511 | 511 | }, |
512 | 512 | "outputs": [ |
|
552 | 552 | "id": "f063f0fe", |
553 | 553 | "metadata": { |
554 | 554 | "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" |
559 | 559 | } |
560 | 560 | }, |
561 | 561 | "outputs": [ |
|
614 | 614 | "id": "8bc3cf7d", |
615 | 615 | "metadata": { |
616 | 616 | "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" |
621 | 621 | } |
622 | 622 | }, |
623 | 623 | "outputs": [ |
|
675 | 675 | "id": "0809bb5a", |
676 | 676 | "metadata": { |
677 | 677 | "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" |
682 | 682 | } |
683 | 683 | }, |
684 | 684 | "outputs": [ |
|
722 | 722 | "\n", |
723 | 723 | "### Figure 8: MoM MPC Bounded by Theory\n", |
724 | 724 | "\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", |
726 | 726 | "\n", |
727 | 727 | "```{tip} Policy Applications\n", |
728 | 728 | "Bounded MPC estimates prevent nonsensical policy multipliers in DSGE models. MoM ensures economically meaningful MPCs for policy analysis.\n", |
|
735 | 735 | "id": "94f4a04f", |
736 | 736 | "metadata": { |
737 | 737 | "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" |
742 | 742 | } |
743 | 743 | }, |
744 | 744 | "outputs": [ |
|
770 | 770 | "metadata": {}, |
771 | 771 | "source": [ |
772 | 772 | "```{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", |
774 | 774 | "```\n", |
775 | 775 | "\n", |
776 | 776 | "### Figure 9: Value Functions Bounded by Theory\n", |
777 | 777 | "\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." |
779 | 779 | ] |
780 | 780 | }, |
781 | 781 | { |
|
784 | 784 | "id": "19855a3d", |
785 | 785 | "metadata": { |
786 | 786 | "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" |
791 | 791 | } |
792 | 792 | }, |
793 | 793 | "outputs": [ |
|
830 | 830 | "\n", |
831 | 831 | "### Figure 10: Inverse Value Functions $\\vInv(\\mNrm)$\n", |
832 | 832 | "\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." |
834 | 834 | ] |
835 | 835 | }, |
836 | 836 | { |
|
839 | 839 | "id": "0bfa5d4d", |
840 | 840 | "metadata": { |
841 | 841 | "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" |
846 | 846 | } |
847 | 847 | }, |
848 | 848 | "outputs": [ |
|
897 | 897 | "id": "ada46eb7", |
898 | 898 | "metadata": { |
899 | 899 | "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" |
904 | 904 | } |
905 | 905 | }, |
906 | 906 | "outputs": [ |
|
954 | 954 | "id": "fdd03bd7", |
955 | 955 | "metadata": { |
956 | 956 | "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" |
961 | 961 | } |
962 | 962 | }, |
963 | 963 | "outputs": [ |
|
1008 | 1008 | "id": "9287878d", |
1009 | 1009 | "metadata": { |
1010 | 1010 | "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" |
1015 | 1015 | } |
1016 | 1016 | }, |
1017 | 1017 | "outputs": [ |
|
1053 | 1053 | "metadata": {}, |
1054 | 1054 | "source": [ |
1055 | 1055 | "```{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", |
1057 | 1057 | "```\n", |
1058 | 1058 | "\n", |
1059 | 1059 | "## Summary\n", |
|
1089 | 1089 | "name": "python", |
1090 | 1090 | "nbconvert_exporter": "python", |
1091 | 1091 | "pygments_lexer": "ipython3", |
1092 | | - "version": "3.12.3" |
| 1092 | + "version": "3.11.13" |
1093 | 1093 | } |
1094 | 1094 | }, |
1095 | 1095 | "nbformat": 4, |
|
0 commit comments