Looking Back to Plan Ahead

Just as a simple matter of coping with life, we are allowed to entertain expectations of the future.  Most commonly, if we set aside some amount today what do we expect to gain from making the sacrifice of not spending it right away.  Since the future is unknown, in order to gain some feel for this, one could make calculations for the future value by making some assumptions of the growth or loss , such as :

  • a fixed percentage every year, or some percentage ‘x1’  first 5 years, ‘x2’ the next n2 years, ‘x3’ next n3 and so on
  • completely random percentage(s) over the period as above
  • values provided by attractive or loud (or both) TV personalities
  • getting hot insider tips – possibly illegal
  • making forecasts using historical data available using statistical methods
  • using historical data as is but making a number of simulations based on actual values

Choosing a method is largely a matter of personal choice, purpose or inclination.  However, it is safe to say that basing an approach on real historic data inspires more confidence.  This is true whether one believes history repeats itself, or as Twain is reportedly to have said, it does not repeat itself but rather rhymes.  The more data we have,  obviously the better.  For our purposes, we will concentrate on data for market instruments or components available to the public.  Specifically, values over time for the broad market, i.e. SP500,  subset DJIA (Dow Jones Index), 3-month and 10-Year T-Bills,  The latter two represent fixed bond type instruments and will be useful when assessing returns and volatility that change with different allocations of capital between equity and fixed instruments.  And finally in order to represent value of money over time the CPI (Consumer Price Index) rate.  This is quite different from the discount rate and will be used to get a rough estimate of current dollars etc.,

While only a few asset classes have been selected and shown here, many others are available for diversification purposes.  Three main classes will be used while building models, e.g., equity, fixed & cash, represented by SP500 or DJIA, TB10Yr, TB3Month respectively.  If it is desired to include say, International Developed Equities, or  International Emerging Market  Equities and their bond equivalents in the portfolio allocation analysis, then data for these can be obtained and used.  Same for any other asset class which may be of interest. The goal is to either build or provide templates which make for enormous flexibility in analysis. In fact, it is very easy to get carried away by this capability and it is perhaps best initially to concentrate on simple diversification schemes, namely just between equities,  bonds and cash.   Resulting scenario summaries will be large enough just with varying allocation ratios for example.  And, when a variety of withdrawal possibilities, e.g.,  constant vs inflation adjusted, fixed or varying percentage of savings available any year, dynamically adjusted for failure avoidance, IRS supplied RMD rates and so on the results multiply as well.

This historical return data Historical Returns Combined DJIA SP500 10YrTBill etc.,will be used in many a planning scenario and should be downloaded for future use. A bird’s eye view of the distribution characteristics of these classes, along with code is provided just below table.

 

Historical Market Returns

