Exemplo de comércio de pares.
Como em quase todos os investimentos, fazer um comércio de pares envolve mais do que apenas apertar o botão de compra e venda. Aqui examinamos, em termos muito amplos, os passos necessários para entrar e sair de um comércio de pares.
Reúna uma lista de pares potencialmente relacionados.
Da mesma forma que os corretores de ações de longo prazo vasculham os mercados por títulos adequados, um trader de pares deve começar com uma lista de pares potencialmente relacionados. Isto implica a realização de pesquisas para encontrar títulos que tenham algo em comum - se o relacionamento é devido ao setor (como o setor automotivo) ou ao ativo (por exemplo, títulos). Embora qualquer par aleatório possa, teoricamente, ser correlacionado, é mais provável que você encontre correlação em valores mobiliários com algo em comum para começar.
Determine o nível de correlação.
O próximo passo age como um filtro, ou um meio pelo qual podemos reduzir o número de pares potenciais em nosso quiver. Uma maneira é usar um coeficiente de correlação para determinar quão próximos dois instrumentos estão relacionados. O gráfico a seguir mostra um gráfico diário do contrato do e-mini S & P 500 (em verde) e do contrato e-mini Dow (em rosa). Abaixo do gráfico de preços, há um indicador que mostra o coeficiente de correlação (em amarelo). Podemos ver no gráfico que, durante esse período de tempo específico, o ES e o YM são altamente correlacionados, com valores que pairam bem acima de 0,9. Manteremos o par ES / YM na nossa lista de potenciais candidatos em pares.
O ES (em verde) e o YM (em rosa) mostram potencial como troca de pares. A confirmação visual do preço, apoiada por resultados quantitativos do coeficiente de correlação (em amarelo), mostra que os dois instrumentos são altamente correlacionados. Imagem criada com a TradeStation.
Este gráfico diário de JNJ (em verde) e PG (em rosa) mostra que este não é um par ideal. Uma revisão visual dos preços, confirmada pelos resultados do coeficiente de correlação (em amarelo) indica uma falta de correlação entre os dois estoques. Imagem criada com a TradeStation.
Também deve ser observado que os pares podem mostrar correlação negativa - uma relação entre dois instrumentos em que o preço aumenta, enquanto o outro diminui. Isso cria um tipo de “imagem espelhada”, como pode ser visto no gráfico a seguir.
Este gráfico diário da GE e Walmart mostra correlação negativa. Os preços dessas duas ações tendem a se mover em direções opostas.
Use modelagem para determinar regras específicas.
Um componente contínuo do processo é pesquisar e testar idéias de negociação e determinar métodos absolutos de avaliação de pares e definição de divergência. Os comerciantes têm de responder a perguntas como O que constitui divergência “suficiente” da tendência de iniciar um negócio? e como isso será avaliado? - por exemplo, usando dados de um indicador de taxa de preço com sobreposições de desvio padrão. Em geral, é uma boa ideia concentrar-se em dados quantificáveis, como "Eu entrarei em uma troca de pares quando a relação de preço exceder dois desvios padrão".
A tabela a seguir mostra o e-mini S & P 500 (ES) e o e-mini Dow (YM) em um gráfico diário. Abaixo do gráfico de preços está um indicador de taxa de spread (em amarelo), com uma sobreposição de +/- um e dois desvios padrão (linhas pontilhadas). A média aparece em rosa.
Um gráfico diário dos contratos de futuros ES e YM e-mini. Um indicador de taxa de spread aparece abaixo do gráfico de preços, junto com uma sobreposição de desvio padrão. Imagem criada com a TradeStation.
Determine o tamanho da posição.
Os traders podem dimensionar as suas posições de pares de maneira diferente, como share-for-share e desvio padrão ponderado. Muitos traders usam uma abordagem neutra em relação ao dólar para posicionar o tamanho ao negociar pares. Usando esse método, os lados longos e curtos da negociação são entrados com valores iguais em dólar. Por exemplo, um trader quer entrar em uma negociação de pares com ações A, negociadas a $ 100 por ação e ações B, negociadas a $ 50 por ação. Para alcançar uma posição neutra em relação ao dólar, o trader terá que comprar duas ações da ação B para cada uma ação da ação A. Por exemplo: (Veja também: O tamanho ideal da posição reduz o risco.)
Long 100 ações A = US $ 10.000 Curto 200 ações B = US $ 10.000.
Compre o underperformer e venda o overperformer.
Uma vez que as regras de negociação são cumpridas, o comerciante compra a segurança de baixo desempenho e, simultaneamente, vende a segurança de alto desempenho. No gráfico a seguir, a taxa de spread excedeu dois desvios padrão e uma configuração de negociação ocorreu no par ES / YM. Aqui, vamos longo o ES e curto o YM.
Uma negociação é aberta no par ES / YM. As linhas vermelhas e verdes horizontais no topo mostram o P / L em tempo real para cada posição. Imagem criada com a TradeStation.
Use princípios de gerenciamento de dinheiro sólidos para sair do comércio.
Tal como acontece com a maioria dos investimentos, o momento da saída é fundamental para o sucesso do comércio. É importante aplicar os princípios de gerenciamento de dinheiro aos negócios de pares (como qualquer outro negócio), incluindo o uso de ordens de perda de proteção e metas de lucro. Os níveis ótimos são tipicamente determinados por meio de modelagem histórica extensa. O gráfico a seguir mostra o comércio de ES / YM, saiu usando um nível de lucro líquido conservador.
O comércio de ES / YM é encerrado com um pequeno lucro líquido. Imagem criada com a TradeStation.
Guia para negociação de pares.
A negociação de pares é uma estratégia de negociação neutra de mercado que corresponde a uma posição comprada com uma posição vendida em um par de instrumentos altamente correlacionados, como duas ações, fundos negociados em bolsa (ETFs), moedas, commodities ou opções. Os operadores de pares aguardam a fraqueza na correlação e, em seguida, perdem tempo com o sub-performer, ao mesmo tempo que vendem em curto, o super-performer, fechando as posições à medida que o relacionamento retorna às normas estatísticas.
O lucro da estratégia é derivado da diferença na mudança de preço entre os dois instrumentos, e não da direção que cada um move. Portanto, um lucro pode ser realizado se a posição longa subir mais do que a curta, ou a posição curta cair mais do que a longa (em uma situação perfeita, a posição longa sobe e a posição curta cai, mas isso não é um requisito para fazendo um lucro). É possível que os comerciantes de pares lucrem durante uma variedade de condições de mercado, incluindo períodos em que o mercado sobe, desce ou de lado - e durante períodos de baixa ou alta volatilidade. (Veja também: 4 fatores que moldam as tendências do mercado.)
A origem da negociação de pares.
A origem da troca de pares é geralmente creditada a um grupo de cientistas da computação, matemáticos e físicos reunidos pelo Morgan Stanley & Wall Street de Wall Street. Co. no início a meados da década de 1980. A equipe, que incluiu os cientistas de computação Gerry Bamberger e David Shaw, e o comerciante de quantum Nunzio Tartaglia, foi reunida para estudar oportunidades de arbitragem nos mercados de ações, empregando modelagem estatística avançada e desenvolvendo um programa de negociação automatizado para explorar desequilíbrios de mercado.
Pares de Negociação usando Técnicas Orientadas a Dados: Estratégias Simples de Negociação Parte 3.
A negociação de pares é um bom exemplo de uma estratégia baseada em análise matemática. Demonstraremos como aproveitar os dados para criar e automatizar uma estratégia de negociação de pares.
Princípio Subjacente.
Digamos que você tenha um par de títulos X e Y que tenham algum elo econômico subjacente, por exemplo, duas empresas que fabricam o mesmo produto, como a Pepsi e a Coca-Cola. Você espera que a relação ou diferença nos preços (também chamada de spread) desses dois permaneça constante com o tempo. No entanto, de tempos em tempos, pode haver uma divergência no spread entre esses dois pares causada por mudanças temporárias de oferta / demanda, grandes ordens de compra / venda de um título, reação a notícias importantes sobre uma das empresas, etc. , um estoque sobe enquanto o outro se move para baixo um em relação ao outro. Se você espera que essa divergência volte ao normal com o tempo, você pode fazer uma troca de pares.
Quando há uma divergência temporária, os pares negociariam a venda do estoque de melhor desempenho (o estoque que subia) e comprariam o estoque de baixo desempenho (o estoque que descia). Você está apostando que o spread entre os dois estoques acabaria por convergir tanto pelo estoque de alto desempenho que recuou quanto pelo estoque de baixo desempenho, ou ambos - seu negócio vai ganhar dinheiro em todos esses cenários. Se ambas as ações subirem ou descerem juntas sem alterar o spread entre elas, você não ganhará nem perderá dinheiro.
Assim, a negociação de pares é uma estratégia de negociação neutra de mercado que permite aos comerciantes lucrar com praticamente qualquer condição de mercado: tendência de alta, tendência de baixa ou movimento lateral.
Explicando o Conceito: Começamos gerando dois títulos falsos.
Vamos gerar um falso X de segurança e modelar os retornos diários, a partir de uma distribuição normal. Em seguida, realizamos uma soma cumulativa para obter o valor de X em cada dia.
Agora nós geramos Y, que tem um link econômico profundo para X, então o preço de Y deve variar de maneira muito semelhante a X. Modelamos isso pegando X, deslocando-o e adicionando algum ruído aleatório extraído de uma distribuição normal.
Cointegração
Cointegração, muito semelhante à correlação, significa que a relação entre duas séries irá variar em torno de uma média. As duas séries, Y e X seguem o seguinte:
onde ⍺ é a relação constante e e é ruído branco. Leia mais aqui.
Para pares negociando para trabalhar entre duas séries temporais, o valor esperado da relação ao longo do tempo deve convergir para a média, ou seja, eles devem ser cointegrados.
As séries temporais que construímos acima são cointegradas. Vamos traçar a relação entre os dois agora para que possamos ver como isso se parece.
Testes para cointegração.
Existe um teste conveniente que mora em statsmodels. tsa. stattools. Devemos ver um valor p muito baixo, pois criamos artificialmente duas séries que são tão cointegradas quanto fisicamente possíveis.
Nota: Correlação vs. Cointegração.
Correlação e cointegração, embora teoricamente semelhantes, não são as mesmas. Vejamos exemplos de séries correlacionadas, mas não cointegradas, e vice-versa. Primeiro, vamos verificar a correlação das séries que acabamos de gerar.
Isso é muito alto, como seria de esperar. Mas como duas séries correlacionadas, mas não cointegradas, se parecem? Um exemplo simples são duas séries que apenas divergem.
Valor de p do teste de cointegração: 0,258.
Um exemplo simples de cointegração sem correlação é uma série normalmente distribuída e uma onda quadrada.
Valor de p do teste de cointegração: 0.0.
A correlação é incrivelmente baixa, mas o valor p mostra uma perfeita cointegração!
Como fazer um comércio de pares?
Como duas séries temporais cointegradas (como X e Y acima) se movem na direção e afastam-se uma da outra, haverá momentos em que a propagação será alta e quando a propagação estiver baixa. Fazemos um comércio de pares comprando um título e vendendo outro. Dessa forma, se ambos os valores mobiliários forem juntos ou juntos, não faremos nem perderemos dinheiro - somos neutros em relação ao mercado.
Voltando para X e Y acima que seguem Y = ⍺ X + e, tal que a razão (Y / X) se move em torno do valor médio ⍺, ganhamos dinheiro na proporção dos dois revertendo para a média. Para fazer isso, observaremos quando X e Y estão distantes, ou seja, é muito alto ou muito baixo:
Indo Longo na Relação Isto é quando a relação ⍺ é menor do que o usual e esperamos que aumente. No exemplo acima, apostamos nisso comprando Y e vendendo X. Reduzindo a taxa É quando a proporção ⍺ é grande e esperamos que ela se torne menor. No exemplo acima, apostamos nisso vendendo Y e comprando X.
Tenha em mente que sempre temos uma "posição protegida": uma posição vendida ganha dinheiro se a segurança vendida perde valor e uma posição comprada ganhará dinheiro se uma segurança ganhar valor, por isso estamos imunes ao movimento geral do mercado. Nós só ganhamos ou perdemos dinheiro se os títulos X e Y se movem em relação um ao outro.
Usando dados para encontrar valores mobiliários que se comportam assim.
A melhor maneira de fazer isso é começar com títulos que você suspeita serem cointegrados e realizar um teste estatístico. Se você acabou de executar testes estatísticos sobre todos os pares, será vítima de viés de várias comparações.
O viés de múltiplas comparações é simplesmente o fato de que há uma chance maior de gerar incorretamente um valor p significativo quando muitos testes são executados, porque estamos executando muitos testes. Se 100 testes forem executados em dados aleatórios, devemos esperar ver 5 valores p abaixo de 0,05. Se você estiver comparando n títulos para co-integração, você realizará n (n-1) / 2 comparações, e você deve esperar ver muitos valores p incorretamente significativos, que aumentarão conforme você aumenta. Para evitar isso, escolha um pequeno número de pares que você tenha motivos para suspeitar que possam ser cointegrados e teste cada um individualmente. Isso resultará em menos exposição ao viés de múltiplas comparações.
Então, vamos tentar encontrar algumas ações que exibam cointegração. Vamos trabalhar com uma cesta de ações da US cap tech de grande porte - no S & P 500. Essas ações operam em um segmento semelhante e poderiam ter preços cointegrados. Examinamos uma lista de títulos e testamos a cointegração entre todos os pares. Ele retorna uma matriz de pontuação do teste de cointegração, uma matriz de valor p e quaisquer pares para os quais o valor de p é menor que 0,05. Este método é propenso a viés de comparação múltipla e, na prática, os títulos devem estar sujeitos a uma segunda etapa de verificação. Vamos ignorar isso por causa deste exemplo.
Nota: Incluímos o benchmark de mercado (SPX) em nossos dados - o mercado impulsiona o movimento de tantos títulos que muitas vezes você pode encontrar dois títulos aparentemente cointegrados; mas na realidade eles não estão cointegrados um com o outro, mas ambos conintegrados com o mercado. Isso é conhecido como uma variável de confusão e é importante verificar o envolvimento do mercado em qualquer relacionamento que você encontrar.
Agora vamos tentar encontrar pares cointegrados usando nosso método.
Parece que o "ADBE" e o "MSFT" estão cointegrados. Vamos dar uma olhada nos preços para garantir que isso realmente faça sentido.
A proporção parece que se deslocou em torno de uma média estável. A taxa absoluta não é muito útil em termos estatísticos. É mais útil normalizar nosso sinal tratando-o como um escore z. A pontuação Z é definida como:
Pontuação Z (Valor) = (Valor - Média) / Desvio Padrão.
Na prática, isso geralmente é feito para tentar dar alguma escala aos dados, mas isso pressupõe uma distribuição subjacente. Normalmente normal. No entanto, muitos dados financeiros normalmente não são distribuídos, e devemos ter muito cuidado para não simplesmente assumir a normalidade ou qualquer distribuição específica ao gerar estatísticas. A verdadeira distribuição das proporções poderia ser muito gorda e propensa a valores extremos, atrapalhando nosso modelo e resultando em grandes perdas.
É mais fácil observar agora que a proporção agora se move em torno da média, mas às vezes é propensa a grandes divergências da média, das quais podemos tirar vantagens.
Como falamos sobre os fundamentos da estratégia de negociação em pares e identificamos títulos co-integrados com base no preço histórico, vamos tentar desenvolver um sinal de negociação. Primeiro, vamos recapitular os passos no desenvolvimento de um sinal de negociação usando técnicas de dados:
Colete dados confiáveis e limpe os recursos de criação de dados dos dados para identificar um sinal de negociação / lógica Os recursos podem ser médias móveis ou taxas de dados de preços, correlações ou sinais mais complexos - combine-os para criar novos recursos Gerar um sinal de negociação usando esses recursos, ou seja, instrumentos são uma compra, uma venda ou neutra.
Etapa 1: configure seu problema.
Aqui estamos tentando criar um sinal que nos diz se a proporção é uma compra ou uma venda no próximo instante, ou seja, nossa variável de previsão Y:
Y = Razão é comprar (1) ou vender (-1) Y (t) = Sinal (Proporção (t + 1) - Razão (t))
Note que não precisamos prever os preços reais das ações, ou mesmo o valor real da proporção (embora possamos), apenas a direção do próximo movimento na proporção.
Etapa 2: colete dados confiáveis e precisos.
A Auquan Toolbox é sua amiga aqui! Você só precisa especificar o estoque que deseja negociar e usar a fonte de dados, e extrai os dados necessários e os limpa para dividendos e desdobramentos. Então nossos dados aqui já estão limpos.
Estamos usando os seguintes dados do Yahoo em intervalos diários para os dias de negociação nos últimos 10 anos (
2500 pontos de dados): Aberto, Fechado, Alto, Baixo e Volume de Negociação.
Etapa 3: dividir dados.
Não se esqueça deste passo super importante para testar a precisão dos seus modelos. Estamos usando o seguinte Treinamento / validação / teste dividido.
Idealmente, devemos também fazer um conjunto de validação, mas vamos ignorar isso por enquanto.
Etapa 4: engenharia de recursos.
Quais poderiam ser as características relevantes? Queremos prever a direção do movimento da razão. Vimos que nossos dois títulos estão cointegrados, então a proporção tende a se mover e voltar à média. Parece que nossas características devem ser determinadas medidas para a média da razão, a divergência do valor atual da média para gerar nosso sinal de negociação.
Vamos usar os seguintes recursos:
Média Móvel de 60 Dias de Proporção: Medida de média móvel de 5 dias Média Móvel de Proporção: Medida do valor atual da média de 60 dias Desvio Padrão z pontuação: (5d MA - 60d MA) / 60d SD.
O Z Score do rolamento realmente destaca a natureza de reversão da razão!
Etapa 5: Seleção do Modelo.
Vamos começar com um modelo realmente simples. Observando o gráfico de pontuação z, podemos ver que sempre que o recurso z-score fica muito alto ou muito baixo, ele tende a reverter. Vamos usar + 1 / -1 como nossos limites para muito alto e muito baixo, então podemos usar o modelo a seguir para gerar um sinal de negociação:
Proporção é comprar (1) sempre que o escore z for inferior a -1,0 porque esperamos que o escore z volte até 0, portanto, o rácio para aumentar Rácio é vender (-1) quando o escore z é superior a 1,0 porque esperamos z pontuação para voltar a 0, daí relação para diminuir.
Etapa 6: Treine, valide e otimize.
Por fim, vamos ver como nosso modelo realmente funciona com dados reais? Vamos ver como esse sinal se parece nas proporções reais.
O sinal parece razoável, parece que nós vendemos a proporção (pontos vermelhos) quando está alta ou aumentando e compramos de volta quando está baixa (pontos verdes) e diminuindo. O que isso significa para as ações reais que estamos negociando? Vamos dar uma olhada.
Observe como às vezes ganhamos dinheiro com a perna curta e às vezes com a perna longa e às vezes com as duas.
Estamos felizes com nosso sinal nos dados de treinamento. Vamos ver que tipo de lucros esse sinal pode gerar. Podemos fazer um backtester simples que compra 1 rácio (comprar 1 stock de ADBE e rácio de venda x stock de MSFT) quando o rácio é baixo, vender 1 rácio (vender 1 stock de ADBE e rácio de compra x stock de MSFT) quando é alto e calcular PnL destes comércios.
Então essa estratégia parece lucrativa! Agora podemos otimizar ainda mais alterando nossas janelas de média móvel, alterando os limites para as posições de compra / venda e saída, etc. e verificar se há melhorias de desempenho nos dados de validação.
Poderíamos também tentar modelos mais sofisticados como Regressão Logística, SVM, etc. para fazer nossas previsões de 1 / -1.
Por enquanto, digamos que decidimos seguir adiante com esse modelo, isso nos leva a.
Etapa 7: Backtest nos dados de teste.
O backtesting é simples, podemos apenas usar nossa função acima para ver o PnL nos dados de teste.
O modelo faz muito bem! Isso torna o nosso primeiro modelo de negociação de pares simples.
Evite Overfitting.
Antes de terminar a discussão, gostaríamos de mencionar o superajuste. Overfitting é a armadilha mais perigosa de uma estratégia de negociação. Um algoritmo overfit pode funcionar maravilhosamente em um backtest, mas falha miseravelmente em novos dados invisíveis - isso significa que realmente não descobriu qualquer tendência nos dados e nenhum poder preditivo real. Vamos dar um exemplo simples.
Em nosso modelo, usamos estimativas de parâmetros de rolamento e podemos desejar otimizar o tamanho da janela. Podemos decidir simplesmente fazer uma iteração em toda a extensão de janela razoável e possível e escolher o tamanho com base no desempenho do nosso modelo. Abaixo, escrevemos um loop simples para marcar os comprimentos das janelas com base no pnl de dados de treinamento e encontrar o melhor.
Agora, verificamos o desempenho do nosso modelo nos dados de teste e descobrimos que esse tamanho de janela está longe de ser ideal! Isso ocorre porque nossa escolha original foi claramente ajustada aos dados da amostra.
Claramente adequado aos nossos dados de amostra não dá sempre bons resultados no futuro. Apenas por diversão, vamos mapear as pontuações de comprimento calculadas a partir dos dois conjuntos de dados.
Podemos ver que qualquer coisa entre 20 e 50 seria uma boa escolha para a janela.
Para evitar o overfitting, podemos usar o raciocínio econômico ou a natureza do nosso algoritmo para escolher o tamanho da nossa janela. Também podemos usar filtros de Kalman, que não nos obrigam a especificar um tamanho; esse método será abordado em outro caderno posteriormente.
Próximos passos.
Neste post, apresentamos algumas abordagens introdutórias simples para demonstrar o processo de desenvolvimento de uma estratégia de negociação de pares. Na prática, deve-se usar estatísticas mais sofisticadas, algumas das quais estão listadas aqui.
Expoente de Hurst Meia-vida de reversão à média inferida de um processo de Ornstein-Uhlenbeck de filtros de Kalman.
Uma introdução básica à negociação de pares.
A negociação de pares ou Arbitragem Estatística é uma estratégia de negociação de ações que tenta ser neutra no mercado e capturar o spread entre duas ações correlacionadas à medida que elas retornam ao preço médio. Ele é conhecido por alguns como "arbitragem estatística", mas "pares de negociação" & # 8221; é o nome mais comum usado para se referir a essa técnica.
Em termos simples, é a compra e a venda simultânea de duas ações que se seguem quando divergem do padrão normal; na expectativa de que o padrão normal seja retomado em breve. Em outras palavras, os comerciantes encontram duas ações que tendem a se mover juntas. O negociante compraria o Estoque A e venderia o Estoque B em baixa.
Clique aqui para aprender a utilizar o Bollinger Bands com uma abordagem quantificada e estruturada para aumentar suas margens de negociação e obter maiores ganhos com o Trading with Bollinger Bands® & # 8211; Um Guia Quantificado.
A negociação em pares também é feita com opções, futuros e cestas de ações, mas isso é motivo para artigos futuros. Este artigo irá cobrir os conceitos básicos de pares de negociação, mostrando-lhe um método simples de 4 etapas para negociação de pares. Eu também vou fornecer exemplos e apontar você na direção certa para obter mais informações sobre essa tática de negociação de ações altamente eficiente, geralmente usada por profissionais de trading.
Aqui está o método simples de 4 etapas para começar a negociar em pares.
Etapa 1. Escolha o par de ações.
Isso pode soar como a parte mais difícil do processo, mas na verdade é bem simples em sua forma mais bruta.
Existem numerosos métodos complicados para escolher o par de ações, mas tudo se resume a encontrar duas ações correlacionadas em movimento. Comece procurando ações que façam sentido para serem semelhantes.
Aqui estão vários exemplos:
Estas são apenas algumas das ações que podem ser usadas em pares negociando por causa de sua correlação em movimento.
Etapa 2. Confirme Visualmente Correlação Usando Gráficos.
Gráficos de preços de olho é uma maneira muito básica para determinar a correlação de pares. Olhe para gráficos de ações que você acha que deve ser correlacionado para encontrar vários que realmente movem juntos. Existem muitas maneiras mais complexas de fazer isso, mas desta forma é o mais simples.
Etapa 3. Crie um Gráfico de Proporção de Preço.
Este é outro procedimento complicado, mas na verdade simples. A maioria das plataformas de gráficos pode fazer isso por você automaticamente.
Um gráfico de taxa de preço É um gráfico de ambos os estoques plotados juntos. É calculado dividindo-se um preço de ação no outro. Normalmente, são gráficos de linhas e medem o desvio da média ou do spread médio entre os dois estoques do par.
Etapa 4. Compre um estoque. Vender um estoque curto.
Quando a linha de relação de preço se move para seu primeiro ou segundo desvio da média, é hora de entrar na negociação. Você quer ir longo o estoque atrasado e short o executor excedente.
Seu lucro está em qualquer lugar do spread quando ele volta à média. Quando você começa, combina o valor do dólar em cada ação e não o número de ações, isso mantém as coisas iguais nos movimentos. Há muitas maneiras de dimensionar os negócios, este é apenas o método mais rudimentar.
Isso é par de negociação em sua forma mais simples. Não é um método à prova de idiotas. Os comerciantes podem e perdem dinheiro. No entanto, a negociação de pares é um método comprovado para lucros consistentes. Mais importante ainda, lembre-se de utilizar as paradas quando o par de negociação. É possível que ambos os lados do negócio possam perder, então saiba quanto você está disposto a perder antes de executar o primeiro negócio de pares.
Dave Goodboy é vice-presidente de marketing de um fundo multiestratégico baseado em Nova York.
Artigos recentes sobre TradingMarkets.
Informação da companhia.
The Connors Group, Inc.
185 Hudson St., Suite 2500.
Jersey City, NJ 07311.
Recursos da empresa.
Propriedades
Conecte-se com o TradingMarkets.
© Copyright 2018 O Grupo Connors, Inc.
Não se deve pressupor que os métodos, tecnologias ou indicadores apresentados nesses produtos serão lucrativos ou não resultarão em perdas. Os resultados passados de qualquer comerciante individual ou sistema de negociação publicado pela Empresa não são indicativos de retornos futuros por esse comerciante ou sistema, e não são indicativos de retornos futuros que sejam realizados por você. Além disso, os indicadores, estratégias, colunas, artigos e todos os outros recursos dos produtos da Empresa (coletivamente, as "Informações") são fornecidos apenas para fins informativos e educacionais e não devem ser interpretados como conselhos de investimento. Os exemplos apresentados no site da Empresa são apenas para fins educacionais. Essas configurações não são solicitações de qualquer ordem de compra ou venda. Consequentemente, você não deve confiar somente nas Informações para fazer qualquer investimento. Em vez disso, você deve usar as Informações apenas como ponto de partida para fazer pesquisas independentes adicionais, a fim de permitir que você formule sua própria opinião sobre investimentos. Você deve sempre consultar seu consultor financeiro e consultor tributário para determinar a adequação de qualquer investimento.
OS RESULTADOS DE DESEMPENHO HIPOTÉTICOS OU SIMULADOS TÊM CERTAS LIMITAÇÕES INERENTES. A PARTIR DE UM REGISTRO DE DESEMPENHO REAL, OS RESULTADOS SIMULADOS NÃO REPRESENTAM A NEGOCIAÇÃO REAL E NÃO PODEM SER IMPACTADOS POR CORRETAGEM E OUTRAS TAXAS DE ESCOLHA. TAMBÉM, UMA VEZ QUE AS COMERCIALIZAÇÕES NAO SÃO REALMENTE EXECUTADAS, OS RESULTADOS PODEM SUBSTITUIR OU SUPERIOR AO IMPACTO, SE ALGUM, DE DETERMINADOS FATORES DE MERCADO, COMO A FALTA DE LIQUIDEZ. PROGRAMAS DE NEGOCIAÇÃO SIMULADOS EM GERAL TAMBÉM ESTÃO SUJEITOS AO FATO DE QUE ELES FORAM CONCEBIDOS COM O BENEFÍCIO DE HINDSIGHT. NENHUMA REPRESENTAÇÃO ESTÁ SENDO FEITA QUE QUALQUER CONTA PODERÁ OU POSSIBILITAR LUCROS OU PERDAS SIMILARES AOS APRESENTADOS.
Todos os comentários de analistas fornecidos no TradingMarkets são fornecidos apenas para fins educacionais. Os analistas e funcionários ou afiliados da TradingMarkets podem ocupar cargos nas ações ou setores discutidos aqui. Esta informação NÃO é uma recomendação ou solicitação para comprar ou vender quaisquer valores mobiliários. Seu uso deste e de todas as informações contidas no TradingMarkets é regido pelos Termos e Condições de Uso. Por favor, clique no link para ver esses termos. Siga este link para ler nossa Política Editorial.
Exemplo: Algoritmo de negociação de pares.
Introdução.
Este algoritmo foi originalmente de uma implementação por Ernest Chan de seus livros sobre negociação algorítmica. Ele demonstra como se pode negociar um par de ações que eles estão confiantes de que estão cointegradas.
Pré-requisitos
As palestras neste site são fornecidas apenas para fins informativos e não constituem uma oferta para vender, uma solicitação de compra, ou uma recomendação ou endosso para qualquer segurança ou estratégia, nem constituem uma oferta para fornecer serviços de consultoria de investimento pela Quantopian.
Além disso, as palestras não oferecem opinião sobre a adequação de qualquer segurança ou investimento específico. Nenhuma informação aqui contida deve ser considerada como uma sugestão para se envolver ou se abster de qualquer ação relacionada ao investimento, pois nenhuma das suas afiliadas está comprometida em fornecer consultoria de investimento, atuar como um consultor para qualquer plano ou entidade sujeita a o Employee Retirement Income Security Act de 1974, conforme alterado, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em uma capacidade fiduciária com relação aos materiais aqui apresentados. Se você for um investidor individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado com a Quantopian sobre se qualquer ideia, estratégia, produto ou serviço de investimento descrito aqui pode ser apropriado para suas circunstâncias. Todos os investimentos envolvem risco, incluindo perda de principal. A Quantopian não garante a exatidão ou integridade das opiniões expressas no site. As opiniões estão sujeitas a alterações e podem ter se tornado não confiáveis por várias razões, incluindo mudanças nas condições de mercado ou circunstâncias econômicas.
Desculpe, algo deu errado. Tente novamente ou entre em contato enviando feedback.
Você enviou com sucesso um ticket de suporte.
Nossa equipe de suporte entrará em contato em breve.
O material deste site é fornecido apenas para fins informativos e não constitui uma oferta de venda, uma solicitação de compra ou uma recomendação ou endosso para qualquer segurança ou estratégia, nem constitui uma oferta para fornecer serviços de consultoria de investimento pela Quantopian.
Além disso, o material não oferece opinião com relação à adequação de qualquer investimento específico ou de segurança. Nenhuma informação aqui contida deve ser considerada como uma sugestão para se envolver ou se abster de qualquer ação relacionada ao investimento, pois nenhuma das suas afiliadas está comprometida em fornecer consultoria de investimento, atuar como um consultor para qualquer plano ou entidade sujeita a o Employee Retirement Income Security Act de 1974, conforme alterado, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em uma capacidade fiduciária com relação aos materiais aqui apresentados. Se você for um investidor individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado com a Quantopian sobre se qualquer ideia, estratégia, produto ou serviço de investimento descrito aqui pode ser apropriado para suas circunstâncias. Todos os investimentos envolvem risco, incluindo perda de principal. A Quantopian não garante a exatidão ou integridade das opiniões expressas no site. As opiniões estão sujeitas a alterações e podem ter se tornado não confiáveis por várias razões, incluindo mudanças nas condições de mercado ou circunstâncias econômicas.
Estratégia de negociação de pares baseados em filtro de Kalman no QSTrader.
Estratégia de negociação de pares baseados em filtro de Kalman no QSTrader.
Anteriormente, no QuantStart, consideramos os fundamentos matemáticos dos Modelos de Espaço de Estado e Filtros de Kalman, bem como a aplicação da biblioteca pykalman a um par de ETFs para ajustar dinamicamente uma taxa de hedge como base para uma estratégia de negociação de reversão média.
Neste artigo vamos discutir uma estratégia de negociação originalmente devido a Ernest Chan (2012) [1] e testada por Aidan O'Mahony na Quantopian [2]. Usaremos a estrutura de backtesting QSTrader de código aberto baseada em Python para implementar a estratégia. O QSTrader realizará o "levantamento pesado" do rastreamento de posição, manuseio de portfólio e ingestão de dados, enquanto nos concentramos unicamente no código que gera os sinais de negociação.
A estratégia de negociação.
A estratégia de negociação de pares é aplicada a um par de Exchange Traded Funds (ETF) que acompanham o desempenho de títulos do Tesouro dos EUA de duração variável. Eles são:
O objetivo é construir uma estratégia de reversão da média deste par de ETFs.
O "spread" sintético entre TLT e IEI é a série temporal em que estamos realmente interessados em saudades ou em curto. O Filtro de Kalman é usado para rastrear dinamicamente a taxa de cobertura entre os dois, a fim de manter o spread estacionário (e, portanto, reverter).
Para criar as regras de negociação, é necessário determinar quando o spread se afastou muito do valor esperado. Como podemos determinar o que "longe demais" é? Poderíamos utilizar um conjunto de valores absolutos fixos, mas estes teriam que ser determinados empiricamente. Isso introduziria outro parâmetro livre no sistema que exigiria otimização (e perigo adicional de overfitting).
Uma abordagem "sem parâmetros" para criar esses valores é considerar um múltiplo do desvio padrão do spread e usá-los como limites. Por simplicidade, podemos definir o coeficiente do múltiplo para ser igual a um.
Portanto, podemos ir "longo o spread" se o erro de previsão cai abaixo do desvio padrão negativo do spread. Respectivamente podemos ir "curto o spread" se o erro de previsão exceder o desvio padrão positivo do spread. As regras de saída são simplesmente o oposto das regras de entrada.
A relação de hedge dinâmica é representada por um componente do vetor de estado oculto no tempo $ t $, $ \ theta_t $, que será denotado como $ \ theta ^ 0_t $. Este é o valor do declive "beta" que é bem conhecido a partir da regressão linear.
"Longing the spread" significa aqui comprar (long) $ N $ unidades de TLT e vender (shorting) $ \ lfloor $, onde $ \ lfloor $ é o "floor" representando o maior inteiro menor que $ x $. Este último é necessário, pois devemos transacionar um número inteiro de unidades dos ETFs. "Reduzir o spread" é o oposto disso. $ N $ controla o tamanho geral da posição.
$ e_t $ representa o erro de previsão ou erro residual da previsão no tempo $ t $, enquanto $ Q_t $ representa a variação dessa previsão no momento $ t $.
Para completar, as regras são especificadas aqui:
$ e_t \ lt - \ sqrt $ - Longo o spread: Vá por muito tempo $ N $ em ações de TLT e vá em baixa $ \ lfloor $ unidades de IEI $ e_t \ ge - \ sqrt $ - Saia por muito tempo: feche todas as posições longas de TLT e IEI $ e_t \ gt \ sqrt $ - Reduza o spread: Vá em baixa $ N $ em ações de TLT e vá em frente $ \ lfloor $ unidades de IEI $ e_t \ le \ sqrt $ - Saia em curto: feche todas as posições curtas de TLT e IEI .
O papel do filtro de Kalman é nos ajudar a calcular $ \ theta_t $, bem como $ e_t $ e $ Q_t $. $ \ theta_t $ representa o vetor dos valores de intercepto e inclinação na regressão linear entre TLT e IEI no tempo $ t $. É estimado pelo filtro de Kalman. O erro de previsão / residual $ e_t = y_t - \ hat _t $ é a diferença entre o valor previsto de TLT hoje e a estimativa de TLT do filtro de Kalman hoje. $ Q_t $ é a variância das previsões e, portanto, $ \ sqrt $ é o desvio padrão da previsão.
A implementação da estratégia envolve os seguintes passos:
Receber barras de mercado OHLCV diariamente para TLT e IEI Use o filtro de Kalman recursivo "on-line" para estimar o preço de TLT hoje baseado em observações de IEI de ontem Tome a diferença entre a estimativa de TLT de Kalman e o valor real ou erro residual, que é uma medida de quanto o spread de TLT e IEI se afasta de seu valor esperado Longo o spread quando o movimento está negativamente longe do valor esperado e correspondentemente curto o spread quando o movimento está positivamente longe do esperado valor Saia das posições longa e curta quando a série reverter para o seu valor esperado.
Para executar esta estratégia, é necessário ter dados de preços do OHLCV para o período coberto por este backtest. Em particular, é necessário fazer o download do seguinte:
TLT - Para o período de 3 de agosto de 2009 a 1 de agosto de 2016 (link aqui) IEI Para o período de 3 de agosto de 2009 a 1 de agosto de 2016 (link aqui).
Esses dados precisarão ser colocados no diretório especificado pelo arquivo de configurações do QSTrader se você quiser replicar os resultados.
Implementação do Python QSTrader.
Como o QSTrader lida com rastreamento de posição, gerenciamento de portfólio, ingestão de dados e gerenciamento de pedidos, o único código que precisamos escrever envolve o próprio objeto Strategy.
A Estratégia se comunica com o PortfolioHandler por meio da fila de eventos, fazendo uso dos objetos SignalEvent para fazer isso. Além disso, devemos importar a classe de estratégia abstrata base, AbstractStrategy.
Observe que na versão alfa atual do QSTrader também devemos importar a classe PriceParser. Isso é usado para multiplicar todos os preços na entrada por um múltiplo grande ($ 10 ^ 8 $) e realizar aritmética inteira ao rastrear posições. Isso evita problemas de arredondamento de ponto flutuante que podem se acumular durante o longo período de um backtest. Devemos dividir todos os preços por PriceParser. PRICE_MULTIPLIER para obter os valores corretos:
O próximo passo é criar a classe KalmanPairsTradingStrategy. O trabalho dessa classe é determinar quando criar objetos SignalEvent com base nos BarEvent s recebidos das barras OHLCV diárias de TLT e IEI do Yahoo Finance.
Existem muitas maneiras diferentes de organizar essa classe. Eu optei por codificar todos os parâmetros da classe para esclarecer a explicação. Notavelmente eu fixei o valor de $ \ delta = 10 ^ $ e $ v_t = 10 ^ $. Eles representam o ruído do sistema e a variação de ruído de medição no modelo do Filtro de Kalman. Isso também pode ser implementado como um argumento de palavra-chave no construtor __init__ da classe. Tal abordagem permitiria a otimização direta de parâmetros.
A primeira tarefa é definir o tempo e os membros investidos como iguais a Nenhum, pois eles serão atualizados conforme os dados de mercado forem aceitos e os sinais de negociação gerados. latest_prices é uma matriz de dois dos preços atuais de TLT e IEI, usados por conveniência através da classe.
O próximo conjunto de parâmetros está relacionado ao Filtro de Kalman e é explicado em profundidade nos dois artigos anteriores aqui e aqui.
O conjunto final de parâmetros inclui dias, usados para rastrear quantos dias se passaram, bem como qty e cur_hedge_qty, usados para rastrear as quantidades absolutas de ETFs a serem comprados para o lado longo e curto. Eu defini isso para ser 2.000 unidades em um patrimônio de conta de 100.000 USD.
O próximo método _set_correct_time_and_price é um método "auxiliar" utilizado para garantir que o Filtro de Kalman tenha todas as informações de preço corretas disponíveis no ponto certo. Isso é necessário porque, em um sistema de backtest baseado em eventos, como as informações de mercado do QSTrader, chegam sequencialmente.
Podemos estar em uma situação no dia em que recebemos um preço por IEI, mas não por TFT. Portanto, devemos aguardar até que os eventos de mercado TFT e IEI tenham chegado do loop de backtest, através da fila de eventos. Na negociação ao vivo, isso não é um problema, uma vez que eles chegarão quase instantaneamente em comparação com o período de negociação de alguns dias. No entanto, em um backtest baseado em eventos, devemos aguardar a chegada dos dois preços antes de calcular a nova atualização do filtro de Kalman.
O código essencialmente verifica se o evento subsequente é para o dia atual. Se for, o preço correto é adicionado à lista latest_price de TLT e IEI. Se for um novo dia, os preços mais recentes são redefinidos e os preços corretos são adicionados novamente.
Este tipo de método "housekeeping" provavelmente será absorvido pela base de código do QSTrader no futuro, reduzindo a necessidade de escrever código "boilerplate", mas por enquanto ele deve fazer parte da estratégia em si.
O núcleo da estratégia é executado no método calculate_signals. Em primeiro lugar, definimos os horários e os preços corretos (conforme descrito acima). Em seguida, verificamos que temos os dois preços para TLT e IEI, quando podemos considerar novos sinais de negociação.
$ y $ é igual ao preço mais recente para IEI, enquanto $ F $ é a matriz de observação que contém o último preço para TLT, assim como um espaço reservado para a unidade representar o intercepto na regressão linear. O Filtro de Kalman é subsequentemente atualizado com estes últimos preços. Finalmente, calculamos o erro de previsão $ e_t $ e o desvio padrão das previsões, $ \ sqrt $. Vamos percorrer este código passo a passo, pois parece um pouco complicado.
A primeira tarefa é formar o valor escalar y e a matriz de observação F, contendo os preços do IEI e do TLT, respectivamente. Calculamos a matriz de variância-covariância R ou definimos para a matriz zero se ela ainda não foi inicializada. Subsequentemente, calculamos a nova previsão da observação, bem como o erro de previsão et.
Em seguida, calculamos a variância das previsões de observação Qt, bem como o desvio padrão sqrt_Qt. Usamos as regras de atualização derivadas aqui para obter a distribuição posterior dos estados theta, que contém a relação de hedge / inclinação entre os dois preços:
Por fim, geramos os sinais de negociação com base nos valores de $ e_t $ e $ \ sqrt $. Para fazer isso, precisamos verificar qual é o status "investido" - "longo", "curto" ou "Nenhum". Observe como precisamos ajustar a quantidade atual de hedge cur_hedge_qty quando formos longos ou curtos, pois a inclinação $ \ theta ^ 0_t $ está constantemente se ajustando no tempo:
Este é todo o código necessário para o objeto Strategy. Também precisamos criar um arquivo de backtest para encapsular toda a nossa lógica de negociação e as opções de classe. A versão específica é muito semelhante àquelas usadas no diretório de exemplos e substitui o patrimônio de 500.000 USD por 100.000 USD.
Ele também altera o FixedPositionSizer para o NaivePositionSizer. O último é usado para "ingenuamente" aceitar as sugestões de quantidades absolutas de unidades ETF para negociar conforme determinado na classe KalmanPairsTradingStrategy. Em um ambiente de produção, seria necessário ajustar isso dependendo das metas de gerenciamento de risco do portfólio.
Aqui está o código completo para o kalman_qstrader_backtest. py:
Enquanto o QSTrader estiver instalado corretamente e os dados tiverem sido baixados do Yahoo Finance, o código poderá ser executado através do seguinte comando no terminal:
Graças aos esforços de muitos desenvolvedores voluntários, particularmente @ryankennedyio e @femtotrader, o código é bem otimizado para dados de barra OHLCV e realiza o backtesting rapidamente.
Resultados da Estratégia.
Um dos recursos mais recentes a serem adicionados ao QSTrader é o da "ficha de rascunho" desenvolvida principalmente pela @nwillemse. Esse recurso ainda está em um estágio inicial de desenvolvimento, mas será demonstrado aqui.
Uma folha de rascunho é usada principalmente dentro de configurações institucionais como uma descrição de "um pager" de uma estratégia de negociação. A classe TearsheetStatistics na base de código do QSTrader replica muitas das estatísticas encontradas em um relatório típico de desempenho de estratégia.
Os dois principais gráficos representam a curva de capital e a porcentagem de redução, respectivamente. Abaixo estão os painéis de desempenho mensais e anuais. Por fim, são apresentadas as estatísticas da curva de capital, do nível de comércio e do tempo:
Clique na imagem para ampliar.
A curva de capital começa relativamente plana para o primeiro ano da estratégia, mas aumenta rapidamente durante 2011. Durante 2012, a estratégia torna-se significativamente mais volátil, permanecendo “submersa” até 2015 e alcançando um percentual máximo diário de rebaixamento de 15,79%. O desempenho aumenta gradualmente a partir do rebaixamento máximo no final de 2013 até 2016.
A estratégia tem um CAGR de 8,73% com um índice de Sharpe de 0,75. Ele também tem uma longa duração máxima de rebaixamento de 777 dias - mais de dois anos! Observe que essa estratégia é realizada com custos brutos de transação, portanto, o desempenho real provavelmente seria pior.
Próximos passos.
Há muito trabalho de pesquisa necessário para transformar isso em uma estratégia lucrativa que implantamos em um ambiente ao vivo. Possíveis avenidas de pesquisa incluem:
Otimização de Parâmetros - Variando os parâmetros do Filtro de Kalman através de pesquisa de grade de validação cruzada ou alguma forma de otimização de aprendizado de máquina. No entanto, isso introduz a possibilidade distinta de overfitting para dados históricos. Seleção de Ativos - A escolha de pares adicionais ou alternativos de ETFs ajudaria a adicionar diversificação à carteira, mas aumenta a complexidade da estratégia, bem como o número de negociações (e, portanto, os custos de transação).
Em artigos futuros, vamos considerar como realizar esses procedimentos para várias estratégias de negociação.
Referências.
A Quantcademy.
Participe do portal de associação da Quantcademy que atende à crescente comunidade de traders de quantificação de varejo e aprenda como aumentar a lucratividade de sua estratégia.
Negociação Algorítmica Bem Sucedida.
Como encontrar novas ideias de estratégia de negociação e avaliá-las objetivamente para o seu portfólio usando um mecanismo de backtesting personalizado no Python.
Comércio Algorítmico Avançado.
Como implementar estratégias de negociação avançadas usando análise de séries temporais, aprendizado de máquina e estatísticas Bayesianas com R e Python.
Комментариев нет:
Отправить комментарий