ComeçarComece de graça

Fator 2: A escolha dos pesos do portfólio

Investidores podem otimizar a escolha do peso para obter o maior retorno ajustado ao risco, medido pelo índice de Sharpe do portfólio.

No caso especial de investir todo o valor do portfólio em apenas dois ativos, há apenas um peso a determinar, porque o peso do segundo ativo é igual a um menos o peso do primeiro.

Vamos fazer isso no caso de um portfólio investido em ações dos EUA e títulos dos EUA. Vamos usar a abordagem de força bruta: testar um grande número de pesos possíveis e manter o peso que gera o maior valor para o índice de Sharpe do portfólio (assumindo taxa livre de risco igual a zero).

Este exercício faz parte do curso

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

Ver curso

Instruções do exercício

  • Crie um vetor chamado grid usando seq() que começa em 0, termina em 1, com incremento de 0,01.
  • Inicialize o vetor vazio vsharpe com o mesmo comprimento de grid. Uma forma comum de fazer isso é criando um vetor que contém NAs usando a função rep(). Você vai substituir esses NAs no loop que criará a seguir.
  • No laço for, você vai calcular o índice de Sharpe para cada um dos pesos possíveis em grid. O primeiro comando no laço for seleciona o i-ésimo elemento de grid e o armazena no objeto weight, que muda a cada iteração.
  • Você quer ver como o retorno do portfólio muda conforme o peso varia. Crie um objeto preturns que seja igual à soma de weight vezes returns_equities e (1-weight) vezes returns_bonds.
  • Em seguida, você vai substituir os NAs em vsharpe pelo índice de Sharpe anualizado (SharpeRatio.annualized()) de preturns.
  • Preencha a função de plotagem em que os pesos potenciais (grid) são colocados no eixo x e os índices de Sharpe no eixo y.

Exercício interativo prático

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

# Create a grid
grid <- seq(from = ___, to = ___, by = ___)

# Initialize an empty vector for Sharpe ratios
vsharpe <- rep(NA, times = ___ )

# Create a for loop to calculate Sharpe ratios
for(i in 1:length(grid)) {
    weight <- ___[i]
    preturns <- ___ * ___ + (1 - ___) * ___
    vsharpe[i] <- SharpeRatio.annualized(___)
}

# Plot weights and Sharpe ratio
plot(___, ___, xlab = "Weights", ylab= "Ann. Sharpe ratio")
abline(v = grid[vsharpe == max(vsharpe)], lty = 3)
Editar e executar o código