Skip to content

Instantly share code, notes, and snippets.

@rlazo
Last active August 29, 2015 14:10
Show Gist options
  • Save rlazo/909681e6e45fbf5f494a to your computer and use it in GitHub Desktop.
Save rlazo/909681e6e45fbf5f494a to your computer and use it in GitHub Desktop.
DD
portfolio.wl <- function(tickers, yreturn, i) {
# cria um novo dataframe com duas colunas: ticker, que vai armazenar o ticker da ação;
# e wl, que armazena o retorno anual (yreturn) para o ano `i` de cada ticker
wls <- data.frame(wl = yreturn[tickers, i], ticker=tickers, stringsAsFactors=FALSE)
# cria uma copia do dataframe `wls` ordenado pela coluna `wl` do maior valor de retorno anual
# para o menor
sorted_wls <- arrange(wls, -wl)
# Verifica se algum dos dados em sorted_wl tem NA na coluna `wl`. Se for assim, mostra uma mensagem de erro
# com o ticker correspondente
if(any(is.na(sorted_wls$wl))) warning(paste("Ativo com NA:", sorted_wls$ticker[is.na(sorted_wls$wl)]))
# cria uma copia da coluna ticker do `sorted_wls`. A coluna já está ordenada pelo valor do retorno anual
sorted_tickers <- sorted_wls$ticker #linha 148
# armazena o tamanho da lista de tickers
size <- length(sorted_tickers) #linha 149
# calcula a posição do ticker central
pivot <- round(size / 2) #linha 150
# cria uma copia dos tickers desde aquele com maior retorno anual até a mitade da coluna
winner <- sorted_tickers[1:pivot]
# cria uma copia dos ticker da mitade até o menor retorno anual
loser <- sorted_tickers[(pivot + 1):size]
# retorna uma lista com os dois grupos
return(list(winner=winner, loser=loser))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment