Estratégia de negociação de séries temporais


Guia para iniciantes da análise de séries temporais.
Guia para iniciantes da análise de séries temporais.
Nos últimos anos, analisamos várias ferramentas para nos ajudar a identificar padrões exploráveis ​​nos preços dos ativos. Em particular, consideramos a econometria básica, o aprendizado de máquina estatística e as estatísticas Bayesianas.
Embora sejam todas ótimas ferramentas modernas para análise de dados, a grande maioria da modelagem de ativos no setor ainda faz uso da análise estatística de séries temporais. Neste artigo, vamos examinar a análise de séries temporais, delinear seu escopo e aprender como podemos aplicar as técnicas a várias frequências de dados financeiros.
O que é análise de séries temporais?
Em primeiro lugar, uma série cronológica é definida como uma quantidade que é medida sequencialmente no tempo durante algum intervalo.
Em sua forma mais ampla, a análise de séries temporais tem a ver com inferir o que aconteceu com uma série de pontos de dados no passado e tentar prever o que acontecerá a ele no futuro.
No entanto, vamos adotar uma abordagem estatística quantitativa para séries temporais, assumindo que nossas séries temporais são realizações de seqüências de variáveis ​​aleatórias. Ou seja, vamos supor que existe algum processo de geração subjacente para nossa série temporal baseada em uma ou mais distribuições estatísticas das quais essas variáveis ​​são extraídas.
A análise de séries temporais tenta entender o passado e prever o futuro.
Tal seqüência de variáveis ​​aleatórias é conhecida como um processo estocástico de tempo discreto (DTSP). Na negociação quantitativa, estamos preocupados em tentar encaixar modelos estatísticos nessas DTSPs para inferir relações subjacentes entre séries ou prever valores futuros, a fim de gerar sinais de negociação.
Séries temporais em geral, incluindo aquelas fora do mundo financeiro, geralmente contêm os seguintes recursos:
Tendências - Uma tendência é um movimento direcional consistente em uma série temporal. Essas tendências serão determinísticas ou estocásticas. O primeiro nos permite fornecer uma base lógica para a tendência, enquanto o segundo é uma característica aleatória de uma série que dificilmente poderemos explicar. As tendências aparecem frequentemente em séries financeiras, particularmente em preços de commodities, e muitos fundos do Consultor de Negociação de Commodities (CTA) usam modelos sofisticados de identificação de tendências em seus algoritmos de negociação. Variação Sazonal - Muitas séries temporais contêm variações sazonais. Isso é particularmente verdadeiro em séries que representam vendas de negócios ou níveis climáticos. No financiamento quantitativo, muitas vezes vemos variações sazonais nas commodities, particularmente aquelas relacionadas às estações de cultivo ou variações anuais de temperatura (como o gás natural). Dependência Serial - Uma das características mais importantes das séries temporais, particularmente das séries financeiras, é a da correlação serial. Isso ocorre quando as observações de séries temporais que estão próximas no tempo tendem a ser correlacionadas. Agrupamento de volatilidade é um aspecto da correlação serial que é particularmente importante na negociação quantitativa.
Como podemos aplicar análise de séries temporais em finanças quantitativas?
Nosso objetivo como pesquisadores quantitativos é identificar tendências, variações sazonais e correlação usando métodos estatísticos de séries temporais e, por fim, gerar sinais de negociação ou filtros baseados em inferência ou previsões.
Nossa abordagem será:
Previsão e previsão de valores futuros - Para negociar com êxito, precisaremos prever com precisão os preços futuros dos ativos, pelo menos no sentido estatístico. Simular Série - Uma vez que identificamos propriedades estatísticas de séries temporais financeiras, podemos utilizá-las para gerar simulações de cenários futuros. Isso nos permite estimar o número de negócios, os custos comerciais esperados, o perfil esperado de retornos, o investimento técnico e financeiro exigido em infraestrutura e, portanto, o perfil de risco e a lucratividade de uma estratégia ou portfólio específico. Inferir relacionamentos - A identificação de relacionamentos entre séries temporais e outros valores quantitativos nos permite melhorar nossos sinais de negociação por meio de mecanismos de filtragem. Por exemplo, se pudermos inferir como o spread em um par de moedas estrangeiras varia com o volume de compra / venda, poderemos filtrar quaisquer negociações prospectivas que possam ocorrer em um período em que projetamos uma ampla margem para reduzir os custos de transação.
Além disso, podemos aplicar testes estatísticos (clássicos / frequentistas ou Bayesianos) aos nossos modelos de séries temporais para justificar certos comportamentos, como a mudança de regime nos mercados de ações.
Software de análise de séries temporais.
Até o momento, usamos quase exclusivamente o C ++ e o Python para a implementação de nossa estratégia de negociação. Ambas as linguagens são "ambientes de primeira classe" para escrever uma pilha de negociação inteira. Ambos contêm muitas bibliotecas e permitem uma construção "ponta-a-ponta" de um sistema de negociação apenas dentro dessa linguagem.
Infelizmente, o C ++ e o Python não possuem bibliotecas estatísticas extensas. Esta é uma das suas deficiências. Por essa razão, usaremos o ambiente estatístico R como meio de realizar pesquisas de séries temporais. R é bem adequado para o trabalho devido à disponibilidade de bibliotecas de séries temporais, métodos estatísticos e recursos simples de plotagem.
Aprenderemos R em uma forma de solução de problemas, em que novos comandos e sintaxes serão introduzidos conforme necessário. Felizmente, há muitos tutoriais extremamente úteis para o R disponível na internet e vou destacá-los à medida que passarmos pela sequência de artigos de análise de séries temporais.
Roteiro de Análise de Séries Temporais QuantStart.
Até à data, os artigos anteriores sobre os tópicos da aprendizagem estatística, econometria e análise Bayesiana, têm sido introdutórios na sua natureza e não consideraram a aplicação de tais técnicas a informações modernas de preços de alta frequência.
Para aplicar algumas das técnicas acima aos dados de frequência mais alta, precisamos de uma estrutura matemática para unificar nossa pesquisa. A análise de séries temporais fornece essa unificação e nos permite discutir modelos separados dentro de um cenário estatístico.
Eventualmente, utilizaremos ferramentas bayesianas e técnicas de aprendizado de máquina em conjunto com os métodos a seguir para prever o nível e direção do preço, agir como filtros e determinar a "mudança de regime", ou seja, determinar quando nossa série temporal mudou seu comportamento estatístico subjacente.
Nosso roteiro de séries temporais é o seguinte. Cada um dos tópicos abaixo formará seu próprio artigo ou conjunto de artigos. Depois de examinarmos esses métodos em profundidade, estaremos em condições de criar alguns modelos modernos sofisticados para examinar dados de alta frequência.
Introdução à série temporal - Este artigo descreve a área de análise de séries temporais, seu escopo e como ela pode ser aplicada a dados financeiros. Correlação - Um aspecto absolutamente fundamental da modelagem de séries temporais é o conceito de correlação serial. Vamos defini-lo e descrever uma das maiores armadilhas da análise de séries temporais, a saber, que "correlação não implica causalidade". Previsão - Nesta seção, vamos considerar o conceito de previsão, que é fazer previsões de direção ou nível futuro para uma determinada série temporal e como ela é executada na prática. Modelos Estocásticos - Nós gastamos algum tempo considerando modelos estocásticos no campo de precificação de opções no site, ou seja, com Movimento Browniano Geométrico e Volatilidade Estocástica. Nós estaremos olhando para outros modelos, incluindo o ruído branco e modelos autoregressivos. Regressão - Quando temos tendências determinísticas (em oposição a estocásticas) nos dados, podemos justificar sua extrapolação usando modelos de regressão. Consideraremos a regressão linear e não linear e consideraremos a correlação serial. Modelos estacionários - Os modelos estacionários assumem que as propriedades estatísticas (ou seja, a média e a variância) das séries são constantes no tempo. Podemos usar modelos Moving Average (MA), bem como combiná-los com modelos autoregressivos para formar modelos ARMA. Modelos não estacionários - Muitas séries temporais financeiras são não estacionárias, ou seja, têm média e variação variadas. Em particular, os preços dos ativos geralmente apresentam períodos de alta volatilidade. Para essas séries, precisamos usar modelos não estacionários, como ARIMA, ARCH e GARCH. Modelagem Multivariada - Consideramos modelos multivariados no QuantStart no passado, ou seja, quando consideramos pares de ações com reversão de média. Nesta seção, definiremos de forma mais rigorosa a cointegração e examinaremos outros testes para ela. Consideraremos também modelos vetoriais autorregressivos (VAR) [não confundir com Value-at-Risk!]. Modelos de espaço de estados - State Space Modeling empresta uma longa história de teoria de controle moderna usada em engenharia para nos permitir modelar séries temporais com parâmetros variáveis ​​rapidamente (como a variável $ \ beta $ slope entre dois ativos cointegrados em uma regressão linear ). Em particular, vamos considerar o famoso Filtro de Kalman e o Modelo de Markov Oculta. Este será um dos principais usos da análise bayesiana em séries temporais.
Como isso se relaciona com outros artigos estatísticos QuantStart?
Meu objetivo com o QuantStart sempre foi tentar delinear o arcabouço matemático e estatístico para análise quantitativa e negociação quantitativa, desde o básico até os mais modernos e modernos.
Até hoje, passamos a maior parte do tempo em introdutórios e intermediários. No entanto, agora vamos voltar nossa atenção para os recentes avanços tecnológicos usados ​​em empresas quantitativas.
Isso não só ajudará aqueles que desejam ganhar uma carreira na indústria, mas também dará aos comerciantes de varejo quantitativos entre você um conjunto de ferramentas muito mais amplo de métodos, bem como uma abordagem unificadora para a negociação.
Tendo trabalhado anteriormente no setor, posso afirmar com certeza que uma fração substancial de profissionais de fundos quantitativos usa técnicas muito sofisticadas para "caçar alfa".
No entanto, muitas dessas empresas são tão grandes que não estão interessadas em estratégias de "capacidade restrita", ou seja, aquelas que não são escalonáveis ​​acima de US $ 1-2 milhões. Como varejistas, se podemos aplicar uma estrutura comercial sofisticada a essas áreas, podemos alcançar lucratividade a longo prazo.
Eventualmente, combinaremos nossos artigos sobre análise de séries temporais, com a abordagem bayesiana de testes de hipóteses e seleção de modelos, juntamente com códigos C ++, R e Python otimizados, para produzir modelos de séries temporais não-estacionárias e não-lineares que podem ser negociados em alta. freqüência.
Agora que o software QSForex abordou a viabilidade de backtesting de alta frequência de vários pares de moedas, temos uma estrutura pronta para testar esses modelos, pelo menos nos mercados de câmbio.
O próximo artigo da série discutirá a correlação e por que é um dos aspectos mais fundamentais da análise de séries temporais.
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.

