Série temporal forex


Previsão da Série de Tempo (TSF)


O TSF, o indicador de Previsão de séries temporais, consiste em medidas de regressão linear usando o método Least Squares. A regressão linear é uma ferramenta estatística para prever futuros valores de mercado Forex em comparação com os valores passados. TSF tenta prever o seguinte valor de mercado Forex. Para o efeito, define a declividade ascendente ou descendente da tendência e alonga esses resultados no futuro. Por exemplo, quando os preços estão se movendo para cima, a TSF tenta definir a declividade ascendente do preço comparado ao preço em curso e esticar esse cálculo.


A tendência é considerada baixa quando o preço do mercado Forex cai abaixo do indicador, a tendência é considerada quando o preço do mercado Forex sobe ao longo do indicador. Além disso, muitos analistas pensam que, uma vez que os preços mudam acima ou caem abaixo da linha indicadora; Os preços provavelmente irão voltar para a linha. O indicador TSF também define se uma mudança de direção aconteceu monitorando a tendência em curso.


O indicador de Previsão da Série de Tempo se assemelha ao indicador de Regressão Linear com a exceção de duas distinções importantes. Uma distinção é o valor de entrada de comprimento padrão usado para o TSF é muito menor porque a linha do gráfico está esticada para a frente. Outra distinção é que a TSF traça sua linha para a frente, à direita do gráfico, pelo número de barras especificadas pela entrada Bars Plus. Uma entrada de comprimento maior não seria tão confiável como um comprimento de prazo mais curto ao analisar a atividade e tendências de preços e formaria um enredo consideravelmente exagerado.


Previsão da série de tempo.


Time Series Forecast (TSF) é o instrumento de análise técnica, incluindo a medida linear de regressão calculada de acordo com o método de mínimos quadrados. A Previsão da Série de Tempo é semelhante à regressão linear na parte da determinação da presença / ausência de tendência em um cronograma considerado. No gráfico, TSF é desenhado como a curva que consiste nos últimos pontos de várias linhas de tendência de regressão linear.


Além disso, a Previsão da Série de Tempo define o ângulo de inclinação para a tendência de Forex (ascendente ou descendente) e é capaz de prever mais movimento de preço no mercado. Ou seja, sob tendência ascendente, a Previsão da série Ti define seu ângulo de inclinação e, ao combiná-lo com o preço real, calcula seu valor no próximo período de tempo. Se a tendência de movimento de preços permanecer, o indicador é capaz de definir o curso de seu movimento com uma precisão bastante alta.


Ainda não é um cliente?


DEMO ACABA TORNE-SE.


A reprodução dos conteúdos só é permitida com hiperlink ativo para a origem original.


Os serviços financeiros são prestados pela Riston Capital LTD. Os serviços descritos em nosso site não estão disponíveis no Iraque, Japão, Coréia do Norte, União Européia, Reino Unido e EUA.


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 bem informado de mentalistas quant pronto para responder suas perguntas comerciais mais importantes.


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ão prever a direção do mercado.


Dentro desses artigos, estaremos fazendo uso do scikit-learn, uma biblioteca de aprendizagem de máquinas para Python. Scikit-learn contém implementações de muitas técnicas de aprendizagem de máquinas. 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 usar o erro de Mean-Squared, Mean Absolute Deviation e Root-Mean-Squared Error para fornecer uma estimativa de precisão de 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 nosso processo de pesquisa comercial.


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 S & P500 E-Mini Index Futures Contract é 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, funciona bem 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 a gravamos 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 Quadratic Discriminant foi capaz de melhorar em ambos para produzir uma taxa de sucesso de 60%. Para o período específico analisado, isso provavelmente deve-se ao fato de que existe alguma não-linearidade na relação entre os fatores retardados e a direção que não está 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 é que vamos executar trades? Utilizaríamos o futuro 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.


Em artigos subsequentes, consideramos 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, consideraremos os classificadores de previsão não-lineares supervisionados mais avançados, como redes neurais artificiais (ANN) e máquinas vetoriais de suporte (SVM). Com um "estável" de técnicas de aprendizado de máquinas à nossa disposição, posteriormente poderemos usar métodos de conjunto para produzir uma precisão e robustez de previsão que, às vezes, podem exceder as de qualquer previsor individual.


Apenas iniciando o comércio quantitativo?


3 razões para se inscrever na QuantStart List:


1. Quant Trading Lessons.


Você terá acesso instantâneo a um curso gratuito de 10 partes, com 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.


Forex Mecânico.


Negociação no mercado FX usando estratégias mecânicas de negociação.


Usando R em Algorithmic Trading: Caracterização de séries temporais simples. Parte um.


Na semana passada, usamos o pacote estatístico R para analisar uma série de características do sistema IS / OS e derivamos delas algumas conclusões simples sobre as correlações históricas IS / OS. Hoje vamos usar R para fazer uma análise mais fundamental que deve ser feita antes da geração do sistema. Esta análise corresponde à caracterização básica de séries temporárias financeiras, o que nos dá algumas informações fundamentais sobre os símbolos que vamos negociar. Ao fazer essa análise, poderemos descobrir onde pode ser mais fácil desenvolver estratégias algorítmicas de busca alfa tradicionais e se algumas coisas (como um viés fundamental a longo prazo) existem dentro de um determinado símbolo. Dentro deste primeiro tutorial, abordaremos algumas características estatísticas básicas das séries temporais financeiras, se houver características úteis que você achar que estão faltando, publique um comentário com sua observação (eu certamente as incluirei nas próximas partes).