YearDJIASP500TB3MonthTB10YrCPI
192848.2243.813.080.84-1.16
1929-17.17-8.33.164.20.58
1930-33.77-25.124.554.54-6.61
1931-52.67-43.842.31-2.56-9.78
1932-23.07-8.641.078.79-10.84
193366.6949.980.961.860.76
19344.14-1.190.327.961.5
193538.5346.740.184.472.94
193624.8231.940.175.021.44
1937-32.82-35.340.31.382.82
193828.0629.280.084.21-2.82
1939-2.92-1.10.044.410
1940-12.72-10.670.035.40.71
1941-15.38-12.770.08-2.029.47
19427.6119.170.342.298.65
194313.8125.060.382.492.92
194412.0919.030.382.582.27
194526.6535.820.383.82.22
1946-8.14-8.430.383.1316.66
19472.235.20.570.928.47
1948-2.135.71.021.952.95
194912.8818.31.14.66-2.1
195017.6330.811.170.435.76
195114.3723.681.48-0.35.83
19528.4218.151.672.270.75
1953-3.77-1.211.894.140.75
195443.9652.560.963.29-0.75
195520.7732.61.66-1.340.37
19562.277.442.56-2.262.94
1957-12.77-10.463.236.82.86
195833.9643.721.78-2.11.75
195916.412.063.26-2.651.72
1960-9.340.343.0511.641.35
196118.7126.642.272.060.67
1962-10.81-8.812.785.691.32
19631722.613.111.681.63
196414.5716.423.513.730.97
196510.8812.43.90.721.9
1966-18.94-9.974.842.913.4
196715.223.84.33-1.582.99
19684.2710.815.263.274.61
1969-15.19-8.246.56-5.016.01
19704.823.566.6916.755.42
19716.1114.224.549.793.21
197214.5818.763.952.823.35
1973-16.58-14.316.733.668.35
1974-27.57-25.97.781.9911.63
197538.32375.993.616.71
197617.8623.834.9715.984.75
1977-17.27-6.985.131.296.49
1978-3.156.516.93-0.788.63
19794.1918.529.940.6712.48
198014.9331.7411.22-2.9911.79
1981-9.23-4.714.38.28.55
198219.620.4211.0132.813.76
198320.2722.348.453.23.72
1984-3.746.159.6113.733.87
198527.6631.247.4925.713.73
198622.5818.496.0424.281.09
19872.265.815.72-4.964.34
198811.8516.546.458.224.32
198926.9631.488.1117.694.54
1990-4.34-3.067.556.245.93
199120.3230.235.61153.02
19924.177.493.419.362.86
199313.729.972.9814.212.71
19942.141.333.99-8.042.64
199533.4537.25.5223.482.51
199626.0122.685.021.433.27
199722.6433.15.059.941.69
199816.128.344.7314.921.6
199925.2220.894.51-8.252.65
2000-6.18-9.035.7616.663.33
2001-7.1-11.853.675.571.54
2002-16.76-21.971.6615.122.35
200325.3228.361.030.381.86
20043.1510.741.234.493.2
2005-0.614.833.012.873.36
200616.2915.614.681.962.51
20076.435.484.6410.214
2008-33.84-36.551.5920.10.09
200918.8225.940.14-11.122.68
201011.0214.820.138.461.48
20115.532.10.0316.042.92
20127.2615.890.052.971.73
201326.532.150.07-9.11.49
20147.5213.480.0510.750.75
2015-2.231.380.211.280.73
201613.4211.770.510.692.05
201725.0821.641.392.82.09

 

In window below:  Bold blue is R code;  Bold Red is output from code

##   read in the saved return data
histBack <- as.xts(read.zoo("Z:/WorkSpace/R/Datasets/HistCombinedRet.csv", head=TRUE, as.is=TRUE,sep=",",format="%Y-%m-%d"))
summary(histBack*100)   ###  value on disk not in %
     Index                 DJIA             SP500            TB3Month          TB10Yr             CPI         
 Min.   :1928-12-31   Min.   :-52.670   Min.   :-43.840   Min.   : 0.030   Min.   :-11.120   Min.   :-10.840  
 1st Qu.:1951-03-31   1st Qu.: -3.763   1st Qu.: -1.167   1st Qu.: 0.960   1st Qu.:  1.010   1st Qu.:  1.450  
 Median :1973-06-30   Median :  8.015   Median : 13.850   Median : 3.065   Median :  3.280   Median :  2.695  
 Mean   :1973-06-30   Mean   :  7.400   Mean   : 11.530   Mean   : 3.438   Mean   :  5.153   Mean   :  2.952  
 3rd Qu.:1995-09-29   3rd Qu.: 19.405   3rd Qu.: 24.753   3rd Qu.: 5.110   3rd Qu.:  8.400   3rd Qu.:  3.967  
 Max.   :2017-12-29   Max.   : 66.690   Max.   : 52.560   Max.   :14.300   Max.   : 32.810   Max.   : 16.660  

Summary shows minimum, maximum, mean etc.,   Ignore the first column of summary output – peculiarity of using summary function on xts object!

Note on data. This has been collected from various sources and  year-to-year returns have been tabulated as shown in the table.  Data for all the components mentioned earlier are available from 1928 onward.  This gives us 90 years worth of annual returns data.   Sources for data include  Prof A. Damodaran’s  (NYU Stern School of Business) excellent site http://pages.stern.nyu.edu/~adamodar/. The Fed of course have an abundance of data  in https://fred.stlouisfed.org/,  and  Yahoo, Google, AlphaVantage, Morningstar, Quandl are among some of the other sources of data.  Some of these sources have easy to use R-API interfaces to access them.  A later post will explore or provide some sample R scripts to facilitate acquiring data from such sources.

Thanx for reading