[Returnanalytics-commits] r2484 - pkg/PerformanceAnalytics/sandbox/pulkit/week1/code

noreply at r-forge.r-project.org noreply at r-forge.r-project.org
Mon Jul 1 15:56:05 CEST 2013


Author: pulkit
Date: 2013-07-01 15:56:05 +0200 (Mon, 01 Jul 2013)
New Revision: 2484

Added:
   pkg/PerformanceAnalytics/sandbox/pulkit/week1/code/PSROpt.py
   pkg/PerformanceAnalytics/sandbox/pulkit/week1/code/data.csv
Modified:
   pkg/PerformanceAnalytics/sandbox/pulkit/week1/code/PSRopt.R
Log:
Verified PSR Optimization - added Python code with data

Added: pkg/PerformanceAnalytics/sandbox/pulkit/week1/code/PSROpt.py
===================================================================
--- pkg/PerformanceAnalytics/sandbox/pulkit/week1/code/PSROpt.py	                        (rev 0)
+++ pkg/PerformanceAnalytics/sandbox/pulkit/week1/code/PSROpt.py	2013-07-01 13:56:05 UTC (rev 2484)
@@ -0,0 +1,155 @@
+#!/usr/bin/env python
+# PSR class for Portfolio Optimization
+# On 20121128 by MLdP <lopezdeprado at lbl.gov>
+
+import numpy as np
+#-------------------------------------------
+#-------------------------------------------
+class PSR_Opt:
+    def __init__(self,series,seed,delta,maxIter,bounds=None):
+        # Construct the object
+        self.series,self.w,self.delta=series,seed,delta
+        self.z,self.d1Z=None,[None for i in range(series.shape[1])]
+        self.maxIter,self.iter,self.obs=maxIter,0,series.shape[0]
+        if len(bounds)==None or seed.shape[0]!=len(bounds):
+            self.bounds=[(0,1) for i in seed]
+        else:
+            self.bounds=bounds
+#-------------------------------------------
+    def optimize(self):
+        # Optimize weights
+        mean=[self.get_Moments(self.series[:,i],1) for i in range(self.series.shape[1])]
+        w=np.array(self.w)
+        # Compute derivatives
+        while True:
+            if self.iter==self.maxIter:break
+            # Compute gradient
+            d1Z,z=self.get_d1Zs(mean,w)
+            # Evaluate result
+            if z>self.z and self.checkBounds(w)==True:
+                # Store new local optimum
+                self.z,self.d1Z=z,d1Z
+                self.w=np.array(w)
+            # Find direction and normalize
+            self.iter+=1
+            w=self.stepSize(w,d1Z)
+            if w==None:return
+        return
+#-------------------------------------------
+    def checkBounds(self,w):
+        # Check that boundary conditions are satisfied
+        flag=True
+        for i in range(w.shape[0]):
+            if w[i,0]<self.bounds[i][0]:flag=False
+            if w[i,0]>self.bounds[i][1]:flag=False
+        return flag
+#-------------------------------------------
+    def stepSize(self,w,d1Z):
+        # Determine step size for next iteration
+        x={}
+        for i in range(len(d1Z)):
+            if d1Z[i]!=0:x[abs(d1Z[i])]=i
+        if len(x)==0:return
+        index=x[max(x)]
+        w[index,0]+=self.delta/d1Z[index]
+        w/=sum(w)
+        return w
+#-------------------------------------------
+    def get_d1Zs(self,mean,w):
+        # First order derivatives of Z
+        d1Z=[0 for i in range(self.series.shape[1])]
+        m=[0 for i in range(4)]
+        series=np.dot(self.series,w)[:,0]
+        m[0]=self.get_Moments(series,1)
+        for i in range(1,4):m[i]=self.get_Moments(series,i+1,m[0])
+        stats=self.get_Stats(m)
+        meanSR,sigmaSR=self.get_SR(stats,self.obs)
+        for i in range(self.series.shape[1]):
+            d1Z[i]=self.get_d1Z(stats,m,meanSR,sigmaSR,mean,w,i)
+        return d1Z,meanSR/sigmaSR
+#-------------------------------------------
+    def get_d1Z(self,stats,m,meanSR,sigmaSR,mean,w,index):
+        # First order derivatives of Z with respect to index
+        d1Mu=self.get_d1Mu(mean,index)
+        d1Sigma=self.get_d1Sigma(stats[1],mean,w,index)
+        d1Skew=self.get_d1Skew(d1Sigma,stats[1],mean,w,index,m[2])
+        d1Kurt=self.get_d1Kurt(d1Sigma,stats[1],mean,w,index,m[3])
+        d1meanSR=(d1Mu*stats[1]-d1Sigma*stats[0])/stats[1]**2
+        d1sigmaSR=(d1Kurt*meanSR**2+2*meanSR*d1meanSR*(stats[3]-1))/4
+        d1sigmaSR-=d1Skew*meanSR+d1meanSR*stats[2]
+        d1sigmaSR/=2*sigmaSR*(self.obs-1)
+        d1Z=(d1meanSR*sigmaSR-d1sigmaSR*meanSR)/sigmaSR**2
+        return d1Z
+#-------------------------------------------
+    def get_d1Mu(self,mean,index):
+        # First order derivative of Mu
+        return mean[index]
+#-------------------------------------------
+    def get_d1Sigma(self,sigma,mean,w,index):
+        # First order derivative of Sigma
+        return self.get_dnMoments(mean,w,2,1,index)/(2*sigma)
+#-------------------------------------------    
+    def get_d1Skew(self,d1Sigma,sigma,mean,w,index,m3):
+        # First order derivative of Skewness
+        d1Skew=self.get_dnMoments(mean,w,3,1,index)*sigma**3
+        d1Skew-=3*sigma**2*d1Sigma*m3
+        d1Skew/=sigma**6
+        return d1Skew
+#-------------------------------------------    
+    def get_d1Kurt(self,d1Sigma,sigma,mean,w,index,m4):
+        # First order derivative of Kurtosis
+        d1Kurt=self.get_dnMoments(mean,w,4,1,index)*sigma**4
+        d1Kurt-=4*sigma**3*d1Sigma*m4
+        d1Kurt/=sigma**8
+        return d1Kurt
+#-------------------------------------------    
+    def get_dnMoments(self,mean,w,mOrder,dOrder,index):
+        # Get dOrder derivative on mOrder mean-centered moment with respect to w index
+        x0,sum=1.,0
+        for i in range(dOrder):x0*=(mOrder-i)
+        for i in self.series:
+            x1,x2=0,(i[index]-mean[index])**dOrder
+            for j in range(len(i)):x1+=w[j,0]*(i[j]-mean[j])
+            sum+=x2*x1**(mOrder-dOrder)
+        return x0*sum/self.obs
+#-------------------------------------------    
+    def get_SR(self,stats,n):
+        # Set Z*
+        meanSR=stats[0]/stats[1]
+        sigmaSR=((1-meanSR*stats[2]+meanSR**2*(stats[3]-1)/4.)/(n-1))**.5
+        return meanSR,sigmaSR
+#-------------------------------------------
+    def get_Stats(self,m):
+        # Compute stats
+        return [m[0],m[1]**.5,m[2]/m[1]**(3/2.),m[3]/m[1]**2]
+#-------------------------------------------
+    def get_Moments(self,series,order,mean=0):
+        # Compute a moment
+        sum=0
+        for i in series:sum+=(i-mean)**order
+        return sum/float(self.obs)
+#-------------------------------------------
+#-------------------------------------------
+def main():
+    #1) Inputs (path to csv file with returns series)
+    path='data.csv'
+    maxIter=1000 # Maximum number of iterations
+    delta=.005 # Delta Z (attempted gain per interation)
+    
+    #2) Load data, set seed
+    series=np.genfromtxt(path,delimiter=',') # load as numpy array
+    seed=np.ones((series.shape[1],1)) # initialize seed
+    bounds=[(0,1) for i in seed] # min and max boundary per weight
+    
+    #3) Create class and solve
+    psrOpt=PSR_Opt(series,seed,delta,maxIter,bounds)
+    psrOpt.optimize()
+    
+    #4) Optimize and report optimal portfolio
+    print 'Maximized Z-value: '+str(psrOpt.z)
+    print '# of iterations: '+str(psrOpt.iter)
+    print 'PSR optimal portfolio:'
+    print str(psrOpt.w)
+#-------------------------------------------
+# Boilerplate
+if __name__=='__main__': main()

