Python: Modelo de Precificação de Ativos (CAPM) - TC

TC School / Quant & Investimentos

Python: Modelo de Precificação de Ativos (CAPM)

10/02/2021 às 11:18

TC School

Hoje seguimos nosso estudo de introdução à ciência da computação com Python. Já temos uma série de aulas sobre o programa, vale a pena conferir nossa categoria “Quant & Investimentos” para acompanhar o curso completo.

O texto de hoje traz conteúdo sobre como aplicar o modelo CAPM (Capital Asset Pricing Model). O modelo de precificação de ativos é um método que analisa a relação entre o fator de risco sistemático e o retorno esperado de um determinado ativo. Dividimos o artigo nos seguintes tópicos:

  • Modelo CAPM
  • Calculando o CAPM com o Python

Boa leitura!

Curso de Introdução ao Python

Chegamos a nossa última da série de Introdução ao Python. Confira nossas últimas aulas:

No texto de hoje, iremos aprender como calcular o beta e o retorno esperado de um ativo e como estimar o modelo CAPM no Python a partir de uma biblioteca estatística chamada statsmodel.

Modelo CAPM

O modelo CAPM (Capital Asset Pricing Model) é utilizado para estimar o retorno esperado teórico de um ativo, ou melhor, a taxa de retorno esperada (custo de capital) que é apropriada para um determinado ativo.

A equação que calcula o retorno esperado de um ativo através do modelo CAPM está exposta na equação 1 a seguir:

Em que:

  • E [Ri] é o retorno esperado do ativo i;
  • βi é o beta do ativo i;
  • Rf é o retorno da taxa livre de risco;
  • E [Rm] é o retorno esperado do mercado;
  • E [Rm] – Rf é o Prêmio de Risco de Mercado.

A taxa livre de risco é calculada a partir de um investimento com o menor grau de risco no mercado de renda fixa. No exemplo a seguir utilizaremos a taxa Selic.

Regressão linear

Para estimar o beta (sensibilidade do retorno esperado ao mercado), utilizaremos o método estatístico Regressão Linear Simples o qual relaciona a variável Dependente (retorno esperado de um ativo) à variável independente (prêmio de risco de mercado).

A abordagem mais utilizada para estimar o beta de um ativo se dá através da regressão especificada na equação 2 a seguir:

Em que:

  • Rt – Rft é o excesso de retorno do ativo durante o período t;
  • Rmt – Rft é o excesso de retorno do mercado durante o período t;
  • ∈t é o resíduo da regressão.

Conforme Bali et al. (2016), se o modelo de regressão (equação 2) descrever o retorno do ativo e o alfa () for zero, então aplicando o valor esperado em ambos os lados da equação, teremos o modelo CAPM. Dessa maneira, o beta do ativo será o coeficiente estimado pela regressão linear.

Calculando o CAPM com o Python

Antes de iniciar estimando o modelo de regressão, apresentado na equação 2, precisamos aprender a importar uma biblioteca no Python. Biblioteca é uma coleção de módulos com diversas funções que simplificam nossa vida.

Para importar uma biblioteca basta digitar o comando ‘import’ seguido do nome da biblioteca. Para estimar o modelo de regressão, vamos importar duas bibliotecas:

  • numpy
  • statsmodel.api

Biblioteca numpy e statsmodel.api

A biblioteca numpy servirá para transformar nossa lista de dados em arrays (vetores), ao passo que a biblioteca statsmodel.api nos fornecerá uma função para estimar o modelo de regressão.

É possível simplificar os nomes das bibliotecas quando for importá-las. Basta você escrever o comando ‘as’ (após o nome da biblioteca) seguido do nome simplificado. Vamos importar numpy como ‘np’ e statsmodel.api como ‘sm’, veja abaixo:

Importando bibliotecas

