Aula 8: Regressão Descontínua e Synthetic Control
Metodologias Avançadas para Inferência Causal no Mercado Financeiro
Objetivos de Aprendizagem
- Compreender os fundamentos teóricos dos métodos de Regressão Descontínua (RD) e Synthetic Control (SC)
- Aprender a identificar situações adequadas para aplicação de cada método no mercado financeiro
- Desenvolver habilidades para implementar e interpretar corretamente resultados de ambas as abordagens
- Analisar aplicações práticas desses métodos em questões relevantes para o mercado financeiro brasileiro
1. Regressão Descontínua (RD): Fundamentos Teóricos
O método de Regressão Descontínua explora situações onde a probabilidade de receber um tratamento muda abruptamente em um determinado limiar (cutoff) de uma variável contínua de atribuição. Esta abordagem permite estimar efeitos causais comparando unidades logo acima e logo abaixo desse limiar.
Princípios da Regressão Descontínua
O design de RD utiliza o fato de que unidades próximas ao limiar são similares em todas as características (observáveis e não observáveis), exceto na probabilidade de receber o tratamento. Assim, qualquer descontinuidade no resultado de interesse nesse limiar pode ser atribuída ao efeito causal do tratamento.
Principais variantes:
- RD Sharp (Nítida): O tratamento é determinado com certeza pelo valor da variável de atribuição (probabilidade muda de 0 para 1 no limiar)
- RD Fuzzy (Difusa): O tratamento é apenas parcialmente determinado pelo limiar (a probabilidade muda, mas não necessariamente de 0 para 1)
Figura 1: Design de Regressão Descontínua Sharp e Fuzzy
Identificação Causal na Regressão Descontínua
A identificação do efeito causal na RD depende de algumas hipóteses fundamentais:
- Continuidade dos Resultados Potenciais: Na ausência do tratamento, os resultados potenciais seriam contínuos ao redor do limiar
- Ausência de Manipulação Precisa: Os indivíduos não conseguem manipular precisamente seu valor na variável de atribuição
- Continuidade das Covariáveis: Todas as outras características são contínuas ao redor do limiar
Se estas hipóteses forem válidas, o efeito causal do tratamento pode ser estimado como:
Onde c é o valor do limiar (cutoff) e X é a variável de atribuição.
# Implementação de Regressão Descontínua em Python import numpy as np import pandas as pd import statsmodels.formula.api as smf import matplotlib.pyplot as plt from rdrobust import rdrobust, rdplot def rd_analysis(df, outcome_var, running_var, cutoff, bw=None, covariates=None): """ Realiza análise de Regressão Descontínua Args: df: DataFrame com os dados outcome_var: Nome da variável de resultado running_var: Nome da variável de atribuição cutoff: Valor do limiar (cutoff) bw: Bandwidth (opcional, se None usa seleção ótima) covariates: Lista de covariáveis para controle (opcional) Returns: Resultados da RD e gráficos """ # Criar variável de tratamento df['treat'] = (df[running_var] >= cutoff).astype(int) # RD Estimação usando rdrobust (implementação robusta) if covariates: rd_results = rdrobust(y=df[outcome_var], x=df[running_var], c=cutoff, covs=df[covariates], h=bw) else: rd_results = rdrobust(y=df[outcome_var], x=df[running_var], c=cutoff, h=bw) # Criar gráfico de RD rdplot_results = rdplot(y=df[outcome_var], x=df[running_var], c=cutoff) # Dados para análise de placebo (teste de continuidade de covariáveis) placebo_tests = {} if covariates: for cov in covariates: placebo = rdrobust(y=df[cov], x=df[running_var], c=cutoff) placebo_tests[cov] = placebo.coef[0] return rd_results, rdplot_results, placebo_tests
Verificação de Leitura #1
Qual a principal diferença entre Regressão Descontínua Sharp e Fuzzy?
Aplicação em Finanças: Índice Russell 2000 e Estrutura de Propriedade
Um exemplo clássico de aplicação de Regressão Descontínua em finanças é estudar o efeito da inclusão no índice Russell 2000 sobre a estrutura de propriedade das empresas.
Contexto: O índice Russell 2000 é composto pelas 2000 menores empresas do ranking Russell 3000, que inclui as 3000 maiores empresas por capitalização de mercado nos EUA. A inclusão no índice é determinada pelo ranking de capitalização de mercado em uma data específica de cada ano.
Setup de RD:
- Variável de atribuição (X): Ranking de capitalização de mercado
- Limiar (c): Posição de corte entre Russell 1000 e Russell 2000 (1000ª empresa)
- Tratamento (D): Inclusão no Russell 2000 (vs. Russell 1000)
- Variáveis de resultado (Y): Propriedade institucional, número de investidores institucionais, etc.
Resultados: Empresas logo abaixo do limiar (incluídas no Russell 2000) experimentam aumento significativo na propriedade institucional em comparação com empresas logo acima do limiar (incluídas no Russell 1000).
Este exemplo pode ser adaptado para o contexto brasileiro, estudando efeitos da inclusão no Ibovespa ou outros índices da B3.
Quando Utilizar Regressão Descontínua no Mercado Financeiro Brasileiro?
A Regressão Descontínua é particularmente útil no contexto financeiro quando:
- Existem regras claras baseadas em limiares:
- Inclusão/exclusão de índices (Ibovespa, índices de governança da B3)
- Limites regulatórios baseados em valor de mercado ou outros indicadores
- Normas de disclosure que dependem do tamanho da empresa
- Regras de listagem em diferentes segmentos da B3
- A variável de atribuição não pode ser manipulada precisamente:
- Valor de mercado em determinada data
- Ratings de crédito próximos a limiares de investment grade
- Indicadores financeiros usados para classificações regulatórias
- Há descontinuidade clara no tratamento no limiar:
- Obrigações regulatórias específicas
- Elegibilidade para programas ou políticas financeiras
2. Synthetic Control Method: Fundamentos Teóricos
O método Synthetic Control (SC) é uma abordagem desenvolvida para avaliar o efeito de intervenções em estudos de caso comparativos quando unidades tratadas são poucas (às vezes apenas uma) e unidades de controle convencionais podem não ser adequadas.
Princípios do Synthetic Control
O método cria um "controle sintético" - uma combinação ponderada de unidades não tratadas - que se assemelha à unidade tratada em características relevantes antes do tratamento. Este controle sintético serve então como contrafactual para a unidade tratada após a intervenção.
Características principais:
- Transparência: Os pesos usados para construir o controle sintético são determinados objetivamente
- Interpolação não extrapolação: Restrições nos pesos evitam extrapolação para fora do suporte dos dados
- Formalização do processo de seleção de controles: Substitui a seleção ad hoc de unidades de comparação
- Flexibilidade: Pode incorporar tendências temporais e múltiplas características
Figura 2: Ilustração do método Synthetic Control
Fundamentos Metodológicos do Synthetic Control
Considerando J+1 unidades, onde j=1 é a unidade tratada e j=2,...,J+1 são potenciais controles:
- Período pré-tratamento: t = 1,...,T0
- Período pós-tratamento: t = T0+1,...,T
- Variável de resultado: Yjt
- Preditores: Xj = (Zj, Yj1, ..., YjT₀)
O controle sintético é definido pelo vetor de pesos W = (w2, ..., wJ+1)' tal que:
Os pesos são escolhidos para minimizar:
Onde V é uma matriz que determina a importância relativa dos preditores.
# Implementação de Synthetic Control em Python import pandas as pd import numpy as np from sklearn import linear_model import matplotlib.pyplot as plt def synthetic_control(df, unit_column, time_column, outcome_column, treated_unit, treatment_period, predictors=None): """ Implementa o método Synthetic Control Args: df: DataFrame com os dados em formato painel unit_column: Nome da coluna que identifica as unidades time_column: Nome da coluna de tempo outcome_column: Nome da coluna da variável de resultado treated_unit: Identificador da unidade tratada treatment_period: Período em que o tratamento ocorre predictors: Lista de colunas adicionais para usar como preditores além do outcome pré-tratamento Returns: Resultados do Synthetic Control e gráficos """ # Separar períodos pré e pós tratamento pre_treatment = df[df[time_column] < treatment_period] post_treatment = df[df[time_column] >= treatment_period] # Identificar unidades de controle control_units = df[df[unit_column] != treated_unit][unit_column].unique() # Preparar dados para a unidade tratada treated_pre = pre_treatment[pre_treatment[unit_column] == treated_unit] treated_post = post_treatment[post_treatment[unit_column] == treated_unit] # Construir matriz de preditores para unidade tratada e controles X1 = treated_pre.pivot(index=time_column, columns=unit_column, values=outcome_column) X0 = pre_treatment[pre_treatment[unit_column].isin(control_units)].pivot( index=time_column, columns=unit_column, values=outcome_column) # Adicionar outros preditores, se especificados if predictors: for predictor in predictors: pred_treated = pre_treatment[pre_treatment[unit_column] == treated_unit][predictor].mean() pred_controls = pre_treatment[pre_treatment[unit_column].isin(control_units)].groupby(unit_column)[predictor].mean() # Adicionar às matrizes X1[predictor] = pred_treated for unit in control_units: X0[predictor] = pred_controls # Encontrar pesos ótimos usando o método de otimização synth_model = linear_model.Lasso(alpha=0.01, positive=True) synth_model.fit(X0.values, X1.iloc[:, 0].values) weights = synth_model.coef_ / np.sum(synth_model.coef_) # Construir controle sintético synthetic_pre = np.zeros(len(treated_pre)) synthetic_post = np.zeros(len(treated_post)) for i, unit in enumerate(control_units): unit_pre = pre_treatment[pre_treatment[unit_column] == unit][outcome_column].values unit_post = post_treatment[post_treatment[unit_column] == unit][outcome_column].values synthetic_pre += weights[i] * unit_pre synthetic_post += weights[i] * unit_post # Calcular efeito do tratamento treatment_effect = treated_post[outcome_column].values - synthetic_post # Preparar resultados para retorno results = { 'weights': dict(zip(control_units, weights)), 'treated_pre': treated_pre[outcome_column].values, 'treated_post': treated_post[outcome_column].values, 'synthetic_pre': synthetic_pre, 'synthetic_post': synthetic_post, 'treatment_effect': treatment_effect, 'time_pre': treated_pre[time_column].values, 'time_post': treated_post[time_column].values } return results
Verificação de Leitura #2
Qual é o propósito principal do método Synthetic Control?
Aplicação: Impacto do Impeachment na Economia Brasileira
Um exemplo de aplicação do método Synthetic Control no contexto brasileiro seria avaliar o impacto do impeachment da presidente Dilma Rousseff em 2016 sobre indicadores econômicos e financeiros.
Contexto: O impeachment representou uma mudança significativa na política econômica brasileira, com potenciais impactos nos mercados financeiros, investimentos e crescimento econômico.
Setup do Synthetic Control:
- Unidade tratada: Brasil
- Unidades de controle potenciais: Outros países emergentes (México, Chile, Colômbia, Peru, África do Sul, Turquia, etc.)
- Período pré-tratamento: 2010-2016 (1º semestre)
- Período pós-tratamento: 2016 (2º semestre)-2018
- Variáveis de resultado: Índice da bolsa (Ibovespa), taxa de câmbio, CDS (Credit Default Swap), fluxo de investimento estrangeiro
- Preditores: PIB per capita, inflação, taxa de juros, dívida/PIB, crescimento das exportações, índices de governança
Resultados hipotéticos: Comparado ao "Brasil sintético", o Ibovespa real apresentou valorização de 15% acima do esperado, o CDS caiu 100 pontos-base mais que o esperado, e o fluxo de investimento estrangeiro aumentou significativamente, sugerindo que a mudança política teve impacto positivo na percepção dos mercados financeiros sobre o país.
Quando Utilizar Synthetic Control no Mercado Financeiro Brasileiro?
O método Synthetic Control é especialmente útil no contexto financeiro brasileiro quando:
- O foco está em uma unidade específica afetada por uma intervenção:
- Uma empresa específica que passou por uma importante mudança corporativa
- Um setor que foi alvo de uma intervenção regulatória específica
- O mercado financeiro brasileiro como um todo após uma mudança política ou regulatória
- Existem poucas unidades tratadas (às vezes apenas uma):
- Análise de fusões ou aquisições específicas
- Estudos de escândalos corporativos únicos (ex: caso Petrobras na Lava Jato)
- Impacto de grandes eventos econômicos localizados (ex: desastre de Mariana para o setor de mineração)
- Há bons dados pré-tratamento por período prolongado:
- Séries temporais longas disponíveis para a unidade tratada e controles
- Ausência de outros grandes choques no período pré-tratamento
3. Comparação e Aplicações no Mercado Financeiro Brasileiro
Contexto ideal: Quando existem regras bem definidas baseadas em limiares.
Aplicações no mercado brasileiro:
- Efeito da inclusão no Ibovespa sobre liquidez e valorização
- Impacto dos diferentes níveis de governança da B3 (N1, N2, NM) baseados em requisitos mínimos
- Efeito de regras regulatórias baseadas em tamanho (ex: empresas acima/abaixo de determinado valor de mercado)
- Mudanças na divulgação de informações em torno de limiares contábeis
Pontos fortes:
Limitações:
Contexto ideal: Quando se analisa o impacto de uma intervenção sobre uma unidade específica.
Aplicações no mercado brasileiro:
- Impacto de grandes eventos econômicos ou políticos (impeachment, Lava Jato, eleições)
- Efeito de mudanças corporativas específicas (troca de CEO, escândalos)
- Consequências de desastres corporativos (Samarco, Vale)
- Mudanças regulatórias direcionadas a setores específicos
Pontos fortes:
Limitações:
Verificação de Leitura #3
Qual das seguintes situações seria mais adequada para aplicação do método Synthetic Control no mercado financeiro brasileiro?
4. Implementação Prática e Considerações Metodológicas
Ao aplicar os métodos de RD e SC no mercado financeiro brasileiro, é importante considerar alguns aspectos práticos e metodológicos:
Regressão Descontínua (RD)
Synthetic Control (SC)
Desafios Adicionais no Contexto Brasileiro
Alguns desafios específicos para aplicação desses métodos no mercado brasileiro incluem:
- Tamanho do mercado: Número limitado de empresas listadas, reduzindo o poder estatístico para RD e o pool de controles para SC
- Volatilidade macroeconômica: Choques frequentes podem comprometer a estabilidade dos períodos pré-tratamento no SC
- Intervenções múltiplas: Dificuldade em isolar o efeito de uma intervenção específica quando várias ocorrem em períodos próximos
- Qualidade dos dados: Possíveis lacunas e inconsistências nas séries históricas
- Concentração setorial: Alguns setores têm poucas empresas, dificultando a construção de controles sintéticos adequados
Verificação de Leitura #4
Por que é importante realizar testes de manipulação na metodologia de Regressão Descontínua?
5. Estudos de Caso Relevantes
Caso 1: Regressão Descontínua - Níveis de Governança da B3
Um estudo hipotético sobre o impacto da migração para o Novo Mercado da B3 no custo de capital das empresas, utilizando as regras de free float mínimo como fonte de variação exógena.
Contexto: A B3 exige um free float mínimo de 25% para listagem no Novo Mercado. Empresas ligeiramente acima desse limiar têm maior probabilidade de migrar para o segmento mais exigente de governança.
Design de RD Fuzzy:
- Variável de atribuição: Percentual de free float antes da mudança de regras
- Limiar: 25% de free float
- Tratamento: Migração para o Novo Mercado
- Variáveis de resultado: Custo de capital implícito, bid-ask spread, cobertura de analistas
Resultados: Empresas que migraram para o Novo Mercado devido ao atendimento do requisito mínimo de free float experimentaram uma redução de 1,2 pontos percentuais no custo de capital em comparação com empresas similares que ficaram ligeiramente abaixo do limiar.
Caso 2: Synthetic Control - Impacto da Operação Lava Jato na Petrobras
Um estudo hipotético sobre o impacto da Operação Lava Jato no valor de mercado e performance operacional da Petrobras.
Contexto: A Operação Lava Jato, iniciada em 2014, revelou um esquema de corrupção envolvendo a Petrobras, resultando em mudanças significativas na governança e gestão da empresa.
Design de SC:
- Unidade tratada: Petrobras
- Pool de controles: Outras grandes empresas petrolíferas globais (Exxon, Shell, BP, Total, Chevron, etc.)
- Período pré-tratamento: 2010-2014
- Período pós-tratamento: 2014-2018
- Variáveis de resultado: Valor de mercado, razão EV/EBITDA, margem operacional
- Preditores: Tamanho, reservas, produção, investimentos, alavancagem, preço do petróleo (sensibilidade)
Resultados: Após um impacto negativo inicial (queda de 40% no valor de mercado em relação ao contrafactual), a Petrobras apresentou recuperação a partir de 2016, com melhorias significativas em margens operacionais e valorização, sugerindo que as mudanças de governança e gestão tiveram efeito positivo de médio prazo, apesar do choque inicial negativo.
Verificação de Leitura #5
No estudo de caso sobre a Operação Lava Jato e a Petrobras, por que é importante incluir outras empresas petrolíferas globais no pool de controles para o Synthetic Control?
Quiz Final
1. Qual das seguintes situações seria mais adequada para aplicação de Regressão Descontínua no mercado financeiro brasileiro?
2. Na metodologia de Regressão Descontínua Fuzzy, qual a principal diferença em relação à RD Sharp?
3. No método Synthetic Control, como são determinados os pesos para construir o contrafactual?
4. Em uma análise de Regressão Descontínua sobre o efeito da inclusão no Ibovespa, o teste de McCrary (teste de manipulação) mostra aglomeração significativa de empresas logo acima do limiar de inclusão. O que isso sugere?
5. Considerando as limitações do mercado financeiro brasileiro, qual afirmação é VERDADEIRA sobre a aplicação dos métodos de Regressão Descontínua e Synthetic Control neste contexto?
Leituras Recomendadas
- Angrist, J. D., & Pischke, J. S. (2008). Mostly Harmless Econometrics. Princeton University Press. Capítulo 6.
- Imbens, G., & Lemieux, T. (2008). "Regression discontinuity designs: A guide to practice". Journal of Econometrics, 142(2), 615-635.
- Abadie, A., Diamond, A., & Hainmueller, J. (2010). "Synthetic control methods for comparative case studies: Estimating the effect of California's tobacco control program". Journal of the American Statistical Association, 105(490), 493-505.
- Abadie, A., & Gardeazabal, J. (2003). "The economic costs of conflict: A case study of the Basque Country". American Economic Review, 93(1), 113-132.
- Carvalho, C. V., & Martins, O. S. (2018). "Características do comitê de auditoria e o gerenciamento de resultados: um estudo nas empresas listadas na BM&FBOVESPA". Revista Contabilidade & Finanças, 29(77), 219-235.
Para a Próxima Aula
Preparem-se para a última aula do curso, onde discutiremos Machine Learning para Inferência Causal. Leiam Athey & Imbens (2017): "The State of Applied Econometrics: Causality and Policy Evaluation".