Wednesday 18 December 2019

Trading strategy index


Estratégia de negociação BREAKING DOWN Estratégia de negociação Uma estratégia de negociação descreve as especificações para fazer comércios, e inclui regras para entradas de comércio, saídas e gestão de dinheiro. Quando devidamente pesquisados ​​e executados, uma estratégia de negociação pode fornecer uma expectativa matemática para as regras especificadas, e ajudar os comerciantes e investidores determinar se uma idéia de negociação é potencialmente rentável. Uma obrigação sem data de vencimento. Obrigações perpétuas não são resgatáveis, mas pagar um fluxo constante de juros para sempre. Alguns dos. O primeiro de uma série de anos em um índice econômico ou financeiro. Um ano de base é normalmente definido para um nível arbitrário de 1. Um vínculo que pode ser convertido em uma quantidade predeterminada de capital da empresa em determinados momentos durante a sua vida, normalmente. O excesso de retorno que o investimento no mercado de ações oferece ao longo de uma taxa livre de risco, como o retorno de títulos do governo. Um índice de 500 ações escolhidas para o tamanho do mercado, liquidez e agrupamento da indústria, entre outros fatores. O S P 500 foi projetado. Estratégia de negociação Forex 1 (crossover de médias móveis rápidas) Enviado por Edward Revy em 28 de fevereiro de 2007 - 13:07. Sistemas de negociação baseados em médias móveis rápidas são bastante fáceis de seguir. Vamos dar uma olhada neste sistema simples. Pares de moedas: QUALQUER Cronograma: gráfico de 1 hora ou 15 minutos. Indicadores: 10 EMA, 25 EMA, 50 EMA. Regras de entrada: Quando 10 EMA passa por 25 EMA e continua através de 50 EMA, BUY / SELL na direção de 10 EMA, uma vez que claramente faz com 50 EMA. (Basta esperar para a barra de preços atual para fechar no site oposto de EMA 50. Esta espera ajuda a evitar sinais falsos). Regras de saída: opção1: sair quando 10 EMA cruzar 25 EMA novamente. Opção2: sair quando 10 EMA retorna e toca 50 EMA (novamente é sugerido esperar até que a barra de preços atual depois de chamado toque foi fechado no lado oposto de 50 EMA). Vantagens: é fácil de usar, e dá resultados muito bons quando o mercado está tendendo, durante break-outs de preço grande e grandes movimentos de preços. Desvantagens: Indicador de média móvel rápido é um indicador de acompanhamento ou também é chamado de indicador de atraso, o que significa que não prevê as direções futuras do mercado, mas sim reflete a situação atual no mercado. Esta característica torna vulnerável: em primeiro lugar, porque pode mudar os seus sinais a qualquer momento, em segundo lugar, porque precisa de assisti-lo todo o tempo e, finalmente, quando o mercado negocia lateralmente (sem tendência) com muito pouca flutuação no preço pode dar muitos sinais falsos, Por isso não é sugerido para usá-lo durante esses períodos. ARIMA GARCH Estratégia de Negociação no S P500 Índice de Mercado de Capitais Utilizando R Por Michael Halls-Moore em 7 de outubro de 2017 Neste artigo eu quero mostrar-lhe como aplicar todo o conhecimento adquirido nos postos de análise de séries de tempo anteriores para uma estratégia de negociação No índice S P500 US mercado de ações. Veremos que, combinando os modelos ARIMA e GARCH, podemos superar significativamente uma abordagem Buy-and-Hold a longo prazo. Visão Geral da Estratégia A idéia da estratégia é relativamente simples, mas se você quiser experimentar com ela, eu sugiro que você leia os posts anteriores sobre a análise de séries temporais para entender o que você estaria modificando. A estratégia é feita de forma contínua: Dia, n, os dias k anteriores dos retornos logarítmicos diferenciados de um índice de mercado de ações são usados ​​como uma janela para ajustar um modelo ideal de ARIMA e GARCH. O modelo combinado é usado para fazer uma previsão para o dia seguinte retorna. Se a previsão é negativa, o estoque é curto no fechamento anterior, enquanto que se for positivo, é desejado. Se a previsão é a mesma direção que o dia anterior, então nada é alterado. Para esta estratégia usei o máximo de dados disponíveis do Yahoo Finance para o S P500. Tenho tomado k 500, mas este é um parâmetro que pode ser otimizado, a fim de melhorar o desempenho ou reduzir drawdown. O backtest é realizado de uma forma direta vetorizada usando R. Ele não foi implementado no backtestter evento-driven Python até agora. Daí o desempenho alcançado em um sistema de comércio real seria provavelmente um pouco menos do que você pode conseguir aqui, devido à comissão e derrapagem. Implementação da Estratégia Para implementar a estratégia, vamos usar um pouco do código que criamos anteriormente na série de artigos de análise de séries temporais, bem como algumas novas bibliotecas, incluindo o rugarch. Que foi sugerido para mim por Ilya Kipnis sobre a QuantStrat Trader. Vou passar a sintaxe de uma forma passo a passo e, em seguida, apresentar a implementação completa no final, bem como um link para o meu dataset para o indicador ARIGA GARCH. Eu incluí o último porque ele me levou um par de dias no meu PC dekstop para gerar os sinais Você deve ser capaz de replicar meus resultados na íntegra como o próprio código não é muito complexo, embora leve algum tempo para simular se Você executá-lo totalmente. A primeira tarefa é instalar e importar as bibliotecas necessárias em R: Se você já tem as bibliotecas instaladas você pode simplesmente importá-los: Com isso feito vai aplicar a estratégia para o S P500. Podemos usar o quantmod para obter dados que remontam a 1950 para o índice. Yahoo Finance usa o símbolo GPSC. Podemos então criar os retornos logarítmicos diferenciados do Preço de Encerramento do S P500 e retirar o valor inicial de NA: Precisamos criar um vetor, previsões para armazenar nossos valores de previsão em datas específicas. Definimos o comprimento foreLength para ser igual ao comprimento de dados de negociação que temos menos k, o comprimento da janela: Nesta fase, precisamos de loop através de todos os dias nos dados de negociação e ajustar um ARIMA apropriado e modelo GARCH para a janela de rolamento de Comprimento k. Dado que tentamos 24 ajustes separados ARIMA e encaixar um modelo GARCH, para cada dia, o indicador pode levar muito tempo para gerar. Usamos o índice d como uma variável de loop eo laço de k para o comprimento dos dados de negociação: Então, criamos a janela de rolamento tomando os retornos S P500 e selecionando os valores entre 1 d e kd, onde k 500 para esta estratégia: Utilizamos o mesmo procedimento que no artigo ARIMA para pesquisar todos os modelos ARMA com p in e q in, com exceção de p, q 0. Envolvemos a chamada arimaFit em um bloco de tratamento de exceções de tryCatch R para garantir que, se não obtivermos um ajuste para um valor específico de p e q, ignorá-lo e passar para a próxima combinação de p e q. Observe que definimos o valor integrado de d 0 (este é um d diferente do nosso parâmetro de indexação) e, como tal, estamos realmente ajustando um modelo ARMA. Em vez de um ARIMA. O procedimento de looping nos fornecerá o melhor modelo ARMA, em termos do Critério de Informação Akaike, que podemos usar para alimentar nosso modelo GARCH: No próximo bloco de código vamos usar a biblioteca do rugarch, com o GARCH (1,1) modelo. A sintaxe para isso requer que configuremos um objeto de especificação ugarchspec que leva um modelo para a variância ea média. A variância recebe o modelo GARCH (1,1) enquanto a média toma um modelo ARMA (p, q), onde p e q são escolhidos acima. Nós também escolhemos a distribuição sged para os erros. Uma vez escolhida a especificação, realizamos o ajuste real do ARMA GARCH usando o comando ugarchfit, que leva o objeto de especificação, o k retorna do S P500 e um solucionador de otimização numérica. Optamos por usar híbrido. Que tenta solucionadores diferentes, a fim de aumentar a probabilidade de convergência: Se o modelo GARCH não converge, então simplesmente definir o dia para produzir uma longa previsão, que é claramente um palpite. No entanto, se o modelo não converge, em seguida, saída da data e amanhã s previsão direção (1 ou -1) como uma seqüência de caracteres em que ponto o loop é fechado. Para preparar a saída para o arquivo CSV criei uma seqüência de caracteres que contém os dados separados por uma vírgula com a direção de previsão para o dia seguinte: A etapa penúltimo é a saída do arquivo CSV para o disco. Isso nos permite pegar o indicador e usá-lo em um software de backtesting alternativo para análise posterior, se assim for desejado: No entanto, há um pequeno problema com o arquivo CSV tal como está agora. O arquivo contém uma lista de datas e uma previsão para a direção de amanhã. Se fôssemos carregar isso para o código de backtest abaixo como ele está, nós realmente estaríamos introduzindo um viés look-ahead porque o valor de predição representaria dados não conhecidos no momento da previsão. A fim de explicar isso, precisamos simplesmente mover o valor previsto um dia antes. Eu encontrei este para ser mais direto usando Python. Desde que eu não quero assumir que você instalou quaisquer bibliotecas especiais (como pandas), eu mantive-o para puro Python. Aqui está o script curto que leva este procedimento para fora. Certifique-se de executá-lo no mesmo diretório que o arquivo forecast. csv: Neste ponto, agora temos o arquivo indicador corrigido armazenado nas previsões new. csv. Uma vez que isso leva uma quantidade substancial de tempo para calcular, eu provei o arquivo completo aqui para você baixar: Resultados da Estratégia Agora que geramos nosso arquivo CSV indicador, precisamos comparar seu desempenho com Buy Hold. Em primeiro lugar, lemos no indicador a partir do arquivo CSV e armazená-lo como spArimaGarch: Criamos então uma interseção das datas para as previsões ARIMA GARCH eo conjunto original de retornos do S P500. Podemos então calcular os retornos para a estratégia ARIMA GARCH multiplicando o sinal de previsão (ou -) com o próprio retorno: uma vez que temos os retornos da estratégia ARIGA GARCH podemos criar curvas de equidade tanto para o modelo ARIMA GARCH quanto para Buy Hold. Finalmente, podemos combiná-los em uma única estrutura de dados: Finalmente, podemos usar o comando xyplot para traçar as duas curvas de patrimônio na mesma parcela: A curva de equidade até 6 de outubro de 2017 é a seguinte: Como você pode ver, Período, a estratégia ARIMA GARCH superou significativamente o Buy Hold. No entanto, você também pode ver que a maioria do ganho ocorreu entre 1970 e 1980. Observe que a volatilidade da curva é bastante mínima até o início dos anos 80, momento em que a volatilidade aumenta significativamente e os retornos médios são menos impressionantes. Claramente a curva de equidade promete grande desempenho ao longo de todo o período. No entanto, seria esta estratégia realmente foram negociáveis ​​Primeiro de tudo, vamos considerar o fato de que o modelo ARMA só foi publicado em 1951. Não foi realmente amplamente utilizado até 1970, quando Box Jenkins discutiu em seu livro. Em segundo lugar, o modelo ARCH não foi descoberto (publicamente) até o início dos anos 80, por Engle, e o próprio GARCH foi publicado por Bollerslev em 1986. Em terceiro lugar, este backtest foi efectivamente realizado num índice bursátil e não num instrumento fisicamente transaccionável. A fim de obter acesso a um índice como este, teria sido necessário para o comércio de futuros S P500 ou uma réplica Exchange Traded Fund (ETF), como SPDR. Portanto, é realmente apropriado aplicar tais modelos a uma série histórica anterior à sua invenção. Uma alternativa é começar a aplicar os modelos a dados mais recentes. De fato, podemos considerar o desempenho nos últimos dez anos, de 1 de janeiro de 2005 a hoje: Como você pode ver a curva de equidade permanece abaixo de uma estratégia de Buy Hold por quase 3 anos, mas durante o crash da bolsa de 2008/2009 Faz muito bem. Isto faz sentido porque é provável que haja uma correlação serial significativa neste período e será bem capturado pelos modelos ARIMA e GARCH. Uma vez que o mercado recuperou pós-2009 e entra o que parece ser mais uma tendência estocástica, o desempenho do modelo começa a sofrer mais uma vez. Observe que essa estratégia pode ser facilmente aplicada a diferentes índices de ações, ações ou outras classes de ativos. Eu recomendo fortemente que você tente pesquisar outros instrumentos, como você pode obter melhorias substanciais sobre os resultados apresentados aqui. Próximas Etapas Agora que terminamos de discutir a família de modelos ARIMA e GARCH, eu quero continuar a discussão da análise de séries temporais considerando processos de longa memória, modelos de estados-espaço e séries temporais co-integradas. Essas áreas subseqüentes de séries temporais nos apresentarão modelos que podem melhorar nossas previsões para além daquelas apresentadas aqui, o que aumentará significativamente nossa rentabilidade comercial e / ou reduzirá o risco. Código completo Aqui está a listagem completa para a geração de indicadores, backtesting e plotagem: E o código Python para aplicar a forecast. csv antes de reimportar: Michael Halls-Moore Mike é o fundador da QuantStart e tem estado envolvido na indústria financeira quantitativa para a Últimos cinco anos, principalmente como um desenvolvedor quant e mais tarde como um consultor de comerciante quant para hedge funds. Artigos relacionados

No comments:

Post a Comment