ComeçarComece de graça

Otimização de um único período

Existem duas funções para executar a otimização: optimize.portfolio() e optimize.portfolio.rebalancing(). Este exercício foca na otimização de um único período e o próximo exercício usará optimize.portfolio.rebalancing() para otimização com rebalanceamento periódico. optimize.portfolio() oferece suporte à otimização de um único período. Os principais argumentos incluem R para os retornos dos ativos, portfolio para o objeto de especificação do portfólio e optimize_method para indicar o método de otimização usado para resolver o problema. Em muitos casos, é útil especificar trace = TRUE para armazenar informações adicionais de cada iteração/tentativa da otimização.

Os seguintes métodos de otimização são suportados:

  • DEoptim: Evolução diferencial
  • random: Portfólios aleatórios
  • GenSA: Simulated Annealing generalizado
  • pso: Otimização por enxame de partículas
  • ROI: R Optimization Infrastructure para resolvedores de programação linear e quadrática

O método de otimização escolhido deve se basear no tipo de problema que você está resolvendo. Por exemplo, um problema que pode ser formulado como programação quadrática deve ser resolvido com um resolvedor de programação quadrática, enquanto um problema não convexo deve ser resolvido com um resolvedor global como o DEoptim.

Neste exercício, vamos definir o problema de otimização do portfólio para maximizar o retorno médio e minimizar o desvio padrão do portfólio com um orçamento de risco por desvio padrão, em que o percentual mínimo de risco é 5% e o máximo é 10%, sujeito a alocação total e apenas posições compradas (long only). O objetivo de orçamento de risco requer um resolvedor global, então vamos resolver o problema usando portfólios aleatórios. O conjunto de portfólios aleatórios, rp, é gerado usando 500 permutações para este exercício.

Este exercício faz parte do curso

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

Ver curso

Instruções do exercício

A especificação do portfólio já foi criada e se chama port_spec. Também estão no seu ambiente os retornos, asset_returns.

  • Execute uma otimização de um único período com trace definido como TRUE, usando "random" como método de otimização. Atribua a saída da otimização a uma variável chamada opt.
  • Imprima a saída da otimização.

Exercício interativo prático

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


# Run a single period optimization using random portfolios as the optimization method
opt <- optimize.portfolio(R = ___, portfolio = ___, optimize_method = ___, rp = rp, trace = TRUE)

# Print the output of the single-period optimization
Editar e executar o código