ComeçarComece de graça

Impondo restrições de peso

Investidores frequentemente têm restrições sobre os valores máximos permitidos para os pesos da carteira. Essas restrições podem, na verdade, ser uma vantagem. A vantagem de uma restrição de peso máximo é que a carteira resultante ficará menos concentrada em certos ativos. Mas há uma desvantagem: o mesmo retorno-alvo pode deixar de ser possível ou será alcançado às custas de maior volatilidade.

Lembre-se, do exercício anterior, que a função portfolio.optim() permite definir restrições de peso por meio do argumento reshigh. reshigh exige um vetor de pesos máximos para cada ativo.

Neste exercício, você vai criar três carteiras com diferentes restrições de peso máximo. Para este exercício, é importante conhecer a saída da função portfolio.optim(). Essa função cria uma lista com quatro componentes: (i) $pw: os pesos da carteira, (ii) $px: os retornos da carteira como um todo, (iii) $pm: o retorno esperado da carteira, (iv) $ps: o desvio padrão dos retornos da carteira.

Este exercício faz parte do curso

Introdução à Análise de Portfólios em R

Ver curso

Instruções do exercício

  • Crie três vetores de pesos máximos para cada ativo (coluna) em returns usando a função rep(). O primeiro vetor terá pesos máximos de 100%, o segundo de 10% e o terceiro de 5%. Chame-os, respectivamente, de max_weights1, max_weights2, max_weights3.
  • Crie uma carteira ótima com pesos máximos de 100% chamada opt1.
  • Crie uma carteira ótima com pesos máximos de 10% chamada opt2.
  • Crie uma carteira ótima com pesos máximos de 5% chamada opt3.
  • Calcule quantos ativos têm peso maior que 1% em cada carteira. Acesse os pesos usando $pw após o nome da carteira.
  • Imprima as volatilidades (desvios padrão, $ps) das três carteiras que você criou.

Exercício interativo prático

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

# Create vectors of maximum weights
max_weights1 <- rep(1, ncol(returns))
max_weights2 <- ___
max_weights3 <- ___

# Create an optimum portfolio with max weights of 100%
opt1 <- portfolio.optim(___, reshigh = ___)

# Create an optimum portfolio with max weights of 10%


# Create an optimum portfolio with max weights of 5%


# Calculate how many assets have a weight that is greater than 1% for each portfolio
sum(opt1$pw > .01)
sum(___$pw > .01)
sum(___$pw > .01)

# Print portfolio volatilites 
opt1$ps
___$__
___$__

Editar e executar o código