Modelo 3 Fatores de Fama French

Os modelos multifatores de precificação de ativos, muito conhecidos na finanças, utilizam fatores de risco para calcular o retorno de um ativo. Modelos mais simples tais como o Modelo de Mercado, ou mesmo o mais conhecido no mundo das finanças, o Capital Asset Pricing Model, utilizam o conhecido Beta, fator de risco do mercado, para precificação. No post de hoje, iremos estender o CAPM e fazer um exercício de um modelo também conceituado, que utiliza mais de um fator para a precificação, o modelo Fama French de 3 fatores.

Como uma extensão do CAPM, o modelo Fama French relaciona o excesso de retorno (diferença do retorno do ativo com o retorno livre de risco) em relação ao prêmio pelo risco do mercado, além também de dois outro fatores: HML (High minus Low), sendo a diferença entre os retornos das firmas que tenham um alto book-to-market e baixo book-to-market; e SMB (Small minus Big Factor), sendo a diferença entre empresas grandes e pequenas.

     $$r_i - r_f = \alpha_i + \beta_iM(r_m - r_f) + \beta_iHML \ r_HML + \beta_iSMB \ r_SMB + e_i$$

A sensitividade de cada fator é medido pelos $\beta$ da equação, sendo possível mensurar os riscos que uma carteira de ativos sofrem, bem como traçar estratégias com as informações da influência de cada fator de risco.

Agora, vamos realizar um exemplo dentro do R. O site https://mba.tuck.dartmouth.edu/pages/faculty/ken.french/data_library.html facilita o trabalho realizando cálculos dos fatores de risco para diversos países. Como exemplo, utilizaremos ações e os fatores do EUA para demonstrar o cálculo do modelo Fama French. Para o Brasil, o NEFIN-USP realiza os cálculos para os fatores.

# Carrega os pacotes
library(tidyverse)
library(quantmod)
library(permutations)
library(lubridate)
library(tidyquant)
library(broom)
# Importa os dados baixados

factors <- read_csv("F-F_Research_Data_Factors.csv", skip=3) %>%
rename(date = ...1) %>%
mutate_at(vars(-date), as.numeric) %>%
mutate(date = ymd(parse_date_time(date, '%Y%m')),
date = rollback(date + months(1))) %>%
drop_na()
# Coleta os preços

symbols <- c("SPY","EFA", "IJS", "EEM","AGG")

prices <- tq_get(symbols,
get = "stock.prices",
from = "2012-12-31",
to = "2019-01-01")

# Transforma em retornos

asset_returns <- prices %>%
group_by(symbol) %>%
tq_transmute(select = adjusted,
mutate_fun = periodReturn,
period = "monthly",
indexAt = "lastof",
type = "log")
# Calcula o retorno do portfólio

portfolio_return <- asset_returns %>%
tq_portfolio(assets_col = symbol,
returns_col = monthly.returns,
col_rename = "returns",
rebalance_on = "quarters")
# Junta os data frame

ff_portfolio <- portfolio_return %>%
left_join(factors, by = "date") %>%
mutate(mkt_rf = `Mkt-RF`/100,
smb = SMB/100,
hml = HML/100,
rf = RF/100,
r_excess = round(returns - rf, 4)) %>%
select(- rf)
# Cria o modelo

ff_model <- ff_portfolio %>%
lm(r_excess ~ mkt_rf + smb + hml, data = .) %>%
augment() %>%
mutate(date = ff_portfolio$date,
returns = ff_portfolio$returns)


# Plota

ff_model %>%
ggplot(aes(x = date))+
geom_line(aes(y = .fitted,
color = "Retornos"))+
geom_line(aes(y = returns,
color = "Retornos FF"))+
labs(title = "Comparação - Retornos calculado pelo Modelo de 3 Fatores Fama French x Retornos reais",
x = "",
y = "",
caption = "Elaborado por analisemacro.com.br com dados do Yahoo Finance")+
theme_minimal()+
theme(legend.title = element_blank())

 

________________________

(*) Para entender mais sobre finanças e modelagem, confira nosso curso de R para o Mercado Financeiro.
________________________

 

 

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Como se comportou a Taxa de Participação no Brasil nos últimos anos? Uma Análise com a Linguagem R

O objetivo deste estudo é analisar a evolução da Taxa de Participação no Brasil, contrastando-a com a Taxa de Desocupação e decompondo suas variações para entender os vetores (populacionais e de força de trabalho) que influenciam o comportamento atual do mercado de trabalho. Para isso, utilizamos a linguagem R em todo o processo, desde a coleta e o tratamento das informações até a visualização dos resultados, empregando os principais pacotes disponíveis no ecossistema da linguagem.

Como se comportou a inflação de serviços no Brasil nos últimos anos?

Uma análise econométrica da inflação de serviços no Brasil comparando os cenários de 2014 e 2025. Utilizando uma Curva de Phillips própria e estimativas da NAIRU via filtro HP, investigamos se o atual desemprego nas mínimas históricas repete os riscos do passado. Entenda como as expectativas de inflação e o hiato do desemprego explicam o comportamento mais benigno dos preços atuais em relação à década anterior.

Como se comportou o endividamento e a inadimplência nos últimos anos? Uma análise utilizando a linguagem R

Neste exercício realizamos uma análise sobre a inadimplência dos brasileiros no período recente, utilizando a linguagem R para examinar dados públicos do Banco Central e do IBGE. Investigamos a evolução do endividamento, da inadimplência e das concessões de crédito, contextualizando-os com as dinâmicas da política monetária (Taxa Selic) e do mercado de trabalho (renda e desemprego).

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.