library(ws.data)
library(dplyr)
library(lubridate)
library(zoo)
library(RcppRoll)
library(ggplot2)
library(reshape)
get_data <- function() {
data(secref)
data(yearly)
data(daily.1998)
data(daily.1999)
data(daily.2000)
data(daily.2001)
data(daily.2002)
data(daily.2003)
data(daily.2004)
data(daily.2005)
data(daily.2006)
data(daily.2007)
all_daily <-
rbind(
daily.1998,
daily.1999,
daily.2000,
daily.2000,
daily.2001,
daily.2002,
daily.2003,
daily.2004,
daily.2005,
daily.2006,
daily.2007) %>%
mutate(year = as.numeric(format(v.date,'%Y')))
daily_yearly <- left_join(all_daily, yearly, by = c("id", "year", "symbol"))
all_ws.data <- left_join(daily_yearly, secref, by = c("id", "symbol"))
cleaned_data <- all_ws.data %>%
filter(m.ind != "REITS", price.unadj >= 1, nchar(symbol, type = "chars") <= 3)
monthly_returns1<- cleaned_data %>%
mutate(monthYear = as.Date(as.yearmon(v.date))) %>%
group_by(monthYear, symbol) %>%
summarize(monthly_returns = sum(tret))
monthly_TV1 <- cleaned_data %>%
mutate(monthYear = as.Date(as.yearmon(v.date))) %>%
mutate(outstanding_shares = cap.usd/price.unadj) %>%
mutate(daily_turnover = volume / outstanding_shares) %>%
group_by(monthYear, symbol) %>%
summarize(monthly_TV = mean(daily_turnover))
left_join(monthly_TV1, monthly_returns1, by = c("symbol", "monthYear")) -> data
return(data)
}
prior_returns <- function(data_, months){
data_ %>%
group_by(symbol) %>%
mutate(returns = roll_mean(monthly_returns, months, fill = NA, align = "right")) %>%
ungroup() %>%
group_by(monthYear) %>%
mutate(rank = ntile(returns, 10)) %>%
rename(c(
returns = paste0(months, "_month_prior_returns"),
rank = paste0(months, "_J_return_rank")
))
}
for(i in c(3, 6, 9, 12)){
prior_returns(data, i) -> data
}
prior_TV <- function(data_, months){
data_ %>%
group_by(symbol) %>%
mutate(mean_TV = roll_mean(monthly_TV, months, fill = NA, align = "right")) %>%
ungroup() %>%
group_by(monthYear) %>%
mutate(rank = ntile(mean_TV, 3)) %>%
rename(c(
mean_TV = paste0(months, "_month_prior_TV"),
rank = paste0(months, "_J_TV_rank")
))
}
for(i in c(3, 6, 9, 12)){
prior_TV(data, i) -> data
}
future_returns <- function(data_, months){
data_ %>%
group_by(symbol) %>%
mutate(returns = roll_mean(monthly_returns, months, fill = NA, align = "left")) %>%
rename(c(returns = paste0(months, "_month_future_returns")))
}
for(i in c(3, 6, 9, 12)){
future_returns(data, i) -> data
}
J3_data <- data %>%
na.omit(data) %>%
group_by(`3_J_return_rank`) %>%
mutate(j = 3) %>%
summarize_each(funs(mean), `3_month_future_returns`, `6_month_future_returns`, `9_month_future_returns`, `12_month_future_returns`, `j`) %>%
rename(c(`3_J_return_rank` = "rank"))
J6_data <- data %>%
na.omit(data) %>%
group_by(`6_J_return_rank`) %>%
mutate(j = 6) %>%
summarize_each(funs(mean), `3_month_future_returns`, `6_month_future_returns`, `9_month_future_returns`, `12_month_future_returns`, `j`) %>%
rename(c(`6_J_return_rank` = "rank"))
J9_data <- data %>%
na.omit(data) %>%
group_by(`9_J_return_rank`) %>%
mutate(j = 9) %>%
summarize_each(funs(mean), `3_month_future_returns`, `6_month_future_returns`, `9_month_future_returns`, `12_month_future_returns`, `j`) %>%
rename(c(`9_J_return_rank` = "rank"))
J12_data <- data %>%
na.omit(data) %>%
group_by(`12_J_return_rank`) %>%
mutate(j = 12) %>%
summarize_each(funs(mean), `3_month_future_returns`, `6_month_future_returns`, `9_month_future_returns`, `12_month_future_returns`, `j`) %>%
rename(c(`12_J_return_rank` = "rank"))
table <- rbind(J3_data, J6_data, J9_data, J12_data) %>%
filter(rank == 1 | rank == 5| rank == 10)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.