ComeçarComece de graça

Refinar restrições e objetivos

Aqui, partimos da hipótese de que refinar as restrições e/ou os objetivos melhora o desempenho. Vamos adicionar um objetivo de orçamento de risco para definir a contribuição mínima e máxima percentual para o risco de cada ativo. Vamos aproveitar a especificação do portfólio que criamos. Esse é um problema de otimização mais complexo e exigirá um solver global, então usaremos portfólios aleatórios como método de otimização.

Este exercício faz parte do curso

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

Ver curso

Instruções do exercício

  • Adicione um objetivo de orçamento de risco risk_budget a port_spec, em que o risco é definido como desvio padrão. Defina a porcentagem mínima de risco em 5% e a máxima em 10%.
  • Execute a otimização com rebalanceamento trimestral. Defina o período de treinamento e a janela móvel para usar 5 anos de dados. Atribua os resultados a uma variável chamada opt_rebal_rb.
  • Faça o gráfico dos pesos.
  • Faça o gráfico da contribuição percentual de cada componente para o risco.
  • Calcule os retornos do portfólio usando Return.portfolio(). Atribua os retornos a uma variável chamada returns_rb.

Exercício interativo prático

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


# Add a risk budge objective
port_spec <- add.objective(portfolio = ___, 
                           type = ___, 
                           name = ___, 
                           min_prisk = ___, 
                           max_prisk = ___)

# Run the optimization
opt_rebal_rb <- optimize.portfolio.rebalancing(R = ___, 
                                               portfolio = ___, 
                                               optimize_method = "random", rp = rp,
                                               trace = TRUE,
                                               rebalance_on = ___, 
                                               training_period = ___,
                                               rolling_window = ___)

# Chart the weights


# Chart the percentage contribution to risk
chart.RiskBudget(___, match.col = "StdDev", risk.type = ___)

# Compute the portfolio returns
returns_rb <- Return.portfolio(R = ___, weights = ___)
colnames(returns_rb) <- "risk_budget"
Editar e executar o código