Founder - Quantl Trading | Ph.D. Candidate - K-State
lucrar com discrepâncias momentâneas entre os preços de dois ou mais ativos/derivativos
tanto normalidade quanto discrepâncias são identificadas por meio de técnicas estatísticas
área fértil para modelagem matemática e computacionalmente intensiva
pode ser bastante útil para formar portfólios (quando aplicada a vários ativos)
Encontrar pares cujos ativos caminham juntos
Identificar momentos de discrepâncias
Estabelecer regra de trading
Técnicas: distância, correlação, cointegração (reversão a média), cópulas, etc
Seleção de Pares:
Trading:
Testar se há estacionariedade nos resíduos de um modelo linear formado por duas séries que, sozinhas, são não-estacionárias
Isso faz com que tenhamos um comportamento de reversão a média para a relaçao dos dois ativos
Seleção de Pares:
Trading:
Balanceamento:
estimar o \(\beta_1\) (alternativa: Kalman filter)
desbalanceamento financeiro dos lotes
alto número de falsos positivos nos testes quando empregando data mining
Nos permite modelar a interdependência de dois (ou mais) ativos calculando a probabilidade de observar um determinado retorno para o ativo Y quando os retornos do ativo X estão em determinado patamar e vice-versa
\(C(y,x) = Pr[F(Y) \le F(y), F(X) \le F(x)]\)
É bem flexível no sentido de que podemos aproximar comportamentos bastante específicos do mercado financeiro, ex: a força da correlação entre dois ativos aumenta em períodos de crise ou de alta
não incorpora a variável tempo
sensibilidade à especificação da cópula
pode ser sensível a outliers
Ma, B. and Ślepaczuk, R. (2022) - The profitability of pairs trading strategies on Hong-Kong stock market: distance, cointegration, and correlation methods
| method | Transactions | Profit | Sharpe_Ratio | Drawdown |
|---|---|---|---|---|
| Copula | 498 | 7.057% | 0.098% | 24.0% |
| Cointegration | 126 | 4.506% | 0.179% | 3.9% |
Opinião:
Os papers no tema não especificam, nem disponibilizam como os backtests foram feitos
O mundo real é muito complexo para caber em um modelo matemático
Experiência conta muito
Técnicas isoladas, ainda que sofisticadas, nunca serão bala-de-prata para gerar excesso de retornos
Riscos inerentes à estratégia: riscos de mercado, assimetria e liquidez
# carregando bibliotecas necessárias
library(quantmod) # para obtencao dos dados diarios
library(egcm) # para o teste de cointegracao (Phillips-Ouliaris)
# definindo tickers do estudo
ticker1 = 'BBDC4.SA'
ticker2 = 'EZTC3.SA'
# obtendo dados de 200 periodos (recomendo testar com menos)
ativo1 <- quantmod::Ad(quantmod::getSymbols(ticker1,src='yahoo',
auto.assign=FALSE,
from=Sys.Date()-200))
ativo2 <- quantmod::Ad(quantmod::getSymbols(ticker1,src='yahoo',
auto.assign=FALSE,
from=Sys.Date()-200))
# juntando e eliminando missing values
df <- merge(ativo1, ativo2)
df <- na.omit(df)
# testando cointegracao
result <- egcm::egcm(X = df[,1], Y = df[,2], p.value = 0.01)
# OBS: o que o paxcote/funcao egcm chama de p.value, eh na verdade o alpha do
# ... teste de cointegracao
# obtendo os parametros do modelo linear resultante
pvalue <- result$r.p
beta_coef <- result$beta
alpha_coef <- result$alpha
model_residuals <- as.vector(result$residuals)
coint_res <- egcm::is.cointegrated(result)
half_life <- log(0.5) / log(result$rho) # nro de dias para retornar metade
#... do caminho ao se afastar da media (dah uma ideia de qtos dias vc ficarah
#... em uma operacao caso de entrada naquele par)
# o rho seria a raiz da serie temp. ==> para pares cointegrados sempre
# ... esperamos que seja < 1, por isso que a half life sempre eh positiva
# ... para os pares cointegrados
# plotar os resíduos para verificar a estacionariedade e estabelecer
# ... possíveis thresholds de entrada
df <- cbind(df, model_residuals)
plot(df[,3])Allan Quadros
contato@quantltrading.com.br | quadros@ksu.edu
quantltrading
@quantltrading