R/sub-tfunctions.R

Defines functions variabletonumeric.f returncode.c.f returnstock.c.f returnclose.n.f uniquecode.v.f subcode.df.f funlag funfwd

Documented in funfwd funfwd funlag funlag returnclose.n.f returnclose.n.f returncode.c.f returncode.c.f returnstock.c.f returnstock.c.f subcode.df.f subcode.df.f uniquecode.v.f uniquecode.v.f variabletonumeric.f variabletonumeric.f

##########################
###SUB FUNCTION###########
##########################

      
#' Sub-function: variabletonumeric.f
#' 
#' convert variable type to numeric
#' 
#' @param var var
#' @param df df
#' @keywords variable to numeric
#' @export
#' 
variabletonumeric.f <- function(var, df){
      df[, var] <- suppressWarnings(as.numeric(df[,var]));
      return(df)
}

#' Sub-function: returncode.c.f
#' 
#' return code from stock name
#' 
#' @param stockname stockname
#' @param df df
#' @keywords returncode
#' @export
#' 
returncode.c.f <- function(stockname, df = final.df){
      u1 <- df[, "stock."] %in% toupper(stockname)
      if(sum(u1) > 0){
            return(df[u1, "code."][1])
      }else{
            print(paste0("No such stock exist!"));
            return(NA);
      }
}

#' Sub-function: returnstock.c.f
#' 
#' return latest stock name from stock code"
#' 
#' return code from stock name
#' @param code code 
#' @param df final.df
#' @keywords returnstock
#' @export
#' 
returnstock.c.f <- function(code, df = final.df){
      u1 <- df[, "code."] %in% toupper(code)
      if(sum(u1) > 0){
            return(df[u1, "stock."][sum(u1)])
      }else{
            print(paste0("No such stock exist!"));
            return(NA);
      }
}

#' Sub-function: returnstock.c.f
#' 
#' return the closing price n days before today"
#' @param code code
#' @param df default to final.df
#' @param n default to 0
#' @keywords returnclose
#' @export
#'
returnclose.n.f <- function(code, df = final.df, n = 0){
            u1 <- df[, "code."] %in% toupper(code)
            if(sum(u1) > n){
                  return(df[u1, "last."][sum(u1)-n])
            }else{
                  return(NA);
            }
}





#' Sub-function: uniquecode.v.f
#' 
#' return unique vector of stock's code (With/without warrant)
#' @param df df
#' @param warrant true/false
#' @keywords uniquecode
#' @export
#'
uniquecode.v.f <- function(df = final.df, warrant = F){
      if(warrant){
            uniquecode.v <- unique(df[, "code."])
      }else{
            uniquecode.v <- unique( nowarrant.df.f(df)[, "code."] )
      }
      return(uniquecode.v);
}

#'Sub-function: subcode.df.f
#'
#' return subset df" - subset df based on code
#' @param code code
#' @param df default to final.df
#' @keywords subcode
#' @export
#'
subcode.df.f <- function(code, df = final.df){
      u <- df[,"code."] %in% code
      subcode.df <- df[u,]
      return(subcode.df);
}



#' funlag
#' 
#' return 1 value = fun(vector[L-n-lag+1: L-lag])
#' 
#' @export
funlag <- function(last.v, lag, n, fun){
      L <- length(last.v)
      if(L-n-lag+1 > 0){
            return(   fun( last.v[ (L-n-lag+1):(L-lag) ]  )   )
      }else{
            return(NA)
      }
}


#' funfwd
#' 
#' @export
#' 
funfwd <- function(return.v, predday, fwdn, fun = returnprod.f){
      L <- length(return.v)
      
      if( -1*predday + fwdn <= 0 & L-predday > 0 ){
            return(   fun( return.v[ (L-predday+1):(L-predday + fwdn)] )  )
      }else{
            return(NA)
      }
      
      
}
junyitt/tfunction documentation built on May 4, 2019, 4:23 p.m.