Otimimização de uma carteira de ações – exemplo em Excel

Alguns leitores me pediram um exemplo de como fazer otimização de carteiras utilizando o Excel. Atendendo a estes pedidos, preparei um exemplo que permite otimizar uma carteira com até 50 ações do mercado brasileiro. Informações úteis para entender as contas feitas na planilha podem ser encontradas aqui, aqui e aqui.

Faça o download da planilha:

Download-Button_1700x1000_zpsce011000

 

 

Vamos aos detalhes.

Dados

Os dados na planilha dizem respeito às 50 ações com maior volume no período de agosto 2012 a agosto de 2013. Esta escolha é arbitrária e o leitor pode modificar a planilha à vontade para refletir melhor o universo de ações que lhe for mais conveniente. 

Estimação dos parâmetros de mercado

Para realizar a otimização de carteiras dentro do paradigma de Markowitz, é necessário estimar as seguintes quantidades para o horizonte de investimento do investidor:

  • Retornos esperados de todos os ativos
  • Matriz de covariância dos ativos

Os retornos esperados, como o próprio nome diz, são a expectativa que o investidor tem sobre o retorno total de cada ativo. A matriz de covariância possui informações sobre a variabilidade de cada ativo e também sobre como os preços dos ativos se movimentam de maneira conjunta. Esta informação permite que se explore um benefício de diversificação.

Existem diversas maneiras de estimar estes valores. Para este exemplo, optei por utilizar dados históricos em frequência diárias. Um ponto crucial em um problema de alocação de ativos é o horizonte de investimento do investidor. Para que o problema de otimização esteja bem definido, é necessário que as quantidades acima sejam projetadas para este horizonte. Por exemplo, se o horizonte do investidor é mensal, mas os dados utilizados na estimação são diários, é necessário de alguma maneira transformar as estimativas diárias para quantidades mensais.

Aqui surge uma complicação relacionada ao tipo de retorno que utilizamos. O paradigma média-variância de Markowitz é definido em termos de retornos lineares. O retorno linear de um ativo entre os tempos t-1 e t pode ser definido por

R_t = \frac{P_{t}}{P_{t-1}}-1,

onde P_t é o preço do ativo no instante t . Os retornos lineares possuem a característica importante de que eles podem ser agregados ou somados entre ativos diferentes. Ou seja, dada uma carteira de N ativos representada por um vetor de pesos \boldsymbol w = \left(w_1, \cdots, w_N \right) , onde w_i corresponde à proporção do valor da carteira investida no ativo i, o retorno da carteira pode ser calculado como uma combinação linear dos retornos dos ativos:

R_t^{Carteira} = \boldsymbol w ' \mathbf{R}_t=\sum_{i=1}^{N}{w_i R_{i,t}}

Por outro lado, para agregar retornos ao longo do tempo, a relação é multiplicativa. Por exemplo, o retorno total entre t-2 e t pode ser calculado como

R_{t-2,t} = (1+R_{t-2,t})(1+R_{t-1,t})-1.

A relação acima não é particularmente conveniente, especialmente para transformar retornos entre horizontes diferentes. Um alternativa é trabalhar com retornos compostos, também conhecido como log-retornos. O log-retorno entre os tempos t-1 e t pode ser definido por

r_t = \log{\left(\frac{P_{t}}{P_{t-1}}\right)}.

Os log-retornos tem a característica conveniente de poderem ser agregados ao longo do tempo. O log-retorno entre os tempos t-2 e t pode ser calculado como

r_{t-2,t} = r_{t-2,t}+r_{t-1,t}.

Para valores pequenos, por exemplo em horizontes diários, o log-retorno é uma aproximação boa do retorno. Porém, quanto maior o retorno, pior é esta aproximação.

Ao escolher trabalhar com log-retornos diários, torna-se trivial projetar as estimativas para qualquer horizonte de investimento desejado. Por exemplo, se o horizonte desejado é mensal, então a projeção dos retornos esperados e da matriz de covariância são obtidos através da multiplicação das estimativas diárias por 21 (número de dias úteis em um mês). Caso o horizonte seja anual, multiplicamos por 252, e assim por diante.

Há um segundo motivo para trabalhar com log-retornos. Do ponto de vista de modelagem, a escolha de modelar os log-retornos como variáveis com distribuição normal implica em uma distribuição log-normal para os preços dos ativos. Isto é mais intuitivo e realista do que modelar os retornos como variáveis normais, o que implicaria que os preços teriam distribuições normais e permitiria, por exemplo, a possibilidade de preços negativos.

Apesar destas vantagens, os log-retornos não são agregáveis entre ativos diferentes, ou seja, o log-retorno de uma carteira de ativos não é uma combinação linear dos retornos dos ativos. Logo, para obter estimativas de retorno esperado e matriz de covariância dos retornos lineares, uma transformação é necessária. Esta transformação é realizada de maneira interna pela planilha. Os detalhes podem ser obtidos neste artigo.

Otimização

A otimização realizada pela planilha é a descrita aqui. Há três opções principais:

  • Calcular Fronteira Eficiente – esta opção realiza o cálculo de 20 portfolios na fronteira eficiente. Os portfolios são definidos a partir de retornos esperados mínimos igualmente espaçados entre o retorno esperado da carteira de variância mínima e o maior retorno esperado dentre todos os ativos.
  • Otimizar Carteira – esta opção realiza a otimização da carteira com os parâmetros que estiverem selecionados.
  • Carteira de Variância Mínima – esta opção calcula a carteira de variância mínima global.

Finalmente, é necessário fazer alguns comentários e observações sobre as escolhas feitas na construção  da planilha:

  • As ações foram selecionadas entre as de maior volume. O número de ações (50) também representa uma escolha arbitrária. O leitor pode modificar a planilha para utilizar um número maior ou menor de ações.
  • A janela e frequência dos dados utilizados na estimação também representam uma escolha arbitrária. Outras escolhas são possíveis e podem levar a resultados diferentes.
  • Um grande número das ações escolhidas apresenta retorno negativo no período utilizada na planilha. Isto implica que algumas carteiras “otimizadas” podem apresentar retorno esperado negativo.
  • O otimizador do Excel (Solver) não é a melhor escolha para se realizar otimizações com um grande número de variáveis. Apesar de teoricamente ser possível expandir a planilha para um número arbitrário de ações, é improvável que os resultados obtidos com o Solver sejam confiáveis. Ao leitor interessado em realizar otimizações de maior escala, sugiro a utilização de um software como R (gratuito) ou Matlab.
  • Apesar de o exemplo utilizar apenas ações, a estrutura pode ser usada para otimizar carteiras com outras classes de ativos, desde que possa-se modelar os ativos através dos (log)retornos. Isto seria viável por exemplo com ETFs e moedas, por exemplo, mas não com títulos do governo.
  • A fronteira eficiente calculada é a fronteira no contexto de Markowitz. Caso o leitor queira introduzir um ativo livre de risco (que no caso brasileiro pode ser proxied pelo CDI, por exemplo), é possível construir uma nova fronteira eficiente, definida pela Reta de Alocação de Capital.
  • A estimativa da matriz de covariância utilizada na planilha é a covariância amostral. Em alguns casos, esta matriz pode não ser bem comportada. Neste caso outras alternativas (shrinkage, modelo de fatores) precisam ser utilizadas.
  • A planilha é oferecida gratuitamente aos leitores “no estado” e sem garantias de qualquer tipo. O uso desta planilha é de responsabilidade do leitor e, como sempre, vale o velho e bom disclaimer.

A planilha pode ser baixada na seção de Downloads ou diretamente neste link.
PlanilhaOtimizacao

Anúncios