Packages

Below are the packages used for the development of the research.

library(quantmod)
## Warning: package 'quantmod' was built under R version 4.1.2
## Carregando pacotes exigidos: xts
## Warning: package 'xts' was built under R version 4.1.2
## Carregando pacotes exigidos: zoo
## Warning: package 'zoo' was built under R version 4.1.2
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## Carregando pacotes exigidos: TTR
## Warning: package 'TTR' was built under R version 4.1.2
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(PerformanceAnalytics)
## 
## Attaching package: 'PerformanceAnalytics'
## The following object is masked from 'package:graphics':
## 
##     legend
library(data.table)
## 
## Attaching package: 'data.table'
## The following objects are masked from 'package:xts':
## 
##     first, last
library(RColorBrewer)
library(ggplot2)
library(reshape2)
## 
## Attaching package: 'reshape2'
## The following objects are masked from 'package:data.table':
## 
##     dcast, melt
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:data.table':
## 
##     between, first, last
## The following objects are masked from 'package:xts':
## 
##     first, last
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(gridExtra)
## 
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
## 
##     combine
library(knitr)

Ibovespa Return

First, the return of the IBOVESPA was analyzed.The index had a behavior with small variations during the period.The greatest variation occurred on September 8, probably due to Brazilian political instability.

#Ibovespa data collection
BenchMarks = '^BVSP'
Ibov= NULL
for (benckmark in BenchMarks) {
  Ibov = cbind(Ibov,
               getSymbols.yahoo(BenchMarks, from = '2021-8-30', to = '2021-9-9' , auto.assign = F)[,6])
}

#Naming columns
colnames(Ibov) = c('Ibov')
#Ibovespa return
Ret_Ibov = dailyReturn(Ibov) * 100
plot(Ret_Ibov)

Shares Return

The return on the companies’ shares was calculated during the event window.: 1)JBS (JBSS3); 2) Marfrig (MLFG3); 3) BRF (BRFS3); 4)Minerva Foods (BEEF3).

#Share prices data
MRFG3 = getSymbols.yahoo("MRFG3.SA", from = '2021-8-30', to = '2021-9-9', auto.assign = F)[,6]
BEEF3 = getSymbols.yahoo("BEEF3.SA", from = '2021-8-30', to = '2021-9-9', auto.assign = F)[,6]
JBSS3 = getSymbols.yahoo("JBSS3.SA", from = '2021-8-30', to = '2021-9-9', auto.assign = F)[,6]
BRFS3 = getSymbols.yahoo("BRFS3.SA", from = '2021-8-30', to = '2021-9-9', auto.assign = F)[,6]

#Marfrig return
Ret_MRFG3 = dailyReturn(MRFG3) * 100

#Minerva return
Ret_BEEF3 = dailyReturn(BEEF3) * 100

#JBS return
Ret_JBSS3 = dailyReturn(JBSS3) * 100

#BRFoods return
Ret_BRFS3 = dailyReturn(BRFS3) * 100

Comparison of IBbovespa and assets

To make the comparison between the shares of the companies and the IBOVESPA, the databases must be organized as a Data Frame.In addition, a variable with specific dates was created and the asset return tables were made available.

#Data column
Dias_semana = format(as.Date(c('2021-08-30', '2021-08-31', '2021-09-01',
                               '2021-09-02', '2021-09-03', '2021-09-06', '2021-09-08'), format="%Y-%m-%d"))


#format as Data Frame
Ret_BEEF3 = as.data.frame(Ret_BEEF3)
Ret_BRFS3 = as.data.frame(Ret_BRFS3)
Ret_Ibov = as.data.frame(Ret_Ibov)
Ret_JBSS3 = as.data.frame(Ret_JBSS3)
Ret_MRFG3 = as.data.frame(Ret_MRFG3)

#Ibov return table
Ret_Ibov$Data = Dias_semana
kable(head(Ret_Ibov), format = "markdown")
daily.returns Data
2021-08-30 0.0000000 2021-08-30
2021-08-31 -0.8009020 2021-08-31
2021-09-01 0.5177596 2021-09-01
2021-09-02 -2.2772957 2021-09-02
2021-09-03 0.2194091 2021-09-03
2021-09-06 0.8004584 2021-09-06
#Shares return tables
Ret_BEEF3$Data = Dias_semana
kable(Ret_BEEF3, format = "markdown")
daily.returns Data
2021-08-30 0.0000000 2021-08-30
2021-08-31 -0.9478563 2021-08-31
2021-09-01 -1.6746308 2021-09-01
2021-09-02 -3.6496392 2021-09-02
2021-09-03 -1.6414161 2021-09-03
2021-09-06 6.6752326 2021-09-06
2021-09-08 -1.2033708 2021-09-08
Ret_BRFS3$Data = Dias_semana
kable(Ret_BRFS3, format = "markdown")
daily.returns Data
2021-08-30 0.0000000 2021-08-30
2021-08-31 -0.6785411 2021-08-31
2021-09-01 2.5619129 2021-09-01
2021-09-02 -1.5820192 2021-09-02
2021-09-03 0.5499197 2021-09-03
2021-09-06 0.8834666 2021-09-06
2021-09-08 -2.5020892 2021-09-08
Ret_JBSS3$Data = Dias_semana
kable(Ret_JBSS3, format = "markdown")
daily.returns Data
2021-08-30 0.0000000 2021-08-30
2021-08-31 -0.0320778 2021-08-31
2021-09-01 0.0000000 2021-09-01
2021-09-02 -3.0157254 2021-09-02
2021-09-03 2.8779434 2021-09-03
2021-09-06 3.2154278 2021-09-06
2021-09-08 -2.5856667 2021-09-08
Ret_MRFG3$Data = Dias_semana
kable(Ret_MRFG3[,1:2], format = "markdown")
daily.returns Data
2021-08-30 0.0000000 2021-08-30
2021-08-31 -2.2889933 2021-08-31
2021-09-01 4.8804395 2021-09-01
2021-09-02 -2.1405214 2021-09-02
2021-09-03 1.4740682 2021-09-03
2021-09-06 2.5773360 2021-09-06
2021-09-08 -0.1370535 2021-09-08

