diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9036f71c3..75e671ff7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,6 +50,9 @@ jobs: branch: main name: build-cache path: _build + - name: Clear stale Sphinx environment + shell: bash -l {0} + run: rm -rf _build/.doctrees # Build Assets (Download Notebooks and PDF via LaTeX) - name: Build Download Notebooks (sphinx-tojupyter) shell: bash -l {0} diff --git a/lectures/_config.yml b/lectures/_config.yml index 75d5a65bf..92c4f0129 100644 --- a/lectures/_config.yml +++ b/lectures/_config.yml @@ -99,7 +99,7 @@ sphinx: - "https://intro.quantecon.org/" - null advanced: - - "https://python-advanced.quantecon.org" + - "https://python-advanced.quantecon.org/" - null jax: - "https://jax.quantecon.org/" @@ -124,6 +124,8 @@ sphinx: schelling: https://intro.quantecon.org/schelling.html scalar_dynam: https://intro.quantecon.org/scalar_dynam.html complex_and_trig: https://intro.quantecon.org/complex_and_trig.html + doubts_or_variability: https://python-advanced.quantecon.org/doubts_or_variability.html + risk_aversion_or_mistaken_beliefs: https://python-advanced.quantecon.org/risk_aversion_or_mistaken_beliefs.html # sphinx-proof proof_minimal_theme: true # sphinx-exercise diff --git a/lectures/_static/lecture_specific/risk_aversion_or_mistaken_beliefs/eggs_backus.png b/lectures/_static/lecture_specific/risk_aversion_or_mistaken_beliefs/eggs_backus.png deleted file mode 100644 index 11e680a72..000000000 Binary files a/lectures/_static/lecture_specific/risk_aversion_or_mistaken_beliefs/eggs_backus.png and /dev/null differ diff --git a/lectures/_static/lecture_specific/risk_aversion_or_mistaken_beliefs/eggs_backus2.png b/lectures/_static/lecture_specific/risk_aversion_or_mistaken_beliefs/eggs_backus2.png deleted file mode 100644 index ca18362cc..000000000 Binary files a/lectures/_static/lecture_specific/risk_aversion_or_mistaken_beliefs/eggs_backus2.png and /dev/null differ diff --git a/lectures/_static/lecture_specific/risk_aversion_or_mistaken_beliefs/fig2_tom.png b/lectures/_static/lecture_specific/risk_aversion_or_mistaken_beliefs/fig2_tom.png deleted file mode 100644 index 9c8953a12..000000000 Binary files a/lectures/_static/lecture_specific/risk_aversion_or_mistaken_beliefs/fig2_tom.png and /dev/null differ diff --git a/lectures/_static/lecture_specific/risk_aversion_or_mistaken_beliefs/fred_data.csv b/lectures/_static/lecture_specific/risk_aversion_or_mistaken_beliefs/fred_data.csv deleted file mode 100644 index bf41c8d4d..000000000 --- a/lectures/_static/lecture_specific/risk_aversion_or_mistaken_beliefs/fred_data.csv +++ /dev/null @@ -1,862 +0,0 @@ -DATE,GS1,GS5,GS10,DFII5,DFII10,USREC -1953-04-01,2.36,2.62,2.83,,,0 -1953-05-01,2.48,2.87,3.05,,,0 -1953-06-01,2.45,2.94,3.11,,,0 -1953-07-01,2.38,2.75,2.93,,,0 -1953-08-01,2.28,2.8,2.95,,,1 -1953-09-01,2.2,2.71,2.87,,,1 -1953-10-01,1.79,2.43,2.66,,,1 -1953-11-01,1.67,2.42,2.68,,,1 -1953-12-01,1.66,2.32,2.59,,,1 -1954-01-01,1.41,2.17,2.48,,,1 -1954-02-01,1.14,2.04,2.47,,,1 -1954-03-01,1.13,1.93,2.37,,,1 -1954-04-01,0.96,1.87,2.29,,,1 -1954-05-01,0.85,1.92,2.37,,,1 -1954-06-01,0.82,1.92,2.38,,,0 -1954-07-01,0.84,1.85,2.3,,,0 -1954-08-01,0.88,1.9,2.36,,,0 -1954-09-01,1.03,1.96,2.38,,,0 -1954-10-01,1.17,2.02,2.43,,,0 -1954-11-01,1.14,2.09,2.48,,,0 -1954-12-01,1.21,2.16,2.51,,,0 -1955-01-01,1.39,2.32,2.61,,,0 -1955-02-01,1.57,2.38,2.65,,,0 -1955-03-01,1.59,2.48,2.68,,,0 -1955-04-01,1.75,2.55,2.75,,,0 -1955-05-01,1.9,2.56,2.76,,,0 -1955-06-01,1.91,2.59,2.78,,,0 -1955-07-01,2.02,2.72,2.9,,,0 -1955-08-01,2.37,2.86,2.97,,,0 -1955-09-01,2.36,2.85,2.97,,,0 -1955-10-01,2.39,2.76,2.88,,,0 -1955-11-01,2.48,2.81,2.89,,,0 -1955-12-01,2.73,2.93,2.96,,,0 -1956-01-01,2.58,2.84,2.9,,,0 -1956-02-01,2.49,2.74,2.84,,,0 -1956-03-01,2.61,2.93,2.96,,,0 -1956-04-01,2.92,3.2,3.18,,,0 -1956-05-01,2.94,3.08,3.07,,,0 -1956-06-01,2.74,2.97,3.0,,,0 -1956-07-01,2.76,3.12,3.11,,,0 -1956-08-01,3.1,3.41,3.33,,,0 -1956-09-01,3.35,3.47,3.38,,,0 -1956-10-01,3.28,3.4,3.34,,,0 -1956-11-01,3.44,3.56,3.49,,,0 -1956-12-01,3.68,3.7,3.59,,,0 -1957-01-01,3.37,3.47,3.46,,,0 -1957-02-01,3.38,3.39,3.34,,,0 -1957-03-01,3.42,3.46,3.41,,,0 -1957-04-01,3.49,3.53,3.48,,,0 -1957-05-01,3.48,3.64,3.6,,,0 -1957-06-01,3.65,3.83,3.8,,,0 -1957-07-01,3.81,4.0,3.93,,,0 -1957-08-01,4.01,4.0,3.93,,,0 -1957-09-01,4.07,4.03,3.92,,,1 -1957-10-01,4.01,4.08,3.97,,,1 -1957-11-01,3.57,3.72,3.72,,,1 -1957-12-01,3.18,3.08,3.21,,,1 -1958-01-01,2.65,2.88,3.09,,,1 -1958-02-01,1.99,2.78,3.05,,,1 -1958-03-01,1.84,2.64,2.98,,,1 -1958-04-01,1.45,2.46,2.88,,,1 -1958-05-01,1.37,2.41,2.92,,,0 -1958-06-01,1.23,2.46,2.97,,,0 -1958-07-01,1.61,2.77,3.2,,,0 -1958-08-01,2.5,3.29,3.54,,,0 -1958-09-01,3.05,3.69,3.76,,,0 -1958-10-01,3.19,3.78,3.8,,,0 -1958-11-01,3.1,3.7,3.74,,,0 -1958-12-01,3.29,3.82,3.86,,,0 -1959-01-01,3.36,4.01,4.02,,,0 -1959-02-01,3.54,3.96,3.96,,,0 -1959-03-01,3.61,3.99,3.99,,,0 -1959-04-01,3.72,4.12,4.12,,,0 -1959-05-01,3.96,4.35,4.31,,,0 -1959-06-01,4.07,4.5,4.34,,,0 -1959-07-01,4.39,4.58,4.4,,,0 -1959-08-01,4.42,4.57,4.43,,,0 -1959-09-01,5.0,4.9,4.68,,,0 -1959-10-01,4.8,4.72,4.53,,,0 -1959-11-01,4.81,4.75,4.53,,,0 -1959-12-01,5.14,5.01,4.69,,,0 -1960-01-01,5.03,4.92,4.72,,,0 -1960-02-01,4.66,4.69,4.49,,,0 -1960-03-01,4.02,4.31,4.25,,,0 -1960-04-01,4.04,4.29,4.28,,,0 -1960-05-01,4.21,4.49,4.35,,,1 -1960-06-01,3.36,4.12,4.15,,,1 -1960-07-01,3.2,3.79,3.9,,,1 -1960-08-01,2.95,3.62,3.8,,,1 -1960-09-01,3.07,3.61,3.8,,,1 -1960-10-01,3.04,3.76,3.89,,,1 -1960-11-01,3.08,3.81,3.93,,,1 -1960-12-01,2.86,3.67,3.84,,,1 -1961-01-01,2.81,3.67,3.84,,,1 -1961-02-01,2.93,3.66,3.78,,,1 -1961-03-01,2.88,3.6,3.74,,,0 -1961-04-01,2.88,3.57,3.78,,,0 -1961-05-01,2.87,3.47,3.71,,,0 -1961-06-01,3.06,3.81,3.88,,,0 -1961-07-01,2.92,3.84,3.92,,,0 -1961-08-01,3.06,3.96,4.04,,,0 -1961-09-01,3.06,3.9,3.98,,,0 -1961-10-01,3.05,3.8,3.92,,,0 -1961-11-01,3.07,3.82,3.94,,,0 -1961-12-01,3.18,3.91,4.06,,,0 -1962-01-01,3.28,3.94,4.08,,,0 -1962-02-01,3.28,3.89,4.04,,,0 -1962-03-01,3.06,3.68,3.93,,,0 -1962-04-01,2.99,3.6,3.84,,,0 -1962-05-01,3.03,3.66,3.87,,,0 -1962-06-01,3.03,3.64,3.91,,,0 -1962-07-01,3.29,3.8,4.01,,,0 -1962-08-01,3.2,3.71,3.98,,,0 -1962-09-01,3.06,3.7,3.98,,,0 -1962-10-01,2.98,3.64,3.93,,,0 -1962-11-01,3.0,3.6,3.92,,,0 -1962-12-01,3.01,3.56,3.86,,,0 -1963-01-01,3.04,3.58,3.83,,,0 -1963-02-01,3.01,3.66,3.92,,,0 -1963-03-01,3.03,3.68,3.93,,,0 -1963-04-01,3.11,3.74,3.97,,,0 -1963-05-01,3.12,3.72,3.93,,,0 -1963-06-01,3.2,3.81,3.99,,,0 -1963-07-01,3.48,3.89,4.02,,,0 -1963-08-01,3.53,3.89,4.0,,,0 -1963-09-01,3.57,3.96,4.08,,,0 -1963-10-01,3.64,3.97,4.11,,,0 -1963-11-01,3.74,4.01,4.12,,,0 -1963-12-01,3.81,4.04,4.13,,,0 -1964-01-01,3.79,4.07,4.17,,,0 -1964-02-01,3.78,4.03,4.15,,,0 -1964-03-01,3.91,4.14,4.22,,,0 -1964-04-01,3.91,4.15,4.23,,,0 -1964-05-01,3.84,4.05,4.2,,,0 -1964-06-01,3.83,4.02,4.17,,,0 -1964-07-01,3.72,4.03,4.19,,,0 -1964-08-01,3.74,4.05,4.19,,,0 -1964-09-01,3.84,4.08,4.2,,,0 -1964-10-01,3.86,4.07,4.19,,,0 -1964-11-01,3.91,4.04,4.15,,,0 -1964-12-01,4.02,4.09,4.18,,,0 -1965-01-01,3.94,4.1,4.19,,,0 -1965-02-01,4.03,4.15,4.21,,,0 -1965-03-01,4.06,4.15,4.21,,,0 -1965-04-01,4.04,4.15,4.2,,,0 -1965-05-01,4.03,4.15,4.21,,,0 -1965-06-01,3.99,4.15,4.21,,,0 -1965-07-01,3.98,4.15,4.2,,,0 -1965-08-01,4.07,4.2,4.25,,,0 -1965-09-01,4.2,4.25,4.29,,,0 -1965-10-01,4.3,4.34,4.35,,,0 -1965-11-01,4.37,4.46,4.45,,,0 -1965-12-01,4.72,4.72,4.62,,,0 -1966-01-01,4.88,4.86,4.61,,,0 -1966-02-01,4.94,4.98,4.83,,,0 -1966-03-01,4.97,4.92,4.87,,,0 -1966-04-01,4.9,4.83,4.75,,,0 -1966-05-01,4.93,4.89,4.78,,,0 -1966-06-01,4.97,4.97,4.81,,,0 -1966-07-01,5.17,5.17,5.02,,,0 -1966-08-01,5.54,5.5,5.22,,,0 -1966-09-01,5.82,5.5,5.18,,,0 -1966-10-01,5.58,5.27,5.01,,,0 -1966-11-01,5.54,5.36,5.16,,,0 -1966-12-01,5.2,5.0,4.84,,,0 -1967-01-01,4.75,4.7,4.58,,,0 -1967-02-01,4.71,4.74,4.63,,,0 -1967-03-01,4.35,4.54,4.54,,,0 -1967-04-01,4.11,4.51,4.59,,,0 -1967-05-01,4.15,4.75,4.85,,,0 -1967-06-01,4.48,5.01,5.02,,,0 -1967-07-01,5.01,5.23,5.16,,,0 -1967-08-01,5.13,5.31,5.28,,,0 -1967-09-01,5.24,5.4,5.3,,,0 -1967-10-01,5.37,5.57,5.48,,,0 -1967-11-01,5.61,5.78,5.75,,,0 -1967-12-01,5.71,5.75,5.7,,,0 -1968-01-01,5.43,5.54,5.53,,,0 -1968-02-01,5.41,5.59,5.56,,,0 -1968-03-01,5.58,5.76,5.74,,,0 -1968-04-01,5.71,5.69,5.64,,,0 -1968-05-01,6.14,6.04,5.87,,,0 -1968-06-01,5.98,5.85,5.72,,,0 -1968-07-01,5.65,5.6,5.5,,,0 -1968-08-01,5.43,5.5,5.42,,,0 -1968-09-01,5.45,5.48,5.46,,,0 -1968-10-01,5.57,5.55,5.58,,,0 -1968-11-01,5.75,5.66,5.7,,,0 -1968-12-01,6.19,6.12,6.03,,,0 -1969-01-01,6.34,6.25,6.04,,,0 -1969-02-01,6.41,6.34,6.19,,,0 -1969-03-01,6.34,6.41,6.3,,,0 -1969-04-01,6.26,6.3,6.17,,,0 -1969-05-01,6.42,6.54,6.32,,,0 -1969-06-01,7.04,6.75,6.57,,,0 -1969-07-01,7.6,7.01,6.72,,,0 -1969-08-01,7.54,7.03,6.69,,,0 -1969-09-01,7.82,7.57,7.16,,,0 -1969-10-01,7.64,7.51,7.1,,,0 -1969-11-01,7.89,7.53,7.14,,,0 -1969-12-01,8.17,7.96,7.65,,,0 -1970-01-01,8.1,8.17,7.79,,,1 -1970-02-01,7.59,7.82,7.24,,,1 -1970-03-01,6.97,7.21,7.07,,,1 -1970-04-01,7.06,7.5,7.39,,,1 -1970-05-01,7.75,7.97,7.91,,,1 -1970-06-01,7.55,7.85,7.84,,,1 -1970-07-01,7.1,7.59,7.46,,,1 -1970-08-01,6.98,7.57,7.53,,,1 -1970-09-01,6.73,7.29,7.39,,,1 -1970-10-01,6.43,7.12,7.33,,,1 -1970-11-01,5.51,6.47,6.84,,,1 -1970-12-01,5.0,5.95,6.39,,,0 -1971-01-01,4.57,5.89,6.24,,,0 -1971-02-01,3.89,5.56,6.11,,,0 -1971-03-01,3.69,5.0,5.7,,,0 -1971-04-01,4.3,5.65,5.83,,,0 -1971-05-01,5.04,6.28,6.39,,,0 -1971-06-01,5.64,6.53,6.52,,,0 -1971-07-01,6.04,6.85,6.73,,,0 -1971-08-01,5.8,6.55,6.58,,,0 -1971-09-01,5.41,6.14,6.14,,,0 -1971-10-01,4.91,5.93,5.93,,,0 -1971-11-01,4.67,5.78,5.81,,,0 -1971-12-01,4.6,5.69,5.93,,,0 -1972-01-01,4.28,5.59,5.95,,,0 -1972-02-01,4.27,5.69,6.08,,,0 -1972-03-01,4.67,5.87,6.07,,,0 -1972-04-01,4.96,6.17,6.19,,,0 -1972-05-01,4.64,5.85,6.13,,,0 -1972-06-01,4.93,5.91,6.11,,,0 -1972-07-01,4.96,5.97,6.11,,,0 -1972-08-01,4.98,6.02,6.21,,,0 -1972-09-01,5.52,6.25,6.55,,,0 -1972-10-01,5.52,6.18,6.48,,,0 -1972-11-01,5.27,6.12,6.28,,,0 -1972-12-01,5.52,6.16,6.36,,,0 -1973-01-01,5.89,6.34,6.46,,,0 -1973-02-01,6.19,6.6,6.64,,,0 -1973-03-01,6.85,6.8,6.71,,,0 -1973-04-01,6.85,6.67,6.67,,,0 -1973-05-01,6.89,6.8,6.85,,,0 -1973-06-01,7.31,6.69,6.9,,,0 -1973-07-01,8.39,7.33,7.13,,,0 -1973-08-01,8.82,7.63,7.4,,,0 -1973-09-01,8.31,7.05,7.09,,,0 -1973-10-01,7.4,6.77,6.79,,,0 -1973-11-01,7.57,6.92,6.73,,,0 -1973-12-01,7.27,6.8,6.74,,,1 -1974-01-01,7.42,6.95,6.99,,,1 -1974-02-01,6.88,6.82,6.96,,,1 -1974-03-01,7.76,7.31,7.21,,,1 -1974-04-01,8.62,7.92,7.51,,,1 -1974-05-01,8.78,8.18,7.58,,,1 -1974-06-01,8.67,8.1,7.54,,,1 -1974-07-01,8.8,8.38,7.81,,,1 -1974-08-01,9.36,8.63,8.04,,,1 -1974-09-01,8.87,8.37,8.04,,,1 -1974-10-01,8.05,7.97,7.9,,,1 -1974-11-01,7.66,7.68,7.68,,,1 -1974-12-01,7.31,7.31,7.43,,,1 -1975-01-01,6.83,7.41,7.5,,,1 -1975-02-01,5.98,7.11,7.39,,,1 -1975-03-01,6.11,7.3,7.73,,,1 -1975-04-01,6.9,7.99,8.23,,,0 -1975-05-01,6.39,7.72,8.06,,,0 -1975-06-01,6.29,7.51,7.86,,,0 -1975-07-01,7.11,7.92,8.06,,,0 -1975-08-01,7.7,8.33,8.4,,,0 -1975-09-01,7.75,8.37,8.43,,,0 -1975-10-01,6.95,7.97,8.14,,,0 -1975-11-01,6.49,7.8,8.05,,,0 -1975-12-01,6.6,7.76,8.0,,,0 -1976-01-01,5.81,7.46,7.74,,,0 -1976-02-01,5.91,7.45,7.79,,,0 -1976-03-01,6.21,7.49,7.73,,,0 -1976-04-01,5.92,7.25,7.56,,,0 -1976-05-01,6.4,7.59,7.9,,,0 -1976-06-01,6.52,7.61,7.86,,,0 -1976-07-01,6.2,7.49,7.83,,,0 -1976-08-01,6.0,7.31,7.77,,,0 -1976-09-01,5.84,7.13,7.59,,,0 -1976-10-01,5.5,6.75,7.41,,,0 -1976-11-01,5.29,6.52,7.29,,,0 -1976-12-01,4.89,6.1,6.87,,,0 -1977-01-01,5.29,6.58,7.21,,,0 -1977-02-01,5.47,6.83,7.39,,,0 -1977-03-01,5.5,6.93,7.46,,,0 -1977-04-01,5.44,6.79,7.37,,,0 -1977-05-01,5.84,6.94,7.46,,,0 -1977-06-01,5.8,6.76,7.28,,,0 -1977-07-01,5.94,6.84,7.33,,,0 -1977-08-01,6.37,7.03,7.4,,,0 -1977-09-01,6.53,7.04,7.34,,,0 -1977-10-01,6.97,7.32,7.52,,,0 -1977-11-01,6.95,7.34,7.58,,,0 -1977-12-01,6.96,7.48,7.69,,,0 -1978-01-01,7.28,7.77,7.96,,,0 -1978-02-01,7.34,7.83,8.03,,,0 -1978-03-01,7.31,7.86,8.04,,,0 -1978-04-01,7.45,7.98,8.15,,,0 -1978-05-01,7.82,8.18,8.35,,,0 -1978-06-01,8.09,8.36,8.46,,,0 -1978-07-01,8.39,8.54,8.64,,,0 -1978-08-01,8.31,8.33,8.41,,,0 -1978-09-01,8.64,8.43,8.42,,,0 -1978-10-01,9.14,8.61,8.64,,,0 -1978-11-01,10.01,8.84,8.81,,,0 -1978-12-01,10.3,9.08,9.01,,,0 -1979-01-01,10.41,9.2,9.1,,,0 -1979-02-01,10.24,9.13,9.1,,,0 -1979-03-01,10.25,9.2,9.12,,,0 -1979-04-01,10.12,9.25,9.18,,,0 -1979-05-01,10.12,9.24,9.25,,,0 -1979-06-01,9.57,8.85,8.91,,,0 -1979-07-01,9.64,8.9,8.95,,,0 -1979-08-01,9.98,9.06,9.03,,,0 -1979-09-01,10.84,9.41,9.33,,,0 -1979-10-01,12.44,10.63,10.3,,,0 -1979-11-01,12.39,10.93,10.65,,,0 -1979-12-01,11.98,10.42,10.39,,,0 -1980-01-01,12.06,10.74,10.8,,,0 -1980-02-01,13.92,12.6,12.41,,,1 -1980-03-01,15.82,13.47,12.75,,,1 -1980-04-01,13.3,11.84,11.47,,,1 -1980-05-01,9.39,9.95,10.18,,,1 -1980-06-01,8.16,9.21,9.78,,,1 -1980-07-01,8.65,9.53,10.25,,,1 -1980-08-01,10.24,10.84,11.1,,,0 -1980-09-01,11.52,11.62,11.51,,,0 -1980-10-01,12.49,11.86,11.75,,,0 -1980-11-01,14.15,12.83,12.68,,,0 -1980-12-01,14.88,13.25,12.84,,,0 -1981-01-01,14.08,12.77,12.57,,,0 -1981-02-01,14.57,13.41,13.19,,,0 -1981-03-01,13.71,13.41,13.12,,,0 -1981-04-01,14.32,13.99,13.68,,,0 -1981-05-01,16.2,14.63,14.1,,,0 -1981-06-01,14.86,13.95,13.47,,,0 -1981-07-01,15.72,14.79,14.28,,,0 -1981-08-01,16.72,15.56,14.94,,,1 -1981-09-01,16.52,15.93,15.32,,,1 -1981-10-01,15.38,15.41,15.15,,,1 -1981-11-01,12.41,13.38,13.39,,,1 -1981-12-01,12.85,13.6,13.72,,,1 -1982-01-01,14.32,14.65,14.59,,,1 -1982-02-01,14.73,14.54,14.43,,,1 -1982-03-01,13.95,13.98,13.86,,,1 -1982-04-01,13.98,14.0,13.87,,,1 -1982-05-01,13.34,13.75,13.62,,,1 -1982-06-01,14.07,14.43,14.3,,,1 -1982-07-01,13.24,14.07,13.95,,,1 -1982-08-01,11.43,13.0,13.06,,,1 -1982-09-01,10.85,12.25,12.34,,,1 -1982-10-01,9.32,10.8,10.91,,,1 -1982-11-01,9.16,10.38,10.55,,,1 -1982-12-01,8.91,10.22,10.54,,,0 -1983-01-01,8.62,10.03,10.46,,,0 -1983-02-01,8.92,10.26,10.72,,,0 -1983-03-01,9.04,10.08,10.51,,,0 -1983-04-01,8.98,10.02,10.4,,,0 -1983-05-01,8.9,10.03,10.38,,,0 -1983-06-01,9.66,10.63,10.85,,,0 -1983-07-01,10.2,11.21,11.38,,,0 -1983-08-01,10.53,11.63,11.85,,,0 -1983-09-01,10.16,11.43,11.65,,,0 -1983-10-01,9.81,11.28,11.54,,,0 -1983-11-01,9.94,11.41,11.69,,,0 -1983-12-01,10.11,11.54,11.83,,,0 -1984-01-01,9.9,11.37,11.67,,,0 -1984-02-01,10.04,11.54,11.84,,,0 -1984-03-01,10.59,12.02,12.32,,,0 -1984-04-01,10.9,12.37,12.63,,,0 -1984-05-01,11.66,13.17,13.41,,,0 -1984-06-01,12.08,13.48,13.56,,,0 -1984-07-01,12.03,13.27,13.36,,,0 -1984-08-01,11.82,12.68,12.72,,,0 -1984-09-01,11.58,12.53,12.52,,,0 -1984-10-01,10.9,12.06,12.16,,,0 -1984-11-01,9.82,11.33,11.57,,,0 -1984-12-01,9.33,11.07,11.5,,,0 -1985-01-01,9.02,10.93,11.38,,,0 -1985-02-01,9.29,11.13,11.51,,,0 -1985-03-01,9.86,11.52,11.86,,,0 -1985-04-01,9.14,11.01,11.43,,,0 -1985-05-01,8.46,10.34,10.85,,,0 -1985-06-01,7.8,9.6,10.16,,,0 -1985-07-01,7.86,9.7,10.31,,,0 -1985-08-01,8.05,9.81,10.33,,,0 -1985-09-01,8.07,9.81,10.37,,,0 -1985-10-01,8.01,9.69,10.24,,,0 -1985-11-01,7.88,9.28,9.78,,,0 -1985-12-01,7.67,8.73,9.26,,,0 -1986-01-01,7.73,8.68,9.19,,,0 -1986-02-01,7.61,8.34,8.7,,,0 -1986-03-01,7.03,7.46,7.78,,,0 -1986-04-01,6.44,7.05,7.3,,,0 -1986-05-01,6.65,7.52,7.71,,,0 -1986-06-01,6.73,7.64,7.8,,,0 -1986-07-01,6.27,7.06,7.3,,,0 -1986-08-01,5.93,6.8,7.17,,,0 -1986-09-01,5.77,6.92,7.45,,,0 -1986-10-01,5.72,6.83,7.43,,,0 -1986-11-01,5.8,6.76,7.25,,,0 -1986-12-01,5.87,6.67,7.11,,,0 -1987-01-01,5.78,6.64,7.08,,,0 -1987-02-01,5.96,6.79,7.25,,,0 -1987-03-01,6.03,6.79,7.25,,,0 -1987-04-01,6.5,7.57,8.02,,,0 -1987-05-01,7.0,8.26,8.61,,,0 -1987-06-01,6.8,8.02,8.4,,,0 -1987-07-01,6.68,8.01,8.45,,,0 -1987-08-01,7.03,8.32,8.76,,,0 -1987-09-01,7.67,8.94,9.42,,,0 -1987-10-01,7.59,9.08,9.52,,,0 -1987-11-01,6.96,8.35,8.86,,,0 -1987-12-01,7.17,8.45,8.99,,,0 -1988-01-01,6.99,8.18,8.67,,,0 -1988-02-01,6.64,7.71,8.21,,,0 -1988-03-01,6.71,7.83,8.37,,,0 -1988-04-01,7.01,8.19,8.72,,,0 -1988-05-01,7.4,8.58,9.09,,,0 -1988-06-01,7.49,8.49,8.92,,,0 -1988-07-01,7.75,8.66,9.06,,,0 -1988-08-01,8.17,8.94,9.26,,,0 -1988-09-01,8.09,8.69,8.98,,,0 -1988-10-01,8.11,8.51,8.8,,,0 -1988-11-01,8.48,8.79,8.96,,,0 -1988-12-01,8.99,9.09,9.11,,,0 -1989-01-01,9.05,9.15,9.09,,,0 -1989-02-01,9.25,9.27,9.17,,,0 -1989-03-01,9.57,9.51,9.36,,,0 -1989-04-01,9.36,9.3,9.18,,,0 -1989-05-01,8.98,8.91,8.86,,,0 -1989-06-01,8.44,8.29,8.28,,,0 -1989-07-01,7.89,7.83,8.02,,,0 -1989-08-01,8.18,8.09,8.11,,,0 -1989-09-01,8.22,8.17,8.19,,,0 -1989-10-01,7.99,7.97,8.01,,,0 -1989-11-01,7.77,7.81,7.87,,,0 -1989-12-01,7.72,7.75,7.84,,,0 -1990-01-01,7.92,8.12,8.21,,,0 -1990-02-01,8.11,8.42,8.47,,,0 -1990-03-01,8.35,8.6,8.59,,,0 -1990-04-01,8.4,8.77,8.79,,,0 -1990-05-01,8.32,8.74,8.76,,,0 -1990-06-01,8.1,8.43,8.48,,,0 -1990-07-01,7.94,8.33,8.47,,,0 -1990-08-01,7.78,8.44,8.75,,,1 -1990-09-01,7.76,8.51,8.89,,,1 -1990-10-01,7.55,8.33,8.72,,,1 -1990-11-01,7.31,8.02,8.39,,,1 -1990-12-01,7.05,7.73,8.08,,,1 -1991-01-01,6.64,7.7,8.09,,,1 -1991-02-01,6.27,7.47,7.85,,,1 -1991-03-01,6.4,7.77,8.11,,,1 -1991-04-01,6.24,7.7,8.04,,,0 -1991-05-01,6.13,7.7,8.07,,,0 -1991-06-01,6.36,7.94,8.28,,,0 -1991-07-01,6.31,7.91,8.27,,,0 -1991-08-01,5.78,7.43,7.9,,,0 -1991-09-01,5.57,7.14,7.65,,,0 -1991-10-01,5.33,6.87,7.53,,,0 -1991-11-01,4.89,6.62,7.42,,,0 -1991-12-01,4.38,6.19,7.09,,,0 -1992-01-01,4.15,6.24,7.03,,,0 -1992-02-01,4.29,6.58,7.34,,,0 -1992-03-01,4.63,6.95,7.54,,,0 -1992-04-01,4.3,6.78,7.48,,,0 -1992-05-01,4.19,6.69,7.39,,,0 -1992-06-01,4.17,6.48,7.26,,,0 -1992-07-01,3.6,5.84,6.84,,,0 -1992-08-01,3.47,5.6,6.59,,,0 -1992-09-01,3.18,5.38,6.42,,,0 -1992-10-01,3.3,5.6,6.59,,,0 -1992-11-01,3.68,6.04,6.87,,,0 -1992-12-01,3.71,6.08,6.77,,,0 -1993-01-01,3.5,5.83,6.6,,,0 -1993-02-01,3.39,5.43,6.26,,,0 -1993-03-01,3.33,5.19,5.98,,,0 -1993-04-01,3.24,5.13,5.97,,,0 -1993-05-01,3.36,5.2,6.04,,,0 -1993-06-01,3.54,5.22,5.96,,,0 -1993-07-01,3.47,5.09,5.81,,,0 -1993-08-01,3.44,5.03,5.68,,,0 -1993-09-01,3.36,4.73,5.36,,,0 -1993-10-01,3.39,4.71,5.33,,,0 -1993-11-01,3.58,5.06,5.72,,,0 -1993-12-01,3.61,5.15,5.77,,,0 -1994-01-01,3.54,5.09,5.75,,,0 -1994-02-01,3.87,5.4,5.97,,,0 -1994-03-01,4.32,5.94,6.48,,,0 -1994-04-01,4.82,6.52,6.97,,,0 -1994-05-01,5.31,6.78,7.18,,,0 -1994-06-01,5.27,6.7,7.1,,,0 -1994-07-01,5.48,6.91,7.3,,,0 -1994-08-01,5.56,6.88,7.24,,,0 -1994-09-01,5.76,7.08,7.46,,,0 -1994-10-01,6.11,7.4,7.74,,,0 -1994-11-01,6.54,7.72,7.96,,,0 -1994-12-01,7.14,7.78,7.81,,,0 -1995-01-01,7.05,7.76,7.78,,,0 -1995-02-01,6.7,7.37,7.47,,,0 -1995-03-01,6.43,7.05,7.2,,,0 -1995-04-01,6.27,6.86,7.06,,,0 -1995-05-01,6.0,6.41,6.63,,,0 -1995-06-01,5.64,5.93,6.17,,,0 -1995-07-01,5.59,6.01,6.28,,,0 -1995-08-01,5.75,6.24,6.49,,,0 -1995-09-01,5.62,6.0,6.2,,,0 -1995-10-01,5.59,5.86,6.04,,,0 -1995-11-01,5.43,5.69,5.93,,,0 -1995-12-01,5.31,5.51,5.71,,,0 -1996-01-01,5.09,5.36,5.65,,,0 -1996-02-01,4.94,5.38,5.81,,,0 -1996-03-01,5.34,5.97,6.27,,,0 -1996-04-01,5.54,6.3,6.51,,,0 -1996-05-01,5.64,6.48,6.74,,,0 -1996-06-01,5.81,6.69,6.91,,,0 -1996-07-01,5.85,6.64,6.87,,,0 -1996-08-01,5.67,6.39,6.64,,,0 -1996-09-01,5.83,6.6,6.83,,,0 -1996-10-01,5.55,6.27,6.53,,,0 -1996-11-01,5.42,5.97,6.2,,,0 -1996-12-01,5.47,6.07,6.3,,,0 -1997-01-01,5.61,6.33,6.58,,,0 -1997-02-01,5.53,6.2,6.42,,,0 -1997-03-01,5.8,6.54,6.69,,,0 -1997-04-01,5.99,6.76,6.89,,,0 -1997-05-01,5.87,6.57,6.71,,,0 -1997-06-01,5.69,6.38,6.49,,,0 -1997-07-01,5.54,6.12,6.22,,,0 -1997-08-01,5.56,6.16,6.3,,,0 -1997-09-01,5.52,6.11,6.21,,,0 -1997-10-01,5.46,5.93,6.03,,,0 -1997-11-01,5.46,5.8,5.88,,,0 -1997-12-01,5.53,5.77,5.81,,,0 -1998-01-01,5.24,5.42,5.54,,,0 -1998-02-01,5.31,5.49,5.57,,,0 -1998-03-01,5.39,5.61,5.65,,,0 -1998-04-01,5.38,5.61,5.64,,,0 -1998-05-01,5.44,5.63,5.65,,,0 -1998-06-01,5.41,5.52,5.5,,,0 -1998-07-01,5.36,5.46,5.46,,,0 -1998-08-01,5.21,5.27,5.34,,,0 -1998-09-01,4.71,4.62,4.81,,,0 -1998-10-01,4.12,4.18,4.53,,,0 -1998-11-01,4.53,4.54,4.83,,,0 -1998-12-01,4.52,4.45,4.65,,,0 -1999-01-01,4.51,4.6,4.72,,,0 -1999-02-01,4.7,4.91,5.0,,,0 -1999-03-01,4.78,5.14,5.23,,,0 -1999-04-01,4.69,5.08,5.18,,,0 -1999-05-01,4.85,5.44,5.54,,,0 -1999-06-01,5.1,5.81,5.9,,,0 -1999-07-01,5.03,5.68,5.79,,,0 -1999-08-01,5.2,5.84,5.94,,,0 -1999-09-01,5.25,5.8,5.92,,,0 -1999-10-01,5.43,6.03,6.11,,,0 -1999-11-01,5.55,5.97,6.03,,,0 -1999-12-01,5.84,6.19,6.28,,,0 -2000-01-01,6.12,6.58,6.66,,,0 -2000-02-01,6.22,6.68,6.52,,,0 -2000-03-01,6.22,6.5,6.26,,,0 -2000-04-01,6.15,6.26,5.99,,,0 -2000-05-01,6.33,6.69,6.44,,,0 -2000-06-01,6.17,6.3,6.1,,,0 -2000-07-01,6.08,6.18,6.05,,,0 -2000-08-01,6.18,6.06,5.83,,,0 -2000-09-01,6.13,5.93,5.8,,,0 -2000-10-01,6.01,5.78,5.74,,,0 -2000-11-01,6.09,5.7,5.72,,,0 -2000-12-01,5.6,5.17,5.24,,,0 -2001-01-01,4.81,4.86,5.16,,,0 -2001-02-01,4.68,4.89,5.1,,,0 -2001-03-01,4.3,4.64,4.89,,,0 -2001-04-01,3.98,4.76,5.14,,,1 -2001-05-01,3.78,4.93,5.39,,,1 -2001-06-01,3.58,4.81,5.28,,,1 -2001-07-01,3.62,4.76,5.24,,,1 -2001-08-01,3.47,4.57,4.97,,,1 -2001-09-01,2.82,4.12,4.73,,,1 -2001-10-01,2.33,3.91,4.57,,,1 -2001-11-01,2.18,3.97,4.65,,,1 -2001-12-01,2.22,4.39,5.09,,,0 -2002-01-01,2.16,4.34,5.04,,,0 -2002-02-01,2.23,4.3,4.91,,,0 -2002-03-01,2.57,4.74,5.28,,,0 -2002-04-01,2.48,4.65,5.21,,,0 -2002-05-01,2.35,4.49,5.16,,,0 -2002-06-01,2.2,4.19,4.93,,,0 -2002-07-01,1.96,3.81,4.65,,,0 -2002-08-01,1.76,3.29,4.26,,,0 -2002-09-01,1.72,2.94,3.87,,,0 -2002-10-01,1.65,2.95,3.94,,,0 -2002-11-01,1.49,3.05,4.05,,,0 -2002-12-01,1.45,3.03,4.03,,,0 -2003-01-01,1.36,3.05,4.05,1.65,2.29,0 -2003-02-01,1.3,2.9,3.9,1.24,1.99,0 -2003-03-01,1.24,2.78,3.81,1.09,1.94,0 -2003-04-01,1.27,2.93,3.96,1.36,2.18,0 -2003-05-01,1.18,2.52,3.57,1.18,1.91,0 -2003-06-01,1.01,2.27,3.33,0.91,1.72,0 -2003-07-01,1.12,2.87,3.98,1.3,2.11,0 -2003-08-01,1.31,3.37,4.45,1.48,2.32,0 -2003-09-01,1.24,3.18,4.27,1.29,2.19,0 -2003-10-01,1.25,3.19,4.29,1.21,2.08,0 -2003-11-01,1.34,3.29,4.3,1.27,1.96,0 -2003-12-01,1.31,3.27,4.27,1.23,1.98,0 -2004-01-01,1.24,3.12,4.15,1.09,1.89,0 -2004-02-01,1.24,3.07,4.08,0.86,1.76,0 -2004-03-01,1.19,2.79,3.83,0.52,1.47,0 -2004-04-01,1.43,3.39,4.35,1.02,1.9,0 -2004-05-01,1.78,3.85,4.72,1.34,2.09,0 -2004-06-01,2.12,3.93,4.73,1.41,2.15,0 -2004-07-01,2.1,3.69,4.5,1.29,2.02,0 -2004-08-01,2.02,3.47,4.28,1.12,1.86,0 -2004-09-01,2.12,3.36,4.13,1.1,1.8,0 -2004-10-01,2.23,3.35,4.1,0.97,1.73,0 -2004-11-01,2.5,3.53,4.19,0.9,1.68,0 -2004-12-01,2.67,3.6,4.23,0.92,1.67,0 -2005-01-01,2.86,3.71,4.22,1.13,1.72,0 -2005-02-01,3.03,3.77,4.17,1.08,1.63,0 -2005-03-01,3.3,4.17,4.5,1.29,1.79,0 -2005-04-01,3.32,4.0,4.34,1.23,1.71,0 -2005-05-01,3.33,3.85,4.14,1.28,1.65,0 -2005-06-01,3.36,3.77,4.0,1.39,1.67,0 -2005-07-01,3.64,3.98,4.18,1.67,1.88,0 -2005-08-01,3.87,4.12,4.26,1.71,1.89,0 -2005-09-01,3.85,4.01,4.2,1.4,1.7,0 -2005-10-01,4.18,4.33,4.46,1.7,1.94,0 -2005-11-01,4.33,4.45,4.54,1.97,2.06,0 -2005-12-01,4.35,4.39,4.47,2.09,2.12,0 -2006-01-01,4.45,4.35,4.42,1.93,2.01,0 -2006-02-01,4.68,4.57,4.57,1.98,2.05,0 -2006-03-01,4.77,4.72,4.72,2.09,2.2,0 -2006-04-01,4.9,4.9,4.99,2.26,2.41,0 -2006-05-01,5.0,5.0,5.11,2.3,2.45,0 -2006-06-01,5.16,5.07,5.11,2.45,2.53,0 -2006-07-01,5.22,5.04,5.09,2.46,2.51,0 -2006-08-01,5.08,4.82,4.88,2.27,2.29,0 -2006-09-01,4.97,4.67,4.72,2.38,2.32,0 -2006-10-01,5.01,4.69,4.73,2.51,2.41,0 -2006-11-01,5.01,4.58,4.6,2.41,2.29,0 -2006-12-01,4.94,4.53,4.56,2.28,2.25,0 -2007-01-01,5.06,4.75,4.76,2.47,2.44,0 -2007-02-01,5.05,4.71,4.72,2.34,2.36,0 -2007-03-01,4.92,4.48,4.56,2.04,2.18,0 -2007-04-01,4.93,4.59,4.69,2.12,2.26,0 -2007-05-01,4.91,4.67,4.75,2.29,2.37,0 -2007-06-01,4.96,5.03,5.1,2.65,2.69,0 -2007-07-01,4.96,4.88,5.0,2.6,2.64,0 -2007-08-01,4.47,4.43,4.67,2.39,2.44,0 -2007-09-01,4.14,4.2,4.52,2.14,2.26,0 -2007-10-01,4.1,4.2,4.53,2.01,2.2,0 -2007-11-01,3.5,3.67,4.15,1.35,1.77,0 -2007-12-01,3.26,3.49,4.1,1.27,1.79,0 -2008-01-01,2.71,2.98,3.74,0.86,1.47,1 -2008-02-01,2.05,2.78,3.74,0.65,1.41,1 -2008-03-01,1.54,2.48,3.51,0.23,1.09,1 -2008-04-01,1.74,2.84,3.68,0.62,1.36,1 -2008-05-01,2.06,3.15,3.88,0.79,1.46,1 -2008-06-01,2.42,3.49,4.1,0.97,1.63,1 -2008-07-01,2.28,3.3,4.01,0.84,1.57,1 -2008-08-01,2.18,3.14,3.89,1.15,1.68,1 -2008-09-01,1.91,2.88,3.69,1.55,1.85,1 -2008-10-01,1.42,2.73,3.81,2.75,2.75,1 -2008-11-01,1.07,2.29,3.53,3.69,2.89,1 -2008-12-01,0.49,1.52,2.42,1.76,2.17,1 -2009-01-01,0.44,1.6,2.52,1.59,1.91,1 -2009-02-01,0.62,1.87,2.87,1.29,1.75,1 -2009-03-01,0.64,1.82,2.82,1.23,1.71,1 -2009-04-01,0.55,1.86,2.93,1.11,1.57,1 -2009-05-01,0.5,2.13,3.29,1.07,1.72,1 -2009-06-01,0.51,2.71,3.72,1.18,1.86,1 -2009-07-01,0.48,2.46,3.56,1.18,1.82,0 -2009-08-01,0.46,2.57,3.59,1.29,1.77,0 -2009-09-01,0.4,2.37,3.4,1.03,1.64,0 -2009-10-01,0.37,2.33,3.39,0.83,1.48,0 -2009-11-01,0.31,2.23,3.4,0.48,1.28,0 -2009-12-01,0.37,2.34,3.59,0.43,1.36,0 -2010-01-01,0.35,2.48,3.73,0.42,1.37,0 -2010-02-01,0.35,2.36,3.69,0.42,1.42,0 -2010-03-01,0.4,2.43,3.73,0.56,1.51,0 -2010-04-01,0.45,2.58,3.85,0.62,1.5,0 -2010-05-01,0.37,2.18,3.42,0.41,1.31,0 -2010-06-01,0.32,2.0,3.2,0.34,1.26,0 -2010-07-01,0.29,1.76,3.01,0.34,1.24,0 -2010-08-01,0.26,1.47,2.7,0.13,1.02,0 -2010-09-01,0.26,1.41,2.65,0.13,0.91,0 -2010-10-01,0.23,1.18,2.54,-0.32,0.53,0 -2010-11-01,0.25,1.35,2.76,-0.21,0.67,0 -2010-12-01,0.29,1.93,3.29,0.21,1.04,0 -2011-01-01,0.27,1.99,3.39,0.06,1.06,0 -2011-02-01,0.29,2.26,3.58,0.25,1.24,0 -2011-03-01,0.26,2.11,3.41,-0.09,0.96,0 -2011-04-01,0.25,2.17,3.46,-0.14,0.86,0 -2011-05-01,0.19,1.84,3.17,-0.34,0.78,0 -2011-06-01,0.18,1.58,3.0,-0.38,0.76,0 -2011-07-01,0.19,1.54,3.0,-0.49,0.62,0 -2011-08-01,0.11,1.02,2.3,-0.75,0.14,0 -2011-09-01,0.1,0.9,1.98,-0.72,0.08,0 -2011-10-01,0.11,1.06,2.15,-0.63,0.19,0 -2011-11-01,0.11,0.91,2.01,-0.85,0.0,0 -2011-12-01,0.12,0.89,1.98,-0.78,-0.03,0 -2012-01-01,0.12,0.84,1.97,-0.92,-0.11,0 -2012-02-01,0.16,0.83,1.97,-1.11,-0.25,0 -2012-03-01,0.19,1.02,2.17,-1.03,-0.14,0 -2012-04-01,0.18,0.89,2.05,-1.06,-0.21,0 -2012-05-01,0.19,0.76,1.8,-1.12,-0.34,0 -2012-06-01,0.19,0.71,1.62,-1.05,-0.5,0 -2012-07-01,0.19,0.62,1.53,-1.15,-0.6,0 -2012-08-01,0.18,0.71,1.68,-1.19,-0.59,0 -2012-09-01,0.18,0.67,1.72,-1.47,-0.71,0 -2012-10-01,0.18,0.71,1.75,-1.47,-0.75,0 -2012-11-01,0.18,0.67,1.65,-1.38,-0.77,0 -2012-12-01,0.16,0.7,1.72,-1.4,-0.76,0 -2013-01-01,0.15,0.81,1.91,-1.39,-0.61,0 -2013-02-01,0.16,0.85,1.98,-1.39,-0.57,0 -2013-03-01,0.15,0.82,1.96,-1.43,-0.59,0 -2013-04-01,0.12,0.71,1.76,-1.38,-0.65,0 -2013-05-01,0.12,0.84,1.93,-1.14,-0.36,0 -2013-06-01,0.14,1.2,2.3,-0.59,0.25,0 -2013-07-01,0.12,1.4,2.58,-0.45,0.46,0 -2013-08-01,0.13,1.52,2.74,-0.33,0.55,0 -2013-09-01,0.12,1.6,2.81,-0.17,0.66,0 -2013-10-01,0.12,1.37,2.62,-0.41,0.43,0 -2013-11-01,0.12,1.37,2.72,-0.38,0.55,0 -2013-12-01,0.13,1.58,2.9,-0.09,0.74,0 -2014-01-01,0.12,1.65,2.86,-0.09,0.63,0 -2014-02-01,0.12,1.52,2.71,-0.26,0.55,0 -2014-03-01,0.13,1.64,2.72,-0.14,0.56,0 -2014-04-01,0.11,1.7,2.71,-0.11,0.54,0 -2014-05-01,0.1,1.59,2.56,-0.34,0.37,0 -2014-06-01,0.1,1.68,2.6,-0.29,0.37,0 -2014-07-01,0.11,1.7,2.54,-0.27,0.28,0 -2014-08-01,0.11,1.63,2.42,-0.21,0.22,0 -2014-09-01,0.11,1.77,2.53,0.1,0.46,0 -2014-10-01,0.1,1.55,2.3,0.06,0.38,0 -2014-11-01,0.13,1.62,2.33,0.14,0.45,0 -2014-12-01,0.21,1.64,2.21,0.37,0.51,0 -2015-01-01,0.2,1.37,1.88,0.17,0.27,0 -2015-02-01,0.22,1.47,1.98,0.11,0.26,0 -2015-03-01,0.25,1.52,2.04,0.04,0.28,0 -2015-04-01,0.23,1.35,1.94,-0.26,0.08,0 -2015-05-01,0.24,1.54,2.2,-0.1,0.33,0 -2015-06-01,0.28,1.68,2.36,0.05,0.5,0 -2015-07-01,0.3,1.63,2.32,0.14,0.5,0 -2015-08-01,0.38,1.54,2.17,0.31,0.56,0 -2015-09-01,0.37,1.49,2.17,0.33,0.65,0 -2015-10-01,0.26,1.39,2.07,0.21,0.57,0 -2015-11-01,0.48,1.67,2.26,0.4,0.69,0 -2015-12-01,0.65,1.7,2.24,0.46,0.73,0 -2016-01-01,0.54,1.52,2.09,0.33,0.67,0 -2016-02-01,0.53,1.22,1.78,0.14,0.47,0 -2016-03-01,0.66,1.38,1.89,-0.03,0.34,0 -2016-04-01,0.56,1.26,1.81,-0.22,0.19,0 -2016-05-01,0.59,1.3,1.81,-0.22,0.21,0 -2016-06-01,0.55,1.17,1.64,-0.27,0.17,0 -2016-07-01,0.51,1.07,1.5,-0.32,0.04,0 -2016-08-01,0.57,1.13,1.56,-0.17,0.09,0 -2016-09-01,0.59,1.18,1.63,-0.17,0.12,0 -2016-10-01,0.66,1.27,1.76,-0.26,0.1,0 -2016-11-01,0.74,1.6,2.14,-0.07,0.32,0 -2016-12-01,0.87,1.96,2.49,0.15,0.56,0 -2017-01-01,0.83,1.92,2.43,0.03,0.42,0 -2017-02-01,0.82,1.9,2.42,0.01,0.4,0 -2017-03-01,1.01,2.01,2.48,0.18,0.49,0 -2017-04-01,1.04,1.82,2.3,0.08,0.39,0 -2017-05-01,1.12,1.84,2.3,0.09,0.47,0 -2017-06-01,1.2,1.77,2.19,0.14,0.46,0 -2017-07-01,1.22,1.87,2.32,0.23,0.55,0 -2017-08-01,1.23,1.78,2.21,0.16,0.43,0 -2017-09-01,1.28,1.8,2.2,0.12,0.37,0 -2017-10-01,1.4,1.98,2.36,0.25,0.5,0 -2017-11-01,1.56,2.05,2.35,0.3,0.5,0 -2017-12-01,1.7,2.18,2.4,0.42,0.5,0 -2018-01-01,1.8,2.38,2.58,0.45,0.54,0 -2018-02-01,1.96,2.6,2.86,0.63,0.76,0 -2018-03-01,2.06,2.63,2.84,0.61,0.75,0 -2018-04-01,2.15,2.7,2.87,0.65,0.74,0 -2018-05-01,2.27,2.82,2.98,0.72,0.84,0 -2018-06-01,2.33,2.78,2.91,0.71,0.79,0 -2018-07-01,2.39,2.78,2.89,0.74,0.77,0 -2018-08-01,2.45,2.77,2.89,0.79,0.79,0 -2018-09-01,2.56,2.89,3.0,0.89,0.88,0 -2018-10-01,2.65,3.0,3.15,1.01,1.04,0 -2018-11-01,2.7,2.95,3.12,1.1,1.11,0 -2018-12-01,2.66,2.68,2.83,1.08,1.02,0 -2019-01-01,2.58,2.54,2.71,0.91,0.92,0 -2019-02-01,2.55,2.49,2.68,0.73,0.8,0 -2019-03-01,2.49,2.37,2.57,0.56,0.66,0 -2019-04-01,2.42,2.33,2.53,0.49,0.6,0 -2019-05-01,2.34,2.19,2.4,0.48,0.57,0 -2019-06-01,2.0,1.83,2.07,0.28,0.37,0 -2019-07-01,1.96,1.83,2.06,0.25,0.31,0 -2019-08-01,1.77,1.49,1.63,0.11,0.04,0 -2019-09-01,1.8,1.57,1.7,0.17,0.11,0 -2019-10-01,1.61,1.53,1.71,0.12,0.15,0 -2019-11-01,1.57,1.64,1.81,0.09,0.17,0 -2019-12-01,1.55,1.68,1.86,0.06,0.14,0 -2020-01-01,1.53,1.56,1.76,-0.09,0.04,0 -2020-02-01,1.41,1.32,1.5,-0.26,-0.11,0 -2020-03-01,0.33,0.59,0.87,-0.08,-0.12,1 -2020-04-01,0.18,0.39,0.66,-0.37,-0.45,1 -2020-05-01,0.16,0.34,0.67,-0.43,-0.44,0 -2020-06-01,0.18,0.34,0.73,-0.67,-0.54,0 -2020-07-01,0.15,0.28,0.62,-1.03,-0.83,0 -2020-08-01,0.13,0.27,0.65,-1.28,-1.01,0 -2020-09-01,0.13,0.27,0.68,-1.26,-0.98,0 -2020-10-01,0.13,0.34,0.79,-1.23,-0.92,0 -2020-11-01,0.12,0.39,0.87,-1.24,-0.84,0 -2020-12-01,0.1,0.39,0.93,-1.48,-0.98,0 -2021-01-01,0.1,0.45,1.08,-1.66,-1.0,0 -2021-02-01,0.07,0.54,1.26,-1.77,-0.92,0 -2021-03-01,0.08,0.82,1.61,-1.67,-0.66,0 -2021-04-01,0.06,0.86,1.64,-1.67,-0.71,0 -2021-05-01,0.05,0.82,1.62,-1.83,-0.85,0 -2021-06-01,0.07,0.84,1.52,-1.63,-0.82,0 -2021-07-01,0.08,0.76,1.32,-1.73,-1.01,0 -2021-08-01,0.07,0.77,1.28,-1.72,-1.07,0 -2021-09-01,0.08,0.86,1.37,-1.63,-0.97,0 -2021-10-01,0.11,1.11,1.58,-1.64,-0.95,0 -2021-11-01,0.18,1.2,1.56,-1.78,-1.06,0 -2021-12-01,0.3,1.23,1.47,-1.52,-0.99,0 -2022-01-01,0.55,1.54,1.76,-1.26,-0.69,0 -2022-02-01,1.0,1.81,1.93,-1.06,-0.52,0 -2022-03-01,1.34,2.11,2.13,-1.3,-0.72,0 -2022-04-01,1.89,2.78,2.75,-0.54,-0.14,0 -2022-05-01,2.06,2.87,2.9,-0.15,0.21,0 -2022-06-01,2.65,3.19,3.14,0.3,0.53,0 -2022-07-01,3.02,2.96,2.9,0.38,0.53,0 -2022-08-01,3.28,3.03,2.9,0.34,0.39,0 -2022-09-01,3.89,3.7,3.52,1.25,1.14,0 -2022-10-01,4.43,4.18,3.98,1.71,1.59,0 -2022-11-01,4.73,4.06,3.89,1.61,1.52,0 -2022-12-01,4.68,3.76,3.62,1.45,1.36,0 -2023-01-01,4.69,3.64,3.53,1.41,1.29,0 -2023-02-01,4.93,3.94,3.75,1.5,1.41,0 -2023-03-01,4.68,3.82,3.66,1.45,1.36,0 -2023-04-01,4.68,3.54,3.46,1.23,1.19,0 -2023-05-01,4.91,3.59,3.57,1.44,1.36,0 -2023-06-01,5.24,3.95,3.75,1.81,1.55,0 -2023-07-01,5.37,4.14,3.9,1.93,1.6,0 -2023-08-01,5.37,4.31,4.17,2.07,1.83,0 -2023-09-01,5.44,4.49,4.38,2.23,2.04,0 -2023-10-01,5.42,4.77,4.8,2.46,2.41,0 -2023-11-01,5.28,4.49,4.5,2.24,2.2,0 -2023-12-01,4.96,4.0,4.02,1.88,1.84,0 -2024-01-01,4.79,3.98,4.06,1.76,1.79,0 -2024-02-01,4.92,4.19,4.21,1.87,1.93,0 -2024-03-01,4.99,4.2,4.21,1.82,1.9,0 -2024-04-01,5.14,4.56,4.54,2.11,2.15,0 -2024-05-01,5.16,4.5,4.48,2.17,2.15,0 -2024-06-01,5.11,4.32,4.31,2.1,2.05,0 -2024-07-01,4.9,4.16,4.25,1.98,1.97,0 -2024-08-01,4.43,3.71,3.87,1.74,1.76,0 -2024-09-01,4.03,3.5,3.72,1.53,1.62,0 -2024-10-01,4.2,3.91,4.1,1.68,1.81,0 -2024-11-01,4.33,4.23,4.36,1.84,2.03,0 -2024-12-01,4.23,4.25,4.39,1.89,2.09,0 diff --git a/lectures/_toc.yml b/lectures/_toc.yml index 28999d83f..f322b2864 100644 --- a/lectures/_toc.yml +++ b/lectures/_toc.yml @@ -137,12 +137,10 @@ parts: - file: markov_asset - file: hansen_singleton_1983 - file: hansen_singleton_1982 - - file: doubts_or_variability - file: ge_arrow - file: harrison_kreps - file: morris_learn - file: affine_risk_prices - - file: risk_aversion_or_mistaken_beliefs - caption: Data and Empirics numbered: true chapters: diff --git a/lectures/affine_risk_prices.md b/lectures/affine_risk_prices.md index 9c3964b9f..b740f36c1 100644 --- a/lectures/affine_risk_prices.md +++ b/lectures/affine_risk_prices.md @@ -45,7 +45,7 @@ among expected returns across assets. Empirical difficulties with this specification (the equity premium puzzle, the risk-free rate puzzle, and the Hansen-Jagannathan bounds discussed in -{doc}`Doubts or Variability? `) motivate the alternative approach +{doc}`advanced:doubts_or_variability`) motivate the alternative approach described in this lecture. Put bluntly, the model to be studied in this lecture declares the Lucas asset pricing model's stochastic discount factor to be a failure. @@ -71,7 +71,7 @@ Key applications we study include: ({cite:t}`AngPiazzesi2003`). 3. *Risk-neutral probabilities*: a change-of-measure representation of the pricing equation. 4. *Distorted beliefs*: reinterpreting risk price estimates when agents hold systematically - biased forecasts ({cite:t}`piazzesi2015trend`); see also {doc}`Risk Aversion or Mistaken Beliefs? `. + biased forecasts ({cite:t}`piazzesi2015trend`); see also {doc}`advanced:risk_aversion_or_mistaken_beliefs`. We start with the following imports: @@ -1387,7 +1387,7 @@ Disentangling belief distortions from genuine risk prices requires additional data, for example, the survey forecasts used by {cite:t}`piazzesi2015trend`. -Our {doc}`Risk Aversion or Mistaken Beliefs? ` lecture +Our {doc}`advanced:risk_aversion_or_mistaken_beliefs` lecture explores this confounding in greater depth. ## Concluding remarks @@ -1409,7 +1409,7 @@ Key features are: {cite:t}`piazzesi2015trend`. The model also connects directly to the Hansen–Jagannathan bounds studied in -{doc}`Doubts or Variability? ` and to robust +{doc}`advanced:doubts_or_variability` and to robust control interpretations of the stochastic discount factor described in other chapters of {cite:t}`Ljungqvist2012`. diff --git a/lectures/doubts_or_variability.md b/lectures/doubts_or_variability.md deleted file mode 100644 index 33472d9b5..000000000 --- a/lectures/doubts_or_variability.md +++ /dev/null @@ -1,3180 +0,0 @@ ---- -jupytext: - text_representation: - extension: .md - format_name: myst - format_version: 0.13 - jupytext_version: 1.17.1 -kernelspec: - display_name: Python 3 (ipykernel) - language: python - name: python3 ---- - -(doubts_or_variability)= -```{raw} jupyter - -``` - -# Doubts or Variability? - -```{contents} Contents -:depth: 2 -``` - -> No one has found risk aversion parameters of 50 or 100 in the diversification of -> individual portfolios, in the level of insurance deductibles, in the wage premiums -> associated with occupations with high earnings risk, or in the revenues raised by -> state-operated lotteries. It -> would be good to have the equity premium resolved, but I think we need to look beyond high -> estimates of risk aversion to do it. -- Robert E. Lucas Jr., {cite}`Lucas_2003` - -## Overview - -This lecture describes machinery that empirical macro-finance economists have used to evaluate the fits of structural statistical models that link asset prices to aggregate consumption. - -The Lucas asset pricing model {cite}`Lucas1978` functions as a benchmark that motivates much of this work. - -```{note} -New Keynesians call the consumption Euler equation for a one-period risk-free bond in the Lucas {cite}`Lucas1978` model the **IS curve**. - -The distinguished **old Keynesian** disapproved of that name because the object it described was so remote from the investment function that was an important component of the IS curve of John R. Hicks {cite}`hicks1937mr` that Tobin used. - -See {cite}`tobin1992old`. -``` - - -In two classic papers, Lars Peter Hansen and Kenneth Singleton used the method of maximum likelihood -{cite}`hansen1983stochastic` and a generalized method of moments {cite}`hansen1982generalized` to investigate how well Lucas's model fit some post WWII data. - -The Hansen-Singleton papers systematically organized evidence about directions in which Lucas's model misfit the data that macroeconomists subsequently called - -- an **equity premium** puzzle -- a **risk-free rate** puzzle - -```{note} -{cite:t}`MehraPrescott1985` is widely credited for naming the **equity premium** puzzle. - -{cite:t}`Weil_1989` is widely credited for naming the **risk-free rate** puzzle. - -``` - -These *puzzles* are just ways of summarizing particular dimensions along which a particular asset pricing model -- such as Lucas's -- fails empirically. - -They are thus special cases of specification failures detected by statistical diagnostics constructed earlier by {cite:t}`hansen1983stochastic` and {cite:t}`hansen1982generalized`. - -Macro-finance models that purport to resolve such puzzles all do so by changing features of the economic environment assumed by Lucas {cite}`Lucas1978`. - -Many important papers have proceeded by altering the *preferences* that Lucas had imputed to a representative agent. - -Hansen-Jagannathan bounds are a key tool for evaluating how well such re-specifications do in -correcting those misfits of Lucas's 1978 model. - - -This lecture begins with a description of the {cite:t}`Hansen_Jagannathan_1991` machinery. - -After doing that, we proceed to describe a line of research that altered Lucas's preference specification in ways that we can think of as being designed with the Hansen-Jagannathan bounds in mind. - - -We'll organize much of this lecture around parts of the paper by Thomas Tallarini {cite}`Tall2000`. - -His paper is particularly enlightening for macro-finance researchers because it showed that a recursive preference specification could fit both the equity premium and the risk-free rate, thus *resolving* both of the puzzles mentioned above. - -But like any good paper in applied economics, in answering some questions (i.e., resolving some puzzles), Tallarini's paper naturally posed new ones. - -Thus, Tallarini's puzzles-resolving required setting the risk-aversion coefficient $\gamma$ to around 50 for a random-walk consumption model and around 75 for a trend-stationary model, exactly the range that provoked the skepticism in the above quote from {cite:t}`Lucas_2003`. - -This brings us to the next parts of this lecture. - -Lucas's skeptical response to Tallarini's explanation of the two puzzles led -{cite:t}`BHS_2009` to ask whether those large $\gamma$ values really measure aversion to atemporal risk, or whether they instead measure the agent's doubts about the underlying probability model. - -Their answer, and the theme of the remaining parts of this lecture, is that much of what looks like "risk aversion" can be reinterpreted as **model uncertainty**. - -The same recursion that defines Tallarini's risk-sensitive agent is observationally equivalent to another recursion that expresses an agent's concern that the probability model governing consumption growth may be wrong. - -Under this reading, a parameter value that indicates extreme risk aversion in one interpretation of the recursion indicates concerns about *misspecification* in another interpretation of the same recursion. - -{cite:t}`BHS_2009` show that modest amounts of model uncertainty can substitute for large amounts of risk aversion in terms of choices and effects on asset prices. - - -This reinterpretation changes the welfare question that asset prices answer. - -Do large risk premia measure the benefits from reducing well-understood aggregate fluctuations, or do they measure benefits from reducing doubts about the model describing consumption growth? - - -To proceed, we begin by describing {cite:t}`Hansen_Jagannathan_1991` bounds, then specify the statistical environment, lay out four related preference specifications and the connections among them, and finally revisit Tallarini's calibration through the lens of detection-error probabilities. - -Along the way, we draw on ideas and techniques from - -- {ref}`Asset Pricing: Finite State Models `, where we introduce stochastic discount factors, and -- {ref}`Likelihood Ratio Processes `, where we develop the likelihood-ratio machinery that reappears here as the worst-case distortion $\hat g$. - - -In addition to what's in Anaconda, this lecture will need the following libraries: - -```{code-cell} ipython3 -:tags: [hide-output] - -!pip install pandas-datareader -``` - -We use the following imports: - -```{code-cell} ipython3 -import datetime as dt -import numpy as np -import pandas as pd -import matplotlib.pyplot as plt -from pandas_datareader import data as web -from scipy.stats import norm -from scipy.optimize import brentq -``` - -We also set up calibration inputs and compute the covariance matrix of equity and risk-free returns from reported moments. - -```{code-cell} ipython3 -β = 0.995 -T = 235 - -# Table 2 parameters -rw = dict(μ=0.00495, σ_ε=0.0050) -ts = dict(μ=0.00418, σ_ε=0.0050, ρ=0.980, ζ=-4.48) - -# Table 1 moments, converted from percent to decimals -r_e_mean, r_e_std = 0.0227, 0.0768 -r_f_mean, r_f_std = 0.0032, 0.0061 -r_excess_std = 0.0767 - -R_mean = np.array([1.0 + r_e_mean, 1.0 + r_f_mean]) -cov_erf = (r_e_std**2 + r_f_std**2 - r_excess_std**2) / 2.0 -Σ_R = np.array( - [ - [r_e_std**2, cov_erf], - [cov_erf, r_f_std**2], - ] -) -Σ_R_inv = np.linalg.inv(Σ_R) -``` - -## Asset pricing 101 - -### Pricing kernel and the risk-free rate - -Let's briefly review a few key concepts from {ref}`Asset Pricing: Finite State Models `. - -A random variable $m_{t+1}$ is called a **stochastic discount factor** if, for a one-period payoff $y_{t+1}$ with time-$t$ price $p_t$, it satisfies - -```{math} -:label: bhs_pricing_eq -p_t = E_t(m_{t+1} y_{t+1}), -``` - -where $E_t$ denotes the mathematical expectation conditioned on date-$t$ information. - -For time-separable CRRA preferences with discount factor $\beta$ and coefficient of relative risk aversion $\gamma$, the marginal rate of substitution gives - -```{math} -:label: bhs_crra_sdf -m_{t+1} = \beta \left(\frac{C_{t+1}}{C_t}\right)^{-\gamma}, -``` - -where $C_t$ is consumption at time $t$. - -Setting $y_{t+1} = 1$ (a risk-free bond) in {eq}`bhs_pricing_eq` yields the reciprocal of the gross one-period risk-free rate: - -```{math} -:label: bhs_riskfree -\frac{1}{R_t^f} = E_t[m_{t+1}] = E_t \left[\beta\left(\frac{C_{t+1}}{C_t}\right)^{-\gamma}\right]. -``` - -### Hansen--Jagannathan bounds - -Let $R_{t+1}^e$ denote the gross return on a risky asset (e.g., the market portfolio) and $R_{t+1}^f$ the gross return on a one-period risk-free bond. - -The **excess return** is - -$$ -\xi_{t+1} = R_{t+1}^e - R_{t+1}^f. -$$ - -An excess return is the payoff on a zero-cost portfolio that is long one dollar of the risky asset and short one dollar of the risk-free bond. - -Because the portfolio costs nothing to enter, its price is $p_t = 0$, so {eq}`bhs_pricing_eq` implies - -$$ -0 = E_t[m_{t+1} \xi_{t+1}]. -$$ - -We can decompose the expectation of a product into a covariance plus a product of expectations: - -$$ -E_t[m_{t+1} \xi_{t+1}] -= -\operatorname{cov}_t(m_{t+1},\xi_{t+1}) + E_t[m_{t+1}] E_t[\xi_{t+1}], -$$ - -where $\operatorname{cov}_t$ denotes the conditional covariance and $\sigma_t$ will denote the conditional standard deviation. - -Setting the left-hand side to zero and solving for the expected excess return gives - -$$ -E_t[\xi_{t+1}] = -\frac{\operatorname{cov}_t(m_{t+1}, \xi_{t+1})}{E_t[m_{t+1}]}. -$$ - -Taking absolute values and applying the **Cauchy--Schwarz inequality** $|\operatorname{cov}(X,Y)| \leq \sigma(X) \sigma(Y)$ yields - -```{math} -:label: bhs_hj_bound -\frac{|E_t[\xi_{t+1}]|}{\sigma_t(\xi_{t+1})} -\leq -\frac{\sigma_t(m_{t+1})}{E_t[m_{t+1}]}. -``` - -The left-hand side of {eq}`bhs_hj_bound` is the **Sharpe ratio**: the expected excess return per unit of return volatility. - -The right-hand side, $\sigma_t(m)/E_t(m)$, is the **market price of risk**: the maximum Sharpe ratio attainable in the market. - -In words, no asset's Sharpe ratio can exceed the market price of risk. - -#### Unconditional version - -The bound {eq}`bhs_hj_bound` is stated in conditional terms. - -There is an unconditional counterpart that involves a vector of $n$ gross returns $R_{t+1}$ (e.g., equity and risk-free) with unconditional mean $E(R)$ and covariance matrix $\Sigma_R$: - -```{math} -:label: bhs_hj_unconditional -\sigma(m) -\geq -\sqrt{b^\top \Sigma_R^{-1} b}, -\qquad -b = \mathbf{1} - E(m) E(R). -``` - -{ref}`Exercise 1 ` walks through a derivation of this unconditional bound. - -Here $\mathbf{1}$ denotes an $n \times 1$ vector of ones. - -The function below computes the right-hand side of {eq}`bhs_hj_unconditional` for any given value of $E(m)$. - -```{code-cell} ipython3 -def hj_std_bound(E_m): - b = np.ones(2) - E_m * R_mean - var_lb = b @ Σ_R_inv @ b - return np.sqrt(np.maximum(var_lb, 0.0)) -``` - -### Two puzzles - -Reconciling formula {eq}`bhs_crra_sdf` with the market price of risk extracted from data on asset returns (like those in Table 1 below) requires a value of $\gamma$ so high that it provokes skepticism. - -This is the **equity premium puzzle**. - -But high values of $\gamma$ bring another difficulty. - -High values of $\gamma$ that deliver enough volatility $\sigma(m)$ also push $E(m)$, the reciprocal of the gross risk-free rate, too far down, away from the Hansen--Jagannathan bound. - -This is the **risk-free rate puzzle** of {cite:t}`Weil_1989`. - -{cite:t}`Tall2000` showed that recursive preferences with IES $= 1$ can clear the HJ bar while avoiding the risk-free rate puzzle. - -The figure below reproduces Tallarini's key diagnostic. - -Because it motivates much of what follows, we show Tallarini's figure before developing the underlying theory. - - -Closed-form expressions for the Epstein--Zin SDF moments used in the plot are derived in {ref}`Exercise 2 `. - - -The code below implements them alongside the corresponding CRRA moments. - -```{code-cell} ipython3 -def moments_type1_rw(γ): - μ, σ = rw["μ"], rw["σ_ε"] - E_m = β * np.exp(-μ + 0.5 * σ**2 * (2.0 * γ - 1.0)) - var_log_m = (σ * γ) ** 2 - mpr = np.sqrt(np.exp(var_log_m) - 1.0) - return E_m, mpr - - -def moments_type1_ts(γ): - μ, σ, ρ = ts["μ"], ts["σ_ε"], ts["ρ"] - mean_term = 1.0 - (2.0 * (1.0 - β) * (1.0 - γ)) / (1.0 - β * ρ) \ - + (1.0 - ρ) / (1.0 + ρ) - E_m = β * np.exp(-μ + 0.5 * σ**2 * mean_term) - var_term = (((1.0 - β) * (1.0 - γ)) / (1.0 - β * ρ) - 1.0) ** 2 \ - + (1.0 - ρ) / (1.0 + ρ) - var_log_m = σ**2 * var_term - mpr = np.sqrt(np.exp(var_log_m) - 1.0) - return E_m, mpr - - -def moments_crra_rw(γ): - μ, σ = rw["μ"], rw["σ_ε"] - var_log_m = (γ * σ) ** 2 - mean_log_m = np.log(β) - γ * μ - E_m = np.exp(mean_log_m + 0.5 * var_log_m) - mpr = np.sqrt(np.exp(var_log_m) - 1.0) - return E_m, mpr -``` - -For each value of $\gamma \in \{1, 5, 10, \ldots, 51\}$, we plot the implied $(E(m),\sigma(m))$ pair for three combinations of specifications of preferences and consumption growth processes. - -These are time-separable CRRA (crosses), Epstein--Zin preferences with random-walk consumption (circles), and Epstein--Zin preferences with trend-stationary consumption (pluses). - -```{code-cell} ipython3 ---- -mystnb: - figure: - caption: SDF moments and Hansen-Jagannathan bound - name: fig-bhs-1 ---- -γ_grid = np.arange(1, 55, 5) - -Em_rw = np.array([moments_type1_rw(γ)[0] for γ in γ_grid]) -σ_m_rw = np.array( - [moments_type1_rw(γ)[0] * moments_type1_rw(γ)[1] for γ in γ_grid]) - -Em_ts = np.array([moments_type1_ts(γ)[0] for γ in γ_grid]) -σ_m_ts = np.array( - [moments_type1_ts(γ)[0] * moments_type1_ts(γ)[1] for γ in γ_grid]) - -Em_crra = np.array([moments_crra_rw(γ)[0] for γ in γ_grid]) -σ_m_crra = np.array( - [moments_crra_rw(γ)[0] * moments_crra_rw(γ)[1] for γ in γ_grid]) - -Em_grid = np.linspace(0.8, 1.01, 1000) -HJ_std = np.array([hj_std_bound(x) for x in Em_grid]) - -fig, ax = plt.subplots(figsize=(7, 5)) -ax.plot(Em_grid, HJ_std, lw=2, color="black", - label="Hansen-Jagannathan bound") -ax.plot(Em_rw, σ_m_rw, "o", lw=2, - label="Epstein-Zin, random walk") -ax.plot(Em_ts, σ_m_ts, "+", lw=2, - label="Epstein-Zin, trend stationary") -ax.plot(Em_crra, σ_m_crra, "x", lw=2, - label="time-separable CRRA") - -ax.set_xlabel(r"$E(m)$") -ax.set_ylabel(r"$\sigma(m)$") -ax.legend(frameon=False) -ax.set_xlim(0.8, 1.01) -ax.set_ylim(0.0, 0.42) - -plt.tight_layout() -plt.show() -``` - -The crosses tell the story of the risk-free-rate puzzle ({cite:t}`Weil_1989`). - -As $\gamma$ rises, $\sigma(m)/E(m)$ grows but $E(m)$ drifts well below the range consistent with the observed risk-free rate. - -The circles and pluses show Tallarini's way out. - -Recursive utility with IES $= 1$ pushes volatility upward while keeping $E(m)$ roughly pinned near $1/(1+r^f)$. - -For the random-walk model, the bound is reached at around $\gamma = 50$. - -For the trend-stationary model, it is reached at around $\gamma = 75$. - -The quantitative achievement is impressive, but Lucas's challenge still stands. - -Where is the microeconomic evidence for $\gamma = 50$? - -{cite:t}`BHS_2009` argue that these large $\gamma$ values are not really about risk aversion. - -Instead, they reflect the agent's doubts about the probability model itself. - -## The choice setting - -To understand their reinterpretation, we first need to describe their statistical models of consumption growth. - -### Shocks and consumption plans - -We work with a general class of consumption plans. - -Let $x_t$ be an $n \times 1$ state vector and $\varepsilon_{t+1}$ an $m \times 1$ shock. - -A consumption plan belongs to the set $\mathcal{C}(A, B, H; x_0)$ if it admits the recursive representation - -```{math} -:label: bhs_state_space -x_{t+1} = A x_t + B \varepsilon_{t+1}, -\qquad -c_t = H x_t, -``` - -where the eigenvalues of $A$ are bounded in modulus by $1/\sqrt{\beta}$. - -The time-$t$ consumption can therefore be written as - -```{math} -c_t = H \left(B\varepsilon_t + AB\varepsilon_{t-1} + \cdots + A^{t-1}B\varepsilon_1\right) + HA^t x_0. -``` - -The equivalence theorems and Bellman equations that follow hold for arbitrary plans in $\mathcal{C}(A,B,H;x_0)$. - -We focus on the random-walk and trend-stationary models as two special cases. - -### Consumption dynamics - -Let $c_t = \log C_t$ be log consumption. - -The *geometric-random-walk* specification is - -```{math} -c_{t+1} = c_t + \mu + \sigma_\varepsilon \varepsilon_{t+1}, \qquad \varepsilon_{t+1} \sim \mathcal{N}(0, 1). -``` - -Iterating forward yields - -```{math} -c_t = c_0 + t\mu + \sigma_\varepsilon(\varepsilon_t + \varepsilon_{t-1} + \cdots + \varepsilon_1), -\qquad -t \geq 1. -``` - -The *geometric-trend-stationary* specification can be written as a deterministic trend plus a stationary AR(1) component: - -```{math} -c_t = \zeta + \mu t + z_t, -\qquad -z_{t+1} = \rho z_t + \sigma_\varepsilon \varepsilon_{t+1}, -\qquad -\varepsilon_{t+1} \sim \mathcal{N}(0, 1). -``` - -With $z_0 = c_0 - \zeta$, this implies the representation - -```{math} -c_t -= -\rho^t c_0 + \mu t + (1-\rho^t)\zeta -+ -\sigma_\varepsilon(\varepsilon_t + \rho \varepsilon_{t-1} + \cdots + \rho^{t-1}\varepsilon_1), -\qquad -t \geq 1. -``` - -Equivalently, defining the detrended series $\tilde c_t := c_t - \mu t$, - -```{math} -\tilde c_{t+1} - \zeta = \rho(\tilde c_t - \zeta) + \sigma_\varepsilon \varepsilon_{t+1}. -``` - -The estimated parameters are $(\mu, \sigma_\varepsilon)$ for the random walk and $(\mu, \sigma_\varepsilon, \rho, \zeta)$ for the trend-stationary case. - -We record these parameters and moments from the paper's tables for later reference. - -```{code-cell} ipython3 -print("Table 2 parameters") -print(f"random walk: μ={rw['μ']:.5f}, σ_ε={rw['σ_ε']:.5f}") -print( - f"trend stationary: μ={ts['μ']:.5f}, σ_ε={ts['σ_ε']:.5f}, " - f"ρ={ts['ρ']:.3f}, ζ={ts['ζ']:.2f}" -) -print() -print("Table 1 moments") -print(f"E[r_e]={r_e_mean:.4f}, std[r_e]={r_e_std:.4f}") -print(f"E[r_f]={r_f_mean:.4f}, std[r_f]={r_f_std:.4f}") -print(f"std[r_e-r_f]={r_excess_std:.4f}") -``` - -(pref_equiv)= -## Preferences, distortions, and detection - - -### Overview of agents I, II, III, and IV - -We compare four preference specifications over consumption plans $C^\infty \in \mathcal{C}$. -```{note} -For origins of the names **multiplier** and **constraint** preferences, see {cite:t}`HansenSargent2001`. - -The risk-sensitive preference specification used here comes from {cite:t}`hansen1995discounted`, which adjusts specifications used earlier by -{cite:t}`jacobson1973optimal`, {cite:t}`Whittle_1981`, and {cite:t}`Whittle_1990` to accommodate discounting in a way that preserves time-invariant optimal decision rules. -``` - -*Type I agent (Kreps--Porteus--Epstein--Zin--Tallarini)* with -- a discount factor $\beta \in (0,1)$; -- an intertemporal elasticity of substitution fixed at $1$; -- a risk-aversion parameter $\gamma \geq 1$; and -- an approximating conditional density $\pi(\cdot)$ for shocks and its implied joint distribution $\Pi_\infty(\cdot \mid x_0)$. - -*Type II agent (multiplier preferences)* with -- $\beta \in (0,1)$; -- IES $=1$; -- unit risk aversion; -- an approximating model $\Pi_\infty(\cdot \mid x_0)$; and -- a penalty parameter $\theta > 0$ that discourages probability distortions using relative entropy. - -*Type III agent (constraint preferences)* with -- $\beta \in (0,1)$; -- IES $=1$; -- unit risk aversion; -- an approximating model $\Pi_\infty(\cdot \mid x_0)$; and -- a bound $\eta$ on discounted relative entropy. - -*Type IV agent (pessimistic ex post Bayesian)* with -- $\beta \in (0,1)$; -- IES $=1$; -- unit risk aversion; and -- a single pessimistic joint distribution $\hat\Pi_\infty(\cdot \mid x_0, \theta)$ induced by the type II worst-case distortion. - - -Two sets of equivalence results tie these agents together. - -Types I and II turn out to be observationally equivalent in a strong sense, having identical preferences over $\mathcal{C}$. - -Types III and IV are equivalent in a weaker but still useful sense, delivering the same worst-case pricing implications as a type II agent for a given endowment process. - -We now formalize each agent type and describe relationships among them. - -For each type, we derive a Bellman equation that pins down the agent's value function and stochastic discount factor. - -The stochastic discount factor for all four types takes the form - -$$ -m_{t+1} = \beta \frac{\partial U_{t+1}/\partial c_{t+1}}{\partial U_t/\partial c_t} \hat g_{t+1}, -$$ - -where $\hat g_{t+1}$ is a likelihood-ratio distortion that we will define in each case. - - -Along the way, we introduce the likelihood-ratio distortion that enters the stochastic discount factor and describe detection-error probabilities that will serve as our new calibration tool. - -### Type I: Kreps--Porteus--Epstein--Zin--Tallarini preferences - -The Epstein--Zin--Weil specification combines current consumption with a certainty equivalent of future utility through a CES aggregator: - -```{math} -:label: bhs_ez_general -V_t = \left[(1-\beta) C_t^{\rho} + \beta \mathcal{R}_t(V_{t+1})^{\rho}\right]^{1/\rho}, -\qquad -\rho := 1 - \frac{1}{\psi}, -``` - -where $\psi > 0$ is the intertemporal elasticity of substitution and the certainty equivalent uses the risk-aversion parameter $\gamma \geq 1$: - -```{math} -:label: bhs_certainty_equiv -\mathcal{R}_t(V_{t+1}) -= -\left(E_t\left[V_{t+1}^{1-\gamma}\right]\right)^{\frac{1}{1-\gamma}}. -``` - -```{note} -For readers interested in a general class of aggregators and certainty equivalents, see Section -7.3 of {cite:t}`Sargent_Stachurski_2025`. -``` - -Let $\psi = 1$, so $\rho \to 0$. - -In this limit the CES aggregator reduces to - -$$ -V_t = C_t^{1-\beta} \cdot \mathcal{R}_t(V_{t+1})^{\beta}. -$$ - -Taking logs and expanding the certainty equivalent {eq}`bhs_certainty_equiv` gives the *type I recursion*: - -```{math} -:label: bhs_type1_recursion -\log V_t -= -(1-\beta)c_t -+ -\frac{\beta}{1-\gamma} -\log E_t\left[(V_{t+1})^{1-\gamma}\right]. -``` - -A useful change of variables is to define the transformed continuation value - -```{math} -:label: bhs_Ut_def -U_t \equiv \frac{\log V_t}{1-\beta} -``` - -and the robustness parameter - -```{math} -:label: bhs_theta_def -\theta = \frac{-1}{(1-\beta)(1-\gamma)}. -``` - -Substituting into {eq}`bhs_type1_recursion` yields the *risk-sensitive recursion* ({ref}`Exercise 3 ` asks you to verify this step) - -```{math} -:label: bhs_risk_sensitive -U_t = c_t - \beta\theta \log E_t\left[\exp\left(\frac{-U_{t+1}}{\theta}\right)\right]. -``` - -When $\gamma = 1$ (equivalently $\theta = +\infty$), the $\log E \exp$ term reduces to $E_t U_{t+1}$ and the recursion becomes standard discounted expected log utility, $U_t = c_t + \beta E_t U_{t+1}$. - -For consumption plans in $\mathcal{C}(A, B, H; x_0)$, the recursion {eq}`bhs_risk_sensitive` implies the Bellman equation - -```{math} -:label: bhs_bellman_type1 -U(x) = c - \beta\theta \log \int \exp\left[\frac{-U(Ax + B\varepsilon)}{\theta}\right] \pi(\varepsilon)d\varepsilon. -``` - -#### Deriving the stochastic discount factor - -The stochastic discount factor is the intertemporal marginal rate of substitution, the ratio of marginal utilities at dates $t+1$ and $t$. - -Because $c_t$ enters {eq}`bhs_risk_sensitive` linearly, $\partial U_t / \partial c_t = 1$. - -Converting from log consumption to the consumption good gives $\partial U_t / \partial C_t = 1/C_t$. - -A perturbation to $c_{t+1}$ in a particular state feeds into $U_t$ through the $\log E_t \exp$ term. - -Differentiating {eq}`bhs_risk_sensitive`: - -$$ -\frac{\partial U_t}{\partial c_{t+1}} -= --\beta\theta -\frac{\exp(-U_{t+1}/\theta) (-1/\theta)}{E_t[\exp(-U_{t+1}/\theta)]} -\underbrace{\frac{\partial U_{t+1}}{\partial c_{t+1}}}_{=1} -= -\beta \frac{\exp(-U_{t+1}/\theta)}{E_t[\exp(-U_{t+1}/\theta)]}. -$$ - -Converting to consumption levels gives -$\partial U_t / \partial C_{t+1} = \beta \frac{\exp(-U_{t+1}/\theta)}{E_t[\exp(-U_{t+1}/\theta)]} \frac{1}{C_{t+1}}$. - -The ratio of these marginal utilities gives the SDF: - -```{math} -:label: bhs_sdf_Ut -m_{t+1} -= -\frac{\partial U_t / \partial C_{t+1}}{\partial U_t / \partial C_t} -= -\beta \frac{C_t}{C_{t+1}} -\frac{\exp(-U_{t+1}/\theta)}{E_t[\exp(-U_{t+1}/\theta)]}. -``` - - -The second factor is the likelihood-ratio distortion $\hat g_{t+1}$: an exponential tilt that overweights states where the continuation value $U_{t+1}$ is low. - - -### Type II: multiplier preferences - -We now turn to the type II (multiplier) agent. - -Before writing down the preferences, we need the machinery of martingale likelihood ratios that formalizes what it means to distort a probability model. - -These tools build on {ref}`Likelihood Ratio Processes `, which develops properties of likelihood ratios in detail, and {ref}`Divergence Measures `, which covers relative entropy. - - -#### Martingale likelihood ratios - -Consider a nonnegative martingale $G_t$ with $E(G_t \mid x_0) = 1$. - -Its one-step increments - -```{math} -g_{t+1} = \frac{G_{t+1}}{G_t}, -\qquad -E_t[g_{t+1}] = 1, -\quad -g_{t+1} \geq 0, -\qquad -G_0 = 1, -``` - -define distorted conditional expectations: $\tilde E_t[b_{t+1}] = E_t[g_{t+1}b_{t+1}]$. - -The conditional relative entropy of the distortion is $E_t[g_{t+1}\log g_{t+1}]$, and the discounted entropy over the entire path is $\beta E\bigl[\sum_{t=0}^{\infty} \beta^t G_tE_t(g_{t+1}\log g_{t+1})\big|x_0\bigr]$. - - -A type II agent's *multiplier* preference ordering over consumption plans $C^\infty \in \mathcal{C}(A,B,H;x_0)$ is defined by - -```{math} -:label: bhs_type2_objective -\min_{\{g_{t+1}\}} -\sum_{t=0}^{\infty} E\left\{\beta^t G_t -\left[c_t + \beta\theta E_t\left(g_{t+1}\log g_{t+1}\right)\right] -\Big| x_0\right\}, -``` - -where $G_{t+1} = g_{t+1}G_t$, $E_t[g_{t+1}] = 1$, $g_{t+1} \geq 0$, and $G_0 = 1$. - -A larger $\theta$ makes probability distortions more expensive, discouraging departures from the approximating model. - -The value function satisfies the Bellman equation - -```{math} -:label: bhs_bellman_type2 -W(x) -= -c + \min_{g(\varepsilon) \geq 0} -\beta \int \bigl[g(\varepsilon) W(Ax + B\varepsilon) -+ \theta g(\varepsilon)\log g(\varepsilon)\bigr] \pi(\varepsilon) d\varepsilon -``` - -subject to $\int g(\varepsilon) \pi(\varepsilon) d\varepsilon = 1$. - -Inside the integral, $g(\varepsilon) W(Ax + B\varepsilon)$ is the continuation value under the distorted model $g\pi$, while $\theta g(\varepsilon)\log g(\varepsilon)$ is the entropy penalty that makes large departures from the approximating model $\pi$ costly. - -The minimizer is ({ref}`Exercise 4 ` derives this and verifies the equivalence $W \equiv U$) - -```{math} -:label: bhs_ghat -\hat g_{t+1} -= -\frac{\exp \bigl(-W(Ax_t + B\varepsilon_{t+1})/\theta\bigr)}{E_t \left[\exp \bigl(-W(Ax_t + B\varepsilon_{t+1})/\theta\bigr)\right]}. -``` - -Notice that $g(\varepsilon)$ multiplies both the continuation value $W$ and the entropy penalty. - -This is the key structural feature that makes $\hat g$ a likelihood ratio. - - -Substituting {eq}`bhs_ghat` back into {eq}`bhs_bellman_type2` gives - -$$W(x) = c - \beta\theta \log \int \exp \left[\frac{-W(Ax + B\varepsilon)}{\theta}\right]\pi(\varepsilon) d\varepsilon,$$ - -which is identical to {eq}`bhs_bellman_type1`. - -Therefore $W(x) \equiv U(x)$, establishing that *types I and II are observationally equivalent* over elements of $\mathcal{C}(A,B,H;x_0)$. - -The mapping between parameters is - -```{math} -\theta = \left[(1-\beta)(\gamma - 1)\right]^{-1}. -``` - -```{code-cell} ipython3 -def θ_from_γ(γ, β=β): - if γ <= 1: - return np.inf - return 1.0 / ((1.0 - β) * (γ - 1.0)) - - -def γ_from_θ(θ, β=β): - if np.isinf(θ): - return 1.0 - return 1.0 + 1.0 / ((1.0 - β) * θ) -``` - -### Type III: constraint preferences - -Type III (constraint) preferences swap the entropy penalty for a hard bound. - -Rather than penalizing distortions through $\theta$, the agent minimizes expected discounted log consumption under the worst-case model subject to a cap $\eta$ on discounted relative entropy: - -```{math} -J(x_0) -= -\min_{\{g_{t+1}\}} -\sum_{t=0}^{\infty} E \left[\beta^t G_t c_t \Big| x_0\right] -``` - -subject to $G_{t+1} = g_{t+1}G_t$, $E_t[g_{t+1}] = 1$, $g_{t+1} \geq 0$, $G_0 = 1$, and - -```{math} -\beta E \left[\sum_{t=0}^{\infty} \beta^t G_t E_t\left(g_{t+1}\log g_{t+1}\right)\Big|x_0\right] \leq \eta. -``` - -The Lagrangian for the type III problem is - -$$ -\mathcal{L} -= -\sum_{t=0}^{\infty} E\left[\beta^t G_t c_t \Big| x_0\right] -+ -\theta \left[ -\beta E \left(\sum_{t=0}^{\infty} \beta^t G_t E_t(g_{t+1}\log g_{t+1})\Big| x_0 \right) - \eta -\right], -$$ - -where $\theta \geq 0$ is the multiplier on the entropy constraint. - -Collecting terms inside the expectation gives - -$$ -\mathcal{L} -= -\sum_{t=0}^{\infty} E \left \{\beta^t G_t -\left[c_t + \beta \theta E_t(g_{t+1}\log g_{t+1})\right] -\Big| x_0\right\} - \theta\eta, -$$ - -which, apart from the constant $-\theta\eta$, has the same structure as the type II objective {eq}`bhs_type2_objective`. - -The first-order condition for $g_{t+1}$ is therefore identical, and the optimal distortion is the same $\hat g_{t+1}$ as in {eq}`bhs_ghat`, evaluated at the $\theta$ that makes the entropy constraint bind. - -The SDF is again $m_{t+1} = \beta(C_t/C_{t+1})\hat g_{t+1}$. - -So for the particular endowment process and the $\theta$ that enforces the entropy bound, a type III agent and a type II agent assign the same shadow prices to uncertain claims. - -### Type IV: ex post Bayesian - -The type IV agent is the simplest of the four: an ordinary expected-utility agent with log preferences who happens to hold a pessimistic probability model $\hat\Pi_\infty$: - -```{math} -\hat E_0 \sum_{t=0}^{\infty} \beta^t c_t. -``` - -$\hat E_0$ denotes expectation under the pessimistic model $\hat\Pi_\infty$. - -Here $\hat\Pi_\infty(\cdot \mid x_0, \theta)$ is the joint distribution generated by the type II agent's worst-case distortion. - -Since the agent has log utility under $\hat\Pi_\infty$, the Euler equation for any gross return $R_{t+1}$ is - -$$ -1 = \hat E_t \left[\beta \frac{C_t}{C_{t+1}} R_{t+1}\right]. -$$ - -To express this in terms of the approximating model $\Pi_\infty$, apply a change of measure using the one-step likelihood ratio $\hat g_{t+1} = d\hat\Pi / d\Pi$: - -$$ -1 = E_t\left[\hat g_{t+1} \cdot \beta \frac{C_t}{C_{t+1}} R_{t+1}\right] -= E_t\left[m_{t+1} R_{t+1}\right], -$$ - -so the effective SDF under the approximating model is $m_{t+1} = \beta(C_t/C_{t+1})\hat g_{t+1}$. - -For the particular $A, B, H$ and $\theta$ used to construct $\hat\Pi_\infty$, the type IV value function equals $J(x)$ from type III. - -### Stochastic discount factor - -Pulling together the results for all four agent types, the stochastic discount factor can be written compactly as - -```{math} -:label: bhs_sdf -m_{t+1} -= -\beta \frac{C_t}{C_{t+1}} \hat g_{t+1}. -``` - -The factor $\hat g_{t+1}$ is a likelihood ratio between the approximating and worst-case one-step models. - -With log utility, $C_t/C_{t+1} = \exp(-(c_{t+1}-c_t))$ is the usual intertemporal marginal rate of substitution. - -Robustness multiplies it by $\hat g_{t+1}$, so uncertainty aversion enters pricing entirely through the distortion. - -For the constraint-preference agent, the worst-case distortion coincides with the multiplier agent's at the $\theta$ that makes the entropy constraint bind. - -For the ex post Bayesian, it is simply a change of measure from the approximating model to the pessimistic one. - -### Value function decomposition - -Substituting the minimizing $\hat g$ back into the Bellman equation {eq}`bhs_bellman_type2` yields a revealing decomposition of the type II value function: - -```{math} -:label: bhs_W_decomp_bellman -W(x) = c + \beta \int \bigl[\hat g(\varepsilon) W(Ax + B\varepsilon) + \theta \hat g(\varepsilon)\log \hat g(\varepsilon)\bigr] \pi(\varepsilon)d\varepsilon. -``` - -Define two components: - -```{math} -:label: bhs_J_recursion -J(x) = c + \beta \int \hat g(\varepsilon) J(Ax + B\varepsilon) \pi(\varepsilon)d\varepsilon, -``` - -```{math} -:label: bhs_N_recursion -N(x) = \beta \int \hat g(\varepsilon)\bigl[\log \hat g(\varepsilon) + N(Ax + B\varepsilon)\bigr] \pi(\varepsilon)d\varepsilon. -``` - -Then $W(x) = J(x) + \theta N(x)$. - -Here $J(x_t) = \hat E_t \sum_{j=0}^{\infty} \beta^j c_{t+j}$ is expected discounted log consumption under the *worst-case* model. - -$J$ is the value function shared by both the type III and type IV agents. - -For the type III agent, once the worst-case model is pinned down by the entropy constraint, the resulting value is simply expected discounted consumption under that model. - -The type IV agent adopts the same model as a fixed belief, so she evaluates the same expectation. - -The term $N(x)$ is discounted continuation entropy, measuring the total information cost of the probability distortion from date $t$ onward. - -This decomposition plays a central role in the welfare calculations of {ref}`the welfare section ` below, where it explains why type III uncertainty compensation is twice that of type II. - -### Gaussian mean-shift distortions - -Everything so far holds for general distortions $\hat g$. - -We now specialize to the Gaussian case that underlies our two consumption models. - -Under both models, the shock is $\varepsilon_{t+1} \sim \mathcal{N}(0,1)$. - -As we verify in the next subsection, the value function $W$ is linear in the state, so the exponent in the worst-case distortion {eq}`bhs_ghat` is linear in $\varepsilon_{t+1}$. - -Exponentially tilting a Gaussian by a linear function produces another Gaussian with the same variance but a shifted mean. - -The worst-case model therefore keeps the variance at one but shifts the mean of $\varepsilon_{t+1}$ to some $w < 0$. - -The resulting likelihood ratio is ({ref}`Exercise 5 ` verifies its properties) - -```{math} -:label: bhs_ghat_gaussian -\hat g_{t+1} -= -\exp\left(w \varepsilon_{t+1} - \frac{1}{2}w^2\right), -\qquad -E_t[\hat g_{t+1}] = 1. -``` - -Hence $\log \hat g_{t+1}$ is normal with mean $-w^2/2$ and variance $w^2$, and - -```{math} -\operatorname{std}(\hat g_{t+1}) = \sqrt{e^{w^2}-1}. -``` - -The mean shift $w$ is determined by how strongly each shock $\varepsilon_{t+1}$ affects continuation value. - -From {eq}`bhs_ghat`, the worst-case distortion puts $\hat g \propto \exp(-W(x_{t+1})/\theta)$. - -If $W(x_{t+1})$ loads on $\varepsilon_{t+1}$ with coefficient $\lambda$, then the Gaussian mean shift is $w = -\lambda/\theta$. - -By guessing linear value functions and matching coefficients in the Bellman equation ({ref}`Exercise 6 ` works out both cases), we obtain the worst-case mean shifts - -```{math} -:label: bhs_w_formulas -w_{rw}(\theta) = -\frac{\sigma_\varepsilon}{(1-\beta)\theta}, -\qquad -w_{ts}(\theta) = -\frac{\sigma_\varepsilon}{(1-\rho\beta)\theta}. -``` - -The denominator $(1-\beta)$ in the random-walk case becomes $(1-\beta\rho)$ in the trend-stationary case. - -Because the AR(1) component is persistent, each shock has a larger cumulative effect on continuation utility, so the worst-case distortion is more aggressive. - -```{code-cell} ipython3 -def w_from_θ(θ, model): - if np.isinf(θ): - return 0.0 - if model == "rw": - return -rw["σ_ε"] / ((1.0 - β) * θ) - if model == "ts": - return -ts["σ_ε"] / ((1.0 - β * ts["ρ"]) * θ) - raise ValueError("model must be 'rw' or 'ts'") -``` - -### Discounted entropy - -When the approximating and worst-case conditional densities are $\mathcal{N}(0,1)$ and $\mathcal{N}(w(\theta),1)$, the likelihood ratio is $\hat g(\varepsilon) = \exp(w(\theta)\varepsilon - \frac{1}{2}w(\theta)^2)$, so $\log \hat g(\varepsilon) = w(\theta)\varepsilon - \frac{1}{2}w(\theta)^2$. - -Under the worst-case measure $\varepsilon \sim \mathcal{N}(w(\theta),1)$, so $E_{\hat\pi}[\varepsilon] = w(\theta)$, giving conditional relative entropy - -```{math} -:label: bhs_conditional_entropy -E_t[\hat g_{t+1}\log \hat g_{t+1}] = w(\theta) \cdot w(\theta) - \frac{1}{2}w(\theta)^2 = \frac{1}{2}w(\theta)^2. -``` - -Because the distortion is iid, the conditional entropy $E_t[\hat g_{t+1}\log \hat g_{t+1}] = \frac{1}{2}w(\theta)^2$ from {eq}`bhs_conditional_entropy` is constant and $N(x)$ does not depend on $x$. - -The recursion {eq}`bhs_N_recursion` then reduces to $N(x) = \beta(\frac{1}{2}w(\theta)^2 + N(x))$, where we have used $\int \hat g(\varepsilon)\pi(\varepsilon)d\varepsilon = 1$ (since $\hat g$ is a likelihood ratio). - -Solving for $N(x)$, - -$$ -N(x)(1-\beta) = \frac{\beta}{2}w(\theta)^2, -$$ - -gives discounted entropy - -```{math} -:label: bhs_eta_formula -\eta = N(x) = \frac{\beta}{2(1-\beta)} w(\theta)^2. -``` - -```{code-cell} ipython3 -def η_from_θ(θ, model): - w = w_from_θ(θ, model) - return β * w**2 / (2.0 * (1.0 - β)) -``` - -This gives a clean mapping between $\theta$ and $\eta$ that aligns multiplier and constraint preferences along an exogenous endowment process. - -As we will see in the {ref}`detection-error section ` below, it is more natural to hold $\eta$ (or equivalently the detection-error probability $p$) fixed rather than $\theta$ when comparing across consumption models. - -### Value functions for random-walk consumption - -We now solve the recursions {eq}`bhs_W_decomp_bellman`, {eq}`bhs_J_recursion`, and {eq}`bhs_N_recursion` in closed form for the random-walk model, where $W$ is the type II (multiplier) value function, $J$ is the type III/IV value function, and $N$ is discounted continuation entropy. - -Substituting $w_{rw}(\theta) = -\sigma_\varepsilon / [(1-\beta)\theta]$ from {eq}`bhs_w_formulas` into {eq}`bhs_eta_formula` gives - -$$ -N(x) = \frac{\beta}{2(1-\beta)} w_{rw}(\theta)^2 - = \frac{\beta}{2(1-\beta)} \left(\frac{-\sigma_\varepsilon}{(1-\beta)\theta}\right)^2 - = \frac{\beta}{2(1-\beta)} \cdot \frac{\sigma_\varepsilon^2}{(1-\beta)^2\theta^2} -$$ - -so that - -```{math} -:label: bhs_N_rw -N(x) = \frac{\beta\sigma_\varepsilon^2}{2(1-\beta)^3\theta^2}. -``` - -For $W$, we guess $W(x_t) = \frac{1}{1-\beta}[c_t + d]$ for some constant $d$ and verify it in the risk-sensitive Bellman equation {eq}`bhs_bellman_type1`. - -Under the random walk, $W(x_{t+1}) = \frac{1}{1-\beta}[c_t + \mu + \sigma_\varepsilon\varepsilon_{t+1} + d]$, so $-W(x_{t+1})/\theta$ is affine in the standard normal $\varepsilon_{t+1}$. - -Using the fact that $\log E[e^Z] = \mu_Z + \frac{1}{2}\sigma_Z^2$ for a normal random variable $Z$, the Bellman equation {eq}`bhs_bellman_type1` reduces to a constant-matching condition that pins down $d$ ({ref}`Exercise 7 ` works through the algebra): - -```{math} -:label: bhs_W_rw -W(x_t) = \frac{1}{1-\beta}\left[c_t + \frac{\beta}{1-\beta}\left(\mu - \frac{\sigma_\varepsilon^2}{2(1-\beta)\theta}\right)\right]. -``` - -Using $W = J + \theta N$, the type III/IV value function is - -```{math} -:label: bhs_J_rw -J(x_t) = W(x_t) - \theta N(x_t) = \frac{1}{1-\beta}\left[c_t + \frac{\beta}{1-\beta}\left(\mu - \frac{\sigma_\varepsilon^2}{(1-\beta)\theta}\right)\right]. -``` - -Notice that the coefficient on $\sigma_\varepsilon^2/[(1-\beta)\theta]$ doubles from $\tfrac{1}{2}$ in $W$ to $1$ in $J$. - -The reason is that $W$ includes the entropy "rebate" $\theta N$, which partially offsets the pessimistic tilt, while $J$ evaluates consumption purely under the worst-case model with no such offset. - -(detection_error_section)= -## Detection-error probabilities - -So far we have expressed SDF moments, value functions, and worst-case distortions as functions of $\gamma$ (or equivalently $\theta$). - -But if $\gamma$ should not be calibrated by introspection about atemporal gambles, what replaces it? - -The answer proposed by {cite:t}`BHS_2009` is a statistical test: how easily could an econometrician distinguish the approximating model from its worst-case alternative? - -### Likelihood-ratio testing and detection errors - -Let $L_T$ be the log likelihood ratio between the worst-case and approximating models based on a sample of length $T$. - -Define - -```{math} -p_A = \Pr_A(L_T < 0), -\qquad -p_B = \Pr_B(L_T > 0), -``` - -where $\Pr_A$ and $\Pr_B$ denote probabilities under the approximating and worst-case models. - -Then $p(\theta^{-1}) = \frac{1}{2}(p_A + p_B)$ is the average probability of choosing the wrong model. - -Fix a sample size $T$ (here 235 quarters, matching the postwar US data used in the paper). - -For a given $\theta$, compute the worst-case model and imagine that a Bayesian runs a likelihood-ratio test to distinguish it from the approximating model. - -What fraction of the time would she pick the wrong one? - -That fraction is the **detection-error probability** $p(\theta^{-1})$. - -When $p$ is close to 0.5 the two models are nearly indistinguishable, so the consumer's fear is hard to rule out. - -When $p$ is small the worst-case model is easy to reject and the robustness concern carries less force. - -### Market price of model uncertainty - -The **market price of model uncertainty** (MPU) is the conditional standard deviation of the distortion: - -```{math} -:label: bhs_mpu_formula -\text{MPU} -= -\operatorname{std}(\hat g_{t+1}) -= -\sqrt{e^{w(\theta)^2}-1} -\approx |w(\theta)|. -``` - -In the Gaussian mean-shift setting, $L_T$ is normal with mean $\pm \tfrac{1}{2}w^2T$ and variance $w^2T$, so the detection-error probability has the closed form ({ref}`Exercise 8 ` derives this) - -```{math} -:label: bhs_detection_formula -p(\theta^{-1}) -= -\frac{1}{2}\left(p_A + p_B\right), -``` - -```{math} -:label: bhs_detection_closed -p(\theta^{-1}) = \Phi \left(-\frac{|w(\theta)|\sqrt{T}}{2}\right). -``` - -```{code-cell} ipython3 -def detection_probability(θ, model): - w = abs(w_from_θ(θ, model)) - return norm.cdf(-0.5 * w * np.sqrt(T)) - - -def θ_from_detection_probability(p, model): - if p >= 0.5: - return np.inf - w_abs = -2.0 * norm.ppf(p) / np.sqrt(T) - if model == "rw": - return rw["σ_ε"] / ((1.0 - β) * w_abs) - if model == "ts": - return ts["σ_ε"] / ((1.0 - β * ts["ρ"]) * w_abs) - raise ValueError("model must be 'rw' or 'ts'") -``` - -### Interpreting the calibration objects - -Let us trace the chain of mappings that connects preference parameters to statistical distinguishability. - -The parameter $\theta$ governs how expensive it is for the minimizing player to distort the approximating model. - -A small $\theta$ means cheap distortions and therefore stronger robustness concerns. - -The associated $\gamma = 1 + \left[(1-\beta)\theta\right]^{-1}$ can be large even when we do not want to interpret behavior as extreme atemporal risk aversion. - -The distortion magnitude $|w(\theta)|$ directly measures how pessimistically the agent tilts one-step probabilities. - -The detection-error probability $p(\theta^{-1})$ translates that tilt into a statistical statement about finite-sample distinguishability. - -High $p$ means the two models are hard to tell apart, while low $p$ means the worst case is easier to reject. - -This chain bridges econometric identification and preference calibration. - -Finally, recall from {eq}`bhs_eta_formula` that discounted entropy is $\eta = \frac{\beta}{2(1-\beta)}w(\theta)^2$, so when the distortion is a Gaussian mean shift, discounted entropy is proportional to the squared market price of model uncertainty. - -### Detection probabilities across the two models - -The left panel below plots $p(\theta^{-1})$ against $\theta^{-1}$ for both consumption specifications. - -Because the baseline dynamics differ, the same numerical $\theta$ implies very different detection probabilities across the two models. - -The right panel resolves this by plotting detection probabilities against discounted relative entropy $\eta$, which normalizes the statistical distance. - -Once indexed by $\eta$, the two curves fall on top of each other. - -```{code-cell} ipython3 ---- -mystnb: - figure: - caption: Detection probabilities across two models - name: fig-bhs-2 ---- -θ_inv_grid = np.linspace(0.0, 1.8, 400) -θ_grid = np.full_like(θ_inv_grid, np.inf) -mask_θ = θ_inv_grid > 0.0 -θ_grid[mask_θ] = 1.0 / θ_inv_grid[mask_θ] - -p_rw = np.array([detection_probability(θ, "rw") for θ in θ_grid]) -p_ts = np.array([detection_probability(θ, "ts") for θ in θ_grid]) - -η_rw = np.array([η_from_θ(θ, "rw") for θ in θ_grid]) -η_ts = np.array([η_from_θ(θ, "ts") for θ in θ_grid]) - -fig, axes = plt.subplots(1, 2, figsize=(12, 4)) - -axes[0].plot(θ_inv_grid, 100.0 * p_rw, lw=2, label="random walk") -axes[0].plot(θ_inv_grid, 100.0 * p_ts, lw=2, label="trend stationary") -axes[0].set_xlabel(r"$\theta^{-1}$") -axes[0].set_ylabel("detection error probability (percent)") -axes[0].legend(frameon=False) - -axes[1].plot(η_rw, 100.0 * p_rw, lw=2, label="random walk") -axes[1].plot(η_ts, 100.0 * p_ts, lw=2, ls="--", label="trend stationary") -axes[1].set_xlabel(r"discounted entropy $\eta$") -axes[1].set_ylabel("detection error probability (percent)") -axes[1].set_xlim(0.0, 10) -axes[1].legend(frameon=False) - -plt.tight_layout() -plt.show() -``` - -Detection-error probabilities (or equivalently, discounted entropy) are therefore the right yardstick for cross-model comparisons. - -If we hold $\theta$ fixed when switching from a random walk to a trend-stationary specification, we implicitly change how much misspecification the consumer fears. - -Holding $\eta$ or $p$ fixed instead keeps the statistical difficulty of detecting misspecification constant. - -The explicit mapping that equates discounted entropy across models is ({ref}`Exercise 9 ` derives it): - -```{math} -:label: bhs_theta_cross_model -\theta_{\text{TS}} -= -\left(\frac{\sigma_\varepsilon^{\text{TS}}}{\sigma_\varepsilon^{\text{RW}}}\right) -\frac{1-\beta}{1-\rho\beta} \theta_{\text{RW}}. -``` - -At our calibration $\sigma_\varepsilon^{\text{TS}} = \sigma_\varepsilon^{\text{RW}}$, this simplifies to $\theta_{\text{TS}} = \frac{1-\beta}{1-\rho\beta}\theta_{\text{RW}}$. - -Because $\rho = 0.98$ and $\beta = 0.995$, the ratio $(1-\beta)/(1-\rho\beta)$ is much less than one, so holding entropy fixed requires a substantially smaller $\theta$ (stronger robustness) for the trend-stationary model than for the random walk. - -## Unify the two models using detection-error probabilities - -With this machinery in hand, we can redraw Tallarini's figure using detection-error probabilities as the common index. - -For each $p(\theta^{-1}) = 0.50, 0.45, \ldots, 0.01$, we invert to find the model-specific $\theta$, convert to $\gamma$, and plot the implied $(E(m), \sigma(m))$ pair. - -```{code-cell} ipython3 -p_points = np.array( - [0.50, 0.45, 0.40, 0.35, 0.30, 0.25, 0.20, 0.15, 0.10, 0.05, 0.01]) - -θ_rw_points = np.array( - [θ_from_detection_probability(p, "rw") for p in p_points]) -θ_ts_points = np.array( - [θ_from_detection_probability(p, "ts") for p in p_points]) - -γ_rw_points = np.array([γ_from_θ(θ) for θ in θ_rw_points]) -γ_ts_points = np.array([γ_from_θ(θ) for θ in θ_ts_points]) - -Em_rw_p = np.array( - [moments_type1_rw(γ)[0] for γ in γ_rw_points]) -σ_m_rw_p = np.array( - [moments_type1_rw(γ)[0] * moments_type1_rw(γ)[1] for γ in γ_rw_points]) -Em_ts_p = np.array( - [moments_type1_ts(γ)[0] for γ in γ_ts_points]) -σ_m_ts_p = np.array( - [moments_type1_ts(γ)[0] * moments_type1_ts(γ)[1] for γ in γ_ts_points]) - -print("p γ_rw γ_ts") -for p, g1, g2 in zip(p_points, γ_rw_points, γ_ts_points): - print(f"{p:>4.2f} {g1:>9.2f} {g2:>9.2f}") -``` - -```{code-cell} ipython3 ---- -mystnb: - figure: - caption: Pricing loci from common detectability - name: fig-bhs-3 ---- - -# Empirical Sharpe ratio — the minimum of the HJ bound curve -sharpe = (r_e_mean - r_f_mean) / r_excess_std - -def sharpe_gap(p, model): - """Market price of risk minus Sharpe ratio, as a function of p.""" - if p >= 0.5: - return -sharpe - θ = θ_from_detection_probability(p, model) - γ = γ_from_θ(θ) - _, mpr = moments_type1_rw(γ) if model == "rw" else moments_type1_ts(γ) - return mpr - sharpe - -p_hj_rw = brentq(sharpe_gap, 1e-4, 0.49, args=("rw",)) -p_hj_ts = brentq(sharpe_gap, 1e-4, 0.49, args=("ts",)) - -fig, ax = plt.subplots(figsize=(7, 5)) -ax.plot(Em_rw_p, σ_m_rw_p, "o", lw=2, - label="random walk") -ax.plot(Em_ts_p, σ_m_ts_p, "+", lw=2, markersize=12, - label="trend stationary") -ax.plot(Em_grid, HJ_std, lw=2, - color="black", label="Hansen-Jagannathan bound") - -# Mark p where each model's market price of risk reaches the Sharpe ratio -for p_hj, model, color, name, marker in [ - (p_hj_rw, "rw", "C0", "RW", "o"), - (p_hj_ts, "ts", "C1", "TS", "+"), -]: - θ_hj = θ_from_detection_probability(p_hj, model) - γ_hj = γ_from_θ(θ_hj) - Em_hj, mpr_hj = (moments_type1_rw(γ_hj) if model == "rw" - else moments_type1_ts(γ_hj)) - σ_m_hj = Em_hj * mpr_hj - ax.axhline(σ_m_hj, ls="--", lw=1, color=color, - label=f"{name} reaches bound at $p = {p_hj:.3f}$") - if model == "ts": - ax.plot(Em_hj, σ_m_hj, marker, lw=2, markersize=12, color=color) - else: - ax.plot(Em_hj, σ_m_hj, marker, lw=2, color=color) - -ax.set_xlabel(r"$E(m)$") -ax.set_ylabel(r"$\sigma(m)$") -ax.legend(frameon=False) -ax.set_xlim(0.96, 1.05) -ax.set_ylim(0.0, 0.34) - -plt.tight_layout() -plt.show() -``` - -The result is striking. - -The random-walk and trend-stationary loci nearly coincide. - -Recall that under Tallarini's $\gamma$-calibration, reaching the Hansen--Jagannathan bound required $\gamma \approx 50$ for the random walk but $\gamma \approx 75$ for the trend-stationary model. - -These are very different numbers for what is supposed to be the "same" preference parameter. - -Under detection-error calibration, both models reach the bound at essentially the same detectability level. - -The apparent model dependence was an artifact of using $\gamma$ as the cross-model yardstick. - -Once we measure robustness concerns in units of statistical detectability, the two consumption specifications tell a single, coherent story. - -A representative consumer with moderate, difficult-to-dismiss fears about model misspecification behaves as though she has very high risk aversion. - -The following figure brings together the two key ideas of this section: a small one-step density shift that is hard to detect (left panel) compounds into a large gap in expected log consumption (right panel). - -At $p = 0.03$ both models share the same innovation mean shift $w$, and the left panel shows that the approximating and worst-case one-step densities nearly coincide. - -The right panel reveals the cumulative consequence: a per-period shift that is virtually undetectable compounds into a large gap in expected log consumption, especially under random-walk dynamics where each shock has a permanent effect. - -```{code-cell} ipython3 ---- -mystnb: - figure: - caption: Density shift and cumulative consumption - name: fig-bhs-fear ---- -p_star = 0.03 -θ_star = θ_from_detection_probability(p_star, "rw") -w_star = w_from_θ(θ_star, "rw") -σ_ε = rw["σ_ε"] -ρ = ts["ρ"] - -fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(13, 5)) - -ε = np.linspace(-4.5, 4.5, 500) -f0 = norm.pdf(ε, 0, 1) -fw = norm.pdf(ε, w_star, 1) - -ax1.fill_between(ε, f0, alpha=0.15, color='k') -ax1.plot(ε, f0, 'k', lw=2, - label=r'Approximating $\mathcal{N}(0, 1)$') -ax1.fill_between(ε, fw, alpha=0.15, color='C3') -ax1.plot(ε, fw, 'C3', lw=2, ls='--', - label=fr'Worst case $\mathcal{{N}}({w_star:.2f},1)$') - -peak = norm.pdf(0, 0, 1) -ax1.annotate('', xy=(w_star, 0.55 * peak), xytext=(0, 0.55 * peak), - arrowprops=dict(arrowstyle='->', color='C3', lw=1.8)) -ax1.text(w_star / 2, 0.59 * peak, f'$w = {w_star:.2f}$', - ha='center', fontsize=11, color='C3') - -ax1.set_xlabel(r'$\varepsilon_{t+1}$') -ax1.set_ylabel('density') -ax1.legend(frameon=False) - -quarters = np.arange(0, 241) -years = quarters / 4 - -gap_rw = 100 * σ_ε * w_star * quarters -gap_ts = 100 * σ_ε * w_star * (1 - ρ**quarters) / (1 - ρ) - -ax2.plot(years, gap_rw, 'C0', lw=2, label='random walk') -ax2.plot(years, gap_ts, 'C1', lw=2, label='trend stationary') -ax2.fill_between(years, gap_rw, alpha=0.1, color='C0') -ax2.fill_between(years, gap_ts, alpha=0.1, color='C1') -ax2.axhline(0, color='k', lw=0.5, alpha=0.3) - -# Endpoint labels -ax2.text(61, gap_rw[-1], f'{gap_rw[-1]:.1f}%', - fontsize=10, color='C0', va='center') -ax2.text(61, gap_ts[-1], f'{gap_ts[-1]:.1f}%', - fontsize=10, color='C1', va='center') - -ax2.set_xlabel('years') -ax2.set_ylabel('gap in expected log consumption (%)') -ax2.legend(frameon=False, loc='lower left') -ax2.set_xlim(0, 68) - -plt.tight_layout() -plt.show() -``` - -The next figure poses the "doubts or variability?" question by decomposing the log SDF into two additive components. - -Taking logs of {eq}`bhs_sdf` gives - -$$ -\log m_{t+1} -= -\underbrace{\log \beta - \Delta c_{t+1}}_{\text{log-utility intertemporal MRS}} -+ -\underbrace{\log \hat g_{t+1}}_{\text{worst-case distortion}}. -$$ - -Under the random-walk model, $\Delta c_{t+1} = \mu + \sigma_\varepsilon \varepsilon_{t+1}$, and the Gaussian distortion {eq}`bhs_ghat_gaussian` gives $\log \hat g_{t+1} = w \varepsilon_{t+1} - \tfrac{1}{2}w^2$. - -Substituting, we can write - -$$ -\log m_{t+1} -= -\bigl(\log\beta - \mu - \tfrac{1}{2}w^2\bigr) -- -(\sigma_\varepsilon - w)\varepsilon_{t+1}, -$$ - -so the slope of $\log m_{t+1}$ in $\varepsilon_{t+1}$ is $\sigma_\varepsilon - w$. - -Since $w < 0$, the distortion steepens the SDF relative to what log utility alone would deliver. - -The figure below reveals how little work log utility does on its own. - -The intertemporal marginal rate of substitution (IMRS) is nearly flat. - -At postwar calibrated volatility ($\sigma_\varepsilon = 0.005$), it contributes almost nothing to the pricing kernel's slope. - -The worst-case distortion accounts for virtually all of the SDF's volatility. - -What looks like extreme risk aversion ($\gamma \approx 34$) is really just log utility combined with moderate fears of model misspecification. - -```{code-cell} ipython3 ---- -mystnb: - figure: - caption: Robust SDF log-utility decomposition - name: fig-bhs-sdf-decomp ---- -θ_cal = θ_from_detection_probability(0.10, "rw") -γ_cal = γ_from_θ(θ_cal) -w_cal = w_from_θ(θ_cal, "rw") - -μ_c, σ_c = rw["μ"], rw["σ_ε"] -Δc = np.linspace(μ_c - 3.5 * σ_c, μ_c + 3.5 * σ_c, 300) -ε = (Δc - μ_c) / σ_c - -log_imrs = np.log(β) - Δc -log_ghat = w_cal * ε - 0.5 * w_cal**2 -log_sdf = log_imrs + log_ghat - -fig, ax = plt.subplots(figsize=(8, 5)) - -ax.plot(100 * Δc, log_imrs, 'C1', lw=2, - label=r'IMRS: $\log\beta - \Delta c$') -ax.plot(100 * Δc, log_ghat, 'C3', lw=2, ls='--', - label=r'Distortion: $\log\hat{g}$') -ax.plot(100 * Δc, log_sdf, 'k', lw=2, - label=r'SDF: $\log m = \log\mathrm{IMRS} + \log\hat{g}$') -ax.axhline(0, color='k', lw=0.5, alpha=0.3) -ax.set_xlabel(r'consumption growth $\Delta c_{t+1}$ (%)') -ax.set_ylabel('log SDF component') -ax.legend(frameon=False, fontsize=10, loc='upper right') - -plt.show() -``` - -(welfare_experiments)= -## What do risk premia measure? - -{cite:t}`Lucas_2003` asked how much consumption a representative consumer would sacrifice to eliminate aggregate fluctuations. - -His answer rested on the assumption that the consumer knows the true data-generating process. - -The robust reinterpretation opens up a second, quite different thought experiment. - -Instead of eliminating all randomness, suppose we keep the randomness but remove the consumer's fear of model misspecification (set $\theta = \infty$). - -How much would she pay for that relief? - -To answer this, we seek a permanent proportional reduction $c_0 - c_0^k$ in initial log consumption that leaves an agent of type $k$ indifferent between the original risky plan and a deterministic certainty-equivalent path. - -Because utility is log and the consumption process is Gaussian, these compensations can be computed in closed form. - -### The certainty equivalent path - -The point of comparison is the deterministic path with the same mean level of consumption as the stochastic plan: - -```{math} -:label: bhs_ce_path -c_{t+1}^{ce} - c_t^{ce} = \mu + \tfrac{1}{2}\sigma_\varepsilon^2. -``` - -The additional $\tfrac{1}{2}\sigma_\varepsilon^2$ term is a Jensen's inequality correction. - -Since $E[C_t] = E[e^{c_t}] = \exp(c_0 + t\mu + \tfrac{1}{2}t\sigma_\varepsilon^2)$, {eq}`bhs_ce_path` matches the mean *level* of consumption at every date. - -### Compensating variations from the value functions - -We use the closed-form value functions derived earlier: {eq}`bhs_W_rw` for the type I/II value function $W$ and {eq}`bhs_J_rw` for the type III/IV value function $J$. - -For the certainty-equivalent path {eq}`bhs_ce_path`, there is no risk and no model uncertainty ($\theta = \infty$, so $\hat g = 1$), so the value function reduces to discounted expected log utility. - -With $c_t^{ce} = c_0^J + t(\mu + \tfrac{1}{2}\sigma_\varepsilon^2)$, we have - -$$ -U^{ce}(c_0^J) -= \sum_{t=0}^{\infty}\beta^t c_t^{ce} -= \sum_{t=0}^{\infty}\beta^t \bigl[c_0^J + t(\mu + \tfrac{1}{2}\sigma_\varepsilon^2)\bigr] -= \frac{c_0^J}{1-\beta} + \frac{\beta(\mu + \tfrac{1}{2}\sigma_\varepsilon^2)}{(1-\beta)^2}, -$$ - -where we used $\sum_{t \geq 0}\beta^t = \frac{1}{1-\beta}$ and $\sum_{t \geq 0}t\beta^t = \frac{\beta}{(1-\beta)^2}$. - -Factoring gives - -$$ -U^{ce}(c_0^J) = \frac{1}{1-\beta}\left[c_0^J + \frac{\beta}{1-\beta}\left(\mu + \tfrac{1}{2}\sigma_\varepsilon^2\right)\right]. -$$ - -### Type I (Epstein--Zin) compensation - -Setting $U^{ce}(c_0^I) = W(x_0)$ from {eq}`bhs_W_rw`: - -$$ -\frac{1}{1-\beta}\left[c_0^I + \frac{\beta}{1-\beta}\left(\mu + \tfrac{1}{2}\sigma_\varepsilon^2\right)\right] -= -\frac{1}{1-\beta}\left[c_0 + \frac{\beta}{1-\beta}\left(\mu - \frac{\sigma_\varepsilon^2}{2(1-\beta)\theta}\right)\right]. -$$ - -Multiplying both sides by $(1-\beta)$ and cancelling the common $\frac{\beta\mu}{1-\beta}$ terms gives - -$$ -c_0^I + \frac{\beta\sigma_\varepsilon^2}{2(1-\beta)} -= -c_0 - \frac{\beta\sigma_\varepsilon^2}{2(1-\beta)^2\theta}. -$$ - -Solving for $c_0 - c_0^I$: - -```{math} -:label: bhs_comp_type1 -c_0 - c_0^I -= -\frac{\beta\sigma_\varepsilon^2}{2(1-\beta)}\left(1 + \frac{1}{(1-\beta)\theta}\right) -= -\frac{\beta\sigma_\varepsilon^2\gamma}{2(1-\beta)}, -``` - -where the last step uses $\gamma = 1 + [(1-\beta)\theta]^{-1}$. - -### Type II (multiplier) decomposition - -Because $W \equiv U$, we have $c_0^{II} = c_0^I$ and the total compensation is the same. - -However, the interpretation differs because we can now decompose it into *risk* and *model uncertainty* components. - -A type II agent with $\theta = \infty$ (no model uncertainty) has log preferences and requires - -```{math} -:label: bhs_type2_rw_decomp -\Delta c_0^{risk} -= -\frac{\beta \sigma_\varepsilon^2}{2(1-\beta)}, -\qquad -\Delta c_0^{uncertainty} -= -\frac{\beta \sigma_\varepsilon^2}{2(1-\beta)^2\theta}. -``` - -The risk term $\Delta c_0^{risk}$ is Lucas's cost of business cycles. - -At postwar consumption volatility ($\sigma_\varepsilon \approx 0.005$), it is negligibly small. - -The uncertainty term $\Delta c_0^{uncertainty}$ captures the additional compensation a type II agent demands for facing model misspecification. - -With $\theta$ in the denominator, this term can be first-order even when the detection-error probability is only moderate. - -### Type III (constraint) compensation - -For a type III agent, we set $U^{ce}(c_0^{III}) = J(x_0)$ using the value function $J$ from {eq}`bhs_J_rw`: - -$$ -\frac{1}{1-\beta}\left[c_0^{III} + \frac{\beta}{1-\beta}\left(\mu + \tfrac{1}{2}\sigma_\varepsilon^2\right)\right] -= -\frac{1}{1-\beta}\left[c_0 + \frac{\beta}{1-\beta}\left(\mu - \frac{\sigma_\varepsilon^2}{(1-\beta)\theta}\right)\right]. -$$ - -Following the same algebra as for type I but with the doubled uncertainty correction in $J$: - -$$ -c_0 - c_0^{III} -= -\frac{\beta\sigma_\varepsilon^2}{2(1-\beta)} + \frac{\beta\sigma_\varepsilon^2}{(1-\beta)^2\theta}. -$$ - -Using $\frac{1}{(1-\beta)\theta} = \gamma - 1$, this simplifies to - -```{math} -:label: bhs_type3_rw_decomp -c_0 - c_0^{III} -= -\frac{\beta\sigma_\varepsilon^2}{2(1-\beta)}(2\gamma - 1). -``` - -The risk component is the same $\frac{\beta\sigma_\varepsilon^2}{2(1-\beta)}$ as before. - -The uncertainty component alone is - -$$ -c_0^{III}(r) - c_0^{III} -= -\frac{\beta\sigma_\varepsilon^2}{(1-\beta)^2\theta}, -$$ - -which is *twice* the type II uncertainty compensation {eq}`bhs_type2_rw_decomp`. - -The factor of two traces back to the difference between $W$ and $J$ noted after {eq}`bhs_J_rw`. - -The entropy rebate $\theta N$ in $W = J + \theta N$ partially offsets the pessimistic tilt for the type II agent, but not for the type III agent who evaluates consumption purely under the worst-case model. - -### Type IV (ex post Bayesian) compensation - -A type IV agent believes the pessimistic model, so the perceived drift is $\tilde\mu = \mu - \sigma_\varepsilon^2/[(1-\beta)\theta]$. - -The compensation for moving to the certainty-equivalent path is the same as {eq}`bhs_type3_rw_decomp`, because this agent ranks plans using the same value function $J$. - -### Comparison with a risky but free-of-model-uncertainty path - -The certainty equivalents above compare a risky plan to a deterministic path, thereby eliminating both risk and uncertainty at once. - -We now describe an alternative measure that isolates compensation for model uncertainty alone by keeping risk intact. - -The idea is to compare two situations with identical risky consumption for all dates $t \geq 1$, concentrating all compensation for model uncertainty in a single adjustment to date-zero consumption. - -Specifically, we seek $c_0^{II}(u)$ that makes a type II agent indifferent between: - -1. Facing the stochastic plan under $\theta < \infty$ (fear of model misspecification), consuming $c_0$ at date zero. -2. Facing the *same* stochastic plan under $\theta = \infty$ (no fear of misspecification), but consuming only $c_0^{II}(u) < c_0$ at date zero. - -In both cases, continuation consumptions $c_t$ for $t \geq 1$ are generated by the random walk starting from the *same* $c_0$. - -For the type II agent under $\theta < \infty$, the total value is $W(c_0)$ from {eq}`bhs_W_rw`. - -For the agent liberated from model uncertainty ($\theta = \infty$), the value is - -$$ -c_0^{II}(u) + \beta E\left[V^{\log}(c_1)\right], -$$ - -where $V^{\log}(c_t) = \frac{1}{1-\beta} \left[c_t + \frac{\beta\mu}{1-\beta}\right]$ is the log-utility value function and $c_1 = c_0 + \mu + \sigma_\varepsilon \varepsilon_1$. - -Since $c_1$ is built from $c_0$ (not $c_0^{II}(u)$), the continuation is - -$$ -\beta E\left[V^{\log}(c_1)\right] -= \frac{\beta}{1-\beta} E\left[c_1 + \frac{\beta\mu}{1-\beta}\right] -= \frac{\beta}{1-\beta}\left[c_0 + \mu + \frac{\beta\mu}{1-\beta}\right] -= \frac{\beta}{1-\beta}\left[c_0 + \frac{\mu}{1-\beta}\right], -$$ - -where we used $E[c_1] = c_0 + \mu$ (the noise term has zero mean). - -Expanding gives - -$$ -\beta E\left[V^{\log}(c_1)\right] -= \frac{\beta c_0}{1-\beta} + \frac{\beta\mu}{(1-\beta)^2}. -$$ - -Setting $W(c_0)$ equal to the liberation value and simplifying: - -$$ -\frac{c_0}{1-\beta} + \frac{\beta\mu}{(1-\beta)^2} - \frac{\beta\sigma_\varepsilon^2}{2(1-\beta)^3\theta} -= -c_0^{II}(u) + \frac{\beta c_0}{1-\beta} + \frac{\beta\mu}{(1-\beta)^2}. -$$ - -Because $\frac{c_0}{1-\beta} - \frac{\beta c_0}{1-\beta} = c_0$, solving for the compensation gives - -```{math} -:label: bhs_comp_type2u -c_0 - c_0^{II}(u) = \frac{\beta\sigma_\varepsilon^2}{2(1-\beta)^3\theta} = \frac{\beta\sigma_\varepsilon^2(\gamma - 1)}{2(1-\beta)^2}. -``` - -This is $\frac{1}{1-\beta}$ times the uncertainty compensation $\Delta c_0^{\text{uncertainty}}$ from {eq}`bhs_type2_rw_decomp`. - -The extra factor of $\frac{1}{1-\beta}$ arises because all compensation is packed into a single period. - -Adjusting $c_0$ alone must offset the cumulative loss in continuation value that the uncertainty penalty imposes in every future period. - -An analogous calculation for a **type III** agent, using $J(c_0)$ from {eq}`bhs_J_rw`, gives - -```{math} -:label: bhs_comp_type3u -c_0 - c_0^{III}(u) = \frac{\beta\sigma_\varepsilon^2}{(1-\beta)^3\theta} = \frac{\beta\sigma_\varepsilon^2(\gamma - 1)}{(1-\beta)^2}, -``` - -which is $\frac{1}{1-\beta}$ times the type III uncertainty compensation and *twice* the type II compensation {eq}`bhs_comp_type2u`, again reflecting the absence of the entropy rebate in $J$. - -### Summary of welfare compensations (random walk) - -The following table collects all compensating variations for the random walk model. - -| Agent | Compensation | Formula | Measures | -|:------|:-------------|:--------|:---------| -| I, II | $c_0 - c_0^{II}$ | $\frac{\beta\sigma_\varepsilon^2\gamma}{2(1-\beta)}$ | risk + uncertainty (vs. deterministic) | -| II | $c_0 - c_0^{II}(r)$ | $\frac{\beta\sigma_\varepsilon^2}{2(1-\beta)}$ | risk only (vs. deterministic) | -| II | $c_0^{II}(r) - c_0^{II}$ | $\frac{\beta\sigma_\varepsilon^2}{2(1-\beta)^2\theta}$ | uncertainty only (vs. deterministic) | -| II | $c_0 - c_0^{II}(u)$ | $\frac{\beta\sigma_\varepsilon^2}{2(1-\beta)^3\theta}$ | uncertainty only (vs. risky path) | -| III | $c_0 - c_0^{III}$ | $\frac{\beta\sigma_\varepsilon^2(2\gamma-1)}{2(1-\beta)}$ | risk + uncertainty (vs. deterministic) | -| III | $c_0^{III}(r) - c_0^{III}$ | $\frac{\beta\sigma_\varepsilon^2}{(1-\beta)^2\theta}$ | uncertainty only (vs. deterministic) | -| III | $c_0 - c_0^{III}(u)$ | $\frac{\beta\sigma_\varepsilon^2}{(1-\beta)^3\theta}$ | uncertainty only (vs. risky path) | - -The "versus deterministic" rows use the certainty-equivalent path {eq}`bhs_ce_path` as a benchmark. - -The "vs. risky path" rows use the risky-but-uncertainty-free comparison of {eq}`bhs_comp_type2u`--{eq}`bhs_comp_type3u`. - -### Trend-stationary formulas - -For the trend-stationary model, the denominators $(1-\beta)$ in the uncertainty terms are replaced by $(1-\beta\rho)$, and the risk terms involve $(1-\beta\rho^2)$: - -```{math} -:label: bhs_ts_compensations -\Delta c_0^{risk,ts} = \frac{\beta\sigma_\varepsilon^2}{2(1-\beta\rho^2)}, -\qquad -\Delta c_0^{unc,ts,II} = \frac{\beta\sigma_\varepsilon^2}{2(1-\beta\rho)^2\theta}, -\qquad -\Delta c_0^{unc,ts,III} = \frac{\beta\sigma_\varepsilon^2}{(1-\beta\rho)^2\theta}. -``` - -The qualitative message carries over: the risk component is negligible, and the model-uncertainty component dominates. - -## Visualizing the welfare decomposition - -We set $\beta = 0.995$ and calibrate $\theta$ so that $p(\theta^{-1}) = 0.10$, a conservative detection-error level. - -```{code-cell} ipython3 -p_star = 0.10 -θ_star = θ_from_detection_probability(p_star, "rw") -γ_star = γ_from_θ(θ_star) -w_star = w_from_θ(θ_star, "rw") - -# Type II compensations, random walk model -comp_risk_only = β * rw["σ_ε"]**2 / (2.0 * (1.0 - β)) -comp_risk_unc = comp_risk_only + β * rw["σ_ε"]**2 / (2.0 * (1.0 - β)**2 * θ_star) - -# Two useful decompositions in levels -risk_only_pct = 100.0 * (np.exp(comp_risk_only) - 1.0) -risk_unc_pct = 100.0 * (np.exp(comp_risk_unc) - 1.0) -uncertainty_only_pct = 100.0 * (np.exp(comp_risk_unc - comp_risk_only) - 1.0) - -print(f"p*={p_star:.2f}, θ*={θ_star:.4f}, γ*={γ_star:.2f}, w*={w_star:.4f}") -print(f"risk only compensation (log units): {comp_risk_only:.6f}") -print(f"risk + uncertainty compensation (log units): {comp_risk_unc:.6f}") -print(f"risk only compensation (percent): {risk_only_pct:.3f}%") -print(f"risk + uncertainty compensation (percent): {risk_unc_pct:.3f}%") -print(f"uncertainty component alone (percent): {uncertainty_only_pct:.3f}%") - -h = 250 -t = np.arange(h + 1) - -# Baseline approximating model fan -mean_base = rw["μ"] * t -std_base = rw["σ_ε"] * np.sqrt(t) - -# Certainty equivalent line from Eq. (47), shifted by compensating variations -certainty_slope = rw["μ"] + 0.5 * rw["σ_ε"]**2 -ce_risk = -comp_risk_only + certainty_slope * t -ce_risk_unc = -comp_risk_unc + certainty_slope * t - -# Alternative models from the ambiguity set in panel B -mean_low = (rw["μ"] + rw["σ_ε"] * w_star) * t -mean_high = (rw["μ"] - rw["σ_ε"] * w_star) * t -``` - -```{code-cell} ipython3 ---- -mystnb: - figure: - caption: Certainty equivalents under robustness - name: fig-bhs-4 ---- -fig, axes = plt.subplots(1, 2, figsize=(12, 4)) - -# Panel A -ax = axes[0] -ax.fill_between(t, mean_base - std_base, mean_base + std_base, - alpha=0.25, color="tab:blue") -ax.plot(t, ce_risk_unc, lw=2, ls="--", color="black", - label="certainty equivalent: risk + uncertainty") -ax.plot(t, ce_risk, lw=2, color="tab:orange", - label="certainty equivalent: risk only") -ax.plot(t, mean_base, lw=2, - color="tab:blue", label="approximating-model mean") -ax.set_xlabel("quarters") -ax.set_ylabel("log consumption") -ax.legend(frameon=False, fontsize=8, loc="upper left") - -# Panel B -ax = axes[1] -ax.fill_between(t, mean_base - std_base, mean_base + std_base, - alpha=0.20, color="tab:blue") -ax.fill_between(t, mean_low - std_base, mean_low + std_base, - alpha=0.20, color="tab:red") -ax.fill_between(t, mean_high - std_base, mean_high + std_base, - alpha=0.20, color="tab:green") -ax.plot(t, ce_risk_unc, lw=2, ls="--", color="black", - label="certainty equivalent: risk + uncertainty") -ax.plot(t, mean_base, lw=2, color="tab:blue", label="approximating-model mean") -ax.plot(t, mean_low, lw=2, color="tab:red", label="worst-case-leaning mean") -ax.plot(t, mean_high, lw=2, color="tab:green", label="best-case-leaning mean") -ax.set_xlabel("quarters") -ax.set_ylabel("log consumption") -ax.legend(frameon=False, fontsize=8, loc="upper left") - -plt.tight_layout() -plt.show() -``` - -The left panel illustrates the elimination of model uncertainty and risk for a type II agent. - -The shaded fan shows a one-standard-deviation band for the $j$-step-ahead conditional distribution of $c_t$ under the calibrated random-walk model. - -The dashed line $c^{II}$ shows the certainty-equivalent path whose date-zero consumption is reduced by $c_0 - c_0^{II}$, making the type II agent indifferent between this deterministic trajectory and the stochastic plan. - -It compensates for bearing both risk and model ambiguity. - -The solid line $c^r$ shows the certainty equivalent for a type II agent without model uncertainty ($\theta = \infty$), initialized at $c_0 - c_0^{II}(r)$. - -At postwar calibrated values this gap is small, so $c^r$ sits just below the center of the fan. - -Consistent with {cite:t}`Lucas_2003`, the welfare gains from eliminating well-understood risk are very small. - -The large welfare gains found by {cite:t}`Tall2000` can be reinterpreted as arising not from reducing risk, but from reducing model uncertainty. - -The right panel shows the set of nearby models that the robust consumer guards against. - -Each shaded fan depicts a one-standard-deviation band for a different model in the ambiguity set. - -The models are statistically close to the baseline, with detection-error probability $p = 0.10$, but imply very different long-run consumption levels. - -The consumer's caution against such alternatives accounts for the large certainty-equivalent gap in the left panel. - -## Welfare gains from removing model uncertainty - -A type III (constraint-preference) agent evaluates the worst model inside an entropy ball of radius $\eta$. - -As $\eta$ grows the set of plausible misspecifications expands, and with it the welfare cost of confronting model uncertainty. - -Since $\eta$ itself is not easy to interpret, we instead index these costs by the associated detection-error probability $p(\eta)$. - -The figure below plots the compensation for removing model uncertainty, measured as a proportion of consumption, against $p(\eta)$. - -```{code-cell} ipython3 -η_grid = np.linspace(0.0, 5.0, 300) - -# Use w and η relation, then convert to θ model by model -w_abs_grid = np.sqrt(2.0 * (1.0 - β) * η_grid / β) - -θ_rw_from_η = np.full_like(w_abs_grid, np.inf) -θ_ts_from_η = np.full_like(w_abs_grid, np.inf) -mask_w = w_abs_grid > 0.0 -θ_rw_from_η[mask_w] = rw["σ_ε"] / ((1.0 - β) * w_abs_grid[mask_w]) -θ_ts_from_η[mask_w] = ts["σ_ε"] / ((1.0 - β * ts["ρ"]) * w_abs_grid[mask_w]) - -# Type III uncertainty terms from Table 3 -gain_rw = np.where( - np.isinf(θ_rw_from_η), - 0.0, - β * rw["σ_ε"]**2 / ((1.0 - β)**2 * θ_rw_from_η), -) -gain_ts = np.where( - np.isinf(θ_ts_from_η), - 0.0, - β * ts["σ_ε"]**2 / ((1.0 - β * ts["ρ"])**2 * θ_ts_from_η), -) - -# Convert log compensation to percent of initial consumption in levels -gain_rw_pct = 100.0 * (np.exp(gain_rw) - 1.0) -gain_ts_pct = 100.0 * (np.exp(gain_ts) - 1.0) - -# Detection error probabilities implied by η -p_eta_pct = 100.0 * norm.cdf(-0.5 * w_abs_grid * np.sqrt(T)) -order = np.argsort(p_eta_pct) -p_plot = p_eta_pct[order] -gain_rw_plot = gain_rw_pct[order] -gain_ts_plot = gain_ts_pct[order] -``` - -```{code-cell} ipython3 ---- -mystnb: - figure: - caption: Type III uncertainty compensation curve - name: fig-bhs-5 ---- -fig, ax = plt.subplots(figsize=(7, 4)) -ax.plot(p_plot, gain_rw_plot, lw=2, label="RW type III") -ax.plot(p_plot, gain_ts_plot, lw=2, label="TS type III") -ax.set_xlabel(r"detection error probability $p(\eta)$ (percent)") -ax.set_ylabel("proportion of consumption (percent)") -ax.legend(frameon=False) - -plt.tight_layout() -plt.show() -``` - -The random-walk model implies somewhat larger costs than the trend-stationary model at the same detection-error probability, but both curves dwarf the classic Lucas cost of business cycles. - -To put the magnitudes in perspective, Lucas estimated that eliminating all aggregate consumption risk is worth roughly 0.05% of consumption. - -At detection-error probabilities of 10--20%, the model-uncertainty compensation alone runs to several percent, orders of magnitude larger. - -Under the robust reading, the large risk premia that Tallarini matched with high $\gamma$ are really compensations for bearing model uncertainty, and the implied welfare gains from resolving that uncertainty are correspondingly large. - -The following contour plot shows how type II (multiplier) compensation varies over two dimensions: the detection-error probability $p$ and the consumption volatility $\sigma_\varepsilon$. - -The cross marks the calibrated point ($p = 0.10$, $\sigma_\varepsilon = 0.5\%$). - -At the calibrated volatility, moving left (lower $p$, stronger robustness concerns) increases compensation dramatically, while the classic risk-only cost (the $p = 50\%$ edge) remains negligible. - -A comparison of the two panels reveals that the random-walk model generates much larger welfare costs than the trend-stationary model at the same ($p$, $\sigma_\varepsilon$), because permanent shocks compound the worst-case drift indefinitely. - -```{code-cell} ipython3 ---- -mystnb: - figure: - caption: Type II compensation contours - name: fig-bhs-contour ---- -p_grid = np.linspace(0.02, 0.49, 300) -σ_grid = np.linspace(0.001, 0.015, 300) -P, Σ = np.meshgrid(p_grid, σ_grid) - -W_abs = -2 * norm.ppf(P) / np.sqrt(T) - -# RW: total type II = βσ²γ / [2(1-β)] -Γ_rw = 1 + W_abs / Σ -comp_rw = 100 * (np.exp(β * Σ**2 * Γ_rw / (2 * (1 - β))) - 1) - -# TS: risk + uncertainty -ρ_val = ts["ρ"] -risk_ts = β * Σ**2 / (2 * (1 - β * ρ_val**2)) -unc_ts = β * Σ * W_abs / (2 * (1 - β * ρ_val)) -comp_ts = 100 * (np.exp(risk_ts + unc_ts) - 1) - -levels = [0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50] - -fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(13, 5.5), sharey=True) - -for ax, comp in [(ax1, comp_rw), (ax2, comp_ts)]: - cf = ax.contourf(100 * P, 100 * Σ, comp, levels=levels, - cmap='Blues', extend='both') - cs = ax.contour(100 * P, 100 * Σ, comp, levels=levels, - colors='k', linewidths=0.5) - ax.clabel(cs, fmt='%g%%', fontsize=8) - ax.plot(10, 0.5, 'x', lw=2, markersize=14, color='w', - mec='k', mew=1, zorder=5) - ax.set_xlabel(r'detection-error probability $p$ (%)') - -ax1.set_ylabel(r'consumption volatility $\sigma_\varepsilon$ (%)') - -plt.tight_layout() -plt.show() -``` - -## Learning doesn't eliminate misspecification fears - -A reasonable question arises: if the consumer has 235 quarters of data, can't she learn enough to dismiss the worst-case model? - -The answer is no. - -This is because the drift is a low-frequency feature that is very hard to pin down. - -Estimating the mean of a random walk to the precision needed to reject small but economically meaningful shifts requires far more data than estimating volatility precisely does. - -The following figure makes this point concrete. - -We measure consumption as real personal consumption expenditures on nondurable goods and services, deflated by its implicit chain price deflator and expressed in per-capita terms using the civilian noninstitutional population aged 16+. - -The construction uses four FRED series: - -| FRED series | Description | -| --- | --- | -| `PCND` | Nominal PCE: nondurable goods (billions of \$, SAAR, quarterly) | -| `PCESV` | Nominal PCE: services (billions of \$, SAAR, quarterly) | -| `DPCERD3Q086SBEA` | PCE implicit price deflator (index 2017 $= 100$, quarterly) | -| `CNP16OV` | Civilian noninstitutional population, 16+ (thousands, monthly) | - -We use nominal rather than chained-dollar components because chained-dollar series are not additive. - -Chain-weighted indices update their base-period expenditure weights every period, so components deflated with different price changes do not sum to the separately chained aggregate. - -Adding nominal series and deflating the sum with a single price index avoids this problem. - -The processing pipeline is: - -1. Add nominal nondurables and services: $C_t^{nom} = C_t^{nd} + C_t^{sv}$. -2. Deflate by the PCE price index: $C_t^{real} = C_t^{nom} / (P_t / 100)$. -3. Convert to per-capita: divide by the quarterly average of the monthly population series. -4. Compute log consumption: $c_t = \log C_t^{real,pc}$. - -When we plot *levels* of log consumption, we align the time index to 1948Q1--2006Q4, which yields $T+1 = 236$ quarterly observations. - -```{code-cell} ipython3 -start_date = dt.datetime(1947, 1, 1) -end_date = dt.datetime(2007, 1, 1) - - -def _read_fred_series(series_id, start_date, end_date): - series = web.DataReader(series_id, "fred", start_date, end_date)[series_id] - series = pd.to_numeric(series, errors="coerce").dropna().sort_index() - if series.empty: - raise ValueError(f"FRED series '{series_id}' returned no data in sample window") - return series - - -# Fetch nominal PCE components, deflator, and population from FRED -nom_nd = _read_fred_series("PCND", start_date, end_date) # quarterly, 1947– -nom_sv = _read_fred_series("PCESV", start_date, end_date) # quarterly, 1947– -defl = _read_fred_series("DPCERD3Q086SBEA", start_date, end_date) # quarterly, 1947– -pop_m = _read_fred_series("CNP16OV", start_date, end_date) # monthly, 1948– - -# Step 1: add nominal nondurables + services -nom_total = nom_nd + nom_sv - -# Step 2: deflate by PCE implicit price deflator (index 2017=100) -real_total = nom_total / (defl / 100.0) - -# Step 3: convert to per-capita (population is monthly, so average to quarterly) -pop_q = pop_m.resample("QS").mean() -real_pc = (real_total / pop_q).dropna() - -# Restrict to sample period 1948Q1–2006Q4 -real_pc = real_pc.loc["1948-01-01":"2006-12-31"].dropna() - -if real_pc.empty: - raise RuntimeError( - "FRED returned no usable observations after alignment/filtering") - -# Step 4: log consumption -log_c_data = np.log(real_pc.to_numpy(dtype=float).reshape(-1)) -years_data = ( - real_pc.index.year - + (real_pc.index.month - 1) / 12.0).to_numpy(dtype=float) - -print(f"Fetched {len(log_c_data)} quarterly observations from FRED") -print(f"Sample: {years_data[0]:.1f} – {years_data[-1] + 0.25:.1f}") -print(f"Observations: {len(log_c_data)}") -``` - -We can verify Table 2 by computing sample moments of log consumption growth from our FRED data: - -```{code-cell} ipython3 -# Growth rates: 1948Q2 to 2006Q4 (T = 235 quarters) -diff_c = np.diff(log_c_data) - -μ_hat = diff_c.mean() -σ_hat = diff_c.std(ddof=1) - -print("Sample estimates from FRED data vs Table 2:") -print(f" μ = {μ_hat:.5f} (Table 2 RW: {rw['μ']:.5f})") -print(f" σ_ε = {σ_hat:.4f} (Table 2: {rw['σ_ε']:.4f})") -print(f" T = {len(diff_c)} quarters") -``` - -```{code-cell} ipython3 -p_fig6 = 0.20 - -rw_fig6 = dict(μ=μ_hat, σ_ε=σ_hat) -w_fig6 = 2.0 * norm.ppf(p_fig6) / np.sqrt(T) - -c = log_c_data -years = years_data - -t6 = np.arange(T + 1) -μ_approx = rw_fig6["μ"] -μ_worst = rw_fig6["μ"] + rw_fig6["σ_ε"] * w_fig6 - -a_approx = (c - μ_approx * t6).mean() -a_worst = (c - μ_worst * t6).mean() -line_approx = a_approx + μ_approx * t6 -line_worst = a_worst + μ_worst * t6 - -p_right = np.linspace(0.01, 0.50, 500) -w_right = 2.0 * norm.ppf(p_right) / np.sqrt(T) -μ_worst_right = rw_fig6["μ"] + rw_fig6["σ_ε"] * w_right - -μ_se = rw_fig6["σ_ε"] / np.sqrt(T) -upper_band = rw_fig6["μ"] + 2.0 * μ_se -lower_band = rw_fig6["μ"] - 2.0 * μ_se -``` - -```{code-cell} ipython3 ---- -mystnb: - figure: - caption: Drift distortion and sampling uncertainty - name: fig-bhs-6 ---- -fig, axes = plt.subplots(1, 2, figsize=(12, 4)) - -ax = axes[0] -ax.plot(years, c, lw=2, color="tab:blue", label="log consumption") -ax.plot(years, line_approx, lw=2, ls="--", - color="black", label="approximating model") -ax.plot( - years, - line_worst, - lw=2, - ls=":", - color="black", - label=rf"wc model $p(\theta^{{-1}})={p_fig6:.1f}$", -) -ax.set_xlabel("year") -ax.set_ylabel("log consumption") -ax.legend(frameon=False, fontsize=8, loc="upper left") - -ax = axes[1] -ax.plot( - 100.0 * p_right, - 1_000.0 * μ_worst_right, - lw=2, - color="tab:red", - label=r"$\mu + \sigma_\varepsilon w(\theta)$", -) -ax.axhline(1_000.0 * rw_fig6["μ"], lw=2, color="black", label=r"$\hat\mu$") -ax.axhline(1_000.0 * upper_band, lw=2, ls="--", - color="gray", label=r"$\hat\mu \pm 2\hat s.e.$") -ax.axhline(1_000.0 * lower_band, lw=2, ls="--", color="gray") -ax.set_xlabel("detection error probability (percent)") -ax.set_ylabel(r"mean consumption growth ($\times 10^{-3}$)") -ax.legend(frameon=False, fontsize=8) -ax.set_xlim(0.0, 50.0) - -plt.tight_layout() -plt.show() -``` - -In the left panel, postwar US log consumption is shown alongside two deterministic trend lines: the approximating-model drift $\mu$ and the worst-case drift $\mu + \sigma_\varepsilon w(\theta)$ for $p(\theta^{-1}) = 0.20$. - -The two trends are close enough that, even with six decades of data, it is hard to distinguish them by eye. - -In the right panel, as the detection-error probability rises (the two models become harder to tell apart), the worst-case mean growth rate drifts back toward $\hat\mu$. - -The dashed gray lines mark a two-standard-error band around the maximum-likelihood estimate of $\mu$. - -Even at detection probabilities in the 5--20% range, the worst-case drift remains inside (or very near) this confidence band. - -Drift distortions that are economically large, large enough to generate substantial model-uncertainty premia, are statistically small relative to sampling uncertainty in $\hat\mu$. - -Robustness concerns persist despite long histories precisely because the low-frequency features that matter most for pricing are the hardest to estimate precisely. - -## Concluding remarks - -The title of this lecture poses a question: are large risk premia prices of *variability* (atemporal risk aversion) or prices of *doubts* (model uncertainty)? - -Asset-pricing data alone cannot settle the question, because the two interpretations are observationally equivalent. - -But the choice of interpretation matters for the conclusions we draw. - -Under the risk-aversion reading, high Sharpe ratios imply that consumers would pay a great deal to smooth known aggregate consumption fluctuations. - -Under the robustness reading, those same Sharpe ratios tell us that consumers would pay a great deal to resolve uncertainty about which probability model actually governs consumption growth. - -Three features of the analysis support the robustness reading: - -1. Detection-error probabilities provide a more stable calibration language than $\gamma$. - - - The two consumption models that required very different $\gamma$ values to match the data yield nearly identical pricing implications when indexed by detectability. - -2. The welfare gains implied by asset prices decompose overwhelmingly into a model-uncertainty component, with the pure risk component remaining small, consistent with Lucas's original finding. - -3. The drift distortions that drive pricing are small enough to hide inside standard-error bands, so finite-sample learning cannot eliminate the consumer's fears. - -Whether one ultimately prefers the risk or the uncertainty interpretation, the framework clarifies that the question is not about the size of risk premia but about the economic object those premia measure. - -## Exercises - -The following exercises ask you to fill in several derivation steps. - -```{exercise} -:label: dov_ex1 - -Let $R_{t+1}$ be an $n \times 1$ vector of gross returns with unconditional mean $E(R)$ and covariance matrix $\Sigma_R$. - -Let $m_{t+1}$ be a stochastic discount factor satisfying $\mathbf{1} = E[m_{t+1} R_{t+1}]$. - -1. Use the covariance decomposition $E[mR] = E[m] E[R] + \operatorname{cov}(m,R)$ to show that $\operatorname{cov}(m,R) = \mathbf{1} - E[m] E[R] =: b$. -2. For a portfolio with weight vector $\alpha$ and return $R^p = \alpha^\top R$, show that $\operatorname{cov}(m, R^p) = \alpha^\top b$. -3. Apply the Cauchy--Schwarz inequality to the pair $(m, R^p)$ to obtain $|\alpha^\top b| \leq \sigma(m)\sqrt{\alpha^\top \Sigma_R\alpha}$. -4. Maximize the ratio $|\alpha^\top b|/\sqrt{\alpha^\top \Sigma_R \alpha}$ over $\alpha$ and show that the maximum is $\sqrt{b^\top \Sigma_R^{-1} b}$, attained at $\alpha^\star = \Sigma_R^{-1}b$. -5. Conclude that $\sigma(m) \geq \sqrt{b^\top \Sigma_R^{-1} b}$, which is {eq}`bhs_hj_unconditional`. -``` - -```{solution-start} dov_ex1 -:class: dropdown -``` - -**Part 1.** From $\mathbf{1} = E[mR] = E[m] E[R] + \operatorname{cov}(m,R)$, rearranging gives $\operatorname{cov}(m,R) = \mathbf{1} - E[m] E[R]= b$. - -**Part 2.** The portfolio return is $R^p = \alpha^\top R$, so - -$$ -\operatorname{cov}(m, R^p) = \operatorname{cov}(m, \alpha^\top R) = \alpha^\top \operatorname{cov}(m, R) = \alpha^\top b. -$$ - -**Part 3.** -Applying the Cauchy--Schwarz inequality to $(m, R^p)$: - -$$ -|\alpha^\top b| = |\operatorname{cov}(m, R^p)| \leq \sigma(m) \sigma(R^p) = \sigma(m) \sqrt{\alpha^\top \Sigma_R \alpha}. -$$ - -**Part 4.** Rearranging Part 3 gives - -$$ -\frac{|\alpha^\top b|}{\sqrt{\alpha^\top \Sigma_R \alpha}} \leq \sigma(m). -$$ - -To maximize the left-hand side over $\alpha$, define the $\Sigma_R$-inner product $\langle u, v \rangle_{\Sigma} = u^\top \Sigma_R v$. - -Inserting $I = \Sigma_R \Sigma_R^{-1}$ gives - -$$ -\alpha^\top b -= \alpha^\top (\Sigma_R \Sigma_R^{-1}) b -= (\alpha^\top \Sigma_R)(\Sigma_R^{-1} b) -= \langle \alpha, \Sigma_R^{-1}b \rangle_{\Sigma}. -$$ - -Cauchy--Schwarz in this inner product gives - -$$ -|\langle \alpha, \Sigma_R^{-1}b \rangle_{\Sigma}| -\leq -\sqrt{\langle \alpha, \alpha \rangle_{\Sigma}}\sqrt{\langle \Sigma_R^{-1}b, \Sigma_R^{-1}b \rangle_{\Sigma}} -= -\sqrt{\alpha^\top \Sigma_R \alpha} \sqrt{b^\top \Sigma_R^{-1} b}, -$$ - -with equality when $\alpha \propto \Sigma_R^{-1} b$. - -Substituting $\alpha^\star = \Sigma_R^{-1} b$ verifies - -$$ -\max_\alpha \frac{|\alpha^\top b|}{\sqrt{\alpha^\top \Sigma_R \alpha}} = \sqrt{b^\top \Sigma_R^{-1} b}. -$$ - -**Part 5.** Combining Parts 3 and 4 gives $\sigma(m) \geq \sqrt{b^\top \Sigma_R^{-1} b}$, which is {eq}`bhs_hj_unconditional`. - -```{solution-end} -``` - -```{exercise} -:label: dov_ex2 - -Combine the SDF representation {eq}`bhs_sdf` with the random-walk consumption dynamics and the Gaussian mean-shift distortion to derive closed-form SDF moments. - -1. Show that $\log m_{t+1}$ is normally distributed under the approximating model and compute its mean and variance in terms of $(\beta,\mu,\sigma_\varepsilon,w)$. -2. Use lognormal moments to derive expressions for $E[m]$ and $\sigma(m)/E[m]$. -3. Use the parameter mapping $\theta = [(1-\beta)(\gamma-1)]^{-1}$ and the associated $w$ to obtain closed-form expressions for the random-walk model. -4. Explain why $E[m]$ stays roughly constant while $\sigma(m)/E[m]$ grows linearly with $\gamma$. -``` - -```{solution-start} dov_ex2 -:class: dropdown -``` - -Under the random walk, - -$$ -c_{t+1}-c_t=\mu+\sigma_\varepsilon \varepsilon_{t+1} - -$$ -with $\varepsilon_{t+1}\sim\mathcal{N}(0,1)$ under the approximating model. - -Using {eq}`bhs_sdf` and the Gaussian distortion - -$$ -\hat g_{t+1}=\exp \left(w\varepsilon_{t+1}-\tfrac{1}{2}w^2\right), - -$$ -we get - -$$ -m_{t+1} -= -\beta \exp \left(-(c_{t+1}-c_t)\right)\hat g_{t+1} -= -\beta \exp \left(-\mu-\sigma_\varepsilon\varepsilon_{t+1}\right)\exp \left(w\varepsilon_{t+1}-\frac{1}{2}w^2\right). -$$ - -Therefore - -$$ -\log m_{t+1} -= -\log\beta-\mu-\frac{1}{2}w^2 + (w-\sigma_\varepsilon)\varepsilon_{t+1}, - -$$ -which is normal with mean - -$$ -E[\log m]=\log\beta-\mu-\tfrac{1}{2}w^2 - -$$ -and variance - -$$ -\operatorname{Var}(\log m)=(w-\sigma_\varepsilon)^2. -$$ - -For a lognormal random variable, - -$$ -E[m]=\exp(E[\log m]+\tfrac{1}{2}\operatorname{Var}(\log m)) - -$$ -and - -$$ -\sigma(m)/E[m]=\sqrt{e^{\operatorname{Var}(\log m)}-1}. - -$$ -Hence - -$$ -E[m] -= -\beta\exp\left( --\mu-\frac{1}{2}w^2+\frac{1}{2}(w-\sigma_\varepsilon)^2 -\right) -= -\beta\exp\left(-\mu+\frac{\sigma_\varepsilon^2}{2}-\sigma_\varepsilon w\right), - -$$ -and - -$$ -\frac{\sigma(m)}{E[m]} -= -\sqrt{\exp\left((w-\sigma_\varepsilon)^2\right)-1}. -$$ - -Now use $w_{\text{RW}}(\theta)=-\sigma_\varepsilon/[(1-\beta)\theta]$ from {eq}`bhs_w_formulas` and -$\theta=[(1-\beta)(\gamma-1)]^{-1}$ to get $w=-\sigma_\varepsilon(\gamma-1)$. -Then - -$$ --\sigma_\varepsilon w=\sigma_\varepsilon^2(\gamma-1) - -$$ -and - -$$ -(w-\sigma_\varepsilon)^2 = (-\sigma_\varepsilon\gamma)^2=\sigma_\varepsilon^2\gamma^2. - -$$ -Substituting gives the closed-form expressions for the random-walk model: - -```{math} -:label: bhs_Em_rw -E[m] = \beta \exp\left[-\mu + \frac{\sigma_\varepsilon^2}{2}(2\gamma - 1)\right], -``` - -```{math} -:label: bhs_sigma_rw -\frac{\sigma(m)}{E[m]} = \sqrt{\exp\left(\sigma_\varepsilon^2 \gamma^2\right) - 1}. -``` - -Notice that in {eq}`bhs_Em_rw`, because $\sigma_\varepsilon$ is small ($\approx 0.005$), the term $\frac{\sigma_\varepsilon^2}{2}(2\gamma-1)$ grows slowly with $\gamma$, keeping $E[m]$ roughly constant near $1/(1+r^f)$. - -Meanwhile {eq}`bhs_sigma_rw` shows that $\sigma(m)/E[m] \approx \sigma_\varepsilon \gamma$ grows linearly with $\gamma$. - -This is how Epstein--Zin preferences push volatility toward the HJ bound without distorting the risk-free rate. - -An analogous calculation for the trend-stationary model yields: - -```{math} -:label: bhs_Em_ts -E[m] = \beta \exp\left[-\mu + \frac{\sigma_\varepsilon^2}{2}\left(1 - \frac{2(1-\beta)(1-\gamma)}{1-\beta\rho} + \frac{1-\rho}{1+\rho}\right)\right], -``` - -```{math} -:label: bhs_sigma_ts -\frac{\sigma(m)}{E[m]} = \sqrt{\exp\left[\sigma_\varepsilon^2\left(\left(\frac{(1-\beta)(1-\gamma)}{1-\beta\rho} - 1\right)^{2} + \frac{1-\rho}{1+\rho}\right)\right] - 1}. -``` - -```{solution-end} -``` - -```{exercise} -:label: dov_ex3 - -Starting from the type I recursion {eq}`bhs_type1_recursion` and the definitions of $U_t$ and $\theta$ in {eq}`bhs_Ut_def`--{eq}`bhs_theta_def`, derive the risk-sensitive recursion {eq}`bhs_risk_sensitive`. - -Verify that as $\gamma \to 1$ (equivalently $\theta \to \infty$), the recursion converges to standard discounted expected log utility $U_t = c_t + \beta E_t U_{t+1}$. -``` - -```{solution-start} dov_ex3 -:class: dropdown -``` - -Start from the type I recursion {eq}`bhs_type1_recursion` and write - -$$ -(V_{t+1})^{1-\gamma} = \exp\bigl((1-\gamma)\log V_{t+1}\bigr). -$$ - -Using $\log V_t = (1-\beta)U_t$ from {eq}`bhs_Ut_def`, we obtain - -$$ -(1-\beta)U_t -= -(1-\beta)c_t -+ -\frac{\beta}{1-\gamma}\log E_t\left[\exp\bigl((1-\gamma)(1-\beta)U_{t+1}\bigr)\right]. -$$ - -Divide by $(1-\beta)$ and use {eq}`bhs_theta_def`, - -$$ -\theta = -\bigl[(1-\beta)(1-\gamma)\bigr]^{-1}. -$$ - -Then $(1-\gamma)(1-\beta)=-1/\theta$ and $\beta/[(1-\beta)(1-\gamma)]=-\beta\theta$, so - -$$ -U_t -= -c_t - \beta\theta \log E_t \left[\exp \left(-\frac{U_{t+1}}{\theta}\right)\right], -$$ - -which is {eq}`bhs_risk_sensitive`. - -For $\theta\to\infty$ (equivalently $\gamma\to 1$), use the expansion - -$$ -\exp(-U_{t+1}/\theta)=1-U_{t+1}/\theta+o(1/\theta). -$$ - -Taking expectations, - -$$ -E_t[\exp(-U_{t+1}/\theta)] = 1 - E_t[U_{t+1}]/\theta + o(1/\theta). -$$ - -Applying $\log(1+x) = x + o(x)$ with $x = -E_t[U_{t+1}]/\theta + o(1/\theta)$, - -$$ -\log E_t[\exp(-U_{t+1}/\theta)] -= --E_t[U_{t+1}]/\theta + o(1/\theta), -$$ - -so $-\theta\log E_t[\exp(-U_{t+1}/\theta)] \to E_t[U_{t+1}]$ as -$\theta\to\infty$ and the recursion converges to - -$$ -U_t = c_t + \beta E_t U_{t+1}. -$$ - -```{solution-end} -``` - -```{exercise} -:label: dov_ex4 - -Consider the type II Bellman equation {eq}`bhs_bellman_type2`. - -1. Use a Lagrange multiplier to impose the normalization constraint $\int g(\varepsilon) \pi(\varepsilon) d\varepsilon = 1$. -2. Derive the first-order condition for $g(\varepsilon)$ and show that the minimizer is the exponential tilt in {eq}`bhs_ghat`. -3. Substitute your minimizing $g$ back into {eq}`bhs_bellman_type2` to recover the risk-sensitive Bellman equation {eq}`bhs_bellman_type1`. - -Conclude that $W(x) \equiv U(x)$ for consumption plans in $\mathcal{C}(A,B,H;x_0)$. -``` - -```{solution-start} dov_ex4 -:class: dropdown -``` - -Fix $x$ and write $W'(\varepsilon) := W(Ax + B\varepsilon)$ for short. - -Form the Lagrangian - -$$ -\mathcal{L}[g,\lambda] -= -\beta \int \Bigl[g(\varepsilon)W'(\varepsilon) + \theta g(\varepsilon)\log g(\varepsilon)\Bigr]\pi(\varepsilon)d\varepsilon -+ -\lambda\left(\int g(\varepsilon)\pi(\varepsilon) d\varepsilon - 1\right). -$$ - -The pointwise first-order condition for $g(\varepsilon)$ is - -$$ -0 -= -\frac{\partial \mathcal{L}}{\partial g(\varepsilon)} -= -\beta\Bigl[W'(\varepsilon) + \theta(1+\log g(\varepsilon))\Bigr]\pi(\varepsilon) -+ -\lambda\pi(\varepsilon), -$$ - -so (dividing by $\beta\pi(\varepsilon)$) - -$$ -\log g(\varepsilon) -= --\frac{W'(\varepsilon)}{\theta} - 1 - \frac{\lambda}{\beta\theta}. -$$ - -Exponentiating yields $g(\varepsilon)=K\exp(-W'(\varepsilon)/\theta)$ where $K = \exp(-1 - \lambda/(\beta\theta))$ is a constant that does not depend on $\varepsilon$. - -To pin down $K$, impose the normalization $\int g(\varepsilon)\pi(\varepsilon)d\varepsilon=1$: - -$$ -1 = K \int \exp \left(-\frac{W(Ax+B\varepsilon)}{\theta}\right)\pi(\varepsilon) d\varepsilon, -$$ - -so - -$$ -K^{-1} -= -\int \exp\left(-\frac{W(Ax+B\varepsilon)}{\theta}\right)\pi(\varepsilon) d\varepsilon. -$$ - -Substituting $K^{-1}$ into the denominator of $g = K\exp(-W'/\theta)$ gives the minimizer: - -$$ -g^*(\varepsilon) -= -\frac{\exp\left(-W(Ax+B\varepsilon)/\theta\right)}{ - \int \exp\left(-W(Ax+B\tilde\varepsilon)/\theta\right)\pi(\tilde\varepsilon) d\tilde\varepsilon}. -$$ - -This has exactly the same form as the distortion $\hat g_{t+1} = \exp(-U_{t+1}/\theta)/E_t[\exp(-U_{t+1}/\theta)]$ that appears in the type I SDF {eq}`bhs_sdf_Ut`, with $W$ in place of $U$. - -Once we verify below that $W \equiv U$, the minimizer $g^*$ and the SDF distortion $\hat g$ coincide, which is {eq}`bhs_ghat`. - -To substitute back, define - -$$ -Z(x):=\int \exp(-W(Ax+B\varepsilon)/\theta)\pi(\varepsilon) d\varepsilon. -$$ - -Then $\hat g(\varepsilon)=\exp(-W(Ax+B\varepsilon)/\theta)/Z(x)$ and - -$$ -\log\hat g(\varepsilon)=-W(Ax+B\varepsilon)/\theta-\log Z(x). -$$ - -Hence - -$$ -\int \Bigl[\hat g(\varepsilon)W(Ax+B\varepsilon) + \theta \hat g(\varepsilon)\log \hat g(\varepsilon)\Bigr]\pi(\varepsilon) d\varepsilon -= --\theta\log Z(x), -$$ - -because the $W$ terms cancel and $\int \hat g \pi = 1$. - -Plugging this into {eq}`bhs_bellman_type2` gives - -$$ -W(x) -= -c-\beta\theta\log Z(x) -= -c-\beta\theta \log \int \exp\left(-\frac{W(Ax+B\varepsilon)}{\theta}\right)\pi(\varepsilon) d\varepsilon, -$$ - -which is {eq}`bhs_bellman_type1`. Therefore $W(x)\equiv U(x)$. - -```{solution-end} -``` - -```{exercise} -:label: dov_ex5 - -Let $\varepsilon \sim \mathcal{N}(0,1)$ under the approximating model and define - -$$ -\hat g(\varepsilon) = \exp\left(w\varepsilon - \frac{1}{2}w^2\right) -$$ - -as in the Gaussian mean-shift section. - -1. Show that $E[\hat g(\varepsilon)] = 1$. - -2. Show that for any bounded measurable function $f$, - -$$ -E[\hat g(\varepsilon) f(\varepsilon)] -$$ - -equals the expectation of $f$ under $\mathcal{N}(w,1)$. - -3. Compute the mean and variance of $\log \hat g(\varepsilon)$ and use these to derive - -$$ -\operatorname{std}(\hat g) = \sqrt{e^{w^2}-1}. -$$ - -4. Compute the conditional relative entropy $E[\hat g\log \hat g]$ and verify that it equals $\tfrac{1}{2}w^2$. -``` - -```{solution-start} dov_ex5 -:class: dropdown -``` - -1. Using the moment generating function of a standard normal, - -$$ -E[\hat g(\varepsilon)] -= -e^{-w^2/2}E[e^{w\varepsilon}] -= -e^{-w^2/2}e^{w^2/2} -= -1. -$$ - -2. Let $\varphi(\varepsilon) = (2\pi)^{-1/2}e^{-\varepsilon^2/2}$ be the $\mathcal{N}(0,1)$ density. - -Then - -$$ -\hat g(\varepsilon)\varphi(\varepsilon) -= -\frac{1}{\sqrt{2\pi}} -\exp\left(w\varepsilon-\frac{1}{2}w^2-\frac{1}{2}\varepsilon^2\right) -= -\frac{1}{\sqrt{2\pi}} -\exp\left(-\frac{1}{2}(\varepsilon-w)^2\right), -$$ - -which is the $\mathcal{N}(w,1)$ density. - -Therefore, for bounded measurable $f$, - -$$ -E[\hat g(\varepsilon)f(\varepsilon)] -= -\int f(\varepsilon)\hat g(\varepsilon)\varphi(\varepsilon)d\varepsilon -$$ - -equals the expectation of $f$ under $\mathcal{N}(w,1)$. - -3. Since $\log \hat g(\varepsilon) = w\varepsilon - \tfrac{1}{2}w^2$ and $\varepsilon\sim\mathcal{N}(0,1)$, - -$$ -E[\log \hat g] = -\frac{1}{2}w^2, -\qquad -\operatorname{Var}(\log \hat g)=w^2. - -$$ -Moreover, $\operatorname{Var}(\hat g)=E[\hat g^2]-1$ because $E[\hat g]=1$. - -Now - -$$ -E[\hat g^2] -= -E\left[\exp\left(2w\varepsilon - w^2\right)\right] -= -e^{-w^2}E[e^{2w\varepsilon}] -= -e^{-w^2}e^{(2w)^2/2} -= -e^{w^2}, - -$$ -so $\operatorname{std}(\hat g)=\sqrt{e^{w^2}-1}$. - -4. Using part 2 with $f(\varepsilon)=\log \hat g(\varepsilon)=w\varepsilon-\tfrac{1}{2}w^2$, - -$$ -E[\hat g\log \hat g] -= -E_{\mathcal{N}(w,1)}\left[w\varepsilon-\frac{1}{2}w^2\right] -= -w\cdot E_{\mathcal{N}(w,1)}[\varepsilon]-\frac{1}{2}w^2 -= -w^2-\frac{1}{2}w^2 -= -\frac{1}{2}w^2. -$$ - -```{solution-end} -``` - -```{exercise} -:label: dov_ex6 - -Derive the worst-case mean shifts {eq}`bhs_w_formulas` for both consumption models. - -From {eq}`bhs_ghat`, $\hat g_{t+1} \propto \exp(-W(x_{t+1})/\theta)$. - -When $W$ is linear in the state, the exponent is linear in $\varepsilon_{t+1}$, and the Gaussian mean shift is $w = -\lambda/\theta$ where $\lambda$ is the coefficient on $\varepsilon_{t+1}$ in $W(x_{t+1})$. - -1. Random-walk model: Guess $W(x_t) = \frac{1}{1-\beta}[c_t + d]$. Using $c_{t+1} = c_t + \mu + \sigma_\varepsilon\varepsilon_{t+1}$, find $\lambda$ and show that $w = -\sigma_\varepsilon/[(1-\beta)\theta]$. - -2. Trend-stationary model: Write $z_t = \tilde c_t - \zeta$ and guess $W(x_t) = \frac{1}{1-\beta}[c_t + \alpha_1 z_t + \alpha_0]$. Show that: - - The coefficient on $\varepsilon_{t+1}$ in $W(x_{t+1})$ is $(1+\alpha_1)\sigma_\varepsilon/(1-\beta)$. - - Matching coefficients on $z_t$ in the Bellman equation gives $\alpha_1 = \beta(\rho-1)/(1-\beta\rho)$. - - Therefore $1+\alpha_1 = (1-\beta)/(1-\beta\rho)$ and $w = -\sigma_\varepsilon/[(1-\beta\rho)\theta]$. -``` - -```{solution-start} dov_ex6 -:class: dropdown -``` - -**Part 1.** -Under the guess $W(x_t) = \frac{1}{1-\beta}[c_t + d]$ and $c_{t+1} = c_t + \mu + \sigma_\varepsilon\varepsilon_{t+1}$, - -$$ -W(x_{t+1}) = \frac{1}{1-\beta}[c_t + \mu + \sigma_\varepsilon\varepsilon_{t+1} + d]. -$$ - -The coefficient on $\varepsilon_{t+1}$ is $\lambda = \sigma_\varepsilon/(1-\beta)$, so $w = -\lambda/\theta = -\sigma_\varepsilon/[(1-\beta)\theta]$. - -**Part 2.** -Under the guess $W(x_t) = \frac{1}{1-\beta}[c_t + \alpha_1 z_t + \alpha_0]$ with $c_{t+1} = c_t + \mu + (\rho-1)z_t + \sigma_\varepsilon\varepsilon_{t+1}$ and $z_{t+1} = \rho z_t + \sigma_\varepsilon\varepsilon_{t+1}$, - -$$ -W(x_{t+1}) = \tfrac{1}{1-\beta}\bigl[c_t + \mu + (\rho-1)z_t + \sigma_\varepsilon\varepsilon_{t+1} + \alpha_1(\rho z_t + \sigma_\varepsilon\varepsilon_{t+1}) + \alpha_0\bigr]. -$$ - -The coefficient on $\varepsilon_{t+1}$ is $(1+\alpha_1)\sigma_\varepsilon/(1-\beta)$. - -To find $\alpha_1$, substitute the guess into the Bellman equation. - -The factors of $\frac{1}{1-\beta}$ cancel on both sides, and matching coefficients on $z_t$ gives - -$$ -\alpha_1 = \beta\bigl[(\rho-1) + \alpha_1\rho\bigr] -\quad\Rightarrow\quad -\alpha_1(1-\beta\rho) = \beta(\rho-1) -\quad\Rightarrow\quad -\alpha_1 = \frac{\beta(\rho-1)}{1-\beta\rho}. -$$ - -Therefore - -$$ -1+\alpha_1 = \frac{1-\beta\rho + \beta(\rho-1)}{1-\beta\rho} = \frac{1-\beta}{1-\beta\rho}, -$$ - -and the coefficient on $\varepsilon_{t+1}$ becomes $(1+\alpha_1)\sigma_\varepsilon/(1-\beta) = \sigma_\varepsilon/(1-\beta\rho)$, giving $w = -\sigma_\varepsilon/[(1-\beta\rho)\theta]$. - -```{solution-end} -``` - -```{exercise} -:label: dov_ex7 - -Verify the closed-form value function {eq}`bhs_W_rw` for the random-walk model by substituting a guess of the form $W(x_t) = \frac{1}{1-\beta}[c_t + d]$ into the risk-sensitive Bellman equation {eq}`bhs_bellman_type1`. - -1. Under the random walk $c_{t+1} = c_t + \mu + \sigma_\varepsilon \varepsilon_{t+1}$, show that $W(Ax_t + B\varepsilon) = \frac{1}{1-\beta}[c_t + \mu + \sigma_\varepsilon\varepsilon_{t+1} + d]$. -2. Substitute into the $\log E\exp$ term, using the fact that for $Z \sim \mathcal{N}(\mu_Z, \sigma_Z^2)$ we have $\log E[\exp(Z)] = \mu_Z + \frac{1}{2}\sigma_Z^2$. -3. Solve for $d$ and confirm that it matches {eq}`bhs_W_rw`. -``` - -```{solution-start} dov_ex7 -:class: dropdown -``` - -**Part 1.** Under the random walk, $c_{t+1} = c_t + \mu + \sigma_\varepsilon\varepsilon_{t+1}$. Substituting the guess $W(x) = \frac{1}{1-\beta}[Hx + d]$ with $Hx_t = c_t$: - -$$ -W(Ax_t + B\varepsilon_{t+1}) = \frac{1}{1-\beta}\bigl[c_t + \mu + \sigma_\varepsilon\varepsilon_{t+1} + d\bigr]. -$$ - -**Part 2.** The Bellman equation {eq}`bhs_bellman_type1` requires computing - -$$ --\beta\theta\log E_t\left[\exp\left(\frac{-W(Ax_t + B\varepsilon_{t+1})}{\theta}\right)\right]. -$$ - -Substituting the guess: - -$$ -\frac{-W(Ax_t + B\varepsilon_{t+1})}{\theta} -= -\frac{-1}{(1-\beta)\theta}\bigl[c_t + \mu + d + \sigma_\varepsilon\varepsilon_{t+1}\bigr]. -$$ - -This is an affine function of the standard normal $\varepsilon_{t+1}$, so the argument of the $\log E\exp$ is normal with - -$$ -\mu_Z = \frac{-(c_t + \mu + d)}{(1-\beta)\theta}, -\qquad -\sigma_Z^2 = \frac{\sigma_\varepsilon^2}{(1-\beta)^2\theta^2}. -$$ - -Using $\log E[e^Z] = \mu_Z + \frac{1}{2}\sigma_Z^2$: - -$$ --\beta\theta\left[\frac{-(c_t + \mu + d)}{(1-\beta)\theta} + \frac{\sigma_\varepsilon^2}{2(1-\beta)^2\theta^2}\right] -= -\frac{\beta}{1-\beta}\left[c_t + \mu + d - \frac{\sigma_\varepsilon^2}{2(1-\beta)\theta}\right]. -$$ - -**Part 3.** The Bellman equation becomes - -$$ -\frac{1}{1-\beta}[c_t + d] -= -c_t + \frac{\beta}{1-\beta}\left[c_t + \mu + d - \frac{\sigma_\varepsilon^2}{2(1-\beta)\theta}\right]. -$$ - -Expanding the right-hand side: - -$$ -c_t + \frac{\beta c_t}{1-\beta} + \frac{\beta(\mu + d)}{1-\beta} - \frac{\beta\sigma_\varepsilon^2}{2(1-\beta)^2\theta} -= -\frac{c_t}{1-\beta} + \frac{\beta(\mu + d)}{1-\beta} - \frac{\beta\sigma_\varepsilon^2}{2(1-\beta)^2\theta}. -$$ - -Equating both sides and cancelling $\frac{c_t}{1-\beta}$: - -$$ -\frac{d}{1-\beta} = \frac{\beta(\mu + d)}{1-\beta} - \frac{\beta\sigma_\varepsilon^2}{2(1-\beta)^2\theta}. -$$ - -Solving: $d - \beta d = \beta\mu - \frac{\beta\sigma_\varepsilon^2}{2(1-\beta)\theta}$, so - -$$ -d = \frac{\beta}{1-\beta}\left(\mu - \frac{\sigma_\varepsilon^2}{2(1-\beta)\theta}\right), -$$ - -which matches {eq}`bhs_W_rw`. - -```{solution-end} -``` - -```{exercise} -:label: dov_ex8 - -In the Gaussian mean-shift setting of {ref}`Exercise 5 `, let $L_T$ be the log likelihood ratio between the worst-case and approximating models based on $T$ observations. - -1. Show that $L_T$ is normal under each model. -2. Compute its mean and variance under the approximating and worst-case models. -3. Using the definition of detection-error probability in {eq}`bhs_detection_formula`, derive the closed-form expression {eq}`bhs_detection_closed`. -``` - -```{solution-start} dov_ex8 -:class: dropdown -``` - -Let the approximating model be $\varepsilon_i \sim \mathcal{N}(0,1)$ and the worst-case model be $\varepsilon_i \sim \mathcal{N}(w,1)$, iid for $i=1,\ldots,T$. - -Take the log likelihood ratio in the direction that matches the definitions in the text: - -$$ -L_T -= -\log \frac{\prod_{i=1}^T \varphi(\varepsilon_i)}{\prod_{i=1}^T \varphi(\varepsilon_i-w)} -= -\sum_{i=1}^T \ell(\varepsilon_i), - -$$ -where $\varphi$ is the $\mathcal{N}(0,1)$ density and - -$$ -\ell(\varepsilon) -= -\log \varphi(\varepsilon) - \log \varphi(\varepsilon-w) -= --\frac{1}{2}\Bigl[\varepsilon^2-(\varepsilon-w)^2\Bigr] -= --w\varepsilon + \frac{1}{2}w^2. -$$ - -Therefore - -$$ -L_T = -w\sum_{i=1}^T \varepsilon_i + \tfrac{1}{2}w^2T. -$$ - -Under the approximating model, $\sum_{i=1}^T \varepsilon_i \sim \mathcal{N}(0,T)$, so - -$$ -L_T \sim \mathcal{N}\left(\frac{1}{2}w^2T, w^2T\right). -$$ - -Under the worst-case model, $\sum_{i=1}^T \varepsilon_i \sim \mathcal{N}(wT,T)$, so - -$$ -L_T \sim \mathcal{N}\left(-\frac{1}{2}w^2T, w^2T\right). -$$ - -Now - -$$ -p_A = \Pr_A(L_T<0) -= -\Phi\left(\frac{0-\frac{1}{2}w^2T}{|w|\sqrt{T}}\right) -= -\Phi\left(-\frac{|w|\sqrt{T}}{2}\right), -$$ - -and - -$$ -p_B = \Pr_B(L_T>0) -= -1-\Phi\left(\frac{0-(-\frac{1}{2}w^2T)}{|w|\sqrt{T}}\right) -= -1-\Phi\left(\frac{|w|\sqrt{T}}{2}\right) -= -\Phi\left(-\frac{|w|\sqrt{T}}{2}\right). -$$ - -Therefore - -$$ -p(\theta^{-1})=\tfrac{1}{2}(p_A+p_B)=\Phi\left(-\tfrac{|w|\sqrt{T}}{2}\right), - -$$ -which is {eq}`bhs_detection_closed`. - -```{solution-end} -``` - -```{exercise} -:label: dov_ex9 - -Using the formulas for $w(\theta)$ in {eq}`bhs_w_formulas` and the definition of discounted entropy - -$$ -\eta = \frac{\beta}{1-\beta}\cdot \frac{w(\theta)^2}{2}, -$$ - -show that holding $\eta$ fixed across the random-walk and trend-stationary consumption specifications implies the mapping {eq}`bhs_theta_cross_model`. - -Specialize your result to the case $\sigma_\varepsilon^{\text{TS}} = \sigma_\varepsilon^{\text{RW}}$ and interpret the role of $\rho$. -``` - -```{solution-start} dov_ex9 -:class: dropdown -``` - -Because $\eta$ depends on $\theta$ only through $w(\theta)^2$, holding $\eta$ fixed across models is equivalent to holding $|w(\theta)|$ fixed. - -Using {eq}`bhs_w_formulas`, - -$$ -|w_{\text{RW}}(\theta_{\text{RW}})| -= -\frac{\sigma_\varepsilon^{\text{RW}}}{(1-\beta)\theta_{\text{RW}}}, -\qquad -|w_{\text{TS}}(\theta_{\text{TS}})| -= -\frac{\sigma_\varepsilon^{\text{TS}}}{(1-\beta\rho)\theta_{\text{TS}}}. -$$ - -Equating these magnitudes and solving for $\theta_{\text{TS}}$ gives - -$$ -\theta_{\text{TS}} -= -\left(\frac{\sigma_\varepsilon^{\text{TS}}}{\sigma_\varepsilon^{\text{RW}}}\right) -\frac{1-\beta}{1-\beta\rho}\theta_{\text{RW}}, -$$ - -which is {eq}`bhs_theta_cross_model`. - -If $\sigma_\varepsilon^{\text{TS}}=\sigma_\varepsilon^{\text{RW}}$, then - -$$ -\theta_{\text{TS}}=\frac{1-\beta}{1-\beta\rho}\theta_{\text{RW}}. -$$ - -Since $\rho\in(0,1)$ implies $1-\beta\rho > 1-\beta$, the ratio $(1-\beta)/(1-\beta\rho)$ is less than one. - -To hold entropy fixed, the trend-stationary model therefore requires a smaller $\theta$ (i.e., a cheaper distortion and stronger robustness) than the random-walk model. - -```{solution-end} -``` - -```{exercise} -:label: dov_ex10 - -For type II (multiplier) preferences under random-walk consumption growth, derive the compensating-variation formulas in {eq}`bhs_type2_rw_decomp`. - -In particular, derive - -1. the *risk* term by comparing the stochastic economy to a deterministic consumption path with the same mean level of consumption (Lucas's thought experiment), and -2. the *uncertainty* term by comparing a type II agent with parameter $\theta$ to the expected-utility case $\theta=\infty$, holding the stochastic environment fixed. -``` - -```{solution-start} dov_ex10 -:class: dropdown -``` - -Write the random walk as - -$$ -c_t = c_0 + t\mu + \sigma_\varepsilon\sum_{j=1}^t \varepsilon_j -$$ - -with $\varepsilon_j\stackrel{iid}{\sim}\mathcal{N}(0,1)$. - -**Risk term:** - -The mean level of consumption is - -$$ -E[C_t]=E[e^{c_t}]=\exp(c_0+t\mu+\tfrac{1}{2}t\sigma_\varepsilon^2), -$$ - -so the deterministic path with the same mean levels is - -$$ -\bar c_t = c_0 + t(\mu+\tfrac{1}{2}\sigma_\varepsilon^2). -$$ - -Under expected log utility ($\theta=\infty$), discounted expected utility is - -$$ -\sum_{t\geq 0}\beta^t E[c_t] -= -\frac{c_0}{1-\beta} + \frac{\beta\mu}{(1-\beta)^2}, - -$$ - -while for the deterministic mean-level path it is - -$$ -\sum_{t\geq 0}\beta^t \bar c_t -= -\frac{c_0}{1-\beta} + \frac{\beta(\mu+\tfrac{1}{2}\sigma_\varepsilon^2)}{(1-\beta)^2}. -$$ - -If we reduce initial consumption by $\Delta c_0^{risk}$ (so $\bar c_t$ shifts down by $\Delta c_0^{risk}$ for all $t$), utility falls by $\Delta c_0^{risk}/(1-\beta)$. - -Equating the two utilities gives - -$$ -\frac{\Delta c_0^{risk}}{1-\beta} -= -\frac{\beta(\tfrac{1}{2}\sigma_\varepsilon^2)}{(1-\beta)^2} -\quad\Rightarrow\quad -\Delta c_0^{risk}=\frac{\beta\sigma_\varepsilon^2}{2(1-\beta)}. -$$ - -**Uncertainty term:** - -For type II multiplier preferences, the minimizing distortion is a Gaussian mean shift with parameter $w$ and per-period relative entropy $\tfrac{1}{2}w^2$. - -Under the distorted model, $E[\varepsilon]=w$, so - -$$ -E[c_t]=c_0+t(\mu+\sigma_\varepsilon w). -$$ - -Plugging this into the type II objective (and using $E_t[g\log g]=\tfrac{1}{2}w^2$) gives the discounted objective as a function of $w$: - -$$ -J(w) -= -\sum_{t\geq 0}\beta^t\Bigl(c_0+t(\mu+\sigma_\varepsilon w)\Bigr) -+ -\sum_{t\geq 0}\beta^{t+1}\theta\cdot\frac{w^2}{2}. -$$ - -Using $\sum_{t\geq0}\beta^t=1/(1-\beta)$ and $\sum_{t\geq0}t\beta^t=\beta/(1-\beta)^2$, - -$$ -J(w) -= -\frac{c_0}{1-\beta} -+ -\frac{\beta(\mu+\sigma_\varepsilon w)}{(1-\beta)^2} -+ -\frac{\beta\theta}{1-\beta}\cdot\frac{w^2}{2}. -$$ - -Minimizing over $w$ yields - -$$ -0=\frac{\partial J}{\partial w} -= -\frac{\beta\sigma_\varepsilon}{(1-\beta)^2} -+ -\frac{\beta\theta}{1-\beta}w -\quad\Rightarrow\quad -w^*=-\frac{\sigma_\varepsilon}{(1-\beta)\theta}, -$$ - -which matches {eq}`bhs_w_formulas`. - -Substituting $w^*$ back in gives - -$$ -J(w^*) -= -\frac{c_0}{1-\beta} -+ -\frac{\beta\mu}{(1-\beta)^2} --\frac{\beta\sigma_\varepsilon^2}{2(1-\beta)^3\theta}. -$$ - -When $\theta=\infty$ (no model uncertainty), the last term disappears. -Thus the utility gain from removing model uncertainty at fixed $(\mu,\sigma_\varepsilon)$ is - -$$ -\beta\sigma_\varepsilon^2/[2(1-\beta)^3\theta]. -$$ - -To offset this by a permanent upward shift in initial log consumption, we need - -$$ -\Delta c_0^{uncertainty}/(1-\beta)=\beta\sigma_\varepsilon^2/[2(1-\beta)^3\theta], -$$ - -so - -$$ -\Delta c_0^{uncertainty} -= -\frac{\beta\sigma_\varepsilon^2}{2(1-\beta)^2\theta}. -$$ - -Together these reproduce {eq}`bhs_type2_rw_decomp`. - -```{solution-end} -``` - -```{exercise} -:label: dov_ex11 - -Derive the trend-stationary risk compensation $\Delta c_0^{risk,ts}$ in {eq}`bhs_ts_compensations`. - -For the trend-stationary model with $\tilde c_{t+1} - \zeta = \rho(\tilde c_t - \zeta) + \sigma_\varepsilon\varepsilon_{t+1}$, where $\tilde c_t = c_t - \mu t$, compute the risk compensation $\Delta c_0^{risk,ts}$ by comparing expected log utility under the stochastic plan to the deterministic certainty-equivalent path, and show that - -$$ -\Delta c_0^{risk,ts} = \frac{\beta\sigma_\varepsilon^2}{2(1-\beta\rho^2)}. -$$ - -*Hint:* You will need $\operatorname{Var}(z_t) = \sigma_\varepsilon^2(1 + \rho^2 + \cdots + \rho^{2(t-1)})$ and the formula $\sum_{t \geq 1}\beta^t \sum_{j=0}^{t-1}\rho^{2j} = \frac{\beta}{(1-\beta)(1-\beta\rho^2)}$. -``` - -```{solution-start} dov_ex11 -:class: dropdown -``` - -Under the trend-stationary model with $z_0 = 0$, $c_t = c_0 + \mu t + z_t$ and $E[c_t] = c_0 + \mu t$ (since $E[z_t] = 0$). - -The deterministic certainty-equivalent path matches $E[C_t] = \exp(c_0 + \mu t + \frac{1}{2}\operatorname{Var}(z_t))$, so its log is $c_0^{ce} + \mu t + \frac{1}{2}\operatorname{Var}(z_t)$. - -Under expected log utility ($\theta = \infty$), the value of the stochastic plan is - -$$ -\sum_{t \geq 0}\beta^t E[c_t] = \frac{c_0}{1-\beta} + \frac{\beta\mu}{(1-\beta)^2}. -$$ - -The value of the certainty-equivalent path (matching mean levels) starting from $c_0 - \Delta c_0^{risk}$ is - -$$ -\sum_{t \geq 0}\beta^t \bigl[c_0 - \Delta c_0^{risk} + \mu t + \tfrac{1}{2}\operatorname{Var}(z_t)\bigr]. -$$ - -Since $\operatorname{Var}(z_t) = \sigma_\varepsilon^2 \sum_{j=0}^{t-1}\rho^{2j}$, the extra term sums to - -$$ -\sum_{t \geq 1}\beta^t \cdot \frac{\sigma_\varepsilon^2}{2}\sum_{j=0}^{t-1}\rho^{2j} -= \frac{\sigma_\varepsilon^2}{2}\cdot\frac{\beta}{(1-\beta)(1-\beta\rho^2)}. -$$ - -Equating values and solving: - -$$ -\frac{\Delta c_0^{risk}}{1-\beta} = \frac{\beta\sigma_\varepsilon^2}{2(1-\beta)(1-\beta\rho^2)} -\quad\Rightarrow\quad -\Delta c_0^{risk,ts} = \frac{\beta\sigma_\varepsilon^2}{2(1-\beta\rho^2)}. -$$ - -The uncertainty compensation follows from the value function: $\Delta c_0^{unc,ts,II} = \frac{\beta\sigma_\varepsilon^2}{2(1-\beta\rho)^2\theta}$, with the $(1-\beta)$ factors replaced by $(1-\beta\rho)$ because the worst-case mean shift scales with $1/(1-\beta\rho)$ rather than $1/(1-\beta)$. - -```{solution-end} -``` diff --git a/lectures/risk_aversion_or_mistaken_beliefs.md b/lectures/risk_aversion_or_mistaken_beliefs.md deleted file mode 100644 index c8cce6826..000000000 --- a/lectures/risk_aversion_or_mistaken_beliefs.md +++ /dev/null @@ -1,1831 +0,0 @@ ---- -jupytext: - text_representation: - extension: .md - format_name: myst -kernelspec: - display_name: Python 3 - language: python - name: python3 ---- - -(risk_aversion_or_mistaken_beliefs)= -```{raw} html - -``` - -# Risk Aversion or Mistaken Beliefs? - -## Overview - -This lecture explores how *risk aversion* and *mistaken beliefs* are confounded in asset pricing data. - -In a rational expectations equilibrium containing a risk-averse representative investor, higher mean returns compensate for higher risks. - -But in a non-rational expectations model in which a representative investor holds beliefs that differ from "the econometrician's", observed average returns depend on *both* risk aversion *and* misunderstood return distributions. - -```{note} -Whether beliefs are 'correct' or 'wrong' is itself subjective -- it depends on an observer's point of view. -``` - -Wrong beliefs contribute what look like "stochastic discount factor shocks" when viewed from the perspective of an econometrician who trusts his model. - -Such divergent beliefs can potentially explain what look like countercyclical risk price from the perpective of someone who trusts the -econometrician's model. - -A key building block of this model will be an econometrician's model that takes the form of a linear state-space model driven by Gaussian disturbances. - -This model will play two key roles: - -* it forms the perspective from which 'mistaken' beliefs and their consequences are viewed -* it forms the 'baseline' model of a dubious representative agent who distrusts it and wants to value assets payoffs by using alternative models that -seem to fit the historical data about as well as does the 'baseline' model. - -```{note} -When we discuss the setup with a twisted entry ball below, the econometrician's model will be one of *two* baseline models that the distrustful agent is concerned about. -``` - -We'll formalize different beliefs in terms of divergent probability distributions. - -It is convenient to characterize those differences in terms of a likelihood ratio process, the object studied in this quantecon lecture -{doc}`likelihood_ratio_process`. - -Thus, we'll organize this lecture around a single mathematical device, namely, a **likelihood ratio**, a non-negative random variable with unit mean that twists one probability distribution into another. - -Likelihood ratios, equivalently multiplicative martingale increments, appear in at least four distinct roles in modern asset pricing: - -| Probability | Likelihood ratio | Describes | -|:--------------|:----------------------------------|:----------------------| -| Econometric | $1$ (no twist) | macro risk factors | -| Risk neutral | $m_{t+1}^\lambda$ | prices of risks | -| Mistaken | $m_{t+1}^w$ | experts' forecasts | -| Doubtful | $m_{t+1} \in \mathcal{M}$ | misspecification fears| - -Each of the key likelihood ratios in this lecture takes the log-normal form -$m_{t+1}^b = \exp(-b_t^\top \varepsilon_{t+1} - \frac{1}{2} b_t^\top b_t)$ -with $b_t = 0$, $\lambda_t$, $w_t$, or a worst-case distortion. - -The lecture draws primarily on three lines of work: - -1. {cite:t}`Lucas1978` and {cite:t}`hansen1983stochastic`: a representative investor's risk - aversion generates a likelihood ratio that prices risks. -2. {cite:t}`piazzesi2015trend`: survey data on professional forecasters - decompose the likelihood ratio into a smaller risk price and a belief distortion. -3. {cite:t}`hansen2020twisted` and {cite:t}`szoke2022estimating`: robust control theory - constructs twisted probability models from tilted discounted entropy balls to - price model uncertainty, generating state-dependent uncertainty prices that - explain puzzling term-structure movements. - -We start with some standard imports: - -```{code-cell} ipython3 -import numpy as np -import matplotlib.pyplot as plt -import pandas as pd -from scipy.linalg import solve_discrete_lyapunov -from numpy.linalg import eigvals, norm -from scipy.stats import norm as normal_dist -``` - -## Likelihood ratios and twisted densities - - -Let $\varepsilon$ denote a vector of risks to be taken and priced. - -Under the econometrician's probability model, $\varepsilon$ has a standard multivariate normal density: - -```{math} -:label: eq_baseline - -\phi(\varepsilon) \propto \exp \left(-\frac{1}{2} \varepsilon^\top\varepsilon\right), \qquad \varepsilon \sim \mathcal{N}(0, I) -``` - -To twist this baseline density into another one, we multiply it by a non-negative random variable with unit mean called a **likelihood ratio**: - -```{math} -:label: eq_lr - -m(\varepsilon) = \exp \left(-\lambda^\top\varepsilon - \frac{1}{2} \lambda^\top\lambda\right) \geq 0 -``` - -The quadratic term $-\frac{1}{2}\lambda^\top\lambda$ in the exponent is precisely what guarantees $E m(\varepsilon) = 1$ when the mathematical expectation $E$ is taken with respect to the econometrician's model. - -Multiplying the baseline density by this likelihood ratio produces the **twisted density**: - -```{math} -:label: eq_twisted - -\hat\phi(\varepsilon) = m(\varepsilon) \phi(\varepsilon) \propto \exp \left(-\frac{1}{2}(\varepsilon + \lambda)^\top(\varepsilon + \lambda)\right) -``` - -Completing the square in the exponent reveals that this is a $\mathcal{N}(-\lambda, I)$ density. - -The likelihood ratio has shifted the mean of $\varepsilon$ from $0$ to $-\lambda$ while preserving the covariance. - -We will see this idea repeatedly in different contexts. - -````{exercise} -:label: lr_exercise_1 - -Verify that: - -1. $E m(\varepsilon) = 1$ by computing $\int m(\varepsilon) \phi(\varepsilon) d\varepsilon$ using the moment-generating function of a standard normal. -2. The twisted density $\hat\phi(\varepsilon) = m(\varepsilon) \phi(\varepsilon)$ is indeed $\mathcal{N}(-\lambda, I)$ by combining exponents: - -$$ -m(\varepsilon) \phi(\varepsilon) \propto \exp \left(-\lambda^\top\varepsilon - \tfrac{1}{2}\lambda^\top\lambda\right) \exp \left(-\tfrac{1}{2}\varepsilon^\top\varepsilon\right) = \exp \left(-\tfrac{1}{2}\bigl[\varepsilon^\top\varepsilon + 2\lambda^\top\varepsilon + \lambda^\top\lambda\bigr]\right) -$$ - -and complete the square to obtain $-\frac{1}{2}(\varepsilon + \lambda)^\top(\varepsilon + \lambda)$. - -```` - -````{solution} lr_exercise_1 -:class: dropdown - -For part 1, write $E m(\varepsilon) = \int \exp(-\lambda^\top\varepsilon - \tfrac{1}{2}\lambda^\top\lambda) \phi(\varepsilon) d\varepsilon = \exp(-\tfrac{1}{2}\lambda^\top\lambda) E[\exp(-\lambda^\top\varepsilon)]$. - -The moment-generating function of $\varepsilon \sim \mathcal{N}(0,I)$ (or expectation of the log-normal random variable) gives $E[\exp(-\lambda^\top\varepsilon)] = \exp(\tfrac{1}{2}\lambda^\top\lambda)$. - -So $E m(\varepsilon) = \exp(-\tfrac{1}{2}\lambda^\top\lambda)\exp(\tfrac{1}{2}\lambda^\top\lambda) = 1$. - -For part 2, combine the exponents: - -$$ -m(\varepsilon) \phi(\varepsilon) \propto \exp \left(-\tfrac{1}{2}\varepsilon^\top\varepsilon - \lambda^\top\varepsilon - \tfrac{1}{2}\lambda^\top\lambda\right) -$$ - -Recognise the argument as $-\tfrac{1}{2}(\varepsilon^\top\varepsilon + 2\lambda^\top\varepsilon + \lambda^\top\lambda) = -\tfrac{1}{2}(\varepsilon + \lambda)^\top(\varepsilon + \lambda)$. - -This is the kernel of a $\mathcal{N}(-\lambda, I)$ density. - -```` - -### Relative entropy - -How far apart are the baseline and twisted densities? - -The **relative entropy** (Kullback-Leibler divergence) answers this question with a single number: - -```{math} -:label: eq_entropy - -E\bigl[m(\varepsilon)\log m(\varepsilon)\bigr] = \frac{1}{2} \lambda^\top\lambda -``` - -Because it equals half the squared length of $\lambda$, larger distortion vectors correspond to greater statistical distance between the two models. - -The vector $\lambda$ is the key object. - -Depending on context it represents *risk prices*, *belief distortions*, or *worst-case mean perturbations* under model uncertainty. - -For illustration, consider the scalar case $\varepsilon \in \mathbb{R}$ with $\lambda = 1.5$. - -```{code-cell} ipython3 -ε = np.linspace(-5, 5, 500) -λ_val = 1.5 - -ϕ_base = normal_dist.pdf(ε, 0, 1) -m_lr = np.exp(-λ_val * ε - 0.5 * λ_val**2) -ϕ_twist = m_lr * ϕ_base - -fig, axes = plt.subplots(1, 3, figsize=(14, 4)) - -axes[0].plot(ε, ϕ_base, 'steelblue', lw=2) -axes[0].set_xlabel(r"$\varepsilon$") - -axes[1].plot(ε, m_lr, 'firebrick', lw=2) -axes[1].axhline(1, color='grey', lw=0.8, ls='--') -axes[1].set_xlabel(r"$\varepsilon$") - -axes[2].plot(ε, ϕ_base, 'steelblue', lw=2, - ls='--', alpha=0.6, label='Baseline') -axes[2].plot(ε, ϕ_twist, 'firebrick', lw=2, - label='Twisted') -axes[2].set_xlabel(r"$\varepsilon$") -axes[2].legend() - -axes[0].set_ylabel("Density") -axes[1].set_ylabel("Likelihood ratio") -axes[2].set_ylabel("Density") -plt.tight_layout() -plt.show() -``` - -The left panel shows the baseline $\mathcal{N}(0,1)$ density. - -The middle panel shows the likelihood ratio $m(\varepsilon)$, which up-weights negative $\varepsilon$ values and down-weights positive ones when $\lambda > 0$. - -The right panel shows the resulting twisted density $\hat\phi(\varepsilon) = \mathcal{N}(-\lambda, 1)$. - - -## The econometrician's state-space model - -The econometrician works with a linear Gaussian state-space system at a *monthly* frequency. - -The state $x_t$, an augmented $n \times 1$ vector, evolves according to: - -```{math} -:label: eq_state - -x_{t+1} = A x_t + C \varepsilon_{t+1} -``` - -The econometrician observes $y_{t+1}$, which is a noisy linear function of the state and the same shocks: - -```{math} -:label: eq_obs - -y_{t+1} = D x_t + G \varepsilon_{t+1} -``` - -The $k \times 1$ shock vector driving both equations is i.i.d. standard normal: - -```{math} -:label: eq_shocks - -\varepsilon_{t+1} \sim \mathcal{N}(0, I) -``` - -To accommodate constant terms easily, we assume that the first entry in the state vector is a constant $1$ so that - -$$ -x_t = \begin{bmatrix} 1 \\ \check{x}_t \end{bmatrix}, \qquad -A = \begin{bmatrix} 1 & 0 \\ 0 & \check{A} \end{bmatrix}, \qquad -C = \begin{bmatrix} 0 \\ \check{C} \end{bmatrix} -$$ - -where $\check{A}$ is a stable matrix, $\check{C}$ is square and invertible, and the first component of $x_0$ is $1$. - -With this convention, the number of shocks equals the dimension of the stochastic block: $k = n - 1$. - -Whenever we back out distortion coefficient matrices from alternative transition matrices, we invert only the lower block $\check{C}$ and compare the lower rows of the augmented transition matrices, not the full augmented matrix $C$. - -Whenever we refer to stability below, we mean stability of the stochastic block $\check{A}$ (or its distorted counterpart). - -The observation $y_{t+1}$ represents consumption growth, $c_{t+1} - c_t = D x_t + G \varepsilon_{t+1}$. - -Separately, the risk-free one-period interest rate is a linear function of the augmented state: - -$$ -r_t = \bar{r}^\top x_t -$$ - -```{figure} /_static/lecture_specific/risk_aversion_or_mistaken_beliefs/fig2_tom.png -The econometrician's model: estimated state dynamics. -``` - - -## Asset pricing with likelihood ratios - -### Risk-neutral rational expectations pricing - -The simplest benchmark is a risk-neutral representative investor with rational expectations, for whom the stock price $p_t$ (the ex-dividend market value of a claim to the stream $\{d_{t+j}\}_{j=1}^\infty$) is simply the discounted expected payoff: - -$$ -p_t = \exp(-r_t) E_t(p_{t+1} + d_{t+1}) -$$ - -The same logic applies maturity by maturity to the term structure: a zero-coupon risk-free claim to one dollar at time $t+n$ is priced by iterating the one-period discounting: - -```{math} -:label: eq_rn_recursion - -p_t(1) = \exp(-r_t), \qquad p_t(n+1) = \exp(-r_t) E_t p_{t+1}(n), \qquad p_t(n) = \exp(\bar{A}_n^{RN} + B_n^{RN} x_t) -``` - -The last equality states that bond prices take an **exponential-affine** form in the state. - -This is a consequence of the linear Gaussian structure and can be verified by substituting the guess into the recursion and matching coefficients (see {ref}`Exercise 3 ` in {doc}`Affine Models of Asset Prices `). - -These formulas work "pretty well" for conditional means but less well for conditional variances, i.e. the Shiller *volatility puzzles*. - -### Modern asset pricing: adding risk aversion - -It would be convenient if versions of the same pricing formulas worked even when investors are risk averse or hold distorted beliefs. - -The likelihood ratio makes this possible. - -We now promote the static vector $\lambda$ from {eq}`eq_lr` to a *state-dependent* risk price vector. - -With a slight abuse of notation, we now let $\lambda$ denote a $k \times n$ **matrix** of risk price coefficients, so that $\lambda_t = \lambda x_t$ is a $k \times 1$ vector at each date $t$. - -In the code below, this matrix is the parameter `Λ`. - -The likelihood ratio increment is - -```{math} -:label: eq_sdf_lr - -m_{t+1}^\lambda = \exp \left(-\lambda_t^\top \varepsilon_{t+1} - \frac{1}{2} \lambda_t^\top\lambda_t\right), \qquad \lambda_t = \lambda x_t -``` - -with $E_t m_{t+1}^\lambda = 1$ and $m_{t+1}^\lambda \geq 0$. - -The likelihood ratio $m_{t+1}^\lambda$ distorts the conditional distribution of $\varepsilon_{t+1}$ from $\mathcal{N}(0,I)$ to $\mathcal{N}(-\lambda x_t, I)$. - -Covariances of returns with $m_{t+1}^\lambda$ affect mean returns. - -This is the channel through which risk aversion prices risks. - -With this device, *modern asset pricing* replaces the ordinary conditional expectation with one that is tilted by the likelihood ratio. - -For stocks, the Lucas-Hansen pricing equation discounts the next-period payoff under the distorted measure: - -```{math} -:label: eq_stock_lr - -p_t = \exp(-r_t) E_t\bigl(m_{t+1}^\lambda (p_{t+1} + d_{t+1})\bigr) -``` - -For the term structure, Dai-Singleton-Backus-Zin pricing applies the same distortion recursively across maturities: - -```{math} -:label: eq_ts_lr - -p_t(1) = \exp(-r_t), \qquad p_t(n+1) = \exp(-r_t) E_t\bigl(m_{t+1}^\lambda p_{t+1}(n)\bigr), \qquad p_t(n) = \exp(\bar{A}_n + B_n x_t) -``` - -The coefficients $\bar{A}_n$, $B_n$ here differ from the risk-neutral coefficients $\bar{A}_n^{RN}$, $B_n^{RN}$ in {eq}`eq_rn_recursion` because the likelihood ratio modifies the recursion. - -### Risk-neutral dynamics - -The risk-neutral representation implies **twisted dynamics**. - -Under the twisted measure, define $\tilde\varepsilon_{t+1} := \varepsilon_{t+1} + \lambda_t = \varepsilon_{t+1} + \lambda x_t$. - -Since $\varepsilon_{t+1} \sim \mathcal{N}(0, I)$ under the econometrician's measure, $\tilde\varepsilon_{t+1}$ has mean $\lambda x_t$ and is *not* standard normal under that measure. - -However, the likelihood ratio $m_{t+1}^\lambda \propto \exp\bigl(-(\lambda x_t)^\top \varepsilon_{t+1} - \tfrac{1}{2}\|\lambda x_t\|^2\bigr)$ tilts the probability measure in exactly the right way to absorb this shift. - -By the standard exponential tilting result for Gaussian models, $\tilde\varepsilon_{t+1} \sim \mathcal{N}(0, I)$ under the risk-neutral measure. - -Substituting $\varepsilon_{t+1} = \tilde\varepsilon_{t+1} - \lambda x_t$ into {eq}`eq_state` gives: - -```{math} -:label: eq_rn_dynamics - -x_{t+1} = (A - C\lambda) x_t + C \tilde\varepsilon_{t+1}, \qquad \tilde\varepsilon_{t+1} \sim \mathcal{N}(0,I) -``` - -The dependence of $\lambda_t = \lambda x_t$ on the state modifies the dynamics relative to the econometrician's model. - -### Expectation under a twisted distribution - -A useful notational shorthand captures the connection between the two measures: the expected value of $y_{t+1}$ under the twisted distribution can be computed as a likelihood-ratio-weighted average under the original distribution: - -$$ -\tilde{E}_t y_{t+1} = E_t m_{t+1} y_{t+1} -$$ - -With this notation, the term structure recursion under risk-neutral dynamics takes a particularly clean form: - -$$ -p_t(1) = \exp(-r_t), \qquad p_t(n+1) = \exp(-r_t) \tilde{E}_t p_{t+1}(n), \qquad p_t(n) = \exp(\tilde{\bar{A}}_n + \tilde{B}_n x_t) -$$ - -These are the same formulas as rational-expectations asset pricing, but expectations are taken with respect to a probability measure *twisted by risk aversion*. - -The derivation of the recursive bond price coefficients is the same as in {ref}`Exercise 3 ` of {doc}`Affine Models of Asset Prices `, applied here under the risk-neutral dynamics {eq}`eq_rn_dynamics`. - -Now let's implement the state-space model and its asset pricing implications. - -```{code-cell} ipython3 -class LikelihoodRatioModel: - """ - Gaussian state-space model with an augmented constant state. - - x_{t+1} = A x_t + C ε_{t+1}, ε ~ N(0,I), x_t[0] = 1 - y_{t+1} = D x_t + G ε_{t+1} - r_t = r_bar'x_t, λ_t = Λ x_t - """ - - def __init__(self, A, C, D, G, r_bar, Λ): - self.A = np.atleast_2d(A).astype(float) - self.C = np.atleast_2d(C).astype(float) - self.D = np.atleast_2d(D).astype(float) - self.G = np.atleast_2d(G).astype(float) - self.r_bar = np.asarray(r_bar, dtype=float) - self.Λ = np.atleast_2d(Λ).astype(float) - self.n = self.A.shape[0] - self.k = self.C.shape[1] - # risk-neutral dynamics - self.A_Q = self.A - self.C @ self.Λ - self.A_core = self.A[1:, 1:] - self.A_Q_core = self.A_Q[1:, 1:] - - def short_rate(self, x): - return self.r_bar @ x - - def risk_prices(self, x): - return self.Λ @ x - - def relative_entropy(self, x): - λ = self.risk_prices(x) - return 0.5 * λ @ λ - - def bond_coefficients(self, n_max): - """Bond price coefficients: log p_t(n) = A_bar_n + B_n' x_t.""" - A_bar = np.zeros(n_max + 1) - B = np.zeros((n_max + 1, self.n)) - B[1] = -self.r_bar - CCt = self.C @ self.C.T - for nn in range(1, n_max): - A_bar[nn + 1] = A_bar[nn] + 0.5 * B[nn] @ CCt @ B[nn] - B[nn + 1] = self.A_Q.T @ B[nn] - self.r_bar - return A_bar, B - - def yields(self, x, n_max): - """Yield curve: y_t(n) = -(A_bar_n + B_n'x_t) / n.""" - A_bar, B = self.bond_coefficients(n_max) - return np.array([(-A_bar[n] - B[n] @ x) / n - for n in range(1, n_max + 1)]) - - def simulate(self, x0, T, rng=None): - """Simulate under the econometrician's model.""" - if rng is None: - rng = np.random.default_rng(0) - X = np.zeros((T + 1, self.n)) - X[0] = x0 - for t in range(T): - X[t + 1] = self.A @ X[t] + self.C @ rng.standard_normal(self.k) - X[t + 1, 0] = 1.0 - return X - - def simulate_twisted(self, x0, T, rng=None): - """Simulate under the risk-neutral (twisted) model.""" - if rng is None: - rng = np.random.default_rng(0) - X = np.zeros((T + 1, self.n)) - X[0] = x0 - for t in range(T): - X[t + 1] = self.A_Q @ X[t] + self.C @ rng.standard_normal(self.k) - X[t + 1, 0] = 1.0 - return X - - -def augment_state_space(A_core, C_core, D_core, G, r_bar_core, r_const=0.0): - """Add a leading constant state x0_t = 1 to a linear Gaussian model.""" - A_core = np.atleast_2d(A_core).astype(float) - C_core = np.atleast_2d(C_core).astype(float) - D_core = np.atleast_2d(D_core).astype(float) - G = np.atleast_2d(G).astype(float) - r_bar_core = np.asarray(r_bar_core, dtype=float) - - n_core = A_core.shape[0] - k = C_core.shape[1] - - A = np.eye(n_core + 1) - A[1:, 1:] = A_core - - C = np.zeros((n_core + 1, k)) - C[1:, :] = C_core - - D = np.hstack([np.zeros((D_core.shape[0], 1)), D_core]) - r_bar = np.concatenate(([r_const], r_bar_core)) - return A, C, D, G, r_bar - - -def augment_state(x_core): - """Augment a stochastic state vector with a leading constant 1.""" - return np.concatenate(([1.0], np.asarray(x_core, dtype=float))) -``` - -### Example: a two-factor model - -We set up a two-factor model with a persistent "level" factor and a -less persistent "slope" factor, mimicking the U.S. yield curve. - -```{code-cell} ipython3 -A_core = np.array([[0.97, -0.03], - [0.00, 0.90]]) - -C_core = np.array([[0.007, 0.000], - [0.000, 0.010]]) - -D_core = np.array([[0.5, 0.3]]) # consumption growth loading -G = np.array([[0.004, 0.003]]) # consumption shock loading - -r_const = 0.004 # short rate intercept (~4.8% annual) -r_bar_core = np.array([0.06, 0.04]) # short rate loading - -# Augment with a leading constant state -A, C, D, G, r_bar = augment_state_space( - A_core, C_core, D_core, G, r_bar_core, r_const=r_const -) - -# Risk prices: no constant loading in this benchmark calibration -Λ = np.hstack([ - np.zeros((2, 1)), - np.array([[-3.0, 0.0], - [ 0.0, -6.0]]) -]) - -model = LikelihoodRatioModel(A, C, D, G, r_bar, Λ) - -print(f"Eigenvalues of check(A): {eigvals(model.A_core).round(4)}") -print(f"Eigenvalues of check(A_Q): {eigvals(model.A_Q_core).round(4)}") -assert all(np.abs(eigvals(model.A_Q_core)) < 1), "check(A_Q) must be stable!" -``` - -The yield curve's shape depends on the current state $x_t$. - -We evaluate the model at three representative states to see how the two factors, level and slope, generate upward-sloping, relatively flat, and inverted yield curves. - -```{code-cell} ipython3 -n_max = 120 -maturities = np.arange(1, n_max + 1) - -states = { - "Normal (upward-sloping)": augment_state(np.array([-0.005, -0.015])), - "Relatively flat": augment_state(np.array([ 0.008, -0.005])), - "Inverted": augment_state(np.array([ 0.020, 0.010])), -} - -fig, ax = plt.subplots(figsize=(9, 5)) -for label, x in states.items(): - y = model.yields(x, n_max) * 1200 # annualise (monthly, x1200) - ax.plot(maturities, y, lw=2, label=label) - -ax.set_xlabel("Maturity (months)") -ax.set_ylabel("Yield (annualised %)") -ax.legend() -plt.tight_layout() -plt.show() -``` - -### Econometrician's model vs. risk-neutral model - -The econometrician estimates state dynamics under the **physical measure** $P$, which governs the actual data-generating process: - -$$ -x_{t+1} = A x_t + C \varepsilon_{t+1}, \qquad \varepsilon_{t+1} \sim \mathcal{N}(0,I) \text{ under } P -$$ - -The **risk-neutral measure** $Q$ is the probability distribution twisted by the likelihood ratio $m_{t+1}^\lambda$. - -Under $Q$, the state evolves as - -$$ -x_{t+1} = A_Q x_t + C \tilde\varepsilon_{t+1}, \qquad \tilde\varepsilon_{t+1} \sim \mathcal{N}(0,I) \text{ under } Q -$$ - -where $A_Q = A - C\lambda$. - -The two measures agree on which events are possible but disagree on their probabilities. - -The physical measure $P$ governs forecasting and estimation, while the risk-neutral measure $Q$ governs asset pricing. - -```{code-cell} ipython3 -print("A:\n", model.A) -print("\nA_Q = A - CΛ:\n", model.A_Q) -print(f"\nEigenvalues of check(A): {eigvals(model.A_core).round(4)}") -print(f"Eigenvalues of check(A_Q): {eigvals(model.A_Q_core).round(4)}") -``` - -To see the difference in action, we simulate both models from the same initial state using the same shock sequence. - -Both simulations draw the same standard normal random vectors, but the transition matrices $A$ and $A_Q$ govern how those shocks cumulate over time. - -```{code-cell} ipython3 -T = 300 -x0 = augment_state(np.array([0.01, 0.005])) -rng1 = np.random.default_rng(123) -rng2 = np.random.default_rng(123) # same seed for comparability - -X_econ = model.simulate(x0, T, rng=rng1) -X_rn = model.simulate_twisted(x0, T, rng=rng2) - -fig, axes = plt.subplots(2, 1, figsize=(10, 7), sharex=True) -for idx, (ax, lab) in zip([1, 2], zip(axes, ["Level factor", "Slope factor"])): - ax.plot(X_econ[:, idx], 'steelblue', lw=2, - label="Econometrician (P)") - ax.plot(X_rn[:, idx], 'firebrick', lw=2, - alpha=0.8, label="Risk-neutral (Q)") - ax.set_ylabel(lab) - ax.legend() - -axes[1].set_xlabel("Period") -plt.tight_layout() -plt.show() -``` - -Both factors are more persistent under $Q$ than under $P$: the eigenvalues of the stochastic block $\check{A}_Q$ are closer to unity than those of $\check{A}$. - -The risk-neutral paths (red) exhibit wider swings and slower mean reversion. - -This is because the negative risk prices $\lambda$ in our calibration make $A_Q = A - C\lambda$ larger, slowing the rate at which factors revert to zero. - -The gap between the $P$ and $Q$ dynamics is precisely what generates a term premium in bond yields, because long bonds are priced under $Q$, where risks look more persistent. - -## An identification challenge - -The risk price vector $\lambda_t = \lambda x_t$ can be interpreted as either: - -- a **risk price vector** expressing the representative agent's risk aversion, or -- the representative agent's **belief distortion** relative to the econometrician's - model. - -Because the pricing formulas {eq}`eq_stock_lr` to {eq}`eq_ts_lr` depend only on the composite $\lambda_t$, not on whether it reflects risk aversion or belief distortion, the two interpretations produce identical asset prices and econometric fits. - -> Relative to the model of a risk-averse representative investor with rational -> expectations, a model of a risk-neutral investor with appropriately mistaken -> beliefs produces *observationally equivalent* predictions. - -This insight was articulated by {cite:t}`HST_1999` and -{cite:t}`piazzesi2015trend`. - -To distinguish risk aversion from belief distortion, one needs either -*more information* (the PSS approach using survey data) or *more theory* -(the Hansen-Szőke robust control approach), or both (the {cite:t}`szoke2022estimating` approach). - -```{code-cell} ipython3 -x_test = augment_state(np.array([0.01, 0.005])) -y_risk_averse = model.yields(x_test, 60) * 1200 - -# Mistaken belief model -model_mistaken = LikelihoodRatioModel( - A=model.A_Q, C=C, D=D, G=G, - r_bar=r_bar, Λ=np.zeros_like(Λ) -) -y_mistaken = model_mistaken.yields(x_test, 60) * 1200 - -fig, ax = plt.subplots(figsize=(8, 5)) -ax.plot(np.arange(1, 61), y_risk_averse, 'steelblue', lw=2, - label='Risk averse + rational expectations') -ax.plot(np.arange(1, 61), y_mistaken, 'firebrick', lw=2, ls='--', - label='Risk neutral + mistaken beliefs') -ax.set_xlabel("Maturity (months)") -ax.set_ylabel("Yield (annualised %)") -ax.legend() -plt.tight_layout() -plt.show() -``` - -The two yield curves are identical. - -Without additional information (e.g., surveys of forecasters), we cannot tell them apart from asset price data alone. - - -## More information: experts' forecasts (PSS) - -### The PSS framework - -{cite:t}`piazzesi2015trend` (henceforth PSS) exploit data on professional forecasters' expectations to decompose the likelihood ratio into risk prices and belief distortions. - -Their setup posits: - -- The representative agent's risk aversion leads him to price risks - $\varepsilon_{t+1}$ with prices $\lambda_t^* = \lambda^* x_t$, where $\lambda^*$ is a $k \times n$ matrix. -- The representative agent has **twisted beliefs** $(A^*, C) = (A - C W^*, C)$ - relative to the econometrician's model $(A, C)$, where $W^*$ is a $k \times n$ matrix of belief distortion coefficients, so that $w_t^* = W^* x_t$. -- Professional forecasters use the twisted beliefs $(A^*, C)$ to answer - survey questions about their forecasts. - -### Estimation strategy - -PSS proceed in four steps: - -1. Use data $\{x_t\}_{t=0}^T$ to estimate the econometrician's model $A$, $C$. -2. Project experts' one-step-ahead forecasts $E_t^*[x_{t+1}]$ on $x_t$ to obtain - $E_t^*[x_{t+1}] = A^* x_t$ and interpret $A^*$ as incorporating belief - distortions. -3. Back out the mean distortion matrix from the stochastic block: - - $$ - W^* = -\check{C}^{-1}(A^*_{2:n,\cdot} - A_{2:n,\cdot}) - $$ - - so that $w_t^* = W^* x_t$ is the state-dependent mean shift applied to the - density of $\varepsilon_{t+1}$. (This requires $\check{C}$ to be invertible.) -4. Reinterpret the $\lambda$ estimated by the rational-expectations econometrician - as $\lambda = \lambda^* + W^*$, where $\lambda_t^* = \lambda^* x_t$ is the - (smaller) price of risk vector actually charged by the representative agent with - distorted beliefs. - -An econometrician who mistakenly imposes rational expectations estimates risk prices $\lambda_t = \lambda x_t$ that sum two parts: -- *smaller risk prices* $\lambda_t^* = \lambda^* x_t$ actually charged by the - representative agent with mistaken beliefs, and -- *conditional mean distortions* $w_t^* = W^* x_t$ of the risks $\varepsilon_{t+1}$ that - the twisted-beliefs representative agent's model displays relative to the - econometrician's. - -We illustrate this using a simple numerical example with the same two-factor structure as above. - -PSS find that experts perceive the level and slope of the yield curve to be *more persistent* than the econometrician's estimates imply. - -Hence we set up the numbers to reflect that finding, with the experts' subjective transition matrix $A^*$ having larger eigenvalues than the econometrician's $A$ - - -```{code-cell} ipython3 -A_econ_core = np.array([[0.97, -0.03], - [0.00, 0.90]]) - -A_star_core = np.array([[0.985, -0.025], # experts' subjective transition - [0.000, 0.955]]) - -C_mat_core = np.array([[0.007, 0.000], - [0.000, 0.010]]) - -A_econ, C_mat, _, _, _ = augment_state_space( - A_econ_core, C_mat_core, np.zeros((1, 2)), np.zeros((1, 2)), np.zeros(2) -) -A_star, _, _, _, _ = augment_state_space( - A_star_core, C_mat_core, np.zeros((1, 2)), np.zeros((1, 2)), np.zeros(2) -) - -# Belief distortion recovered from the stochastic block -W_star = -np.linalg.solve(C_mat[1:, :], A_star[1:, :] - A_econ[1:, :]) - -Λ_total = np.hstack([ - np.zeros((2, 1)), - np.array([[-3.0, 0.0], - [ 0.0, -6.0]]) -]) -Λ_true = Λ_total - W_star # true risk prices - -print("Belief distortion W*:\n", W_star.round(3)) -print("\nTotal risk prices Λ:\n", Λ_total.round(3)) -print("\nTrue risk prices Λ*:\n", Λ_true.round(3)) -``` - -```{code-cell} ipython3 -x_grid = np.linspace(-0.02, 0.04, 200) -fig, axes = plt.subplots(1, 2, figsize=(12, 5)) - -for i, (ax, lab) in enumerate(zip(axes, - ["Level factor risk price", "Slope factor risk price"])): - x_vals = np.ones((200, 3)) - x_vals[:, 1:] = 0.005 - x_vals[:, i + 1] = x_grid - - λ_total = np.array([Λ_total @ x for x in x_vals])[:, i] - λ_true = np.array([Λ_true @ x for x in x_vals])[:, i] - - ax.plot(x_grid, λ_total, 'steelblue', lw=2, - label=r"$\lambda_t$ (RE econometrician)") - ax.plot(x_grid, λ_true, 'seagreen', lw=2, - label=r"$\lambda^*_t$ (true risk price)") - ax.fill_between(x_grid, λ_true, λ_total, alpha=0.15, color='firebrick', - label=r"$w^*_t$ (belief distortion)") - ax.axhline(0, color='black', lw=0.5) - ax.set_xlabel(f"Factor $\\check{{x}}_{{{i+1},t}}$") - ax.set_ylabel(lab) - ax.legend() - -plt.tight_layout() -plt.show() -``` - -Subjective risk prices $\lambda^* x_t$ vary less than the $\lambda x_t$ estimated by the rational-expectations econometrician. - -However, PSS offer no explanation for *why* beliefs are distorted. - -Are they mistakes, ignorance of good econometrics, or something else? - -## A theory of belief distortions: robust control - -The standard justification for rational expectations treats it as the outcome of learning from an infinite history: least-squares learning converges to rational expectations. - -That argument requires agents to know correct functional forms and relies on a stochastic approximation argument that partitions dynamics into a fast part (justifying a law of large numbers) and a slow part (justifying an ODE). - -However, long intertemporal dependencies make *rates of convergence slow*. - -Good econometricians have limited data and only hunches about functional forms, and they fear that their fitted models are incorrect. - -An agent who is like a good econometrician: - -- has a parametric model estimated from limited data, -- acknowledges that many other specifications fit nearly as well, including other parameter - values, other functional forms, omitted variables, neglected nonlinearities, - and history dependencies, -- fears that one of those other models actually prevails, and -- seeks "good enough" decisions under *all* such alternative models, i.e. **robustness**. - -Robust control theory formalises this idea by having the agent optimally distort probability assessments toward a worst-case scenario, producing belief distortions that look like the "mistakes" identified by PSS but that arise from a coherent response to model uncertainty rather than from ignorance. - -### Hansen's dubious agent - -Inspired by robust control theory, consider a dubious investor who: - -- shares the econometrician's model $A$, $C$, $D$, $G$, -- expresses doubts by using a continuum of likelihood ratios to form a **discounted - entropy ball** of size $\eta$ around the econometrician's model, -- wants a valuation that is good for every model in the entropy ball, and -- constructs a *lower bound* on values and a *worst-case model* that attains it. - -Under the econometrician's linear Gaussian model with shocks $\varepsilon_{t+1} \sim \mathcal{N}(0,I)$: - -$$ -c_{t+1} - c_t = D x_t + G \varepsilon_{t+1}, \qquad x_{t+1} = A x_t + C \varepsilon_{t+1} -$$ - -the dubious agent's value function is - -$$ -V(x_0, c_0) := E \left[\sum_{t=0}^{\infty} \beta^t c_t \middle| x_0, c_0\right] = c_0 + \beta E \left[V(x_1, c_1) \middle| x_0, c_0\right] -$$ - -Note that the objective is *linear* in consumption. - -There is no concave utility function $u(c_t)$. - -All aversion to uncertainty here comes from the *worst-case model selection* (the $\min$ over likelihood ratios below), not from utility curvature. - -This separation is a key feature of the robust control approach: the agent expresses doubt through the entropy ball, rather than through a curved utility function. - -### The sequence problem - -The dubious agent solves a *min* problem in which a malevolent "nature" chooses the worst-case probability distortion subject to an entropy budget. - -Nature's instrument is a sequence of one-step likelihood ratios $m_{t+1}$, each of which distorts the conditional distribution of $\varepsilon_{t+1}$ given information at $t$. - -These increments cumulate into a date-$t$ likelihood ratio $M_t = \prod_{s=0}^{t-1} m_{s+1}$ (with $M_0 = 1$) that converts the econometrician's probability measure into the distorted one. - -The objective, evaluated under the econometrician's measure, weights each period's consumption by $M_t$: - -```{math} -:label: eq_hansen_seq - -J(x_0, c_0 \mid \eta) := \min_{\{m_{t+1}\}} E \left[\sum_{t=0}^{\infty} \beta^t M_t c_t \middle| x_0, c_0\right] -``` - -The minimisation is subject to three sets of constraints. - -First, the economy evolves according to the econometrician's model: - -$$ -c_{t+1} - c_t = D x_t + G \varepsilon_{t+1}, \qquad x_{t+1} = A x_t + C \varepsilon_{t+1} -$$ - -Second, nature's total probability distortion, measured by discounted entropy, must remain within a budget $\eta$: - -$$ -E \left[\sum_{t=0}^{\infty} \beta^t M_t E \left[m_{t+1}\log m_{t+1} \middle| x_t, c_t\right] \middle| x_0, c_0\right] \leq \eta -$$ - -Third, the incremental likelihood ratios must be valid probability distortions that cumulate multiplicatively: - -$$ -M_{t+1} = M_t m_{t+1}, \qquad E[m_{t+1} \mid x_t, c_t] = 1, \qquad M_0 = 1 -$$ - -The cumulative likelihood ratio $M_t = \prod_{s=0}^{t-1} m_{s+1}$ converts the original probability measure into the distorted one. - -The $M_t$ weighting ensures entropy is measured under the *distorted* measure and the $\beta^t$ discounting means future divergences are penalised less, admitting persistent alternatives. - -The likelihood ratio process $\{M_t\}_{t=0}^{\infty}$ is a multiplicative **martingale**. - -```{figure} /_static/lecture_specific/risk_aversion_or_mistaken_beliefs/eggs_backus.png -Discounted entropy ball around the econometrician's model. -``` - -### Why discounted entropy? - -Discounted entropy includes models that undiscounted entropy excludes. - -Undiscounted entropy over infinite sequences requires alternative models to share the same long-run averages as the baseline, thereby excluding models that differ only in persistent, low-frequency dynamics. - -But those persistent alternatives are precisely the models that are hardest to distinguish from the econometrician's model with finite data and that matter most for pricing long-lived assets. - -Discounted entropy, by treating future divergences less severely, admits these statistically elusive but economically important alternatives into the set of models that the dubious agent contemplates. - -### Entropy and the likelihood ratio - -When the likelihood ratio takes the log-normal form used throughout this lecture, entropy simplifies dramatically. - -Writing the one-step likelihood ratio in terms of a distortion vector $w_t$: - -$$ -m_{t+1} := \exp \left(-\frac{w_t^\top w_t}{2} - w_t^\top \varepsilon_{t+1}\right) -$$ - -and computing $E[m_{t+1}\log m_{t+1} \mid x_t]$, the cross term $w_t^\top \varepsilon_{t+1}$ averages to zero, leaving only: - -$$ -E \left[m_{t+1}\log m_{t+1} \middle| x_t, c_t\right] = \frac{1}{2} w_t^\top w_t -$$ - -This means that conditional entropy equals half the squared norm of the distortion vector — it measures how far the distorted mean $-w_t$ is from the baseline mean of zero. - -Substituting this expression into {eq}`eq_hansen_seq` and performing a change of measure (replacing $E[\cdot]$ with $E^w[\cdot]$ under the distorted model) yields a reformulated problem in which nature directly chooses the mean shift $w_t$ rather than a likelihood ratio: - -```{math} -:label: eq_hansen_reform - -J(x_0, c_0 \mid \eta) := \min_{\{w_t\}} E^w \left[\sum_{t=0}^{\infty} \beta^t c_t \middle| x_0, c_0\right] -``` - -Under the distorted measure, $\tilde\varepsilon_{t+1} \sim \mathcal{N}(0, I)$, and we have substituted $\varepsilon_{t+1} = \tilde\varepsilon_{t+1} - w_t$ so that the mean shift $-w_t$ appears explicitly in the dynamics: - -$$ -c_{t+1} - c_t = D x_t + G (\tilde\varepsilon_{t+1} - w_t), \qquad x_{t+1} = A x_t + C (\tilde\varepsilon_{t+1} - w_t) -$$ - -The entropy constraint now takes the transparent form of bounding the cumulative squared distortion: - -$$ -\frac{1}{2} E^w \left[\sum_{t=0}^{\infty} \beta^t w_t^\top w_t \middle| x_0, c_0\right] \leq \eta -$$ - -The shift $-w_t$ *reduces* expected consumption growth by $G w_t$ and shifts the state dynamics by $-C w_t$, which is how the worst-case model makes the agent worse off. - -### Outcome: constant worst-case distortion - -Because the econometrician's model is linear Gaussian and the entropy constraint is a scalar bound $\eta$, the worst-case mean distortion turns out to be a *constant vector*: - -$$ -w_t = \bar{w} -$$ - -The consequence is that the contribution of $w_t$ to risk prices is *state-independent*. - -This does *not* help explain countercyclical prices of risk (or prices of model uncertainty), motivating the more refined "tilted" entropy ball in the next section. - -We compute $\bar{w}$ using the multiplier formulation developed in {ref}`the preceding section `, in which the parameter $\theta$ penalises entropy: larger $\theta$ means less concern about misspecification. - -In the multiplier formulation, the agent minimises - -$$ -E^w \left[\sum_{t=0}^\infty \beta^t \bigl(c_t + \tfrac{\theta}{2} w_t^\top w_t\bigr)\right] -$$ - -over $\{w_t\}$ subject to the shifted dynamics. - -Since $c_t = c_0 + \sum_{s=0}^{t-1}(D x_s + G \varepsilon_{s+1})$ and $\varepsilon_{s+1} = \tilde\varepsilon_{s+1} - w_s$, the first-order condition for $w_t$ balances the entropy penalty $\theta w_t$ against the marginal effect on discounted consumption: - -$$ -\theta \bar{w} = \frac{\beta}{1-\beta} G^\top + \beta C^\top v -$$ - -where $v$ solves $v = \frac{\beta}{1-\beta} D^\top + \beta A^\top v$, or equivalently $v = \beta (I - \beta A^\top)^{-1} D^\top / (1-\beta)$. - -The vector $v$ captures the discounted cumulative effect of a unit change in $x_t$ on future consumption. - -```{code-cell} ipython3 -def hansen_worst_case(A, C, D, G, β, θ): - """Constant worst-case distortion w_bar for Hansen's dubious agent.""" - n = A.shape[0] - v = β * np.linalg.solve(np.eye(n) - β * A.T, D.T.flatten()) / (1 - β) - w_bar = (1.0 / θ) * (β / (1 - β) * G.T.flatten() + β * C.T @ v) - return w_bar - - -β = 0.995 -θ_values = [0.5, 1.0, 2.0, 5.0] - -print(f"{'θ':>6} {'w_bar[0]':>10} {'w_bar[1]':>10} {'Entropy':>10}") -print("-" * 42) -for θ in θ_values: - w = hansen_worst_case(A, C, D, G, β, θ) - print(f"{θ:>6.1f} {w[0]:>10.4f} {w[1]:>10.4f} {0.5 * w @ w:>10.4f}") -``` - -The worst-case distortion $\bar{w}$ is constant: it does not depend on the state $x_t$. - -Larger $\theta$ (less concern about misspecification) yields a smaller distortion. - -````{exercise} -:label: lr_exercise_2 - -Derive the formula for $\bar{w}$. - -1. Write the discounted consumption path as $\sum_{t=0}^\infty \beta^t c_t = \frac{c_0}{1-\beta} + \sum_{t=0}^\infty \beta^t \sum_{s=0}^{t-1}(D x_s - G w_s + G \tilde\varepsilon_{s+1})$. -2. Use the state recursion $x_{t+1} = A x_t - C w_t + C \tilde\varepsilon_{t+1}$ and take first-order conditions with respect to the constant $w_t = \bar{w}$. -3. Verify that the first-order condition gives $\theta \bar{w} = \frac{\beta}{1-\beta} G^\top + \beta C^\top v$ with $v = \beta(I - \beta A^\top)^{-1} D^\top / (1-\beta)$. -4. Check numerically that larger $\theta$ brings $\bar{w}$ closer to zero. - -```` - -````{solution} lr_exercise_2 -:class: dropdown - -For part 1, the consumption increment $\Delta c_{s+1} = Dx_s - G\bar{w} + G\tilde\varepsilon_{s+1}$ at date $s$ enters $c_t$ for every $t \geq s+1$, with total discounted weight $\frac{\beta^{s+1}}{1-\beta}$. - -Swapping the order of summation: - -$$ -E \left[\sum_{t=0}^\infty \beta^t c_t\right] = \frac{c_0}{1-\beta} + \frac{1}{1-\beta}\sum_{s=0}^\infty \beta^{s+1}\bigl(D E[x_s] - G\bar{w}\bigr) -$$ - -For part 2, define $S = \sum_{s=0}^\infty \beta^{s+1} E[x_s]$. - -From $E[x_{s+1}] = A E[x_s] - C\bar{w}$, multiply both sides by $\beta^{s+2}$ and sum over $s = 0, 1, \ldots$: - -$$ -S - \beta x_0 = \beta A S - \frac{\beta^2}{1-\beta}C\bar{w} -$$ - -Solving: $S = (I - \beta A)^{-1} \left(\beta x_0 - \frac{\beta^2}{1-\beta}C\bar{w}\right)$. - -Substituting back, the expected objective $E[\sum \beta^t(c_t + \frac{\theta}{2}\|\bar{w}\|^2)]$ depends on $\bar{w}$ only through the term $\frac{1}{1-\beta}(D S - \frac{\beta}{1-\beta}G\bar{w}) + \frac{\theta}{2(1-\beta)}\|\bar{w}\|^2$. - -For part 3, differentiate with respect to $\bar{w}$ and set to zero. - -The only part of $S$ that depends on $\bar{w}$ is $-\frac{\beta^2}{1-\beta}(I-\beta A)^{-1}C\bar{w}$, so $\nabla_{\bar{w}}(D S) = -\frac{\beta^2}{1-\beta}C^\top(I - \beta A^\top)^{-1}D^\top$. - -The first-order condition is: - -$$ -\frac{\theta}{1-\beta}\bar{w} = \frac{1}{1-\beta} \left(\frac{\beta}{1-\beta}G^\top + \frac{\beta^2}{1-\beta}C^\top(I - \beta A^\top)^{-1}D^\top\right) -$$ - -Simplifying: $\theta\bar{w} = \frac{\beta}{1-\beta}G^\top + \beta C^\top v$, where $v = \frac{\beta}{1-\beta}(I - \beta A^\top)^{-1}D^\top$. - -Therefore $\bar{w} = \frac{1}{\theta}\bigl(\frac{\beta}{1-\beta}G^\top + \beta C^\top v\bigr)$. - -For part 4, as $\theta \to \infty$, $\bar{w} = \frac{1}{\theta}(\cdots) \to 0$, which the numerical table confirms. - -```` - -(mult_pref_section)= -## Multiplier preferences - -The constraint formulation {eq}`eq_hansen_seq` bounds discounted entropy by $\eta$, but an equivalent **multiplier** formulation replaces the constraint with a penalty term weighted by a Lagrange multiplier $\theta$. - -The **multiplier preference** version of the dubious agent's problem is: - -```{math} -:label: eq_mult_seq - -\hat{J}(x_0, c_0 \mid \theta) := \min_{\{m_{t+1}\}} E \left[\sum_{t=0}^{\infty} \beta^t M_t\bigl(c_t + \theta m_{t+1}\log m_{t+1}\bigr) \middle| x_0, c_0\right] -``` - -with $M_{t+1} = M_t m_{t+1}$, $E[m_{t+1} \mid x_t, c_t] = 1$, $M_0 = 1$. - -To derive a Bellman equation, write the value as today's consumption plus the worst-case continuation: - -$$ -\hat{J}(x_t, c_t \mid \theta) = c_t + \min_{m_{t+1}} E \left[m_{t+1}\bigl[\beta \hat{J}(x_{t+1}, c_{t+1}) + \theta\log m_{t+1}\bigr] \middle| x_t, c_t\right] -$$ - -Solving the inner minimisation analytically (by completing the square in the exponential family) yields a closed-form expression: - -$$ -= c_t - \theta\log E \left[\exp \left(-\frac{\beta \hat{J}(x_{t+1}, c_{t+1})}{\theta}\right) \middle| x_t, c_t\right] -$$ - -The second line defines the **risk-sensitivity operator** $T_t$: - -$$ -=: c_t + T_t \left[\beta \hat{J}(x_{t+1}, c_{t+1})\right] -$$ - -The minimising likelihood ratio that attains this value is: - -$$ -m_{t+1}^* \propto \exp \left(-\frac{\beta \hat{J}(x_{t+1}, c_{t+1})}{\theta}\right) -$$ - -By Lagrange multiplier theory, for the **corresponding dual pair** $(\tilde\theta, \eta)$, - -$$ -\hat{J}(x_t, c_t \mid \tilde\theta) = J(x_t, c_t \mid \eta) + \tilde\theta \eta -$$ - -Each choice of $\tilde\theta$ in the multiplier problem corresponds to a particular entropy bound $\eta(\tilde\theta)$ in the constraint problem, so the two formulations are equivalent. - -The operator $T_t$ defined above is a **risk-sensitivity operator** that maps the continuation value through an exponential tilt, downweighting good outcomes and upweighting bad ones. - -```{code-cell} ipython3 -def T_operator(V, θ, probs=None): - """Risk-sensitivity operator: T[V] = -θ log E[exp(-V/θ)].""" - if probs is None: - probs = np.ones(len(V)) / len(V) - V_s = -V / θ - max_v = np.max(V_s) - return -θ * (max_v + np.log(np.sum(probs * np.exp(V_s - max_v)))) - -rng = np.random.default_rng(0) -V_samples = rng.normal(loc=5.0, scale=1.0, size=10_000) -E_V = np.mean(V_samples) - -θ_grid = np.logspace(-1, 3, 50) -T_vals = [T_operator(V_samples, θ) for θ in θ_grid] - -fig, ax = plt.subplots(figsize=(8, 5)) -ax.semilogx(θ_grid, T_vals, 'firebrick', lw=2, label=r"$T_\theta[V]$") -ax.axhline(E_V, color='steelblue', lw=1.5, - ls='--', label=r"$E[V]$ (risk neutral)") -ax.set_xlabel(r"Robustness parameter $\theta$") -ax.set_ylabel("Value") -ax.legend() -ax.annotate(r"$\theta \to \infty$: risk neutral", - xy=(500, E_V), fontsize=11, color='steelblue', - xytext=(50, E_V - 0.8), - arrowprops=dict(arrowstyle='->', color='steelblue')) -plt.tight_layout() -plt.show() -``` - -As $\theta \to \infty$, the risk-sensitivity operator converges to the ordinary expectation $E[V]$, and the agent becomes risk neutral. - -As $\theta$ shrinks, the operator places more weight on bad outcomes, reflecting greater concern about model misspecification. - -## Tilting the entropy ball - -### Hansen and Szőke's more refined dubious agent - -To generate *state-dependent* uncertainty prices, Hansen and Szőke introduce a more refined dubious agent who: - -- shares the econometrician's model $A$, $C$, $D$, $G$, -- expresses doubts by using a continuum of likelihood ratios to form a - discounted entropy ball around the econometrician's model, *and* -- also insists that some martingales representing particular alternative - *parametric* models be included in the discounted entropy ball. - -The inclusion of those alternative parametric models *tilts* the entropy ball, which affects the worst-case model in a way that can produce countercyclical uncertainty prices. - -"Tilting" means replacing the constant entropy bound $\eta$ with a state-dependent bound $\xi(x_t)$ that is larger in states where the feared parametric alternative deviates more from the baseline. - -### The feared parametric model - -The investor wants the entropy ball to be large enough to include specific alternative models whose conditional entropy at each date is: - -$$ -E_t \left[\bar{m}_{t+1}\log\bar{m}_{t+1}\right] = \frac{1}{2} \bar{w}_t^\top \bar{w}_t =: \frac{1}{2}\xi(x_t) -$$ - -The function $\xi(x_t)$ measures how far the feared model's conditional distribution deviates from the baseline at state $x_t$, and the total discounted divergence of the feared model is: - -$$ -\frac{1}{2} E^{\bar{W}} \left[\sum_{t=0}^{\infty} \beta^t \xi(x_t) \middle| x_0, c_0\right] -$$ - -To ensure this feared model lies inside the entropy ball, we replace the earlier constant bound $\eta$ with a state-dependent budget: - -```{math} -:label: eq_tilted_constraint - -\frac{1}{2} E^w \left[\sum_{t=0}^{\infty} \beta^t w_t^\top w_t \middle| x_0, c_0\right] \leq \frac{1}{2} E^w \left[\sum_{t=0}^{\infty} \beta^t \xi(x_t) \middle| x_0, c_0\right] -``` - -The time-$t$ contributions to the right-hand side of {eq}`eq_tilted_constraint` relax the discounted entropy constraint in states $x_t$ in which $\xi(x_t)$ is larger. - -This sets the stage for *state-dependent* mean distortions in the worst-case model. - -Inspired by {cite:t}`Bansal_Yaron_2004`, a concrete form of this concern is that the true state dynamics are more persistent than the econometrician's model implies, expressed by - -$$ -x_{t+1} = \bar{A} x_t + C \tilde\varepsilon_{t+1} -$$ - -Since $\bar{A} = A - C\bar{W}$, this feared model is equivalent to shifting the mean of $\varepsilon_{t+1}$ by $-\bar{W}x_t$, giving $\bar{w}_t = \bar{W} x_t$ with - -$$ -\bar{W} = -\check{C}^{-1}(\bar{A}_{2:n,\cdot} - A_{2:n,\cdot}) -$$ - -(again using the assumption that $\check{C}$ is square and invertible), which implies a *quadratic* $\xi$ function: - -```{math} -:label: eq_xi - -\xi(x_t) := x_t^\top \bar{W}^\top\bar{W} x_t =: x_t^\top \Xi x_t -``` - -```{figure} /_static/lecture_specific/risk_aversion_or_mistaken_beliefs/eggs_backus2.png -Tilted discounted entropy balls. Including particular parametric alternatives with more long-run risk tilts the entropy ball and generates state-dependent worst-case distortions. -``` - -### The Szőke agent's sequence problem - -As in the multiplier preferences section, we convert the constraint problem into an unconstrained one by attaching a Lagrange multiplier $\tilde\theta \geq 0$ to the tilted entropy constraint {eq}`eq_tilted_constraint`. - -The penalty $\tilde\theta(w_t^\top w_t - x_t^\top \Xi x_t)/2$ now has two terms: the first penalises the agent's distortion, while the second rewards distortions in states where the feared model deviates more, creating a state-dependent entropy budget: - -```{math} -:label: eq_szoke_seq - -J(x_0, c_0 \mid \Xi) := \max_{\tilde\theta \geq 0} \min_{\{w_t\}} E^w \left[\sum_{t=0}^{\infty} \beta^t c_t + \tilde\theta \frac{1}{2}\sum_{t=0}^{\infty} \beta^t\bigl(w_t^\top w_t - x_t^\top \Xi x_t\bigr) \middle| x_0, c_0\right] -``` - -The dynamics under the distorted measure remain linear Gaussian: - -$$ -c_{t+1} - c_t = D x_t + G (\tilde\varepsilon_{t+1} - w_t), \qquad x_{t+1} = A x_t + C (\tilde\varepsilon_{t+1} - w_t) -$$ - -Because the state vector now includes a leading constant $1$, we can write the worst-case distortion as a *linear* function of the augmented state: - -$$ -\tilde{w}_t = \tilde{W} x_t -$$ - -The first column of $\tilde{W}$ stores the constant part that would otherwise be written separately as $a$, while the remaining columns load on the stochastic factors $\check{x}_t$. - -When $\Xi = 0$ (no tilting), that first column reduces to Hansen's constant $\bar{w}$ from the untilted problem, while the remaining columns are zero. - -When $\Xi \neq 0$, the nonconstant columns of $\tilde{W}$ are the new contribution of the tilted entropy ball, and are what generate countercyclical uncertainty prices. - -Writing $\tilde{A} = A - C \tilde{W}$ and $\tilde{D} = D - G \tilde{W}$, the worst-case dynamics are - -$$ -x_{t+1} = \tilde{A} x_t + C\tilde\varepsilon_{t+1}, \qquad c_{t+1} - c_t = \tilde{D} x_t + G\tilde\varepsilon_{t+1} -$$ - -### Implementation: tilted entropy ball - -For the inner minimisation over $\{w_t\}$ in {eq}`eq_szoke_seq`, the value function is **affine-quadratic** in the augmented state because $c_t$ enters linearly: - -$$ -J(x, c) = \frac{c}{1-\beta} + v^\top x + x^\top P x + K -$$ - -Writing $e_1 = (1, 0, \ldots, 0)^\top$ for the selector of the constant state and $\tilde\theta$ as $\theta$ in the code, the first-order condition for $\tilde{W}$ balances the entropy penalty against the marginal effects on the value function: - -$$ -(\theta I + 2\beta C^\top P C) \tilde{W} -= 2\beta C^\top P A -+ \left(\frac{\beta}{1-\beta} G^\top + \beta C^\top v\right) e_1^\top -$$ - -The linear coefficient $v$ captures the discounted cumulative effect of a unit change in $x_t$ on future consumption, and satisfies: - -$$ -\bigl(I - \beta (A - C\tilde{W})^\top\bigr) v -= \frac{\beta}{1-\beta} \left(D^\top - \tilde{W}^\top G^\top\right) -$$ - -Finally, matching quadratic terms in $x$ yields the matrix Riccati equation for $P$, which encodes the curvature of the value function: - -$$ -P = -\tfrac{\theta}{2} \Xi + \tfrac{\theta}{2} \tilde{W}^\top \tilde{W} + \beta (A - C\tilde{W})^\top P (A - C\tilde{W}) -$$ - -The code below iterates on the coupled $(P, v, \tilde{W})$ system to convergence. - -For later comparisons, we also keep a version of $\tilde{W}$ with its first column set to zero, denoted informally by $\tilde{W}^{sd}$, which isolates the factor-dependent component. - -```{code-cell} ipython3 -class TiltedEntropyModel: - """ - Hansen-Szőke tilted entropy ball model. - - Given (A, C, D, G, β, θ, Ξ), computes the full worst-case - distortion matrix W_tilde in w_t = W_tilde @ x_t. - - The first column of W_tilde is the constant component induced by - the augmented state x_t = [1, check_x_t']'. W_tilde_state zeros - that column out and keeps only factor-dependent loadings. - """ - - def __init__(self, A, C, D, G, β, θ, Ξ): - self.A = np.atleast_2d(A).astype(float) - self.C = np.atleast_2d(C).astype(float) - self.D = np.atleast_2d(D).astype(float) - self.G = np.atleast_2d(G).astype(float) - self.β, self.θ = float(β), float(θ) - self.Ξ = np.atleast_2d(Ξ).astype(float) - self.n = self.A.shape[0] - - self.W_tilde, self.v = self._solve_worst_case() - self.A_tilde = self.A - self.C @ self.W_tilde - self.D_tilde = self.D - self.G @ self.W_tilde - self.W_tilde_state = self.W_tilde.copy() - self.W_tilde_state[:, 0] = 0.0 - self.A_tilde_state = self.A - self.C @ self.W_tilde_state - self.D_tilde_state = self.D - self.G @ self.W_tilde_state - - def _solve_worst_case(self): - """Iterate on the coupled (P, v, W) system.""" - n, k = self.n, self.C.shape[1] - β, θ = self.β, self.θ - - P = np.zeros((n, n)) - v = np.zeros(n) - e1 = np.zeros(n) - e1[0] = 1.0 - converged = False - for _ in range(10000): - M = θ * np.eye(k) + 2 * β * self.C.T @ P @ self.C - b = β / (1 - β) * self.G.T.flatten() + β * self.C.T @ v - rhs = 2 * β * self.C.T @ P @ self.A + np.outer(b, e1) - W = np.linalg.solve(M, rhs) - A_w = self.A - self.C @ W - P_new = (-(θ / 2) * self.Ξ - + (θ / 2) * W.T @ W - + β * A_w.T @ P @ A_w) - P_new = 0.5 * (P_new + P_new.T) - D_flat = self.D.T.flatten() - G_flat = self.G.T.flatten() - rhs_v = β * (D_flat - W.T @ G_flat) / (1 - β) - v_new = np.linalg.solve(np.eye(n) - β * A_w.T, rhs_v) - if (np.max(np.abs(P_new - P)) < 1e-10 - and np.max(np.abs(v_new - v)) < 1e-10): - P = P_new - v = v_new - converged = True - break - P = P_new - v = v_new - - if not converged: - print("Warning: (P, v, W) iteration did not converge") - self._P_quad = P - self._v_lin = v - return W, v - - def distortion(self, x): - """Full worst-case distortion W_tilde @ x.""" - return self.W_tilde @ x - - def state_dependent_distortion(self, x): - """Factor-dependent component with the constant column removed.""" - return self.W_tilde_state @ x - - def entropy(self, x): - """Full conditional entropy: (1/2)(W_tilde x)'(W_tilde x).""" - w = self.distortion(x) - return 0.5 * w @ w - - def state_dependent_entropy(self, x): - """Entropy of the factor-dependent component only.""" - w = self.state_dependent_distortion(x) - return 0.5 * w @ w - - def xi_function(self, x): - return x @ self.Ξ @ x -``` - -```{code-cell} ipython3 -# Feared parametric model -A_bar_core = np.array([[0.995, -0.03], - [0.000, 0.96]]) - -A_bar, _, _, _, _ = augment_state_space( - A_bar_core, C_core, np.zeros((1, 2)), np.zeros((1, 2)), np.zeros(2) -) - -W_bar = -np.linalg.solve(C[1:, :], A_bar[1:, :] - A[1:, :]) -Ξ = W_bar.T @ W_bar - -print("Feared transition A_bar:\n", A_bar) -print("\nImplied distortion W_bar:\n", W_bar.round(3)) -print("\nTilting matrix Ξ:\n", Ξ.round(1)) -``` - -In {eq}`eq_szoke_seq` the multiplier $\tilde\theta$ is determined by the outer maximisation. - -Here we fix $\theta$ at a representative value and solve only the inner minimisation, illustrating the multiplier formulation described in {ref}`the multiplier preferences section `. - -```{code-cell} ipython3 -θ_tilt = 3.0 -tilted = TiltedEntropyModel(A, C, D, G, β, θ_tilt, Ξ) - -print("Worst-case distortion W_tilde:\n", tilted.W_tilde.round(4)) -print("\nConstant column of W_tilde:\n", tilted.W_tilde[:, 0].round(4)) -W_fd = tilted.W_tilde[:, 1:].round(4) -print("\nFactor-dependent columns of W_tilde:\n", W_fd) -print("\nWorst-case transition A_tilde:\n", - tilted.A_tilde.round(4)) -eig_A = eigvals(A[1:, 1:]).round(4) -eig_At = eigvals(tilted.A_tilde[1:, 1:]).round(4) -print(f"\nEigenvalues of check(A): {eig_A}") -print(f"Eigenvalues of check(A_tilde): {eig_At}") -``` - -````{exercise} -:label: lr_exercise_3 - -Derive the first-order condition for the tilted entropy problem under the augmented-state convention. - -1. Start from {eq}`eq_szoke_seq` and write $w_t = W x_t$, where the first column of $W$ captures the constant part of the distortion. -2. Show that the first-order condition gives - - $$ - (\theta I + 2\beta C^\top P C) W - = 2\beta C^\top P A - + \left(\frac{\beta}{1-\beta} G^\top + \beta C^\top v\right)e_1^\top - $$ - - and derive the associated linear equation for $v$. -3. Derive the $P$ update by substituting the optimal $W$ back into the Bellman equation and matching quadratic terms in $x$. - -```` - -````{solution} lr_exercise_3 -:class: dropdown - -For part 1, write $w_t = W x_t$ with $x_t = (1, \check{x}_t^\top)^\top$. - -To confirm the affine-quadratic form, substitute this guess into the Bellman equation for the inner minimisation of {eq}`eq_szoke_seq`: - -$$ -J(x, c) = \min_{w} \left\{ c + \frac{\theta}{2}(w^\top w - x^\top \Xi x) + \beta\, E\bigl[J(x', c')\bigr] \right\} -$$ - -where $x' = Ax + C(\tilde\varepsilon - w)$ and $c' - c = Dx + G(\tilde\varepsilon - w)$. - -Conjecture $J(x,c) = c/(1-\beta) + v^\top x + x^\top P x + K$. - -Under this guess, $J(x',c') = c'/(1-\beta) + v^\top x' + x'^\top P x' + K$. - -Write $c'/(1-\beta) = c/(1-\beta) + (c'-c)/(1-\beta)$, so the $c/(1-\beta)$ term passes through both sides and can be cancelled. - -Substituting $w = Wx$, the next-period state is $x' = (A - CW)x + C\tilde\varepsilon$, and the consumption increment is $(c'-c) = (D - GW)x + G\tilde\varepsilon$. - -Taking $E[\cdot]$ (with $E[\tilde\varepsilon] = 0$, $E[\tilde\varepsilon\tilde\varepsilon^\top] = I$), the right-hand side after cancelling $c/(1-\beta)$ has the following structure. - -*Quadratic terms in $x$:* - -$$ --\tfrac{\theta}{2} x^\top \Xi x + \tfrac{\theta}{2} x^\top W^\top W x + \beta x^\top (A-CW)^\top P (A-CW) x -$$ - -These come from the penalty $\frac{\theta}{2}(w^\top w - x^\top \Xi x)$ and from $x'^\top P x'$. - -*Linear terms in $x$:* - -$$ -\tfrac{\beta}{1-\beta}(D - GW)x + \beta v^\top (A-CW)x -$$ - -These come from $(c'-c)/(1-\beta)$ and from $v^\top x'$. - -The remaining terms are constant (independent of $x$). - -These come from the noise terms and from $K$. - -Every term is at most quadratic in $x$, so matching coefficients reproduces the conjectured form $v^\top x + x^\top P x + K$ with updated $v$, $P$, $K$. - -This confirms self-consistency of the affine-quadratic guess. - -To derive the first-order condition, collect all terms in the Bellman RHS that depend on $w = Wx$. - -From the penalty $\frac{\theta}{2} w^\top w$, the contribution is $\frac{\theta}{2}x^\top W^\top W x$. - -From $\beta E[v^\top x']$ with $E[x'] = (A-CW)x$, the $w$-dependent part is $-\beta v^\top C W x$. - -From $\beta E[(c'-c)/(1-\beta)]$ with $E[c'-c] = (D-GW)x$, the $w$-dependent part is $-\frac{\beta}{1-\beta} G W x$. - -From $\beta E[x'^\top P x']$ with $E[x'] = (A-CW)x$, the $w$-dependent part is $\beta x^\top (A-CW)^\top P (A-CW) x$. - -Differentiating with respect to $W$ and using $e_1^\top x_t = 1$ gives: - -$$ -(\theta I + 2\beta C^\top P C) W -= 2\beta C^\top P A -+ \left(\frac{\beta}{1-\beta} G^\top + \beta C^\top v\right)e_1^\top -$$ - -This shows directly how the first column of $W$ carries the constant part of the distortion. - -$$ -\bigl(I - \beta (A - CW)^\top\bigr) v -= \frac{\beta}{1-\beta} \left(D^\top - W^\top G^\top\right) -$$ - -This is the linear equation used in the code to update $v$ once $W$ is known. - -For part 3, substitute the optimal $W$ back into the Bellman equation. - -The quadratic terms in $x_t$ give: - -$$ -P = -\tfrac{\theta}{2} \Xi + \tfrac{\theta}{2} W^\top W + \beta (A-CW)^\top P(A-CW) -$$ - -This is the matrix Riccati equation that the code iterates to convergence. - -```` - -### State-dependent entropy: the key innovation - -The following figure compares the conditional entropy of the worst-case distortion across three models as a function of the level factor $\check{x}_{1,t}$, revealing how the tilted entropy ball produces the state dependence that Hansen's original formulation lacks. - -```{code-cell} ipython3 -x_grid = np.linspace(-0.03, 0.04, 200) - -entropy_tilted = np.array([ - tilted.state_dependent_entropy( - augment_state(np.array([x, 0.005]))) - for x in x_grid]) -ξ_vals = np.array([ - tilted.xi_function( - augment_state(np.array([x, 0.005]))) - for x in x_grid]) - -# Calibrate Hansen's θ so constant entropy matches E[ξ(x_t)/2] -Σ_check = solve_discrete_lyapunov(A[1:, 1:], C[1:, :] @ C[1:, :].T) -E_xx = np.block([ - [np.ones((1, 1)), np.zeros((1, 2))], - [np.zeros((2, 1)), Σ_check] -]) -avg_ξ_half = 0.5 * np.trace(Ξ @ E_xx) -w_unit = hansen_worst_case(A, C, D, G, β, 1.0) -θ_hansen = norm(w_unit) / np.sqrt(2 * avg_ξ_half) -w_hansen = w_unit / θ_hansen -hansen_ent = 0.5 * w_hansen @ w_hansen - -fig, ax = plt.subplots(figsize=(9, 5)) -hansen_lab = (rf"Hansen: constant " - rf"$\frac{{1}}{{2}}\bar{{w}}^\top" - rf"\bar{{w}} = {hansen_ent:.4f}$") -ax.axhline(hansen_ent, color='steelblue', - lw=2, ls='--', label=hansen_lab) -szoke_lab = (r"Sz\H{o}ke (factor-dep.): " - r"$\frac{1}{2}(\tilde{W}^{sd}x_t)" - r"^\top(\tilde{W}^{sd}x_t)$") -ax.plot(x_grid, entropy_tilted, 'firebrick', - lw=2, label=szoke_lab) -ax.plot(x_grid, 0.5 * ξ_vals, 'seagreen', lw=2, ls=':', - label=r"Feared model: $\frac{1}{2}\xi(x_t)$") -ax.set_xlabel(r"Level factor $\check{x}_{1,t}$") -ax.set_ylabel("Conditional entropy") -ax.legend() -plt.tight_layout() -plt.show() -``` - -The key innovation of the tilted entropy ball is visible: the factor-dependent component $\tilde{W}^{sd} x_t$ of the worst-case distortion grows with $|\check{x}_t|$, producing *countercyclical uncertainty prices*. - -By contrast, Hansen's constant distortion $\bar{w}$ has entropy $\frac{1}{2}\bar{w}^\top\bar{w}$ that does not vary with the state (shown as a horizontal line). - -The Szőke parabola lies inside the feared model's entropy budget $\frac{1}{2}\xi(x_t)$ along this slice, consistent with the tilted entropy constraint {eq}`eq_tilted_constraint`. - -### Three probability twisters - -To summarize, three distinct probability twisters play roles in this analysis: - -| Symbol | Source | Describes | -|:---------------|:------------------------------|:----------------------------------| -| $w_t^*$ | Piazzesi, Salomão, Schneider | Mistaken agent's beliefs | -| $\bar{w}_t$ | Szőke's feared parametric model | Especial LRR parametric worry | -| $\tilde{W} x_t$ | Szőke's worst-case model | State-dependent component of worst-case distortion | - -```{code-cell} ipython3 -x_state = augment_state(np.array([0.02, 0.008])) -w_pss = W_star @ x_state -w_feared = W_bar @ x_state -w_szoke = tilted.state_dependent_distortion(x_state) - -ε_grid = np.linspace(-4, 4, 500) -ϕ_base = normal_dist.pdf(ε_grid, 0, 1) - -fig, ax = plt.subplots(figsize=(9, 5)) -ax.plot(ε_grid, ϕ_base, 'black', lw=2, - label='Econometrician: $\\mathcal{N}(0,1)$') - -for w_val, label, color, ls in [ - (w_pss[0], r"PSS mistaken $w^*_t$", 'steelblue', '-'), - (w_feared[0], r"Feared LRR $\bar{w}_t$", 'seagreen', '--'), - (w_szoke[0], - r"Sz\H{o}ke worst-case $\tilde{W}^{sd}x_t$" - r" (factor-dep.)", 'firebrick', '-'), -]: - ax.plot(ε_grid, normal_dist.pdf(ε_grid, -w_val, 1), - color=color, lw=2, ls=ls, label=label) - -ax.set_xlabel(r"$\varepsilon_1$") -ax.set_ylabel("Density") -ax.legend() -plt.tight_layout() -plt.show() -``` - -Each twister shifts the econometrician's $\mathcal{N}(0,1)$ density by the displayed component, where the direction and magnitude depend on the current state $x_t$. - -For the state shown here, all three displayed components are negative in their first element, so the twisted densities are shifted slightly to the right. - -The shifts are small relative to the unit variance because the stochastic state $\check{x}_t = (0.02, 0.008)$ is close to the unconditional mean. - -## Empirical challenges and model performances - -Before comparing models, it helps to see the empirical regularities that any successful theory must explain. - -```{code-cell} ipython3 ---- -tags: [hide-input] -mystnb: - figure: - caption: U.S. Treasury yields and yield spread - name: fig-us-yields ---- -data = pd.read_csv( - 'https://raw.githubusercontent.com/QuantEcon/lecture-python.myst/refs/heads/' - 'main/lectures/_static/lecture_specific/risk_aversion_or_mistaken_beliefs/fred_data.csv', - parse_dates=['DATE'], index_col='DATE' -) - -fig, axes = plt.subplots(2, 1, figsize=(12, 8), sharex=True, - gridspec_kw={'height_ratios': [2, 1]}) - -# Recession shading helper -def shade_recessions(ax, rec): - ax.fill_between(rec.index, 0, 1, - where=rec.values.flatten() == 1, - transform=ax.get_xaxis_transform(), - color='grey', alpha=0.2) - -rec = data['USREC'].dropna() - -ax = axes[0] -shade_recessions(ax, rec) - -ax.plot(data['GS1'], 'steelblue', lw=2, - label=r'$y_{\mathrm{nom}}^{(1)}$') -ax.plot(data['GS5'], 'seagreen', lw=2, - label=r'$y_{\mathrm{nom}}^{(5)}$') -ax.plot(data['GS10'], 'firebrick', lw=2, - label=r'$y_{\mathrm{nom}}^{(10)}$') -ax.plot(data['DFII5'], 'seagreen', lw=2, ls='--', - label=r'$y_{\mathrm{real}}^{(5)}$') -ax.plot(data['DFII10'], 'firebrick', lw=2, ls='--', - label=r'$y_{\mathrm{real}}^{(10)}$') - -ax.axhline(0, color='black', lw=0.5) -ax.set_ylabel('Yield (%)') -ax.legend(loc='upper right') - -ax2 = axes[1] -shade_recessions(ax2, rec) - -spread_10_1 = data['GS10'] - data['GS1'] -ax2.plot(spread_10_1, 'steelblue', lw=2, - label=r'$y^{(10)} - y^{(1)}$') -ax2.axhline(0, color='black', lw=0.5) -ax2.set_ylabel('Spread (%)') -ax2.set_xlabel('Year') -ax2.legend(loc='upper left') - -plt.tight_layout() -plt.show() -``` - -Several recognised patterns characterise the U.S. term structure: - -- The nominal yield curve usually slopes *upward*. -- The long-minus-short yield spread *narrows before* U.S. recessions and - *widens after* them. -- Consequently, the slope of the yield curve helps *predict* recessions and economic activity. -- Long and short yields are *almost equally volatile* (the Shiller "volatility puzzle"). -- To solve the Shiller puzzle, risk prices (or something observationally equivalent) - must *depend on volatile state variables*. - -The following table summarises how various models perform: - -| Model | Average slope | Slopes near recessions | Volatile long yield | -|:-------------------------------|:--------------|:-----------------------|:--------------------| -| {cite:t}`Lucas1978` | no | no | no | -| Epstein-Zin with LRR | maybe | yes | no | -| {cite:t}`piazzesi2015trend` | built-in | built-in | yes | -| {cite:t}`szoke2022estimating` | *YES* | yes | yes | - -### Why Szőke's model succeeds - -Szőke's framework delivers: - -1. A theory of *state-dependent belief distortions* with factor-dependent component $\tilde{W}^{sd} x_t$. -2. A theory about the *question that professional forecasters answer*: they - respond with their worst-case model because they hear "tell me forecasts that - rationalise your (max-min) decisions." -3. A way to *measure* the size of belief distortions relative to the - econometrician's model. - -```{code-cell} ipython3 -model_rn = LikelihoodRatioModel( - A, C, D, G, r_bar, Λ=np.zeros_like(Λ)) -model_uncert = LikelihoodRatioModel( - A, C, D, G, r_bar, Λ=tilted.W_tilde_state) - -x_test = augment_state(np.array([0.01, -0.03])) -n_max = 120 -mats = np.arange(1, n_max + 1) - -fig, ax = plt.subplots(figsize=(9, 5)) -ax.plot(mats, model_rn.yields(x_test, n_max) * 1200, - 'grey', lw=2, ls=':', label='Risk neutral') -ax.plot(mats, model.yields(x_test, n_max) * 1200, - 'steelblue', lw=2, label=r'Risk aversion ($\lambda x_t$)') -ax.plot(mats, model_uncert.yields(x_test, n_max) * 1200, - 'firebrick', lw=2, ls='--', - label=r'Model uncertainty ($\tilde{W}^{sd} x_t$)') -ax.set_xlabel("Maturity (months)") -ax.set_ylabel("Yield (annualised %)") -ax.legend() -plt.tight_layout() -plt.show() -``` - -The risk-aversion-only and model-uncertainty-only yield curves both slope upward, generating a term premium. - -(Note that the model-uncertainty curve uses only the factor-dependent component $\tilde{W}^{sd} x_t$, not the full worst-case distortion.) - -The two explanations represent *alternative channels* for the same observed term premium, reinforcing the identification challenge explored throughout this lecture. - -## Cross-equation restrictions and estimation - -A key appeal of the robust control approach is that it lets us deviate from rational expectations while still preserving a set of powerful **cross-equation restrictions** on decision makers' beliefs. - -As {cite:t}`szoke2022estimating` puts it: - -> An appealing feature of robust control theory is that it lets us deviate from -> rational expectations, but still preserves a set of powerful cross-equation -> restrictions on decision makers' beliefs. … Consequently, estimation can proceed -> essentially as with rational expectations econometrics. The main difference is -> that now restrictions through which we interpret the data emanate from the -> decision maker's best response to a worst-case model instead of to the -> econometrician's model. - -### Szőke's empirical strategy - -In the Szőke framework, the rational-expectations econometrician's risk price vector $\lambda_t$ is decomposed as $\lambda_t = \tilde{w}_t + \tilde{\lambda}_t$, paralleling the PSS decomposition $\lambda = \lambda^* + W^*$. - -The combined likelihood ratio retains the same log-normal form as before, but now the total distortion vector $\lambda_t$ has an explicit decomposition into belief distortion and risk price components: - -$$ -m_{t+1}^\lambda = \exp \left(-\lambda_t^\top\varepsilon_{t+1} - \frac{1}{2}\lambda_t^\top\lambda_t\right), \qquad \lambda_t = \tilde{w}_t + \tilde\lambda_t -$$ - -Here $\tilde{w}_t = \tilde{W} x_t$ is the worst-case belief distortion, whose factor-dependent component is carried by the non-first columns of $\tilde{W}$, and $\tilde\lambda_t = \tilde\lambda x_t$ is the residual risk price. - -In stage I (estimation): - -1. Use $\{x_t, c_t\}_{t=0}^T$ to estimate the econometrician's $A$, $C$, $D$, $G$. -2. View $\Xi$ as a matrix of additional free parameters and estimate them - simultaneously with risk prices $\tilde\lambda x_t$ from data - $\{p_t(n+1)\}_{n=1}^N$, $t = 0, \ldots, T$, by imposing cross-equation - restrictions: - -$$ -p_t(n+1) = \exp(-r_t) E_t \left[m_{t+1}^\lambda p_{t+1}(n)\right] -$$ - -In stage II (assessment): - -1. Assess improvements in predicted behaviour of the term structure. -2. Use estimated worst-case dynamics to form distorted forecasts - $\tilde{E}_t[x_{t+1}] = (A - C\tilde{W})x_t$ and compare them to those of - professional forecasters. -3. Compute the discounted KL divergence $\frac{1}{2}E^w[\sum \beta^t w_t^\top w_t]$ of - each twisted model relative to the econometrician's model and compare them - (the code below zeros the first column of $W$ and keeps only the factor-dependent part). - -```{code-cell} ipython3 -def discounted_kl(W, A_w, C, x0, β, T_horizon=500): - """Factor-dependent KL: (1/2) E^w [Σ β^t (W x_t)'(W x_t)].""" - n_sims = 10_000 - k = C.shape[1] - rng = np.random.default_rng(2024) - X = np.tile(x0, (n_sims, 1)) - total = np.zeros(n_sims) - for t in range(T_horizon): - w_t = X @ W.T - total += β**t * 0.5 * np.sum(w_t**2, axis=1) - X = X @ A_w.T + rng.standard_normal((n_sims, k)) @ C.T - return np.mean(total) - -x0_test = augment_state(np.array([0.01, 0.005])) -kl_szoke = discounted_kl( - tilted.W_tilde_state, - tilted.A_tilde_state, C, x0_test, β) -kl_feared = discounted_kl(W_bar, A_bar, C, x0_test, β) - -print(f"Szőke factor-dep. KL: {kl_szoke:.4f}") -print(f"Feared LRR KL: {kl_feared:.4f}") -status = ('closer to' if kl_szoke < kl_feared - else 'farther from') -print(f"\nWorst-case model is {status} " - f"the econometrician's model.") -``` - -Using only the factor-dependent component $\tilde{W}^{sd} x_t$, the Szőke worst-case model has lower discounted KL divergence from the econometrician's model than the feared long-run risk model, meaning it is statistically harder to distinguish from the baseline. - -Yet it still generates the state-dependent uncertainty prices needed to match term-structure dynamics. - -## Who cares? - -Joint probability distributions of interest rates and macroeconomic shocks are important throughout macroeconomics: - -- *Costs of aggregate fluctuations.* Welfare assessments of business cycles - depend sensitively on how risks are priced. -- *Consumption Euler equations.* The "New Keynesian IS curve" is a log-linearised - consumption Euler equation whose risk adjustments are controlled by the stochastic - discount factor. -- *Optimal taxation and government debt management.* Government bond prices embed - risk prices whose state dependence matters for optimal fiscal policy. -- *Central bank expectations management.* Forward guidance works by shifting the - term structure, an exercise whose effects depend on the same likelihood ratios - studied here. -- *Long-run risk and secular stagnation.* The Bansal-Yaron long-run risk - hypothesis is difficult to detect statistically, yet an agent who fears it in - the sense formalised above may behave very differently than one who does not. - -Understanding whether observed asset prices reflect risk aversion, mistaken beliefs, or fears of model misspecification, and quantifying each component, is interesting for both positive and normative macroeconomics. - - -## Related lectures - -This lecture connects to several others in the series: - -- {ref}`Doubts or Variability? ` studies how a preference for robustness generates worst-case likelihood ratios that look like stochastic discount factor shocks, complementing the analysis here with Hansen-Jagannathan bounds and detection-error probabilities. -- {ref}`Asset Pricing: Finite State Models ` introduces stochastic discount factors and risk-neutral pricing in a finite-state Markov setting, the discrete-state counterpart of the continuous Gaussian framework used here. -- {ref}`Heterogeneous Beliefs and Bubbles ` examines how heterogeneous and possibly mistaken beliefs generate speculative asset price bubbles, providing another perspective on how beliefs affect asset prices. -- {ref}`Likelihood Ratio Processes ` develops the mathematical properties of likelihood ratios, the central device organising this lecture, including their martingale structure and statistical applications. -- {ref}`Divergence Measures ` covers Kullback-Leibler divergence and relative entropy in detail, providing the information-theoretic foundations for the entropy constraints used in the robust control sections. -- {ref}`Affine Models of Asset Prices ` extends the linear Gaussian state-space framework to affine and exponential-quadratic stochastic discount factors, developing risk-neutral pricing formulas closely related to those derived here. diff --git a/lectures/survival_recursive_preferences.md b/lectures/survival_recursive_preferences.md index 6d1053307..b1347c279 100644 --- a/lectures/survival_recursive_preferences.md +++ b/lectures/survival_recursive_preferences.md @@ -124,7 +124,7 @@ $$ (eq:felicity) where $\nu$ is the endogenous discount rate. ```{note} -In discrete time, Epstein-Zin preferences aggregate current consumption with a certainty equivalent of future utility via a CES aggregator (see {doc}`doubts_or_variability`). +In discrete time, Epstein-Zin preferences aggregate current consumption with a certainty equivalent of future utility via a CES aggregator (see {doc}`advanced:doubts_or_variability`). In continuous time there is no "next-period $V_{t+1}$," so {cite:t}`Duffie_Epstein1992a` recast the recursion as a felicity function $F(C,\nu)$ that depends on the agent's own continuation-value rate $\nu$.