├── .gitignore
├── 15.451 GIC Report.docx
├── 15.451 GIC Report.pdf
├── LICENSE
├── README.md
├── README.txt
├── data
├── accounting.pkl
├── df.csv
├── df.pkl
├── ie_accounting.csv
├── ie_accounting.pkl
├── ie_data.xls
├── ie_data_copy.xls
├── ie_data_tax.csv
├── ie_data_tax_adjustments.xlsx
├── index_CPI.xlsx
├── index_Regression.xlsx
├── index_SPX 1990-2000.xlsx
├── index_SPX 2000-2011.xlsx
├── index_data.xlsx
├── index_individual_dat.csv
└── sources.txt
├── notebooks
├── CAPE Ratio Regression.ipynb
├── CAPE Visualization.ipynb
├── accounting.ipynb
├── interest rate regression.ipynb
├── market index.ipynb
└── taxes.ipynb
├── requirements.txt
├── research
├── GIC.docx
└── Kenourgios2021_Article_OnThePredictivePowerOfCAPEOrSh.pdf
└── src
├── __init__.py
├── accounting.py
├── analysis.py
└── utils.py
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | build/
12 | develop-eggs/
13 | dist/
14 | downloads/
15 | eggs/
16 | .eggs/
17 | lib/
18 | lib64/
19 | parts/
20 | sdist/
21 | var/
22 | wheels/
23 | pip-wheel-metadata/
24 | share/python-wheels/
25 | *.egg-info/
26 | .installed.cfg
27 | *.egg
28 | MANIFEST
29 |
30 | # PyInstaller
31 | # Usually these files are written by a python script from a template
32 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
33 | *.manifest
34 | *.spec
35 |
36 | # Installer logs
37 | pip-log.txt
38 | pip-delete-this-directory.txt
39 |
40 | # Unit test / coverage reports
41 | htmlcov/
42 | .tox/
43 | .nox/
44 | .coverage
45 | .coverage.*
46 | .cache
47 | nosetests.xml
48 | coverage.xml
49 | *.cover
50 | *.py,cover
51 | .hypothesis/
52 | .pytest_cache/
53 |
54 | # Translations
55 | *.mo
56 | *.pot
57 |
58 | # Django stuff:
59 | *.log
60 | local_settings.py
61 | db.sqlite3
62 | db.sqlite3-journal
63 |
64 | # Flask stuff:
65 | instance/
66 | .webassets-cache
67 |
68 | # Scrapy stuff:
69 | .scrapy
70 |
71 | # Sphinx documentation
72 | docs/_build/
73 |
74 | # PyBuilder
75 | target/
76 |
77 | # Jupyter Notebook
78 | .ipynb_checkpoints
79 |
80 | # IPython
81 | profile_default/
82 | ipython_config.py
83 |
84 | # pyenv
85 | .python-version
86 |
87 | # pipenv
88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
91 | # install all needed dependencies.
92 | #Pipfile.lock
93 |
94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow
95 | __pypackages__/
96 |
97 | # Celery stuff
98 | celerybeat-schedule
99 | celerybeat.pid
100 |
101 | # SageMath parsed files
102 | *.sage.py
103 |
104 | # Environments
105 | .env
106 | .venv
107 | env/
108 | venv/
109 | ENV/
110 | env.bak/
111 | venv.bak/
112 |
113 | # Spyder project settings
114 | .spyderproject
115 | .spyproject
116 |
117 | # Rope project settings
118 | .ropeproject
119 |
120 | # mkdocs documentation
121 | /site
122 |
123 | # mypy
124 | .mypy_cache/
125 | .dmypy.json
126 | dmypy.json
127 |
128 | # Pyre type checker
129 | .pyre/
130 | .DS_Store
131 |
--------------------------------------------------------------------------------
/15.451 GIC Report.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samsonq/Modifying-Shiller-CAPE-Ratio/50cc84d145d0c79849b88dc49fc574f87102825c/15.451 GIC Report.docx
--------------------------------------------------------------------------------
/15.451 GIC Report.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samsonq/Modifying-Shiller-CAPE-Ratio/50cc84d145d0c79849b88dc49fc574f87102825c/15.451 GIC Report.pdf
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Qian Capital
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Modifying-Shiller-CAPE-Ratio
2 |
3 | Developed by Nobel laureate Robert Shiller, and John Campbell, the Shiller Cyclically Adjusted P/E (CAPE) is one of the most established metrics used to evaluate whether the equity market is over-, under-, or fairly valued. The framework gained popularity amidst the dot-com bubble when it correctly warned that the U.S. sto¬ck market had run too far ahead of itself.
4 |
5 | The CAPE’s elegance lies in its simplicity. The commonly used P/E ratio reflects only one year of earnings, which could provide false si¬gnals in periods of cyclical extremes. For example, during economic recessions, the drop in corporate earnings could temporarily elevate the market P/E which normally could be interpreted as equities being overvalued. To account for such cyclical aberrations, the CAPE takes the average of the last ten years of market earnings (adjusted for inflation), and then divides the current market index price by that adjusted earnings. It thus attempts to capture relative valuations levels over business cycles rather than just one year of results.
6 |
7 | Today, the CAPE is also widely used by investors for framing long-run equity market return expectations at any point in time. Using data that spanned more than a century, Shiller & Campbell back-tested the CAPE by regressing 10-year real stock returns against the long-term average market CAPE ratio and found that the CAPE approach was statistically significant in predicting long-run equity returns.
8 |
9 | Nevertheless, the CAPE does have its limitations. At its core, the CAPE is mean reverting in orientation and is thus anchored on empirical norms. Recent critiques of this framework posit that several important presumptions may no longer hold to a significant degree. These include, but are not limited to, i) interest rate regimes; ii) accounting rules; iii) proposed changes to tax regulations and rates, especially as it pertains international income of U.S. multi-national corporations; and iv) the composition of market index.
10 |
11 | The purpose of this exercise is to examine these and other significant changes, and to come up ways to account for the more meaningful ones such that a prototypical Adjusted CAPE could be more instructive on informing how much the U.S. equity market is over- or under-valued, and to provide a perspective on expected equity returns in the current environment.
12 |
13 |
14 | ## Usage Instructions
15 |
16 | The code for performing the CAPE regressions and visualizing the results are located in the `notebooks` folder within the Jupyter Notebooks. Each of the 4 topics our team covered has a notebook to run: accounting, interest rates, market composition, taxes. Before running, please install the necessary Python libraries located in 'requirements.txt'. To do so, run: `$ pip install -r requirements.txt`. The data that we used to perform the analysis are all located in the `data` folder; this folder contains the S&P returns data and CAPE ratios that Shiller used in his original paper, along with any supplemental data that our team collected to compute an Adjusted CAPE value. This data is recorded in monthly intervals and ranges from 1871-2021.
17 |
--------------------------------------------------------------------------------
/README.txt:
--------------------------------------------------------------------------------
1 | # Modifying-Shiller-CAPE-Ratio
2 |
3 | Developed by Nobel laureate Robert Shiller, and John Campbell, the Shiller Cyclically Adjusted P/E (CAPE) is one of the most established metrics used to evaluate whether the equity market is over-, under-, or fairly valued. The framework gained popularity amidst the dot-com bubble when it correctly warned that the U.S. sto¬ck market had run too far ahead of itself.
4 |
5 | The CAPE’s elegance lies in its simplicity. The commonly used P/E ratio reflects only one year of earnings, which could provide false si¬gnals in periods of cyclical extremes. For example, during economic recessions, the drop in corporate earnings could temporarily elevate the market P/E which normally could be interpreted as equities being overvalued. To account for such cyclical aberrations, the CAPE takes the average of the last ten years of market earnings (adjusted for inflation), and then divides the current market index price by that adjusted earnings. It thus attempts to capture relative valuations levels over business cycles rather than just one year of results.
6 |
7 | Today, the CAPE is also widely used by investors for framing long-run equity market return expectations at any point in time. Using data that spanned more than a century, Shiller & Campbell back-tested the CAPE by regressing 10-year real stock returns against the long-term average market CAPE ratio and found that the CAPE approach was statistically significant in predicting long-run equity returns.
8 |
9 | Nevertheless, the CAPE does have its limitations. At its core, the CAPE is mean reverting in orientation and is thus anchored on empirical norms. Recent critiques of this framework posit that several important presumptions may no longer hold to a significant degree. These include, but are not limited to, i) interest rate regimes; ii) accounting rules; iii) proposed changes to tax regulations and rates, especially as it pertains international income of U.S. multi-national corporations; and iv) the composition of market index.
10 |
11 | The purpose of this exercise is to examine these and other significant changes, and to come up ways to account for the more meaningful ones such that a prototypical Adjusted CAPE could be more instructive on informing how much the U.S. equity market is over- or under-valued, and to provide a perspective on expected equity returns in the current environment.
12 |
13 |
14 | ## Usage Instructions
15 |
16 | The code for performing the CAPE regressions and visualizing the results are located in the `notebooks` folder within the Jupyter Notebooks. Each of the 4 topics our team covered has a notebook to run: accounting, interest rates, market composition, taxes. Before running, please install the necessary Python libraries located in 'requirements.txt'. To do so, run: `$ pip install -r requirements.txt`. The data that we used to perform the analysis are all located in the `data` folder; this folder contains the S&P returns data and CAPE ratios that Shiller used in his original paper, along with any supplemental data that our team collected to compute an Adjusted CAPE value. This data is recorded in monthly intervals and ranges from 1871-2021.
17 |
--------------------------------------------------------------------------------
/data/accounting.pkl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samsonq/Modifying-Shiller-CAPE-Ratio/50cc84d145d0c79849b88dc49fc574f87102825c/data/accounting.pkl
--------------------------------------------------------------------------------
/data/df.pkl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samsonq/Modifying-Shiller-CAPE-Ratio/50cc84d145d0c79849b88dc49fc574f87102825c/data/df.pkl
--------------------------------------------------------------------------------
/data/ie_accounting.pkl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samsonq/Modifying-Shiller-CAPE-Ratio/50cc84d145d0c79849b88dc49fc574f87102825c/data/ie_accounting.pkl
--------------------------------------------------------------------------------
/data/ie_data.xls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samsonq/Modifying-Shiller-CAPE-Ratio/50cc84d145d0c79849b88dc49fc574f87102825c/data/ie_data.xls
--------------------------------------------------------------------------------
/data/ie_data_copy.xls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samsonq/Modifying-Shiller-CAPE-Ratio/50cc84d145d0c79849b88dc49fc574f87102825c/data/ie_data_copy.xls
--------------------------------------------------------------------------------
/data/ie_data_tax_adjustments.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samsonq/Modifying-Shiller-CAPE-Ratio/50cc84d145d0c79849b88dc49fc574f87102825c/data/ie_data_tax_adjustments.xlsx
--------------------------------------------------------------------------------
/data/index_CPI.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samsonq/Modifying-Shiller-CAPE-Ratio/50cc84d145d0c79849b88dc49fc574f87102825c/data/index_CPI.xlsx
--------------------------------------------------------------------------------
/data/index_Regression.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samsonq/Modifying-Shiller-CAPE-Ratio/50cc84d145d0c79849b88dc49fc574f87102825c/data/index_Regression.xlsx
--------------------------------------------------------------------------------
/data/index_SPX 1990-2000.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samsonq/Modifying-Shiller-CAPE-Ratio/50cc84d145d0c79849b88dc49fc574f87102825c/data/index_SPX 1990-2000.xlsx
--------------------------------------------------------------------------------
/data/index_SPX 2000-2011.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samsonq/Modifying-Shiller-CAPE-Ratio/50cc84d145d0c79849b88dc49fc574f87102825c/data/index_SPX 2000-2011.xlsx
--------------------------------------------------------------------------------
/data/index_data.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samsonq/Modifying-Shiller-CAPE-Ratio/50cc84d145d0c79849b88dc49fc574f87102825c/data/index_data.xlsx
--------------------------------------------------------------------------------
/data/sources.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samsonq/Modifying-Shiller-CAPE-Ratio/50cc84d145d0c79849b88dc49fc574f87102825c/data/sources.txt
--------------------------------------------------------------------------------
/notebooks/CAPE Ratio Regression.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 2,
6 | "metadata": {},
7 | "outputs": [],
8 | "source": [
9 | "import os\n",
10 | "import sys\n",
11 | "import numpy as np\n",
12 | "import pandas as pd\n",
13 | "import matplotlib as mlp\n",
14 | "from matplotlib import pyplot as plt\n",
15 | "import seaborn as sns\n",
16 | "%matplotlib inline\n",
17 | "mlp.style.use(\"seaborn\")\n",
18 | "import statsmodels\n",
19 | "import statsmodels.api as sm\n",
20 | "\n",
21 | "import warnings\n",
22 | "warnings.filterwarnings(\"ignore\")"
23 | ]
24 | },
25 | {
26 | "cell_type": "code",
27 | "execution_count": 9,
28 | "metadata": {},
29 | "outputs": [
30 | {
31 | "data": {
32 | "text/html": [
33 | "
\n",
34 | "\n",
47 | "
\n",
48 | " \n",
49 | " \n",
50 | " \n",
51 | " Date \n",
52 | " CAPE \n",
53 | " Excess_CAPE_Yield \n",
54 | " Real_Returns_Equity \n",
55 | " Real_Returns_Bond \n",
56 | " Excess_Real_Returns_Equity \n",
57 | " \n",
58 | " \n",
59 | " \n",
60 | " \n",
61 | " 120 \n",
62 | " 1881.01 \n",
63 | " 18.473952 \n",
64 | " -0.010489 \n",
65 | " 0.045353 \n",
66 | " 0.056468 \n",
67 | " -0.011115 \n",
68 | " \n",
69 | " \n",
70 | " 121 \n",
71 | " 1881.02 \n",
72 | " 18.147258 \n",
73 | " -0.011393 \n",
74 | " 0.046774 \n",
75 | " 0.056199 \n",
76 | " -0.009425 \n",
77 | " \n",
78 | " \n",
79 | " 122 \n",
80 | " 1881.03 \n",
81 | " 18.270119 \n",
82 | " -0.013123 \n",
83 | " 0.042423 \n",
84 | " 0.054885 \n",
85 | " -0.012462 \n",
86 | " \n",
87 | " \n",
88 | " 123 \n",
89 | " 1881.04 \n",
90 | " 17.950108 \n",
91 | " -0.007504 \n",
92 | " 0.045971 \n",
93 | " 0.054635 \n",
94 | " -0.008665 \n",
95 | " \n",
96 | " \n",
97 | " 124 \n",
98 | " 1881.05 \n",
99 | " 18.869719 \n",
100 | " -0.008881 \n",
101 | " 0.041157 \n",
102 | " 0.054786 \n",
103 | " -0.013628 \n",
104 | " \n",
105 | " \n",
106 | "
\n",
107 | "
"
108 | ],
109 | "text/plain": [
110 | " Date CAPE Excess_CAPE_Yield Real_Returns_Equity \\\n",
111 | "120 1881.01 18.473952 -0.010489 0.045353 \n",
112 | "121 1881.02 18.147258 -0.011393 0.046774 \n",
113 | "122 1881.03 18.270119 -0.013123 0.042423 \n",
114 | "123 1881.04 17.950108 -0.007504 0.045971 \n",
115 | "124 1881.05 18.869719 -0.008881 0.041157 \n",
116 | "\n",
117 | " Real_Returns_Bond Excess_Real_Returns_Equity \n",
118 | "120 0.056468 -0.011115 \n",
119 | "121 0.056199 -0.009425 \n",
120 | "122 0.054885 -0.012462 \n",
121 | "123 0.054635 -0.008665 \n",
122 | "124 0.054786 -0.013628 "
123 | ]
124 | },
125 | "execution_count": 9,
126 | "metadata": {},
127 | "output_type": "execute_result"
128 | }
129 | ],
130 | "source": [
131 | "ie_data = pd.read_excel(\"../data/ie_data.xls\", sheet_name=\"Data\", skiprows=7)\n",
132 | "ie_data = ie_data[[\"Date\", \"CAPE\", \"Yield\", \"Real Return\", \"Real Return.1\", \"Returns.2\"]].copy()\n",
133 | "ie_data.rename(columns={\"Yield\": \"Excess_CAPE_Yield\", \"Real Return\": \"Real_Returns_Equity\", \"Real Return.1\": \"Real_Returns_Bond\", \"Returns.2\": \"Excess_Real_Returns_Equity\"}, inplace=True)\n",
134 | "ie_data = ie_data.dropna()\n",
135 | "ie_data.head()"
136 | ]
137 | },
138 | {
139 | "cell_type": "code",
140 | "execution_count": 24,
141 | "metadata": {},
142 | "outputs": [
143 | {
144 | "data": {
145 | "text/html": [
146 | "\n",
147 | "\n",
160 | "
\n",
161 | " \n",
162 | " \n",
163 | " \n",
164 | " Date \n",
165 | " P \n",
166 | " D \n",
167 | " E \n",
168 | " CPI \n",
169 | " Fraction \n",
170 | " Rate GS10 \n",
171 | " Price \n",
172 | " Dividend \n",
173 | " Price.1 \n",
174 | " ... \n",
175 | " CAPE \n",
176 | " Unnamed: 13 \n",
177 | " TR CAPE \n",
178 | " Unnamed: 15 \n",
179 | " Yield \n",
180 | " Returns \n",
181 | " Returns.1 \n",
182 | " Real Return \n",
183 | " Real Return.1 \n",
184 | " Returns.2 \n",
185 | " \n",
186 | " \n",
187 | " \n",
188 | " \n",
189 | " 0 \n",
190 | " 1871.01 \n",
191 | " 4.44 \n",
192 | " 0.26 \n",
193 | " 0.4 \n",
194 | " 12.4641 \n",
195 | " 1871.041667 \n",
196 | " 5.32 \n",
197 | " 97.250271 \n",
198 | " 5.694836 \n",
199 | " 97.250271 \n",
200 | " ... \n",
201 | " NaN \n",
202 | " NaN \n",
203 | " NaN \n",
204 | " NaN \n",
205 | " NaN \n",
206 | " 1.004177 \n",
207 | " 1.000000 \n",
208 | " 0.130609 \n",
209 | " 0.092504 \n",
210 | " 0.038106 \n",
211 | " \n",
212 | " \n",
213 | " 1 \n",
214 | " 1871.02 \n",
215 | " 4.5 \n",
216 | " 0.26 \n",
217 | " 0.4 \n",
218 | " 12.8446 \n",
219 | " 1871.125000 \n",
220 | " 5.32333 \n",
221 | " 95.644049 \n",
222 | " 5.526101 \n",
223 | " 96.104557 \n",
224 | " ... \n",
225 | " NaN \n",
226 | " NaN \n",
227 | " NaN \n",
228 | " NaN \n",
229 | " NaN \n",
230 | " 1.004180 \n",
231 | " 0.974424 \n",
232 | " 0.130858 \n",
233 | " 0.094635 \n",
234 | " 0.036224 \n",
235 | " \n",
236 | " \n",
237 | " 2 \n",
238 | " 1871.03 \n",
239 | " 4.61 \n",
240 | " 0.26 \n",
241 | " 0.4 \n",
242 | " 13.035 \n",
243 | " 1871.208333 \n",
244 | " 5.32667 \n",
245 | " 96.551327 \n",
246 | " 5.445411 \n",
247 | " 97.472173 \n",
248 | " ... \n",
249 | " NaN \n",
250 | " NaN \n",
251 | " NaN \n",
252 | " NaN \n",
253 | " NaN \n",
254 | " 1.004183 \n",
255 | " 0.964209 \n",
256 | " 0.130951 \n",
257 | " 0.096186 \n",
258 | " 0.034765 \n",
259 | " \n",
260 | " \n",
261 | " 3 \n",
262 | " 1871.04 \n",
263 | " 4.74 \n",
264 | " 0.26 \n",
265 | " 0.4 \n",
266 | " 12.5592 \n",
267 | " 1871.291667 \n",
268 | " 5.33 \n",
269 | " 103.034548 \n",
270 | " 5.651684 \n",
271 | " 104.492692 \n",
272 | " ... \n",
273 | " NaN \n",
274 | " NaN \n",
275 | " NaN \n",
276 | " NaN \n",
277 | " NaN \n",
278 | " 1.004185 \n",
279 | " 1.004919 \n",
280 | " 0.122056 \n",
281 | " 0.090972 \n",
282 | " 0.031084 \n",
283 | " \n",
284 | " \n",
285 | " 4 \n",
286 | " 1871.05 \n",
287 | " 4.86 \n",
288 | " 0.26 \n",
289 | " 0.4 \n",
290 | " 12.2738 \n",
291 | " 1871.375000 \n",
292 | " 5.33333 \n",
293 | " 108.099637 \n",
294 | " 5.783108 \n",
295 | " 110.118209 \n",
296 | " ... \n",
297 | " NaN \n",
298 | " NaN \n",
299 | " NaN \n",
300 | " NaN \n",
301 | " NaN \n",
302 | " 1.004188 \n",
303 | " 1.032591 \n",
304 | " 0.122638 \n",
305 | " 0.089488 \n",
306 | " 0.033150 \n",
307 | " \n",
308 | " \n",
309 | "
\n",
310 | "
5 rows × 22 columns
\n",
311 | "
"
312 | ],
313 | "text/plain": [
314 | " Date P D E CPI Fraction Rate GS10 Price \\\n",
315 | "0 1871.01 4.44 0.26 0.4 12.4641 1871.041667 5.32 97.250271 \n",
316 | "1 1871.02 4.5 0.26 0.4 12.8446 1871.125000 5.32333 95.644049 \n",
317 | "2 1871.03 4.61 0.26 0.4 13.035 1871.208333 5.32667 96.551327 \n",
318 | "3 1871.04 4.74 0.26 0.4 12.5592 1871.291667 5.33 103.034548 \n",
319 | "4 1871.05 4.86 0.26 0.4 12.2738 1871.375000 5.33333 108.099637 \n",
320 | "\n",
321 | " Dividend Price.1 ... CAPE Unnamed: 13 TR CAPE Unnamed: 15 Yield \\\n",
322 | "0 5.694836 97.250271 ... NaN NaN NaN NaN NaN \n",
323 | "1 5.526101 96.104557 ... NaN NaN NaN NaN NaN \n",
324 | "2 5.445411 97.472173 ... NaN NaN NaN NaN NaN \n",
325 | "3 5.651684 104.492692 ... NaN NaN NaN NaN NaN \n",
326 | "4 5.783108 110.118209 ... NaN NaN NaN NaN NaN \n",
327 | "\n",
328 | " Returns Returns.1 Real Return Real Return.1 Returns.2 \n",
329 | "0 1.004177 1.000000 0.130609 0.092504 0.038106 \n",
330 | "1 1.004180 0.974424 0.130858 0.094635 0.036224 \n",
331 | "2 1.004183 0.964209 0.130951 0.096186 0.034765 \n",
332 | "3 1.004185 1.004919 0.122056 0.090972 0.031084 \n",
333 | "4 1.004188 1.032591 0.122638 0.089488 0.033150 \n",
334 | "\n",
335 | "[5 rows x 22 columns]"
336 | ]
337 | },
338 | "execution_count": 24,
339 | "metadata": {},
340 | "output_type": "execute_result"
341 | }
342 | ],
343 | "source": [
344 | "ie_data = pd.read_excel(\"../data/ie_data.xls\", sheet_name=\"Data\", skiprows=7)\n",
345 | "ie_data.drop(ie_data.tail(1).index, inplace=True) \n",
346 | "ie_data.head()"
347 | ]
348 | },
349 | {
350 | "cell_type": "code",
351 | "execution_count": 27,
352 | "metadata": {},
353 | "outputs": [
354 | {
355 | "data": {
356 | "text/plain": [
357 | "-0.059238835834665604"
358 | ]
359 | },
360 | "execution_count": 27,
361 | "metadata": {},
362 | "output_type": "execute_result"
363 | }
364 | ],
365 | "source": [
366 | "ie_data[\"Real Return\"].min()"
367 | ]
368 | },
369 | {
370 | "cell_type": "code",
371 | "execution_count": null,
372 | "metadata": {},
373 | "outputs": [],
374 | "source": [
375 | "x = 1/(np.array(ie_data[(ie_data[\"Date\"]<=2006)][\"CAPE\"]).astype(float))\n",
376 | "x = sm.add_constant(x)\n",
377 | "y = np.array(ie_data[(ie_data[\"Date\"]<=2006)][\"Real_Returns_Equity\"]).astype(float)\n",
378 | "\n",
379 | "model = sm.OLS(y, x, missing=\"drop\")\n",
380 | "summary = model.fit()\n",
381 | "summary.summary()"
382 | ]
383 | },
384 | {
385 | "cell_type": "code",
386 | "execution_count": null,
387 | "metadata": {},
388 | "outputs": [],
389 | "source": [
390 | "def cape_regression(cape_values, time_period, data=ie_data):\n",
391 | " x = np.array(cape_values)\n",
392 | " x = sm.add_constant(x)\n",
393 | " model = sm.OLS(np.array(data[\"Real_Total_Return_Price\"]), x, missing=\"drop\")\n",
394 | " summary = model.fit()"
395 | ]
396 | },
397 | {
398 | "cell_type": "code",
399 | "execution_count": null,
400 | "metadata": {},
401 | "outputs": [],
402 | "source": []
403 | },
404 | {
405 | "cell_type": "markdown",
406 | "metadata": {},
407 | "source": [
408 | "## Taxes"
409 | ]
410 | },
411 | {
412 | "cell_type": "code",
413 | "execution_count": null,
414 | "metadata": {},
415 | "outputs": [],
416 | "source": [
417 | "ie_data = pd.read_csv(\"../data/ie_data_tax.csv\", index_col=False)\n",
418 | "ie_data = ie_data[ie_data[\"Date\"]<2011.09]\n",
419 | "print(ie_data.columns)\n",
420 | "ie_data.head()"
421 | ]
422 | },
423 | {
424 | "cell_type": "code",
425 | "execution_count": null,
426 | "metadata": {},
427 | "outputs": [],
428 | "source": [
429 | "preprocess = lambda x: float(x.replace(\" \", \"\").replace(\",\", \"\")) if not isinstance(x, float) else x\n",
430 | "ie_data[\"CAPE\"] = ie_data[\"CAPE\"].apply(preprocess)\n",
431 | "ie_data[\"Real_Total_Return_Price\"] = ie_data[\"Real_Total_Return_Price\"].apply(preprocess)"
432 | ]
433 | },
434 | {
435 | "cell_type": "markdown",
436 | "metadata": {},
437 | "source": [
438 | "## Interest Rates"
439 | ]
440 | },
441 | {
442 | "cell_type": "code",
443 | "execution_count": 16,
444 | "metadata": {},
445 | "outputs": [
446 | {
447 | "data": {
448 | "text/html": [
449 | "\n",
450 | "\n",
463 | "
\n",
464 | " \n",
465 | " \n",
466 | " \n",
467 | " Date \n",
468 | " P \n",
469 | " D \n",
470 | " E \n",
471 | " CPI \n",
472 | " Fraction \n",
473 | " Rate GS10 \n",
474 | " Price \n",
475 | " Dividend \n",
476 | " Price.1 \n",
477 | " ... \n",
478 | " CAPE \n",
479 | " Unnamed: 13 \n",
480 | " TR CAPE \n",
481 | " Unnamed: 15 \n",
482 | " Yield \n",
483 | " Returns \n",
484 | " Returns.1 \n",
485 | " Real Return \n",
486 | " Real Return.1 \n",
487 | " Returns.2 \n",
488 | " \n",
489 | " \n",
490 | " \n",
491 | " \n",
492 | " 0 \n",
493 | " 1871.01 \n",
494 | " 4.44 \n",
495 | " 0.26 \n",
496 | " 0.4 \n",
497 | " 12.4641 \n",
498 | " 1871.041667 \n",
499 | " 5.32 \n",
500 | " 97.250271 \n",
501 | " 5.694836 \n",
502 | " 97.250271 \n",
503 | " ... \n",
504 | " NaN \n",
505 | " NaN \n",
506 | " NaN \n",
507 | " NaN \n",
508 | " NaN \n",
509 | " 1.004177 \n",
510 | " 1.000000 \n",
511 | " 0.130609 \n",
512 | " 0.092504 \n",
513 | " 0.038106 \n",
514 | " \n",
515 | " \n",
516 | " 1 \n",
517 | " 1871.02 \n",
518 | " 4.5 \n",
519 | " 0.26 \n",
520 | " 0.4 \n",
521 | " 12.8446 \n",
522 | " 1871.125000 \n",
523 | " 5.32333 \n",
524 | " 95.644049 \n",
525 | " 5.526101 \n",
526 | " 96.104557 \n",
527 | " ... \n",
528 | " NaN \n",
529 | " NaN \n",
530 | " NaN \n",
531 | " NaN \n",
532 | " NaN \n",
533 | " 1.004180 \n",
534 | " 0.974424 \n",
535 | " 0.130858 \n",
536 | " 0.094635 \n",
537 | " 0.036224 \n",
538 | " \n",
539 | " \n",
540 | " 2 \n",
541 | " 1871.03 \n",
542 | " 4.61 \n",
543 | " 0.26 \n",
544 | " 0.4 \n",
545 | " 13.035 \n",
546 | " 1871.208333 \n",
547 | " 5.32667 \n",
548 | " 96.551327 \n",
549 | " 5.445411 \n",
550 | " 97.472173 \n",
551 | " ... \n",
552 | " NaN \n",
553 | " NaN \n",
554 | " NaN \n",
555 | " NaN \n",
556 | " NaN \n",
557 | " 1.004183 \n",
558 | " 0.964209 \n",
559 | " 0.130951 \n",
560 | " 0.096186 \n",
561 | " 0.034765 \n",
562 | " \n",
563 | " \n",
564 | " 3 \n",
565 | " 1871.04 \n",
566 | " 4.74 \n",
567 | " 0.26 \n",
568 | " 0.4 \n",
569 | " 12.5592 \n",
570 | " 1871.291667 \n",
571 | " 5.33 \n",
572 | " 103.034548 \n",
573 | " 5.651684 \n",
574 | " 104.492692 \n",
575 | " ... \n",
576 | " NaN \n",
577 | " NaN \n",
578 | " NaN \n",
579 | " NaN \n",
580 | " NaN \n",
581 | " 1.004185 \n",
582 | " 1.004919 \n",
583 | " 0.122056 \n",
584 | " 0.090972 \n",
585 | " 0.031084 \n",
586 | " \n",
587 | " \n",
588 | " 4 \n",
589 | " 1871.05 \n",
590 | " 4.86 \n",
591 | " 0.26 \n",
592 | " 0.4 \n",
593 | " 12.2738 \n",
594 | " 1871.375000 \n",
595 | " 5.33333 \n",
596 | " 108.099637 \n",
597 | " 5.783108 \n",
598 | " 110.118209 \n",
599 | " ... \n",
600 | " NaN \n",
601 | " NaN \n",
602 | " NaN \n",
603 | " NaN \n",
604 | " NaN \n",
605 | " 1.004188 \n",
606 | " 1.032591 \n",
607 | " 0.122638 \n",
608 | " 0.089488 \n",
609 | " 0.033150 \n",
610 | " \n",
611 | " \n",
612 | "
\n",
613 | "
5 rows × 22 columns
\n",
614 | "
"
615 | ],
616 | "text/plain": [
617 | " Date P D E CPI Fraction Rate GS10 Price \\\n",
618 | "0 1871.01 4.44 0.26 0.4 12.4641 1871.041667 5.32 97.250271 \n",
619 | "1 1871.02 4.5 0.26 0.4 12.8446 1871.125000 5.32333 95.644049 \n",
620 | "2 1871.03 4.61 0.26 0.4 13.035 1871.208333 5.32667 96.551327 \n",
621 | "3 1871.04 4.74 0.26 0.4 12.5592 1871.291667 5.33 103.034548 \n",
622 | "4 1871.05 4.86 0.26 0.4 12.2738 1871.375000 5.33333 108.099637 \n",
623 | "\n",
624 | " Dividend Price.1 ... CAPE Unnamed: 13 TR CAPE Unnamed: 15 Yield \\\n",
625 | "0 5.694836 97.250271 ... NaN NaN NaN NaN NaN \n",
626 | "1 5.526101 96.104557 ... NaN NaN NaN NaN NaN \n",
627 | "2 5.445411 97.472173 ... NaN NaN NaN NaN NaN \n",
628 | "3 5.651684 104.492692 ... NaN NaN NaN NaN NaN \n",
629 | "4 5.783108 110.118209 ... NaN NaN NaN NaN NaN \n",
630 | "\n",
631 | " Returns Returns.1 Real Return Real Return.1 Returns.2 \n",
632 | "0 1.004177 1.000000 0.130609 0.092504 0.038106 \n",
633 | "1 1.004180 0.974424 0.130858 0.094635 0.036224 \n",
634 | "2 1.004183 0.964209 0.130951 0.096186 0.034765 \n",
635 | "3 1.004185 1.004919 0.122056 0.090972 0.031084 \n",
636 | "4 1.004188 1.032591 0.122638 0.089488 0.033150 \n",
637 | "\n",
638 | "[5 rows x 22 columns]"
639 | ]
640 | },
641 | "execution_count": 16,
642 | "metadata": {},
643 | "output_type": "execute_result"
644 | }
645 | ],
646 | "source": [
647 | "ie_data.head()"
648 | ]
649 | },
650 | {
651 | "cell_type": "code",
652 | "execution_count": 18,
653 | "metadata": {},
654 | "outputs": [],
655 | "source": [
656 | "# Calculate 2 and 5 Years Annualized Expected Real Equity Return\n",
657 | "n, p = ie_data.shape\n",
658 | "return_2 = []\n",
659 | "return_5 = []\n",
660 | "for i, row in ie_data.iterrows():\n",
661 | "\n",
662 | " if i+24 < n:\n",
663 | " return_2.append((ie_data.loc[i+24, \"Price.1\"]/ie_data.loc[i, \"Price.1\"])**(1/2)-1)\n",
664 | " else:\n",
665 | " return_2.append(np.nan)\n",
666 | " \n",
667 | " if i+60 < n:\n",
668 | " return_5.append((ie_data.loc[i+60, \"Price.1\"]/ie_data.loc[i, \"Price.1\"])**(1/5)-1)\n",
669 | " else:\n",
670 | " return_5.append(np.nan)\n",
671 | "\n",
672 | "ie_data[\"Real_Return_2\"] = return_2\n",
673 | "ie_data[\"Real_Return_5\"] = return_5\n",
674 | "\n",
675 | "# Calculate 2 and 5 Years Annualized Real Yield of Long-term Bond\n",
676 | "yield_2 = []\n",
677 | "yield_5 = []\n",
678 | "for i, row in ie_data.iterrows():\n",
679 | "\n",
680 | " if i-24 >= 0:\n",
681 | " yield_2.append(ie_data.loc[i, \"Rate GS10\"]/100-((ie_data.loc[i, \"CPI\"]/ie_data.loc[i-24, \"CPI\"])**(1/2)-1))\n",
682 | " else:\n",
683 | " yield_2.append(np.nan)\n",
684 | " \n",
685 | " if i-60 >= 0:\n",
686 | " yield_5.append(ie_data.loc[i, \"Rate GS10\"]/100-((ie_data.loc[i, \"CPI\"]/ie_data.loc[i-60, \"CPI\"])**(1/5)-1))\n",
687 | " else:\n",
688 | " yield_5.append(np.nan)\n",
689 | "\n",
690 | "ie_data[\"Real_Yield_2\"] = yield_2\n",
691 | "ie_data[\"Real_Yield_5\"] = yield_5"
692 | ]
693 | },
694 | {
695 | "cell_type": "code",
696 | "execution_count": 20,
697 | "metadata": {},
698 | "outputs": [
699 | {
700 | "data": {
701 | "text/html": [
702 | "\n",
703 | "\n",
716 | "
\n",
717 | " \n",
718 | " \n",
719 | " \n",
720 | " Date \n",
721 | " 10Y_Nominal_Yield \n",
722 | " CAPE \n",
723 | " Excess_CAPE_Yield \n",
724 | " Real_Returns_Equity_10Y \n",
725 | " Real_Returns_Bond_10Y \n",
726 | " Excess_Real_Returns_Equity_10Y \n",
727 | " Real_Returns_Equity_2Y \n",
728 | " Real_Returns_Equity_5Y \n",
729 | " Real_Yield_2Y \n",
730 | " Real_Yield_5Y \n",
731 | " \n",
732 | " \n",
733 | " \n",
734 | " \n",
735 | " 120 \n",
736 | " 1881.01 \n",
737 | " 3.7 \n",
738 | " 18.473952 \n",
739 | " -0.010489 \n",
740 | " 0.045353 \n",
741 | " 0.056468 \n",
742 | " -0.011115 \n",
743 | " -0.010091 \n",
744 | " 0.056730 \n",
745 | " -0.029738 \n",
746 | " 0.064821 \n",
747 | " \n",
748 | " \n",
749 | " 121 \n",
750 | " 1881.02 \n",
751 | " 3.69333 \n",
752 | " 18.147258 \n",
753 | " -0.011393 \n",
754 | " 0.046774 \n",
755 | " 0.056199 \n",
756 | " -0.009425 \n",
757 | " -0.018835 \n",
758 | " 0.063602 \n",
759 | " -0.029070 \n",
760 | " 0.062798 \n",
761 | " \n",
762 | " \n",
763 | " 122 \n",
764 | " 1881.03 \n",
765 | " 3.68667 \n",
766 | " 18.270119 \n",
767 | " -0.013123 \n",
768 | " 0.042423 \n",
769 | " 0.054885 \n",
770 | " -0.012462 \n",
771 | " -0.013208 \n",
772 | " 0.059318 \n",
773 | " -0.035246 \n",
774 | " 0.062731 \n",
775 | " \n",
776 | " \n",
777 | " 123 \n",
778 | " 1881.04 \n",
779 | " 3.68 \n",
780 | " 17.950108 \n",
781 | " -0.007504 \n",
782 | " 0.045971 \n",
783 | " 0.054635 \n",
784 | " -0.008665 \n",
785 | " 0.008850 \n",
786 | " 0.061809 \n",
787 | " -0.046904 \n",
788 | " 0.059005 \n",
789 | " \n",
790 | " \n",
791 | " 124 \n",
792 | " 1881.05 \n",
793 | " 3.67333 \n",
794 | " 18.869719 \n",
795 | " -0.008881 \n",
796 | " 0.041157 \n",
797 | " 0.054786 \n",
798 | " -0.013628 \n",
799 | " -0.021196 \n",
800 | " 0.051492 \n",
801 | " -0.041596 \n",
802 | " 0.053821 \n",
803 | " \n",
804 | " \n",
805 | "
\n",
806 | "
"
807 | ],
808 | "text/plain": [
809 | " Date 10Y_Nominal_Yield CAPE Excess_CAPE_Yield \\\n",
810 | "120 1881.01 3.7 18.473952 -0.010489 \n",
811 | "121 1881.02 3.69333 18.147258 -0.011393 \n",
812 | "122 1881.03 3.68667 18.270119 -0.013123 \n",
813 | "123 1881.04 3.68 17.950108 -0.007504 \n",
814 | "124 1881.05 3.67333 18.869719 -0.008881 \n",
815 | "\n",
816 | " Real_Returns_Equity_10Y Real_Returns_Bond_10Y \\\n",
817 | "120 0.045353 0.056468 \n",
818 | "121 0.046774 0.056199 \n",
819 | "122 0.042423 0.054885 \n",
820 | "123 0.045971 0.054635 \n",
821 | "124 0.041157 0.054786 \n",
822 | "\n",
823 | " Excess_Real_Returns_Equity_10Y Real_Returns_Equity_2Y \\\n",
824 | "120 -0.011115 -0.010091 \n",
825 | "121 -0.009425 -0.018835 \n",
826 | "122 -0.012462 -0.013208 \n",
827 | "123 -0.008665 0.008850 \n",
828 | "124 -0.013628 -0.021196 \n",
829 | "\n",
830 | " Real_Returns_Equity_5Y Real_Yield_2Y Real_Yield_5Y \n",
831 | "120 0.056730 -0.029738 0.064821 \n",
832 | "121 0.063602 -0.029070 0.062798 \n",
833 | "122 0.059318 -0.035246 0.062731 \n",
834 | "123 0.061809 -0.046904 0.059005 \n",
835 | "124 0.051492 -0.041596 0.053821 "
836 | ]
837 | },
838 | "execution_count": 20,
839 | "metadata": {},
840 | "output_type": "execute_result"
841 | }
842 | ],
843 | "source": [
844 | "# Select varialbles of interest and sample period\n",
845 | "df = ie_data[[\"Date\", \"Rate GS10\", \"CAPE\", \"Yield\", \"Real Return\", \"Real Return.1\", \n",
846 | " \"Returns.2\", \"Real_Return_2\", \"Real_Return_5\", \"Real_Yield_2\", \n",
847 | " \"Real_Yield_5\"]].copy()\n",
848 | "df.rename(columns={\"Rate GS10\": \"10Y_Nominal_Yield\", \"Yield\": \"Excess_CAPE_Yield\", \"Real Return\": \"Real_Returns_Equity_10Y\", \n",
849 | " \"Real Return.1\": \"Real_Returns_Bond_10Y\", \"Returns.2\": \"Excess_Real_Returns_Equity_10Y\", \n",
850 | " \"Real_Return_2\": \"Real_Returns_Equity_2Y\", \"Real_Return_5\": \"Real_Returns_Equity_5Y\", \n",
851 | " \"Real_Yield_2\": \"Real_Yield_2Y\", \"Real_Yield_5\": \"Real_Yield_5Y\"}, inplace=True)\n",
852 | "# Drop NAs, sample period: 1881.01-2011.08\n",
853 | "df_clean = df.dropna()\n",
854 | "df_clean.head()"
855 | ]
856 | },
857 | {
858 | "cell_type": "code",
859 | "execution_count": 21,
860 | "metadata": {},
861 | "outputs": [
862 | {
863 | "data": {
864 | "text/html": [
865 | "\n",
866 | "\n",
879 | "
\n",
880 | " \n",
881 | " \n",
882 | " \n",
883 | " Date \n",
884 | " CAPE \n",
885 | " Excess_CAPE_Yield \n",
886 | " Real_Returns_Equity_10Y \n",
887 | " Real_Returns_Bond_10Y \n",
888 | " Excess_Real_Returns_Equity_10Y \n",
889 | " Real_Returns_Equity_2Y \n",
890 | " Real_Returns_Equity_5Y \n",
891 | " Real_Yield_2Y \n",
892 | " Real_Yield_5Y \n",
893 | " Log_CAPE \n",
894 | " CAPE_Inverse \n",
895 | " Real_Yield_10Y \n",
896 | " \n",
897 | " \n",
898 | " \n",
899 | " \n",
900 | " count \n",
901 | " 1809.000000 \n",
902 | " 1689.000000 \n",
903 | " 1689.000000 \n",
904 | " 1688.000000 \n",
905 | " 1688.000000 \n",
906 | " 1688.000000 \n",
907 | " 1785.000000 \n",
908 | " 1749.000000 \n",
909 | " 1785.000000 \n",
910 | " 1749.000000 \n",
911 | " 1689.000000 \n",
912 | " 1689.000000 \n",
913 | " 1689.000000 \n",
914 | " \n",
915 | " \n",
916 | " mean \n",
917 | " 1945.940547 \n",
918 | " 17.205097 \n",
919 | " 0.046787 \n",
920 | " 0.068713 \n",
921 | " 0.025676 \n",
922 | " 0.043037 \n",
923 | " 0.077416 \n",
924 | " 0.071505 \n",
925 | " 0.023236 \n",
926 | " 0.023088 \n",
927 | " 2.763301 \n",
928 | " 0.068786 \n",
929 | " 0.021999 \n",
930 | " \n",
931 | " \n",
932 | " std \n",
933 | " 43.529812 \n",
934 | " 7.038601 \n",
935 | " 0.044269 \n",
936 | " 0.051265 \n",
937 | " 0.035520 \n",
938 | " 0.048857 \n",
939 | " 0.131341 \n",
940 | " 0.078810 \n",
941 | " 0.045758 \n",
942 | " 0.032992 \n",
943 | " 0.410662 \n",
944 | " 0.030577 \n",
945 | " 0.024770 \n",
946 | " \n",
947 | " \n",
948 | " min \n",
949 | " 1871.010000 \n",
950 | " 4.784241 \n",
951 | " -0.025777 \n",
952 | " -0.059239 \n",
953 | " -0.054197 \n",
954 | " -0.099817 \n",
955 | " -0.436454 \n",
956 | " -0.132330 \n",
957 | " -0.147592 \n",
958 | " -0.106352 \n",
959 | " 1.565327 \n",
960 | " 0.022625 \n",
961 | " -0.036078 \n",
962 | " \n",
963 | " \n",
964 | " 25% \n",
965 | " 1908.090000 \n",
966 | " 11.895760 \n",
967 | " 0.015711 \n",
968 | " 0.037107 \n",
969 | " -0.001465 \n",
970 | " 0.012844 \n",
971 | " 0.001933 \n",
972 | " 0.019214 \n",
973 | " 0.004824 \n",
974 | " 0.007119 \n",
975 | " 2.476182 \n",
976 | " 0.047817 \n",
977 | " 0.006579 \n",
978 | " \n",
979 | " \n",
980 | " 50% \n",
981 | " 1946.050000 \n",
982 | " 16.378480 \n",
983 | " 0.034904 \n",
984 | " 0.068403 \n",
985 | " 0.022427 \n",
986 | " 0.036029 \n",
987 | " 0.074828 \n",
988 | " 0.072200 \n",
989 | " 0.023176 \n",
990 | " 0.022571 \n",
991 | " 2.795968 \n",
992 | " 0.061056 \n",
993 | " 0.023181 \n",
994 | " \n",
995 | " \n",
996 | " 75% \n",
997 | " 1984.010000 \n",
998 | " 20.913092 \n",
999 | " 0.066782 \n",
1000 | " 0.105631 \n",
1001 | " 0.056468 \n",
1002 | " 0.065182 \n",
1003 | " 0.160573 \n",
1004 | " 0.121356 \n",
1005 | " 0.040884 \n",
1006 | " 0.039101 \n",
1007 | " 3.040375 \n",
1008 | " 0.084064 \n",
1009 | " 0.038826 \n",
1010 | " \n",
1011 | " \n",
1012 | " max \n",
1013 | " 2021.090000 \n",
1014 | " 44.197940 \n",
1015 | " 0.235340 \n",
1016 | " 0.199585 \n",
1017 | " 0.109818 \n",
1018 | " 0.195984 \n",
1019 | " 0.542323 \n",
1020 | " 0.333465 \n",
1021 | " 0.172417 \n",
1022 | " 0.122252 \n",
1023 | " 3.788678 \n",
1024 | " 0.209020 \n",
1025 | " 0.076360 \n",
1026 | " \n",
1027 | " \n",
1028 | "
\n",
1029 | "
"
1030 | ],
1031 | "text/plain": [
1032 | " Date CAPE Excess_CAPE_Yield Real_Returns_Equity_10Y \\\n",
1033 | "count 1809.000000 1689.000000 1689.000000 1688.000000 \n",
1034 | "mean 1945.940547 17.205097 0.046787 0.068713 \n",
1035 | "std 43.529812 7.038601 0.044269 0.051265 \n",
1036 | "min 1871.010000 4.784241 -0.025777 -0.059239 \n",
1037 | "25% 1908.090000 11.895760 0.015711 0.037107 \n",
1038 | "50% 1946.050000 16.378480 0.034904 0.068403 \n",
1039 | "75% 1984.010000 20.913092 0.066782 0.105631 \n",
1040 | "max 2021.090000 44.197940 0.235340 0.199585 \n",
1041 | "\n",
1042 | " Real_Returns_Bond_10Y Excess_Real_Returns_Equity_10Y \\\n",
1043 | "count 1688.000000 1688.000000 \n",
1044 | "mean 0.025676 0.043037 \n",
1045 | "std 0.035520 0.048857 \n",
1046 | "min -0.054197 -0.099817 \n",
1047 | "25% -0.001465 0.012844 \n",
1048 | "50% 0.022427 0.036029 \n",
1049 | "75% 0.056468 0.065182 \n",
1050 | "max 0.109818 0.195984 \n",
1051 | "\n",
1052 | " Real_Returns_Equity_2Y Real_Returns_Equity_5Y Real_Yield_2Y \\\n",
1053 | "count 1785.000000 1749.000000 1785.000000 \n",
1054 | "mean 0.077416 0.071505 0.023236 \n",
1055 | "std 0.131341 0.078810 0.045758 \n",
1056 | "min -0.436454 -0.132330 -0.147592 \n",
1057 | "25% 0.001933 0.019214 0.004824 \n",
1058 | "50% 0.074828 0.072200 0.023176 \n",
1059 | "75% 0.160573 0.121356 0.040884 \n",
1060 | "max 0.542323 0.333465 0.172417 \n",
1061 | "\n",
1062 | " Real_Yield_5Y Log_CAPE CAPE_Inverse Real_Yield_10Y \n",
1063 | "count 1749.000000 1689.000000 1689.000000 1689.000000 \n",
1064 | "mean 0.023088 2.763301 0.068786 0.021999 \n",
1065 | "std 0.032992 0.410662 0.030577 0.024770 \n",
1066 | "min -0.106352 1.565327 0.022625 -0.036078 \n",
1067 | "25% 0.007119 2.476182 0.047817 0.006579 \n",
1068 | "50% 0.022571 2.795968 0.061056 0.023181 \n",
1069 | "75% 0.039101 3.040375 0.084064 0.038826 \n",
1070 | "max 0.122252 3.788678 0.209020 0.076360 "
1071 | ]
1072 | },
1073 | "execution_count": 21,
1074 | "metadata": {},
1075 | "output_type": "execute_result"
1076 | }
1077 | ],
1078 | "source": [
1079 | "df[\"Log_CAPE\"] = np.log(df[\"CAPE\"])\n",
1080 | "df[\"CAPE_Inverse\"] = 1/df[\"CAPE\"]\n",
1081 | "df[\"Real_Yield_10Y\"] = df.CAPE_Inverse - df.Excess_CAPE_Yield\n",
1082 | "# Descriptive statistics\n",
1083 | "df.describe()"
1084 | ]
1085 | },
1086 | {
1087 | "cell_type": "markdown",
1088 | "metadata": {},
1089 | "source": [
1090 | "Regression given by Shiller(1996):\n",
1091 | "$$\n",
1092 | "Real Returns Equity_{t+k}=\\alpha+\\beta_k \\log{CAPE_{t}}+\\varepsilon_{t+k,k}\n",
1093 | "$$\n",
1094 | "The intuition behind the regression is that under low-interest rate regimes, CAPE is unusually high. Currently SP500 CAPE sits at 39.6, 2nd highest of all time. A high CAPE ratio suggests that equities are overvalued, resulting in low subsequent returns while a low CAPE is suggestive of higher future returns. "
1095 | ]
1096 | },
1097 | {
1098 | "cell_type": "code",
1099 | "execution_count": 22,
1100 | "metadata": {},
1101 | "outputs": [
1102 | {
1103 | "name": "stdout",
1104 | "output_type": "stream",
1105 | "text": [
1106 | " OLS Regression Results \n",
1107 | "===================================================================================\n",
1108 | "Dep. Variable: Real_Returns_Equity_10Y R-squared: 0.622\n",
1109 | "Model: OLS Adj. R-squared: 0.615\n",
1110 | "Method: Least Squares F-statistic: 88.74\n",
1111 | "Date: Wed, 01 Dec 2021 Prob (F-statistic): 5.43e-13\n",
1112 | "Time: 22:11:20 Log-Likelihood: 148.66\n",
1113 | "No. Observations: 56 AIC: -293.3\n",
1114 | "Df Residuals: 54 BIC: -289.3\n",
1115 | "Df Model: 1 \n",
1116 | "Covariance Type: nonrobust \n",
1117 | "==============================================================================\n",
1118 | " coef std err t P>|t| [0.025 0.975]\n",
1119 | "------------------------------------------------------------------------------\n",
1120 | "const 0.4565 0.038 12.034 0.000 0.380 0.533\n",
1121 | "Log_CAPE -0.1169 0.012 -9.420 0.000 -0.142 -0.092\n",
1122 | "==============================================================================\n",
1123 | "Omnibus: 7.599 Durbin-Watson: 0.065\n",
1124 | "Prob(Omnibus): 0.022 Jarque-Bera (JB): 7.285\n",
1125 | "Skew: 0.820 Prob(JB): 0.0262\n",
1126 | "Kurtosis: 2.342 Cond. No. 55.4\n",
1127 | "==============================================================================\n",
1128 | "\n",
1129 | "Warnings:\n",
1130 | "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n"
1131 | ]
1132 | }
1133 | ],
1134 | "source": [
1135 | "# Regression of different sample period\n",
1136 | "\n",
1137 | "split = 2007.01\n",
1138 | "\n",
1139 | "reg_data = df[df.Date < split][[\"Log_CAPE\", \"Real_Returns_Equity_10Y\"]].dropna()\n",
1140 | "reg1_before = sm.OLS(reg_data.Real_Returns_Equity_10Y, sm.add_constant(reg_data[[\"Log_CAPE\"]]))\n",
1141 | "result1_before = reg1_before.fit()\n",
1142 | "\n",
1143 | "reg_data = df[df.Date >= split][[\"Log_CAPE\", \"Real_Returns_Equity_10Y\"]].dropna()\n",
1144 | "reg1_after = sm.OLS(reg_data.Real_Returns_Equity_10Y, sm.add_constant(reg_data[[\"Log_CAPE\"]]))\n",
1145 | "result1_after = reg1_after.fit()\n",
1146 | "\n",
1147 | "# Entire period\n",
1148 | "reg_data = df[[\"Log_CAPE\", \"Real_Returns_Equity_10Y\"]].dropna()\n",
1149 | "reg1_all = sm.OLS(reg_data.Real_Returns_Equity_10Y, sm.add_constant(reg_data[[\"Log_CAPE\"]]))\n",
1150 | "result1_all = reg1_all.fit()\n",
1151 | "\n",
1152 | "print(result1_after.summary())"
1153 | ]
1154 | },
1155 | {
1156 | "cell_type": "code",
1157 | "execution_count": null,
1158 | "metadata": {},
1159 | "outputs": [],
1160 | "source": []
1161 | },
1162 | {
1163 | "cell_type": "markdown",
1164 | "metadata": {},
1165 | "source": [
1166 | "## Accounting"
1167 | ]
1168 | },
1169 | {
1170 | "cell_type": "code",
1171 | "execution_count": null,
1172 | "metadata": {},
1173 | "outputs": [],
1174 | "source": []
1175 | },
1176 | {
1177 | "cell_type": "code",
1178 | "execution_count": null,
1179 | "metadata": {},
1180 | "outputs": [],
1181 | "source": []
1182 | },
1183 | {
1184 | "cell_type": "code",
1185 | "execution_count": null,
1186 | "metadata": {},
1187 | "outputs": [],
1188 | "source": []
1189 | },
1190 | {
1191 | "cell_type": "code",
1192 | "execution_count": null,
1193 | "metadata": {},
1194 | "outputs": [],
1195 | "source": []
1196 | },
1197 | {
1198 | "cell_type": "code",
1199 | "execution_count": null,
1200 | "metadata": {},
1201 | "outputs": [],
1202 | "source": []
1203 | },
1204 | {
1205 | "cell_type": "markdown",
1206 | "metadata": {},
1207 | "source": [
1208 | "## Market Composition"
1209 | ]
1210 | },
1211 | {
1212 | "cell_type": "code",
1213 | "execution_count": null,
1214 | "metadata": {},
1215 | "outputs": [],
1216 | "source": []
1217 | }
1218 | ],
1219 | "metadata": {
1220 | "kernelspec": {
1221 | "display_name": "Python 3",
1222 | "language": "python",
1223 | "name": "python3"
1224 | },
1225 | "language_info": {
1226 | "codemirror_mode": {
1227 | "name": "ipython",
1228 | "version": 3
1229 | },
1230 | "file_extension": ".py",
1231 | "mimetype": "text/x-python",
1232 | "name": "python",
1233 | "nbconvert_exporter": "python",
1234 | "pygments_lexer": "ipython3",
1235 | "version": "3.6.8"
1236 | }
1237 | },
1238 | "nbformat": 4,
1239 | "nbformat_minor": 2
1240 | }
1241 |
--------------------------------------------------------------------------------
/notebooks/accounting.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 2,
6 | "metadata": {},
7 | "outputs": [],
8 | "source": [
9 | "import os\n",
10 | "import sys\n",
11 | "import numpy as np\n",
12 | "import pandas as pd\n",
13 | "import matplotlib as mlp\n",
14 | "from matplotlib import pyplot as plt\n",
15 | "import seaborn as sns\n",
16 | "%matplotlib inline\n",
17 | "mlp.style.use(\"seaborn\")\n",
18 | "import statsmodels\n",
19 | "import statsmodels.api as sm\n",
20 | "\n",
21 | "import warnings\n",
22 | "warnings.filterwarnings(\"ignore\")"
23 | ]
24 | },
25 | {
26 | "cell_type": "code",
27 | "execution_count": 9,
28 | "metadata": {},
29 | "outputs": [
30 | {
31 | "name": "stdout",
32 | "output_type": "stream",
33 | "text": [
34 | "Index(['Unnamed: 0', 'Date_x', 'P', 'D', 'E', 'CPI', 'Date Fraction',\n",
35 | " 'Long Interest Rate GS10', 'Real Price', 'Real Dividend',\n",
36 | " 'Real TR Price ', 'Real Earnings', 'Real TR Scaled Earnings ', 'CAPE',\n",
37 | " 'TR CAPE', 'Excess CAPE Yield', 'Monthly Total Bond Returns',\n",
38 | " 'Real Total BondReturns', '10 year anualized stock real return',\n",
39 | " '10 year annualized Real Return',\n",
40 | " 'Real 10 year excess annualizedReturns', 'Real TR Price float',\n",
41 | " 'Real TR Scaled Earnings float', 'Excess CAPE Yield float',\n",
42 | " '10 year anualized stock real return float',\n",
43 | " '10 year annualized Real Return float',\n",
44 | " 'Real 10 year excess annualizedReturns float', 'proxy', 'Date_y', 'PFE',\n",
45 | " 'Real PFE', 'PFE10', 'Accounting Adjusted CAPE'],\n",
46 | " dtype='object')\n"
47 | ]
48 | },
49 | {
50 | "data": {
51 | "text/html": [
52 | "\n",
53 | "\n",
66 | "
\n",
67 | " \n",
68 | " \n",
69 | " \n",
70 | " Unnamed: 0 \n",
71 | " Date_x \n",
72 | " P \n",
73 | " D \n",
74 | " E \n",
75 | " CPI \n",
76 | " Date Fraction \n",
77 | " Long Interest Rate GS10 \n",
78 | " Real Price \n",
79 | " Real Dividend \n",
80 | " ... \n",
81 | " Excess CAPE Yield float \n",
82 | " 10 year anualized stock real return float \n",
83 | " 10 year annualized Real Return float \n",
84 | " Real 10 year excess annualizedReturns float \n",
85 | " proxy \n",
86 | " Date_y \n",
87 | " PFE \n",
88 | " Real PFE \n",
89 | " PFE10 \n",
90 | " Accounting Adjusted CAPE \n",
91 | " \n",
92 | " \n",
93 | " \n",
94 | " \n",
95 | " 0 \n",
96 | " 0 \n",
97 | " 1871.01 \n",
98 | " 4.44 \n",
99 | " 0.26 \n",
100 | " 0.4 \n",
101 | " 12.46 \n",
102 | " 1871.04 \n",
103 | " 5.32 \n",
104 | " 97.25 \n",
105 | " 5.69 \n",
106 | " ... \n",
107 | " NaN \n",
108 | " 0.1306 \n",
109 | " 9.25 \n",
110 | " 3.81 \n",
111 | " 187104 \n",
112 | " NaN \n",
113 | " 0.4 \n",
114 | " 8.76 \n",
115 | " NaN \n",
116 | " NaN \n",
117 | " \n",
118 | " \n",
119 | " 1 \n",
120 | " 1 \n",
121 | " 1871.02 \n",
122 | " 4.50 \n",
123 | " 0.26 \n",
124 | " 0.4 \n",
125 | " 12.84 \n",
126 | " 1871.13 \n",
127 | " 5.32 \n",
128 | " 95.64 \n",
129 | " 5.53 \n",
130 | " ... \n",
131 | " NaN \n",
132 | " 0.1309 \n",
133 | " 9.46 \n",
134 | " 3.62 \n",
135 | " 187113 \n",
136 | " NaN \n",
137 | " 0.4 \n",
138 | " 8.50 \n",
139 | " NaN \n",
140 | " NaN \n",
141 | " \n",
142 | " \n",
143 | " 2 \n",
144 | " 2 \n",
145 | " 1871.03 \n",
146 | " 4.61 \n",
147 | " 0.26 \n",
148 | " 0.4 \n",
149 | " 13.03 \n",
150 | " 1871.21 \n",
151 | " 5.33 \n",
152 | " 96.55 \n",
153 | " 5.45 \n",
154 | " ... \n",
155 | " NaN \n",
156 | " 0.1310 \n",
157 | " 9.62 \n",
158 | " 3.48 \n",
159 | " 187121 \n",
160 | " NaN \n",
161 | " 0.4 \n",
162 | " 8.38 \n",
163 | " NaN \n",
164 | " NaN \n",
165 | " \n",
166 | " \n",
167 | " 3 \n",
168 | " 3 \n",
169 | " 1871.04 \n",
170 | " 4.74 \n",
171 | " 0.26 \n",
172 | " 0.4 \n",
173 | " 12.56 \n",
174 | " 1871.29 \n",
175 | " 5.33 \n",
176 | " 103.03 \n",
177 | " 5.65 \n",
178 | " ... \n",
179 | " NaN \n",
180 | " 0.1221 \n",
181 | " 9.10 \n",
182 | " 3.11 \n",
183 | " 187129 \n",
184 | " NaN \n",
185 | " 0.4 \n",
186 | " 8.69 \n",
187 | " NaN \n",
188 | " NaN \n",
189 | " \n",
190 | " \n",
191 | " 4 \n",
192 | " 4 \n",
193 | " 1871.05 \n",
194 | " 4.86 \n",
195 | " 0.26 \n",
196 | " 0.4 \n",
197 | " 12.27 \n",
198 | " 1871.38 \n",
199 | " 5.33 \n",
200 | " 108.10 \n",
201 | " 5.78 \n",
202 | " ... \n",
203 | " NaN \n",
204 | " 0.1226 \n",
205 | " 8.95 \n",
206 | " 3.31 \n",
207 | " 187138 \n",
208 | " NaN \n",
209 | " 0.4 \n",
210 | " 8.90 \n",
211 | " NaN \n",
212 | " NaN \n",
213 | " \n",
214 | " \n",
215 | "
\n",
216 | "
5 rows × 33 columns
\n",
217 | "
"
218 | ],
219 | "text/plain": [
220 | " Unnamed: 0 Date_x P D E CPI Date Fraction \\\n",
221 | "0 0 1871.01 4.44 0.26 0.4 12.46 1871.04 \n",
222 | "1 1 1871.02 4.50 0.26 0.4 12.84 1871.13 \n",
223 | "2 2 1871.03 4.61 0.26 0.4 13.03 1871.21 \n",
224 | "3 3 1871.04 4.74 0.26 0.4 12.56 1871.29 \n",
225 | "4 4 1871.05 4.86 0.26 0.4 12.27 1871.38 \n",
226 | "\n",
227 | " Long Interest Rate GS10 Real Price Real Dividend ... \\\n",
228 | "0 5.32 97.25 5.69 ... \n",
229 | "1 5.32 95.64 5.53 ... \n",
230 | "2 5.33 96.55 5.45 ... \n",
231 | "3 5.33 103.03 5.65 ... \n",
232 | "4 5.33 108.10 5.78 ... \n",
233 | "\n",
234 | " Excess CAPE Yield float 10 year anualized stock real return float \\\n",
235 | "0 NaN 0.1306 \n",
236 | "1 NaN 0.1309 \n",
237 | "2 NaN 0.1310 \n",
238 | "3 NaN 0.1221 \n",
239 | "4 NaN 0.1226 \n",
240 | "\n",
241 | " 10 year annualized Real Return float \\\n",
242 | "0 9.25 \n",
243 | "1 9.46 \n",
244 | "2 9.62 \n",
245 | "3 9.10 \n",
246 | "4 8.95 \n",
247 | "\n",
248 | " Real 10 year excess annualizedReturns float proxy Date_y PFE Real PFE \\\n",
249 | "0 3.81 187104 NaN 0.4 8.76 \n",
250 | "1 3.62 187113 NaN 0.4 8.50 \n",
251 | "2 3.48 187121 NaN 0.4 8.38 \n",
252 | "3 3.11 187129 NaN 0.4 8.69 \n",
253 | "4 3.31 187138 NaN 0.4 8.90 \n",
254 | "\n",
255 | " PFE10 Accounting Adjusted CAPE \n",
256 | "0 NaN NaN \n",
257 | "1 NaN NaN \n",
258 | "2 NaN NaN \n",
259 | "3 NaN NaN \n",
260 | "4 NaN NaN \n",
261 | "\n",
262 | "[5 rows x 33 columns]"
263 | ]
264 | },
265 | "execution_count": 9,
266 | "metadata": {},
267 | "output_type": "execute_result"
268 | }
269 | ],
270 | "source": [
271 | "df_acc = pd.read_csv(\"../data/ie_accounting.csv\")\n",
272 | "df_acc[\"10 year anualized stock real return float\"] = df_acc[\"10 year anualized stock real return float\"]/100\n",
273 | "print(df_acc.columns)\n",
274 | "df_acc.head()"
275 | ]
276 | },
277 | {
278 | "cell_type": "markdown",
279 | "metadata": {},
280 | "source": [
281 | "### Modified CAPE"
282 | ]
283 | },
284 | {
285 | "cell_type": "code",
286 | "execution_count": 14,
287 | "metadata": {},
288 | "outputs": [
289 | {
290 | "name": "stdout",
291 | "output_type": "stream",
292 | "text": [
293 | " OLS Regression Results \n",
294 | "==============================================================================\n",
295 | "Dep. Variable: y R-squared: 0.348\n",
296 | "Model: OLS Adj. R-squared: 0.348\n",
297 | "Method: Least Squares F-statistic: 807.1\n",
298 | "Date: Thu, 02 Dec 2021 Prob (F-statistic): 1.32e-142\n",
299 | "Time: 03:01:00 Log-Likelihood: 2650.3\n",
300 | "No. Observations: 1513 AIC: -5297.\n",
301 | "Df Residuals: 1511 BIC: -5286.\n",
302 | "Df Model: 1 \n",
303 | "Covariance Type: nonrobust \n",
304 | "==============================================================================\n",
305 | " coef std err t P>|t| [0.025 0.975]\n",
306 | "------------------------------------------------------------------------------\n",
307 | "const 0.2779 0.008 36.627 0.000 0.263 0.293\n",
308 | "x1 -0.0789 0.003 -28.409 0.000 -0.084 -0.073\n",
309 | "==============================================================================\n",
310 | "Omnibus: 17.447 Durbin-Watson: 0.012\n",
311 | "Prob(Omnibus): 0.000 Jarque-Bera (JB): 15.549\n",
312 | "Skew: -0.195 Prob(JB): 0.000420\n",
313 | "Kurtosis: 2.692 Cond. No. 21.7\n",
314 | "==============================================================================\n",
315 | "\n",
316 | "Warnings:\n",
317 | "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n"
318 | ]
319 | }
320 | ],
321 | "source": [
322 | "# period from 1881-2006\n",
323 | "split_period = 2007.01\n",
324 | "x = np.log((np.array(df_acc[(df_acc[\"Date_x\"]|t| [0.025 0.975]\n",
355 | "------------------------------------------------------------------------------\n",
356 | "const 0.4391 0.027 16.358 0.000 0.385 0.493\n",
357 | "x1 -0.1182 0.009 -12.670 0.000 -0.137 -0.099\n",
358 | "==============================================================================\n",
359 | "Omnibus: 9.880 Durbin-Watson: 0.096\n",
360 | "Prob(Omnibus): 0.007 Jarque-Bera (JB): 10.736\n",
361 | "Skew: 1.072 Prob(JB): 0.00466\n",
362 | "Kurtosis: 2.944 Cond. No. 45.8\n",
363 | "==============================================================================\n",
364 | "\n",
365 | "Warnings:\n",
366 | "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n"
367 | ]
368 | }
369 | ],
370 | "source": [
371 | "# period 2007-2021\n",
372 | "split_period = 2007.01\n",
373 | "x = np.log((np.array(df_acc[(df_acc[\"Date_x\"]>=split_period)][\"Accounting Adjusted CAPE\"]).astype(float)))\n",
374 | "x = sm.add_constant(x)\n",
375 | "y = np.array(df_acc[(df_acc[\"Date_x\"]>=split_period)][\"10 year anualized stock real return float\"]).astype(float)\n",
376 | "\n",
377 | "model = sm.OLS(y, x, missing=\"drop\")\n",
378 | "summary = model.fit()\n",
379 | "print(summary.summary())"
380 | ]
381 | },
382 | {
383 | "cell_type": "code",
384 | "execution_count": 15,
385 | "metadata": {},
386 | "outputs": [
387 | {
388 | "name": "stdout",
389 | "output_type": "stream",
390 | "text": [
391 | " OLS Regression Results \n",
392 | "==============================================================================\n",
393 | "Dep. Variable: y R-squared: 0.332\n",
394 | "Model: OLS Adj. R-squared: 0.331\n",
395 | "Method: Least Squares F-statistic: 778.4\n",
396 | "Date: Thu, 02 Dec 2021 Prob (F-statistic): 2.05e-139\n",
397 | "Time: 03:52:59 Log-Likelihood: 2736.7\n",
398 | "No. Observations: 1569 AIC: -5469.\n",
399 | "Df Residuals: 1567 BIC: -5459.\n",
400 | "Df Model: 1 \n",
401 | "Covariance Type: nonrobust \n",
402 | "==============================================================================\n",
403 | " coef std err t P>|t| [0.025 0.975]\n",
404 | "------------------------------------------------------------------------------\n",
405 | "const 0.2756 0.008 36.286 0.000 0.261 0.291\n",
406 | "x1 -0.0774 0.003 -27.900 0.000 -0.083 -0.072\n",
407 | "==============================================================================\n",
408 | "Omnibus: 24.997 Durbin-Watson: 0.012\n",
409 | "Prob(Omnibus): 0.000 Jarque-Bera (JB): 21.916\n",
410 | "Skew: -0.231 Prob(JB): 1.74e-05\n",
411 | "Kurtosis: 2.652 Cond. No. 22.0\n",
412 | "==============================================================================\n",
413 | "\n",
414 | "Warnings:\n",
415 | "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n"
416 | ]
417 | }
418 | ],
419 | "source": [
420 | "# overall period\n",
421 | "x = np.log((np.array(df_acc[\"Accounting Adjusted CAPE\"]).astype(float)))\n",
422 | "x = sm.add_constant(x)\n",
423 | "y = np.array(df_acc[\"10 year anualized stock real return float\"]).astype(float)\n",
424 | "\n",
425 | "model = sm.OLS(y, x, missing=\"drop\")\n",
426 | "summary = model.fit()\n",
427 | "print(summary.summary())"
428 | ]
429 | },
430 | {
431 | "cell_type": "code",
432 | "execution_count": 16,
433 | "metadata": {},
434 | "outputs": [
435 | {
436 | "data": {
437 | "text/plain": [
438 | ""
439 | ]
440 | },
441 | "execution_count": 16,
442 | "metadata": {},
443 | "output_type": "execute_result"
444 | },
445 | {
446 | "data": {
447 | "image/png": "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\n",
448 | "text/plain": [
449 | ""
450 | ]
451 | },
452 | "metadata": {},
453 | "output_type": "display_data"
454 | }
455 | ],
456 | "source": [
457 | "plt.figure(figsize=(10, 8))\n",
458 | "sns.regplot(df_acc[\"Accounting Adjusted CAPE\"], \n",
459 | " df_acc[\"10 year anualized stock real return float\"], \n",
460 | " label=\"Real Returns\", \n",
461 | " color='lightcoral')"
462 | ]
463 | },
464 | {
465 | "cell_type": "code",
466 | "execution_count": null,
467 | "metadata": {},
468 | "outputs": [],
469 | "source": []
470 | }
471 | ],
472 | "metadata": {
473 | "kernelspec": {
474 | "display_name": "Python 3",
475 | "language": "python",
476 | "name": "python3"
477 | },
478 | "language_info": {
479 | "codemirror_mode": {
480 | "name": "ipython",
481 | "version": 3
482 | },
483 | "file_extension": ".py",
484 | "mimetype": "text/x-python",
485 | "name": "python",
486 | "nbconvert_exporter": "python",
487 | "pygments_lexer": "ipython3",
488 | "version": "3.6.8"
489 | }
490 | },
491 | "nbformat": 4,
492 | "nbformat_minor": 2
493 | }
494 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | pandas
2 | numpy
3 | scipy
4 | matplotlib
5 | seaborn
6 | statsmodels
--------------------------------------------------------------------------------
/research/GIC.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samsonq/Modifying-Shiller-CAPE-Ratio/50cc84d145d0c79849b88dc49fc574f87102825c/research/GIC.docx
--------------------------------------------------------------------------------
/research/Kenourgios2021_Article_OnThePredictivePowerOfCAPEOrSh.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samsonq/Modifying-Shiller-CAPE-Ratio/50cc84d145d0c79849b88dc49fc574f87102825c/research/Kenourgios2021_Article_OnThePredictivePowerOfCAPEOrSh.pdf
--------------------------------------------------------------------------------
/src/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samsonq/Modifying-Shiller-CAPE-Ratio/50cc84d145d0c79849b88dc49fc574f87102825c/src/__init__.py
--------------------------------------------------------------------------------
/src/accounting.py:
--------------------------------------------------------------------------------
1 | import pandas as pd
2 | import matplotlib.pyplot as plt
3 | plt.style.use("seaborn")
4 |
5 | df_acc = pd.read_pickle("../data/accounting.pkl")
6 | df_ie = pd.read_pickle("../data/df.pkl")
7 |
8 | def date_to_fraction(dt):
9 | return int(dt.year)+(int(dt.month)-1)/12+(int(dt.day))/30/12
10 |
11 | df_acc["Date Fraction"]=df_acc["Date"].apply(date_to_fraction)
12 |
13 | plt.plot(df_ie["Date Fraction"], df_ie["E"], label="(Nominal) E")
14 | plt.plot(df_acc["Date Fraction"], df_acc["PFE"], label="PFE") # Nominal
15 | plt.axvline(x=2000, color='r', linestyle='--')
16 | plt.legend(); plt.savefig("Earning_series.png"); plt.clf()
17 |
18 | # Marge the dataframes on Date-oFraction
19 | # Use int(Date Fraction * 100) as a proxy to perform merge
20 | initial_df_ie_len = len(df_ie)
21 |
22 | df_ie["proxy"]=(df_ie["Date Fraction"]*100).astype(int)
23 | df_acc["proxy"]=(df_acc["Date Fraction"]*100).astype(int)
24 | df_acc.drop(columns=["Date Fraction"], inplace=True) # Avoid Multiple columns
25 | df_acc.drop_duplicates(subset=["proxy"], inplace=True)
26 | df_ie = pd.merge(left=df_ie, right=df_acc, on="proxy", how="left")
27 | df_ie.loc[df_ie.PFE.isna(), "PFE"]=df_ie.loc[df_ie.PFE.isna()]["E"]
28 |
29 | assert initial_df_ie_len==len(df_ie)
30 |
31 | df_ie["Real PFE"] = df_ie["PFE"]*(df_ie["Real Earnings"]/df_ie["E"])
32 | # Plot the two Real Earning Series
33 | plt.plot(df_ie["Date Fraction"], df_ie["Real Earnings"], label="(Nominal) E")
34 | plt.plot(df_ie["Date Fraction"], df_ie["Real PFE"], label="PFE") # Real
35 | plt.axvline(x=2000, color='r', linestyle='--')
36 | plt.legend(); plt.savefig("Earning_series_real.png"); plt.clf()
37 |
38 | df_ie["PFE10"] = df_ie["Real PFE"].rolling(window=120, min_periods=120).mean()
39 | df_ie["Accounting Adjusted CAPE"] = df_ie["Real Price"]/df_ie["PFE10"]
40 |
41 | plt.plot(df_ie["Date Fraction"], df_ie["CAPE"],label="CAPE (GAAP)")
42 | plt.plot(df_ie["Date Fraction"], df_ie["Accounting Adjusted CAPE"], label="CAPE (Pro-Forma)")
43 | plt.legend(); plt.savefig("CAPE_comparison.png"); plt.clf()
44 |
45 | df_ie.to_pickle("../data/ie_accounting.pkl")
46 |
--------------------------------------------------------------------------------
/src/analysis.py:
--------------------------------------------------------------------------------
1 | import numpy as np
2 | import pandas as pd
3 | import matplotlib.pyplot as plt
4 | import matplotlib as mlp
5 | import seaborn as sns
6 | mlp.style.use("seaborn")
7 |
8 | df=pd.read_pickle("../data/df.pkl")
9 | df['E10'] = df['Real Earnings'].rolling(window=120, min_periods=120).mean()
10 | df["P/E10"] = df['Real Price'] / df['E10']
11 | # Plot P
12 | plt.plot(df["Date Fraction"], df["Real Price"])
13 | plt.title("Historical S&P Prices")
14 | plt.xlabel("Date")
15 | plt.ylabel("Stock Price, P")
16 | plt.savefig("SPY.png")
17 | plt.clf()
18 | # Plot E
19 | plt.plot(df["Date Fraction"], df["Real Earnings"], label="E")
20 | plt.plot(df["Date Fraction"], df["E10"], label="E10")
21 | plt.title("Historical S&P Earnings")
22 | plt.xlabel("Date")
23 | plt.ylabel("Earnings, E")
24 | plt.legend()
25 | plt.savefig("E.png")
26 | plt.clf()
27 | # Plot D
28 | plt.plot(df["Date Fraction"], df["Real Dividend"])
29 | plt.title("Historical S&P Dividends")
30 | plt.xlabel("Date")
31 | plt.ylabel("Dividends, D")
32 | plt.savefig("D.png")
33 | plt.clf()
34 | # Plot CAPE
35 | plt.plot(df["Date Fraction"], df["CAPE"], label="CAPE")
36 | plt.plot(df["Date Fraction"], df["P/E10"], label="CAPE_Reconstructed")
37 | plt.title("Historical S&P CAPE")
38 | plt.xlabel("Date")
39 | plt.ylabel("P/E10")
40 | plt.legend()
41 | plt.savefig("CAPE.png")
42 | plt.clf()
43 |
44 | # Plot log(CAPE) log(E10_t+1/E10_t)
45 | df["10 yr. MAE growth"] = np.log(df.E10.shift(-12)/df.E10.shift())/10
46 | plt.xscale('log')
47 | plt.scatter(df["CAPE"], df["10 yr. MAE growth"])
48 | plt.ylabel("10 Year MA(E) Growth")
49 | plt.xlabel("CAPE, P/E10")
50 | plt.title("Ten Year MA(E) Growth vs CAPE")
51 | plt.savefig("E6A.png")
52 | plt.clf()
53 |
54 | # Plot log(CAPE) log(P_{t+10*12} /P_t)
55 | df["10 yr. P growth"] = np.log(df.P.shift(-120)/df.P)/10
56 | plt.xscale('log')
57 | plt.scatter(df["CAPE"], df["10 yr. P growth"])
58 | plt.ylabel("10 Year P Growth")
59 | plt.xlabel("CAPE, P/E10")
60 | plt.title("Ten Year Price Growth vs CAPE")
61 | plt.savefig("E6B.png")
62 | plt.clf()
63 |
64 | # Plot Sparsely
65 | df_sparse=df[::6]
66 | df_sparse_old=df_sparse.loc[df_sparse["Date Fraction"]<=1996]
67 | df_sparse_new=df_sparse.loc[df_sparse["Date Fraction"]>1996]
68 | # plt.xscale('log')
69 | plt.scatter(df_sparse_old["CAPE"], df_sparse_old["10 yr. MAE growth"], label="1881-2006")
70 | plt.scatter(df_sparse_new["CAPE"], df_sparse_new["10 yr. MAE growth"], label="2007-2021")
71 | plt.ylabel("10 Year MA(E) Growth")
72 | plt.xlabel("CAPE, P/E10")
73 | plt.title("Ten Year MA(E) Growth vs CAPE")
74 | plt.legend()
75 | plt.savefig("E6A_sparse.png")
76 | plt.clf()
77 | # plt.xscale('log')
78 | plt.scatter(df_sparse_old["CAPE"], df_sparse_old["10 yr. P growth"], label="1881-2006")
79 | plt.scatter(df_sparse_new["CAPE"], df_sparse_new["10 yr. P growth"], label="2007-2021")
80 | plt.legend()
81 | plt.ylabel("10 Year Price Growth")
82 | plt.xlabel("CAPE, P/E10")
83 | plt.title("Ten Year Price Growth vs CAPE")
84 | plt.savefig("E6B_sparse.png")
85 | plt.clf()
86 |
87 | # Plot Sparsely With Regression Lines
88 | # plt.xscale('log')
89 | sns.regplot(x="CAPE", y="10 yr. MAE growth",data=df_sparse_old, label="1881-2006")
90 | sns.regplot(x="CAPE", y="10 yr. MAE growth",data=df_sparse_new, label="2007-2021")
91 | plt.ylabel("10 Year MA(E) Growth (Annualized)")
92 | plt.xlabel("CAPE, P/E10")
93 | plt.title("Ten Year MA(E) Growth vs CAPE")
94 | plt.legend()
95 | plt.savefig("E6A_sparse_sns.png")
96 | plt.clf()
97 | # plt.xscale('log')
98 | sns.regplot(x="CAPE", y="10 yr. P growth",data=df_sparse_old, label="1886-2006")
99 | sns.regplot(x="CAPE", y="10 yr. P growth",data=df_sparse_new, label="2007-2021")
100 | plt.legend()
101 | plt.ylabel("10 Year Price Growth (Anualized)")
102 | plt.xlabel("CAPE, P/E10")
103 | plt.title("Ten Year Price Growth vs CAPE")
104 | plt.savefig("E6B_sparse_sns.png")
105 | plt.clf()
106 |
107 | # Plot In buckets
108 | df["CAPE quintile"]=pd.qcut(df["CAPE"], 5, labels=False)
109 | sns.boxplot(x="CAPE quintile", y="10 yr. P growth", data=df)
110 | plt.savefig("CAPE_decile_all.png"); plt.clf()
111 | df["time"]="1886-2006"
112 | df.loc[df["Date Fraction"]>1996, "time"]="2007-2021"
113 | sns.boxplot(x="CAPE quintile", y="10 yr. P growth", data=df, hue="time")
114 | plt.savefig("CAPE_decile_hued.png"); plt.clf()
115 | # Changing the decile to be time-wise
116 | df.loc[df["Date Fraction"]<=1996, "CAPE quintile"]=pd.qcut(df.loc[df["Date Fraction"]<=1996]["CAPE"], 5, labels=False)
117 | df.loc[df["Date Fraction"]>1996, "CAPE quintile"]=pd.qcut(df.loc[df["Date Fraction"]>1996]["CAPE"], 5, labels=False)
118 | df_old=df.loc[df["Date Fraction"]<=1996]
119 | df_new=df.loc[df["Date Fraction"]>1996]
120 | sns.boxplot(x="CAPE quintile", y="10 yr. P growth", data=df_old); sns.regplot(x="CAPE quintile", y="10 yr. P growth", scatter=False, data=df_old); plt.title("1886-2006");plt.savefig("CAPE_decile_old.png"); plt.clf()
121 | sns.boxplot(x="CAPE quintile", y="10 yr. P growth", data=df_new); sns.regplot(x="CAPE quintile", y="10 yr. P growth", scatter=False, data=df_new); plt.title("2007-2021");plt.savefig("CAPE_decile_new.png"); plt.clf()
122 | sns.boxplot(x="CAPE quintile", y="10 yr. P growth", data=df, hue="time"); sns.regplot(x="CAPE quintile", y="10 yr. P growth", scatter=False, data=df_old);sns.regplot(x="CAPE quintile", y="10 yr. P growth", scatter=False, data=df_new); plt.savefig("CAPE_quintile_timewise_hued.png"); plt.clf()
123 |
--------------------------------------------------------------------------------
/src/utils.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samsonq/Modifying-Shiller-CAPE-Ratio/50cc84d145d0c79849b88dc49fc574f87102825c/src/utils.py
--------------------------------------------------------------------------------