Modified: pkg/PerformanceAnalytics/sandbox/pulkit/week1/code/PSRopt.R
===================================================================
--- pkg/PerformanceAnalytics/sandbox/pulkit/week1/code/PSRopt.R	2013-07-01 12:52:03 UTC (rev 2483)
+++ pkg/PerformanceAnalytics/sandbox/pulkit/week1/code/PSRopt.R	2013-07-01 13:56:05 UTC (rev 2484)
@@ -30,45 +30,45 @@
 
 
     if(is.null(bounds)){
-        message("Bounds not given assumeing bounds to be (0,1) for each weight")
+        message("Bounds not given assuming bounds to be (0,1) for each weight")
         bounds = matrix(rep(c(0,1),columns),nrow = columns,byrow = TRUE)
     }
-
+    z = 0
+    iter = 0
+    w = rep(1,columns)
+    d1z = 0
     #Optimization Function
     optimize<-function(){
-        weights = rep(1,columns)/columns
-        d1z = 0
-        z = 0
-        iter = 0
+        weights = w
         mean = NULL   
         for(column in 1:columns){
-            mean = c(mean,mean(x[,column]))
+            mean = c(mean,get_Moments(x[,column],1))
         }
         while(TRUE){
             if(iter == MaxIter) break
             dZ = get_d1Zs(mean,weights)
-            if(dZ$z<z | checkBounds(weights)==FALSE){
-                break
+            print(dZ$z)
+            if(dZ$z>z && checkBounds(weights)==TRUE){
+                z = dZ$z
+                d1z = dZ$d1Z    
+                w = weights
            }
-           z = dZ$z
-            
-           d1z = dZ$d1Z
             iter = iter + 1 
-            weights_new = stepSize(weights,d1z)
-            if(is.null(weights_new)) break
-            weights = weights_new
+            weights = stepSize(weights,dZ$d1Z)
+            if(is.null(weights)) break
        }
-       return(weights)
+       return(w)
     }
     # To Check the bounds of the weights
     checkBounds<-function(weights){
         flag = TRUE
         for(i in 1:columns){
+                         
             if(weights[i] < bounds[i,1]) flag = FALSE
 
-            if(weights[i] > bounds[i,1]) flag = FALSE
+            if(weights[i] > bounds[i,2]) flag = FALSE
         }
-        return(TRUE)
+        return(flag)
     }
 
     #Calculate the step size to change the weights
@@ -76,7 +76,8 @@
         if(length(which(d1Z!=0)) == 0){
             return(NULL)        
         }
-        weights[which(abs(d1Z)==max(abs(d1Z)))] = weights[which(abs(d1Z)==max(abs(d1Z)))]+(delta/d1Z[which(abs(d1Z)==max(abs(d1Z)))])
+        index = which(abs(d1Z) ==max(abs(d1Z)))
+        weights[index] = weights[index]+delta/d1Z[index]
         weights = weights/sum(weights)
         return(weights) 
 
@@ -85,13 +86,19 @@
     get_d1Zs<-function(mean,weights){
         d1Z = NULL
         m = NULL
-        x_portfolio = Return.portfolio(x,weights)
-        mu = mean(x_portfolio)
-        sd = StdDev(x_portfolio)
-        sk = skewness(x_portfolio)
-        kr = kurtosis(x_portfolio)
-        stats = c(mu,sd,sk,kr)
-        m = c(stats[1],stats[2]^2,stats[3]*(stats[2]^3),stats[4]*(stats[2]^4))
+        x_portfolio = x%*%weights
+
+        m[1] = get_Moments(x_portfolio,1)
+        for(i in 2:4){
+            m = c(m,get_Moments(x_portfolio,i,m[1]))
+        }
+        stats = get_Stats(m)
+        #mu = mean(x_portfolio)
+        #sd = StdDev(x_portfolio)
+        #sk = skewness(x_portfolio)
+        #kr = kurtosis(x_portfolio)
+        #stats = c(mu,sd,sk,kr)
+        #m = c(stats[1],stats[2]^2,stats[3]*(stats[2]^3),stats[4]*(stats[2]^4))
         SR = get_SR(stats,n)
         meanSR = SR$meanSR
         sigmaSR = SR$sigmaSR
@@ -107,13 +114,13 @@
     get_d1Z<-function(stats,m,meanSR,sigmaSR,mean,weights,index){
         d1Mu = get_d1Mu(mean,index)
         d1Sigma = get_d1Sigma(stats[2],mean,weights,index)
-        d1Skew = get_d1Skew(d1Sigma,stats[2],mean,weights,index,m[2])
-        d1Kurt = get_d1Kurt(d1Sigma,stats[2],mean,weights,index,m[3])
+        d1Skew = get_d1Skew(d1Sigma,stats[2],mean,weights,index,m[3])
+        d1Kurt = get_d1Kurt(d1Sigma,stats[2],mean,weights,index,m[4])
         d1meanSR = (d1Mu*stats[2]-d1Sigma*stats[1])/stats[2]^2
         d1sigmaSR = (d1Kurt * meanSR^2+2*meanSR*d1meanSR*(stats[4]-1))/4
-        d1sigmaSR = d1sigmaSR - d1Skew*meanSR+d1meanSR*stats[3]    
+        d1sigmaSR = d1sigmaSR-(d1Skew*meanSR+d1meanSR*stats[3])  
         d1sigmaSR = d1sigmaSR/(2*sigmaSR*(n-1))
-        d1Z = (d1meanSR*sigmaSR-d1sigmaSR*(meanSR-refSR))/sigmaSR^2
+        d1Z = (d1meanSR*sigmaSR-d1sigmaSR*meanSR)/sigmaSR^2
         return(d1Z)
     }
 
@@ -164,6 +171,16 @@
         SR<-list("meanSR"=meanSR,"sigmaSR"=sigmaSR)
         return(SR)
     }
+    get_Stats<-function(m){
+        return(c(m[1],m[2]^0.5,m[3]/(m[2]^1.5),m[4]/(m[2]^2)))
+    }
+    get_Moments<-function(series,order,mean = 0){
+        sum = 0
+        for(i in series){
+            sum = sum + (i-mean)^order
+        }
+        return(sum/n)
+    }
 
     weights = optimize()
     result = matrix(weights,nrow = columns)

Added: pkg/PerformanceAnalytics/sandbox/pulkit/week1/code/data.csv
===================================================================
--- pkg/PerformanceAnalytics/sandbox/pulkit/week1/code/data.csv	                        (rev 0)
+++ pkg/PerformanceAnalytics/sandbox/pulkit/week1/code/data.csv	2013-07-01 13:56:05 UTC (rev 2484)
@@ -0,0 +1,152 @@
+0.0119,0.0393,0.0178,0.0791,0.0189,0.0213,0.0191,0.0573,0.0281,0.015,0.018,-0.0166,0.0317
+0.0123,0.0298,0.0122,0.0525,0.0101,0.0084,0.0122,0.0175,-6e-04,0.0034,0.0118,0.0426,0.0106
+0.0078,-0.0021,-0.0012,-0.012,0.0016,-0.0023,0.0109,-0.0119,-0.0084,0.006,0.001,0.0778,-0.0077
+0.0086,-0.017,0.003,0.0119,0.0119,-5e-04,0.013,0.0172,0.0084,-1e-04,0.0122,-0.0129,9e-04
+0.0156,-0.0015,0.0233,0.0315,0.0189,0.0346,0.0118,0.0108,0.0394,0.0197,0.0173,-0.0737,0.0275
+0.0212,0.0085,0.0217,0.0581,0.0165,0.0258,0.0108,0.0218,0.0223,0.0231,0.0198,-0.0065,0.0225
+0.0193,0.0591,0.0234,0.056,0.0247,0.0307,0.0095,0.0738,0.0454,0.02,0.0181,-0.0429,0.0435
+0.0134,-0.0473,0.0147,-0.0066,0.0017,0.0071,0.0087,-0.018,0.0107,0.0079,0.0103,-0.0072,0.0051
+0.0122,0.0198,0.035,0.0229,0.0202,0.0329,0.0119,0.029,0.0429,0.0197,0.0183,-0.0155,0.0334
+0.01,-0.0098,-0.0064,-0.0572,0.0095,0.0061,-0.0032,-0.0142,0.001,0.0094,0.0079,0.0572,-0.0099
+0,0.0133,0.0054,-0.0378,0.0041,0.0134,0.0053,0.0106,-0.0026,0.0223,0.0111,0.0217,-0.0034
+0.0068,0.0286,0.0073,0.016,0.0066,0.0154,0.0079,0.0264,0.0104,0.0158,0.0082,0.0161,0.0089
+0.0145,0.0104,0.0095,-0.0429,0.006,0.0055,-0.0026,-0.005,0.0013,0.0055,0.0132,0.0014,-0.0036
+0.0146,-0.0065,0.0227,0.0339,0.0135,0.0294,0.0098,0.0128,0.0342,0.0212,0.013,0.0155,0.0256
+0.0144,0.0122,0.0252,0.0318,0.0179,0.0263,0.0128,0.057,0.0336,0.0164,0.0145,0.0637,0.0373
+0.0126,-0.0296,0.0165,0.0041,0.0067,0.0104,0.0075,0.0034,0.012,0.0139,0.0145,0.0657,0.0125
+0.0056,0.0193,6e-04,-0.0825,0.008,-0.0083,0.004,0.0095,-0.0087,-9e-04,0.0053,0.1437,-0.0072
+-6e-04,0.0051,-0.0047,-0.0422,0.0108,2e-04,-0.008,0.012,0.0167,0.0072,0.0026,-0.0053,0.0021
+0.006,-0.001,-0.0069,0.0019,0.0012,-0.0037,0.0106,0.0058,-6e-04,7e-04,0.0011,0.0343,-7e-04
+-0.0319,0.0691,-0.0836,-0.1922,-0.0107,-0.0886,-0.0143,-0.0263,-0.0552,-0.0544,-0.0341,0.2463,-0.0616
+-0.0196,0.0454,-0.0215,-0.0395,0.0061,-0.011,-0.0362,-0.0059,0.0206,0.0076,5e-04,-0.0376,-0.0037
+-0.0214,4e-04,-0.0029,0.014,0.0052,0.0091,-0.0801,-0.0223,0.0169,0.0159,-0.014,-0.1077,-2e-04
+0.0269,-0.0089,0.0164,0.043,0.0158,0.0244,0.0052,0.0194,0.0291,0.022,0.0198,-0.0756,0.022
+0.0113,0.0221,0.0108,-0.0098,0.0209,0.0219,0.012,0.0233,0.0408,0.0224,0.0164,-0.0531,0.0222
+0.0219,-0.0167,0.0181,-0.012,0.0101,0.0201,0.0158,0.0086,0.0258,0.0112,0.0195,-0.0665,0.0202
+0.0082,0.0197,-0.0021,0.0102,0.0023,-0.0042,0.0208,-0.0111,-0.0169,0.0036,0.0085,0.0833,-0.0063
+0.0136,-0.0065,0.0159,0.0585,0.0033,0.0193,0.016,0.0024,0.0229,0.0133,0.0116,-0.0154,0.0213
+0.0243,0.021,0.0418,0.063,0.0107,0.0429,0.0106,0.0329,0.0312,0.0218,0.0238,-0.0375,0.04
+0.0166,-0.015,0.0207,0.0061,0.0089,0.0215,0.0072,-0.0055,0.0095,0.021,0.0146,9e-04,0.0119
+0.0102,0.0234,0.0273,0.0654,0.0168,0.0297,0.0088,0.0214,0.0315,0.0222,0.0148,-0.0412,0.0282
+0.0101,-0.0051,0.0084,-0.0061,0.0135,0.0096,0.0051,-0.0018,0.0177,0.0147,0.011,0.0092,0.0088
+0.0048,-0.0027,0.002,-0.0147,0.0095,-0.0027,-0.0028,-0.0061,0.0022,0.005,0.0062,0.0468,0.0028
+0.0096,0.0064,-0.0041,-0.0069,0.0095,0.009,0.0092,-2e-04,0.0113,0.0116,0.0105,0.0401,0.0052
+0.0045,-0.0354,0.0027,0.0288,0.0066,0.0054,0.0087,0.0073,0.0212,0.0096,0.007,-0.013,0.013
+0.0124,0.0166,0.022,0.0692,0.0133,0.0284,0.0106,0.0405,0.0481,0.0237,0.0137,-0.1239,0.0483
+0.014,0.0142,0.03,0.123,0.0198,0.0286,0.0097,0.0612,0.0745,0.009,0.0183,-0.1137,0.0622
+0.0227,0.0128,0.0088,0.0077,0.0075,0.0088,0.0041,0.0021,0.0075,0.0143,0.0173,0.0427,0.0169
+0.0267,-0.0022,0.0421,0.0528,0.0253,0.0346,0.0097,0.0408,0.0699,0.0239,0.0185,-0.134,0.0666
+0.0243,-0.0138,0.0103,0.0318,0.0134,0.0069,-0.0061,-0.0104,6e-04,0.0131,0.0163,-0.023,0.0039
+0.0223,-0.0241,-0.0101,-0.0541,0.0168,-0.0059,-6e-04,-0.0304,-0.0201,0.0188,0.0092,0.1028,-0.0269
+0.0149,0.0114,-0.0132,-0.0433,0.0062,-0.0034,0.0107,-0.007,-0.0097,0.0146,0.008,0.0704,-0.0122
+0.0179,-0.0124,0.0203,0.0334,0.0171,0.0268,0.0058,0.0154,0.0349,0.0167,0.0176,-0.1107,0.0311
+0.0093,-0.0131,0.0064,0.0025,0.0063,0.0057,0.0018,0.0037,6e-04,0.0116,0.0084,0.0553,-0.0022
+0.0162,0.0189,0.014,0.0368,0.021,0.0173,0.0107,0.0248,0.0345,0.0157,0.0157,-0.1135,0.0267
+0.0141,-0.0208,-0.0019,-0.0462,0.0058,0.0048,0.0076,-0.0149,-0.0016,0.0137,0.0075,0.1204,-0.0069
+0.0052,0.0075,-0.0073,-0.0256,0.004,-0.0068,6e-04,-0.0024,-0.0084,0.0026,-4e-04,0.0784,-0.0104
+-0.0081,0.0425,-0.0209,-0.0385,0.0045,-0.0136,0.0066,0.0125,-0.0153,0.0102,6e-04,0.1657,-0.0205
+-2e-04,0.0682,1e-04,0.0116,0.016,0.0127,0.0048,0.0472,0.0248,0.0125,0.0075,0.0063,0.0133
+0.0344,0.0025,0.0308,0.0586,0.0075,0.0298,0.0163,0.0214,0.0165,0.0111,0.0333,-0.0271,0.0223
+0.0182,-0.0016,0.01,-0.0221,0.012,0.0045,0.0054,-0.0072,-0.0264,0.0054,0.003,0.1021,-0.0089
+0.0162,0.0438,-0.0037,-0.0175,0.0108,-0.0042,0.0051,0.0038,-0.0199,-0.0061,-0.0011,0.062,-0.0068
+0.0157,-0.0362,0.0048,0.0114,0.0075,0.011,0.0094,0.0049,0.0246,0.0058,0.0174,-0.0991,0.0104
+0.0033,0.0081,0.0235,0.0278,0.0077,0.0185,0.0068,0.0032,0.0043,0.0161,0.0141,-0.013,0.008
+0.0012,-0.0077,0.036,0.016,0.0017,0.0063,0.0017,0.0017,0.0019,-0.0087,0.0019,0.011,0.0013
+0.0091,-0.004,0.0073,-0.0286,0.0031,0.0049,0.0054,-0.004,-0.0144,0.0079,0.001,0.0353,-0.004
+0.0142,0.0153,0.0106,0.003,0.0094,0.009,0.0105,6e-04,-0.0096,0.0099,-0.0031,0.0752,0.0019
+0.0078,0.0246,-0.0014,-0.0425,0.0023,-0.0254,-0.0013,-0.007,-0.0348,-0.0267,-0.0221,0.0941,-0.0142
+0.0117,0.0336,0.0103,0.0278,0.0058,0.0148,0.0134,0.0208,0.0099,0.0085,0.0164,-0.0298,0.0095
+0.008,-0.0543,0.0086,0.0483,0.0055,0.0105,-0.0024,0.0021,0.02,0.0014,0.0136,-0.0655,0.0058
+-0.0094,0.0148,0.0015,0.0421,0.0056,0.0107,0.0053,0.0138,0.018,0.0045,0.0097,-0.0251,0.0099
+0.0148,-0.0072,0.0186,0.0273,0.0065,0.0078,0.0086,0.0069,-0.0037,0.0077,0.0097,0.0343,0.003
+-0.0049,-0.0202,-0.0033,0.0181,-7e-04,-0.0071,0.0056,-0.0035,-0.0123,-0.0044,-0.0011,0.039,-0.0015
+0.0053,9e-04,0.0052,0.0331,0.0047,0.0153,0.0045,0.0064,0.0155,0.0073,0.0145,-0.0446,0.009
+0.0096,-0.0104,0.0139,0.0144,0.0076,0.0046,0.0113,0.0098,-0.0042,-0.0013,0.007,0.0483,0.0052
+0.0033,0.027,0.0091,1e-04,0.0053,1e-04,0.0099,0.0123,-0.0034,0,0.0031,0.0346,0.005
+4e-04,0.0655,-0.0117,-0.0292,0.0022,-0.0283,0.0069,-0.0022,-0.0249,-0.017,-0.0107,0.0548,-0.0095
+-0.0159,0.0413,-0.0133,-0.0309,-0.0013,-0.03,0.0057,-0.0078,-0.0389,-0.0174,-0.0185,0.0644,-0.014
+0.005,0.022,9e-04,0.0119,0.0069,0.006,0.0097,0.0063,0.0041,0.0061,0.0058,0.0015,0.0037
+0.0146,0.0284,-0.0044,-0.0252,0.0015,-0.007,-0.0033,0.0054,-0.016,-0.0028,-0.011,0.0731,-0.0033
+0.0104,-0.0376,-0.0031,0.0154,0.0016,0.0031,-0.0063,-0.0086,0.0123,0.0032,0.0084,-0.0405,-0.0031
+0.0251,-0.0164,0.0239,0.019,0.0025,0.0216,0.0054,0.0047,0.0224,0.0054,0.0185,-0.0547,0.0106
+0.0157,0.0489,0.0222,0.0048,0.0094,0.0044,0.0153,0.0192,-0.0149,0.0046,0.0023,0.0443,0.0077
+0.0283,0.0441,0.0243,0.0012,0.0083,0.0154,0.0106,0.0182,5e-04,0.004,0.0067,0.0162,0.0072
+0.0133,0.0402,0.0092,0.0084,0.0024,0.0026,0.0079,0.0166,-0.0037,0.0018,-4e-04,0.013,0.0031
+0.0089,-0.0445,0.0113,0.0019,0.0015,0.0083,0.0019,-0.0122,0.002,-7e-04,0.0049,-0.0075,-4e-04
+0.015,0.0065,0.0345,0.045,0.0031,0.0272,0.0091,0.0117,0.0298,0.0099,0.0186,-0.0656,0.0134
+0.0136,0.049,0.027,0.0433,0.0107,0.0301,0.0207,0.0397,0.0362,0.0154,0.0212,-0.0499,0.0205
+-0.0058,-0.0192,0.0267,0.0268,0.0034,0.0181,0.0044,0.0056,0.0128,0.0048,0.0071,-0.0162,0.0068
+-0.0072,-0.0171,0.0117,0.0104,-6e-04,0.0119,-0.0092,-0.0035,0.0118,0.0053,0.0041,-0.0361,0.0025
+-0.0087,0.0078,0.0137,0.0374,0.0031,0.0133,0.0043,0.0202,0.0179,0.007,0.0058,-0.0354,0.0078
+0.0171,-0.0019,0.0242,0.0264,0.0078,0.0133,0.0105,0.0215,0.0094,0.0077,0.0086,0.0136,0.0121
+0.0146,0.0104,0.0267,0.0259,0.0115,0.0191,0.0035,0.0111,0.0299,0.0111,0.0159,-0.0656,0.0152
+0.0092,0.0018,0.0154,0.0096,0.0046,0.0116,0.0069,0.0031,0.013,0.0044,0.0102,-0.0136,0.007
+0.0054,0.0381,0.0198,0.0403,0.0054,0.0172,0.0101,0.0293,0.0191,0.0098,0.0127,-0.0178,0.0139
+0.0119,0.0199,0.0301,0.0251,0.0109,0.0234,0.0092,0.0117,0.0192,0.0097,0.0146,-0.009,0.0156
+0.0017,0.0529,0.0075,0.0253,0.0063,0.0113,0.0084,0.015,0.0123,0.0051,0.0057,0.0018,0.0111
+0.0061,-0.0051,0.0046,0.0172,0.0032,0.0016,3e-04,0.0064,0.0041,0.0017,0.0038,-0.0148,0.0043
+0.002,-0.0532,0.0093,-0.0252,-0.0082,2e-04,0.0062,-0.0178,-0.0165,-0.0039,-0.0045,0.0384,-0.0068
+-0.0128,-0.0118,-0.001,-0.0181,0.0024,-0.0023,0.004,-0.0081,-0.0035,0,-0.0037,-0.0024,-0.0082
+-0.0106,-0.0316,0.0202,0.002,0.0042,0.0113,0.0055,-0.0019,0.0091,0.0017,0.0022,-0.0051,0.0034
+0.0013,-0.0119,0.0019,-0.0027,6e-04,-0.0082,0.0062,-0.0014,-0.0154,-0.0092,7e-04,0.0638,-0.0049
+0.004,-0.0084,0.0088,0.0133,-9e-04,0.0035,0.0036,-0.0039,-0.0022,0.0011,0.0031,0.0126,-0.001
+-0.0017,0.022,0.0104,0.028,0.0085,0.0103,0.0012,8e-04,0.021,0.0042,0.0052,-0.0216,0.0099
+-0.0044,0.0358,0.0143,0.0185,-5e-04,0.0124,0.0028,0.0138,0.0074,0.0074,0.004,-0.0092,0.0068
+0.0081,0.0475,0.0337,0.0328,0.014,0.0306,0.0075,0.028,0.0308,0.0164,0.0149,-0.0574,0.0244
+0.0056,0,0.0266,0.0201,0.0058,0.0244,0.006,0.0033,0.0178,0.0133,0.0099,-0.0391,0.0145
+-0.0096,-0.0438,0.0037,0.0143,0.0081,4e-04,0.0044,-0.0047,-0.0017,0,0.0012,0.0387,6e-04
+-0.0058,5e-04,0.0134,0.0346,0.008,0.0144,0.0085,0.0171,0.021,0.0065,0.0081,0.0118,0.0136
+-0.014,-6e-04,0.0032,-0.0197,0.0019,-4e-04,0.0024,-0.0027,-0.0096,0.0032,-0.0042,0.0244,-0.0044
+-0.0316,-0.0354,-0.0052,-0.0049,-0.003,-0.0128,-3e-04,-0.008,-0.0184,-0.0105,-0.0108,0.0393,-0.0141
+-0.0133,0.0232,6e-04,0.0072,0.0047,0.0065,-0.001,0.0088,0.0115,0.0095,-2e-04,-0.0475,0.0018
+0.0107,0.026,0.0133,0.016,0.0081,0.0133,0.001,0.0116,0.0195,0.0085,0.0095,-0.0032,0.0131
+0.0164,-0.0013,0.0173,0.0257,0.0078,0.0215,0.0081,0.0119,0.0265,0.0115,0.0149,-0.0242,0.0134
+0.0066,0.01,0.0124,0.0152,0.0062,0.0092,0.0036,0.0083,0.0097,0.0061,0.0053,0.0259,0.0079
+0.0142,0.0079,0.0112,0.0402,0.0087,0.01,0.0062,0.0269,0.0222,0.0035,0.0122,0.0198,0.0147
+-0.0015,-0.0092,-0.0032,-0.023,1e-04,-0.0173,0.0057,-0.0074,-0.0174,-0.0145,-0.0038,0.0233,-0.0149
+4e-04,0.0379,0.01,0.0279,0.0061,0.0125,0.0015,0.0164,0.0211,0.0112,0.0067,-0.03,0.016
+0.0092,-0.0153,0.0122,0.0284,0.0068,0.0142,0.0054,0.0135,0.0249,0.0138,0.0126,-0.0035,0.0191
+0.025,0.0174,0.0253,0.0526,0.0115,0.0341,0.0093,0.0258,0.0381,0.0272,0.0238,-0.0288,0.0286
+0.0116,-0.0186,0.0065,0.0161,0.0046,0.0051,0.0041,2e-04,0.0016,0.0104,0.0073,0.0064,0.0037
+0.0107,0.0284,0.0172,0.0122,0.0098,0.0185,0.0055,0.0094,0.0238,0.0144,0.0157,-0.0139,0.0164
+0.0064,0.0387,0.0193,0.0365,0.0102,0.0164,0.0121,0.0238,0.0172,0.0119,0.0126,-0.0012,0.0171
+0.0091,-0.0146,0.0086,-0.0389,2e-04,8e-04,0.0059,-0.0155,-0.0248,9e-04,-0.0025,0.0246,-0.0133
+0.0012,-0.0142,-0.0015,-0.0097,0.0063,0.0012,0.0036,-0.0015,-0.0062,0.0087,0.0021,0.0118,-0.0028
+0.0066,-0.0216,9e-04,0.0067,0.0051,-0.0011,0.0064,6e-04,-0.0031,0.0058,0.0017,0.0173,-5e-04
+0.0098,0.002,0.0099,0.0133,-9e-04,0.0112,0.0037,-0.0039,0.0114,0.0053,0.0092,-0.0156,0.0066
+0.0093,-0.0055,0.0033,0.0011,9e-04,0.0035,0.0014,-0.0067,5e-04,0.0041,0.004,-0.0236,-3e-04
+0.0054,0.0102,0.0194,0.0257,0.0065,0.0206,0.0067,0.0097,0.0194,0.0132,0.0132,-0.038,0.0163
+0.0092,0.0226,0.0179,0.0323,0.0075,0.0182,0.006,0.0199,0.02,0.0142,0.0129,-0.0268,0.0185
+0.0127,0.0146,0.0165,0.0291,0.0107,0.0168,0.0072,0.0116,0.0153,0.0133,0.0128,0.0039,0.0175
+0.013,0.0113,0.015,0.0079,0.0083,0.0201,0.0069,0.0061,0.0121,0.0191,0.0135,-0.0107,0.0121
+0.0117,-0.0144,0.0145,0.01,0.0051,0.0207,0.0106,0.0018,0.0082,0.0255,0.0114,0.0028,0.0096
+0.006,-0.0141,0.0108,0.0185,0.0101,0.0146,0.006,0.0027,0.0115,0.0063,0.0081,-0.0051,0.0096
+0.0026,0.0241,0.0164,0.0255,0.0089,0.0197,0.0071,0.0152,0.0198,0.016,0.0134,-0.0265,0.0163
+0.011,0.023,0.018,0.027,0.0121,0.0213,0.0055,0.0192,0.0224,0.0171,0.0156,-0.0199,0.0204
+0.0011,0.0229,0.0027,0.0236,0.0077,-7e-04,0.0048,0.0107,0.0077,-0.0053,0.01,0.0236,0.0082
+-0.0053,-0.0122,-0.0056,0.0275,0.0051,-0.0032,7e-04,0.0116,9e-04,-0.0054,4e-04,0.0486,0.0041
+-0.0145,-0.028,-0.0118,-0.0274,-0.0094,-0.0144,-0.0048,-0.0116,-0.016,1e-04,-0.0077,0.0092,-0.0222
+0.0161,0.0469,0.0095,0.0428,0.0123,0.0134,0.0164,0.033,0.0256,0.0131,0.0153,-0.0207,0.0199
+0.0177,0.028,0.0175,0.0485,0.0168,0.0214,0.0114,0.0304,0.0281,0.0191,0.02,-0.0026,0.0303
+-0.0131,-0.0016,-0.0169,-0.0237,-0.0018,-0.0202,-0.0094,-0.0063,-0.0225,-0.0149,-0.0112,0.0719,-0.0148
+-0.0077,0.0117,2e-04,0.013,0.0054,7e-04,0.0036,0.0104,0.0043,-0.0025,0.0022,0.0056,0.004
+-9e-04,0.0255,-0.0233,-0.0503,-0.0112,-0.0271,-0.0012,-0.001,-0.04,-0.0126,-0.0118,0.0556,-0.0272
+-0.0083,0.062,0.0014,0.028,0.012,0.0084,-0.0049,0.0312,0.014,0.006,0.0064,0.03,0.0142
+-0.0317,-0.0056,-0.0126,-0.0379,-0.0049,-0.0168,-0.0306,-0.0169,-0.0236,-0.0045,-0.0162,0.0192,-0.0262
+0.0076,-0.0078,0.0088,0.019,0.0059,0.0118,0.0187,0.0078,0.0223,0.0149,0.013,-0.0461,0.0097
+0.0107,0.0162,0.0137,0.0163,0.0126,0.0176,0.0103,0.0114,0.0227,0.0136,0.0159,-0.0142,0.0172
+-0.0081,0.033,-0.0031,-0.0274,0.0156,-0.0113,-0.0027,0.003,-0.0164,-0.0109,-0.0084,0.0751,-0.0068
+-0.0188,-0.0333,-0.0182,-0.033,-0.01,-0.0166,-0.0023,-0.0213,-0.0261,0.0011,-0.0125,0.0072,-0.0264
+-0.0066,-0.0114,-0.0072,-0.0336,-0.0135,-0.0025,-3e-04,-0.0133,-0.0146,0.0051,-0.0023,-0.0215,-0.0156
+-0.1027,0.001,-0.0518,-0.0982,-0.0285,-0.0627,-0.0506,-0.0313,-0.0675,-0.0276,-0.0538,0.0378,-0.0618
+-0.1237,0.0345,-0.0775,-0.1331,-0.0044,-0.0625,-0.0867,-0.0157,-0.0629,-0.0245,-0.0692,0.117,-0.06
+-0.0276,0.0214,-0.0435,-0.0391,-0.0587,-0.0301,-0.0308,0.0033,-0.0188,6e-04,-0.0209,0.0428,-0.0192
+0.0177,0.014,-0.0197,-0.001,5e-04,-0.0071,-0.0035,0.0118,0.0081,0.0162,0.0031,-0.0146,-0.0119
+0.0491,-0.0016,0.0082,-0.0112,0.0079,0.0132,0.0112,0.0029,-0.0017,0.0056,0.01,0.0282,0.006
+0.0164,-0.0031,-0.0122,-0.0133,-0.0046,-0.0091,0.0065,-0.0055,-0.0161,6e-04,-0.0016,0.0328,-0.0037
+0.0235,-0.018,0.0022,0.035,0.0021,0.0117,0.0057,0.0048,0.0188,0.0125,0.01,-0.0462,8e-04
+0.05,-0.014,0.0387,0.0663,-0.0012,0.0337,0.0221,0.0127,0.0375,0.0081,0.0342,-0.082,0.0092
+0.0578,0.0213,0.0504,0.0884,0.0146,0.0442,0.0365,0.0348,0.0516,0.0107,0.0392,8e-04,0.0312
+0.0241,-0.0147,0.0198,0.0013,0.0036,0.0123,0.0126,-0.0076,9e-04,0.0104,0.0101,-0.0094,0.0024
+0.0611,-0.0012,0.0311,0.0451,0.0042,0.0291,0.0322,0.0166,0.0277,0.0068,0.026,-0.0596,0.0153
+0.0315,0.0054,0.0244,0.0166,0.007,0.0207,0.0202,0.005,0.0157,0.0102,0.0162,-0.0165,0.0113



More information about the Returnanalytics-commits mailing list