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:
- Introdução ao Python: primeiros passos com o Google Colab
- Python: operações básicas e variáveis
- Python: listas e operações repetidas (for loop)
- Python: condicionais e funções
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.
- Teoria das Carteiras e Análise de Investimentos: Alpha, Sharpe e Sortino
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.

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.