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
Instruções do exercício
- Crie um vetor chamado
gridusandoseq()que começa em 0, termina em 1, com incremento de 0,01. - Inicialize o vetor vazio
vsharpecom o mesmo comprimento degrid. 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 degride o armazena no objetoweight, que muda a cada iteração. - Você quer ver como o retorno do portfólio muda conforme o peso varia. Crie um objeto
preturnsque seja igual à soma deweightvezesreturns_equitiese(1-weight)vezesreturns_bonds. - Em seguida, você vai substituir os NAs em
vsharpepelo índice de Sharpe anualizado (SharpeRatio.annualized()) depreturns. - 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)