title: Rolling Standard Deviation in a Matrix in R
body: <p>Bellow is a stock daily returns matrix example (<strong>ret_matriz</strong>)</p>
  
  <pre><code>      IBOV        PETR4        VALE5        ITUB4        BBDC4        PETR3    
  [1,] -0.040630825 -0.027795652 -0.052643733 -0.053488685 -0.048455772 -0.061668282
  [2,] -0.030463489 -0.031010237 -0.047439725 -0.040229625 -0.030552275 -0.010409016
  [3,] -0.022668170 -0.027012078 -0.022668170 -0.050372843 -0.080732363  0.005218051
  [4,] -0.057468428 -0.074922051 -0.068414670 -0.044130126 -0.069032911 -0.057468428
  [5,]  0.011897277 -0.004705891  0.035489885 -0.005934736 -0.006024115 -0.055017693
  [6,]  0.020190656  0.038339130  0.009715552  0.014771317  0.023881732  0.011714308
  [7,] -0.007047191  0.004529286  0.004135085  0.017442303 -0.005917177 -0.007047191
  [8,] -0.022650593 -0.029481336 -0.019445057 -0.017442303 -0.011940440 -0.046076458
  [9,]  0.033137223  0.035274722  0.038519205  0.060452104  0.017857617  0.046076458
  </code></pre>
  
  <p>For example purposes consider a 5 day moving window, i want as a result a new matrix as described bellow :</p>
  
  <pre><code>     IBOV        PETR4    ...       
  [1,] 0           0        ...
  [2,] 0           0        ... 
  [3,] 0           0        ...
  [4,] 0           0        ...
  [5,] sd[1:5,1]  sd[1:5,2] ...
  [6,] sd[2:6,1]  sd[2:6,2] ...
  [7,] sd[3:7,1]  sd[3:7,2] ...
  [8,] sd[4:8,1]  sd[4:8,2] ... 
  [9,] sd[5:9,1]  sd[5:9,2] ...
  </code></pre>
  
  <p>Using the zoo package i was able to reach the result but it is a little bit slow, any ideias on how to improve the speed to reach the same result ?</p>
  
  <p>zoo code bellow :</p>
  
  <pre><code>require(zoo)
  
  apply(ret_matriz, 2, function(x) rollapply(x, width = 5, FUN = sd, fill = 0, align = 'r')) 
  </code></pre>