{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Comparative geometric mean returns\n", "\n", "We focus mathematically on geometric mean returns since they \n", "optimally express mean-variance under logarithmic utility.\n", "However, for visualization, we use boxplots\n", "to see the persistence of returns.\n", "\n", "Accuracy has been improved by using our research on\n", "Gaussian mixtures presented in https://git.io/gmix --\n", "specifically, our function gemrat() computes the geometric mean\n", "rate by taking into account the fourth central moment, kurtosis.\n", "This is crucial for *leptokurtotic* (\"fat-tailed\") assets.\n", "\n", "We examine some long-term economic and financial time series,\n", "then use Holt-Winters to forecast one-year ahead\n", "as a generic way to illustrate future expected returns.\n", "Daily data for bonds, stocks, and gold is also analyzed.\n", "\n", "[We shall cover portfolio optimization in another notebook.]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*Dependencies:*\n", "\n", "- Repository: https://github.com/rsvp/fecon235\n", " \n", "*CHANGE LOG*\n", "\n", " 2017-06-21 Replace groupgeoret() by groupgemrat().\n", " 2016-01-05 MAJOR REWRITE: use pattern from monthly and daily series\n", " for new functions groupget, grouppc, groupgeoret.\n", " Forecast print out replaced by preservable groupholtf.\n", " Dictionary comprehension clarifies code.\n", " 2016-01-03 Fix issue #2 with v4 and p6 upgrades.\n", " 2015-05-26 Code revision using template v14.12.21.\n", " 2014-10-11 Code review. Template 2014-09-28.\n", " 2014-09-01 First version." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from fecon235.fecon235 import *" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " :: Python 2.7.13\n", " :: IPython 5.1.0\n", " :: jupyter_core 4.2.1\n", " :: notebook 4.1.0\n", " :: matplotlib 1.5.1\n", " :: numpy 1.11.0\n", " :: scipy 0.17.0\n", " :: sympy 1.0\n", " :: pandas 0.19.2\n", " :: pandas_datareader 0.2.1\n", " :: Repository: fecon235 v5.17.0603 devPrtfBoltzmann\n", " :: Timestamp: 2017-06-22T07:29:17Z\n", " :: $pwd: /media/yaya/virt15h/virt/dbx/Dropbox/ipy/fecon235/nb\n" ] } ], "source": [ "# PREAMBLE-p6.15.1223d :: Settings and system details\n", "from __future__ import absolute_import, print_function, division\n", "system.specs()\n", "pwd = system.getpwd() # present working directory as variable.\n", "print(\" :: $pwd:\", pwd)\n", "# If a module is modified, automatically reload it:\n", "%load_ext autoreload\n", "%autoreload 2\n", "# Use 0 to disable this feature.\n", "\n", "# Notebook DISPLAY options:\n", "# Represent pandas DataFrames as text; not HTML representation:\n", "import pandas as pd\n", "pd.set_option( 'display.notebook_repr_html', False )\n", "from IPython.display import HTML # useful for snippets\n", "# e.g. HTML('')\n", "from IPython.display import Image \n", "# e.g. Image(filename='holt-winters-equations.png', embed=True) # url= also works\n", "from IPython.display import YouTubeVideo\n", "# e.g. YouTubeVideo('1j_HxD4iLn8', start='43', width=600, height=400)\n", "from IPython.core import page\n", "get_ipython().set_hook('show_in_pager', page.as_hook(page.display_page), 0)\n", "# Or equivalently in config file: \"InteractiveShell.display_page = True\", \n", "# which will display results in secondary notebook pager frame in a cell.\n", "\n", "# Generate PLOTS inside notebook, \"inline\" generates static png:\n", "%matplotlib inline \n", "# \"notebook\" argument allows interactive zoom and resize." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Download data and construct a dataframe\n", "\n", "We retrieve the following data of monthly frequency: **(aggregated) inflation, \n", "bonds (zero coupon equivalent of 10-y Treasury), equities (S&P 500), and \n", "gold (London PM fix)** -- all denominated in US dollars -- **then lastly, the \n", "real trade-weighted USD index (Federal Reserve) and US home prices (per Case-Shiller).** \n", "The details for each series is given in their respective notebooks. \n", "If the available data has daily frequency, we use the pandas method called \n", "\"resampling\" to induce monthly data (enter \"monthly??\" in an \n", "input cell for more details).\n", "\n", "ATTENTION: *The inclusion of home prices, unfortunately, will create a 3-month lag, \n", "due to their release cycle. Since this is a comparative study, \n", "other data will appear out-of-date, but this \n", "section is intended for long-term trends.* \n", "Second half of this notebook will examine more responsive daily data." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " :: Case-Shiller prepend successfully goes back to 1987.\n", " :: S&P 500 prepend successfully goes back to 1957.\n" ] } ], "source": [ "# Specify monthly series of interest as a dictionary:\n", "msdic = {'Infl' : m4infl, 'Zero10' : m4zero10, 'SPX' : m4spx, \n", " 'XAU' : m4xau, 'USD' : m4usdrtb, 'Homes' : m4homepx }\n", "\n", "# Download data into a dataframe:\n", "msdf = groupget( msdic )\n", "# \"groupget??\" at input cell gives function details." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "After downloading the level series, we compute the YoY percentage change \n", "for each series. *This will be the a trailing 12-month statistic, \n", "thus it is overlapping.*" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Construct the mega YoY dataframe:\n", "mega = grouppc( msdf, freq=12 )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Define start time and get stats" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Define start time as t0\n", "t0 = '1988'\n", "\n", "# We can easily rerun the rest of this notebook \n", "# by specifying another start time, then: Cell > Run All Below" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Homes Infl SPX USD XAU Zero10\n", "count 351.000000 351.000000 351.000000 351.000000 351.000000 351.000000\n", "mean 3.975145 2.360919 8.508886 0.158315 4.673031 2.191734\n", "std 7.809477 1.005195 15.994362 5.224617 15.253308 7.260916\n", "min -18.906156 -0.186792 -42.349361 -10.650136 -27.752361 -18.521264\n", "25% -0.858003 1.659338 2.012961 -3.493227 -6.812520 -2.964638\n", "50% 4.854246 2.324056 10.320474 0.064795 1.898076 2.855624\n", "75% 10.490481 2.762071 19.324933 3.220781 13.886439 7.601522\n", "max 17.077118 5.243615 52.051354 14.447233 60.357143 20.492399\n", "\n", " :: Index on min:\n", "Homes 2009-01-01\n", "Infl 2009-07-01\n", "SPX 2009-03-01\n", "USD 2008-03-01\n", "XAU 2013-12-01\n", "Zero10 1994-10-01\n", "dtype: datetime64[ns]\n", "\n", " :: Index on max:\n", "Homes 2004-07-01\n", "Infl 1990-10-01\n", "SPX 2010-03-01\n", "USD 2009-03-01\n", "XAU 2006-05-01\n", "Zero10 1996-01-01\n", "dtype: datetime64[ns]\n", "\n", " :: Head:\n", " Homes Infl SPX USD XAU Zero10\n", "T \n", "1988-01-01 12.139461 3.983828 -6.207571 -9.836868 17.042392 -12.661625\n", "1988-02-01 11.661442 3.875127 -8.186030 -8.633477 9.982617 -8.068941\n", "1988-03-01 11.345646 3.923270 -8.156954 -9.393214 8.841782 -9.248410\n", " :: Tail:\n", " Homes Infl SPX USD XAU Zero10\n", "T \n", "2017-01-01 5.643853 2.136046 19.125282 1.875180 8.695553 -3.182853\n", "2017-02-01 5.783702 2.237186 22.289801 1.862917 2.059917 -5.769468\n", "2017-03-01 5.837821 1.955634 16.813173 3.186732 -0.832830 -5.095762\n", "\n", " :: Correlation matrix:\n", " Homes Infl SPX USD XAU Zero10\n", "Homes 1.000000 -0.000960 0.242935 0.051296 -0.242950 -0.293831\n", "Infl -0.000960 1.000000 0.008384 -0.374395 -0.045903 -0.063022\n", "SPX 0.242935 0.008384 1.000000 -0.070457 -0.199832 -0.139682\n", "USD 0.051296 -0.374395 -0.070457 1.000000 -0.520433 0.192060\n", "XAU -0.242950 -0.045903 -0.199832 -0.520433 1.000000 0.005306\n", "Zero10 -0.293831 -0.063022 -0.139682 0.192060 0.005306 1.000000\n" ] } ], "source": [ "# Slice the data:\n", "stats( mega[t0:] )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- There is not much correlation among our assets, \n", " except a mild negative between gold XAU and USD. \n", " (2015-05-26 at -0.51)\n", "\n", "- The difference between the maximum and minimum percentage change\n", " for each item is remarkable. The index for maximum and minimum\n", " quickly gives us the historical epoch.\n", " \n", "- The indexes of the minimums for Homes and SPX show the worst\n", " from the Great Recession was over by 2009-Q1." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Boxplot of overlapping annual changes\n", "\n", "The boxplot gives us an idea of the range of annual returns, \n", "and their ***persistence due to overlap***.\n", "Thus trends can be discerned.\n", "For example, if the blue box is located above zero,\n", "then the bulk of returns is positive, and we can\n", "expect the median, arithmetic, and geometric rates to be positive.\n", "Returns outside the box, especially the notches,\n", "perhaps could indicate unusual market conditions\n", "or just plain data entry errors.\n", "\n", "It is also a visual aid for the geometric mean returns \n", "which is most significant as an investment metric.\n", "What appears as outliers may be due to leptokurtosis.\n", "\n", "As usual, the ***red line*** indicates the *median*, but \n", "the **red dot** represents the *latest point*." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nYiV5ui+DxXAAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ " :: Finished: boxplot-Assets_YoYm.png\n" ] } ], "source": [ "# Overlapping YoY percentage change:\n", "boxplot(mega[t0:], 'Assets YoYm')\n", "# where the red dot represents the latest point." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*Red dot outside the mid-range box alerts us to unusual conditions.* \n", "Attention should also be paid to the extreme value \"slash\" marks \n", "(where outliers are also revealed).\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Geometric mean returns on non-overlapping periods\n", "\n", "David E. Shaw, famous for his proprietary hedge fund, remarked that \n", "one of the most important equations in finance is the penalization \n", "of arithmetic mean by one-half of variance:\n", "\n", "$ g = \\mu - (\\sigma^2 / 2) $\n", "\n", "which turns out to be a second-order approximation of geometric mean return.\n", "It is good enough to maximize, instead of considering \n", "intricate mean-variance trade-offs.\n", "We find it useful also as a metric for economic variables.\n", "\n", "Many assets have leptokurtotic returns (\"fat-tails\") and so a better\n", "approximation for the geometric mean rate is needed\n", "which takes into account the fourth central moment called *kurtosis*.\n", "Details are given on Gaussian mixtures in our research\n", "at https://git.io/gmix \n", "\n", "The source code shows us that gemrat() first gives us \n", "the **geometric** mean return, followed by \n", "the **arithmetic mean return, volatility, and Pearson kurtosis**, \n", "then yearly frequency and sample size -- in list format." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mSignature:\u001b[0m \u001b[0mgemreturn_Jean\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmu_return\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msigma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mk_Pearson\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mSource:\u001b[0m \n", "\u001b[0;32mdef\u001b[0m \u001b[0mgemreturn_Jean\u001b[0m\u001b[0;34m(\u001b[0m \u001b[0mmu_return\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msigma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mk_Pearson\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m3\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m'''Approximation for geometric mean RETURN via Jean (1983) infinite series.\u001b[0m\n", "\u001b[0;34m Important definition: \"financial return\" := 1 + \"rate\"\u001b[0m\n", "\u001b[0;34m where rate is expressed in decimal form.\u001b[0m\n", "\u001b[0;34m '''\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;31m# Jean (1983) derived the exact infinite series for geometric mean return\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;31m# around a reference point (the arithmetic mean return worked out best).\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;31m# Here we code an approximation by the first five terms of that series:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mterms\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlog\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmu_return\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m \u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;31m# By stipulation, we shall ignore the odd moments...\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;31m# terms[1] = 0 # Zero by symmetry: absolute first central moment.\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;31m# terms[3] = 0 # Zero by symmetry: absolute third central moment.\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mvariance\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msigma\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0;36m2\u001b[0m \u001b[0;31m# absolute second central moment.\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mk_raw\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mk_Pearson\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0msigma\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# absolute fourth central moment.\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;31m# kurtosis details in kurtfun().\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mterms\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0;34m(\u001b[0m \u001b[0mvariance\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m2.0\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mmu_return\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mterms\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0;34m(\u001b[0m \u001b[0mk_raw\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m4.0\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mmu_return\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;31m# ^increasing sigma and kurtosis will lower gemreturn <=!\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mlog_greturn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mterms\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexp\u001b[0m\u001b[0;34m(\u001b[0m \u001b[0mlog_greturn\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mFile:\u001b[0m ~/Dropbox/ipy/fecon235/lib/ys_gauss_mix.py\n", "\u001b[0;31mType:\u001b[0m function\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# How are we computing geometric mean returns?\n", "# Just add \"?\" or \"??\" to variables, procedures, etc.\n", "# to find out the details, e.g.\n", "\n", "# gemrat() is the user friendly version of gemrate()\n", "# which in turn relies on the following:\n", "\n", "gemreturn_Jean??" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[[3.51, 3.54, 2.47, 4.06, 12, 350, 'Homes'],\n", " [2.29, 2.29, 0.49, 8.8, 12, 350, 'Infl'],\n", " [6.97, 7.72, 12.33, 10.53, 12, 350, 'SPX'],\n", " [0.22, 0.3, 4.14, 4.11, 12, 350, 'USD'],\n", " [2.41, 3.25, 12.93, 5.55, 12, 350, 'XAU'],\n", " [1.6, 1.84, 7.04, 5.68, 12, 350, 'Zero10']]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Geometric mean rates, non-overlapping, annualized:\n", "groupgemrat( msdf[t0:], yearly=12 )\n", " \n", "# Note that we applied groupgemrat to msdf, not mega.\n", "# Generally gemrat requires price levels.\n", "# Note that groupgemrat is just gemrat() for group dataframes." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The first element in each list gives us the geometric mean rate.\n", "They should be compared with the respective median rates previously computed.\n", "\n", "The fourth element in each list gives us the kurtosis statistic\n", "where 3.0 is theoretically expected if a distribution is Gaussian.\n", "\n", "Even home prices have slightly fat tails.\n", "The equities market shows the highest level of leptokurtosis.\n", "\n", "Kurtosis is generally observed to increase when the\n", "frequency of data is increased." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Note: the geometric mean rates do not include interest and dividend payouts for bonds and equities. \n", "\n", "Some observations in chronological order:\n", "\n", " - 2014-10-12, georet since 1988\n", " - Inflation in the long-run about 3% annually.\n", " - Bond price alone increases 2% annually (excludes interest income).\n", " - Gold at 1.73% does not keep up with inflation.\n", " - USD at break-even over the long-run.\n", " - Home prices have georet of 3.6%.\n", "\n", "\n", "- 2015-05-27, georet since 1988\n", " - Inflation in the long-run drops 70 bp to about 2.3% annually.\n", " - Bond price continues its increase at 2% annually.\n", " - Gold at 3.4% reacting more to stronger USD (cf. correlation).\n", " - Home prices also have georet of 3.4% (but low 2.6% volatility).\n", "\n", "\n", "- 2016-01-03, georet since 1988\n", " - Long-run inflation is 2.3% annually (Current Fed target: 2.0%).\n", " - Bond price increases at 2% annually (but Fed has just hiked rates!).\n", " - Equities at robust 7.6% annually (but ZIRP is finished).\n", " - Gold moving along at 2.9% (reflecting horrible 2015 year).\n", " - Nominal home prices at steady 3.4% per annum.\n", "\n", "\n", "- 2017-06-18, gemrat since 1988\n", " - Long-run inflation is 2.3% annually (Current Fed target: 2.0%).\n", " - Bond price increases at 1.6% annually (Fed Funds range: 100-125 bp).\n", " - Equities at robust 6.97% annually.\n", " - Gold stagnating at 1.6%.\n", " - Nominal home prices at steady 3.5% per annum. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Forecasts using Holt-Winters method\n", "\n", "We forecast one-year ahead using the monthly data\n", "and Holt-Winters with default parameters\n", "(which could be optimized for each individual time-series).\n", "\n", "Note that the most current inflation level is rebased to 1, \n", "thus 1.02 would signify 2% increase." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ " Homes Infl SPX USD XAU Zero10\n", "0 237048.401009 0.998722 2368.060000 100.605000 1232.400000 80.109472\n", "1 236335.064020 1.002023 2350.768764 101.934254 1242.502863 80.713012\n", "2 237617.243053 1.003772 2380.922547 102.284994 1239.653418 80.124459\n", "3 238899.422086 1.005521 2411.076329 102.635734 1236.803973 79.535906\n", "4 240181.601120 1.007270 2441.230111 102.986473 1233.954528 78.947353\n", "5 241463.780153 1.009020 2471.383894 103.337213 1231.105083 78.358800\n", "6 242745.959186 1.010769 2501.537676 103.687953 1228.255638 77.770247\n", "7 244028.138219 1.012518 2531.691459 104.038693 1225.406193 77.181694\n", "8 245310.317252 1.014267 2561.845241 104.389432 1222.556749 76.593141\n", "9 246592.496286 1.016016 2591.999023 104.740172 1219.707304 76.004588\n", "10 247874.675319 1.017765 2622.152806 105.090912 1216.857859 75.416035\n", "11 249156.854352 1.019514 2652.306588 105.441651 1214.008414 74.827482\n", "12 250439.033385 1.021264 2682.460371 105.792391 1211.158969 74.238929" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# These 12-periods ahead forecasts use default alpha and beta values\n", "# found empirically to be optimal for a fixed Kalman filter.\n", "\n", "groupholtf( msdf, h=12 )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Forecast log for monthly data\n", "\n", "Changing Holt-Winters *alpha* from 0.20 to 0.10 varies the forecast only slightly. The important parameter is *beta* to capture trend effects. Currently we shall rely on default Holt-Winters settings for robustness.\n", "\n", "\n", "- 2014-09-01, Twelve-month Forecasts given data through 2014-07-01:\n", " - Inflation at 1.44%.\n", " - 10-y Bonds price -6.7%, thus rate +75 bp given zero10dur. \n", " - SPX +16.6% to 2280.\n", " - Gold tanks from 1286 to 1067. \n", " - USD +1.4% broadly.\n", "\n", "\n", "- 2014-10-11, Twelve-month Forecasts given ten-year data, robust HW:\n", " - Inflation at 1.9%\n", " - Zero10 indicates slight downward pressure on interest rates.\n", " - SPX to 2239, but market seems skeptical.\n", " - Gold tanks to 1184 (region which we have seen just recently).\n", " - USD definitely has an upward bias against all FX, even NZD and AUD.\n", " - Home prices looking to increase from \\$203K to \\$220K \n", "\n", "\n", "- 2015-05-28, Twelve-month Forecasts given data through 2015-03-01, robust HW:\n", " - Inflation at 0.5% (which seems dramatic).\n", " - Zero10 price increases by 8.92%, thus 10-year rate decreases by 100 bp.\n", " - SPX to 2322, but no metric says it's fair valued.\n", " - Gold to 1130, which would break support.\n", " - USD very strong, up 12% globally (QE-EU started, and possible Grexit).\n", " - Home prices looking to increase from \\$214K to \\$223K\n", "\n", "\n", "- 2016-01-03, Twelve-month Forecasts given data through 2015-10-01, robust HW:\n", " - Inflation at 1.1% (still below Fed target, see https://git.io/fed)\n", " - Bonds and equities, forecasting Zero10 and SPX, will be flat.\n", " - Gold to continue down trend, expected to fall to \\$941 in a year.\n", " - USD 10% higher in light of divergence between Fed hike(s) and ECB QE.\n", " - Home prices expected to be flat (but watch mortgage spreads).\n", "\n", "\n", "- 2017-06-18, Twelve-month Forecasts given data through 2017-03-01, robust HW:\n", " - Inflation at 2.1% (to slightly exceed Fed target of 2.0%)\n", " - Bonds: Zero10 price to decline -7.3%, so higher bond rates.\n", " - SPX to climb higher by +13.3%.\n", " - Gold expected to fall to \\$1211 in a year.\n", " - USD 5.2% higher in light of higher expected interest rates.\n", " - Home prices expected higher by 5.7% (some regions are over-bid)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# DAILY DATA, including major FX\n", "\n", "We examine bonds (zero coupon equivalent of 10-y Treasury), \n", "equities (SPX), gold (XAU), EURUSD, and USDJPY \n", "at higher frequency (daily) for the most recent developments. \n", "\n", "We skip: *inflation and the real trade-weighted USD index \n", "which have a slow monthly release schedule. \n", "As for US home price data, there is a three month lag.* " ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Specify daily series of interest as a dictionary\n", "# where key is name, and value is its data code:\n", "dsdic = { 'Zero10' : d4zero10, 'SPX' : d4spx, 'XAU' : d4xau, \n", " 'EURUSD' : d4eurusd, 'USDJPY' : d4usdjpy }" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " :: S&P 500 prepend successfully goes back to 1957.\n" ] } ], "source": [ "# Download data into a dataframe:\n", "dsdf = groupget( dsdic )" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Construct the dega YoY percent dataframe:\n", "dega = grouppc( dsdf, freq=256 )\n", "# ^for daily data" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Set the start date for daily series:\n", "u0 = '2010-01-01'" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nrKxTAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ " :: Finished: boxplot-Assets_YoYd.png\n" ] } ], "source": [ "# Plot overlapping percentage changes:\n", "boxplot( dega[u0:], 'Assets YoYd' )\n", "\n", "# Note that the \"last\" timestamp will be more\n", "# recent than for the monthly series." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Although monthly data is more suitable for making long-term forecasts, \n", "daily data is more sensitive to immediate market perturbations. \n", "\n", "2016-01-03 Good example of the foregoing remark is the \n", "reaction in the overall market due to the first Fed rate hike \n", "in almost a decade on 2015-12-16. ZIRP, zero interest rate program, \n", "has been terminated, along with US quantitative easing, \n", "thus asset prices must adjust to financing constraints. \n", "Note how equities and gold are now below their mid-range boxes.\n", "\n", "2017-06-18 Only Zero10 is below its mid-range box,\n", "due to recent Fed rate hikes.\n", "The upper outliers for the SPX is quite remarkable." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " EURUSD SPX USDJPY XAU Zero10\n", "count 1946.000000 1946.000000 1946.000000 1946.000000 1946.000000\n", "mean -2.821745 12.635400 2.690537 4.866887 1.581339\n", "std 8.339085 10.355696 12.015074 17.209174 6.139394\n", "min -23.984762 -12.887678 -19.052589 -29.210332 -13.248728\n", "25% -8.763417 5.018106 -7.332421 -8.333041 -2.880033\n", "50% -1.567266 12.417470 0.733089 2.222734 2.244734\n", "75% 2.985455 18.454224 13.279215 21.337671 5.178653\n", "max 21.056554 65.300874 30.357599 52.361809 18.075299\n", "\n", " :: Index on min:\n", "EURUSD 2015-03-11\n", "SPX 2016-02-11\n", "USDJPY 2016-08-02\n", "XAU 2013-12-26\n", "Zero10 2010-01-07\n", "dtype: datetime64[ns]\n", "\n", " :: Index on max:\n", "EURUSD 2011-06-06\n", "SPX 2010-03-02\n", "USDJPY 2013-05-28\n", "XAU 2011-09-06\n", "Zero10 2012-02-01\n", "dtype: datetime64[ns]\n", "\n", " :: Head:\n", " EURUSD SPX USDJPY XAU Zero10\n", "T \n", "2010-01-01 4.506344 22.574830 2.117389 27.081507 -11.463243\n", "2010-01-04 6.846980 27.252204 2.548476 32.369431 -11.776234\n", "2010-01-05 7.904398 30.595454 2.878992 35.822249 -11.858700\n", " :: Tail:\n", " EURUSD SPX USDJPY XAU Zero10\n", "T \n", "2017-06-14 0.133191 16.708315 4.399388 0.227880 -3.830308\n", "2017-06-15 -1.187312 16.639574 5.833971 -0.814326 -4.086157\n", "2017-06-16 -1.573903 15.134007 4.664778 -0.534802 -3.659073\n", "\n", " :: Correlation matrix:\n", " EURUSD SPX USDJPY XAU Zero10\n", "EURUSD 1.000000 0.348922 -0.206051 0.173383 -0.465412\n", "SPX 0.348922 1.000000 0.220328 -0.051298 -0.615448\n", "USDJPY -0.206051 0.220328 1.000000 -0.801828 -0.373293\n", "XAU 0.173383 -0.051298 -0.801828 1.000000 0.419836\n", "Zero10 -0.465412 -0.615448 -0.373293 0.419836 1.000000\n" ] } ], "source": [ "stats(dega[u0:])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 2015-05-29, Suprisingly, very little correlation between EURUSD and USDJPY: -6%. Gold appears more correlated with USDJPY at -87% than EURUSD at +6%\n", "\n", "- 2016-01-05, Given the latest Fed hike, the correlation to watch is between equities and bonds (-0.69 SPX and Zero10).\n", "\n", "- 2017-06-18, Gold less correlated with USDJPY at -80%. Those expecting a sharp stock market decline are long bonds as a hedge, correlation at -61%." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ " EURUSD SPX USDJPY XAU Zero10\n", "T \n", "2017-06-08 1.1217 2433.79 110.10 1273.10 82.266927\n", "2017-06-09 1.1190 2431.77 110.61 1266.55 82.121206\n", "2017-06-12 1.1204 2429.39 109.72 1266.40 82.121206\n", "2017-06-13 1.1194 2440.35 110.12 1262.00 82.121206\n", "2017-06-14 1.1277 2437.92 109.16 1275.50 82.559190\n", "2017-06-15 1.1152 2432.46 110.66 1254.55 82.486022\n", "2017-06-16 1.1194 2433.15 110.84 1255.40 82.486022" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# What are the latest daily prices?\n", "tail( dsdf )" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[[-3.72, -3.25, 9.41, 4.52, 256, 1945, 'EURUSD'],\n", " [9.18, 10.27, 15.02, 7.76, 256, 1945, 'SPX'],\n", " [1.81, 2.3, 9.88, 6.65, 256, 1945, 'USDJPY'],\n", " [0.32, 1.89, 16.93, 9.17, 256, 1945, 'XAU'],\n", " [1.71, 1.96, 7.2, 4.1, 256, 1945, 'Zero10']]" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Geometric mean rates, non-overlapping, annualized:\n", "groupgemrat( dsdf[u0:], yearly=256 )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Closing remarks on daily data\n", "\n", "- 2014-10-11, Really near-term picture is too bright for SPX while XAU looks dark. Sell stocks, and start to accumulate gold.\n", "\n", "\n", "- 2015-05-28, XAU georet changed from 2.6% to 1.6%. Zero10 monthly forecast is basically unchanged. Real rate is what matters for gold. USD stronger by 4.8% against both the EUR and JPY.\n", "\n", "\n", "- 2016-01-03, XAU georet changed from 1.6% to -0.41%, commodities including oil going through a bear market. Bonds have not sold off despite 2015-12-16 Fed rate hike, probably due to world appetite for USD which is stronger by about 4.3% against EUR and JPY. SPX looks vulnerable given the past maxims about rate hikes, but the Fed is actually still very accomodative.\n", "\n", "\n", "- 2017-06-18, XAU gemrat appears stagnant at 0.44%. SPX still looks vulnerable given recent rate hikes, but the Fed is still accomodative despite very low unemployment. Bonds are set to accept money flow when the stock market tanks." ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.13" } }, "nbformat": 4, "nbformat_minor": 0 }