Markowitz com rebalanceamento diário em Python
O problema de seleção de portfólio dado por Markowitz é um método clássico de investimento. Os princípios envolvidos podem ser vistos neste outro post.
Em geral, o método de Markowitz utiliza a estratégia Buy and Hold. Neste post, eu disponibilizo um código em Python do método de Markowitz com a estratégia de rebalanceamento diário.
Basicamente são utilizados os mesmos princípios do método de Markowitz clássico, com a diferença de que o método é repetido diariamente.
Em cada dia é gerada uma fronteira de Pareto com o trade-off retorno versus risco do portfólio previsto para o dia seguinte. Cada ponto da fronteira representa a composição de uma carteira com base nos ativos utilizados.
É necessário escolher um ponto da fronteira de Pareto com a composição da carteira que será investida no dia em questão. No dia seguinte, o rendimento da carteira investida no dia anterior é contabilizado. A informação preço de fechamento dos ativos do dia anterior é incluída na base de dados para fazer a previsão dos retornos e construção de uma nova fronteira de Pareto. De onde é escolhido um novo ponto (carteira). O processo se repete continuamente.
Neste caso o ponto escolhido para definir a carteira aplicada diariamente é o ponto médio da fronteira de Pareto. Este ponto foi escolhido porque ele representa um valor intermediário entre risco e retorno, que tende a representar um investidor com perfil moderado.
Outros critérios de escolha podem ser utilizados, como o ponto inferior da fronteira (perfil conservador), o ponto superior (perfil agressivo) ou algum critério mais elaborado, que leve em consideração mais informações do investidor, como por exemplo, uma meta do investimento.
Para verificar como o método funciona na prática foi realizado um backtesting com as ações VALE3, ITUB4, PETR4, BBDC4, B3SA3, PETR3, MGLU3, ABEV3, WEGE3, ITSA4, BBAS3 e PCAR3 negociadas no mercado fracionário no ano 2020 tendo um capital inicial de R$100.000,00.
Foi considerada a restrição de auto-financiamento, que significa que após o instante inicial nenhum dinheiro é aportado ou retirado do investimento e os rendimentos são reinvestidos.
Como pode ser observado, o desempenho do Markowitz dinâmico é superior ao desempenho ao principal benchmark do mercado financeiro brasileiro, o que indica que a estratégia de Markowitz tem potencial tanto na sua versão tradicional (Buy and Hold) quanto com rebalanceamento diário.
Você pode fazer simulações considerando outros ativos. O código está definido para fazer a busca automatizada em tempo real dos ativos. Para isto basta atualizar a variável ASSETS com os nomes dos tickers do seu interesse. Você também pode alterar o período de deste, informando as datas inicial e final do seu período de interesse.
Faça download do código pelo link abaixo:
Espero que este material tenha ajudado de alguma maneira.
Vamos nos conectar também pelo Instagram @maisakmelo.