ComeçarComece de graça

Maximizar função utilidade quadrática

No vídeo sobre desafios da otimização de portfólios, você viu como resolver um problema de otimização de utilidade quadrática com o pacote quadprog. Neste exercício, você vai ver como resolver um problema de utilidade quadrática usando o pacote PortfolioAnalytics. Lembre-se de que a formulação de utilidade quadrática tem dois termos: um para o retorno médio do portfólio e outro para a variância do portfólio, com um parâmetro de aversão ao risco, lambda.

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 uma restrição de investimento total, de forma que os pesos somem 1, ao objeto port_spec.
  • Adicione uma restrição long only, de forma que o peso de um ativo fique entre 0 e 1, ao objeto port_spec.
  • Adicione um objetivo para maximizar o retorno médio do portfólio ao objeto port_spec.
  • Adicione um objetivo para minimizar a variância do portfólio ao objeto port_spec. A aversão ao risco deve ser definida como 10.
  • Execute a otimização. Esse problema pode ser resolvido por um resolvedor de programação quadrática, portanto especifique optimize_method = "ROI"

Exercício interativo prático

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

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

# 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 maximize portfolio mean return
port_spec <- add.objective(portfolio = ___, type = ___, name = ___)

# Add an objective to minimize portfolio variance
port_spec <- add.objective(portfolio = port_spec, type = ___, name = ___, risk_aversion = ___)

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