Tag

3 fatores Archives - Análise Macro

Seleção de Fatores via Machine Learning no R

By | mercado financeiro

É conhecido que variáveis (comumente ditas como fatores), afetam o excesso de retorno de ações no geral. Um fator bastante difundido é o fator de risco de mercado utilizado no modelo Capital Asset Pricing Model. Nas últimas décadas, a literatura aprofundou-se nos estudos dos fatores que fazem parte da características das empresas, ampliando para o modelo de três fatores de Fama French, que introduziu os fatores Small Minus Big (SMB) e High minus Low (HML). Outros diversos fatores também são utilizados, a depender do mercado a ser investigado. O objetivo do post de hoje será utilizar fatores de investimento em conjunto com uma Regressão de Lasso para ajustar uma série de fatores de risco com o R.

Os fatores de risco são importantes mecanismo para traçar estratégias de investimento, principalmente para entender as características de ativos e antecipar possíveis movimentos de mercado. Como dito, é bem conhecido o fator Risco de Mercado, que leva em conta o risco sistemático produzido por um índice que representa o portfólio de mercado. O fator Small Minus Big (SMB), que representa a diferença do retorno de empresas com baixa capitalização e alta capitalização de mercado. High minus Low (HML), que representa a diferença do retorno de empresas com alto book-to-market e baixo book-to-market.

Outro fatores podem também ser levados em conta, tanto por conta da característica das empresas, quanto por fatores macroeconômicos. Adicionaremos mais três, sendo eles: Winners Minus Losers (WML), que leva em conta o retorno de ações que tiveram altos retornos no passado e ações que tiveram baixo retornos.  Illiquid Minus Liquid (IML) que representa os retornos de ações com baixo liquidez e alta liquidez. E por fim, apenas um representado o fator macroeconômico de juros, que será a taxa de juros livre de risco, também útil para obter o excesso de retorno do ativo e do fator risco de mercado.

Todos os fatores são importados do site da NEFIN, onde também é detalhado a metodologia de criação de cada fator, bem como suas características. Para a ação que será utilizada como variável dependente, escolhemos a ITUB4 de forma totalmente aleatória, representado pelo seu log retorno diário dos preços ajustados.

O modelo utilizado será uma Regressão Lasso, útil para diminuir a limitação da regressão linear, representado pela seguinte equação:

Abaixo, representaremos os códigos para a importação dos dados do ativo selecionado e dos fatores disponibilizados pelo NEFIN.

Após obter todos os dados, nosso objetivo será utilizar a série de funções do universo do Tidymodels para aplicar uma Regressão de Lasso. Primeiro iremos separar os dados de teste e treino, como forma de obter uma ideia do quão bem o modelo ajustou os dados. Selecionaremos o modelo com uma penalidade de 0.0001.

Com as amostras produzidas e o modelo em mãos, podemos rodar com a função fit(), escolhendo a fórmula do modelo e os dados utilizado (no caso a amostra de treino). Obtemos também os valores preditos pelo modelo. Por fim podemos comparar com os dados de teste.

Quer saber mais sobre Finanças?

Veja nossas postagens realizadas sobre o assunto:

E nossos curso aplicados ao Mercado Financeiro:

Referências

Tidy Finance with R. 2022

Modelo 3 Fatores de Fama French

By | mercado financeiro

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.
________________________

 

 

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

Assinar Gratuitamente