R/getGapStrategyResults.R

Defines functions getGapStrategyResults

Documented in getGapStrategyResults

#' Get Gap Strategie's results with some calculated columns
#'
#' @param dbcon_str Connection string for Sharadar or QuoteMedia.
#' @param add_perf Weather to include calculated performance metrics.
#'
#' @return data.table of Gap strategy bakctest results
#' @export
getGapStrategyResults <- function(dbcon_str, add_perf = TRUE) {

  # Functions
  addScore <- function(results) {
    results <- results %>%
      dplyr::group_by(range) %>%
      dplyr::mutate(score =
        # Profit Factor
        ((pf - min(pf)) / (max(pf) - min(pf))) +
        # Return / DD
        ((ret_dd - min(ret_dd)) / (max(ret_dd) - min(ret_dd))) +
        # Net return
        ((return - min(return)) / (max(return) - min(return)))) %>%
      data.table::data.table()

    return(results)
  }

  # All data from open_gap table
  con <- DBI::dbConnect(SQLite(), dbcon_str)
  results <- DBI::dbReadTable(con, "open_gap") %>% data.table::data.table()
  DBI::dbDisconnect(con)

  if (add_perf) {

    # Add performance columns
    results[, return    := ttl_win + ttl_lose]
    results[, ret_dd    := return / abs(drawdown)]
    results[, days      := win_days + lose_days]
    results[, win_ratio := win_days / days]
    results[, avg_win   := ttl_win / win_days]
    results[, avg_lose  := ttl_lose / lose_days]
    results[, pf        := ttl_win / abs(ttl_lose)]

    # Add score
    results <- addScore(results)
  }

  return (results)
}
tmk-c/myrlib documentation built on May 29, 2019, 1:44 p.m.