#============================================
# factorModels.r
# Examples for Scottish Financial Risk Academy Factor Model tutorial
# author: Eric Zivot
# created: January 10, 2011
# updated: March 14, 2011
#
# comments: Examples follow chapter 11 in Zivot and Wang (2006)

# set output options
options(width = 360, digits=9)

# load required packages
library(ellipse)
## 
## Attaching package: 'ellipse'
## The following object is masked from 'package:graphics':
## 
##     pairs
#library(fEcofin)                # various data sets
library(PerformanceAnalytics)   # performance and risk analysis functions
## Loading required package: xts
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## 
## Attaching package: 'PerformanceAnalytics'
## The following object is masked from 'package:graphics':
## 
##     legend
library(zoo)
library(readxl)
library(writexl)

################################################################################
# Macroeconomic Factor Models
################################################################################

##
## Single Index Model
##

# load Berndt Data
#data(berndtInvest)
?read_csv
## No documentation for 'read_csv' in specified packages and libraries:
## you could try '??read_csv'
retdata = read.csv("FamaFrench.csv")
retdata
##       date Mkt.RF   SMB   HML   RF       ge      ibm    mobil     CRSP
## 1   196901  -1.20 -0.80  1.57 0.53  -1.1984  -5.9524  -1.4043  -0.6714
## 2   196902  -5.82 -3.90  0.93 0.46  -6.0377  -0.7004  -7.8431  -5.3641
## 3   196903   2.59 -0.28 -0.45 0.46   6.6474   7.0303  21.5130   3.0505
## 4   196904   1.52 -0.85  0.06 0.53   5.9621   4.4586   2.9961   2.0528
## 5   196905   0.02 -0.27  0.74 0.48  -3.5806  -2.5000   2.6667   0.5038
## 6   196906  -7.25 -5.31 -1.15 0.51  -3.8196   5.8777 -12.9870  -6.7388
## 7   196907  -7.05 -3.27  1.36 0.53  -4.3056  -3.9230  -6.0981  -6.5173
## 8   196908   4.65  0.89 -3.83 0.50  -2.7576   6.6256  10.7798   5.1488
## 9   196909  -2.88  1.20 -3.24 0.62   2.2687   0.0725 -10.3520  -2.2590
## 10  196910   4.96  3.78 -3.19 0.60  -1.0294   4.4171  -4.4342   5.5647
## 11  196911  -3.74 -2.58 -1.15 0.52  -4.7548  -0.6935  -5.3790  -3.2166
## 12  196912  -2.61 -3.65 -3.01 0.64  -2.4649   2.1008  -4.9096  -1.9683
## 13  197001  -7.93  2.91  3.03 0.60  -6.6129  -8.0247 -14.7283  -7.3252
## 14  197002   5.05 -2.44  3.92 0.62  -2.5907   1.8494   9.7087   5.6708
## 15  197003  -1.04 -2.39  4.15 0.57   5.5319  -0.5143   1.7699  -0.4729
## 16  197004 -11.03 -6.12  6.30 0.50  -3.3898 -11.9645  -3.5362 -10.5318
## 17  197005  -6.96 -4.51  3.51 0.53  -6.8421  -6.3087   7.3171  -6.4346
## 18  197006  -5.69 -2.13  0.82 0.58   2.6742 -10.0719  -0.5682  -5.1075
## 19  197007   6.90 -0.55  1.01 0.52  13.8889   1.3800   8.2286   7.4191
## 20  197008   4.47  1.51  1.26 0.53   2.1138   5.5500   6.4171   5.0047
## 21  197009   4.21  8.73 -5.62 0.54   8.3121   9.5775   4.2714   4.7510
## 22  197010  -2.28 -4.23  0.22 0.46   1.9259   1.1825   4.2892  -1.8181
## 23  197011   4.58 -4.04  1.73 0.46   2.7616   4.5068   6.5421   5.0450
## 24  197012   5.65  2.92  0.96 0.42   6.9590   3.4174   0.8772   6.0713
## 25  197101   4.82  7.48  1.53 0.38   5.7257   2.4390  -7.6522   5.2030
## 26  197102   1.36  1.87 -1.38 0.33   8.9421   3.7788   3.8095   1.6899
## 27  197103   4.18  2.58 -4.01 0.30   4.1850   6.2407   1.3761   4.4788
## 28  197104   3.05 -0.43  0.93 0.28   9.7098   0.0699   6.8326   3.3326
## 29  197105  -3.93 -1.08 -1.28 0.29  -2.4415  -8.2320  -7.0664  -3.6386
## 30  197106  -0.06 -1.43 -2.14 0.37   1.9395  -3.0581   2.7650   0.3130
## 31  197107  -4.43 -1.48  0.01 0.40 -12.1399  -8.1230  -5.5605  -4.0270
## 32  197108   3.78 -0.14  2.66 0.47  16.1592   4.8240  -5.7692   4.2502
## 33  197109  -0.87  0.45 -2.94 0.37  -0.2419  -0.0822  -0.7653  -0.5016
## 34  197110  -4.44 -1.77 -0.51 0.37  -5.2846  -1.0700   2.3650  -4.0671
## 35  197111  -0.50 -2.89 -1.67 0.37   2.5751   2.0965   1.5267  -0.1263
## 36  197112   8.76  3.37 -0.26 0.37   5.3975  10.1473   9.5238   9.1268
## 37  197201   2.55  6.10  2.13 0.29  -0.9980   9.3611  -1.3730   2.8385
## 38  197202   2.88  1.37 -2.84 0.25  -2.2177   0.5027   3.0626   3.1338
## 39  197203   0.60 -0.28 -1.68 0.27   7.1753   3.7313  -6.3781   0.8728
## 40  197204   0.26  0.01  0.39 0.29   4.6422   0.9810   1.7032   0.5491
## 41  197205   1.34 -2.77 -2.71 0.30   1.6636   3.3938   6.9856   1.6372
## 42  197206  -2.38  0.36 -2.40 0.29  -3.8545  -1.4456   1.8100  -2.0894
## 43  197207  -0.74 -2.86  0.72 0.31  -4.1825   2.2321   5.7778  -0.4248
## 44  197208   3.31 -4.09  4.62 0.29   5.5556   2.2707  14.1176   3.5972
## 45  197209  -1.11 -2.67  0.48 0.34   0.3383  -0.4896   1.6729  -0.7670
## 46  197210   0.47 -2.71  1.36 0.40  -3.7665  -5.1661   2.3035   0.8678
## 47  197211   4.61 -1.13  4.78 0.37   6.8102   1.7769   5.9567   4.9770
## 48  197212   0.75 -1.87 -2.30 0.37   7.3665   2.8133   0.8518   1.1246
## 49  197301  -3.20 -3.51  2.70 0.44  -3.9451   8.3333   1.6216  -2.7655
## 50  197302  -4.86 -3.98  1.71 0.41  -3.9643  -0.5970 -13.9262  -4.4492
## 51  197303  -1.25 -2.91  2.79 0.46  -3.5514   0.0000   8.9669  -0.7942
## 52  197304  -5.70 -4.03  5.65 0.52  -8.1395  -5.4461  -4.4723  -5.1735
## 53  197305  -2.96 -6.12  0.17 0.51   0.4219  -3.2261  -2.6966  -2.4497
## 54  197306  -1.38 -2.96  1.40 0.51  -2.9832   0.7149   0.1946  -0.8689
## 55  197307   5.07  7.96 -5.31 0.64   9.3682  -0.7886  -5.3204   5.7109
## 56  197308  -3.67 -2.14  1.22 0.70  -5.7769  -3.9364  -2.0747  -2.9654
## 57  197309   4.72  2.89  2.14 0.68   7.2304 -14.2857   6.7797   5.3993
## 58  197310  -0.68 -0.21  1.76 0.65   3.7698   8.6240  -7.0238  -0.0296
## 59  197311 -12.64 -7.75  3.99 0.56  -2.8298  -5.0419 -18.1425 -12.0880
## 60  197312   0.50 -5.31  4.05 0.64  -0.1980  -6.8868  11.8734   1.1442
## 61  197401  -0.19  9.79  5.88 0.63  -4.9603  -0.6079  -5.5660   0.5024
## 62  197402  -0.35 -0.06  2.51 0.58  -4.7599  -2.4852  -9.8985   0.2648
## 63  197403  -2.90  2.41 -0.08 0.56  -4.1943  -0.8933   2.5352  -2.2878
## 64  197404  -5.35 -0.82  0.96 0.75  -5.9908  -3.6055  -4.0110  -4.6377
## 65  197405  -4.95 -2.94 -2.00 0.75  -5.3922  -5.9274  -3.2070  -4.1974
## 66  197406  -2.89 -0.16  0.80 0.60   2.9016   0.1176  -3.3133  -2.2946
## 67  197407  -7.79  0.86  5.17 0.70 -12.6904  -5.2291   2.9283  -7.0891
## 68  197408  -9.38 -0.70  2.61 0.60 -11.9186  -4.0298  -8.6420  -8.7741
## 69  197409 -11.78  0.31  5.50 0.81 -16.4356 -17.1875 -11.8243 -10.9712
## 70  197410  16.05 -3.40 -9.80 0.51  22.4000  18.9465  12.4138  16.5614
## 71  197411  -4.64 -1.21 -0.17 0.54  -2.9412  -5.4858  -8.0139  -4.0940
## 72  197412  -3.40 -4.83  0.06 0.70  -9.0236  -5.2186   9.0909  -2.7007
## 73  197501  13.58 10.96  8.24 0.58  15.7303  12.0536  16.9444  14.1429
## 74  197502   5.41  0.18 -4.44 0.43  15.2751  15.2722   0.3030   5.8610
## 75  197503   2.61  3.80  2.50 0.41   4.2493  -4.1183  -3.9275   3.0163
## 76  197504   4.21 -0.51 -1.24 0.44   0.0000   1.5729   3.3962   4.6423
## 77  197505   5.07  3.87 -4.15 0.44  -1.3587   3.1566  17.7019   5.5156
## 78  197506   4.74  0.75  1.34 0.41  16.8595  -2.7907   0.2639   5.1587
## 79  197507  -6.52  2.67  1.65 0.48 -10.2138  -8.9713  -4.5263  -6.0447
## 80  197508  -2.84 -3.23 -0.86 0.48  -2.1164  -1.1827  -0.8427  -2.3611
## 81  197509  -4.33 -0.06  0.40 0.53  -4.0000   1.0738   1.1331  -3.7964
## 82  197510   5.03 -4.04  0.30 0.56   9.3750  12.7490   4.7059   5.6037
## 83  197511   2.71 -1.21  2.03 0.41   0.2597   7.4794  -1.0899   3.1164
## 84  197512  -1.58 -0.79  1.76 0.48  -3.5751  -0.9387   4.1322  -1.1014
## 85  197601  12.13  4.80  8.57 0.47  21.4092  14.9387  16.8783  12.5958
## 86  197602   0.39  7.00  5.81 0.34  -4.6875  -0.1455  -1.1494   0.7165
## 87  197603   2.28 -1.16 -0.11 0.40  -0.8899   2.4939   7.9070   2.6804
## 88  197604  -1.46 -0.05 -0.07 0.42   2.3810  -3.2920   2.3707  -1.0473
## 89  197605  -1.31 -1.26 -1.32 0.37  -5.3488   1.9734   1.8526  -0.9363
## 90  197606   4.02 -1.34  0.78 0.43  13.0713   7.8422   0.4193   4.4439
## 91  197607  -1.09  0.28  1.74 0.47  -4.5952  -1.6712  -2.2965  -0.6111
## 92  197608  -0.56 -1.97  0.83 0.42  -2.7523   1.3780  -0.0427  -0.1385
## 93  197609   2.01  0.01 -0.32 0.44   2.9717   2.8323   6.7245   2.4500
## 94  197610  -2.45  0.16 -0.18 0.41  -1.3857  -3.4207  -1.6260  -2.0402
## 95  197611   0.14  2.35  1.49 0.40  -5.1522   0.5520   0.5372   0.5578
## 96  197612   5.76  2.98  2.27 0.40  10.7654   2.9982   8.5595   6.1600
## 97  197701  -3.99  4.81  4.29 0.36  -4.9438  -1.3883   2.8846  -3.6341
## 98  197702  -1.93  1.06  0.45 0.35  -4.4917   1.1807   0.1121  -1.5759
## 99  197703  -1.30  1.03  1.09 0.38  -1.8317   0.1812   1.8939  -0.9247
## 100 197704   0.12 -0.10  3.44 0.38   9.6692  -6.4195  -1.4870   0.4957
## 101 197705  -1.45  1.25  0.89 0.37   0.6961  -4.1546  -1.5849  -1.0792
## 102 197706   4.74  2.18 -0.62 0.40   5.1613   7.5356   5.8366   5.1359
## 103 197707  -1.70  2.12 -0.59 0.42  -3.7611   1.5625   0.5515  -1.2806
## 104 197708  -1.78  1.54 -2.74 0.44  -1.8391   1.0256 -10.8592  -1.3357
## 105 197709  -0.27  1.44 -0.51 0.43  -2.9508  -2.7480   3.1250   0.1574
## 106 197710  -4.42  1.29  1.76 0.49  -2.1951  -1.4368   0.0000  -3.9284
## 107 197711   4.04  3.69  0.35 0.50   1.0973   3.5957   4.9293   4.5434
## 108 197712   0.33  1.37 -0.32 0.49  -0.4988   3.5985  -0.3914   0.8209
## 109 197801  -6.01  2.22  3.30 0.49  -8.2707  -2.9250  -4.6365  -5.5195
## 110 197802  -1.39  3.61  0.87 0.46  -2.1858  -4.2825  -1.6771  -0.9280
## 111 197803   2.87  3.41  1.23 0.53   5.4190  -6.2687   4.9041   3.4004
## 112 197804   7.74  0.37 -3.47 0.54  12.0643  12.9512   7.7236   8.2844
## 113 197805   1.81  4.63 -0.59 0.51   1.1962  -1.8308  -1.0566   2.3228
## 114 197806  -1.62  1.74  0.56 0.54  -3.2624  -0.3872  -4.2636  -1.0751
## 115 197807   5.11  0.29 -1.14 0.56   6.1881   9.2323   2.8340   5.6740
## 116 197808   3.69  5.08 -0.47 0.55   1.1655   4.8950   5.5905   4.2352
## 117 197809  -1.31 -0.41  1.89 0.62  -1.3364  -5.0964   6.4394  -0.6892
## 118 197810 -11.78 -9.95  1.37 0.68 -10.1655  -4.6029  -6.9039 -11.0995
## 119 197811   2.68  3.10 -2.19 0.70   0.5789   3.0766   3.6965   3.3793
## 120 197812   0.99  1.27 -2.12 0.78   0.0000  10.7607   4.1276   1.7713
## 121 197901   4.18  3.66  2.17 0.77   2.3873   3.4338   6.0541   4.9491
## 122 197902  -3.41  0.45  1.15 0.73  -3.3161  -1.7198  -0.1727  -2.6774
## 123 197903   5.75  3.20 -0.62 0.81   4.3478   5.1667   2.9412   6.5611
## 124 197904   0.05  2.19  1.08 0.80   2.3438  -0.3962   7.8992   0.8521
## 125 197905  -2.18  0.12  1.29 0.82   1.4249  -2.1671  -8.6293  -1.3597
## 126 197906   3.88  1.14  1.45 0.81   1.7812  -3.4539   8.8388   4.6851
## 127 197907   0.73  1.29  1.79 0.77   3.5000  -4.9404   1.8471   1.4989
## 128 197908   5.70  2.03 -1.58 0.77   2.8986   1.5914  11.1111   6.4743
## 129 197909  -0.69 -0.27 -0.90 0.83  -3.3803  -3.2143  18.0000   0.1409
## 130 197910  -8.14 -3.30 -1.88 0.87  -4.6798  -7.9336  -3.1477  -7.2651
## 131 197911   5.37  2.79 -3.25 0.99  -3.2041   5.9880   5.0761   6.3604
## 132 197912   1.87  4.13 -2.03 0.95   9.7561  -1.3410   6.2802   2.8201
## 133 198001   5.76  1.69  1.76 0.80   8.6420   6.6019   7.5000   6.5578
## 134 198002  -0.79 -1.80  0.59 0.89  -7.3636  -6.2149  36.6167   0.1028
## 135 198003 -13.23 -6.64 -1.03 1.21  -4.2289 -12.2047 -17.5549 -12.0207
## 136 198004   3.97  0.95  1.06 1.26  -1.2987  -1.5695  11.9392   5.2297
## 137 198005   5.20  2.08  0.34 0.81   5.7895   2.4784   0.3436   6.0073
## 138 198006   3.16  1.71 -0.87 0.61   4.0404   6.0948  -2.3973   3.7710
## 139 198007   6.41  4.29 -6.22 0.53   9.2233  11.0638   5.4035   6.9447
## 140 198008   1.72  3.94 -2.64 0.64  -3.1111   1.7011  -5.8923   2.3514
## 141 198009   2.20  0.92 -4.65 0.75  -2.0642  -2.0992   0.7156   2.9481
## 142 198010   1.06  2.53 -2.70 0.95   2.8504   3.8986   5.8615   2.0038
## 143 198011   9.53 -3.37 -8.44 0.96  14.3187   3.5422  19.2953  10.4928
## 144 198012  -4.75 -0.32  2.66 1.31   0.2020  -0.3670  -8.1081  -3.4379
## 145 198101  -5.05  2.96  6.82 1.04   0.0000  -5.1565  -8.2043  -4.0113
## 146 198102   0.48 -0.36  1.02 1.07   8.9796   1.1417  -6.6667   1.5533
## 147 198103   3.41  3.56  0.71 1.21   1.4981  -2.9183  -4.2125   4.6186
## 148 198104  -2.21  4.41  2.26 1.08  -2.0522  -6.0120  -2.4857  -1.1243
## 149 198105   0.21  2.02 -0.39 1.15   0.1905   1.6802  -9.1633   1.3534
## 150 198106  -2.37 -0.86  5.09 1.35  -4.6768  -1.4894   5.2632  -1.0176
## 151 198107  -1.55 -2.14 -0.57 1.24  -1.4141  -3.0238   2.0833  -0.3053
## 152 198108  -6.91 -1.95  4.83 1.28  -8.4016  -0.2494  -5.7143  -5.6263
## 153 198109  -7.62 -2.66  5.20 1.24  -0.3579  -1.8141 -10.5727  -6.3748
## 154 198110   4.81  2.19 -4.16 1.21  -1.1390  -4.8499   2.4631   6.0182
## 155 198111   3.52 -0.99  1.86 1.07  11.2903   7.4951   3.8462   4.5837
## 156 198112  -3.68  1.20  0.75 0.87  -3.6439   4.3578  -8.9623  -2.8082
## 157 198201  -3.42 -1.22  3.11 0.80   8.9325  11.8681  -1.5544  -2.6205
## 158 198202  -6.03  0.47  6.00 0.92   0.6000  -1.3988  -1.5789  -5.1118
## 159 198203  -1.99 -0.23  3.91 0.98   2.0676  -3.4343  -3.8251  -1.0083
## 160 198204   3.20  1.52 -2.79 1.13   1.1834   7.5314  -1.1364   4.3273
## 161 198205  -3.88  0.48  1.84 1.06  -3.5088  -2.9416   9.1954  -2.8197
## 162 198206  -3.35 -0.38  1.52 0.96   4.2020  -1.4228  -3.7634  -2.3914
## 163 198207  -3.10  0.88  0.19 1.05   3.3399   8.2474  -7.2626  -2.0539
## 164 198208  11.14 -4.15  1.13 0.76  14.4487   8.7390  15.6627  11.9023
## 165 198209   1.17  2.94  0.34 0.51   0.4651   4.0780   4.2553   1.6758
## 166 198210  11.27  2.33 -3.64 0.59  14.8829   8.8586   2.0408  11.8634
## 167 198211   4.56  4.79 -1.93 0.63   8.7045   9.3709  -4.0000   5.1921
## 168 198212   0.78 -0.17  0.05 0.67   2.5676  11.2717   6.9149   1.4449
## 169 198301   3.50  2.69 -0.88 0.69   9.0909   2.7273   5.4726   4.1546
## 170 198302   2.40  3.24  0.74 0.62   4.8309   0.9962   0.9434   3.0502
## 171 198303   2.84  1.80  2.06 0.63  -2.4424   2.7778   9.5238   3.4707
## 172 198304   6.71  0.47  0.56 0.71   6.5476  14.9877   9.1304   7.4271
## 173 198305   0.63  6.18 -1.41 0.69  -7.5978  -4.1026  -5.1793   1.3074
## 174 198306   3.11  0.96 -3.83 0.67   7.3277   8.0899   7.6923   3.7997
## 175 198307  -3.90  1.50  5.57 0.74  -9.3182   0.1040  -5.9524  -3.1727
## 176 198308  -0.41 -4.30  5.55 0.76   2.5063   0.0623  11.8143   0.3569
## 177 198309   0.85  0.59  1.06 0.76   4.1076   6.1715  -4.9808   1.6314
## 178 198310  -3.56 -3.60  4.97 0.76  -1.8957  -0.0985  -3.2258  -2.7745
## 179 198311   2.26  2.02 -0.72 0.70  11.3527  -6.6469  -3.3333   2.9353
## 180 198312  -1.78 -0.27  1.74 0.73   2.6258   3.9404   0.8772  -1.0431
## 181 198401  -2.06 -0.40  7.62 0.76  -7.2495  -6.4549   8.4348  -1.2917
## 182 198402  -4.62 -1.67  3.36 0.71  -4.3678  -2.5630   2.4490  -3.9171
## 183 198403   0.61  0.06  0.55 0.73   6.4904   3.4014  -2.7888   1.3449
## 184 198404  -0.56 -1.14  1.26 0.81   1.1390  -0.2193   2.8689   0.2735
## 185 198405  -6.01  0.06  0.22 0.78  -4.2793  -4.4396 -14.5817  -5.2351
## 186 198406   1.59 -0.24 -2.66 0.75  -0.2353  -1.8561   0.9524   2.3593
## 187 198407  -2.88 -2.28  0.33 0.82   0.0000   4.7281  -9.2453  -2.0359
## 188 198408  10.44 -0.27 -1.84 0.83   7.8571  12.7314  26.0638  11.2571
## 189 198409  -0.82  0.22  5.27 0.86  -0.6623   0.4040   1.2658   0.0384
## 190 198410  -1.01 -1.18  0.53 1.00   3.1390   1.1871   1.4167   0.0131
## 191 198411  -1.80 -0.67  3.97 0.73  -2.7391  -2.3069  -4.1841  -1.0492
## 192 198412   1.73 -0.56 -0.09 0.64   2.2573   1.1294  -5.2402   2.3797
## 193 198501   7.92  3.25 -5.37 0.65  12.8035  10.7614   5.2535   8.5734
## 194 198502   1.11  0.84 -0.07 0.58   0.4697  -0.9349   7.1429   1.7002
## 195 198503  -0.79 -1.12  4.02 0.62  -7.0727  -5.2239   0.0000  -0.1930
## 196 198504  -0.94  0.15  3.69 0.72   0.0000  -0.3937   2.6667  -0.2183
## 197 198505   4.92 -2.26 -0.86 0.66   3.4672   2.5494   2.8926   5.5878
## 198 198506   1.16  0.51  0.47 0.55   2.0619  -3.7901  -3.2129   1.7188
## 199 198507  -0.65  2.84 -1.61 0.62   3.6364   6.1616   0.1660  -0.0547
## 200 198508  -1.03 -0.35  2.19 0.55  -4.8733  -2.7783  -1.2658  -0.4806
## 201 198509  -4.58 -1.61  1.23 0.60  -4.8361  -2.1718   0.4274  -3.9657
## 202 198510   3.79 -1.58  0.70 0.65   0.2174   4.8436   9.9574   4.4577
## 203 198511   6.31  0.19 -2.92 0.61  13.8829   8.4504  -0.7874   6.9269
## 204 198512   3.66 -0.41 -1.48 0.65  11.7410  11.2701  -3.9683   4.3260
## 205 198601   0.42  1.18  0.48 0.56  -2.5773  -2.5723  -2.0661   0.9849
## 206 198602   6.72 -0.51 -0.64 0.53  10.1658   0.3135  -0.2532   7.2851
## 207 198603   4.79 -0.56 -0.55 0.60   1.2903   0.4143  -2.5862   5.3887
## 208 198604  -1.31  2.75 -2.97 0.52  -0.4777   3.1353   4.1593  -0.8061
## 209 198605   4.59 -1.25 -0.14 0.49   2.0800  -1.7760   8.2251   5.0822
## 210 198606   0.90 -0.92  1.30 0.52   2.2947  -3.8556   1.2000   1.4299
## 211 198607  -6.49 -3.43  4.70 0.52  -9.8765  -9.5563  -2.2134  -5.9675
## 212 198608   6.16 -4.20  3.54 0.46   7.7055   5.5472  17.2840   6.6390
## 213 198609  -8.35  2.29  3.20 0.45  -7.8474  -3.0631   5.2632  -7.9142
## 214 198610   4.47 -2.59 -1.42 0.46   6.0870  -8.0855   2.0000   4.9450
## 215 198611   1.12 -1.96 -0.10 0.39   8.8525   3.7209   4.3791   1.5160
## 216 198612  -3.13  0.09  0.31 0.49   4.3735  -5.6047   1.9048  -2.6555
## 217 198701  12.43 -1.75 -3.10 0.42  16.5698   7.2917   9.3458  12.8378
## 218 198702   4.36  3.48 -5.90 0.43   3.1172   9.2039  -2.1652   4.7627
## 219 198703   1.89  0.36  1.61 0.47   2.0605   7.6165  12.3894   2.3236
## 220 198704  -2.14 -1.67 -0.22 0.44  -1.3111   6.6611  -0.6824  -1.7122
## 221 198705   0.13 -0.54  0.23 0.38   0.4831   0.6089  -0.2674   0.5218
## 222 198706   3.89 -2.11  1.15 0.48   5.2019   1.5625   9.1153   4.3836
## 223 198707   3.96 -0.49  0.91 0.46   8.9655  -0.9231   3.1941   4.4058
## 224 198708   3.24 -0.78 -0.99 0.47   5.4852   5.2640   2.9524   3.7228
## 225 198709  -2.53  0.57  0.29 0.45  -1.0720 -10.4677  -8.1776  -2.0737
## 226 198710 -23.13 -8.42  4.09 0.60 -22.9675 -18.7396 -17.8117 -22.4879
## 227 198711  -7.58  2.63  3.25 0.35 -10.5541  -8.6939 -15.0464  -7.2908
## 228 198712   6.64  0.17 -4.44 0.39   4.9558   4.2889  15.9259   7.0414
## 229 198801   4.20 -0.63  5.18 0.29   2.2663  -2.7056  12.7796   4.5348
## 230 198802   4.71  3.38 -1.55 0.46   0.8310   5.5395   0.9632   5.1609
## 231 198803  -2.10  6.18  0.80 0.44 -10.4945  -8.4043   0.5682  -1.7064
## 232 198804   0.64  0.92  1.64 0.46   0.0000   5.3426   5.6497   1.0989
## 233 198805  -0.47 -2.68  2.26 0.51   4.0248   0.1985  -2.7273   0.0938
## 234 198806   4.66  2.03 -1.26 0.49   5.2976  13.2222  -3.0641   5.1372
## 235 198807  -1.24 -0.17  2.29 0.51  -2.5641  -1.2758   2.8736  -0.7179
## 236 198808  -3.39  0.10  2.04 0.59  -5.5556 -10.4573  -1.7318  -2.7928
## 237 198809   3.10 -1.28 -0.70 0.62   8.2972   3.4753  -1.7291   3.7276
## 238 198810   1.15 -2.91  1.62 0.61   0.5764   6.2839   4.1056   1.7660
## 239 198811  -2.21 -1.76  1.23 0.57   3.1519  -2.4669   1.6338  -1.6400
## 240 198812   1.48  1.95 -1.51 0.63   0.3556   2.8481   2.2472   2.1005
## 241 198901   6.06 -2.12  0.57 0.55   8.1006   7.1795   7.6374   6.5958
## 242 198902  -2.25  2.78  0.89 0.61  -5.4264  -6.1435  -3.6176  -1.6365
## 243 198903   1.48  0.74  0.51 0.67  -1.8361 -10.1852   5.0938   2.1530
## 244 198904   4.15 -0.56 -1.47 0.67   9.8315   4.4674   3.5714   4.8536
## 245 198905   3.14 -0.04 -0.85 0.79  11.7647  -2.7763   2.7586   3.9529
## 246 198906  -1.20 -1.00  2.17 0.71  -4.7414   2.0525  -4.1262  -0.4925
## 247 198907   7.01 -4.05 -2.72 0.70  13.3172   2.7933   3.7975   7.7109
## 248 198908   1.47  0.59  0.64 0.74  -1.4957   2.9000   8.3415   2.1960
## 249 198909  -0.80  0.33 -1.29 0.65  -1.2408  -6.7236   2.2779  -0.1587
## 250 198910  -3.61 -3.23 -1.14 0.68  -1.9912  -8.2380   0.4900  -2.9390
## 251 198911   1.09 -1.24 -1.15 0.69  11.9639  -1.4115   5.6054   1.7846
## 252 198912   1.22 -2.38  0.19 0.61   4.7903  -3.5851   6.3694   1.8290
## 253 199001  -7.58 -1.26  0.82 0.57  -3.4884   4.7809  -4.5509  -7.0054
## 254 199002   0.92  1.04  0.64 0.57  -0.0482   6.5501   4.4397   1.4978
## 255 199003   1.77  1.49 -2.90 0.64   4.0486   2.1661  -0.4049   2.4162
## 256 199004  -3.52 -0.47 -2.47 0.69  -0.3891   2.7091  -2.0325  -2.8150
## 257 199005   8.21 -2.60 -3.75 0.68   8.3516  11.2018   5.5602   8.8887
## 258 199006  -1.05  1.46 -2.03 0.63   0.5445  -2.0833  -1.7893  -0.4300
## 259 199007  -1.62 -3.07  0.11 0.68   3.4296  -5.1064   6.8421  -0.9381
## 260 199008  -9.85 -3.51  1.54 0.66 -13.4380  -7.5471  -2.1073  -9.1740
## 261 199009  -5.98 -3.65  0.66 0.60 -11.3387   4.4172  -1.5656  -5.3868
## 262 199010  -1.93 -5.56  0.21 0.68  -4.5872  -0.9401  -8.3897  -1.2422
## 263 199011   6.00  0.32 -3.01 0.57   5.2885   8.9775   3.5165   6.5985
## 264 199012   2.35  0.79 -1.56 0.60   5.7260  -0.5501  -1.4862   2.9549
## 265 199101   4.39  3.84 -1.74 0.52  11.5468  12.1681  -0.9052   4.9067
## 266 199102   7.10  3.91 -0.58 0.48   7.0469   2.5325  11.0132   7.5686
## 267 199103   2.45  3.92 -1.21 0.44   2.3897 -11.5534   2.3810   2.8793
## 268 199104  -0.20  0.52  1.45 0.53   1.6158  -9.5499   6.2016   0.3332
## 269 199105   3.60 -0.36 -0.53 0.47   9.9081   4.2087  -2.6642   4.0607
## 270 199106  -4.82  0.12  1.14 0.42  -4.2071  -8.4806  -2.4668  -4.4247
## 271 199107   4.19 -0.96 -1.30 0.49  -1.0135   4.2471   6.4981   4.6838
## 272 199108   2.22  1.61 -0.79 0.46   2.2184  -3.1259   1.1091   2.6912
## 273 199109  -1.56  1.67 -1.09 0.46  -6.6644   6.9677  -0.3656  -1.1062
## 274 199110   1.36  0.87 -0.41 0.42  -0.5405  -5.1870   4.2936   1.7714
## 275 199111  -4.12 -0.55 -1.84 0.39  -6.1594  -4.6209  -7.8292  -3.7272
## 276 199112  10.30 -2.26 -4.01 0.38  18.9961  -3.7838   4.8263  10.7055
## 277 199201  -0.46  8.43  4.53 0.34  -1.6340   1.1236  -5.8932  -0.1693
## 278 199202   1.06  0.88  6.37 0.28   4.4850  -2.1278  -1.8787   1.3281
## 279 199203  -2.71 -1.04  3.66 0.34  -2.9571  -3.8849  -3.8384  -2.3680
## 280 199204   1.02 -6.11  4.33 0.32   1.1551   8.6826   8.6134   1.3838
## 281 199205   0.36  0.40  1.23 0.28  -0.3263   1.3333   1.8182   0.6497
## 282 199206  -2.25 -3.09  3.30 0.32   2.5205   7.8512  -5.3846  -1.9241
## 283 199207   3.68 -0.42 -0.52 0.31  -1.6077  -3.1928   5.8943   3.9942
## 284 199208  -2.34 -0.09 -1.07 0.26  -3.2680  -7.2982   0.8445  -2.0754
## 285 199209   0.98  0.55 -0.22 0.26   6.5405  -6.7821   0.5780   1.2426
## 286 199210   0.87  2.09 -2.06 0.23  -1.9169 -17.1827  -3.4483   1.0905
## 287 199211   3.79  3.61 -1.57 0.23   8.4691   3.8654  -2.3016   4.0181
## 288 199212   1.50  1.64  2.49 0.28   3.4595 -26.1905   3.9095   1.7482
## 289 199301   1.03  2.02  5.83 0.23   0.7310   2.2333   0.7921   1.2331
## 290 199302   0.32 -3.37  6.52 0.22  -2.3222   6.6311   7.1513   0.5486
## 291 199303   2.26  0.30  1.29 0.25   6.6924  -6.4368   2.0408   2.5029
## 292 199304  -2.78 -0.68  2.62 0.24   1.6830  -4.4226   3.0909  -2.5503
## 293 199305   2.74  2.00 -3.39 0.22   2.3448   9.5938  -0.4586   2.9422
## 294 199306   0.29 -0.30  2.59 0.25   3.9137  -6.3981   7.1685   0.5123
## 295 199307  -0.32  0.97  3.25 0.24   2.8721  -9.8734   0.8361  -0.0773
## 296 199308   3.70  0.29 -0.46 0.25  -0.2538   3.3708   4.2123   3.9344
## 297 199309  -0.20  3.15 -0.43 0.26  -1.7761  -8.1967   4.9839   0.0598
## 298 199310   1.59  1.45 -1.59 0.22   1.1734   9.5238  -0.1531   1.8030
## 299 199311  -2.01 -1.44 -0.29 0.25   1.4175  17.6630  -5.2454  -1.7317
## 300 199312   1.72  1.23  0.58 0.23   7.3393   4.8724   3.6007   1.9438
## 301 199401   2.90  0.13  2.11 0.25   2.7414   0.0000   2.3697   3.1304
## 302 199402  -2.63  2.71 -1.45 0.21  -2.2042  -5.9735  -1.8827  -2.4074
## 303 199403  -4.85 -0.94  1.36 0.27  -4.4176   3.3097  -5.4054  -4.5743
## 304 199404   0.68 -0.87  1.70 0.27  -4.7500   5.2632   5.2101   0.9815
## 305 199405   0.62 -2.02  0.20 0.32   4.4619  10.0000   4.6006   0.9504
## 306 199406  -3.10 -0.48  1.67 0.31  -5.5578  -6.7460   0.6173  -2.7381
## 307 199407   2.78 -1.77  0.97 0.28   8.0429   5.3191   2.9141   3.0411
## 308 199408   3.89  1.44 -3.49 0.37  -1.2407  11.1111   1.6095   4.2831
## 309 199409  -2.21  2.68 -1.80 0.37  -2.5427   1.6423  -6.2222  -1.8664
## 310 199410   1.07 -2.16 -2.36 0.38   1.5584   7.0018   8.6888   1.4875
## 311 199411  -4.09 -0.17 -0.05 0.37  -5.8824  -4.6980   0.1163  -3.7079
## 312 199412   0.82  0.05  0.26 0.44  11.7609   3.8869  -1.1730   1.2752
## 313 199501   1.62 -2.94  1.67 0.42   0.9804  -1.8707   3.5312   2.0623
## 314 199502   3.56 -0.34  0.39 0.40   6.3107   4.6794   0.7236   3.9655
## 315 199503   2.24 -0.35 -2.04 0.46  -0.6210   9.1362   6.4655   2.6966
## 316 199504   2.06 -0.41  1.73 0.44   3.7037  15.2207   2.4291   2.4903
## 317 199505   2.86 -2.22  1.92 0.54   3.5714  -1.4531   5.8498   3.4150
## 318 199506   2.65  3.09 -2.95 0.47  -2.0948   3.2258  -3.5176   3.0846
## 319 199507   3.63  2.24 -2.23 0.45   4.6563  13.4115   1.8229   4.0675
## 320 199508   0.46  1.82  1.92 0.47  -0.2119  -4.8220  -1.6113   0.9336
## 321 199509   3.21 -2.04 -0.98 0.43   8.9766  -8.5852   4.5932   3.6391
## 322 199510  -1.60 -3.94 -0.12 0.47  -0.7843   2.9101   1.1292  -1.1150
## 323 199511   3.85 -0.84  0.31 0.42   6.1265  -0.3856   4.5161   4.2984
## 324 199512   1.03  0.39  1.32 0.49   7.9479  -5.4334   7.0659   1.5395
## 325 199601   2.38 -2.52  0.42 0.43   6.5972  18.7414  -0.8949   2.8081
## 326 199602   1.24  2.07 -2.24 0.39  -1.6287  13.2488  -0.1806   1.6042
## 327 199603   0.70  1.31  1.31 0.39   3.7550  -9.2762   5.7013   1.1196
## 328 199604   2.09  4.91 -4.02 0.46  -0.8026  -3.1461  -0.7551   2.5130
## 329 199605   2.26  3.24 -1.38 0.42   7.1197  -0.6032  -0.9783   2.6733
## 330 199606  -1.23 -3.66  1.97 0.40   4.8338  -7.2600  -0.4430  -0.7649
## 331 199607  -5.83 -3.57  4.34 0.45  -4.6571   8.5859  -1.8910  -5.3415
## 332 199608   2.84  2.28 -0.57 0.41   1.0638   6.7209   3.4014   3.2191
## 333 199609   4.86 -0.80 -3.78 0.44  10.0271   8.8525   2.4336   5.2988
## 334 199610   0.94 -4.10  4.82 0.42   6.3187   3.6145   0.8639   1.3957
## 335 199611   6.14 -3.56  0.21 0.41   7.4935  23.8178   4.6039   6.5701
## 336 199612  -1.60  3.13  0.94 0.46  -4.4279  -4.9412   0.9288  -1.1361
## 337 199701   4.89 -1.51 -2.32 0.45   4.6776   3.5479   7.3620   5.3049
## 338 199702  -0.50 -2.57  4.73 0.39  -0.6039  -8.1434  -5.6686  -0.0873
## 339 199703  -4.91 -0.33  3.88 0.43  -3.0182  -4.5217   6.4155  -4.4405
## 340 199704   3.80 -5.16 -1.04 0.43  11.8388  16.9399  -0.4785   4.2500
## 341 199705   6.67  4.80 -4.33 0.49   8.7838   7.9128   8.4115   7.1312
## 342 199706   4.04  1.51  0.65 0.37   7.6605   4.3353  -0.0894   4.4189
## 343 199707   7.22 -2.42 -0.38 0.43   8.2846  17.1745  10.2397   7.6272
## 344 199708  -4.04  7.49  1.06 0.41 -10.7843  -3.9480  -4.9020  -3.6411
## 345 199709   5.40  2.68 -0.26 0.44   9.2068   4.5623   1.7182   5.7970
## 346 199710  -3.87 -0.86  2.28 0.42  -5.0505  -7.0755  -0.8885  -3.4091
## 347 199711   2.66 -5.02  0.98 0.39  14.3133  11.3706  -1.2017   3.1223
## 348 199712   1.30 -2.35  3.80 0.48  -0.2707  -4.4521   0.3475   1.8058
## 349 199801   0.02 -1.02 -1.80 0.43   5.6218  -5.6153  -5.1082   0.4452
## 350 199802   6.93  0.27 -0.74 0.39   0.3226   5.9620   6.3066   7.2849
## 351 199803   4.74 -1.18  1.66 0.39  11.2379  -0.5386   6.0554   5.1306
## 352 199804   0.66  0.44  0.32 0.43  -1.1603  11.5523   3.2626   1.0859
## 353 199805  -2.98 -3.59  4.26 0.40  -2.1277   1.5922  -0.7014  -2.5430
## 354 199806   2.79 -3.26 -1.88 0.41   8.9955  -2.2872  -1.7628   3.2986
## 355 199807  -2.73 -4.95 -1.13 0.40  -1.2517  15.4056  -8.2284  -2.3231
## 356 199808 -16.20 -5.71  5.13 0.43 -10.5521 -14.8340  -0.8961 -15.6572
## 357 199809   5.92 -0.17 -3.92 0.46  -0.1719  14.0954   9.8553   6.4033
## 358 199810   7.12 -3.24 -2.72 0.32   9.9764  15.5642  -0.3292   7.4123
## 359 199811   5.89  1.11 -3.42 0.31   3.2857  11.3434  14.3782   6.1343
## 360 199812   5.93 -0.28 -4.86 0.38  13.2503  11.6578   1.3081   6.3160
str(retdata)
## 'data.frame':    360 obs. of  9 variables:
##  $ date  : int  196901 196902 196903 196904 196905 196906 196907 196908 196909 196910 ...
##  $ Mkt.RF: num  -1.2 -5.82 2.59 1.52 0.02 -7.25 -7.05 4.65 -2.88 4.96 ...
##  $ SMB   : num  -0.8 -3.9 -0.28 -0.85 -0.27 -5.31 -3.27 0.89 1.2 3.78 ...
##  $ HML   : num  1.57 0.93 -0.45 0.06 0.74 -1.15 1.36 -3.83 -3.24 -3.19 ...
##  $ RF    : num  0.53 0.46 0.46 0.53 0.48 0.51 0.53 0.5 0.62 0.6 ...
##  $ ge    : num  -1.2 -6.04 6.65 5.96 -3.58 ...
##  $ ibm   : num  -5.95 -0.7 7.03 4.46 -2.5 ...
##  $ mobil : num  -1.4 -7.84 21.51 3 2.67 ...
##  $ CRSP  : num  -0.671 -5.364 3.05 2.053 0.504 ...
# create data frame with dates as rownames
# FamaFrench.df = retdata[, -1]
#rownames(FamaFrench.df) = as.character(FamaFrenchInvest[, 1])
#colnames(FamaFrench.df)

