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 Criar um Agente Analista Financeiro com LangGraph e Dados da CVM

Este post apresenta a construção de um sistema multiagente para análise financeira automatizada com LangGraph. A partir dos dados das demonstrações contábeis da CVM, mostramos como agentes especializados podem interpretar perguntas, consultar bancos de dados e gerar análises financeiras, simulando o trabalho de um analista.

O que é e como funcionam Sistemas Multi-Agentes

Sistemas multi-agentes (MAS) representam uma nova forma de estruturar aplicações de inteligência artificial, especialmente úteis para lidar com problemas complexos e distribuídos. Em vez de depender de um único agente generalista, esses sistemas são compostos por múltiplos agentes especializados que colaboram, competem ou se coordenam para executar tarefas específicas. Neste post, explicamos o que são os MAS, seus principais componentes (como LLMs, ferramentas e processos) e as arquiteturas mais comuns.

Como criar um Agente de IA coletor de dados

A tecnologia de agentes de IA está democratizando o acesso e a manipulação de dados econômicos complexos, tornando-a acessível mesmo para aqueles sem experiência em programação. Neste post discutimos a criação de agentes de IA para coletar dados econômicos brasileiros usando linguagem natural, como "Qual é a expectativa do IPCA para 2025?".

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.