Graphs

Finally, the GGplot2 package was used to develop comparative graphs.

#Share Graphs
Graf_BEEF3=ggplot() + 
  geom_line(data = Ret_BEEF3,aes(group = 1, Data, daily.returns, colour = "Ret_BEEF3"), size = 0.5)+
  geom_line(data = Ret_Ibov, aes(Data, daily.returns, group = 1, colour = "Ret_Ibov"), size = 0.5)+
  theme_bw() +
  labs(x = "Date", y = "Return",  title = 'Return BEEF3')+
  theme(axis.text.x = element_text(angle = 90), plot.title = element_text(hjust = 0.5))+
  scale_colour_manual("",breaks = c("Ret_BEEF3", "Ret_Ibov"),values = c("red", "blue"))

Graf_BRFS3 = ggplot() + 
  geom_line(data = Ret_BRFS3, aes(group = 1, Data, daily.returns, colour = "Ret_BRFS3"), size = 0.5)+
  geom_line(data = Ret_Ibov, aes(Data, daily.returns, group = 1, colour = "Ret_Ibov"), size = 0.5)+
  theme_bw()+
  labs(x = "Date", y = "Return",  title = 'Return BRFS3')+
  theme(axis.text.x = element_text(angle = 90), plot.title = element_text(hjust = 0.5))+
  scale_colour_manual("",breaks = c("Ret_BRFS3", "Ret_Ibov"),values = c("red", "blue"))

Graf_JBSS3 = ggplot() + 
  geom_line(data = Ret_JBSS3, aes(group = 1, Data, daily.returns, colour = "Ret_JBSS3"), size = 0.5)+
  geom_line(data = Ret_Ibov, aes(Data, daily.returns, group = 1, colour = "Ret_Ibov"), size = 0.5)+
  labs(x = "Date", y = "Return",  title = 'Return JBSS3')+
  theme_bw()+
  scale_colour_manual("", breaks = c("Ret_JBSS3", "Ret_Ibov"),values = c("red", "blue"))+
  theme(axis.text.x = element_text(angle = 90), plot.title = element_text(hjust = 0.5))

Graf_MRFG3 = ggplot() + 
  geom_line(data = Ret_MRFG3, aes(group = 1, Data, daily.returns, colour = "Ret_MRFG3"), size = 0.5)+
  geom_line(data = Ret_Ibov, aes(Data, daily.returns, group = 1, colour = "Ret_Ibov"), size = 0.5)+
  labs(x = "Date", y = "Return",  title = 'Return MRFG3')+
  theme_bw()+
  scale_colour_manual("",breaks = c("Ret_MRFG3", "Ret_Ibov"),values = c("red", "blue"))+
  theme(axis.text.x = element_text(angle = 90), plot.title = element_text(hjust = 0.5))

grid.arrange(Graf_MRFG3, Graf_BEEF3, Graf_BRFS3, Graf_JBSS3, ncol=2, nrow=2)

Results and Analysis

It can be seen that, from August 30th to September 1st, the shares of the selected companies presented different behaviors, since the assets MRFG3 and BRFS3 had a positive return while the asset BEEF3 presented negative returns and the JBSS3 maintained the value constant. On September 1, after the close of trading, the news that the Ministry of Agriculture was investigating suspected cases of Mad Cow Disease was announced. On September 2, the fact was priced in by the market in its negotiations, causing a significant drop in the return on assets.

On Saturday, September 4th, the cases were confirmed.In this context, China suspended imports of Brazilian beef.The Ministry of Agriculture reported that these were isolated cases, therefore, they do not constitute a health risk to Brazilian livestock. In addition, the companies stated that the suspension of exports to China did not pose a risk to their operations, because Chinese demand could be supplied by the meatpackers of these organizations installed abroad, in countries such as Argentina and Uruguay. As result, on Monday, September 6, these shares closed with a higher return than the Ibovespa index.

On the last day analyzed, there was a considerable drop in most stocks listed on B3 due to the political situation in the country.

References

https://oglobo.globo.com/economia/mesmo-apos-caso-de-vaca-louca-acoes-de-frigorificos-sobem-bolsa-fecha-em-alta-de-080-dolar-cai-fica-em-5176-25186512

https://www.istoedinheiro.com.br/ministerio-da-agricultura-investiga-caso-suspeito-de-vaca-louca-no-brasil/

https://www.istoedinheiro.com.br/brasil-confirma-2-casos/