Previsão de séries temporais financeiras - Parte I.
Previsão de séries temporais financeiras - Parte I.
Nesta série de artigos, vamos criar um processo estatisticamente robusto para previsão de séries temporais financeiras. Essas previsões formarão a base para um grupo de estratégias de negociação automatizadas. O primeiro artigo da série discutirá a abordagem de modelagem e um grupo de algoritmos de classificação que nos permitirá prever a direção do mercado.
Dentro desses artigos, usaremos o scikit-learn, uma biblioteca de aprendizado de máquina para Python. O Scikit-learn contém implementações de muitas técnicas de aprendizado de máquina. Isso não só nos poupa muito tempo na implementação da nossa, mas minimiza o risco de erros introduzidos pelo nosso próprio código e permite uma verificação adicional em relação a bibliotecas escritas em outros pacotes, como R. Isso nos dá uma grande quantidade de confiança se precisarmos criar nossa própria implementação personalizada (por razões de velocidade de execução, digamos).
Processo para previsão.
Uma explicação detalhada do campo da aprendizagem de máquina estatística está além deste artigo. Para utilizar técnicas como a Regressão Logística, a Análise Discriminante Linear e a Análise Discriminante Quadrática, precisamos delinear alguns conceitos básicos.
Técnicas de Aprendizagem Supervisionadas.
Técnicas de aprendizado supervisionadas envolvem um conjunto de tuplas conhecidas $ (x_i, y_i) $, $ i \ in \ $, com $ x_i $ representando as variáveis ​​preditoras (como retorno do mercado de ações atrasado ou volume negociado) e $ y_i $ representando o associado variáveis ​​de resposta / observação (como o retorno do mercado de ações hoje). Nesta situação, estamos interessados ​​na previsão. Dadas as variáveis ​​preditoras futuras, desejamos estimar as respostas desses preditores. Isso está em oposição à inferência onde estamos mais interessados ​​na relação entre as variáveis.
Todos os algoritmos que utilizamos neste artigo, juntamente com muitos outros que serão utilizados no futuro, são do domínio de aprendizagem supervisionada.
Medindo Precisão de Previsão.
A classe particular de métodos em que estamos interessados ​​envolve classificação binária. Ou seja, tentaremos alocar o retorno percentual de um dia específico em dois intervalos: "Para cima" ou "Para baixo". Em uma previsão de produção estaríamos muito preocupados com a magnitude desta previsão e os desvios da previsão do valor real.
Nesses casos, podemos utilizar o erro médio, o desvio absoluto médio e o erro quadrático médio da raiz para fornecer uma estimativa da precisão da previsão. A literatura fornece numerosos outros exemplos de medidas de precisão de previsão.
Neste caso, estaremos apenas preocupados com a taxa de acerto, que é simplesmente a porcentagem de vezes que o previsor alcançou uma previsão precisa (ou seja, quando o dia acabou e vice-versa). Em exemplos posteriores, faremos uso de uma matriz de confusão para determinar o desempenho de previsão em uma base de classe por classe. Além disso, calcularemos os valores acima mencionados e os incorporaremos ao processo de pesquisa de negociação.
Fatores de previsão.
Uma metodologia de previsão é tão boa quanto os fatores escolhidos como preditores. Há um número impressionante de fatores potenciais a serem escolhidos ao se prever retornos do índice do mercado de ações. Neste artigo, vamos restringir os fatores às defasagens de tempo dos retornos percentuais atuais. Isso não é porque eles são os melhores preditores, e sim porque é simples demonstrar o processo de previsão em um conjunto de dados facilmente obtido.
A escolha do fator de previsão é extremamente importante, se não o mais importante, componente do previsor. Mesmo as técnicas simples de aprendizado de máquina produzirão bons resultados em fatores bem escolhidos. Note que o inverso não é frequentemente o caso. "Lançar um algoritmo em um problema" geralmente leva a uma baixa precisão de previsão.
Especificamente para esse analista, escolhi o primeiro e o segundo desfasamento dos retornos percentuais como os preditores da direção atual do mercado de ações. Esta é uma escolha relativamente arbitrária e há muito espaço para modificação, por exemplo, adicionando atrasos adicionais ou o volume de ações negociadas. Geralmente, é melhor ter menos preditores em um modelo, embora existam testes estatísticos disponíveis que possam demonstrar a capacidade preditiva de cada fator.
Previsão S & amp; P500 com Regressão Logística, LDA e QDA.
O S & amp; P500 é um índice ponderado das 500 maiores empresas de capital aberto (por capitalização de mercado) no mercado de ações dos EUA. Muitas vezes, é considerado um "benchmark" de ações. Existem muitos produtos derivados para permitir a especulação ou cobertura no índice. Em particular, o contrato de futuros do S & amp; P500 E-Mini Index é um meio extremamente vago de negociar o índice.
Nesta seção, usaremos três classificadores para prever a direção do preço de fechamento no dia $ N $ com base apenas na informação de preço conhecida no dia $ N-1 $. Um movimento direcional ascendente significa que o preço de fechamento em $ N $ é maior do que o preço em $ N-1 $, enquanto um movimento descendente implica em um preço de fechamento em $ N $ menor do que em $ N-1 $.
Se pudermos determinar a direção do movimento de maneira que exceda significativamente uma taxa de acerto de 50%, com baixo erro e uma boa significância estatística, então estamos no caminho de formar uma estratégia básica de negociação sistemática com base em nossas previsões. Neste estágio, não estamos preocupados com os algoritmos de classificação de aprendizado de máquina mais atualizados. No momento, estamos apenas introduzindo conceitos e, assim, começaremos a discussão sobre previsão com alguns métodos elementares.
Regressão Logística.
A primeira técnica que vamos considerar é a regressão logística (LR). No nosso caso, vamos usar o LR para medir a relação entre uma variável dependente categórica binária ("Up" ou "Down") e várias variáveis ​​contínuas independentes (os retornos percentuais defasados). O modelo fornece a probabilidade de que um determinado dia (seguinte) seja categorizado como "Up" ou "Down". Nesta implementação, escolhemos atribuir cada dia como "Up" se a probabilidade exceder 0,5. Poderíamos usar um limite diferente, mas, por simplicidade, escolhi 0,5.
O LR usa a fórmula logística para modelar a probabilidade de obter um dia "Up" ($ Y = U $) com base nos fatores de atraso ($ L_1 $, $ L_2 $):
A função logística é usada porque fornece uma probabilidade entre $ [0,1] $ para todos os valores de $ L_1 $ e $ L_2 $, ao contrário da regressão linear, na qual as probabilidades negativas podem ser geradas na mesma configuração.
Para ajustar o modelo (ou seja, estimar os coeficientes $ \ beta_i $), o método de máxima verossimilhança é usado. Felizmente para nós, a implementação do ajuste e previsão do modelo LR é feita pela biblioteca scikit-learn.
Análise Discriminante Linear.
A próxima técnica usada é a Análise Linear Discriminante (LDA). O LDA difere do LR porque na LR modelamos $ P (Y = U | L_1, L_2) $ como uma distribuição condicional da resposta $ Y $ dados os preditores $ L_i $, usando uma função logística. No LDA, a distribuição das variáveis ​​$ L_i $ é modelada separadamente, dado $ Y $, e $ P (Y = U | L_1, L_2) $ é obtido através do Teorema de Bayes.
Essencialmente, o LDA resulta da suposição de que os preditores são extraídos de uma distribuição multivariada gaussiana. Após estimativas de calcu - lação para os parâmetros dessa distribuição, os parâmetros podem ser introduzidos no Teorema de Bayes para fazer previsões sobre a qual classe uma observação pertence.
O LDA assume que todas as classes compartilham a mesma matriz de covariância.
Não vou me debruçar sobre as fórmulas para estimar a distribuição ou as probabilidades posteriores que são necessárias para fazer previsões, pois mais uma vez o scikit-learn lida com isso para nós.
Análise Discriminante Quadrática.
A Análise Discriminante Quadrática (QDA) está intimamente relacionada com a LDA. A diferença significativa é que cada classe pode agora possuir sua própria matriz de covariância.
O QDA geralmente funciona melhor quando os limites de decisão não são lineares. O LDA geralmente apresenta melhor desempenho quando há menos observações de treinamento (ou seja, quando é necessário reduzir a variação). O QDA, por outro lado, apresenta um bom desempenho quando o conjunto de treinamento é grande (ou seja, a variação é menos preocupante). O uso de um ou de outro, em última análise, resume-se ao trade-off de viés-variância.
Assim como com LR e LDA, o scikit-learn cuida da implementação do QDA, portanto, precisamos fornecer apenas dados de treinamento / teste para estimativa e previsão de parâmetros.
Implementação Python.
Para a implementação destes meteorologistas vamos fazer uso de NumPy, pandas e scikit-learn. Eu escrevi anteriormente um tutorial sobre como instalar essas bibliotecas. Eu tenho fortemente comentado o código em si, então deve ser fácil determinar o que está acontecendo.
O primeiro passo é importar os módulos e bibliotecas relevantes. Vamos importar os classificadores LogisticRegression, LDA e QDA para esse previsor:
Agora que as bibliotecas são importadas, precisamos criar um DataFrame pandas que contenha os retornos percentuais com defasagem para um número anterior de dias (com o padrão de cinco). create_lagged_series pegará um símbolo de ação (conforme reconhecido pelo Yahoo Finance) e criará um DataFrame com defasagem ao longo do período especificado:
A próxima função auxiliar foi projetada para criar uma porcentagem de hit_rate para cada modelo, eliminando o código duplicado. Ele se baseia no fato de que os objetos Logistic Regression, LDA e QDA possuem os mesmos métodos (ajuste e previsão). A taxa de acertos é enviada para o terminal:
Finalmente, nós o associamos com uma função __main__. Neste caso, vamos tentar prever a direção do mercado de ações dos EUA em 2005, usando dados de retornos de 2001 a 2004:
A saída do código é a seguinte:
Pode-se observar que tanto a Regressão Logística quanto o Analisador Linear Discriminante conseguiram uma taxa de acerto de 56%. No entanto, o Analisador Discriminante Quadrático foi capaz de melhorar em ambos para produzir uma taxa de acerto de 60%. Para o período em particular analisado, isto é provavelmente devido ao fato de que há alguma não-linearidade na relação entre os fatores defasados ​​e a direção que não é bem capturada na análise linear.
Assim, há esperança de que possamos prever parcialmente o mercado de ações dos EUA. Existem algumas ressalvas a esta metodologia de previsão:
Não usamos qualquer forma de validação cruzada para reduzir erros de ajuste. Um analista de produção exigiria que tal análise fosse considerada robusta. O previsor só foi treinado em dados entre 2001-2004 inclusive. Dados mais recentes do mercado de ações podem ter precisão de previsão substancialmente diferente. Na verdade, não tentamos negociar essa informação. Em particular, como podemos realmente executar negociações? Nós usaríamos o futuro do e-mini dos EUA? Nós faríamos uso de ordens Market-On-Open (MOO) ou Market-On-Close (MOC)? Também precisaríamos considerar os custos de transação.
Nos artigos subseqüentes, consideraremos essas questões em maior profundidade.
Um aviso sobre previsão aleatória.
Nesta seção, quero destacar abertamente o problema de significância estatística ao lidar com os previsores. Além do previsor acima, também gerou uma série de "previsão" baseada apenas no sinal de sorteios aleatórios de uma distribuição normal padrão. Note-se que no mesmo período produziu uma taxa de acerto de previsão de 53,4% e ainda o método usado para gerar a série não é essencialmente diferente de jogar uma moeda! Tenha isso em mente sempre que você executar procedimentos de previsão, pois muitas vezes pode levar a um desempenho comercial terrível se não for levado em conta.
Nos artigos a seguir, serão considerados os classificadores de previsão não linear supervisionados mais avançados, como redes neurais artificiais (ANN) e máquinas de vetores de suporte (SVM). Com um "estável" de técnicas de aprendizado de máquina à nossa disposição, poderemos usar métodos de conjunto para produzir uma precisão de previsão e robustez que, às vezes, pode exceder os de qualquer previsor individual.
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.

