Gestão de Risco

 UNIVERSIDADE FEDERAL DA PARAÍBA

Autor

Natan Henrique Alves

Data de Publicação

14 de junho de 2024

Código
remove(list=ls())
par(mfrow=c(1,1))
options(scipen=999)
options(max.print = 100000)
require(fPortfolio)
library(tseries)
library(tidyverse)
library(fBasics)
library(knitr)
library(xts)
library(kableExtra)

Definindo o Recorte Temporal da Serie

Código
# Intervalo de Tempo dos dados
dataini <- "2024-03-07"
datafim <- "2024-07-17"

Criando a Tabela de Indicadores

Código
# Lista de Empresas que serão Requeridas
empresas <- list(vivo = "vivt3.sa", 
                 totvs = "tots3.sa", 
                 weg = "wege3.sa", 
                 tim = "tims3.sa", 
                 localiza = "rent3.sa", 
                 transmissao_paulista = "trpl3.sa", 
                 cemig = "cmig3.sa",
                 engie = "egie3.sa", 
                 taesa = "taee3.sa", 
                 cpfl = "cpfe3.sa", 
                 cyrela = "cyre3.sa", 
                 aliansce = "alos3.sa", 
                 ccr = "ccro3.sa", 
                 multiplan = "mult3.sa", 
                 eztc = "eztc3.sa", 
                 suzano = "suzb3.sa", 
                 vibra = "vbbr3.sa", 
                 klabin = "klbn3.sa", 
                 csn_mineracao = "cmin3.sa", 
                 gerdau = "ggbr3.sa",
                 slc = "slce3.sa",
                 fleury = "flry3.sa",
                 hypera = "hype3.sa",
                 minerva = "beef3.sa",
                 arezo = "arzz3.sa")

# Loop de busca para obter os dados e calcular os retornos
retornos <- lapply(empresas, function(ticker) {
  data <- na.omit(get.hist.quote(instrument = ticker, quote = "Close", start = dataini, end = datafim))
  diff(log(data))
})
time series ends   2024-07-16
time series ends   2024-07-16
time series ends   2024-07-16
time series ends   2024-07-16
time series ends   2024-07-16
time series ends   2024-07-16
time series ends   2024-07-16
time series ends   2024-07-16
time series ends   2024-07-16
time series ends   2024-07-16
time series ends   2024-07-16
time series ends   2024-07-16
time series ends   2024-07-16
time series ends   2024-07-16
time series ends   2024-07-16
time series ends   2024-07-16
time series ends   2024-07-16
time series ends   2024-07-16
time series ends   2024-07-16
time series ends   2024-07-16
time series ends   2024-07-16
time series ends   2024-07-16
time series ends   2024-07-16
time series ends   2024-07-16
time series ends   2024-07-16
Código
# Checando tamanho da amostra
length(retornos$vivo)
[1] 90
Código
# Função para calcular indicadores
calcular_indicadores <- function(retorno) {
  risco <- sd(retorno) / mean(retorno)
  retorno_medio <- mean(retorno) * 100
  volatilidade <- (sd(retorno) * 100) * sqrt(252)
  list(risco = risco, retorno_medio = retorno_medio, volatilidade = volatilidade)
}

# Calcular indicadores para todas as empresas
indicadores <- lapply(retornos, calcular_indicadores)

# Criar data frame final
df2 <- data.frame(
  Empresas = c("Vivo", "Totvs", "Weg", "Tim", "Localiza", 
               "Transmissão Paulista", "Cemig", "Engie", "Taesa", "CPFL", "Cyrela", 
               "Aliansce", "CCR", "Multiplan", "EZTec", "Suzano", 
               "Vibra Energia", "Klabin", "CSN Mineração", "Gerdau", "Slc", "Fleury",
               "Hypera", "Minerva", "Arezo"),
  Retorno = sapply(indicadores, `[[`, "retorno_medio"),
  Risco = sapply(indicadores, `[[`, "risco"),
  Volatilidade = sapply(indicadores, `[[`, "volatilidade")
)

# Usar kable para criar a tabela e kableExtra para formatá-la
kable(df2[,-1], format = "html") |> 
  kable_styling(bootstrap_options = c("striped", "hover", "condensed")) |> 
  row_spec(0, background = "#2166AC") |>   # Cabeçalho da tabela em azul
  row_spec(1:5, background = "#4393C3") |>    # Cabeçalho da tabela em azul
  row_spec(6:10, background = "#92C5DE") |>
  row_spec(11:15, background = "#D1E5F0") |> 
  row_spec(16:20, background = "#E7D4E8") |> 
  row_spec(21:25, background = "#FFAABB")
Retorno Risco Volatilidade
vivo -0.0765681 -19.536172 23.74586
totvs -0.0576149 -27.977062 25.58803
weg 0.2612269 4.254763 17.64386
tim -0.1120233 -14.489860 25.76753
localiza -0.1643344 -11.318074 29.52578
transmissao_paulista -0.0034041 -420.217698 22.70783
cemig 0.1736197 9.308681 25.65591
engie 0.1427441 8.682088 19.67355
taesa -0.0199521 -38.835584 12.30038
cpfl -0.0311073 -43.726992 21.59294
cyrela -0.1617305 -12.859589 33.01560
aliansce -0.0951991 -15.712669 23.74559
ccr -0.0763152 -17.551065 21.26253
multiplan -0.0489248 -31.329678 24.33241
eztc -0.0728741 -32.775507 37.91601
suzano -0.0917103 -25.558031 37.20882
vibra -0.0550685 -30.824057 26.94592
klabin 0.0602318 20.871957 19.95673
csn_mineracao -0.1221805 -19.074082 36.99525
gerdau 0.0299727 49.456179 23.53132
slc 0.0115442 128.714347 23.58791
fleury 0.0035442 379.010682 21.32425
hypera -0.1385065 -14.161193 31.13654
minerva 0.0378357 62.457441 37.51340
arezo -0.1059380 -18.091487 30.42471