library(tseries)

sie <- get.hist.quote(instrument="SIE.DE", start="2010-01-01", quote="AdjClose")
vow <- get.hist.quote(instrument="VOW.DE", start="2010-01-01", quote="AdjClose")
lin <- get.hist.quote(instrument="LIN.DE", start="2010-01-01", quote="AdjClose")
dax <- get.hist.quote(instrument="^GDAXI", start="2010-01-01", quote="AdjClose")

returns.table <- diff(log(na.omit(merge(dax, lin, sie, vow))))

# My function to get the betas pval is:

B <- function(share,bench){
beta <- summary(lm(share~bench))$coef[2]
pval <- summary(lm(share~bench))$coef[8]
coefs <- t(as.matrix(c(beta, pval), ncol=2, byrow=TRUE))
coefs
}

# The function B works fine:
B(returns.table[,2], returns.table[,1])

# this loop should work
result <- matrix(NA, length(names(returns.table))-1, 2)
for(i in 2:4){
result[i-1,] <- B(returns.table[,i],returns.table[,1])
}
result

On Sunday, March 13, 2011 at 8:03 AM, herr dittmann wrote: 
> Dear useRs,
> 
> I am stuck with a piece of code and hope you could give me some pointers.
> 
> My aim is to calculate the lm-regression coefficients of individual stocks 
> against an index. I am interested in both the coefficient and the pval. While 
> I could do this manually for a select hand full, I hope to scale this up say 
> for 30+ stocks (DAX-30, FTSE-100 etc.) to eventually have a matrix of 
> coefficients and p-values for each individual stock.
> 
> First, let's get share prices:
> 
> library(tseries)
> 
> sie <- get.hist.quote(instrument="SIE.DE", start="2010-01-01", 
> quote="AdjClose")
> vow <- get.hist.quote(instrument="VOW.DE", start="2010-01-01", 
> quote="AdjClose")
> lin <- get.hist.quote(instrument="LIN.DE", start="2010-01-01", 
> quote="AdjClose")
> dax <- get.hist.quote(instrument="^GDAXI", start="2010-01-01", 
> quote="AdjClose")
> 
> returns.table <- diff(log(na.omit(merge(dax, lin, sie, vow))))
> 
> My function to get the betas pval is:
> 
> B <- function(share,bench){
> beta <- summary(lm(share~bench))$coef[2]
> pval <- summary(lm(share~bench))$coef[8]
> coefs <- t(as.matrix(c(beta, pval), ncol=2, byrow=TRUE))
> coefs
> }
> 
> The function B works fine:
> 
> B(returns[,2],returns[,1])
> 
> > B(returns[,2],returns[,1])
>  [,1]  [,2]
> [1,] 0.7568787 9.740043e-47
> 
> 
> Now, at the following step I am stuck. I am trying to loop through my 
> returns.table:
> 
> Attempt 1:
> 
> for(i in 2:4){result[i] <- B(returns[,i],returns[,1]); result}
> Error in result[i] <- B(returns[, i], returns[, 1]) : 
>  object 'result' not found
> 
> 
> Attempt 2:
> 
> for(i in 2:4){print(B(returns[,i],returns[,1]))}
>  [,1]  [,2]
> [1,] 0.7568787 9.740043e-47
>  [,1]  [,2]
> [1,] 1.311835 2.924594e-86
>  [,1]  [,2]
> [1,] 1.023310 1.078007e-30
> 
> Attempt 2 gets me a little closer to the desired matrix of coefficient and 
> pval by each share.
> 
> 
> What am I doing wrong here?
> 
> Any pointers most welcome.
> 
> Many thanks in advance!
> 
> Regards,
> 
> Bernd
> 
> 
> 
> 
> 
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
> 

        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to