Estratégia de negociação de séries temporais
O indicador Previsão de Séries Temporais mostra qualquer tendência estatística no preço de uma ação ao longo de um período de tempo de 'n' usando técnicas de análise de regressão linear. Curiosamente, a Previsão de Séries Temporais gera o último ponto de várias tendências de regressão linear simultâneas. O indicador de Previsão de Séries Temporais resultante também é chamado de indicador de 'regressão linear móvel' e às vezes o 'oscilador de regressão'. Os mestres de day trading podem encontrar um uso para este indicador, a fim de dar a si mesmos um "sabor" do que a ação de amanhã pode ser, embora a maioria prefira técnicas estabelecidas, como a análise de volatilidade.
A previsão é negociada como qualquer outra média móvel, mas o fato de que várias Séries Temporais são usadas lhe dá algumas vantagens sobre as MAs "comuns", principalmente a falta de um atraso quando os preços mudam rapidamente. Isso, é claro, é porque a Previsão de Séries Temporais 'se ajusta' aos dados de preço subjacentes, em vez de fazer a média deles, tornando-a mais responsiva às mudanças de preço. Basicamente, se a tendência atual permanecer no lugar, a Previsão de Séries Temporais é uma previsão do nível de preços do próximo período.
Para calcular a Previsão de Séries Temporais, é necessário usar uma técnica de "ajuste de mínimos quadrados" para calcular uma linha de tendência de regressão linear, que tenta ajustar uma linha de tendência aos dados de preço, minimizando a distância entre os pontos de preço e a própria linha de tendência de regressão linear.

