if (!exists("dd")) dd <- iaw$read.csv.gz("beta-by-permno.csv.gz") if (!exists("dm")) dm <- iaw$read.csv.gz("~/research/Data/crsp/crspmonthly-clean.csv.gz") if (!exists("dsd")) { dsd <- iaw$read.csv.gz("~/research/Data/crsp/volatility/sd-by-permno.csv.gz") dd <- within(dd, yyyymm <- as.integer(yyyymmdd/100)) iaw$msg("merging dbeta and dsd") dd <- merge(dd, dsd, all=T, by=c("permno", "yyyymm")) iaw$msg("merged") dd <- subset(dd, T, select= -c(yyyymm)) dd <- iaw$rename.columns(dd, "wtarget", "sd0111") dd <- within(dd, sd0111 <- round(sd0111, 5)) } else iaw$msg("sd was already prepped") wid <- function( id ) { iaw$msg(id) wkey <- merge(dd, subset(dm, TRUE, select=c("permno", "yyyymmdd", id)) , all.x=T, all.y=F) wkey <- subset(wkey, (!is.na(bswa32)) & (!is.na(wkey[[id]])), select=c(id, "yyyymmdd", "bswa32", "sd0111")) if (!is.numeric(id)) wkey <- subset(wkey, wkey[[id]]!="") wkey <- wkey[ with(wkey, order(wkey[[id]], yyyymmdd)), ] iaw$msg("Number of Observations: ", nrow(wkey)) iaw$write.csv.gz( wkey, file=paste0("betasd-by-", id, ".csv.gz") ) } iaw$msg("Base Observations: ", nrow(dd)) wid( "ticker" ) wid( "gvkey" ) wid( "ncusip" ) wid( "permno" )