Beta计算

时间:2017-11-08 18:18:11

标签: r finance

您好我正在尝试用r计算股票beta。 Beta被定义为权益回报的协方差和证券收益率的基准分割方差的回报。

我得到的数字不是测试版,但我不知道为什么。

 #Inputs
library(tidyr)
library(dplyr)
library(quantmod)
library(lubridate)
library(ggplot2)

ticker <- "TSLA"
base_index <- "SPY"
startdate <- "2016-01-01"

betadata <- new.env()
getSymbols( ticker, env = betadata, src = "yahoo",
            from = as.Date(startdate),  to = Sys.Date())
getSymbols(base_index, env = betadata, src = "yahoo",
           from = as.Date(startdate),  to = Sys.Date())

TX <- get(ticker, envir = betadata)
IX <- get(base_index, envir = betadata)
TX <- data.frame(TX[,4])
IX <- data.frame(IX[,4])
df_1 <- cbind(TX,IX)
df_2 <- mutate(df_1,date= ymd(rownames(df_1))) 
write.csv(df_2,"outputfile.csv")
df_1 <- df_1 %>% 
  mutate(return_T = ((df_1[,1]-lag(df_1[,1]))/lag(df_1[,1]))*100) %>%
  mutate(return_I = ((df_1[,2]-lag(df_1[,2]))/lag(df_1[,2]))*100)

df_lm <- lm(return_I ~ return_T, data= df_1)
summary(df_lm)

beta <- cov(df_1$return_T,df_1$return_I,
            use = "complete.obs")/var(df_1$return_T, use = "complete.obs")

print(beta)

ggplot(df_1, aes(y=return_I,x=return_T)) +
  geom_point()+ 
  geom_smooth(method = "lm")

1 个答案:

答案 0 :(得分:0)

beta的公式使用基准的方差而不是股票的方差作为分母。因此,在您的代码中,return_I和return_T必须在以下行中反转,如下所示:

df_lm <- lm(return_T ~ return_I, data= df_1)

beta <- cov(df_1$return_T,df_1$return_I,
            use = "complete.obs")/var(df_1$return_I, use = "complete.obs")
相关问题