##
## use multivariate regression and matrix algebra
##

returns.mat = as.matrix(retdata[, c(-1, -2,-3, -4, -5, -9 )])
market.mat = as.matrix(retdata[,2, drop=F])
n.obs = nrow(returns.mat)
X.mat = cbind(rep(1,n.obs),market.mat)
colnames(X.mat)[1] = "intercept"
XX.mat = crossprod(X.mat)
# multivariate least squares
G.hat = solve(XX.mat)%*%crossprod(X.mat,returns.mat)
# can also use solve(qr(X.mat), returns.mat)
beta.hat = G.hat[2,]
E.hat = returns.mat - X.mat%*%G.hat
diagD.hat = diag(crossprod(E.hat)/(n.obs-2))
# compute R2 values from multivariate regression
sumSquares = apply(returns.mat, 2, function(x) {sum( (x - mean(x))^2 )})
R.square = 1 - (n.obs-2)*diagD.hat/sumSquares
R.square
##          ge         ibm       mobil 
## 0.582416671 0.303968405 0.326377385
# print and plot results
cbind(beta.hat, diagD.hat, R.square)
##          beta.hat  diagD.hat    R.square
## ge    1.058082541 17.0249383 0.582416671
## ibm   0.814994938 32.2587420 0.303968405
## mobil 0.815807172 29.1345781 0.326377385
par(mfrow=c(1,2))
barplot(beta.hat, horiz=T, main="Beta values", col="blue", cex.names = 0.75, las=1)
barplot(R.square, horiz=T, main="R-square values", col="blue", cex.names = 0.75, las=1)