Os dados utilizados neste artigo são de cotações de fechamento, de periodicidade anual e foram extraídos do Yahoo Finance e do Banco Central. Selecionamos a ação ordinária da Petrobrás (PETR3) e o índice Ibovespa (representando o mercado) para implementar o modelo e estimar e calcular o CAPM. O período compreende os anos 2010 a 2020, computados em 1º de janeiro. Para a taxa livre de risco, utilizamos a Selic (dados do Banco Central).

Dados de retorno da PETR3, Ibovespa e Selic

Transformando em array com o numpy

Calculando o excesso de retorno e o prêmio de risco de mercado (com array você pode realizar operações matriciais, não é necessário realizar um laço de repetição como visto em artigo anterior).

Estimação do modelo e apresentação dos resultados

Perceba que antes de estimar o modelo de regressão, criamos um objeto chamado ‘premio_risco_mercado_matriz’ para adicionar a constante (alfa) ao modelo de regressão.

A função que ‘cria a equação de regressão’ é chamada de ‘OLS()’, um atributo da biblioteca sm (por isso utilizamos sm.OLS). Nós criamos um objeto que se chama mod, o qual possui o atributo ‘.fit()’.

Dito isso, temos um beta no valor de 1,2612 cuja estatística t foi de 3.054, evidenciando uma significância estatística. Como podemos ver, o ativo PETR3 possui um beta maior do que 1, significando que ele possui uma maior sensibilidade às variações do mercado.

Sendo assim, temos a equação 3 do modelo CAPM para o ativo PETR3, como se vê a seguir:

Fixando os valores da taxa livre de risco e do valor esperado do retorno do mercado, podemos calcular o retorno esperado para o ativo PETR3. Esse valor esperado representa o custo de capital exigido como taxa de desconto, representando, desse modo, uma taxa de risco teórica para o ativo em questão.

Portanto, terminamos essa série de artigos de Introdução ao Python aprendendo a estimar uma regressão linear para obter o beta de um ativo a partir do modelo CAPM. Esperamos que tenham gostado. Em breve traremos ainda mais novidades!

Referências

BALI, T. G.; ENGLE, R. F.; MURRAY, S. Empirical Asset Pricing: The Cross Section of Stock Returns. Hoboken: Wiley, 2016.

Filipe Coelho de Lima Duarte
Filipe Coelho de Lima Duarte
Professor do Departamento de Finanças e Contabilidade da UFPB.
Doutorando e Ciências da Computação pela UFPE, mestre em Ciências Contábeis
pela UFPB e graduado em Ciências Atuariais na UFPB. Atuário – MIBA nº
2829.

TC School

A sua escola como investidor.

Disclaimer: Este material é produzido e distribuído somente com os propósitos de informar e educar, e representa o estado do mercado na data da publicação, sendo que as informações estão sujeitas a mudanças sem aviso prévio. Este material não constitui declaração de fato ou recomendação de investimento ou para comprar, reter ou vender quaisquer títulos ou valores mobiliários. O usuário não deve utilizar as informações disponibilizadas como substitutas de suas habilidades, julgamento e experiência ao tomar decisões de investimento ou negócio. Essas informações não devem ser interpretadas como análise ou recomendação de investimentos e não há garantia de que o conteúdo apresentado será uma estratégia efetiva para os seus investimentos e, tampouco, que as informações poderão ser aplicadas em quaisquer condições de mercados. Investidores não devem substituir esses materiais por serviços de aconselhamento, acompanhamento ou recomendação de profissionais certificados e habilitados para tal função. Antes de investir, por favor considere cuidadosamente a sua tolerância ou a sua habilidade para riscos. A administradora não conduz auditoria nem assume qualquer responsabilidade de diligência (due diligence) ou de verificação independente de qualquer informação disponibilizada neste espaço. Administradora: TradersNews Informação & Educação Ltda. Todos os direitos reservados.

TradersClub

O app essencial para investidores do mercado financeiro brasileiro.

Uma comunidade com milhares de investidores, ferramentas e serviços que vão ajudar você a investir melhor!

TradersClub