# [R-SIG-Finance] Rolling functions on matrices

Brian G. Peterson brian at braverock.com
Mon Sep 24 19:06:13 CEST 2007

```There are many examples on the archives of this list for using the
rollapply function.  Perhaps you could start there.

Regards,

- Brian

Murali Menon wrote:
> Folks,
>
> I'm a bit stymied by the following problem. I have a matrix of returns for various equities, and a matrix of implied vols for these equities. So, e.g.:
>
> returns <- matrix(runif(40), ncol = 4)
> colnames(returns) <- c("IBM", "MOT", "NOK", "INTC")
> vols <- matrix(rnorm(40, 7, 1), ncol = 4)
> colnames(vols) <- colnames(returns)
>
> #I need weighted MA over lags of 2, 16, 32
>
> lagvals <- c(2, 16, 32)
> coeff <- sapply(lagvals , function(n) c(rep(0, max(lagvals ) - n), 1 : n))
> colnames(coeff) <- as.character(paste("MA", lagvals , sep = ""))
>
> Now I'd like to compute weighted returns for each equity i and each lag index j such that at each point in time (t), I have:
>
> wtRet[t, i, j] = returns[t, i] / vols[t, i] * average.vol.over.past.lag.days
>
> So for lag = 32, i would compute average.vol.over.past.lag.days = mean(vols[(t - 32 + 1) : t, i]),
>
> and so on for the other lags.
>
> And then, finally, do a rolling weighted mean where the weighting for each lag is given by the coeff matrix above.
>
> I hope this is not incomprehensible!
>
> Any suggestions? I'm getting lost with all the indexation required between equity and lags, and
> indeed the rolling function to apply.
>
> Also, for my real application, the matrices are biggish (10-20 years), so if I can minimise any computational time, that would be an added bonus.
>
> Thanks very much,
> Murali
> _________________________________________________________________
>
>  Hotmail®. NOW with 5GB storage.
>
> ration_HM_mini_5G_0907
> _______________________________________________
> R-SIG-Finance at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> -- Subscriber-posting only.
> -- If you want to post, subscribe first.

```