par(mfrow=c(1,1))

# compute single index model covariance/correlation matrices
cov.si = as.numeric(var(market.mat))*beta.hat%*%t(beta.hat) + diag(diagD.hat)
cor.si = cov2cor(cov.si)
# plot correlations using plotcorr() from ellipse package

# compute global min variance portfolio
# use single index covariance
w.gmin.si = solve(cov.si)%*%rep(1,nrow(cov.si))
w.gmin.si = w.gmin.si/sum(w.gmin.si)
colnames(w.gmin.si) = "single.index"
# use sample covariance
w.gmin.sample = solve(var(returns.mat))%*%rep(1,nrow(cov.si))
w.gmin.sample = w.gmin.sample/sum(w.gmin.sample)
colnames(w.gmin.sample) = "sample"
cbind(w.gmin.si, sample = w.gmin.sample)
##       single.index      sample
## ge     0.331262957 0.320438638
## ibm    0.317603950 0.292423046
## mobil  0.351133093 0.387138316
par(mfrow=c(2,1))
barplot(t(w.gmin.si), horiz=F, main="Single Index Weights", col="blue", cex.names = 0.75, las=2)
barplot(t(w.gmin.sample), horiz=F, main="Sample Weights", col="blue", cex.names = 0.75, las=2)

par(mfrow=c(1,1))