воскресенье, 10 июня 2018 г.

Série de tempo planeja estratégia de negociação


Previsão da série de tempo.
A Previsão da Série de Tempo usa Regressão Linear para calcular uma linha de melhor ajuste ao longo de um período de tempo designado; Esta linha é então planejada para a frente um período de tempo definido pelo usuário.
O gráfico abaixo do contrato Mini-Dow Futures mostra o indicador de Previsão da Série de Tempo:
O gráfico acima ilustra como a linha de Previsão da Série de Tempo foi planejada para frente (no exemplo acima, 7 dias).
Geralmente, os comerciantes podem esperar que o preço volte para a linha Time Series Forecast quando os preços se desviaram. Portanto, um vago sinal de compra potencial pode ocorrer quando o preço está abaixo da linha e um potencial sinal de venda pode ocorrer quando o preço está muito acima da linha. No entanto, o quão longe o preço precisa variar da linha é muito subjetivo.
Um indicador técnico similar e indiscutivelmente superior é a Curva de Regressão Linear (ver: Curva de Regressão Linear).

QuantStart.
Junte-se ao portal de membros privados da Quantcademy que atende à comunidade de comerciantes de varejo de varejo em rápido crescimento. Você encontrará um grupo de comerciantes quânticos bem informados e com a mesma mentalidade, prontos para responder às suas perguntas mais prementes sobre negociação de quant.
Confira meu ebook sobre o comércio de quant, onde eu ensino você como criar estratégias de negociação sistemáticas lucrativas com ferramentas Python, desde o início.
Dê uma olhada no meu novo ebook sobre estratégias de negociação avançadas usando análise de séries temporais, aprendizado de máquina e estatísticas bayesianas, com Python e R.
Por Michael Halls-Moore em 8 de janeiro de 2014.
Nesta série de artigos, vamos criar um processo estatisticamente robusto para a previsão de séries temporais financeiras. Essas previsões constituirão a base de 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, estaremos fazendo uso do scikit-learn, uma biblioteca de aprendizagem de máquinas para Python. O Scikit-learn contém implementações de muitas técnicas de aprendizado de máquina. Não só isso nos poupa muito tempo na implementação do nosso próprio, 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áquinas estatísticas está além deste artigo. Para utilizar técnicas como Regressão Logística, Análise Discriminante Linear e Análise Discriminante Quadratic, precisamos descrever alguns conceitos básicos.
Técnicas de aprendizagem supervisionadas.
As técnicas de aprendizagem supervisionadas envolvem um conjunto de tuplas conhecidas $ (x_i, y_i) $, $ i \ in \ $, com $ x_i $ representando as variáveis ​​predictoras (como retornos do mercado de ações remanescentes ou volume negociado) e $ y_i $ representando o associado variáveis ​​de resposta / observação (como o retorno do mercado de ações hoje). Nessa situação, estamos interessados ​​em prever. Dadas as futuras variáveis ​​preditoras, desejamos estimar as respostas desses preditores. Isso é contrário à inferência em que estamos mais interessados ​​na relação entre as variáveis.
Todos os algoritmos que utilizamos neste artigo, juntamente com muitos outros que empregaremos no futuro, são do domínio de aprendizagem supervisionado.
Medindo Precisão de Previsão.
A classe particular de métodos que nos interessa envolve a classificação binária. Ou seja, tentaremos alocar a porcentagem de retorno para um determinado dia em dois baldes: "Up" ou "Down". Num previsão de produção, estaríamos muito preocupados com a magnitude dessa previsão e com os desvios da predição a partir 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 muitos outros exemplos de medidas de precisão de previsão.
Neste caso, só nos preocuparemos com a taxa de sucesso, que é simplesmente a porcentagem de vezes que o provisorista alcançou uma previsão precisa (ou seja, quando o dia acabou e vice-versa). Em exemplos posteriores, usaremos uma matriz de confusão para determinar o desempenho de previsão em uma 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 quando prevêem o retorno do índice de mercado de ações. Neste artigo, vamos restringir os fatores aos atrasos de tempo dos retornos percentuais atuais. Isso não é porque eles são os melhores preditores, em vez disso é porque é direto 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 componente mais importante, do pré-programador. Mesmo técnicas simples de aprendizagem 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 levará à má precisão de previsão.
Para este provisorista especificamente, escolhi o primeiro e o segundo tempo de atraso da porcentagem de retorno como preditores para a direção atual do mercado de ações. Esta é uma escolha relativamente arbitrária e há muitos marcos para modificação, por exemplo, adicionando atrasos adicionais ou o volume de ações negociadas. Em geral, é 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 de S & amp; P500 com Regressão Logística, LDA e QDA.
O S & 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 líquido de negociação do índice.
Nesta seção, vamos usar três classificadores para prever a direção do preço de fechamento no dia $ N $ com base somente na informação de preços conhecida no dia $ N-1 $. Um movimento direto direto significa que o preço de fechamento em $ N $ é maior do que o preço em $ N-1 $, enquanto que um movimento descendente implica um preço de fechamento em US $ N $ inferior a $ N-1 $.
Se pudermos determinar a direção do movimento de uma maneira que exceda significativamente uma taxa de sucesso de 50%, com baixo erro e boa significância estatística, estamos no caminho para formar uma estratégia básica de negociação sistemática com base em nossas previsões. Nesta fase, não estamos preocupados com os algoritmos de classificação de aprendizado de máquinas mais atualizados. Neste momento, estamos apenas a introduzir conceitos e, assim, começaremos a discussão sobre a previsão com alguns métodos elementares.
Regressão Logística.
A primeira técnica que consideramos é 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 múltiplas variáveis ​​contínuas independentes (a porcentagem remanescente retorna). O modelo fornece a probabilidade de que um dia particular (seguinte) seja categorizado como "Up" ou "Down". Nesta implementação, optamos por atribuir cada dia como "Up" se a probabilidade exceder 0,5. Poderíamos usar um limite diferente, mas, por simplicidade, escolhi 0,5.
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 onde 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 da montagem e previsão do modelo LR é tratada pela biblioteca scikit-learn.
Análise de Discriminação Linear.
A próxima técnica utilizada é Linear Discriminant Analysis (LDA). LDA difere de LR porque, em LR, nós modelamos $ P (Y = U | L_1, L_2) $ como uma distribuição condicional da resposta $ Y $ dado os preditores $ L_i $, usando uma função logística. Em 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, LDA resulta do pressuposto de que preditores são retirados de uma distribuição gaussiana multivariada. Após calcular as estimativas para os parâmetros dessa distribuição, os parâmetros podem ser inseridos no Teorema de Bayes para fazer previsões sobre a qual classe pertence uma observação.
A LDA assume que todas as classes compartilham a mesma matriz de covariância.
Não vou me aprofundar nas fórmulas para estimar a distribuição ou probabilidades posteriores que são necessárias para fazer previsões, uma vez mais scikit-learn lida com isso para nós.
Análise Quadratic Discriminant.
A Análise Quadraticamente Discriminante (QDA) está intimamente relacionada à LDA. A diferença significativa é que cada classe agora pode possuir sua própria matriz de covariância.
O QDA geralmente funciona melhor quando os limites de decisão não são lineares. A LDA geralmente funciona melhor quando há menos observações de treinamento (isto é, quando é necessário reduzir a variância). 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 outro, em última instância, se resume ao trade-off de tendência e desvio.
Tal como acontece com LR e LDA, scikit-learn cuida da implementação da QDA, então precisamos fornecer dados de treinamento / teste para estimação e previsão de parâmetros.
Implementação do Python.
Para a implementação desses previsão, usaremos NumPy, pandas e scikit-learn. Eu já escrevi um tutorial sobre como instalar essas bibliotecas. Comentei fortemente o próprio código, por isso deve ser fácil verificar o que está acontecendo.
O primeiro passo é importar os módulos e bibliotecas relevantes. Vamos importar os classificadores LogisticRegression, LDA e QDA para este provisorista:
Agora que as bibliotecas são importadas, precisamos criar um DataFrame de pandas que contenha os retornos percentuais atrasados ​​por um número anterior de dias (padrão para cinco). create_lagged_series terá um símbolo de estoque (conforme reconhecido pelo Yahoo Finance) e crie um DataFrame atrasado durante o período especificado:
A próxima função auxiliar é projetada para criar uma porcentagem hit_rate para cada modelo, eliminando o código duplicado. Baseia-se no fato de que os objetos Logression Regression, LDA e QDA têm os mesmos métodos (ajuste e previsão). A taxa de sucesso é exibida 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 retorno de 2001 a 2004:
A saída do código é a seguinte:
Pode-se ver que a Regressão Logística e o Analisador Discriminador Linear foram capazes de ganhar uma taxa de sucesso 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 para esta metodologia de previsão:
Não utilizamos nenhuma forma de validação cruzada para reduzir erros de montagem. Um pré-programador de produção exigiria que essa análise fosse considerada robusta. O pré-programador só foi treinado em dados entre 2001-2004 inclusive. Dados de mercado mais recentes podem ter uma precisão de predição substancialmente diferente. Na verdade, não tentamos trocar essa informação. Em particular, como podemos realmente executar negociações? Nós usaríamos o futuro do e-mini dos EUA? Utilizaríamos as ordens do mercado aberto (MOO) ou do mercado no fechamento (MOC)? Também precisamos considerar os custos de transação.
Nos artigos subseqüentes, consideraremos essas questões em maior profundidade.
Um aviso sobre a previsão aleatória.
Nesta seção, quero destacar o problema de significância estatística quando lida com meteorologistas. Além do previsão descrita acima, também gerei uma série de "previsão" baseada unicamente no sinal de sorteios aleatórios de uma distribuição normal normal. Note-se que, no mesmo período, produziu uma taxa de sucesso de previsão de 53,4% e, no entanto, o método usado para gerar a série é essencialmente não diferente de jogar uma moeda! Tenha isso em mente sempre que você realizar os procedimentos de previsão, pois muitas vezes pode levar a um desempenho comercial terrível se não for levado em consideração.
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 uma "estabilidade" 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 as de qualquer previsor individual.
Apenas iniciando o comércio quantitativo?
3 razões para se inscrever para a lista de e-mails QuantStart:
1. Quant Trading Lessons.
Você terá acesso instantâneo a um curso de e-mail gratuito de 10 partes, repleto de sugestões e dicas para ajudá-lo a começar a negociação quantitativa!
2. Todo o conteúdo mais recente.
Todas as semanas, vou enviar-lhe um envoltório de todas as atividades no QuantStart para que você nunca mais perca uma postagem novamente.
Real, dicas de negociação viáveis, sem tonturas.