Análise básica de séries temporais e estratégia de negociação com dados de preço de Bitcoin.
Análise de séries temporais não é um tema fácil, devo dizer. Pelo menos para mim. Durante a minha aula no curso Data Science Immersive da Assembléia Geral em Londres, tive a chance de aprender o tópico, e levei algum tempo para entender o assunto.
O objetivo deste post é reforçar o que aprendi implementando e tentando explicar aos outros. Não sou especialista em finanças, portanto, qualquer conselho ou feedback de alguém familiarizado com o campo seria muito apreciado.
Séries Temporais.
Uma série temporal é uma série de pontos de dados indexados (ou listados ou representados graficamente) por ordem de tempo. Os dados da série temporal devem ser tratados de maneira diferente de outros tipos de dados. Um dos pressupostos dos dados estatísticos é a sua independência. Independência significa que o valor de uma observação não influencia ou afeta o valor de outras observações. Mas, em dados de séries temporais, cada ponto de dados está próximo no tempo e eles não são completamente independentes de seus valores adjacentes. Portanto, precisamos de uma abordagem diferente para modelar dados de séries temporais.
Primeiro, comece carregando as dependências. Pandas_datareader é uma biblioteca útil para extrair dados financeiros da web. Para este post, vou extrair dados do Yahoo Finance.
OK, vamos obter os dados de preço do BTC-USD (valor de Bitcoin em USD) a partir do início de 2017 até 27/12/2017.
Como você pode ver, os dados têm seis colunas. "Aberto" para o preço de abertura do dia, "Alto" para o preço mais alto durante o dia, "Baixo" para o preço mais baixo durante o dia, "Fechar" para o preço de fechamento do dia, "Adj Close" para o preço preço de fechamento ajustado, “Volume” para volume de transação. No preço da ação, o preço de fechamento ajustado reflete o preço de fechamento de uma ação em qualquer dia de negociação que foi alterado para incluir quaisquer distribuições e ações corporativas que ocorreram a qualquer momento antes da abertura do dia seguinte.
Mas, para ser 100% honesto, não tenho certeza de quais fatores serão levados em conta para o preço de fechamento ajustado de uma moeda, mas observando a diferença da coluna "Close" e da coluna "Adj Close", parece que eles são exatamente os mesmos.
Vamos traçar os dados do preço "Adj Close" em um gráfico.
Parece que o valor em dólares do Bitcoin permaneceu estável durante o primeiro semestre de 2017, mas começou a oscilar e subiu acentuadamente em relação a novembro.
Média Móvel.
Uma das técnicas básicas de análise para dados de séries temporais é a média móvel. Como o nome sugere, em vez de calcular a média em todo o conjunto de dados, a média móvel (também chamada de média móvel) calcula a média de um subconjunto com um determinado tamanho de janela e avança. A média móvel é usada para suavizar as flutuações de curto prazo e destacar tendências ou ciclos de longo prazo.
Vejamos como a média móvel funciona em um gráfico traçando dados de preço de 10/01/2017 a 27/12/2017. Eu escolhi o quarto trimestre de 2017 para traçar onde há uma forte tendência nos dados para ver claramente como funciona a média móvel.
Comparado com a observação original, que é plotada com uma linha azul, podemos ver a curva das linhas ficando mais suaves à medida que os tamanhos das janelas aumentam.
Cruzamento Médio Móvel Duplo.
Outro caso de uso de média móvel é em uma estratégia de negociação chamada crossover de média móvel dupla. Eu aprendi sobre isso através de um post do Medium, e foi muito bem explicado, não apenas sobre a estratégia do momentum, mas também o caso geral de uso do Python na modelagem de estratégia de negociação. Eu recomendo o post se você for um novato interessado em modelagem financeira com o Python.
O que eu implementei abaixo é apenas uma aplicação do tutorial do post que eu mencionei, mas mudei para janela curta para 10 dias em vez de 40 dias do post original, e por um período mais longo usei 50 dias e nomeei mid_window de usar 100 dias como o autor do post original fez. Eu acho que mudando os prazos mais curtos, a estratégia será mais curta. Mas eu não sou especialista em finanças, e não tenho certeza se estou cometendo algum erro fundamental alterando o prazo mais curto. Se alguém que está lendo isso for especialista em finanças, sinta-se à vontade para corrigir-me se houver algum erro nessa lógica.
O conceito de um crossover de média móvel dupla é bastante simples. Calcule duas médias móveis do preço, uma média seria a curto prazo e outra a longo prazo. A média móvel de longo prazo terá uma variação menor e se moverá na mesma direção que a média móvel de curto prazo, mas a uma taxa diferente. As diferentes taxas de direção induzem pontos em que os valores das duas médias móveis podem ser iguais ou se cruzar. Esses pontos são chamados de pontos de cruzamento. Na estratégia de negociação crossover média dupla, esses crossovers são pontos de decisão para comprar ou vender as moedas.
De acordo com o autor do post original, “Um sinal de compra é gerado quando a média de curto prazo cruza a média de longo prazo e sobe acima dela, enquanto um sinal de venda é acionado por uma média de curto prazo cruzando a média de longo prazo. e caindo abaixo dela ”.
No entanto, enquanto procurava por mais material sobre o assunto, também descobri que há uma abordagem oposta aos mesmos pontos de sinalização. O método acima introduzido pelo autor é chamado The Technical Approach e a outra abordagem é chamada The Value Approach.
É muito interessante ver que existem duas visões contraditórias sobre a mesma situação. Mas neste post, vou me concentrar na abordagem técnica. Agora vamos ver como isso pode ser aplicado a dados reais.
Agora podemos plotá-lo para ver como fica no gráfico.
Com o Techincal Approach, eu teria iniciado meu investimento com 1.048,89 USD, e durante o período de aproximadamente um ano, eu teria precisado de 1.551,77 USD para continuar investindo, e o valor final do meu 1 Bitcoin teria sido avaliado em 1, 3864.87 USD agora (27/12/2017). Pode ser um cálculo ingênuo, sem levar em conta as taxas de transação ou outros custos que possam ter ocorrido. Mas em um cálculo simplificado, não é um investimento ruim.
Se The Value Approach for aplicado ao mesmo gráfico, a situação poderá não ser a mesma. Existem os conceitos de “venda a descoberto” e “venda a longo prazo” em finanças. “Vender um ativo a descoberto significa vender um ativo que atualmente não possuímos e receber seu valor em dinheiro. A venda a descoberto é diferente da venda de um ativo que já possuímos, o que é chamado de vender por muito tempo ”. Para mim isso sempre soa um pouco contra-intuitivo, vendendo algo que nem mesmo você possui. Se você estiver interessado em aprender mais sobre isso, você pode achar útil esta página da Investopedia.
A partir da Abordagem Técnica, a última transação foi "comprar", mas isso na Abordagem do Valor teria sido "vender". Como você pode ver, o preço não cai e continua subindo, e, nesse caso, o vendedor a descoberto pode estar sujeito a uma chamada de margem de seu corretor.
Média Móvel Exponencial.
Outra técnica de suavização de dados de séries temporais é a EMA (Média móvel exponencial). A MME é uma média ponderada dos últimos preços de n (tamanho da janela), em que a ponderação diminui exponencialmente com cada preço / período anterior. Em palavras simples, os preços recentes recebem mais peso do que os preços passados, e o grau da contribuição decai exponencialmente à medida que o período de tempo vai além do passado a partir da observação atual.
A média móvel exponencial (ajustada) para o tempo t é definida como:
Aqui alfa é o fator de decaimento. Mas há algo que não consigo entender. Eu posso entender a lógica, mas quando se trata da função "ewm" do Pandas, não consigo descobrir qual é o valor padrão de alfa usado pelo cálculo. Talvez exista um padrão que todos concordem mesmo sem declará-lo explicitamente, mas passei uma boa quantidade de tempo tentando descobrir isso, mas ainda não tenho certeza. Talvez eu esteja sentindo falta de algo importante. Se você estiver familiarizado com isso, qualquer ajuda seria apreciada.
* update: Encontrei a resposta para minha própria pergunta acima. Eu tenho que admitir que eu não olhei completamente na documentação. É realmente estranho às vezes, eu estava olhando toda a explicação ali mesmo na documentação, mas de alguma forma eu não consegui entender. Com a função EWM dos Pandas, não há valor padrão e é necessário especificar o decaimento. Existem quatro maneiras diferentes de especificá-lo. No código abaixo, eu especifiquei em termos de "span", neste caso alfa é definido como 2 / (span + 1). Assim, especificando "span" como 10, eu estava especificando alfa como cerca de 0,18. Você também pode especificar diretamente o alpha da versão 0.18.0 do Pandas.
Mas intuitivamente, em comparação com a média móvel simples, a média móvel exponencial reagirá mais rapidamente ao movimento mais recente do preço, dando mais pesos aos valores atuais.
No gráfico acima, você pode ver que a EMA na linha vermelha captura o movimento descendente em meados de dezembro mais rápido que a SMA na linha amarela, e também no final, a EMA começou a pegar movimento ascendente, enquanto a SMA ainda apresenta tendência descendente.
Você pode aplicar a mesma lógica do Crossover de Média Móvel Dupla à observação original e EMA. Só que desta vez procuramos os pontos de passagem entre a observação original e a EMA. Vamos ver como isso ocorrerá em um curto período de tempo a partir de 01/10/2017 até 27/12/2017.
Agora vamos ver isso em um gráfico.
Com a estratégia de negociação da EMA, eu teria iniciado meu investimento com 4.321,44 dólares e, durante o período de aproximadamente dois meses, eu teria precisado de 6.665,21 USD para continuar investindo, e o valor final da minha 1 Bitcoin teria sido avaliado em 8.751,43 USD agora (27/12/2017).
Foi um projeto de brinquedo divertido para realmente implementar o que aprendi durante a aula, e vou tentar explorar mais com análise de séries temporais e dados de Bitcoin. Mas devo investir em Bitcoin? Ainda não tenho certeza, talvez encontre uma resposta para explorar mais.
Obrigado por ler e você pode encontrar o Notebook Jupyter do código acima no link abaixo.

