Rolling Beta

3 messages Options
Embed this post
Permalink
ehcpieterse

Rolling Beta

Reply Threaded More More options
Print post
Permalink
Hi,

I have had a *very* rough attempt at estimating the beta between indices. I am convinced that someone on this list has had experience with this before, but my search yielded little information. I have daily log returns from 01/01/2000 on 13 different equity indices. I am just looking for an efficient way to produce a rolling beta for all index pairs.

I would appreciate any advice.

Thanks,
Eduard

CODE:

IndexLocal <- read.csv("IndexLocal.csv", header=TRUE, sep = ",")
MyLag <- 30
IndexDim <- dim(IndexLocal)
Results <- NULL
reg <- NULL
k <- 0

for (i in 2:14)
{
        for (j in 2:14)
        {
                        k <- k + 1
                        for (r in MyLag :IndexDim[1])
                        {
                                x. <- IndexLocal[(r-MyLag+1):r,i]
                                y. <- IndexLocal[(r-MyLag+1):r,j]
                                glm.linear<-coef(glm(y. ~ x.))
                                reg[r] <- glm.linear[2]
                        }
                                if (j >= i)
                                {
                                        Results <- cbind(Results,reg)
                                }
        }
}

Brian G. Peterson

Re: [R-sig-finance] Rolling Beta

Reply Threaded More More options
Print post
Permalink
see PerformanceAnalytics functions

CAPM.beta
and
chart.RollingRegression
and
charts.RollingRegression

Cheers,

  - Brian

ehxpieterse wrote:

> Hi,
>
> I have had a *very* rough attempt at estimating the beta between indices. I
> am convinced that someone on this list has had experience with this before,
> but my search yielded little information. I have daily log returns from
> 01/01/2000 on 13 different equity indices. I am just looking for an
> efficient way to produce a rolling beta for all index pairs.
>
> I would appreciate any advice.
>
> Thanks,
> Eduard
>
> CODE:
>
> IndexLocal <- read.csv("IndexLocal.csv", header=TRUE, sep = ",")
> MyLag <- 30
> IndexDim <- dim(IndexLocal)
> Results <- NULL
> reg <- NULL
> k <- 0
>
> for (i in 2:14)
> {
> for (j in 2:14)
> {
> k <- k + 1
> for (r in MyLag :IndexDim[1])
> {
> x. <- IndexLocal[(r-MyLag+1):r,i]
> y. <- IndexLocal[(r-MyLag+1):r,j]
> glm.linear<-coef(glm(y. ~ x.))
> reg[r] <- glm.linear[2]
> }
> if (j >= i)
> {
> Results <- cbind(Results,reg)
> }
> }
> }
>
>
>  


--
Brian G. Peterson
http://braverock.com/brian/
Ph: 773-459-4973
IM: bgpbraverock

_______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-sig-finance
-- Subscriber-posting only.
-- If you want to post, subscribe first.
Brian G. Peterson

Re: [R-sig-finance] Rolling Beta

Reply Threaded More More options
Print post
Permalink
As with most things in R, you can see the code by typing the function
name without the parentheses.

In the case of rolling beta, the important line is this:

rollapply(na.omit(merged.assets[,, drop = FALSE]),
                  width = width, FUN = function(x) lm(x[,1, drop = FALSE]
                  ~ x[, 2, drop = FALSE])$coefficients[2],
                  by = 1, by.column = FALSE, na.pad = na.pad,
                  align = "right")

Regards,

   - Brian


Eduard Pieterse (Macquarie Securities) wrote:

> Hi Brian,
>
> Chart.rollingRegression seems to be exactly what I'm after. How would I
> "disconnect" the chart output and be able to save/use the data behind
> it?
>
> I am still finding my feet with R and know what I need to do, but my R
> language knowledge is lacking somewhat.
>
> Thanks,
> Eduard
>
> -----Original Message-----
> From: Brian G. Peterson [mailto:[hidden email]]
> Sent: 19 October 2009 17:28
> To: Eduard Pieterse (Macquarie Securities)
> Cc: [hidden email]
> Subject: Re: [R-SIG-Finance] [R-sig-finance] Rolling Beta
>
> see PerformanceAnalytics functions
>
> CAPM.beta
> and
> chart.RollingRegression
> and
> charts.RollingRegression
>
> Cheers,
>
>   - Brian
>
> ehxpieterse wrote:
>  
>> Hi,
>>
>> I have had a *very* rough attempt at estimating the beta between
>> indices. I am convinced that someone on this list has had experience
>> with this before, but my search yielded little information. I have
>> daily log returns from 01/01/2000 on 13 different equity indices. I am
>>    
>
>  
>> just looking for an efficient way to produce a rolling beta for all
>>    
> index pairs.
>  
>> I would appreciate any advice.
>>
>> Thanks,
>> Eduard
>>
>> CODE:
>>
>> IndexLocal <- read.csv("IndexLocal.csv", header=TRUE, sep = ",") MyLag
>>    
>
>  
>> <- 30 IndexDim <- dim(IndexLocal) Results <- NULL reg <- NULL k <- 0
>>
>> for (i in 2:14)
>> {
>> for (j in 2:14)
>> {
>> k <- k + 1
>> for (r in MyLag :IndexDim[1])
>> {
>> x. <- IndexLocal[(r-MyLag+1):r,i]
>> y. <- IndexLocal[(r-MyLag+1):r,j]
>>    
>
>  
>> glm.linear<-coef(glm(y. ~ x.))
>> reg[r] <- glm.linear[2]
>> }
>> if (j >= i)
>> {
>> Results <- cbind(Results,reg)
>> }
>> }
>> }
>>
>>    

--
Brian G. Peterson
http://braverock.com/brian/
Ph: 773-459-4973
IM: bgpbraverock

_______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-sig-finance
-- Subscriber-posting only.
-- If you want to post, subscribe first.