QuantStart.
Junte-se ao portal de membros privados da Quantcademy que atende à comunidade de comerciantes de varejo de varejo em rápido crescimento. Você encontrará um grupo de comerciantes quânticos bem informados e com a mesma mentalidade, prontos para responder às suas perguntas mais prementes sobre negociação de quant.
Confira meu ebook sobre o comércio de quant, onde eu ensino você como criar estratégias de negociação sistemáticas lucrativas com ferramentas Python, desde o início.
Dê uma olhada no meu novo ebook sobre estratégias de negociação avançadas usando análise de séries temporais, aprendizado de máquina e estatísticas bayesianas, com Python e R.
Por Michael Halls-Moore em 23 de junho de 2015.
Ao longo dos ú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 de máquinas estatísticas e as estatísticas bayesianas.
Embora essas sejam todas ferramentas modernas para a análise de dados, a grande maioria da modelagem de ativos na indústria ainda usa análises estatísticas de séries temporais. Neste artigo, vamos examinar a análise de séries de tempo, delinear seu escopo e aprender como podemos aplicar as técnicas a várias freqüências de dados financeiros.
O que é a análise da série de tempo?
Em primeiro lugar, uma série de tempo é definida como uma quantidade que é medida sequencialmente no tempo ao longo de algum intervalo.
Na sua forma mais ampla, a análise de séries temporais consiste em inferir o que aconteceu com uma série de pontos de dados no passado e tentar prever o que acontecerá com o futuro.
No entanto, vamos adotar uma abordagem estatística quantitativa para as séries temporais, assumindo que nossas séries temporais são realizações de seqüências de variáveis ​​aleatórias. Ou seja, vamos assumir que existe algum processo gerador subjacente para nossas séries temporais com base em uma ou mais distribuições estatísticas a partir das quais essas variáveis ​​são desenhadas.
A análise de séries temporais tenta entender o passado e prever o futuro.
Essa seqüência de variáveis ​​aleatórias é conhecida como um processo estocástico 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.
As séries temporais em geral, incluindo as que estão 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 deterministas ou estocásticas. O primeiro nos permite fornecer um raciocínio subjacente à tendência, enquanto o último é uma característica aleatória de uma série que provavelmente não seríamos capazes de explicar. As tendências aparecem frequentemente em séries financeiras, particularmente em preços de commodities, e muitos fundos de Consultoria 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. Isto é particularmente verdadeiro em séries que representam vendas comerciais ou níveis climáticos. Em finanças quantitativas, muitas vezes vemos variações sazonais em commodities, particularmente aquelas relacionadas a períodos de crescimento ou variação anual de temperatura (como gás natural). Dependência serial - Uma das características mais importantes das séries temporais, particularmente as séries financeiras, é a correlação serial. Isso ocorre quando as observações das séries temporais que estão próximas entre si no tempo tendem a ser correlacionadas. O agrupamento de volatilidade é um aspecto da correlação serial que é particularmente importante no comércio quantitativo.
Como podemos aplicar a 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 sucesso, precisamos prever com precisão os preços dos ativos futuros, pelo menos em um sentido estatístico. Simular séries - Uma vez que identificamos as propriedades estatísticas das séries temporais financeiras, podemos usá-las para gerar simulações de cenários futuros. Isso nos permite estimar o número de negócios, os custos de negociação esperados, o perfil de retorno esperado, o investimento técnico e financeiro necessário na infra-estrutura e, portanto, o perfil de risco e a rentabilidade de uma determinada estratégia ou portfólio. Relacionamentos Infer - A identificação de relações entre séries temporais e outros valores quantitativos nos permite aprimorar nossos sinais comerciais através de mecanismos de filtração. Por exemplo, se podemos inferir como o spread em um par de câmbio varia de acordo com o volume de lance / pedido, podemos filtrar quaisquer negociações prospectivas que possam ocorrer em um período em que prevemos um amplo spread 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, utilizamos quase exclusivamente o C ++ e o Python para a implementação da nossa estratégia comercial. Ambos os idiomas são "ambientes de primeira classe" para escrever uma stack de troca inteira. Ambos contêm muitas bibliotecas e permitem uma construção "de ponta a ponta" de um sistema comercial exclusivamente dentro desse idioma.
Infelizmente, C ++ e Python não possuem extensas bibliotecas estatísticas. Esta é uma das suas deficiências. Por esse motivo, usaremos o ambiente estatístico R como meio de realizar pesquisas em 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 resolução de problemas, pelo que novos comandos e sintaxe serão introduzidos conforme necessário. Felizmente, existem muitos tutoriais extremamente úteis para o R availabile na internet e vou apontá-los enquanto passamos pela sequência de artigos de análise de séries temporais.
Mapa de análise da série de tempo QuantStart.
Até à data, os artigos anteriores sobre os tópicos da aprendizagem estatística, econometria e análise Bayesiana, foram introdutórios na sua natureza e não consideraram a aplicação de tais técnicas às informações modernas de preços de alta frequência.
Para aplicar algumas das técnicas acima aos dados de freqüê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 uma configuração estatística.
Eventualmente, utilizaremos ferramentas Bayesianas e técnicas de aprendizado de máquinas em conjunto com os seguintes métodos para prever o nível e a direção dos preços, agir como filtros e determinar "mudança de regime", ou seja, determinar quando nossas séries temporais mudaram seu comportamento estatístico subjacente.
O nosso roteiro da série temporal é 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 de Tempo - Este artigo descreve a área de análise de séries temporais, seu escopo e como ele pode ser aplicado a dados financeiros. Correlação - Um aspecto absolutamente fundamental das séries temporais de modelagem é o conceito de correlação serial. Nós definiremos e descreveremos uma das maiores armadilhas da análise de séries temporais, a saber, que "a correlação não implica causalidade". Previsão - Nesta seção, vamos considerar o conceito de previsão, que está fazendo previsões de direção futura ou nível para uma série de tempo particular e como ela é realizada na prática. Modelos estocásticos - Passamos algum tempo a considerar modelos estocásticos no campo de preços de opções no site, nomeadamente com Geometric Brownian Motion e Stochastic Volatility. Vamos olhar para outros modelos, incluindo o ruído branco e modelos autorregressivos. Regressão - Quando temos tendências determinísticas (ao contrário de 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 não são estacionárias, ou seja, elas têm variável média e variância. Em particular, os preços dos ativos geralmente têm 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, vamos definir mais rigorosamente a cointegração e analisar mais testes para isso. Consideraremos também modelos vetoriais autorregressivos (VAR) [não confundir com Value-at-Risk!]. Modelos de espaço-estado - State Space Modeling empresta uma longa história de teoria de controle moderna usada na engenharia para nos permitir modelar séries temporais com parâmetros que variam 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 esboçar o quadro matemático e estatístico para análise quantitativa e negociação quantitativa, desde o básico até as técnicas modernas mais avançadas.
Até o momento, passamos a maior parte do tempo em técnicas introdutórias e intermediárias. No entanto, estamos agora voltando nossa atenção para as técnicas avançadas recentes utilizadas 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ês um conjunto de ferramentas muito mais amplo, bem como uma abordagem unificadora para negociação.
Tendo trabalhado na indústria anteriormente, 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 pudermos aplicar uma estrutura de negociação sofisticada a essas áreas, podemos alcançar rentabilidade a longo prazo.
Nós eventualmente combinaremos nossos artigos sobre a análise de séries temporais, com a abordagem bayesiana para teste de hipóteses e seleção de modelos, juntamente com o código otimizado de C ++, R e Python, para produzir modelos de séries temporais não-lineares e não estacionários que podem trocar em alta - freqüência.
Agora que o software QSForex se aproximou da viabilidade para backtesting de alta freqüência de múltiplos pares de moedas, temos uma estrutura pré-fabricada para testar esses modelos, pelo menos nos mercados cambiais.
O próximo artigo da série discutirá a correlação e por que é um dos aspectos mais fundamentais da análise das séries temporais.
Apenas iniciando o comércio quantitativo?
3 razões para se inscrever para a lista de e-mails QuantStart:
1. Quant Trading Lessons.
Você terá acesso instantâneo a um curso de e-mail gratuito de 10 partes, repleto de sugestões e dicas para ajudá-lo a começar a negociação quantitativa!
2. Todo o conteúdo mais recente.
Todas as semanas, vou enviar-lhe um envoltório de todas as atividades no QuantStart para que você nunca mais perca uma postagem novamente.
Real, dicas de negociação viáveis, sem tonturas.

Estratégia de previsã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 durante um período de tempo de 'n' usando técnicas de análise de regressão linear. Curiosamente, a Previsão da Série de Tempo gera o último ponto de várias tendências de regressão linear simultânea. O indicador de Previsão da Série de Tempo resultante também é chamado de "indicador de regressão linear em movimento" e às vezes o "oscilador de regressão". Os mestres de day trading podem encontrar utilidade para este indicador, a fim de se darem 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 múltiplas séries de tempo são usadas dá-lhe algumas vantagens em relação às MAs "comuns", principalmente a falta de um atraso quando os preços mudam rapidamente. Isso, é claro, é porque a Previsão da Série do Tempo "se encaixa" aos dados do preço subjacente em vez de promediar os mesmos, tornando-o mais sensível às mudanças de preços. Basicamente, se a tendência atual permanecer em vigor, a Previsão da Série de Tempo é uma previsão do nível de preço do próximo período.
Para calcular a Previsão da Série de Tempo, você deve usar uma técnica 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ços minimizando a distância entre os pontos de preço e a própria linha de tendência de regressão linear.

Redes neurais para negociação algorítmica. Previsão de séries temporais simples.
ACTUALIZAÇÃO IMPORTANTE:
Esta é a primeira parte dos meus experimentos em aplicação de aprendizado profundo para financiar, em particular para negociação algorítmica.
Eu quero implementar o sistema de negociação a partir do zero com base apenas em abordagens de aprendizado profundo, então, para qualquer problema que temos aqui (previsão de preços, estratégia de negociação, gerenciamento de riscos), usaremos diferentes variações de redes neuronais artificiais (RNAs) e veremos o quanto elas podem lide com isso.
Agora eu planejo trabalhar nas próximas seções:
Previsão de séries temporais com dados brutos Previsão de séries temporais com recursos personalizados Otimização de hiperparâmetros Implementação de estratégia de negociação, backtesting e gerenciamento de riscos Estratégias de negociação mais sofisticadas, reforço de aprendizagem Indo ao vivo, corretores API, ganhando (l̶o̶s̶i̶n̶g̶) dinheiro.
Eu recomendo que você verifique o código e o IPython Notebook neste repositório.
Nesta primeira parte, quero mostrar como MLPs, CNNs e RNNs podem ser usados ​​para a previsão de séries temporais financeiras. Nesta parte, não vamos usar nenhuma engenharia de recursos. Vamos considerar o conjunto de dados históricos dos movimentos dos preços do índice S & P 500. Temos informações de 1950 a 2016 sobre preços abertos, fechados, altos e baixos para todos os dias do ano e volume de negócios. Primeiro, tentaremos apenas prever fechar o preço no final do próximo dia, em segundo lugar, tentaremos prever o retorno (preço fechado - preço aberto). Baixe o conjunto de dados do Yahoo Finance ou deste repositório.
Definição do problema.
Consideraremos o nosso problema como 1) problema de regressão (tentando prever exatamente fechar o preço ou retornar no dia seguinte) 2) problema de classificação binária (o preço aumentará [1; 0] ou abaixo [0; 1]).
Para treinar NNs, usaremos framework Keras.
Primeiro vamos preparar nossos dados para treinamento. Queremos prever o valor de t + 1 com base em informações de N dias anteriores. Por exemplo, tendo preços próximos dos últimos 30 dias no mercado, queremos prever, que preço será amanhã, no 31º dia.
Utilizamos as primeiras 90% das séries temporais como conjunto de treinamento (considere-a como dados históricos) e 10% como conjunto de testes para avaliação do modelo.
Aqui é exemplo de carregamento, dividindo em amostras de treinamento e pré-processamento de dados de entrada brutos:
Problema de regressão. MLP.
Será apenas um perceptron de 2 camadas escondidas. O número de neurônios escondidos é escolhido de forma empírica, vamos trabalhar na otimização de hiperparâmetros nas próximas seções. Entre duas camadas ocultas, adicionamos uma camada de Saída para evitar a sobreposição.
O importante é Dense (1), Activation ('linear') e 'mse' na seção de compilação. Queremos um produto que possa estar em qualquer intervalo (prevemos valor real) e nossa função de perda é definida como erro quadrático médio.
Vamos ver o que acontece se apenas passarmos pedaços de preços próximos de 20 dias e prever o preço no 21º dia. Final MSE = 46.3635263557, mas não é uma informação muito representativa. Abaixo está um gráfico de previsões para os primeiros 150 pontos do conjunto de dados de teste. A linha preta é dados reais, um azul - previsto. Podemos ver claramente que nosso algoritmo não é nem mesmo de perto, mas pode aprender a tendência.
Vamos dimensionar nossos dados usando o método de sklearn pré-processamento. Escala () para ter nossa série zero de tempo e variância unitária e treinar o mesmo MLP. Agora temos MSE = 0.0040424330518 (mas está em dados dimensionados). No gráfico abaixo, você pode ver as séries temporais reais escaladas (preto) e a nossa previsão (azul) para ela:
Para usar este modelo no mundo real, devemos retornar às séries temporais não escaladas. Podemos fazê-lo, multiplicando ou preditivo por desvio padrão de séries temporais que usamos para fazer predição (20 etapas de tempo não escalonadas) e adicione seu valor médio:
MSE neste caso é igual a 937.963649937. Aqui está o enredo de previsões restauradas (vermelho) e dados reais (verde):
Não está mal, não é? Mas vamos tentar algoritmos mais sofisticados para esse problema!
Problema de regressão. CNN.
Eu não vou mergulhar na teoria das redes neurais convolutivas, você pode verificar esses recursos incríveis:
Vamos definir a rede neural convolucional de 2 camadas (combinação de camadas de convolução e max-pooling) com uma camada totalmente conectada e a mesma saída que anteriormente:
Vamos verificar resultados. MSEs para dados escalados e restaurados são: 0.227074542433; 935.520550172. As parcelas estão abaixo:
Mesmo olhando para MSE em dados escalados, esta rede aprendeu muito pior. Provavelmente, uma arquitetura mais profunda precisa de mais dados para o treinamento, ou simplesmente é superada devido ao número muito alto de filtros ou camadas. Vamos considerar esta questão mais tarde.
Problema de regressão. RNN.
Como arquitetura recorrente, eu quero usar duas camadas LSTM empilhadas (leia mais sobre LSTM aqui).
As parcelas das previsões estão abaixo, MSEs = 0.0246238639582; 939.948636707.
A previsão da RNN se parece mais com o modelo médio móvel, não pode aprender e prever todas as flutuações.
Então, é um resultado pouco esperável, mas podemos ver que os MLPs funcionam melhor para esta previsão de séries temporais. Vamos verificar o que acontecerá se nós passarmos de regressão para problema de classificação. Agora, usaremos os preços não fechados, mas o retorno diário (fechar preço-preço aberto) e queremos prever se o preço fechado é maior ou menor do que o preço aberto com base nos últimos 20 dias de devolução.
Problema de classificação. MLP.
O código é alterado um pouco - alteramos nossa última camada Densa para ter saída [0; 1] ou [1; 0] e adicione a saída softmax para esperar resultados probabilísticos.
Para carregar saídas binárias, mude a linha seguinte do código:
Também mudamos a função de perda para cross-entopy binário e adicionamos métricas de precisão.
Oh, não é melhor do que adivinhar aleatoriamente (50% de precisão), vamos tentar algo melhor. Confira os resultados abaixo.
Problema de classificação. CNN.
Problema de classificação. RNN.
Conclusões.
Podemos ver que o tratamento da previsão de séries temporárias financeiras como problema de regressão é uma abordagem melhor, pode aprender a tendência e os preços próximos do real.
O que foi surpreendente para mim, que MLPs estão tratando dados de seqüência melhor como CNNs ou RNNs que deveriam funcionar melhor com séries temporais. Explico isso com conjunto de dados bastante pequeno (
Selos de tempo de 16k) e escolha de hiperparâmetros fofos.
Você pode reproduzir resultados e melhorar usando o código do repositório.
Eu acho que podemos obter melhores resultados em regressão e classificação usando diferentes recursos (não apenas séries temporais escalonadas) como alguns indicadores técnicos, volume de vendas. Também podemos tentar dados mais freqüentes, digamos carrapatos minuto a minuto para ter mais dados de treinamento. Todas essas coisas que eu vou fazer depois, então fique atento :)
Ao bater palmas mais ou menos, você pode nos indicar quais são as histórias que realmente se destacam.
Alex Honchar.
máquinas de ensino e raphamento.
Mundo de aprendizagem de máquinas.
O melhor sobre Aprendizado de Máquinas, Visão de Computador, Aprendizagem Profunda, Processamento de linguagem natural e outros.

Estratégia de previsão de séries temporais
A Previsão da Série de Tempo (TSF) é uma linha linear de & # 013; cálculo de regressão que representa a regressão atual de cada barra & # 013; valor usando o método de menor ajuste quadrado. Este indicador às vezes é "# 013; referido como uma regressão linear móvel semelhante a uma média móvel. & # 013; Por exemplo, o valor TSF que abrange 10 dias terá o mesmo & # 013; valor como uma Previsão de séries temporais de 10 dias. Isso difere ligeiramente do & # 013; o indicador de Regressão Linear em que o indicador de Regressão Linear & # 013; não adiciona a inclinação ao valor final da linha de regressão.
A linha de melhor ajuste associada aos n pontos & # 013; (x1, y1), (x2, y2),. . . , (xn, yn) tem o formulário.
Sobre nós.
Legal.
Copyright © 2018 Trading Technologies International, Inc. Todos os direitos reservados.

Комментариев нет:

Отправить комментарий