Reversão Média na Série Temporal.
Dados de séries temporais são simplesmente uma coleção de observações geradas ao longo do tempo. Por exemplo, a velocidade de um carro de corrida a cada segundo, temperatura diária, números de vendas semanais, retornos de ações por minuto, etc. Nos mercados financeiros, uma série cronológica acompanha o movimento de pontos de dados específicos, como o preço de um título. período de tempo especificado, com pontos de dados registrados em intervalos regulares. Uma série temporal pode ser gerada para qualquer variável que esteja mudando com o tempo. A análise de séries temporais inclui técnicas para analisar dados de séries temporais, na tentativa de extrair estatísticas úteis e identificar características dos dados. A previsão de séries temporais é o uso de um modelo matemático para prever valores futuros com base em valores observados anteriormente nos dados de séries temporais.
O gráfico abaixo representa o preço de fechamento diário dos contratos futuros de alumínio ao longo de um período de 93 dias úteis, o que é uma série histórica.
Reversão Média.
A reversão à média é a teoria que sugere que preços, retornos ou vários indicadores econômicos tendem a se mover para a média histórica ou média ao longo do tempo. Esta teoria levou a muitas estratégias de negociação que envolvem a compra ou venda de um instrumento financeiro cujo desempenho recente diferiu muito da sua média histórica, sem qualquer razão aparente. Por exemplo, deixe o preço do ouro aumentar em média INR 10 todos os dias e um dia o preço do ouro aumenta em INR 40 sem qualquer notícia significativa ou fator por trás deste aumento, então pelo princípio da reversão da média podemos esperar o preço do ouro cair nos próximos dias tal que a mudança média no preço do ouro permaneça a mesma. Nesse caso, o reversionista médio venderia ouro, especulando que o preço caísse nos próximos dias. Assim, lucrando comprando a mesma quantidade de ouro que ele havia vendido anteriormente, agora a um preço menor.
Uma série temporal com reversão média foi plotada abaixo, a linha preta horizontal representa a média e a curva azul é a série temporal que tende a reverter para a média.
Uma coleção de variáveis ​​aleatórias é definida como sendo um processo estocástico ou aleatório. Um processo estocástico é considerado estacionário se sua média e variância forem invariantes no tempo (constantes ao longo do tempo). Uma série temporal estacionária será uma média revertida na natureza, isto é, tenderá a regressar à sua média e as flutuações à volta da média terão amplitudes aproximadamente iguais. Uma série temporal estacionária não se afastará muito de sua média por causa de sua variância constante finita. Uma série temporal não estacionária, pelo contrário, terá uma variância variável no tempo ou uma média variável no tempo ou ambas, e não tenderá a reverter para a sua média. No setor financeiro, os operadores aproveitam as séries temporais estacionárias, colocando ordens quando o preço de um título se desviar consideravelmente de sua média histórica, especulando o preço para voltar à sua média. Eles começam testando a estacionariedade em uma série temporal. Os dados financeiros, como os preços, são muitas vezes não estacionários, ou seja, possuem médias e variações que mudam com o tempo. Dados não estacionários tendem a ser imprevisíveis e não podem ser modelados ou previstos. Uma série temporal não estacionária pode ser convertida em uma série temporal estacionária por diferenciação ou exclusão de dados. Um passeio aleatório (os movimentos de um objeto ou mudanças em uma variável que não segue nenhum padrão ou tendência discernível) pode ser transformado em uma série estacionária por diferenciação (calculando a diferença entre Yt e Yt1). A desvantagem desse processo é que ele resulta na perda de uma observação a cada vez que a diferença é computada. Uma série temporal não estacionária com uma tendência determinista pode ser convertida em uma série temporal estacionária, prejudicando (removendo a tendência). Detrending não resulta em perda de observações. Uma combinação linear de duas séries temporais não estacionárias também pode resultar em uma série temporal estacionária de reversão de média. A série temporal (integrada de pelo menos a ordem 1), que pode ser linearmente combinada para resultar em uma série temporal estacionária, é considerada cointegrada.
Abaixo, é apresentado um gráfico de uma série temporal não estacionária com uma tendência determinista (Y t = α + βt + ε t) representada pela curva azul e suas séries temporais estacionárias retificadas (Y t & # 8211; βt = α + ε t) representado pela curva vermelha.
Estratégias de Negociação baseadas na Reversão Média.
Uma das mais simples estratégias de negociação relacionadas à reversão à média é encontrar o preço médio ao longo de um período especificado, seguido pela determinação de um intervalo alto-baixo em torno do valor médio de onde o preço tende a reverter para a média. Os sinais de negociação serão gerados quando esses intervalos forem cruzados & # 8211; colocar uma ordem de venda quando o intervalo é cruzado no lado superior e uma ordem de compra quando o intervalo é cruzado no lado inferior. O comerciante toma posições contrárias, isto é, vai contra o movimento de preços (ou tendência), esperando que o preço volte à média. Essa estratégia parece boa demais para ser verdade e é, ela enfrenta sérios obstáculos. O período de retrospectiva da média móvel pode conter alguns preços anormais que não são característicos do conjunto de dados, isso fará com que a média móvel represente de maneira incorreta a tendência da segurança ou a reversão de uma tendência. Em segundo lugar, pode ser evidente que a segurança está superfaturada de acordo com a análise estatística do trader, mas ele não pode ter certeza de que outros traders fizeram exatamente a mesma análise. Como outros comerciantes não veem a segurança como sendo superfaturada, eles continuariam comprando a segurança, o que elevaria ainda mais os preços. Essa estratégia resultaria em perdas se tal situação surgisse.
Pares de negociação é outra estratégia que se baseia no princípio da reversão da média. Dois títulos co-integrados são identificados, o spread entre o preço desses títulos seria estacionário e, portanto, significa reverter na natureza. Uma versão ampliada do Pairs Trading é chamada de Arbitragem Estatística, onde muitos pares cointegrados são identificados e divididos em cestas de compra e venda baseadas nos spreads de cada par. O primeiro passo em um modelo de Pares de Negociação ou Stat Arb é identificar um par de títulos co-integrados. Um dos testes comumente utilizados para verificar a co-integração entre um par de títulos é o Teste Augmented Dickey-Fuller (Teste ADF). Ele testa a hipótese nula de uma raiz unitária estar presente em uma amostra de série temporal. Uma série temporal que tem uma raiz unitária, isto é, 1 é uma raiz da equação característica da série, não é estacionária. A estatística aumentada de Dickey-Fuller, também conhecida como estatística-t, é um número negativo. Quanto mais negativo for, mais forte será a rejeição da hipótese nula de que existe uma raiz unitária em algum nível de confiança, o que implicaria que a série temporal é estacionária. A estatística-t é comparada com um parâmetro de valor crítico, se a estatística-t for menor que o parâmetro do valor crítico, então o teste é positivo e a hipótese nula é rejeitada.
Verificação de co-integração & # 8211; Teste do ADF.
Considere o código Python mostrado abaixo para verificar a cointegração:
Começamos importando bibliotecas relevantes, seguidas da busca de dados financeiros para dois títulos usando a função quandl. get (). O Quandl fornece dados financeiros e econômicos diretamente no Python, importando a biblioteca Quandl. Neste exemplo, buscamos dados para futuros de alumínio e chumbo da MCX. Em seguida, imprimimos as cinco primeiras linhas dos dados buscados usando a função head (), para visualizar os dados sendo extraídos pelo código. Usando a biblioteca statsmodels. api, calculamos a regressão de mínimos quadrados ordinários sobre o preço de fechamento do par de mercadorias e armazenamos o resultado da regressão na variável denominada "resultado". Em seguida, usando a biblioteca statsmodels. tsa. stattools, executamos o teste adfuller passando o residual da regressão como entrada e armazenamos o resultado desse cálculo na matriz “c_t”. Essa matriz contém valores como os parâmetros de estatística t, valor p e valor crítico. Aqui, consideramos um nível de significância de 0,1 (nível de confiança de 90%). “C_t [0]” carrega a estatística t, “c_t [1]” contém o valor p e “c_t [4]” armazena um dicionário contendo parâmetros de valor crítico para diferentes níveis de confiança. Para a cointegração, consideramos duas condições, em primeiro lugar, verificamos se o t-stat é menor que o parâmetro do valor crítico (c_t [0] & lt; = c_t [4] [& # 8216; 10% & # 8217;]) e em segundo lugar, se o valor-p é menor que o nível de significância (c_t [1] & lt; = 0.1). Se ambas as condições forem verdadeiras, imprimimos que o “par de títulos é co-integrado”, caso contrário, imprima que o “par de títulos não está cointegrado”.
Para saber mais sobre o Pairs Trading, Arbitragem Estatística e o teste ADF, você pode conferir o curso de certificação on-line em "Estatística Arbitrage Trading" oferecido conjuntamente pela QuantInsti e MCX para aprender como negociar estratégias de Arbitragem Estatística usando Python e Excel.
Outros links.
Estatísticas por trás da negociação de pares & # 8211;
Teste ADF usando excel & # 8211;
Aprenda Estratégias de Reversão Média em detalhes. Faça nosso curso exclusivo, desenvolvido em parceria com o Dr. Ernest P Chan. Clique aqui para saber mais sobre o curso.
Disclaimer: Todos os investimentos e negociação no mercado de ações envolvem risco. Quaisquer decisões de negociar nos mercados financeiros, incluindo negociação de ações ou opções ou outros instrumentos financeiros, são uma decisão pessoal que só deve ser tomada após uma pesquisa completa, incluindo risco pessoal e avaliação financeira e o envolvimento de assistência profissional na medida em que você Acredito necessário. As estratégias de negociação ou informações relacionadas mencionadas neste artigo são apenas para fins informativos.

Riqueza Robótica.
Postado em 4 de fevereiro de 2016 por Kris Longmore.
Recentemente, escrevi sobre a adequação de modelos de séries temporais de reversão à média a dados financeiros e usando os modelos & # 8217; previsões como base de uma estratégia de negociação. Continuando minha exploração da modelagem de séries temporais, decidi pesquisar a família autorregressiva e condicionalmente heteroscedástica de modelos de séries temporais. Em particular, eu queria entender a média móvel integrada autogressiva (ARIMA) e generalizada autorregressivo condicional heterocedasticidade (GARCH) modelos, uma vez que são referenciados freqüentemente na literatura financeira quantitativa, e é sobre o tempo que eu comecei a velocidade. O que segue é um resumo do que aprendi sobre esses modelos, um procedimento geral de adaptação e uma estratégia de negociação simples baseada nas previsões de um modelo ajustado.
Várias definições são necessárias para definir a cena. Eu não quero reproduzir a teoria que eu estava passando; em vez disso, aqui está meu resumo de alto nível do que eu aprendi sobre modelagem de séries temporais, em particular os modelos ARIMA e GARCH e como eles estão relacionados aos seus modelos de componentes:
Em seu nível mais básico, a adaptação dos modelos ARIMA e GARCH é um exercício para descobrir como as observações, o ruído e a variação de uma série temporal afetam os valores subsequentes da série temporal. Tal modelo, apropriadamente ajustado, teria alguma utilidade preditiva, assumindo, é claro, que o modelo permaneceu um bom ajuste para o processo subjacente por algum tempo no futuro.
Um modelo ARMA (nota: no & # 8220; I & # 8221;) é uma combinação linear de um modelo autorregressivo (AR) e um modelo de média móvel (MA). Um modelo AR é aquele cujos preditores são os valores anteriores da série. Um modelo MA é estruturalmente similar a um modelo AR, exceto os preditores são os termos de ruído. Um modelo médio móvel autorregressivo de ordem p, q & # 8211; ARMA (p, q) & # 8211; é uma combinação linear dos dois e pode ser definida como:
onde $ w_ $ é ruído branco e $ a_ $ e $ b_ $ são coeficientes do modelo.
Um modelo ARIMA (p, d, q) é simplesmente um modelo ARMA (p, q) diferenciado & # 8216; d & # 8217; vezes & # 8211; ou integrado (I) - para produzir uma série estacionária.
Finalmente, um modelo GARCH tenta explicar também o comportamento heteroscedástico de uma série temporal (ou seja, a característica de agregação de volatilidade), bem como as influências seriadas dos valores anteriores da série (explicada pelo componente AR) e os termos de ruído. (explicado pelo componente MA). Um modelo GARCH usa um processo autoregressivo para a própria variação, isto é, usa valores passados ​​da variação para contabilizar as alterações na variação ao longo do tempo.
Com esse contexto saindo do caminho, eu em seguida encaixo um modelo ARIMA / GARCH na taxa de câmbio EUR / USD e uso-o como a base de um sistema de negociação. Os parâmetros do modelo para cada dia são estimados usando um procedimento de ajuste, esse modelo é então usado para prever o retorno do dia seguinte e uma posição é inserida de acordo e mantida por um dia de negociação. Se a previsão for a mesma do dia anterior, a posição existente será mantida.
Uma janela contínua de log retorna é usada para ajustar um modelo ARIMA / GARCH ideal no fechamento de cada dia de negociação. O procedimento de ajuste é baseado em uma pesquisa de força bruta dos parâmetros que minimizam o Critério de Informações do Aikake, mas outros métodos podem ser usados. Por exemplo, poderíamos escolher parâmetros que minimizem o Bayesian Information Criterion, o que pode ajudar a reduzir o overfitting penalizando modelos complexos (isto é, modelos com um grande número de parâmetros). Este procedimento de adaptação foi inspirado pelo post de Michael Halls-Moore sobre uma estratégia de negociação ARIMA + GARCH para o S & amp; P500, e eu peguei emprestado parte do seu código.
Eu escolhi usar uma janela de rolagem de 1000 dias para ajustar o modelo, mas esse é um parâmetro para otimização. Há um caso de usar tantos dados quanto possível na janela de rolagem, mas isso pode falhar em capturar os parâmetros do modelo em evolução com rapidez suficiente para se adaptar a um mercado em mudança. Eu não vou explorar muito isso aqui, mas seria interessante investigar o desempenho da estratégia como uma função da janela de lookback. Aqui está o código:
Primeiro, as previsões direcionais apenas: comprar quando um retorno positivo é previsto e vender quando um retorno negativo é previsto. Os resultados dessa abordagem são mostrados abaixo (sem previsão de custos de transação):
Você deve ter notado que, no procedimento de ajuste do modelo acima, retive os valores reais de retorno da previsão, bem como a direção do retorno da previsão. Eu quero investigar o poder preditivo da magnitude do valor de retorno previsto. Especificamente, a filtragem de transações quando a magnitude do retorno da previsão está abaixo de um certo limite melhora o desempenho da estratégia? O código abaixo executa essa análise para um pequeno limite de retorno. Para simplificar, converti o log de previsão para retornos simples para permitir a manipulação do sinal da previsão e a fácil implementação.
E os resultados sobrepostos à estratégia bruta:
Ocorreu-me que o modelo ARIMA / GARCH a que nos encaixamos em determinados dias pode ser uma representação melhor ou pior do processo subjacente do que nos outros dias. Talvez filtrar transações quando temos menos confiança em nosso modelo melhoraria o desempenho. Essa abordagem exige que a significância estatística do ajuste de cada modelo de dia seja avaliada, e uma negociação somente seja registrada quando esse significado exceder um certo limite. Existem várias maneiras pelas quais isso pode ser realizado. Primeiramente, poderíamos examinar visualmente o correlograma dos resíduos do modelo e fazer um julgamento sobre a adequação do ajuste nessa base. Idealmente, o correlograma dos resíduos se assemelharia a um processo de ruído branco, não mostrando correlação serial. O correlograma dos resíduos pode ser construído em R como segue:
acf (fit @ fit $ residuals, main = 'ACF de Residuais de Modelo')
Embora este correlograma sugira um bom ajuste do modelo, obviamente não é uma ótima abordagem, pois se baseia no julgamento subjetivo, sem mencionar a disponibilidade de um ser humano para rever o modelo de cada dia. Uma abordagem melhor seria examinar as estatísticas de Ljung-Box para o ajuste do modelo. O Ljung-Box é um teste de hipótese para avaliar se as autocorrelações dos resíduos de um modelo ajustado diferem significativamente de zero. Neste teste, a hipótese nula é de que a autocorrelação dos resíduos é zero; a alternativa é que a série possui correlação serial. Rejeição do nulo e confirmação do suplente implicaria que o modelo não é um bom ajuste, pois há uma estrutura inexplicável nos resíduos. A estatística Ljung-Box é calculada em R da seguinte forma:
O valor p neste caso fornece evidência de que os resíduos são independentes e que esse modelo específico é um bom ajuste. A título de explicação, a estatística do teste de Ljung-Box (X-quadrado na saída do código acima) cresce para aumentar a autocorrelação dos resíduos. O p-valor é a probabilidade de obter um valor tão grande ou maior que a estatística de teste sob a hipótese nula. Portanto, um alto valor de p neste caso é evidência de independência dos resíduos. Observe que se aplica a todos os atrasos até o especificado na caixa. função test ().
Aplicando o teste de Ljung-Box para cada dia de ajuste do modelo revela muito poucos dias onde a hipótese nula de resíduos independentes é rejeitada, portanto, estender a estratégia para também filtrar quaisquer negociações desencadeadas por um ajuste de modelo pobre é improvável para adicionar muito valor :
Conclusões e Trabalho Futuro.
O desempenho da estratégia ARIMA / GARCH supera uma estratégia de compra e manutenção no EUR / USD para o período de backtest, no entanto, o desempenho não é nada espetacular. Parece que é possível melhorar o desempenho da estratégia filtrando características como a magnitude da previsão e a adequação do modelo, embora este último não agregue muito valor a esse exemplo em particular. Outra opção de filtragem poderia ser calcular o intervalo de confiança de 95% para a previsão de cada dia e entrar apenas em uma negociação quando o sinal de cada limite é o mesmo, embora isso reduza bastante o número de negociações realmente realizadas.
Existem muitas outras variedades do modelo GARCH, por exemplo, exponencial, integrado, quadrático, limiar, estrutural e de comutação para citar alguns. Estes podem ou não fornecer uma representação melhor do processo subjacente do que o modelo simples GARCH (1,1) usado neste exemplo. Para uma exposição desses e outros sabores do GARCH, consulte Bollerslev et. al. (1994).
Uma área de pesquisa que eu achei muito interessante recentemente é a previsão de séries temporais através da combinação inteligente de modelos díspares, por exemplo, tomando a média das previsões individuais de vários modelos ou buscando consenso ou voto majoritário sobre o sinal da predição. Para pegar emprestada alguma nomenclatura de aprendizado de máquina, este conjunto & # 8216; ensemble & # 8217; de modelos muitas vezes podem produzir previsões mais precisas do que qualquer um dos modelos constituintes. Talvez uma abordagem útil seria agrupar as previsões do modelo ARIMA / GARCH apresentado aqui com uma rede neural artificial adequadamente treinada ou outro método de aprendizado estatístico. Talvez pudéssemos esperar que o modelo ARIMA / GARCH capturasse quaisquer características lineares das séries temporais, enquanto a rede neural poderia ser um bom ajuste para as características não lineares. Tudo isso é pura especulação, potencialmente com algum apoio a partir deste artigo, mas, ainda assim, uma interessante perspectiva de pesquisa.
Se você tiver alguma ideia para melhorar a precisão das previsões de modelos de séries temporais, adoro ouvi-las nos comentários.
Finalmente, crédito onde o crédito é devido: embora eu tenha trabalhado em várias fontes de informação sobre modelagem de séries temporais financeiras, achei os posts detalhados de Michael Halls-Moore sobre o assunto extremamente úteis. Ele começa desde o começo e trabalha através de vários modelos de complexidade crescente. Como declarado no post principal, eu também peguei emprestado de sua estratégia de negociação ARIMA + GARCH para o S & P500 no desenho da estratégia EUR / USD apresentada aqui, particularmente a abordagem para determinar os parâmetros do modelo através da minimização iterativa do Critério de Informação do Aikake. As idéias sobre a filtragem de negociações com base nos resultados do teste de Ljung-Box e a magnitude absoluta do valor previsto eram minhas (embora eu tenha certeza de que não sou o primeiro a chegar a elas) .
Outras referências que eu achei particularmente úteis:
Bollerslev, T. (2001). Econometria Financeira: Desenvolvimentos Passados ​​e Desafios Futuros, em Journal of Econometrics, vol. 100, 41-51.
Bollerslev, T., Engle, R. F. e Nelson, D. B. (1994). Modelos GARCH, em: Engle, R. F. e McFadden, D. L. (eds.) Handbook of Econometrics, vol. 4, Elsevier, Amsterdam, 2961-3038.
Engle, R. (2002). Novas Fronteiras para Modelos ARCH, em Journal of Applied Econometrics, vol. 17, 425-466.
Qi, M. e Zhang, G. P. (2008). Modelagem e Previsão de Séries Temporais de Tendência com Redes Neurais, em IEEE Transactions on Nerual Networks, vol. 19, n 5, 8-8-816.
Tsay, R. (2010). Modelos Heteroscedásticos Condicionais, em Tsay, R. Análise de Financial Time Series, Terceira Edição, Wiley, 109-174.
Aqui você pode baixar o código e os dados usados ​​nesta análise: arima_garch.
Matt haines.
Eu estava literalmente lutando com um monte de leitura de teste de caixa ARMA ARIMA GARCH e, em seguida, fiz uma pausa para ler o seu post no blog. & # 8220; Sim! & # 8221; Eu gritei (na minha cabeça) quando li sobre você ponderando sobre todas aquelas grandes palavras e acrônimos com as quais eu estava lutando. E então eu percebi que você também estava baseando seu trabalho nos escritos de Michaels. Coisas malditas machucam minha cabeça. Mas eu estou lentamente entendendo. Você está cerca de 4 parsecs à frente de mim, então vou ter que ficar de olho no seu trabalho também. ? Obrigado.
Kris Longmore.
Ei Matt, obrigado pelo comentário! Espero que meu artigo tenha sido útil para você. Sim, aprendi muito com as postagens de Michael sobre esse assunto. Ele é pesado sobre o detalhe e apresenta de uma forma lógica que continuamente se baseia na informação anterior. Eu comprei recentemente o corte bruto de seu livro mais recente e me refiro a ele com frequência. Muito ansioso para o lançamento final. No meu artigo, eu estava com o objetivo de resumir sucintamente a teoria e me concentrar em algumas idéias de negociação que parecem uma extensão bastante natural. Espero que tenha sido útil!
Obrigado pela sua postagem. Você poderia dizer quais foram as proporções de Sharpe das estratégias testadas?
Kris Longmore.
Eu não calculei as taxas de Sharpe quando executei essas estratégias. Você poderia facilmente fazer isso executando o script (disponível através do link de download, junto com os dados que eu usei) e usando o pacote performanceAnalytics em R.
Olá, sou novo na adaptação da série temporal e achei o seu artigo muito interessante. Minha pergunta é: não há um valor aleatório envolvido na previsão do preço por definição de uma série GARCH? Em caso afirmativo, não faria sentido calcular a probabilidade de a previsão ser longa ou curta usando o valor ARMA como média e o desvio padrão e talvez aplicar um filtro, aceitando apenas valores acima de um determinado limite?
Kris Longmore.
Obrigado por ler meu blog. Eu acho que você está se referindo ao termo de ruído na definição GARCH? Você poderia certamente experimentar um modelo ARMA & # 8211; Eu adoraria ouvir sobre os resultados & # 8211; mas eu não tenho certeza de como isso se relaciona com o termo de ruído no modelo GARCH?
Obrigado pelo tutorial. Qual (is) linha (s) de código precisaríamos contabilizar os custos de transação?
Kris Longmore.
Há algumas maneiras de fazer isso, dependendo de quão preciso ou complexo é o modelo de custo de transação desejado. Se um modelo de custo de transação fixo fosse suficiente, você poderia simplesmente subtrair esse custo de transação fixo de cada um dos seus retornos. Por exemplo, se uma rodada do EUR / USD custa 1,5 pips, você simplesmente retorna.
É claro que, na realidade, você obteria spread variável e slippage variável, dependendo de fatores como a volatilidade e a fluidez em tempo real, portanto, isso pode ou não ser preciso o suficiente para seus objetivos.
Kris Longmore.
Neste exemplo, eu primeiro ajustei um modelo ARMA de ordem (p, q) onde (p, q) ∈ e (p, q) são escolhidos de forma que minimizem o Critério de Informação de Aikake. Em seguida, ajustamos um modelo usando GARCH (1,1) para a variância e ARMA (p, q) para a média. Um novo modelo é construído para cada período na simulação usando os 1.000 períodos anteriores. Cada modelo é usado uma vez (para prever o retorno do próximo período) e depois descartado. Então, para responder à sua pergunta, a abordagem usada aqui não procura parâmetros que funcionem como "trabalho". geralmente, em vez disso, encontramos os melhores parâmetros da nossa janela de lookback e assumimos que eles serão válidos para o próximo período.
Essa suposição pode ou não ser válida. E se essa suposição é válida, enquanto a modelagem de séries temporais é super interessante do ponto de vista teórico, ela pode ou não ser de uso prático em uma estratégia de negociação. No mínimo, há certamente outras considerações além dos parâmetros ideais do modelo. Por exemplo, a partir da minha própria experiência na construção de modelos de negociação para os mercados forex, posso compartilhar que a escolha do tempo de amostragem (ou seja, a hora que você escolhe como abrir / fechar suas barras diárias) é de importância crítica no sucesso ou caso contrário, o modelo.
Seu comentário é realmente muito oportuno! Recentemente, criei uma estrutura de backtesting GARCH para um cliente que permite a experimentação eficiente desses e de outros parâmetros, como condições de saída e alocação de capital. Um quadro de experimentação eficiente é realmente importante para a pesquisa efetiva e prática. Se você estiver interessado em algo semelhante, me dê um ping em kris [at] robotwealth.
Espero que ajude.
Os dados de preço EURUSD. csv & # 8230; Como é a estrutura de dados no arquivo? Você pode exibir os cabeçalhos / primeiras poucas linhas para que eu possa analisar meus dados de acordo.
Desculpa. Depois de postar minha pergunta, vi o link para download do arquivo. Doooh!
Em relação ao seu código, como você lidou com valores negativos para os retornos? Como você está usando o log para o ag. curve e com valores negativos, você terá NaN.
Kris Longmore.
Eu sinceramente não lembro de ter de voltar a executar o código. Mas sim, você está correto & # 8211; faz mais sentido usar retornos de log que são aditivos. Multiplicar retornos simples é problemático ao criar uma curva de capital quando você tem posições neutras. Eu atualizei a postagem.
você pode usar isto: ag. curve & lt; - cumsum (ag. direction. returns)
Estudei Econometria de Séries Temporais como parte da minha especialização em PhD e descobri que simplesmente desenhar tendências e padrões em um gráfico é uma abordagem muito superior às técnicas estatísticas mais avançadas, como Markov Switching Multivariate GARCH ou Multivariate Autoregressive State Space Models. Eu me sinto meio desconfortável que todos os meus esforços e noites sem dormir fossem para nada. Mas pelo menos eu sei quais são as melhores abordagens.
Kris Longmore.
É bom saber que você encontrou algo que funciona para você. Eu concordo, às vezes mais simples pode ser melhor.

Guia do iniciante para análise de séries temporais.
Guia do iniciante para análise de séries temporais.
Nos últimos anos, analisamos várias ferramentas para nos ajudar a identificar padrões exploráveis ​​nos preços dos ativos. Em particular, consideramos a econometria básica, a aprendizagem estatística de máquina e as estatísticas Bayesianas.
Embora sejam todas ótimas ferramentas modernas para análise de dados, a grande maioria da modelagem de ativos no setor ainda faz uso da análise estatística de séries temporais. Neste artigo, vamos examinar a análise de séries temporais, delinear seu escopo e aprender como podemos aplicar as técnicas a várias frequências de dados financeiros.
O que é análise de séries temporais?
Em primeiro lugar, uma série cronológica é definida como uma quantidade que é medida sequencialmente no tempo durante algum intervalo.
Em sua forma mais ampla, a análise de séries temporais tem a ver com inferir o que aconteceu com uma série de pontos de dados no passado e tentar prever o que acontecerá a ele no futuro.
No entanto, vamos adotar uma abordagem estatística quantitativa para séries temporais, assumindo que nossas séries temporais são realizações de seqüências de variáveis ​​aleatórias. Ou seja, vamos supor que existe algum processo de geração subjacente para nossa série temporal baseada em uma ou mais distribuições estatísticas das quais essas variáveis ​​são extraídas.
A análise de séries temporais tenta entender o passado e prever o futuro.
Tal seqüência de variáveis ​​aleatórias é conhecida como um processo estocástico de tempo discreto (DTSP). Na negociação quantitativa, estamos preocupados em tentar encaixar modelos estatísticos nessas DTSPs para inferir relações subjacentes entre séries ou prever valores futuros a fim de gerar sinais de negociação.
Séries temporais em geral, incluindo aquelas fora do mundo financeiro, geralmente contêm os seguintes recursos:
Tendências - Uma tendência é um movimento direcional consistente em uma série temporal. Essas tendências serão determinísticas ou estocásticas. O primeiro nos permite fornecer uma base lógica para a tendência, enquanto o segundo é uma característica aleatória de uma série que dificilmente poderemos explicar. As tendências aparecem frequentemente em séries financeiras, particularmente em preços de commodities, e muitos fundos do Consultor de Negociação de Commodities (CTA) usam modelos sofisticados de identificação de tendências em seus algoritmos de negociação. Variação Sazonal - Muitas séries temporais contêm variações sazonais. Isso é particularmente verdadeiro em séries que representam vendas de negócios ou níveis climáticos. No financiamento quantitativo, muitas vezes vemos variações sazonais nas commodities, particularmente aquelas relacionadas às estações de cultivo ou variações anuais de temperatura (como o gás natural). Dependência Serial - Uma das características mais importantes das séries temporais, particularmente das séries financeiras, é a da correlação serial. Isso ocorre quando as observações de séries temporais que estão próximas no tempo tendem a ser correlacionadas. Agrupamento de volatilidade é um aspecto da correlação serial que é particularmente importante na negociação quantitativa.
Como podemos aplicar análise de séries temporais em finanças quantitativas?
Nosso objetivo como pesquisadores quantitativos é identificar tendências, variações sazonais e correlação usando métodos estatísticos de séries temporais e, por fim, gerar sinais de negociação ou filtros baseados em inferência ou previsões.
Nossa abordagem será:
Previsão e previsão de valores futuros - Para negociar com êxito, precisaremos prever com precisão os preços futuros dos ativos, pelo menos no sentido estatístico. Simular Série - Uma vez que identificamos propriedades estatísticas de séries temporais financeiras, podemos utilizá-las para gerar simulações de cenários futuros. Isso nos permite estimar o número de negócios, os custos comerciais esperados, o perfil esperado de retornos, o investimento técnico e financeiro exigido em infraestrutura e, portanto, o perfil de risco e a lucratividade de uma estratégia ou portfólio específico. Inferir relacionamentos - A identificação de relacionamentos entre séries temporais e outros valores quantitativos nos permite melhorar nossos sinais de negociação por meio de mecanismos de filtragem. Por exemplo, se pudermos inferir como o spread em um par de moedas estrangeiras varia com o volume de compra / venda, poderemos filtrar quaisquer negociações prospectivas que possam ocorrer em um período em que projetamos uma ampla margem para reduzir os custos de transação.
Além disso, podemos aplicar testes estatísticos (clássicos / frequentistas ou Bayesianos) aos nossos modelos de séries temporais para justificar certos comportamentos, como a mudança de regime nos mercados de ações.
Software de análise de séries temporais.
Até o momento, usamos quase exclusivamente o C ++ e o Python para a implementação de nossa estratégia de negociação. Ambas as linguagens são "ambientes de primeira classe" para escrever uma pilha de negociação inteira. Ambos contêm muitas bibliotecas e permitem uma construção "ponta-a-ponta" de um sistema de negociação unicamente dentro dessa linguagem.
Infelizmente, o C ++ e o Python não possuem bibliotecas estatísticas extensas. Esta é uma das suas deficiências. Por essa razão, usaremos o ambiente estatístico R como meio de realizar pesquisas de séries temporais. R é bem adequado para o trabalho devido à disponibilidade de bibliotecas de séries temporais, métodos estatísticos e recursos simples de plotagem.
Aprenderemos R em uma forma de solução de problemas, em que novos comandos e sintaxes serão introduzidos conforme necessário. Felizmente, há muitos tutoriais extremamente úteis para o R disponível na internet e vou destacá-los à medida que passarmos pela sequência de artigos de análise de séries temporais.
Roteiro de Análise de Séries Temporais QuantStart.
Até à data, os artigos anteriores sobre os tópicos da aprendizagem estatística, econometria e análise Bayesiana, têm sido introdutórios na sua natureza e não consideraram a aplicação de tais técnicas a informações modernas de preços de alta frequência.
Para aplicar algumas das técnicas acima aos dados de frequência mais alta, precisamos de uma estrutura matemática para unificar nossa pesquisa. A análise de séries temporais fornece essa unificação e nos permite discutir modelos separados dentro de um cenário estatístico.
Eventualmente, utilizaremos ferramentas bayesianas e técnicas de aprendizado de máquina em conjunto com os métodos a seguir para prever o nível e direção do preço, agir como filtros e determinar a "mudança de regime", ou seja, determinar quando nossa série temporal mudou seu comportamento estatístico subjacente.
Nosso roteiro de séries temporais é o seguinte. Cada um dos tópicos abaixo formará seu próprio artigo ou conjunto de artigos. Depois de examinarmos esses métodos em profundidade, estaremos em condições de criar alguns modelos modernos sofisticados para examinar dados de alta frequência.
Introdução à série temporal - Este artigo descreve a área de análise de séries temporais, seu escopo e como ela pode ser aplicada a dados financeiros. Correlação - Um aspecto absolutamente fundamental da modelagem de séries temporais é o conceito de correlação serial. Vamos defini-lo e descrever uma das maiores armadilhas da análise de séries temporais, a saber, que "correlação não implica causalidade". Previsão - Nesta seção, vamos considerar o conceito de previsão, que é fazer previsões de direção ou nível futuro para uma determinada série temporal e como ela é executada na prática. Modelos Estocásticos - Nós gastamos algum tempo considerando modelos estocásticos no campo de precificação de opções no site, ou seja, com Movimento Browniano Geométrico e Volatilidade Estocástica. Nós estaremos olhando para outros modelos, incluindo o ruído branco e modelos autoregressivos. Regressão - Quando temos tendências determinísticas (em oposição a estocásticas) nos dados, podemos justificar sua extrapolação usando modelos de regressão. Consideraremos a regressão linear e não linear e consideraremos a correlação serial. Modelos estacionários - Os modelos estacionários assumem que as propriedades estatísticas (ou seja, a média e a variância) das séries são constantes no tempo. Podemos usar modelos Moving Average (MA), bem como combiná-los com modelos autoregressivos para formar modelos ARMA. Modelos não estacionários - Muitas séries temporais financeiras são não estacionárias, ou seja, têm média e variação variadas. Em particular, os preços dos ativos geralmente apresentam períodos de alta volatilidade. Para essas séries, precisamos usar modelos não estacionários, como ARIMA, ARCH e GARCH. Modelagem Multivariada - Consideramos modelos multivariados no QuantStart no passado, ou seja, quando consideramos pares de ações que revertem a média. Nesta seção, definiremos de forma mais rigorosa a cointegração e examinaremos outros testes para ela. Consideraremos também modelos vetoriais autorregressivos (VAR) [não confundir com Value-at-Risk!]. Modelos de espaço de estados - State Space Modeling empresta uma longa história de teoria de controle moderna usada em engenharia para nos permitir modelar séries temporais com parâmetros variáveis ​​rapidamente (como a variável $ \ beta $ slope entre dois ativos cointegrados em uma regressão linear ). Em particular, vamos considerar o famoso Filtro de Kalman e o Modelo de Markov Oculta. Este será um dos principais usos da análise bayesiana em séries temporais.
Como isso se relaciona com outros artigos estatísticos QuantStart?
Meu objetivo com o QuantStart sempre foi tentar delinear o arcabouço matemático e estatístico para análise quantitativa e negociação quantitativa, desde o básico até os mais modernos e modernos.
Até hoje, passamos a maior parte do tempo em introdutórios e intermediários. No entanto, agora vamos voltar nossa atenção para os recentes avanços tecnológicos usados ​​em empresas quantitativas.
Isso não só ajudará aqueles que desejam ganhar uma carreira na indústria, mas também dará aos comerciantes de varejo quantitativos entre você um conjunto de ferramentas muito mais amplo de métodos, bem como uma abordagem unificadora para a negociação.
Tendo trabalhado anteriormente no setor, posso afirmar com certeza que uma fração substancial de profissionais de fundos quantitativos usa técnicas muito sofisticadas para "caçar alfa".
No entanto, muitas dessas empresas são tão grandes que não estão interessadas em estratégias de "capacidade restrita", ou seja, aquelas que não são escalonáveis ​​acima de US $ 1-2 milhões. Como varejistas, se podemos aplicar uma estrutura comercial sofisticada a essas áreas, podemos alcançar lucratividade a longo prazo.
Eventualmente, combinaremos nossos artigos sobre análise de séries temporais, com a abordagem bayesiana de testes de hipóteses e seleção de modelos, juntamente com códigos C ++, R e Python otimizados, para produzir modelos de séries temporais não-estacionárias e não-lineares que podem ser negociados em alta. freqüência.
Agora que o software QSForex abordou a viabilidade de backtesting de alta frequência de vários pares de moedas, temos uma estrutura pronta para testar esses modelos, pelo menos nos mercados de câmbio.
O próximo artigo da série discutirá a correlação e por que é um dos aspectos mais fundamentais da análise de séries temporais.
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.

dados de séries temporais de bitcoin.
Índice.
Os finais de séries de TV mais assistidos de todos os tempos.
Sempre que um programa de TV extremamente popular termina, é sempre um grande evento. Tudo se resume a essa conclusão épica e, muitas vezes, mesmo aqueles que pararam de assistir anos atrás vão se sintonizar para ver como tudo se encerra. É por isso que, ao longo dos anos, os finais da série atraíram algumas classificações absolutamente surpreendentes. Na verdade, o episódio final de um show venceu o Super Bowl naquele ano, e continua sendo o episódio mais visto.
Seg, 16 de abril de 2018 21:36:16.
Facebook prova que é hora de novas regras de dados.
Quando foi descoberto que o Facebook permitia que os dados de perfil de seus usuários - e de suas redes sociais - caíssem em mãos de terceiros, causou um alvoroço. No entanto, o Facebook não é a única plataforma em que os dados do perfil do usuário - e até mesmo de suas redes pessoais ou corporativas - são coletados e usados ​​por terceiros sem o conhecimento de seus usuários. Essas são as descobertas de um novo Appthority.
Sex, 6 de abril de 2018 08:01:55.
Yulia Skripal fala pela primeira vez; Escândalo de dados no Facebook aumenta.
Discutir o que é importante para você Curadas as principais histórias do dia Vítima de agente nervosa faz a primeira declaração - Yulia Skripal, uma vítima em recuperação do ataque do nervo de Salisbury, disse em um comunicado emitido em nome da polícia de Londres que "o episódio inteiro é um tanto desorientador "mas que a força dela está crescendo diariamente". Yulia e seu pai, o ex-agente duplo Sergei Skripal, foram envenenados na cidade inglesa por mês.

Комментарии