`%>%` <- magrittr::`%>%`
source("R/MyFunctions.R")
# ------------- Lê e orzaniza a planilha de transações ---------------------
myStocks <- dadosBastter("Transações")
myStocks$yahoo <- paste0(myStocks$ticker,".SA")
myStocks$preco <- round(myStocks$valor/myStocks$quantidade, 2)
#---------------------------------------------------------------------------
#------------------ Filtrando os dados da classe escolhida -----------------
myAssets <- myStocks[myStocks$classe == "Ações",]
myAssets <- myAssets[order(myAssets$data),]
save(myAssets, file = "data/myAssests2020.rda")
#---------------------------------------------------------------------------
myProventos <- dadosBastter("Proventos")
myProventos <- myProventos[myProventos$classe== "Ações",]
# --- Separa os códigos transacionados na classe escolhida -----------------
myTickers <- myAssets$yahoo%>%
unique()
myTickers <- myTickers[order(myTickers)]
#---------------------------------------------------------------------------
# ------------------------ Organizando o Caixa -----------------------------
caixaCompras <- caixa(myAssets)
caixaProventos <- caixa(myProventos)
myCaixa <- merge(caixaCompras, caixaProventos, join = "outer", fill = 0)
myCaixa$proventos <- myCaixa$resgates.1
myCaixa <- myCaixa[,c(1,2,5)]
#----------------------------------------------------------------------------
#----------- Criando um journal com as transações ---------------------------
myJournal <- PMwR::journal(amount=myAssets$quantidade,
price = myAssets$preco,
instrument = myAssets$ticker,
timestamp = myAssets$data,
account = myAssets$classe
)
tapply(myJournal,
INDEX = format(myJournal$timestamp, "%Y-%m"),
FUN = function(x) sum(abs(x$amount)))
#----------------------------------------------------------------------------
#---------------- Baixar os preços dos ativos -------------------------------
getData(myTickers, min(zoo::index(myCaixa)))
#----------------------------------------------------------------------------
#-------------- lendo o arquivo yahoo_data gerado pela funcao getData
load("data/yahooData.Rdata")
#----------------------------------------------------------------------------
# ---------------------- Separando os preços de abertura --------------------
myPricesClose <- pricesClose(myTickers, yahooData)
#----------------------------------------------------------------------------
load("data/myEventos.rda")
myPricesClose <- myBoni(myPricesClose, myEventos)
#-------------- Extraindo a posição diária ----------------------------------
myPosition <- as.data.frame(PMwR::position(myJournal, when = seq(from = min(zoo::index(myPricesClose)),
to = lubridate::today(),
by = "1 day"), drop.zero = FALSE))%>%
xts::xts(., order.by = as.Date(rownames(.)))
#----------------------------------------------------------------------------
#---------------- Reindexando com os preços de abertura ---------------------
myPosition <- myPosition[zoo::index(myPricesClose)]
#----------------------------------------------------------------------------
myPos <- myPosition[max(zoo::index(myPosition))]
save(myPos, file = "data/myPosition.rda")
#------------- Caculoando o valor do portfolio ------------------------------
myPortfolio <- zoo::coredata(myPricesClose)*myPosition
myPortfolio$total <- rowSums(myPortfolio,na.rm=TRUE)
myPortfolio <- myPortfolio[myPortfolio$total != 0,]
saveRDS(myPortfolio, file = "data/myPortfolio.rds")
#----------------------------------------------------------------------------
#---------------- Organizando as cotas --------------------------------------------------------
aux <- merge(myPortfolio$total, myCaixa, join = "outer", fill = 0)#%>%
# replace(., is.na(.), 0)
myCota <- cota(aux)
#----------------------------------------------------------------------------
#---------------------- Benchmark (IBOV) -----------------------------------
quantmod::getSymbols("^BVSP",
src = "yahoo",
from = min(zoo::index(myCota)),
to = lubridate::today()
)
ibov <- BVSP[,6]
ibov <- ibov/as.numeric(ibov[1,1])
colnames(ibov) <- "IBOV"
myCota <- merge(myCota,ibov, join = "inner")%>%
zoo::na.locf()
myCota$rIBOV <- PMwR::returns(myCota$IBOV)
myCota$rIBOVPerc <- 1+ myCota$rIBOV
myCota$diff <- (1+myCota$varPerc)/(1+myCota$rIBOV)-1
myCota[1,c(11:13)] <- 0
saveRDS(myCota, file = "data/myCota.rds")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.