Em primeiro lugar, devemos garantir que nossos dados estejam contidos dentro de um arquivo csv amigável para R. Queremos ter colunas Open / High / Low / Close, bem como uma coluna Data que deve conter os horários de abertura de velas em um formato adequado para R (por exemplo 1986-03-23). Lembre-se de que R precisa ter cabeçalhos de coluna adequados, então a primeira linha do nosso csv deve ler algo como & # 8220; Date, Open, High, Low, Close & # 8221 ;. É importante que os dados sejam formatados desta forma, pois estaremos usando outras bibliotecas que exigem esta formatação expressa (como o quantmod) nas próximas postagens desta série (quando realizaremos análises mais avançadas, como expoente de Hurst estimativas). Certifique-se de que você também tenha instalado a biblioteca do e1071 R antes de prosseguir, já que precisamos de alguns cálculos estatísticos básicos. Uma vez que você tenha seus dados prontos, agora pode carregá-lo em R e traçá-lo para confirmá-lo e carregado corretamente (observe que aprenderemos a traçar os gráficos de candlestick mais bonitos quando usarmos o quantmod:


Uma vez que nossos dados são carregados, podemos calcular o retorno da série de preços para ter uma quantidade estatística que podemos comparar nos diferentes símbolos, pois os dados Open / High / Low / Close não são diretamente comparáveis. O retorno percentual é simplesmente dado por 100 * (Fechar [n] - Feche [n-1] / Fechar [n-1]), note que não estamos usando a diferença Fechar [n] - Abrir [n] porque as lacunas funcionam um papel muito importante em certos instrumentos, por isso precisamos levá-los em consideração no cálculo. Também vale a pena notar que os retornos baseados em log (Close [n]) também são comumente usados, pois esses valores dão resultados mais próximos de uma distribuição normal na maioria das séries temporais financeiras. O que usar depende principalmente de se sua análise exige uma suposição de normalidade, para este tutorial, vamos usar os retornos de porcentagem padrão. Marque este link para obter mais informações sobre os diferentes tipos de retorno que podem ser usados. Para calcular os retornos, precisamos emitir alguns comandos R adicionais:


Eu calculo os retornos preenchendo primeiro uma matriz com um diferencial e repopulando-a com a diferença normalizada correta com base nos valores de fechamento anteriores. Provavelmente há uma maneira melhor de fazer isso em R (por favor, coloque um comentário se você souber!), Mas eu simplesmente fiz isso usando o que minha mentalidade C ++ me disse; o). Agora podemos proceder a alguns cálculos adicionais que irão revelar algumas estatísticas interessantes sobre as séries temporais. Podemos calcular a média, ênfase, kurtosis e autocorrelações em série para nossos retornos. A asimetria nos diz como distorcido a distribuição é para valores negativos ou positivos (uma distribuição de probabilidade perfeitamente simétrica daria 0), enquanto a curtose nos diz como a gordura (alta curtose) ou altamente pico (baixa curtose) nossa distribuição é comparada a uma distribuição normal. Uma alta curtose implica que a variação dentro da sua distribuição é mais provável o resultado de variações extremas infreqüentes. Também podemos obter um histograma para ter uma melhor visão dessas variações.


Como você pode ver acima, os retornos para o EUR / USD se desviam significativamente de uma distribuição normal (mais em testes de normalidade em uma publicação futura) e já podemos ver algumas características da distribuição EUR / USD. Por exemplo, podemos ver que a distribuição é inclinada para o território positivo (skeess = 0,076) e a distribuição é gorda (kurtosis = 1,52). Nenhum desses dois fatos deve ser surpreendente para qualquer um que tenha feito análises de séries temporais, já que as séries temporais financeiras são bem conhecidas por serem fat-tailed. No entanto, vale a pena notar que o grau de kurtosis e skeessess mudam muito dependendo da classe de ativos e do símbolo que você está estudando. Na próxima parte desta série, iremos ver como diferentes símbolos Forex e não-Forex se comparam nesta mesma análise (além de algumas estatísticas adicionais) e como essas estatísticas estão relacionadas com a nossa capacidade de gerar sistemas de negociação historicamente lucrativos usando esses dados. Você verá que as distribuições que possuem certas características levam facilmente a um grande número potencial de estratégias historicamente rentáveis, enquanto as distribuições que possuem outras características são muito difíceis de encontrar bordas.


Para aqueles de vocês que estão bem versados ​​em estatísticas, sinta-se livre para contribuir com os aspectos de análise estatística básica que você achar úteis e quais você gostaria que eu explicasse dentro de uma publicação futura. Se você quiser saber mais sobre o meu trabalho e como você também pode usar análises de séries temporais para desenvolver estratégias de negociação, considere se juntar a Asirikuy, um site repleto de vídeos educacionais, sistemas de negociação, desenvolvimento e uma abordagem sólida, honesta e transparente para negociação automatizada em geral . Espero que tenha gostado deste artigo ! : o)


3 Respostas ao & # 8220; Usando R na negociação algorítmica: caracterização simples da série temporal. Parte Um & # 8221;


[& # 8230;] parte uma desta série de postagens obtivemos algumas características fundamentais simples de uma série de tempo financeiro Forex em [& # 8230;]


[& # 8230;] para ser o mais fácil. Antes de seguir este tutorial, eu também recomendaria que você leia meus dois (1, 2) últimos tutoriais R na análise básica de séries temporais, de modo que você esteja familiarizado com alguns R básicos [ # 8230;]


desculpe, mas estou de frente para este problema:


Erro no plot. window (& # 8230;): precisa finito & # 8216; xlim & # 8217; valores.


Além disso: mensagens de aviso:


1: Em min (x): nenhum argumento não faltante para o min; retornando Inf.


2: No max (x): nenhum argumento não faltante para o máximo; retornando - Inf.


3: Em min (x): nenhum argumento não faltante para o min; retornando Inf.


4: no max (x): nenhum argumento não faltante para o máximo; retornando - Inf.

Комментарии