Tutorial para a otimização de uma carteira usando o R - Blog ContabilidadeMQ

Blog ContabilidadeMQ

Blog ContabilidadeMQ

sábado, 21 de abril de 2018

Tutorial para a otimização de uma carteira usando o R

Nesse vídeo a monitora de Finanças I, Elaine Gama, apresenta um passo a passo para otimização de uma carteira usando a Teoria das Carteiras diretamente no software R.

Os arquivos usados no vídeo poderão ser encontrados nos links abaixo:


Na nossa playlist de Finanças I vocês podem ver mais sobre a Teoria e na playlist de tutoriais vocês podem ter acesso a outros tutoriais, em nosso canal do Youtube. Os slides da aula completa podem ser acessados no blog:
http://contabilidademq.blogspot.com.br/2018/04/slides-teoria-das-carteiras-markowitz.html
Para fazer este trabalho no Excel e com muitos ativos, recomendo que assistam a este vídeo: https://youtu.be/11x_JgYMskk Como plotar a fronteira eficiente no Excel: https://youtu.be/9WXW1I62VHQ





SCRIPT PARA OTIMIZAÇÃO DE UMA CARTEIRA DE INVESTIMENTOS USANDO O SOFTWARE R:


read.table("Markowitz.txt", header = TRUE)
dados = read.table("Markowitz.txt", header = TRUE)

##INSTALAR E CARREGAR OS PACOTES

require(fPortfolio)
library(fPortfolio)

require(timeSeries)
library(timeSeries)


##conversão no tipo de dados "timeSeries"
dados<-as.timeSeries(dados)

##############################################
##ESTATÍSTICAS DOS DADOS

##RETORNOS ESPERADOS
ret.esperados = colMeans(dados)
ret.esperados


#MATRIZ DE COVARIÂNCIAS
mat.cov = cov(dados)
mat.cov

################################################

##OTIMIZAÇÃO

##pesos dos ativos


##retorna o portfólio com a maior relação retorno/risco na fronteira eficiente

p1 = tangencyPortfolio(dados, spec = portfolioSpec(), constraints = "LongOnly")
p1


##retorna o portfólio com o risco mínimo na fronteira eficiente
p2 = minvariancePortfolio(dados, spec = portfolioSpec(), constraints = "LongOnly")
p2


## calculos para obtenção da fronteira eficiente
Frontier = portfolioFrontier(dados)

## Plotagem da fronteira eficiente no gráfico
frontierPlot(Frontier, col = c("blue", "orange"), pch = 19)

## adicinando informações ao gráfico
## pontos associados a possíveis carteiras
p3 = monteCarloPoints(Frontier, mcSteps = 5000, cex = 0.25, pch = 19)
p3
## mostrando o local da carteira que com proporções iguais em cada ativo
equalWeightsPoints(Frontier, pch = 15, col = "red")

## mostrando os pontos relativos a cada ativo individualmente
singleAssetPoints(Frontier, pch = 19, cex = 1.5, col = topo.colors(6))

2 comentários:

  1. Great article with excellent idea!Thank you for such a valuable article. I really appreciate for this great information.. hospedagem de sites barata

    ResponderExcluir
  2. Muito obrigado pelo artigo, pela oportunidade de aprendizado e pelos upskill que nos estão a conceder. (de Angola com muito amor)

    ResponderExcluir

Translate