ComeçarComece de graça

Resolva um problema simples de otimização de portfólio

Neste primeiro exercício, você vai aprender a resolver um problema simples de otimização de portfólio usando PortfolioAnalytics. Você vai aprender a criar um objeto de especificação de portfólio, adicionar restrições e objetivos e resolver o problema de otimização. O problema é formar um portfólio de variância mínima, sujeito às restrições de investimento total e somente posições compradas (long only). O objetivo é minimizar a variância do portfólio. Há duas restrições neste problema: a restrição de investimento total significa que os pesos devem somar 1, e a restrição de somente posições compradas significa que todos os pesos devem ser maiores ou iguais a 0 (ou seja, não são permitidas posições vendidas).

Este exercício faz parte do curso

Análise Intermediária de Portfólio em R

Ver curso

Instruções do exercício

  • Crie um objeto de especificação de portfólio usando os nomes dos ativos do conjunto de dados index_returns e nomeie o objeto de especificação de portfólio como port_spec.
  • Adicione ao objeto port_spec uma restrição de investimento total de modo que os pesos somem 1.
  • Adicione ao objeto port_spec uma restrição de somente posições compradas (long only) de modo que o peso de um ativo fique entre 0 e 1.
  • Adicione ao objeto port_spec um objetivo para minimizar o desvio padrão do portfólio.
  • Resolva o problema de otimização do portfólio usando optimize_method = "ROI". Atribua os resultados da otimização a um objeto chamado opt.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# Create the portfolio specification
port_spec <- portfolio.spec(colnames(___))

# Add a full investment constraint such that the weights sum to 1
port_spec <- add.constraint(portfolio = ___, type = "___")

# Add a long only constraint such that the weight of an asset is between 0 and 1
port_spec <- add.constraint(portfolio = ___, type = "___")

# Add an objective to minimize portfolio standard deviation
port_spec <- add.objective(portfolio = ___, type = "___", name = "___")

# Solve the optimization problem
opt <- optimize.portfolio(___, portfolio = ___, optimize_method = "___")
Editar e executar o código