├── Final_presentation.pdf ├── README.md ├── arima.py ├── stationarity_acf.py ├── VAR.py ├── LSTM_rolling.py ├── bvar.py ├── bvar_rolling.py └── Recent_toBeUsed.csv /Final_presentation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rakshita95/DeepLearning-time-series/HEAD/Final_presentation.pdf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Deep Learning Architecture for time series forecasting 2 | 3 | The goal of this project is to understand how deep learning architecture like Long Short Term Memory networks can be leveraged to improve the forecast of multivariate econometric time series. In addition to compring LSTM's performance to traditional time series models like ARIMA and VAR, bayesian approaches are also explored. 4 | 5 | A summary of the results can be found in [this presentation.](Final_presentation.pdf) 6 | 7 | ## Description of contents: 8 | 9 | stationarity_acf.py: Test the stationarity of time series using Dicky-fuller test and autocorrelation and partial autocorrelation plots 10 | arima.py: Implementation of ARIMA model to compute multi-step rolling forecasts 11 | VAR.py: Implementation of ARIMA model to compute multi-step rolling forecasts 12 | bvar.py: Implementation of Bayesian Vector Autogressive model to compute multi-step rolling forecasts 13 | bvar_rolling.py: Implementation of Bayesian Vector Autogressive model to compute multi-step rolling forecasts 14 | LSTM_rolling.py: Implementation of LSTM to compute multi-step rolling forecasts 15 | Recent_toBeUsed.csv: Data file 16 | -------------------------------------------------------------------------------- /arima.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | """ 4 | Created on Sat Apr 29 16:15:47 2017 5 | 6 | @author: rakshitanagalla 7 | """ 8 | 9 | import numpy as np 10 | import pandas as pd 11 | from statsmodels.tsa.arima_model import ARIMA 12 | import datetime as dt 13 | from dateutil.relativedelta import relativedelta 14 | import calendar 15 | 16 | def add_months(sourcedate,months): 17 | month = sourcedate.month - 1 + months 18 | year = int(sourcedate.year + month / 12 ) 19 | month = month % 12 + 1 20 | day = min(sourcedate.day,calendar.monthrange(year,month)[1]) 21 | return dt.date(year,month,day) 22 | 23 | 24 | data = pd.read_csv('Recent_toBeUsed.csv') 25 | data.drop(['ln_e','YearMonth','Unnamed: 4', 'y', 'y_US','m_in_billion_rupees', 'm_US_in billion rupees','m_in_billion_rupees.1','i', 'i_US','m_US_in billion', 'Dummy', 'Dummy2'],inplace=True,axis=1) 26 | DTTMFormat = '%d-%m-%Y' 27 | data['DTTM'] = pd.to_datetime(data['DTTM'],format=DTTMFormat) 28 | data.set_index('DTTM', inplace = 'True') 29 | #data_diff = data.diff().dropna() #differencing 30 | 31 | 32 | ForecastTime = dt.datetime.strptime('1-7-2006', DTTMFormat) 33 | 34 | #Choose lag length 35 | #model.select_order(8) # lag = 1 best 36 | lag = 1 37 | 38 | cnt =0 39 | outputPredDF = pd.DataFrame() 40 | se = pd.DataFrame() 41 | while cnt < 110: 42 | train_period = [ForecastTime - relativedelta(years=10), add_months(ForecastTime,-1)] 43 | if cnt == 0: 44 | train = data[add_months(train_period[0],1):train_period[1]] 45 | else: 46 | train = data[train_period[0]:train_period[1]] 47 | test = data[ForecastTime:add_months(ForecastTime+relativedelta(years=1),-1)] 48 | 49 | # make an ARIMA model 50 | model = ARIMA(train['e'], order=(2, 1, 2)) #(p,d,q) 51 | model_fit = model.fit(disp=0) 52 | 53 | #forecast 54 | n_steps_ahead = 12 55 | final_pred = model_fit.forecast(steps = 12)[0] 56 | 57 | #save predictions and errors 58 | columName = str(ForecastTime.year)+'M'+str(ForecastTime.month) 59 | outputPredDF[columName+'_pred'] = final_pred 60 | se[columName+'_err'] = np.array((test.e - final_pred)**2) 61 | 62 | cnt +=1 63 | ForecastTime = add_months(ForecastTime,1) 64 | print(train_period) 65 | 66 | rmse = np.sqrt(se.mean(axis = 1)) #T_0 = 110 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /stationarity_acf.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | """ 4 | Created on Wed Apr 26 14:18:36 2017 5 | 6 | @author: rakshitanagalla 7 | """ 8 | 9 | import pandas as pd 10 | import matplotlib.pyplot as plt 11 | import numpy as np 12 | 13 | data = pd.read_csv('Recent_toBeUsed.csv') 14 | data.drop(['YearMonth','Unnamed: 4', 'y', 'y_US','m_in_billion_rupees', 'm_US_in billion rupees','m_in_billion_rupees.1','i', 'i_US','m_US_in billion', 'Dummy', 'Dummy2'],inplace=True,axis=1) 15 | DTTMFormat = '%m-%d-%Y' 16 | data['DTTM'] = pd.to_datetime(data['DTTM'],format=DTTMFormat) 17 | 18 | #Test stationarity 19 | from statsmodels.tsa.stattools import adfuller 20 | 21 | print ('Results of Dickey-Fuller Test:') 22 | dftest = adfuller(data['ln_m_diff'].diff()[1:], autolag='AIC') 23 | dfoutput = pd.Series(dftest[0:4], index=['Test Statistic','p-value','#Lags Used','Number of Observations Used']) 24 | for key,value in dftest[4].items(): 25 | dfoutput['Critical Value (%s)'%key] = value 26 | print (dfoutput.values) 27 | 28 | #ACF and PACF plots: 29 | from statsmodels.tsa.stattools import acf, pacf 30 | 31 | lag_acf = acf(data['ln_e'].diff()[1:], nlags=20) 32 | lag_pacf = pacf(data['ln_e'].diff()[1:], nlags=20, method='ols') 33 | 34 | #Plot ACF: 35 | plt.subplot(121) 36 | plt.plot(lag_acf) 37 | plt.axhline(y=0,linestyle='--',color='gray') 38 | plt.axhline(y=-1.96/np.sqrt(len(data['ln_e'].diff()[1:])),linestyle='--',color='gray') 39 | plt.axhline(y=1.96/np.sqrt(len(data['ln_e'].diff()[1:])),linestyle='--',color='gray') 40 | plt.title('Autocorrelation Function') 41 | 42 | #Plot PACF: 43 | plt.subplot(122) 44 | plt.plot(lag_pacf) 45 | plt.axhline(y=0,linestyle='--',color='gray') 46 | plt.axhline(y=-1.96/np.sqrt(len(data['ln_e'].diff()[1:])),linestyle='--',color='gray') 47 | plt.axhline(y=1.96/np.sqrt(len(data['ln_e'].diff()[1:])),linestyle='--',color='gray') 48 | plt.title('Partial Autocorrelation Function') 49 | plt.tight_layout() 50 | 51 | #Model 52 | 53 | data.set_index('DTTM', inplace = 'True') 54 | 55 | train = data['e'][:161] 56 | test = data['e'][161:] 57 | 58 | from statsmodels.tsa.arima_model import ARIMA 59 | 60 | model = ARIMA(train, order=(2, 1, 2)) #(p,d,q) 61 | model_fit = model.fit(disp=0) 62 | 63 | predicted = model_fit.forecast(steps = 80)[0] 64 | #plt.plot(data['ln_e'].diff()[1:]) 65 | #plt.plot(results_ARIMA.fittedvalues, color='red') 66 | #plt.title('RMSE: %.4f'% sum((results_ARIMA.fittedvalues-data['ln_e'].diff()[1:])**2)) 67 | 68 | #print('RMSE: %.4f'% sum((results_ARIMA.fittedvalues-data['ln_e'].diff()[1:])**2)) 69 | print('RMSE: %.4f'% ((predicted - test) ** 2).mean()) 70 | -------------------------------------------------------------------------------- /VAR.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | """ 4 | Created on Sat Apr 29 16:15:47 2017 5 | 6 | @author: rakshitanagalla 7 | """ 8 | 9 | import numpy as np 10 | import pandas as pd 11 | import statsmodels.api as sm 12 | from statsmodels.tsa.api import VAR, DynamicVAR 13 | import datetime as dt 14 | from dateutil.relativedelta import relativedelta 15 | import calendar 16 | 17 | def add_months(sourcedate,months): 18 | month = sourcedate.month - 1 + months 19 | year = int(sourcedate.year + month / 12 ) 20 | month = month % 12 + 1 21 | day = min(sourcedate.day,calendar.monthrange(year,month)[1]) 22 | return dt.date(year,month,day) 23 | 24 | 25 | data = pd.read_csv('Recent_toBeUsed.csv') 26 | data.drop(['e','YearMonth','Unnamed: 4', 'y', 'y_US','m_in_billion_rupees', 'm_US_in billion rupees','m_in_billion_rupees.1','i', 'i_US','m_US_in billion', 'Dummy', 'Dummy2'],inplace=True,axis=1) 27 | DTTMFormat = '%d-%m-%Y' 28 | data['DTTM'] = pd.to_datetime(data['DTTM'],format=DTTMFormat) 29 | data.set_index('DTTM', inplace = 'True') 30 | data_diff = data.diff().dropna() #differencing 31 | 32 | 33 | ForecastTime = dt.datetime.strptime('1-7-2006', DTTMFormat) 34 | 35 | #Choose lag length 36 | #model.select_order(8) # lag = 1 best 37 | lag = 13 38 | 39 | cnt =0 40 | outputPredDF = pd.DataFrame() 41 | se = pd.DataFrame() 42 | while cnt < 110: 43 | train_period = [ForecastTime - relativedelta(years=10), add_months(ForecastTime,-1)] 44 | if cnt == 0: 45 | train = data_diff[add_months(train_period[0],1):train_period[1]] 46 | else: 47 | train = data_diff[train_period[0]:train_period[1]] 48 | test = data[ForecastTime:add_months(ForecastTime+relativedelta(years=1),-1)] 49 | 50 | # make a VAR model 51 | model = VAR(train) 52 | results = model.fit(lag) 53 | 54 | #results 55 | #print(results.summary()) 56 | #results.plot() # plot fitted values 57 | #results.plot_acorr() #Plotting time series autocorrelation function 58 | 59 | #forecast 60 | n_steps_ahead = 12 61 | forecasts = results.forecast(np.array(train[-lag:]), n_steps_ahead)[:,0] 62 | final_pred = np.exp(np.r_[data['ln_e'][train_period[1]], forecasts].cumsum())[1:] 63 | 64 | #save predictions and errors 65 | columName = str(ForecastTime.year)+'M'+str(ForecastTime.month) 66 | outputPredDF[columName+'_pred'] = final_pred 67 | se[columName+'_err'] = np.array((np.exp(test.ln_e) - final_pred)**2) 68 | 69 | cnt +=1 70 | ForecastTime = add_months(ForecastTime,1) 71 | print(train_period) 72 | 73 | rmse = np.sqrt(se.mean(axis = 1)) #T_0 = 110 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /LSTM_rolling.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | Created on Mon May 01 01:49:07 2017 4 | 5 | @author: Rakshita 6 | """ 7 | 8 | import warnings 9 | warnings.filterwarnings('ignore') 10 | 11 | import numpy as np 12 | import pandas as pd 13 | import datetime as dt 14 | from dateutil.relativedelta import relativedelta 15 | import calendar 16 | from sklearn.preprocessing import MinMaxScaler 17 | from keras.models import Sequential 18 | from keras.layers import Dense 19 | from keras.layers import LSTM 20 | from scipy.ndimage.interpolation import shift 21 | 22 | def add_months(sourcedate,months): 23 | month = sourcedate.month - 1 + months 24 | year = int(sourcedate.year + month / 12 ) 25 | month = month % 12 + 1 26 | day = min(sourcedate.day,calendar.monthrange(year,month)[1]) 27 | return dt.date(year,month,day) 28 | 29 | # convert an array of values into a dataset matrix 30 | def create_dataset(a, look_back): 31 | dataX, dataY = [], [] 32 | dataX = a[:-look_back] 33 | for l in range(look_back-1): 34 | l+=1 35 | dataX = np.c_[dataX,shift(a, -l)[:-look_back]] 36 | dataY = shift(a, -look_back)[:-look_back] 37 | dataY = np.reshape(dataY, (len(dataY),1)) 38 | return np.array(dataX), np.array(dataY) 39 | 40 | data = pd.read_csv('Recent_toBeUsed.csv') 41 | data.drop(['ln_e','YearMonth','Unnamed: 4', 'y', 'y_US','m_in_billion_rupees', 'm_US_in billion rupees','m_in_billion_rupees.1','i', 'i_US','m_US_in billion', 'Dummy', 'Dummy2'],inplace=True,axis=1) 42 | DTTMFormat = '%d-%m-%Y' 43 | data['DTTM'] = pd.to_datetime(data['DTTM'],format=DTTMFormat) 44 | data.set_index('DTTM', inplace = 'True') 45 | 46 | ForecastTime = dt.datetime.strptime('1-7-2006', DTTMFormat) 47 | 48 | scaler = MinMaxScaler(feature_range=(0, 1)) 49 | scaler1 = MinMaxScaler(feature_range=(0, 1)) 50 | scaler2 = MinMaxScaler(feature_range=(0, 1)) 51 | scaler3 = MinMaxScaler(feature_range=(0, 1)) 52 | 53 | ''' 54 | Change as required 55 | ''' 56 | 57 | n_hidden = 1 58 | look_back = 13 59 | 60 | cnt =0 61 | outputPredDF = pd.DataFrame() 62 | se = pd.DataFrame() 63 | while cnt < 110: 64 | train_period = [ForecastTime - relativedelta(years=10), add_months(ForecastTime,-1)] 65 | if cnt == 0: 66 | Train = data[add_months(train_period[0],1):train_period[1]] 67 | else: 68 | Train = data[train_period[0]:train_period[1]] 69 | Test = data[ForecastTime:add_months(ForecastTime+relativedelta(years=1),-1)] 70 | 71 | N_train = len(Train) 72 | 73 | train = scaler.fit_transform(Train['e']) 74 | trainX, trainY = create_dataset(train, look_back) 75 | 76 | train1 = scaler1.fit_transform(Train['ln_y_diff']) 77 | trainX1, trainY1 = create_dataset(train1, look_back) 78 | 79 | train2 = scaler2.fit_transform(Train['ln_m_diff']) 80 | trainX2, trainY2 = create_dataset(train2, look_back) 81 | 82 | train3 = scaler3.fit_transform(Train['i-i_US']) 83 | trainX3, trainY3 = create_dataset(train3, look_back) 84 | 85 | N_train_new = trainX.shape[0] 86 | 87 | trainX_i=np.zeros(shape=[N_train_new,look_back,4]) 88 | trainX_i[:,:,0] = trainX 89 | trainX_i[:,:,1] = trainX1 90 | trainX_i[:,:,2] = trainX2 91 | trainX_i[:,:,3] = trainX3 92 | 93 | trainY_i=np.zeros(shape=[N_train_new,4]) 94 | trainY_i[:,0]=trainY[:,0] 95 | trainY_i[:,1]=trainY1[:,0] 96 | trainY_i[:,2]=trainY2[:,0] 97 | trainY_i[:,3]=trainY3[:,0] 98 | 99 | # create and fit the LSTM network 100 | model = Sequential() 101 | model.add(LSTM(n_hidden, input_shape=(look_back,4))) 102 | model.add(Dense(4)) 103 | model.compile(loss='mean_squared_error', optimizer='adam') 104 | model.fit(trainX_i, trainY_i, epochs=60, batch_size=1, verbose=2)# epoch = 60 105 | 106 | # make predictions 107 | forecast = np.zeros(12) 108 | test_new = trainX_i[-1,:,:] 109 | for step in range(12): 110 | X_test = np.reshape(test_new[-look_back:],(1,look_back,4)) 111 | forecasts = model.predict(X_test) 112 | forecast[step] = forecasts[0,0] 113 | test_new = np.r_[test_new, forecasts] 114 | 115 | final_forecast = scaler.inverse_transform(forecast) 116 | 117 | #save predictions and errors 118 | columName = str(ForecastTime.year)+'M'+str(ForecastTime.month) 119 | outputPredDF[columName+'_pred'] = final_forecast 120 | se[columName+'_err'] = np.array((Test['e'] - final_forecast)**2) 121 | 122 | cnt +=1 123 | ForecastTime = add_months(ForecastTime,1) 124 | #print(train_period) 125 | print (cnt) 126 | 127 | rmse = np.sqrt(se.mean(axis = 1)) #T_0 = 110 128 | 129 | 130 | 131 | -------------------------------------------------------------------------------- /bvar.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | """ 4 | Created on Sun Apr 30 16:18:03 2017 5 | 6 | @author: rakshitanagalla 7 | """ 8 | 9 | import numpy as np 10 | import pandas as pd 11 | import datetime as dt 12 | from dateutil.relativedelta import relativedelta 13 | import calendar 14 | 15 | def add_months(sourcedate,months): 16 | month = sourcedate.month - 1 + months 17 | year = int(sourcedate.year + month / 12 ) 18 | month = month % 12 + 1 19 | day = min(sourcedate.day,calendar.monthrange(year,month)[1]) 20 | return dt.date(year,month,day) 21 | 22 | 23 | data = pd.read_csv('Recent_toBeUsed.csv') 24 | data.drop(['e','YearMonth','Unnamed: 4', 'y', 'y_US','m_in_billion_rupees', 'm_US_in billion rupees','m_in_billion_rupees.1','i', 'i_US','m_US_in billion', 'Dummy', 'Dummy2'],inplace=True,axis=1) 25 | DTTMFormat = '%d-%m-%Y' 26 | data['DTTM'] = pd.to_datetime(data['DTTM'],format=DTTMFormat) 27 | data.set_index('DTTM', inplace = 'True') 28 | #data_diff = data.diff().dropna() #differencing 29 | 30 | 31 | ForecastTime = dt.datetime.strptime('1-7-2006', DTTMFormat) 32 | 33 | 34 | lag = 1 35 | constant =1 36 | M = 4 #Number of endogenous variables 37 | 38 | outputPredDF = pd.DataFrame() 39 | se = pd.DataFrame() 40 | cnt = 0 41 | while cnt < 110: 42 | train_period = [ForecastTime - relativedelta(years=10), add_months(ForecastTime,-1)] 43 | if cnt == 0: 44 | train = data[add_months(train_period[0],1):train_period[1]] 45 | else: 46 | train = data[train_period[0]:train_period[1]] 47 | test = data[ForecastTime:add_months(ForecastTime+relativedelta(years=1),-1)] 48 | 49 | X1 = np.matrix(pd.concat([train, train.shift(1)], axis=1).dropna()[:-1]) 50 | X = np.c_[np.ones(len(X1)), X1 ] 51 | Y = np.matrix(train[lag:]) 52 | 53 | # OLS coefficients 54 | A_OLS = np.dot(np.linalg.inv(np.dot(X.T,X)),np.dot(X.T,Y)) # This is the matrix of regression coefficients 55 | a_OLS = A_OLS.T.ravel().T # This is the vector of coefficients, i.e. it holds 56 | # that a_OLS = vec(A_OLS) 57 | SSE = np.dot( (Y - np.dot(X,A_OLS)).T , (Y - np.dot(X,A_OLS)) ) 58 | K,M = A_OLS.shape 59 | T = X.shape[0] 60 | SIGMA_OLS = SSE/(T-K) 61 | 62 | ''' 63 | Prior Hyperparameters for Minesotta prior 64 | ''' 65 | A_prior = np.zeros((K,M)) 66 | a_prior = np.matrix(A_prior.ravel()).T 67 | 68 | # Hyperparameters on the Minnesota variance of alpha 69 | a_bar_1 = 0.5; 70 | a_bar_2 = 0.5; 71 | a_bar_3 = 10**2; 72 | 73 | # Now get residual variances of univariate p-lag autoregressions. Here 74 | # we just run the AR(p) model on each equation,(if they have been specified for the original 75 | # VAR model) 76 | 77 | sigma_sq = np.zeros((M,1)); # vector to store residual variances 78 | for i in range(M): 79 | # Create lags of dependent variable in i-th equation 80 | #Ylag_i = X[:,[i+1,i+1+M]] 81 | Ylag_i = X[:,np.arange(constant+i,K,M)] 82 | # Dependent variable in i-th equation 83 | Y_i = Y[:,i] 84 | # OLS estimates of i-th equation 85 | alpha_i = np.dot(np.linalg.inv(np.dot(Ylag_i.T,Ylag_i)),np.dot(Ylag_i.T,Y_i)) 86 | sigma_sq[i,0] = np.dot((Y_i - np.dot(Ylag_i,alpha_i)).T,(Y_i - np.dot(Ylag_i,alpha_i)))/(T-lag+1) 87 | 88 | # Now define prior hyperparameters. 89 | # Create an array of dimensions K x M, which will contain the K diagonal 90 | # elements of the covariance matrix, in each of the M equations. 91 | V_i = np.zeros((K,M)); 92 | 93 | # index in each equation which are the own lags 94 | ind = np.zeros((M,lag)); 95 | for i in range(M): 96 | ind[i,:] = np.arange(constant+i,K,M) 97 | for i in range(M): # for each i-th equation 98 | for j in range(K): # for each j-th RHS variable 99 | if j==0: 100 | V_i[j,i] = a_bar_3*sigma_sq[i,0] # variance on constant 101 | elif j in ind[i,:]: 102 | V_i[j,i] = a_bar_1/(np.ceil((j)/M)**2); # variance on own lags 103 | else: 104 | for kj in range(M): 105 | if j in ind[kj,:]: 106 | ll = kj 107 | V_i[j,i] = (a_bar_2*sigma_sq[i,0])/((np.ceil((j)/M)**2)*sigma_sq[ll,0]); 108 | 109 | # Now V is a diagonal matrix with diagonal elements the V_i 110 | V_prior = np.diag(V_i.ravel()); # this is the prior variance of the vector a 111 | 112 | # SIGMA is equal to the OLS quantity 113 | SIGMA = SIGMA_OLS; 114 | 115 | ''' 116 | POSTERIORS 117 | ''' 118 | #--------- Posterior hyperparameters of ALPHA and SIGMA with Minnesota Prior 119 | V_post = np.linalg.inv(np.linalg.inv(V_prior) + np.kron(np.linalg.inv(SIGMA),np.dot(X.T,X)) ); 120 | a_post = np.dot(V_post, np.dot(np.linalg.inv(V_prior),a_prior) + np.dot(np.kron(np.linalg.inv(SIGMA),np.dot(X.T,X)),a_OLS) ) 121 | A_post = np.reshape(a_post, (K, M),order='F') 122 | 123 | ''' 124 | PREDICTIVE INFERENCE 125 | ''' 126 | forecasts = np.zeros(12) 127 | test_new = train[-lag:] 128 | for step in range(12): 129 | X2 = np.matrix(pd.concat([test_new[-lag:], test_new[-lag:].shift(1)], axis=1).dropna()) 130 | X_test = np.c_[np.ones(len(X2)), X2] 131 | forecasts[step] = np.dot(X_test,A_post)[0,0] 132 | test_new.loc[step+2] = np.array(np.dot(X_test,A_post))[0] 133 | 134 | final_pred = np.exp(forecasts) 135 | #final_pred = np.exp(np.r_[data['ln_e'][train_period[1]], forecasts].cumsum())[1:] 136 | 137 | 138 | #save predictions and errors 139 | columName = str(ForecastTime.year)+'M'+str(ForecastTime.month) 140 | outputPredDF[columName+'_pred'] = final_pred 141 | se[columName+'_err'] = np.array((np.exp(test.ln_e) - final_pred)**2) 142 | 143 | cnt +=1 144 | ForecastTime = add_months(ForecastTime,1) 145 | print(train_period) 146 | 147 | rmse = np.sqrt(se.mean(axis = 1)) #T_0 = 110 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | -------------------------------------------------------------------------------- /bvar_rolling.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | """ 4 | Created on Sun Apr 30 16:18:03 2017 5 | 6 | @author: rakshitanagalla 7 | """ 8 | 9 | import numpy as np 10 | import pandas as pd 11 | import datetime as dt 12 | from dateutil.relativedelta import relativedelta 13 | import calendar 14 | 15 | def add_months(sourcedate,months): 16 | month = sourcedate.month - 1 + months 17 | year = int(sourcedate.year + month / 12 ) 18 | month = month % 12 + 1 19 | day = min(sourcedate.day,calendar.monthrange(year,month)[1]) 20 | return dt.date(year,month,day) 21 | 22 | 23 | data = pd.read_csv('/Users/rakshitanagalla/Desktop/Acad/PRML/project/Recent_toBeUsed.csv') 24 | data.drop(['e','YearMonth','Unnamed: 4', 'y', 'y_US','m_in_billion_rupees', 'm_US_in billion rupees','m_in_billion_rupees.1','i', 'i_US','m_US_in billion', 'Dummy', 'Dummy2'],inplace=True,axis=1) 25 | DTTMFormat = '%d-%m-%Y' 26 | data['DTTM'] = pd.to_datetime(data['DTTM'],format=DTTMFormat) 27 | data.set_index('DTTM', inplace = 'True') 28 | data_diff = data.diff().dropna() #differencing 29 | 30 | 31 | ForecastTime = dt.datetime.strptime('1-7-2006', DTTMFormat) 32 | 33 | 34 | lag = 13 35 | constant =1 36 | M = 4 #Number of endogenous variables 37 | 38 | outputPredDF = pd.DataFrame() 39 | se = pd.DataFrame() 40 | cnt = 0 41 | while cnt < 110: 42 | train_period = [ForecastTime - relativedelta(years=10), add_months(ForecastTime,-1)] 43 | if cnt == 0: 44 | train = data_diff[add_months(train_period[0],1):train_period[1]] 45 | else: 46 | train = data_diff[train_period[0]:train_period[1]] 47 | test = data[ForecastTime:add_months(ForecastTime+relativedelta(years=1),-1)] 48 | 49 | #X1 = np.matrix(pd.concat([train, train.shift(1)], axis=1).dropna()[:-1]) 50 | 51 | Xdum = train 52 | for l in range(lag-1): 53 | l+=1 54 | Xdum = pd.concat([Xdum, train.shift(l)], axis=1) 55 | X1 = np.matrix(Xdum.dropna()[:-1]) 56 | 57 | 58 | #X1 = np.matrix(train.shift(1).dropna()) 59 | X = np.c_[np.ones(len(X1)), X1 ] 60 | Y = np.matrix(train[lag:]) 61 | 62 | # OLS coefficients 63 | A_OLS = np.dot(np.linalg.inv(np.dot(X.T,X)),np.dot(X.T,Y)) # This is the matrix of regression coefficients 64 | a_OLS = A_OLS.T.ravel().T # This is the vector of coefficients, i.e. it holds 65 | # that a_OLS = vec(A_OLS) 66 | SSE = np.dot( (Y - np.dot(X,A_OLS)).T , (Y - np.dot(X,A_OLS)) ) 67 | K,M = A_OLS.shape 68 | T = X.shape[0] 69 | SIGMA_OLS = SSE/(T-K) 70 | 71 | ''' 72 | Prior Hyperparameters for Minesotta prior 73 | ''' 74 | A_prior = np.zeros((K,M)) 75 | a_prior = np.matrix(A_prior.ravel()).T 76 | 77 | # Hyperparameters on the Minnesota variance of alpha 78 | a_bar_1 = 0.2; 79 | a_bar_2 = 0.14; 80 | a_bar_3 = 10**2; 81 | 82 | # Now get residual variances of univariate p-lag autoregressions. Here 83 | # we just run the AR(p) model on each equation,(if they have been specified for the original 84 | # VAR model) 85 | 86 | sigma_sq = np.zeros((M,1)); # vector to store residual variances 87 | for i in range(M): 88 | # Create lags of dependent variable in i-th equation 89 | #Ylag_i = X[:,[i+1,i+1+M]] 90 | Ylag_i = X[:,np.arange(constant+i,K,M)] 91 | # Dependent variable in i-th equation 92 | Y_i = Y[:,i] 93 | # OLS estimates of i-th equation 94 | alpha_i = np.dot(np.linalg.inv(np.dot(Ylag_i.T,Ylag_i)),np.dot(Ylag_i.T,Y_i)) 95 | sigma_sq[i,0] = np.dot((Y_i - np.dot(Ylag_i,alpha_i)).T,(Y_i - np.dot(Ylag_i,alpha_i)))/(T-lag+1) 96 | 97 | # Now define prior hyperparameters. 98 | # Create an array of dimensions K x M, which will contain the K diagonal 99 | # elements of the covariance matrix, in each of the M equations. 100 | V_i = np.zeros((K,M)); 101 | 102 | # index in each equation which are the own lags 103 | ind = np.zeros((M,lag)); 104 | for i in range(M): 105 | ind[i,:] = np.arange(constant+i,K,M) 106 | for i in range(M): # for each i-th equation 107 | for j in range(K): # for each j-th RHS variable 108 | if j==0: 109 | V_i[j,i] = a_bar_3*sigma_sq[i,0] # variance on constant 110 | elif j in ind[i,:]: 111 | V_i[j,i] = a_bar_1/(np.ceil((j)/M)**2); # variance on own lags 112 | else: 113 | for kj in range(M): 114 | if j in ind[kj,:]: 115 | ll = kj 116 | V_i[j,i] = (a_bar_2*sigma_sq[i,0])/((np.ceil((j)/M)**2)*sigma_sq[ll,0]); 117 | 118 | # Now V is a diagonal matrix with diagonal elements the V_i 119 | V_prior = np.diag(V_i.ravel()); # this is the prior variance of the vector a 120 | 121 | # SIGMA is equal to the OLS quantity 122 | SIGMA = SIGMA_OLS; 123 | 124 | ''' 125 | POSTERIORS 126 | ''' 127 | #--------- Posterior hyperparameters of ALPHA and SIGMA with Minnesota Prior 128 | V_post = np.linalg.inv(np.linalg.inv(V_prior) + np.kron(np.linalg.inv(SIGMA),np.dot(X.T,X)) ); 129 | a_post = np.dot(V_post, np.dot(np.linalg.inv(V_prior),a_prior) + np.dot(np.kron(np.linalg.inv(SIGMA),np.dot(X.T,X)),a_OLS) ) 130 | A_post = np.reshape(a_post, (K, M),order='F') 131 | 132 | ''' 133 | PREDICTIVE INFERENCE 134 | ''' 135 | forecasts = np.zeros(12) 136 | test_new = train[-lag:] 137 | for step in range(12): 138 | #X2 = np.matrix(pd.concat([test_new[-lag:], test_new[-lag:].shift(1)], axis=1).dropna()) 139 | Xdum2 = test_new[-lag:] 140 | for l in range(lag-1): 141 | l+=1 142 | Xdum2 = pd.concat([Xdum2, test_new[-lag:].shift(l)], axis=1) 143 | X2 = np.matrix(Xdum2.dropna()) 144 | 145 | #X2 = np.matrix(test_new[-lag:]) 146 | X_test = np.c_[np.ones(len(X2)), X2] 147 | forecasts[step] = np.dot(X_test,A_post)[0,0] 148 | test_new.loc[step+lag] = np.array(np.dot(X_test,A_post))[0] 149 | 150 | #final_pred = np.exp(forecasts) 151 | final_pred = np.exp(np.r_[data['ln_e'][train_period[1]], forecasts].cumsum())[1:] 152 | 153 | 154 | #save predictions and errors 155 | columName = str(ForecastTime.year)+'M'+str(ForecastTime.month) 156 | outputPredDF[columName+'_pred'] = final_pred 157 | se[columName+'_err'] = np.array((np.exp(test.ln_e) - final_pred)**2) 158 | 159 | cnt +=1 160 | ForecastTime = add_months(ForecastTime,1) 161 | print(train_period) 162 | 163 | rmse = np.sqrt(se.mean(axis = 1)) #T_0 = 110 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | -------------------------------------------------------------------------------- /Recent_toBeUsed.csv: -------------------------------------------------------------------------------- 1 | DTTM,YearMonth,e,ln_e,,y,y_US,ln_y_diff,m_in_billion_rupees,m_US_in billion rupees,m_in_billion_rupees,ln_m_diff,i,i_US,i-i_US,m_US_in billion,Dummy,Dummy2 2 | 01-07-1996,1996M07,35.505,3.569673532,,61.50888996,78.208,-0.240190228,6221.65,249804.84,6233.042,-3.690815477,8.6692,5.15,3.52,3745.2,0,0 3 | 01-08-1996,1996M08,35.6955,3.57502463,0.5351098,62.04927196,78.6658,-0.237279721,6257.77,250271.74,6284.721,-3.684425838,8.821,5.05,3.77,3752.2,0,0 4 | 01-09-1996,1996M09,35.7284,3.575945891,0.0921261,59.88353266,79.1997,-0.279570957,6383.58,250845.36,6365.996,-3.673865953,10.0016,5.09,4.91,3760.8,0,0 5 | 01-10-1996,1996M10,35.6406,3.573485437,-0.2460454,60.91036177,79.1389,-0.261801232,6412.43,251952.58,6409.923,-3.671393637,9.1712,4.99,4.18,3777.4,0,0 6 | 01-11-1996,1996M11,35.7353,3.576138996,0.2653559,61.26014898,79.8221,-0.264670875,6486.52,253106.49,6508.101,-3.660762601,7.8191,5.03,2.79,3794.7,0,0 7 | 01-12-1996,1996M12,35.8352,3.578930651,0.2791655,69.12550538,80.3307,-0.150228093,6535.48,254567.22,6604.967,-3.651742985,7.6383,4.91,2.73,3816.6,0,0 8 | 01-01-1997,1997M01,35.8699,3.579898504,0.0967853,68.29066835,80.4255,-0.16355816,6694.11,255567.72,6745.191,-3.634657617,7.8424,5.03,2.81,3831.6,0,0 9 | 01-02-1997,1997M02,35.8892,3.580436415,0.0537911,66.65868896,81.4045,-0.199845149,6763.67,256294.75,6822.815,-3.626056006,7.5194,5.01,2.51,3842.5,0,0 10 | 01-03-1997,1997M03,35.8684,3.579856685,-0.057973,74.69213974,81.9717,-0.092999204,6960.12,257228.55,6904.35,-3.617813342,7.4239,5.14,2.28,3856.5,0,0 11 | 01-04-1997,1997M04,35.8139,3.578336086,-0.1520599,64.7124451,82.0209,-0.237020559,7085.09,258395.8,7003.857,-3.608031521,3.6892,5.16,-1.47,3874,0,0 12 | 01-05-1997,1997M05,35.8145,3.578352839,0.0016753,65.06498127,82.5095,-0.237526956,7160.52,259216.21,7102.274,-3.597247487,7.0824,5.05,2.03,3886.3,0,0 13 | 01-06-1997,1997M06,35.8108,3.578249524,-0.0103315,64.46441948,82.9253,-0.251826767,7243.47,260210.04,7206.185,-3.586549466,5.2348,4.93,0.3,3901.2,0,0 14 | 01-07-1997,1997M07,35.7372,3.576192163,-0.2057361,66.52801538,83.5464,-0.227779023,7262.05,261677.44,7273.411,-3.58288723,6.3909,5.05,1.34,3923.2,0,0 15 | 01-08-1997,1997M08,35.92,3.581294243,0.510208,65.37421325,84.434,-0.255842276,7289.29,263571.72,7320.99,-3.583579948,5.3347,5.14,0.19,3951.6,0,0 16 | 01-09-1997,1997M09,36.4318,3.59544202,1.4147777,65.02189512,85.1978,-0.270251551,7442.52,264919.06,7425.713,-3.574475638,6.7813,4.95,1.83,3971.8,0,0 17 | 01-10-1997,1997M10,36.227,3.589804697,-0.5637323,65.17552479,85.9177,-0.27630585,7528.22,266032.95,7526.753,-3.565156433,6.5818,4.97,1.61,3988.5,0,0 18 | 01-11-1997,1997M11,37.2358,3.617270664,2.7465967,67.7367784,86.6748,-0.246533896,7635.84,267460.33,7659.177,-3.55306672,6.2327,5.14,1.09,4009.9,0,0 19 | 01-12-1997,1997M12,39.2168,3.669105226,5.1834562,74.04868817,86.9454,-0.16055751,7683.04,268901.05,7761.306,-3.545192849,7.7715,5.16,2.61,4031.5,0,0 20 | 01-01-1998,1998M01,39.3843,3.67336726,0.4262034,73.72005044,87.3838,-0.170035094,7785.87,270428.48,7846.28,-3.53996813,13.7015,5.04,8.66,4054.4,0,0 21 | 01-02-1998,1998M02,38.8871,3.660662576,-1.2704684,71.35644523,87.482,-0.203745386,7914.08,272502.85,7983.14,-3.530317255,11.0945,5.09,6,4085.5,0,0 22 | 01-03-1998,1998M03,39.5021,3.676353835,1.5691259,77.55911076,87.552,-0.121192537,8213.32,274177.02,8152.152,-3.515492015,9.4993,5.03,4.47,4110.6,0,0 23 | 01-04-1998,1998M04,39.6572,3.68027252,0.3918685,67.9045388,87.854,-0.257573468,8368.95,275777.82,8273.847,-3.506495965,7.5294,4.95,2.58,4134.6,0,0 24 | 01-05-1998,1998M05,40.4708,3.700580726,2.0308206,67.86451311,88.4226,-0.26461433,8459.58,277231.88,8389.169,-3.497912799,9.3244,5,4.32,4156.4,0,0 25 | 01-06-1998,1998M06,42.256,3.743746356,4.316563,67.97003745,87.8558,-0.256629852,8544.66,278952.74,8495.485,-3.491507531,7.6037,4.98,2.62,4182.2,0,0 26 | 01-07-1998,1998M07,42.5102,3.749744047,0.5997691,69.03757809,87.5421,-0.237468854,8634.61,280059.96,8644.252,-3.478109132,6.932,4.96,1.97,4198.8,0,0 27 | 01-08-1998,1998M08,42.52363,3.750059921,0.0315874,68.45467356,89.3341,-0.266211448,8832.76,281594.06,8869.012,-3.457903127,10.0539,4.9,5.15,4221.8,0,0 28 | 01-09-1998,1998M09,42.51783,3.749923517,-0.0136404,67.08684453,89.1794,-0.284662104,9011.5,284462.16,9000.834,-3.453283,9.165,4.61,4.56,4264.8,0,0 29 | 01-10-1998,1998M10,42.33182,3.745539049,-0.4384468,65.17552479,89.8907,-0.321510476,9150.11,287030.11,9152.246,-3.44558781,9.695,3.96,5.74,4303.3,0,0 30 | 01-11-1998,1998M11,42.38152,3.746712418,0.1173369,71.29162011,89.8458,-0.231316077,9192.2,289478,9217.17,-3.447011252,9.478,4.41,5.07,4340,0,0 31 | 01-12-1998,1998M12,42.54926,3.750662464,0.3950046,77.2135914,90.1893,-0.155335299,9236.98,291705.78,9322.656,-3.443298125,9.3558,4.39,4.97,4373.4,0,0 32 | 01-01-1999,1999M01,42.50664,3.749660299,-0.1002165,77.50567465,90.6043,-0.156150518,9402.34,293099.81,9480.556,-3.431270235,8.8562,4.34,4.52,4394.3,0,0 33 | 01-02-1999,1999M02,42.46044,3.748572819,-0.108748,73.87839859,91.0816,-0.209335329,9511.97,294874.03,9597.231,-3.425073629,9.3993,4.44,4.96,4420.9,0,0 34 | 01-03-1999,1999M03,42.44743,3.748266369,-0.030645,81.07995236,91.235,-0.118002861,9809.6,295621.07,9745.511,-3.412271697,8.7013,4.44,4.26,4432.1,0,0 35 | 01-04-1999,1999M04,42.72699,3.754830805,0.6564436,71.0966325,91.4677,-0.251945932,9941.6,297468.66,9828.241,-3.410048899,8.6063,4.29,4.32,4459.8,0,0 36 | 01-05-1999,1999M05,42.77092,3.755858432,0.1027627,72.8843633,92.1525,-0.234570693,10043.58,298695.94,9956.412,-3.401209367,8.5911,4.5,4.09,4478.2,0,0 37 | 01-06-1999,1999M06,43.13714,3.764384343,0.8525911,71.23220974,92.0042,-0.255889128,10106.82,300316.75,10038.24,-3.398435951,8.726,4.57,4.16,4502.5,0,0 38 | 01-07-1999,1999M07,43.28644,3.767839422,0.3455079,73.31859683,92.5769,-0.233225365,10233.54,301977.58,10239.29,-3.384120495,8.7464,4.55,4.2,4527.4,0,0 39 | 01-08-1999,1999M08,43.4609,3.771861683,0.4022261,73.44208549,92.9517,-0.23558286,10317.74,303304.91,10352.37,-3.377523124,9.1679,4.72,4.45,4547.3,0,0 40 | 01-09-1999,1999M09,43.53746,3.773621717,0.1760034,71.9850966,92.5954,-0.251780359,10504.31,304352.1,10507.17,-3.366127374,9.1254,4.68,4.45,4563,0,0 41 | 01-10-1999,1999M10,43.4515,3.771645374,-0.1976343,70.63876731,93.8128,-0.283722201,10623.14,305586.05,10632.98,-3.358270917,9.7032,4.86,4.84,4581.5,0,0 42 | 01-11-1999,1999M11,43.39813,3.770416353,-0.1229021,74.01862197,94.2587,-0.24172642,10701.16,307366.94,10728.8,-3.355110564,8.5906,5.07,3.52,4608.2,0,0 43 | 01-12-1999,1999M12,43.4845,3.772404553,0.19882,83.44292473,94.9777,-0.129479265,10954.61,309014.43,11048.05,-3.331134033,8.2332,5.2,3.03,4632.9,0,0 44 | 01-01-2000,2000M01,43.55027,3.773915903,0.151135,81.29129887,94.9864,-0.155694738,10943.68,310721.95,11039.29,-3.337437734,8.6254,5.32,3.31,4658.5,0,0 45 | 01-02-2000,2000M02,43.61245,3.77534266,0.1426757,79.91130664,95.2576,-0.175667448,11111.08,311815.83,11213.86,-3.325262212,8.7364,5.55,3.19,4674.9,0,0 46 | 01-03-2000,2000M03,43.58847,3.774792666,-0.0549994,87.76955141,95.6407,-0.085883816,11241.74,313763.47,11181.92,-3.334341234,10.0878,5.69,4.4,4704.1,0,0 47 | 01-04-2000,2000M04,43.64028,3.775980577,0.1187911,75.69131284,96.3318,-0.241135086,11540.93,317125.15,11408.73,-3.324917639,8.0696,5.66,2.41,4754.5,0,0 48 | 01-05-2000,2000M05,43.98503,3.783849349,0.7868772,77.22846442,96.5139,-0.22291894,11613.94,316731.62,11505.78,-3.315205273,8.6201,5.79,2.83,4748.6,0,0 49 | 01-06-2000,2000M06,44.69095,3.79977102,1.5921671,75.41947566,96.5856,-0.247364122,11775.24,317738.79,11679.67,-3.303379907,9.7122,5.69,4.02,4763.7,0,0 50 | 01-07-2000,2000M07,44.7825,3.801817438,0.2046418,76.95992311,96.4624,-0.225868488,11780.53,318652.58,11775.71,-3.298062483,8.5493,5.96,2.59,4777.4,0,0 51 | 01-08-2000,2000M08,45.6881,3.82183787,2.0020432,77.01150775,96.1414,-0.221865162,11855.98,320980.41,11886.32,-3.295991934,11.0161,6.09,4.93,4812.3,0,0 52 | 01-09-2000,2000M09,45.889,3.826225437,0.4387567,76.16301748,96.5318,-0.236996478,12032.54,323028.1,12055.1,-3.288251509,10.0974,6,4.1,4843,0,0 53 | 01-10-2000,2000M10,46.3475,3.836167353,0.9941916,75.33523895,96.2532,-0.245034213,12231.87,324215.36,12252.62,-3.275668195,9.4619,6.11,3.35,4860.8,0,0 54 | 01-11-2000,2000M11,46.78227,3.845504285,0.9336932,79.42392924,96.2769,-0.192428716,12532.9,324962.4,12571.96,-3.252240546,9.3421,6.17,3.17,4872,0,0 55 | 01-12-2000,2000M12,46.75053,3.844825593,-0.0678692,86.35664516,96.0165,-0.106034294,12724.12,327710.44,12826.25,-3.240636561,9.2538,5.77,3.48,4913.2,0,0 56 | 01-01-2001,2001M01,46.54545,3.840429255,-0.4396338,84.77805801,95.3542,-0.11756162,12763.58,331418.96,12883.57,-3.247430459,9.0769,5.15,3.93,4968.8,0,0 57 | 01-02-2001,2001M02,46.51889,3.839858467,-0.0570788,82.08710955,94.7736,-0.143709895,12906.83,333873.52,13025.41,-3.243860174,8.279,4.88,3.4,5005.6,0,0 58 | 01-03-2001,2001M03,46.6205,3.842040359,0.2181892,89.07729258,94.5456,-0.059577809,13132.04,337855.51,13077.66,-3.251712888,8.493,4.42,4.07,5065.3,0,0 59 | 01-04-2001,2001M04,46.78647,3.845594059,0.35537,77.57755002,94.3111,-0.195320811,13505.98,341944.22,13339.95,-3.243884332,7.6029,3.87,3.73,5126.6,0,0 60 | 01-05-2001,2001M05,46.92,3.848444024,0.2849965,78.43515918,93.6876,-0.177693558,13694.67,342197.68,13559.02,-3.228336573,7.414,3.62,3.79,5130.4,0,0 61 | 01-06-2001,2001M06,47.0045,3.850243342,0.1799318,77.41573034,93.1114,-0.184606631,13843.78,344765.63,13713.62,-3.224475353,7.0545,3.49,3.56,5168.9,0,0 62 | 01-07-2001,2001M07,47.14182,3.853160505,0.2917163,78.92820759,92.586,-0.159599268,13876.31,346973.4,13861.09,-3.220162486,7.0345,3.51,3.52,5202,0,0 63 | 01-08-2001,2001M08,47.127,3.852846085,-0.031442,79.30962893,92.4101,-0.152876735,13984.92,349114.47,14008.44,-3.215739858,6.98195,3.36,3.62,5234.1,0,0 64 | 01-09-2001,2001M09,47.646,3.863798681,1.0952596,77.65170193,92.0924,-0.170558954,14078.86,356384.77,14124.99,-3.228065393,6.9294,2.64,4.29,5343.1,0,0 65 | 01-10-2001,2001M10,48.02048,3.871627587,0.7828906,77.73139795,91.6854,-0.165103884,14208.23,355891.19,14243.45,-3.218327886,6.671,2.16,4.51,5335.7,0,0 66 | 01-11-2001,2001M11,47.99737,3.871146218,-0.0481369,81.32309125,91.2155,-0.114794837,14392.08,358799.31,14452.4,-3.211902716,6.4669,1.87,4.6,5379.3,0,0 67 | 01-12-2001,2001M12,47.92263,3.869587835,-0.1558383,88.96894624,91.2654,-0.025484355,14504.87,362281.05,14625.11,-3.209680377,6.9184,1.69,5.23,5431.5,0,0 68 | 01-01-2002,2002M01,48.31522,3.877746625,0.815879,88.11538462,91.7848,-0.040799562,14584.07,364302.06,14725.49,-3.208403353,6.4843,1.65,4.83,5461.8,0,0 69 | 01-02-2002,2002M02,48.6915,3.885504477,0.7757852,84.21346238,91.8034,-0.08629454,14743.66,366089.62,14871.77,-3.203413382,6.2329,1.73,4.5,5488.6,0,0 70 | 01-03-2002,2002M03,48.73944,3.886488559,0.0984082,92.64843192,92.5295,0.001284515,14983.36,366576.53,14935.05,-3.200496513,5.9177,1.79,4.13,5495.9,0,0 71 | 01-04-2002,2002M04,48.9195,3.89017609,0.3687531,80.76964373,92.9204,-0.140142014,15422.1,366943.38,15209.96,-3.183257082,6.0097,1.72,4.29,5501.4,0,0 72 | 01-05-2002,2002M05,49,3.891820298,0.1644208,81.66910112,93.2998,-0.133142233,16052.06,368424.12,15882.97,-3.143987309,6.4259,1.73,4.7,5523.6,0,0 73 | 01-06-2002,2002M06,48.9665,3.891136391,-0.0683907,80.92134831,94.1905,-0.151841653,16094.53,369878.18,15934.45,-3.144690276,6.1419,1.7,4.44,5545.4,0,0 74 | 01-07-2002,2002M07,48.76391,3.88699049,-0.4145901,84.53781836,93.9664,-0.105738283,16141.59,373146.48,16118.96,-3.141974831,5.828,1.68,4.15,5594.4,0,0 75 | 01-08-2002,2002M08,48.58667,3.883349213,-0.3641277,84.19924847,93.9897,-0.109999206,16306.87,375627.72,16327.51,-3.135747131,5.753,1.62,4.13,5631.6,0,0 76 | 01-09-2002,2002M09,48.44158,3.880358536,-0.2990677,82.50193192,94.1275,-0.131828536,16403.76,377175.16,16465.16,-3.131463062,5.7139,1.63,4.08,5654.8,0,0 77 | 01-10-2002,2002M10,48.37286,3.878938913,-0.1419623,83.19464046,93.7988,-0.119969134,16589.03,380683.58,16637.61,-3.130302736,5.516,1.58,3.94,5707.4,0,0 78 | 01-11-2002,2002M11,48.25526,3.876504837,-0.2434076,84.68314711,94.2885,-0.107442621,16735.16,383571.69,16829.39,-3.126399777,5.1018,1.23,3.87,5750.7,0,0 79 | 01-12-2002,2002M12,48.14,3.874113432,-0.2391405,94.44473118,93.8334,0.006493939,16819.91,385285.88,16966.63,-3.12273713,5.4337,1.19,4.24,5776.4,0,0 80 | 01-01-2003,2003M01,47.93261,3.869796066,-0.4317366,94.04287516,94.3584,-0.003349501,16937.25,387233.52,17116.4,-3.118990854,5.5742,1.17,4.4,5805.6,0,0 81 | 01-02-2003,2003M02,47.73579,3.865681431,-0.4114635,90.09802024,94.6468,-0.049253877,17072.83,389588.03,17210.85,-3.119549849,5.529,1.17,4.36,5840.9,0,0 82 | 01-03-2003,2003M03,47.64105,3.863694785,-0.1986646,98.08058753,94.4394,0.037831104,17179.36,390548.51,17124.47,-3.127043752,5.6552,1.13,4.53,5855.3,0,0 83 | 01-04-2003,2003M04,47.3775,3.858147432,-0.5547353,84.15519766,93.764,-0.108118302,17705.34,393516.66,17420.15,-3.117495823,4.5977,1.13,3.47,5899.8,0,0 84 | 01-05-2003,2003M05,47.08316,3.8519154,-0.6232032,86.88202247,93.7793,-0.076393015,17846.96,397191.83,17653.73,-3.11347227,4.6704,1.07,3.6,5954.9,0,0 85 | 01-06-2003,2003M06,46.70905,3.843937936,-0.7977464,86.3258427,93.9277,-0.084396332,18023.02,399719.76,17857.04,-3.108365873,4.9326,0.92,4.01,5992.8,0,0 86 | 01-07-2003,2003M07,46.22957,3.833619637,-1.0318299,90.09822201,94.3114,-0.045701642,18066.44,403394.93,18049.73,-3.106785331,4.6897,0.9,3.79,6047.9,0,0 87 | 01-08-2003,2003M08,45.9355,3.827238239,-0.6381398,89.03997182,94.138,-0.0556764,18194.33,406283.04,18207.75,-3.105202732,4.6448,0.95,3.69,6091.2,0,0 88 | 01-09-2003,2003M09,45.85048,3.825385668,-0.1852571,88.69678013,94.7363,-0.065873655,18315.88,405042.42,18371.35,-3.093199416,4.5441,0.94,3.6,6072.6,0,0 89 | 01-10-2003,2003M10,45.39045,3.81530173,-1.0083938,88.3703439,94.8514,-0.070775019,18648.61,404175.32,18711.55,-3.072707764,4.7328,0.92,3.81,6059.6,0,0 90 | 01-11-2003,2003M11,45.52,3.81815179,0.285006,91.64674115,95.6337,-0.042583852,18749.05,404101.95,18880.86,-3.063518487,4.2324,0.93,3.3,6058.5,0,0 91 | 01-12-2003,2003M12,45.59091,3.819708355,0.1556565,101.4778495,95.5638,0.060046456,18962.89,404528.83,19147.62,-3.050544581,4.2052,0.9,3.31,6064.9,0,0 92 | 01-01-2004,2004M01,45.45667,3.816759565,-0.294879,101.5643127,95.7472,0.058980836,19226.68,404835.65,19440.82,-3.036106203,4.3092,0.88,3.43,6069.5,0,0 93 | 01-02-2004,2004M02,45.27167,3.812681451,-0.4078114,97.5649802,96.3214,0.012828103,19593.88,407310.22,19732.71,-3.027297442,4.332,0.93,3.4,6106.6,0,0 94 | 01-03-2004,2004M03,45.01476,3.806990436,-0.5691015,105.9773323,95.8684,0.100248807,20056.54,409884.84,19973.08,-3.021490875,4.3277,0.94,3.39,6145.2,0,0 95 | 01-04-2004,2004M04,43.93333,3.782673258,-2.4317178,93.97330405,96.2677,-0.02412211,20581.84,412752.94,20211.8,-3.016582613,4.3609,0.94,3.42,6188.2,0,0 96 | 01-05-2004,2004M05,45.258,3.81237945,2.9706192,95.32888577,97.0723,-0.018123193,20562.33,417135.13,20342.64,-3.020691046,4.3831,1.02,3.36,6253.9,0,0 97 | 01-06-2004,2004M06,45.51591,3.818061935,0.5682485,95.43071161,96.2562,-0.008612935,20631.3,417955.54,20477.69,-3.016039062,4.3738,1.27,3.1,6266.2,0,0 98 | 01-07-2004,2004M07,46.04364,3.829589642,1.1527707,100.6777511,97.0032,0.037180865,20626.35,418569.18,20613.13,-3.01091393,4.4679,1.33,3.14,6275.4,0,0 99 | 01-08-2004,2004M08,46.34238,3.836056877,0.6467235,99.69934241,97.0723,0.02670302,20831.61,420003.23,20852.82,-3.002773211,4.5086,1.48,3.03,6296.9,0,0 100 | 01-09-2004,2004M09,46.0981,3.830771734,-0.5285143,100.2220791,97.1565,0.031065434,20895.61,422531.16,20924.47,-3.005343908,4.7893,1.65,3.14,6334.8,0,0 101 | 01-10-2004,2004M10,45.78368,3.823927696,-0.6844038,100.4949084,98.0701,0.024424535,21132.98,423978.55,21211.69,-2.99513042,4.9898,1.76,3.23,6356.5,0,0 102 | 01-11-2004,2004M11,45.12684,3.809477191,-1.4450505,101.8243017,98.2541,0.035691815,21196.11,426433.11,21366.65,-2.993624225,5.1903,2.07,3.12,6393.3,0,0 103 | 01-12-2004,2004M12,43.98043,3.783744762,-2.5732429,113.9867527,98.9703,0.141262432,21446.93,427453.62,21683.54,-2.981292344,5.3304,2.19,3.14,6408.6,0,0 104 | 01-01-2005,2005M01,43.75684,3.778647943,-0.5096819,112.1740227,99.417,0.120728314,22062.2,427413.6,22314.92,-2.95249665,5.141,2.33,2.81,6408,0,0 105 | 01-02-2005,2005M02,43.677,3.776821648,-0.1826295,106.8615926,100.0955,0.06540974,22151.25,428420.77,22280.59,-2.956389924,5.0448,2.54,2.5,6423.1,0,0 106 | 01-03-2005,2005M03,43.69,3.777119243,0.0297595,121.4690353,99.9283,0.195206448,22456.53,429334.56,22319.22,-2.956788284,5.1531,2.74,2.41,6436.8,0,0 107 | 01-04-2005,2005M04,43.74118,3.778289992,0.1170749,99.1,100.0742,-0.00978247,23314.06,429888.17,22873.57,-2.93354301,5.1551,2.78,2.38,6445.1,0,0 108 | 01-05-2005,2005M05,43.49143,3.772563907,-0.5726085,103.1,100.2414,0.028118114,23299.37,430902.01,23058.11,-2.927863158,5.1573,2.84,2.32,6460.3,0,0 109 | 01-06-2005,2005M06,43.58591,3.774733933,0.2170026,104,100.6437,0.032804342,23465.64,433383.25,23340.13,-2.921448244,5.3604,2.97,2.39,6497.5,0,0 110 | 01-07-2005,2005M07,43.53737,3.77361965,-0.1114283,102.4,100.3278,0.020443888,23584.46,435064.09,23582.45,-2.914990562,5.3117,3.22,2.09,6522.7,0,0 111 | 01-08-2005,2005M08,43.62591,3.77565124,0.203159,104.1,100.5151,0.035044011,23855.45,437278.53,23885.94,-2.907280359,5.129,3.44,1.69,6555.9,0,0 112 | 01-09-2005,2005M09,43.9165,3.782290104,0.6638864,104.4,98.6063,0.057094521,24696.3,439746.43,24694.62,-2.879612859,5.148,3.42,1.73,6592.9,0,0 113 | 01-10-2005,2005M10,44.8225,3.802710245,2.0420141,107.3,99.8695,0.071764316,24710.03,441714.08,24812.99,-2.879295489,5.4832,3.71,1.77,6622.4,0,0 114 | 01-11-2005,2005M11,45.7285,3.822721736,2.0011491,104.6,100.9014,0.035999749,24888.05,443394.92,25100.46,-2.871574668,5.6576,3.88,1.78,6647.6,0,0 115 | 01-12-2005,2005M12,45.64545,3.820903931,-0.1817805,116.8,101.4873,0.140529403,25155.41,445182.48,25467.94,-2.861063859,6.055,3.89,2.17,6674.4,0,0 116 | 01-01-2006,2006M01,44.3985,3.793205685,-2.7698246,118.5,101.6088,0.153782815,25227.66,447830.47,25497.82,-2.865821787,6.5959,4.24,2.36,6714.1,0,0 117 | 01-02-2006,2006M02,44.33105,3.791685334,-0.1520351,112.4,101.6839,0.100194956,25679.6,449598.02,25794.96,-2.858174771,6.6533,4.43,2.22,6740.6,0,0 118 | 01-03-2006,2006M03,44.4819,3.795082365,0.3397031,126.7,101.8522,0.218299344,27194.93,450398.42,26975.65,-2.815197962,6.1,4.51,1.59,6752.6,0,0 119 | 01-04-2006,2006M04,44.94941,3.805537635,1.045527,108.8,102.2952,0.061648583,27634.91,452572.84,27120.77,-2.814648868,5.5176,4.6,0.92,6785.2,0,0 120 | 01-05-2006,2006M05,45.40909,3.815712305,1.017467,114.8,102.1531,0.116718816,27702.92,453453.28,27423.25,-2.80550105,5.5442,4.72,0.82,6798.4,0,0 121 | 01-06-2006,2006M06,46.05545,3.829846105,1.41338,114.2,102.522,0.107873888,27745.55,455887.83,27653.22,-2.802504616,6.2844,4.79,1.49,6834.9,0,0 122 | 01-07-2006,2006M07,46.45619,3.838509718,0.8663613,117.6,102.5057,0.137370629,28273,458195.65,28270.54,-2.785476003,6.3575,4.95,1.41,6869.5,0,0 123 | 01-08-2006,2006M08,46.53909,3.840292605,0.1782887,114.3,102.8357,0.105694002,28848,460296.7,28906.51,-2.767804452,6.2027,4.96,1.24,6901,0,0 124 | 01-09-2006,2006M09,46.12095,3.831267294,-0.9025311,118.2,102.6606,0.140949703,29416.57,462064.25,29391.62,-2.754994351,6.59,4.81,1.78,6927.5,0,0 125 | 01-10-2006,2006M10,45.46842,3.817018019,-1.4249275,117.7,102.6297,0.13701165,29363.87,465866.15,29492.83,-2.759751178,6.5197,4.92,1.6,6984.5,0,0 126 | 01-11-2006,2006M11,44.85045,3.803333622,-1.3684397,125.5,102.539,0.202062545,29817.72,468507.47,30066.72,-2.746133134,6.2467,4.94,1.31,7024.1,0,0 127 | 01-12-2006,2006M12,44.6345,3.798507103,-0.4826519,132.8,103.6229,0.248085889,30058.3,471302.2,30462.96,-2.738987982,7.2496,4.85,2.4,7066,0,0 128 | 01-01-2007,2007M01,44.333,3.791729321,-0.6777782,134.9,103.1171,0.268668528,30672.75,473930.18,30968.21,-2.728098817,7.2936,4.98,2.31,7105.4,0,0 129 | 01-02-2007,2007M02,44.16056,3.787832083,-0.3897238,127.8,104.172,0.204423163,31388.37,475144.12,31500.89,-2.713602369,7.101,5.03,2.07,7123.6,0,0 130 | 01-03-2007,2007M03,44.0255,3.784769012,-0.3063071,144.9,104.3501,0.328292257,33100.38,477138.45,32767.43,-2.678371666,7.5567,4.94,2.62,7153.5,0,0 131 | 01-04-2007,2007M04,42.15105,3.741259595,-4.3509417,128.2,105.0975,0.198719434,33064.35,481727.41,32491.48,-2.696400514,7.3701,4.87,2.5,7222.3,0,0 132 | 01-05-2007,2007M05,40.77952,3.708179995,-3.30796,136.9,105.1436,0.263621972,33219.31,483301.53,32887.69,-2.687542321,6.4405,4.73,1.71,7245.9,0,0 133 | 01-06-2007,2007M06,40.7719,3.707993119,-0.0186876,136.7,105.1474,0.262723988,33811.45,484935.68,33758.77,-2.664776028,6.9877,4.61,2.38,7270.4,0,0 134 | 01-07-2007,2007M07,40.41636,3.699234653,-0.8758466,136.6,105.1149,0.262338871,34558.61,487283.52,34538.32,-2.646776698,5.0083,4.82,0.19,7305.6,0,0 135 | 01-08-2007,2007M08,40.81762,3.709113851,0.9879198,134.6,105.3166,0.24533488,34858.15,491605.68,34939.8,-2.644050351,6.7485,4.2,2.55,7370.4,0,0 136 | 01-09-2007,2007M09,40.34,3.697343533,-1.1770318,134,105.6629,0.23745461,35850.09,493740.08,35837.78,-2.623006581,6.7164,3.89,2.83,7402.4,0,0 137 | 01-10-2007,2007M10,39.51318,3.676634287,-2.0709246,140.7,105.1595,0.291303093,36152.14,495781.1,36307.84,-2.614100803,7.3027,3.9,3.4,7433,0,0 138 | 01-11-2007,2007M11,39.44,3.67478053,-0.1853757,137.9,105.729,0.265825042,36803.44,497815.45,37099.25,-2.596632672,7.4871,3.27,4.22,7463.5,0,0 139 | 01-12-2007,2007M12,39.44,3.67478053,0,150.7,105.7256,0.35465305,37055.14,499896.49,37571.43,-2.588157136,7.2776,3,4.28,7494.7,0,0 140 | 01-01-2008,2008M01,39.37478,3.67312551,-0.165502,152.5,105.4069,0.369467636,38043.34,502184.3,38352.32,-2.572152162,6.8991,2.75,4.15,7529,1,1 141 | 01-02-2008,2008M02,39.72952,3.682094488,0.8968978,149.3,105.054,0.351614472,38818.76,508100.59,38927.21,-2.568985948,7.167,2.12,5.05,7617.7,1,2 142 | 01-03-2008,2008M03,40.35667,3.697756685,1.5662197,161.9,104.7987,0.434841751,40178.55,511955.85,39735.47,-2.555994151,7.0015,1.26,5.74,7675.5,1,3 143 | 01-04-2008,2008M04,40.02778,3.689573713,-0.8182972,142.3,104.0207,0.313555577,40375.83,515250.83,39740.91,-2.562272695,6.9923,1.29,5.7,7724.9,1,4 144 | 01-05-2008,2008M05,42.1255,3.740653258,5.1079545,146.7,103.4941,0.349183143,40956.91,515817.78,40560.35,-2.542962575,7.417,1.73,5.69,7733.4,1,5 145 | 01-06-2008,2008M06,42.82,3.757005283,1.6352025,148.4,103.3216,0.361901117,41071.33,516618.18,41055.41,-2.532381454,8.6518,1.86,6.79,7745.4,1,6 146 | 01-07-2008,2008M07,42.83652,3.75739101,0.0385727,144.3,102.7625,0.339457333,41489.87,520486.78,41407.76,-2.531296186,9.1502,1.63,7.52,7803.4,1,7 147 | 01-08-2008,2008M08,42.93895,3.759779339,0.2388329,141.9,101.2245,0.337540013,42261.71,519679.71,42381.56,-2.506499318,8.9913,1.72,7.27,7791.3,1,8 148 | 01-09-2008,2008M09,45.564,3.819117931,5.9338592,148.6,96.8689,0.427809435,42835.14,526383.06,42889.98,-2.507390966,8.7418,1.13,7.61,7891.8,1,9 149 | 01-10-2008,2008M10,48.64222,3.884491878,6.5373947,146.2,97.7617,0.402249757,43579.37,533900.15,43741.25,-2.501917244,7.0275,0.67,6.36,8004.5,1,10 150 | 01-11-2008,2008M11,49.00333,3.891888255,0.7396377,139.7,96.5572,0.369019467,43888.4,537201.8,44217.41,-2.497255212,7.0572,0.19,6.87,8054,1,11 151 | 01-12-2008,2008M12,48.6419,3.884485299,-0.7402956,148.3,93.7183,0.45883588,44439.93,550168.28,45045.39,-2.502553547,4.8555,0.03,4.83,8248.4,1,12 152 | 01-01-2009,2009M01,48.8345,3.88843703,0.3951731,144.4,91.5058,0.455983324,45747.79,554357.04,46057.59,-2.487916386,4.7166,0.13,4.59,8311.2,1,13 153 | 01-02-2009,2009M02,49.22222,3.896345148,0.7908118,138.5,90.934,0.420777511,46645.7,556978.35,46757.96,-2.477541862,4.4835,0.3,4.18,8350.5,1,14 154 | 01-03-2009,2009M03,51.23158,3.936356139,4.0010991,153.5,89.5012,0.539670008,47947.75,560386.72,47416.64,-2.469653895,4.5491,0.21,4.34,8401.6,1,15 155 | 01-04-2009,2009M04,50.06188,3.91325984,-2.3096299,139.6,88.7058,0.45338786,49017.15,559766.41,48324.27,-2.449585653,3.1159,0.16,2.96,8392.3,1,16 156 | 01-05-2009,2009M05,48.534,3.882264583,-3.0995257,144.3,87.7758,0.49691665,49517.2,562541.13,49049.03,-2.439643841,3.225,0.18,3.05,8433.9,1,17 157 | 01-06-2009,2009M06,47.77364,3.866474023,-1.579056,145.7,87.4125,0.511197584,49585.65,563928.49,49592.67,-2.431084412,3.2586,0.18,3.08,8454.7,1,18 158 | 01-07-2009,2009M07,48.47652,3.881079557,1.4605534,146.7,88.3209,0.507543783,50486.98,563915.15,50332.61,-2.41625062,3.1907,0.18,3.01,8454.5,1,19 159 | 01-08-2009,2009M08,48.337,3.878197313,-0.2882244,149.4,89.2996,0.514780855,50656.63,562301.01,50783.94,-2.404457149,3.3043,0.17,3.13,8430.3,1,20 160 | 01-09-2009,2009M09,48.43895,3.880304242,0.2106929,151,89.9908,0.517631995,51205.35,563875.13,51391.61,-2.395357897,3.301,0.12,3.18,8453.9,1,21 161 | 01-10-2009,2009M10,46.72105,3.844194813,-3.6109429,149.6,90.2527,0.505673024,51828.5,565902.81,51976.55,-2.387629694,3.1828,0.07,3.11,8484.3,1,22 162 | 01-11-2009,2009M11,46.569,3.840935084,-0.3259729,148.5,90.6331,0.493755369,52306.93,567870.46,52675.51,-2.377742688,3.2424,0.05,3.19,8513.8,1,23 163 | 01-12-2009,2009M12,46.63,3.842244111,0.1309027,162.4,90.8895,0.580281852,52453.13,568991.02,53100.21,-2.371683769,3.5689,0.05,3.52,8530.6,1,24 164 | 01-01-2010,2010M01,45.963,3.827836725,-1.4407386,163.6,91.9065,0.57676941,53688.61,564668.86,53996.51,-2.347320056,3.5096,0.06,3.45,8465.8,1,25 165 | 01-02-2010,2010M02,46.32579,3.835698825,0.78621,157.5,92.2135,0.535436371,54572.73,569191.12,54709.4,-2.342180724,3.9728,0.11,3.86,8533.6,1,26 166 | 01-03-2010,2010M03,45.498,3.817668369,-1.8030456,176.5,92.8133,0.642585308,56026.98,567730.39,55486.86,-2.325500405,3.9332,0.15,3.78,8511.7,1,27 167 | 01-04-2010,2010M04,44.49895,3.795465593,-2.2202776,157.8,93.1984,0.526892488,56493.36,568444.08,55732.47,-2.322340023,3.9533,0.16,3.79,8522.4,1,28 168 | 01-05-2010,2010M05,45.8045,3.82438234,2.8916747,156.5,94.6492,0.50315714,57029.14,571078.73,56504.63,-2.313204499,5.084,0.16,4.92,8561.9,1,29 169 | 01-06-2010,2010M06,46.56455,3.840839522,1.6457182,156.6,94.8328,0.501287574,57105.8,573026.37,57110.42,-2.30594515,5.3198,0.12,5.2,8591.1,1,30 170 | 01-07-2010,2010M07,46.83636,3.846659824,0.5820302,161.3,95.2539,0.526720027,58423.83,574093.57,58196.29,-2.28897079,5.6327,0.16,5.47,8607.1,1,31 171 | 01-08-2010,2010M08,46.56714,3.840895142,-0.5764682,156.1,95.6092,0.490227778,58544.53,577128.42,58689.14,-2.285810106,6.0066,0.16,5.85,8652.6,1,32 172 | 01-09-2010,2010M09,46.059,3.829923183,-1.0971959,160.3,95.8794,0.513955908,58992.66,580310.01,59325.66,-2.280520533,6.0439,0.15,5.89,8700.3,1,33 173 | 01-10-2010,2010M10,44.4107,3.793480431,-3.6442752,166.6,95.6362,0.55504432,60804.76,583011.36,60937.23,-2.258362354,6.7058,0.13,6.58,8740.8,1,34 174 | 01-11-2010,2010M11,45.01825,3.807067963,1.3587532,158,95.7002,0.501374645,60905.75,585552.63,61275.96,-2.257168472,6.8073,0.14,6.67,8778.9,1,35 175 | 01-12-2010,2010M12,45.1568,3.810140878,0.3072915,175.6,96.4959,0.598708161,62251.81,587773.74,62887.08,-2.235001341,6.8806,0.14,6.74,8812.2,1,36 176 | 01-01-2011,2011M01,45.39338,3.815366279,0.5225401,175.9,96.4283,0.601115925,62559.84,589414.56,62896.17,-2.237644502,3.5096,0.15,3.36,8836.8,1,37 177 | 01-02-2011,2011M02,45.43579,3.81630012,0.0933841,168,96.0111,0.55950017,63667.14,593509.94,63872.21,-2.229169594,7.071,0.13,6.94,8898.2,1,38 178 | 01-03-2011,2011M03,44.99136,3.806470471,-0.9829649,193.1,96.8407,0.690140829,65041.16,595384.21,64533.86,-2.222016881,7.1447,0.1,7.04,8926.3,1,39 179 | 01-04-2011,2011M04,44.37,3.792563565,-1.3906906,166.2,96.4337,0.544336157,66494.04,597505.27,65631.56,-2.208706426,7.5332,0.06,7.47,8958.1,1,40 180 | 01-05-2011,2011M05,44.90452,3.804538458,1.1974893,166.2,96.6227,0.542378179,66714.95,603374.87,66110.13,-2.211216691,8.0727,0.04,8.03,9046.1,1,41 181 | 01-06-2011,2011M06,44.85364,3.803404745,-0.1133713,171.4,96.8573,0.570761245,66966.07,606569.8,66942.88,-2.20398009,8.0475,0.04,8.01,9094,1,42 182 | 01-07-2011,2011M07,44.4174,3.793631285,-0.977346,167.2,97.3169,0.541218037,68150.4,618115.57,67881.53,-2.208911467,8.3567,0.04,8.32,9267.1,1,43 183 | 01-08-2011,2011M08,45.2788,3.812838932,1.9207647,161.4,97.7956,0.50100617,68521.31,630868.61,68673.19,-2.21773874,8.3468,0.02,8.33,9458.3,1,44 184 | 01-09-2011,2011M09,47.632,3.863504804,5.0665872,164.3,97.7474,0.519307425,68787.79,632195.94,69268.1,-2.211214895,8.3849,0.01,8.37,9478.2,1,45 185 | 01-10-2011,2011M10,49.25792,3.897070167,3.3565363,158.3,98.4096,0.475353607,69846.2,635350.85,69957.78,-2.206285449,8.6274,0.02,8.61,9525.5,1,46 186 | 01-11-2011,2011M11,50.85644,3.929006761,3.1936594,167.5,98.281,0.533152629,70335.34,638539.11,70684.22,-2.200960575,8.7007,0.01,8.69,9573.3,1,47 187 | 01-12-2011,2011M12,52.6769,3.964177029,3.5170268,180.3,98.6739,0.602801656,72213.42,642947.98,72787.97,-2.178513125,8.6846,0.01,8.67,9639.4,1,48 188 | 01-01-2012,2012M01,51.3392,3.938454593,-2.5722436,177.6,99.3787,0.580596026,71848.3,647883.78,72235.97,-2.193773207,8.6786,0.03,8.65,9713.4,1,49 189 | 01-02-2012,2012M02,49.1671,3.895224701,-4.3229892,175.2,99.6578,0.564185861,72530.52,650251.63,72820.23,-2.18936561,8.9552,0.09,8.87,9748.9,1,50 190 | 01-03-2012,2012M03,50.3213,3.918428447,2.3203746,187.6,98.9579,0.639617529,73848.31,652679.51,73424.3,-2.184831269,8.8675,0.08,8.79,9785.3,1,51 191 | 01-04-2012,2012M04,51.8121,3.947623713,2.9195266,164.1,99.8396,0.4969111,75317.32,655647.66,74358.41,-2.176726761,8.3528,0.08,8.27,9829.8,1,52 192 | 01-05-2012,2012M05,54.47353,3.997714896,5.0091183,170.3,100.0042,0.532349403,75952.27,658415.71,75270.52,-2.168747952,8.326,0.09,8.24,9871.3,1,53 193 | 01-06-2012,2012M06,56.03021,4.02589101,2.8176114,168,100.0318,0.518475844,77562.28,661790.73,77490.89,-2.144789007,8.2858,0.09,8.2,9921.9,1,54 194 | 01-07-2012,2012M07,55.49475,4.016288422,-0.9602588,167.1,100.3132,0.510295144,77666.67,668400.7,77392.79,-2.15599422,8.1588,0.1,8.06,10021,1,55 195 | 01-08-2012,2012M08,55.55979,4.017459738,0.1171316,164.7,99.8389,0.50056775,78178.42,673256.46,78356.37,-2.15085906,8.1924,0.1,8.09,10093.8,1,56 196 | 01-09-2012,2012M09,54.60552,4.000134977,-1.7324761,163.1,99.9599,0.489594404,78165.92,678278.97,78763.75,-2.153105798,8.0675,0.11,7.96,10169.1,1,57 197 | 01-10-2012,2012M10,53.02393,3.970743321,-2.9391656,171.6,100.2146,0.5378523,79165.08,684001.83,79253.79,-2.155305358,8.1062,0.1,8.01,10254.9,1,58 198 | 01-11-2012,2012M11,54.77581,4.003248673,3.2505352,165.8,100.7651,0.497990177,79931.52,687470.23,80238.55,-2.148014454,8.1434,0.09,8.05,10306.9,1,59 199 | 01-12-2012,2012M12,54.6478,4.000908958,-0.2339715,179.3,101.0382,0.573561717,80336.62,694820.57,80831.31,-2.151289249,8.1483,0.07,8.08,10417.1,1,60 200 | 01-01-2013,2013M01,54.3168,3.994833571,-0.6075387,182,100.9614,0.589268422,81157.95,697655.32,81577.09,-2.146176707,7.9318,0.07,7.86,10459.6,1,61 201 | 01-02-2013,2013M02,53.77372,3.984784872,-1.0048699,176.2,101.4781,0.551776702,81740.83,696307.98,82108.31,-2.137752833,8.1415,0.1,8.04,10439.4,1,62 202 | 01-03-2013,2013M03,54.40462,3.996449077,1.1664205,194.2,101.6302,0.647547821,83898.19,699269.46,83562.09,-2.124446213,7.8678,0.09,7.78,10483.8,1,63 203 | 01-04-2013,2013M04,54.37571,3.995917547,-0.053153,166.5,101.5825,0.494124033,85029.03,703098.04,83987.53,-2.124828006,7.5511,0.06,7.49,10541.2,1,64 204 | 01-05-2013,2013M05,55.01081,4.007529711,1.1612164,166,101.6016,0.490928505,86276.79,706406.36,85506.5,-2.111598256,7.3595,0.04,7.32,10590.8,1,65 205 | 01-06-2013,2013M06,58.3973,4.067269656,5.9739945,164.9,101.8221,0.482112057,87405.71,709621.3,87261.47,-2.095822434,7.4905,0.05,7.44,10639,1,66 206 | 01-07-2013,2013M07,59.7754,4.090594205,2.3324549,171.4,101.2443,0.526463598,87329.72,713836.74,87115.38,-2.103420834,10.9381,0.04,10.9,10702.2,1,67 207 | 01-08-2013,2013M08,63.2088,4.146443532,5.5849327,165.4,101.9928,0.48346456,87619.1,717438.54,87809.17,-2.100521348,11.1407,0.04,11.1,10756.2,1,68 208 | 01-09-2013,2013M09,63.75214,4.155002752,0.855922,167.5,102.4847,0.491269832,88330.81,720506.74,89038.88,-2.090881642,9.6097,0.02,9.59,10802.2,1,69 209 | 01-10-2013,2013M10,61.61556,4.120914436,-3.4088316,169.6,102.4287,0.504275777,90048.38,727036.67,90095.64,-2.088105144,8.6742,0.05,8.62,10900.1,1,70 210 | 01-11-2013,2013M11,62.63296,4.137291657,1.6377221,163.6,102.7732,0.464899806,91825.57,728997.65,92110.29,-2.068683845,8.8665,0.07,8.8,10929.5,1,71 211 | 01-12-2013,2013M12,61.91031,4.125686725,-1.1604932,179.5,102.9513,0.555919147,92229.92,732826.23,92701.4,-2.067525032,8.6271,0.07,8.56,10986.9,1,72 212 | 01-01-2014,2014M01,62.07597,4.128358958,0.2672233,184,102.4621,0.585442784,92958.75,736054.51,93407.35,-2.064334143,8.4792,0.04,8.44,11035.3,1,73 213 | 01-02-2014,2014M02,62.25401,4.131222951,0.2863993,172.7,103.2919,0.513997024,93638,740396.68,94074.83,-2.063095567,9.0552,0.05,9.01,11100.4,1,74 214 | 01-03-2014,2014M03,61.01399,4.111103182,-2.0119769,193.3,104.0896,0.61899132,95173.86,744038.5,94915.22,-2.059108709,8.5005,0.05,8.45,11155,1,75 215 | 01-04-2014,2014M04,60.35662,4.100270635,-1.0832547,172.7,104.2409,0.504851418,96875.35,747960.46,95702.34,-2.056107366,8.8245,0.03,8.79,11213.8,1,76 216 | 01-05-2014,2014M05,59.30502,4.082693957,-1.7576678,175.3,104.6541,0.515838166,97663.51,752596.11,96782.4,-2.05106355,8.4215,0.03,8.39,11283.3,1,77 217 | 01-06-2014,2014M06,59.7307,4.089846126,0.7152169,172,105.1223,0.492370043,97740.4,756164.56,97539.85,-2.047998012,8.4706,0.04,8.43,11336.8,1,78 218 | 01-07-2014,2014M07,60.05857,4.095320253,0.5474127,173,105.2073,0.497358905,98189.13,760613.45,98047.52,-2.04867302,8.5737,0.03,8.54,11403.5,1,79 219 | 01-08-2014,2014M08,60.89517,4.109153861,1.3833608,166.2,105.1989,0.457339038,98848.1,763061.34,99078.63,-2.041424644,8.5322,0.03,8.5,11440.2,1,80 220 | 01-09-2014,2014M09,60.86492,4.108656982,-0.0496879,171.8,105.575,0.486909409,99317.01,765582.6,100130.6,-2.034161779,8.4113,0.02,8.39,11478,1,81 221 | 01-10-2014,2014M10,61.34199,4.1164646,0.7807618,165.1,105.6441,0.446475453,101202.26,769051,101212.4,-2.027936008,8.3555,0.02,8.34,11530,1,82 222 | 01-11-2014,2014M11,61.70418,4.122351676,0.5887076,172.1,106.6868,0.478178264,101656.97,771592.27,101924.2,-2.024226863,8.2058,0.02,8.19,11568.1,1,83 223 | 01-12-2014,2014M12,62.75295,4.139205589,1.6853913,185.9,106.5182,0.556893032,102108.42,776247.93,102577.9,-2.023849457,8.3028,0.03,8.27,11637.9,1,84 224 | 01-01-2015,2015M01,62.22593,4.130771794,-0.8433795,189.2,105.9906,0.579454246,103014.33,780716.83,103463.6,-2.02099265,8.0298,0.03,8,11704.9,1,85 225 | 01-02-2015,2015M02,62.03761,4.127740814,-0.303098,181,105.8576,0.536402237,104093.53,787160.05,104567.7,-2.018596886,8.2608,0.02,8.24,11801.5,1,86 226 | 01-03-2015,2015M03,62.44984,4.134363675,0.6622861,198.1,105.515,0.629918831,105501.68,789487.88,105284.6,-2.014717322,7.7815,0.03,7.75,11836.4,1,87 227 | 01-04-2015,2015M04,62.72184,4.138709712,0.4346037,177.9,105.2732,0.524662719,107318.67,793022.98,106033.5,-2.012097118,7.8718,0.02,7.85,11889.4,1,88 228 | 01-05-2015,2015M05,63.80033,4.155758363,1.7048651,179.7,105.0259,0.537081807,108180.07,795417.51,107208.4,-2.004092543,7.7875,0.02,7.77,11925.3,1,89 229 | 01-06-2015,2015M06,63.86074,4.156704775,0.0946412,179.3,104.8599,0.536435207,108111.34,798532.4,107869,-2.001858015,7.597,0.02,7.58,11972,1,90 230 | 01-07-2015,2015M07,63.63498,4.153163319,-0.3541456,180.5,105.4755,0.537252079,109073.67,802661.13,108988.4,-1.996691165,7.3153,0.03,7.29,12033.9,1,91 231 | 01-08-2015,2015M08,65.07233,4.17549942,2.2336101,176.6,105.5783,0.51443443,109795.27,807023.31,110082.7,-1.992120651,7.3504,0.07,7.28,12099.3,1,92 232 | 01-09-2015,2015M09,66.18609,4.19247032,1.69709,178.2,105.3072,0.526024722,109902.54,811005.3,110809.2,-1.990464786,7.0266,0.02,7.01,12159,1,93 233 | 01-10-2015,2015M10,65.07548,4.175547827,-1.6922493,181.4,105.1649,0.545174943,111972.23,812452.69,111943.5,-1.982063405,7.0382,0.02,7.02,12180.7,1,94 234 | 01-11-2015,2015M11,66.11709,4.191427261,1.5879434,166.3,104.4871,0.464729767,112249.39,818162.21,112520.6,-1.983924302,7.1068,0.12,6.99,12266.3,1,95 235 | 01-12-2015,2015M12,66.59551,4.198637158,0.7209897,184.2,104.0452,0.571196704,113019.46,821310.45,113512.1,-1.978991735,7.106,0.23,6.88,12313.5,1,96 236 | 01-01-2016,2016M01,67.25233,4.208451665,0.9814507,186.2,104.5495,0.577160721,114177.16,829514.55,114655.8,-1.978906053,7.0224,0.26,6.76,12436.5,1,97 237 | 01-02-2016,2016M02,68.23767,4.222996758,1.4545093,184.5,104.414,0.569285697,115582.07,832762.84,116092.3,-1.970363331,7.2043,0.31,6.89,12485.2,1,98 238 | 01-03-2016,2016M03,67.02185,4.205018686,-1.7978072,198.7,103.4255,0.652944603,116176.15,838612.43,115969.9,-1.978417982,6.8655,0.29,6.58,12572.9,1,99 239 | 01-04-2016,2016M04,66.46953,4.196743647,-0.8275039,175.5,103.9052,0.524160098,118772.3,844035.14,117354.3,-1.972996565,6.7844,0.23,6.55,12654.2,1,100 240 | 01-05-2016,2016M05,66.90673,4.20329956,0.6555913,182,103.7295,0.562220138,118768.96,849324.45,117698.2,-1.976317548,6.7276,0.27,6.46,12733.5,1,101 241 | 01-06-2016,2016M06,67.29686,4.209113579,0.5814019,183,104.2679,0.562522604,119571.64,854520.38,119310.2,-1.968813528,6.5842,0.27,6.31,12811.4,1,102 242 | 01-07-2016,2016M07,67.20763,4.207786783,-0.1326796,176,104.8556,0.517899829,120434.94,859883.06,120387.3,-1.966082358,6.4618,0.3,6.16,12891.8,1,103 243 | --------------------------------------------------------------------------------