O objetivo geral deste relatório é resumir a análise descritiva e de quebras estruturais adotadas no artigo. Primeiramente serão analisadas as séries temporais de maneira individual e posteriormente de maneira agrupada.
A análise requer uso de metodologias como estatísticas descritivas
tais como análise univariada, análise multivariada e análise de séries
temporais. Cada passo é fundamental para uma boa compreensão e conclusão
a respeito da pergunta de pesquisa.
Será utilizada a metodologia Box-Jenkins (1970) analisar as séries até chegar na parte dos testes de quebras estruturais. A metodologia Box-Jenkins um processo de identificação de modelos e estimação que consiste em quatro etapas: identificação, estimação, diagnóstico e previsão. O objetivo é escolher a metodologia mais assertiva para se modelar e prever uma série temporal.
Vamos carregar os pacotes para a análise.
# INSTALANDO OS PACOTES #
# INSTALANDO OS PACOTES #
# install.packages("momentS")
# install.packages("nortest")
# install.packages("tseries")
# install.packages("lmtest")
# install.packages("fUnitRoots")
# install.packages("urca")
# install.packages("vars")
# install.packages("aod")
# install.packages("zoo")
# install.packages("strucchange")
# install.packages("readxl")
# install.packages("patchwork")
# devtools::install_gitlab("KevinKotze/sarbcurrent") # Grafico de quebras
# install.packages("changepoint")
# CARREGANDO OS PACOTES #
require(moments)
## Carregando pacotes exigidos: moments
## Warning: package 'moments' was built under R version 4.1.1
require(nortest)
## Carregando pacotes exigidos: nortest
## Warning: package 'nortest' was built under R version 4.1.1
require(tseries)
## Carregando pacotes exigidos: tseries
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
require(lmtest)
## Carregando pacotes exigidos: lmtest
## Carregando pacotes exigidos: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(fUnitRoots)
## Warning: package 'fUnitRoots' was built under R version 4.1.3
library(urca)
##
## Attaching package: 'urca'
## The following objects are masked from 'package:fUnitRoots':
##
## punitroot, qunitroot, unitrootTable
library(vars)
## Warning: package 'vars' was built under R version 4.1.1
## Carregando pacotes exigidos: MASS
## Carregando pacotes exigidos: strucchange
## Carregando pacotes exigidos: sandwich
library(aod)
## Warning: package 'aod' was built under R version 4.1.3
library(zoo)
library(strucchange)
library(readxl)
library(psych)
## Warning: package 'psych' was built under R version 4.1.1
library(openxlsx)
library(Hmisc) #correlacoes e testes
## Warning: package 'Hmisc' was built under R version 4.1.1
## Carregando pacotes exigidos: lattice
## Warning: package 'lattice' was built under R version 4.1.1
## Carregando pacotes exigidos: survival
## Warning: package 'survival' was built under R version 4.1.1
##
## Attaching package: 'survival'
## The following object is masked from 'package:aod':
##
## rats
## Carregando pacotes exigidos: Formula
## Carregando pacotes exigidos: ggplot2
## Warning: package 'ggplot2' was built under R version 4.1.1
##
## Attaching package: 'ggplot2'
## The following objects are masked from 'package:psych':
##
## %+%, alpha
##
## Attaching package: 'Hmisc'
## The following object is masked from 'package:psych':
##
## describe
## The following objects are masked from 'package:base':
##
## format.pval, units
library(ggplot2) #Para criação de gráficos de séries temporais
library(forecast)
library(patchwork) # para unir dois graficos do ggplot2
## Warning: package 'patchwork' was built under R version 4.1.3
##
## Attaching package: 'patchwork'
## The following object is masked from 'package:MASS':
##
## area
library(sarbcurrent) # para grafico de quebras
library(changepoint)
## Warning: package 'changepoint' was built under R version 4.1.3
## Successfully loaded changepoint package version 2.2.4
## See NEWS for details of changes.
library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v tibble 3.1.5 v dplyr 1.0.7
## v tidyr 1.1.4 v stringr 1.4.0
## v readr 2.0.2 v forcats 0.5.1
## v purrr 0.3.4
## Warning: package 'tibble' was built under R version 4.1.1
## Warning: package 'tidyr' was built under R version 4.1.1
## Warning: package 'readr' was built under R version 4.1.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x ggplot2::%+%() masks psych::%+%()
## x ggplot2::alpha() masks psych::alpha()
## x stringr::boundary() masks strucchange::boundary()
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
## x dplyr::select() masks MASS::select()
## x dplyr::src() masks Hmisc::src()
## x dplyr::summarize() masks Hmisc::summarize()
library(lubridate)
## Warning: package 'lubridate' was built under R version 4.1.1
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
# Mudando o diretorio da pasta de trabalho
setwd("C:/Users/mvmar/Documents/Portfolios/Teste_Quebra_Cripto")
# CARREGANDO OS DADOS DA DIVIDA NO R #
library(readxl)
dados <- read_excel("C:/Users/mvmar/Documents/Portfolios/Teste_Quebra_Cripto/dados.xlsx",
col_types = c("date", "numeric",
"numeric"))
# View(dados) # visualiazando dados
class(dados) # classe dos dados
## [1] "tbl_df" "tbl" "data.frame"
head(dados) # primeiras 5 linhas dos dados
## # A tibble: 6 x 3
## Date BTC ETH
## <dttm> <dbl> <dbl>
## 1 2022-01-01 00:00:00 47687. 3770.
## 2 2022-01-02 00:00:00 47345. 3830.
## 3 2022-01-03 00:00:00 46458. 3761.
## 4 2022-01-04 00:00:00 45898. 3794.
## 5 2022-01-05 00:00:00 43569. 3550.
## 6 2022-01-06 00:00:00 43161. 3418.
## CRIAR A SERIE DE TEMPO (ts) ##
# SELECIONAR QUAL LINHA E/OU COLUNA DOS DADOS [linha, coluna]
# (querimos apenas a segunda coluna dos valores R$)
BCT <- ts(data = dados[,2], start = c(2022, 01, 01), frequency = 365)
ETH <- ts(data = dados[,3], start = c(2022, 01, 01), frequency = 365)
## ESTATISTICAS DESCRITIVAS ##
par(family="serif")
g1 <- ggplot(data = dados) + geom_line(aes(Date, BCT))
g2 <- ggplot(data = dados) + geom_line(aes(Date, ETH))
g1 + g2
## Don't know how to automatically pick scale for object of type ts. Defaulting to continuous.
descritivas <- psych::describe(dados[,2:3], quant = c(0.25, 0.75))
descritivas
## vars n mean sd median trimmed mad min max
## BTC 1 346 28819.40 10113.09 23730.42 28325.27 9537.21 15787.28 47686.81
## ETH 2 346 2029.57 774.38 1726.44 1976.62 747.64 993.64 3829.56
## range skew kurtosis se Q0.25 Q0.75
## BTC 31899.53 0.38 -1.49 543.68 19974.60 39385.14
## ETH 2835.93 0.49 -1.22 41.63 1323.68 2785.16
# Exportando as estatisticas descritivas para Excel
# write.xlsx(descritivas, "descritivas.xlsx", row.names = T)
## Histogramas das series
options(scipen = 999)
par(mfrow=c(3,2), mar=c(3,3,2,2), oma=c(3,3,2,2), family="serif")
hist(BCT, col = "white", main = "BCB", xlab = "Dados", ylab = "Frequência")
hist(ETH, col = "white",main = "ETH", xlab = "Dados", ylab = "Frequência")
No caso deste documento o foco será apenas no processo de identificação das séries, consiste na análise gráfica, estatísticas descritivas e testes, como os de quebras estruturais.
Se observa pela no gráfico conjunto que as séries apresentam um padrão muito similar de decrescimento, indicando um processo de tendência determinística de queda ao longo do período. O comportamento das séries é muito parecido, indicando uma correlação positiva entre as séries. Antes da análise da correlação entre as séries serão analisadas suas estatísticas descritivas.
As estatísticas descritivas serão analisadas de maneira generalizada para se obter informações sobre o comportamento das 3 séries. Foram coletadas observações de 346 dias diferentes entre 01/01/2022 a 12/12/2022. O valor mínimo indica o menor valor observado no período e é importante avaliar a diferença dessa medida em relação à média e ao valor máximo (maior valor observado).
Nas 2 séries a diferença entre o valor mínimo e a média não foi tão alta, sendo um pouco maior que o dobro. A diferença entre o valor mínimo e máximo foi menor que 3 vezes, não sendo tão discrepante. Isso é um indicador de que as séries tiveram baixa dispersão no período.
O primeiro quartil indica a concentração de 25% dos valores das observações e estes também se mostraram próximos da média. A mediana é o centro da distribuição, isto é, 50% das observações das séries concentram até aqueles valores. Se a média for próxima da mediana isto também é um indicativo de simetria nas observações. Nas 2 séries a média foi próxima da mediana. O desvio padrão é uma medida padronizada para avaliar o desvio de cada observação em relação média, ou seja, é uma medida para avaliar dispersão nos dados. Observando-se os valores máximo e mínimo verifica-se que ambos estão próximos dos desvios mostrados na tabela 1.
O coeficiente de variação (CV) também é uma medida de dispersão e é calculado pelo quociente da divisão do desvio padrão pela média. Assume-se que valores do CV acima de 30% como dispersos e as séries tiveram valores acima deste limiar, mas não foram tão acima.
Por fim, os coeficientes de assimetria e curtose também avaliam dispersão. Quando o valor da assimetria é zero assume-se que os dados são simétricos em relação à média e todas as séries tiveram assimetrias próximas de zero, ou seja, tiveram baixa assimetria à direita da média.
A curtose, neste caso, é um coeficiente que quando vale 3 assume-se que os dados são mesocúrticos, isto é, que as observações se concentram de maneira regular em relação à média. Quando este valor é menor que 3 assume-se que os dados têm baixa concentração à direita da média e quando é maior que 3 de que os dados têm baixa concentração à esquerda da média. Todas as curtoses foram menores que 3, indicando baixa concentração dos dados à direita (também conhecida como cauda longa à direita).
Os histogramas representam graficamente a análise realizada pelas estatísticas descritivas. De maneira visual a concentração dos dados das séries é bem parecida, principalmente na concentração dos valores à direita. Agora será analisada a relação entre as séries, ou seja, o comportamento conjunto.
Para avaliar o comportamento conjunto das séries será realizada a correlação linear de Pearson, que mede a relação linear entre diferentes variáveis. A correlação linear de Pearson varia de -1 a 1 sendo que valores próximos de -1 indicam relação linear forte negativa, ou seja, que as séries se comportam de maneira inversa e valores próximos de 1 indicam relação linear positiva, isto é, que as séries apresentam comportamento linear positivo.
É importante ressaltar que correlação não mede causalidade, mas apenas a relação linear entre as variáveis. Muitas vezes a relação linear entre as variáveis ocorre de maneira espúria e é necessário cuidado nas interpretações. Segue abaixo a tabela 2 com a matriz de correlações entre as séries.
## Correlacoes
####Correlation Matrix
Data1 <- dados[, c(2:3)]
Data1 <- Data1[, c(1,2)]
Data.cor <- round(cor(Data1),2)
Data.cor
## BTC ETH
## BTC 1.00 0.97
## ETH 0.97 1.00
# Hide upper triangle
upper <- Data.cor
upper[upper.tri(Data.cor)] <-""
upper <- as.data.frame(upper)
upper
## BTC ETH
## BTC 1
## ETH 0.97 1
# Exportando:
# write.xlsx(upper, "correlacoes.xlsx", row.names = T)
# correlates <- rcorr(as.matrix(Data1[,c(1,2,3)]),
# type=c("pearson"))
# correlacoes <- data.frame(round(correlates$r, 2))
# sig_corr <- data.frame(round(correlates$P, 3))
# sig_corr
ggplot(dados, aes(y = BTC, x = ETH)) +
geom_point(color = "red", fill = "red", shape = 21)
Como observado na tabela de correlações, a correlação foi forte e significativas, ou seja, todas as séries tiveram uma relação linear positiva entre si durante o período. Muito provavelmente as quebras estruturais ocorreram no mesmo período ou em períodos muito próximos. A correlação das séries também pode ser observada no gráfico.
Assim como na tabela, pelos gráficos fica evidente a relação linear positiva entre as séries durante o período. Com isso, serão realizados os testes de quebras estruturais para verificar em quais períodos ocorreram.
Segundo Gujarati e Porter (2011) quando se trabalha com dados em séries temporais podem ocorrer mudanças abruptas que não se mantêm de maneira igual ao longo do tempo e estas são conhecidas como quebras estruturais ou mudanças estruturais. Muitas vezes tais mudanças podem ser exógenas, como eleições presidenciais, conflitos internacionais, desastres naturais, entre outras.
Um importante teste para avaliar quebras estruturais em modelos de séries temporais é o teste de Chow (Chow, 1960). Este teste avalia as diferenças entre os somatórios dos quadrados dos resíduos dos períodos antes e pós a possível mudança estrutural, sob a hipótese nula de que há estabilidade nos parâmetros (ausência de quebra estrutural).
O teste de Chow utiliza a estatística F por conta de ser uma razão entre variáveis aleatórias e se a estatística F calculada for maior que a tabela, se rejeita a hipótese nula de estabilidade nos parâmetros. Para a condução do teste é necessário que a série seja estacionária, isto é, que tenha média e variância constantes ao longo do tempo. Uma limitação do teste de Chow é a suposição de que já se conheça os pontos de quebra estrutural. No caso em que não se sabe os pontos de quebra Bai e Perron (1998) montaram uma extensão do teste, em que se estima as datas de quebra e a construção de testes que permitem inferir sobre a presença de mudança e o número de quebras.
Bai e Perron (1998) testam a hipótese nula de não mudança estrutural contra a hipótese alternativa de (k+1) mudanças e isso é muito útil pois permite a construção de estratégias de modelagem para a especificação do número apropriado de alterações na série ao longo do tempo. Os autores desenvolveram um método que estima sucessivamente cada ponto de quebra.
Neste trabalho será utilizado o método proposto por Bai e Perron (1998) para testar a presença de quebras estruturais nas séries. Para testar a estacionaridade nas séries será empregado o teste de Dickey-Fuller aumento (teste ADF) (Dickey e Fuller, 1981), cuja hipótese nula é a de que a série possui presença raiz unitária, isto é, é não estacionária. Este teste será conduzido assumindo as componentes de tendência e intercepto, principalmente por conta do comportamento decrescente que as séries possuem ao longo do período analisado.
## Testes de estacionaridade
adf_BCT <- ur.df(BCT, lags = 12, type = c("trend"),
selectlags = "AIC")
summary(adf_BCT) # foi detectada presença de raiz unitária.
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression trend
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4266.6 -335.5 12.5 445.3 5543.2
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1239.22687 630.02243 1.967 0.0500 .
## z.lag.1 -0.02994 0.01375 -2.178 0.0301 *
## tt -2.60908 1.40697 -1.854 0.0646 .
## z.diff.lag 0.01331 0.05510 0.242 0.8092
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1033 on 329 degrees of freedom
## Multiple R-squared: 0.01447, Adjusted R-squared: 0.00548
## F-statistic: 1.61 on 3 and 329 DF, p-value: 0.1869
##
##
## Value of test-statistic is: -2.1775 2.2157 2.414
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau3 -3.98 -3.42 -3.13
## phi2 6.15 4.71 4.05
## phi3 8.34 6.30 5.36
adf_ETH <- ur.df(ETH, lags = 12, type = c("trend"),
selectlags = "AIC")
summary(adf_ETH) # foi detectada presença de raiz unitária.
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression trend
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -423.99 -38.87 -0.76 49.90 291.93
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 77.409220 39.519722 1.959 0.05099 .
## z.lag.1 -0.027868 0.012154 -2.293 0.02248 *
## tt -0.152086 0.093060 -1.634 0.10316
## z.diff.lag1 0.032921 0.054620 0.603 0.54711
## z.diff.lag2 -0.001526 0.054413 -0.028 0.97764
## z.diff.lag3 0.143277 0.054169 2.645 0.00856 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 89.19 on 327 degrees of freedom
## Multiple R-squared: 0.03388, Adjusted R-squared: 0.0191
## F-statistic: 2.293 on 5 and 327 DF, p-value: 0.04537
##
##
## Value of test-statistic is: -2.293 2.2246 2.7646
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau3 -3.98 -3.42 -3.13
## phi2 6.15 4.71 4.05
## phi3 8.34 6.30 5.36
## Series diferenciadas
adf_dBCT <- ur.df(diff(BCT), lags = 12, type = c("trend"),
selectlags = "AIC")
summary(adf_dBCT) # foi detectada presença de raiz unitária.
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression trend
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4230.5 -399.8 53.5 426.4 5415.8
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -127.6708952 120.7497746 -1.057 0.2912
## z.lag.1 -1.0966733 0.1753976 -6.253 0.00000000129 ***
## tt 0.2311350 0.5897055 0.392 0.6954
## z.diff.lag1 0.1231359 0.1670567 0.737 0.4616
## z.diff.lag2 0.1151611 0.1557300 0.739 0.4602
## z.diff.lag3 0.1572356 0.1444649 1.088 0.2772
## z.diff.lag4 0.1155669 0.1329441 0.869 0.3853
## z.diff.lag5 0.0844629 0.1203783 0.702 0.4834
## z.diff.lag6 0.0759918 0.1073119 0.708 0.4794
## z.diff.lag7 0.0551420 0.0937608 0.588 0.5569
## z.diff.lag8 0.0007633 0.0766081 0.010 0.9921
## z.diff.lag9 0.1396934 0.0544375 2.566 0.0107 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1029 on 320 degrees of freedom
## Multiple R-squared: 0.5249, Adjusted R-squared: 0.5086
## F-statistic: 32.14 on 11 and 320 DF, p-value: < 0.00000000000000022
##
##
## Value of test-statistic is: -6.2525 13.0363 19.5543
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau3 -3.98 -3.42 -3.13
## phi2 6.15 4.71 4.05
## phi3 8.34 6.30 5.36
adf_dETH <- ur.df(diff(ETH), lags = 12, type = c("trend"),
selectlags = "AIC")
summary(adf_dETH) # foi detectada presença de raiz unitária.
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression trend
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -426.22 -42.43 -0.23 48.83 299.20
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -10.76076 10.48250 -1.027 0.3054
## z.lag.1 -0.87223 0.09423 -9.257 <0.0000000000000002 ***
## tt 0.02971 0.05154 0.577 0.5647
## z.diff.lag1 -0.10664 0.07677 -1.389 0.1657
## z.diff.lag2 -0.12544 0.05445 -2.304 0.0219 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 89.85 on 327 degrees of freedom
## Multiple R-squared: 0.4992, Adjusted R-squared: 0.4931
## F-statistic: 81.48 on 4 and 327 DF, p-value: < 0.00000000000000022
##
##
## Value of test-statistic is: -9.2566 28.5623 42.843
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau3 -3.98 -3.42 -3.13
## phi2 6.15 4.71 4.05
## phi3 8.34 6.30 5.36
Como observado, com as séries em nível as hipóteses nulas de não estacionaridade não foram rejeitadas. Com isso, é necessário diferenciar as séries antes de conduzir os testes de quebra estrutural para não incorrer em conclusões incorretas por conta da variabilidade não constante.
Após a diferenciação das séries, verificou-se a rejeição das hipóteses nulas de presença de raiz unitária nas séries, portanto, após a diferenciação todas tiveram médias e variâncias constantes. Os testes de quebras estruturais serão conduzidos com as séries diferenciadas. Segue abaixo a tabela 5 com o teste de Chow estendido por Bai e Perron (1998) com o número de quebras e as suas respectivas datas para cada série.
Agora vamos avaliar as quebras estruturais nas duas séries.
## TESTES DE QUEBRA ESTRUTURAL ##
## 1. BCT
# ols-cusum
A <- efp(diff(BCT)~1,type="OLS-CUSUM",dynamic=TRUE)
plot(A)
# Teste F
B <- Fstats(diff(BCT)~1)
plot(B)
# Breakpoints
C <- breakpoints(diff(BCT)~1)
plot(C)
bp1 <- breakpoints(C, breaks = 5)
bp1
##
## Optimal 6-segment partition:
##
## Call:
## breakpoints.breakpointsfull(obj = C, breaks = 5)
##
## Breakpoints at observation number:
## 51 109 168 223 274
##
## Corresponding to breakdates:
## 2022.14 2022.299 2022.46 2022.611 2022.751
# plot(bp1$call)
fm0 <- lm(diff(BCT)~1)
coef(fm0)
## (Intercept)
## -88.55645
fac <- breakfactor(bp1)
fm1 <- lm(diff(BCT) ~ fac - 1)
coef(fm1)
## facsegment1 facsegment2 facsegment3 facsegment4 facsegment5 facsegment6
## -208.06924 74.12237 -378.92773 97.91229 -105.07276 -26.89112
###########
## 2. ETH
# ols-cusum
X <- efp(diff(ETH)~1,type="OLS-CUSUM",dynamic=TRUE)
plot(X)
# Teste F
Y <- Fstats(diff(ETH)~1)
plot(Y)
# Breakpoints
K <- breakpoints(diff(ETH)~1)
plot(K)
bp2 <- breakpoints(K, breaks = 5)
bp2
##
## Optimal 6-segment partition:
##
## Call:
## breakpoints.breakpointsfull(obj = K, breaks = 5)
##
## Breakpoints at observation number:
## 51 108 168 223 274
##
## Corresponding to breakdates:
## 2022.14 2022.296 2022.46 2022.611 2022.751
fm1 <- lm(diff(ETH)~1)
coef(fm1)
## (Intercept)
## -7.308471
fac <- breakfactor(bp1)
fm1 <- lm(diff(ETH) ~ fac - 1)
coef(fm1)
## facsegment1 facsegment2 facsegment3 facsegment4 facsegment5 facsegment6
## -23.4486443 8.6884429 -35.3238825 17.5201760 -13.3559403 -0.3918148
#########
## Grafico de quebras
quebraBTC <- read_excel("BTCUSD2_quebra.xlsx")
quebraETH <- read_excel("ETH-USD_quebra.xls")
base <- data.frame(quebraBTC$Date, quebraBTC$Quebra, quebraETH$quebra)
base <- rename(base, "Date" = "quebraBTC.Date", "BCT" = "quebraBTC.Quebra",
"ETH" = "quebraETH.quebra")
series <- ts(data = base[,2:3], start = c(2022, 01, 01), end = c(2022, 12,12),
frequency = 365)
g3 <- ggplot(data = base) + geom_line(aes(Date, BCT))
g4 <- ggplot(data = base) + geom_line(aes(Date, ETH))
g3 + g4
#########
############################ FIM ##########################
Como observado pela tabela de resultados, as quebras estruturais nas séries foram em datas muito próximas, corroborando com as correlações calculadas anteriormente. Isso indica que os choques ocorridos no período tiveram efeitos sobre as em datas similares nas 2 grandes criptomoedas do mercado.
As quebras da Bitcoin em 2022 ocorreram em 20/fev, 19/abr, 16/jun, 11/ago e 01/out. Já as quebras da ETH ocorreram em 20/fev, 18/abr, 17/jun, 11/ago e 01/out.
Agora cabe a nós tentar identificar os problemas que ocorreram que ajudaram ocorrer tais quebras.
Muito obrigado!
BOX, G.E.P., JENKINS, G.M. Times Series, Forecasting and Control. San Francisco, Holden-Day, 1970.
BAI J.; PERRON P. Estimating and Testing Linear Models With Multiple Structural Changes. Econometrica, 66, 47-78, 1998.
CHOW, Gregory C. “Tests of equality between sets of coefficients in two linear regressions”. Econometrica, v. 28, n. 3., p. 591-605, 1960.
DICKEY, D. A. and FULLER, W. A. Likelihood Ratio Statistics for Autoregressive Time Series with a Unit Root. Econometrica, 49, 1057–1072, 1981.