Monday 20 November 2017

Rotational Trading System Amibroker


Dados Históricos e Estratégias Momentum Rotation Vamos fazer um ligeiro desvio com este post, e olhar para stock / ETF / fundo mútuo rotação estratégias. Eu comercializar estratégias de rotação ativamente em várias contas, e têm vindo a evoluir as minhas estratégias de rotação por cerca de dez anos. Se você gostar de algumas informações sobre como construir uma estratégia de rotação, por favor dê uma olhada nos artigos abaixo: ETF Rotational System V1.0, Parte 1 ETF Rotational System V1.0, Parte 2 ETF Rotational System V1.0, Parte 3 ETF Estes artigos são dos blogs de MarketSci e Woodshedder que escreveram um número de posts (mais do que Ive listados acima) sobre o tema de estratégias de rotação. Ambos parecem ser semi-aposentado agora e não blog muito. No meu post não vamos olhar para as estratégias propriamente ditas, mas sim os dados que eles usam. Alguns anos atrás eu comecei a perceber que os sinais que eu estava recebendo (e negociação) de minhas estratégias de rotação foram ocasionalmente inconsistente com os backtests de Essas mesmas estratégias. Eu não gastei muito tempo escavando a questão no momento, mas ele permaneceu no fundo da minha mente até final de dezembro de 2013. Para os negócios que foram gerados a partir de meus sistemas para dezembro de 2013 (meus sistemas de rotação reavaliar mensalmente), eu não Apenas registaram os veículos que foram seleccionados, mas também o seu grau de rotação associado. Tenho acompanhado essas informações em planilhas desde esse tempo. Um período que atualmente inclui nove ciclos de rotação (9 meses). Em meados do mês passado, agosto de 2014, eu decidi backtest minhas estratégias de rotação ao vivo no mesmo período que eu tinha negociado ativamente com essas mesmas estratégias de rotação. Não fiquei surpreso ao descobrir que um número dos comércios nos backtests não combinou os ofícios que eu tinha executado realmente e gravado em minhas planilhas. Eu uso AmiBroker e dados de fim de dados do Yahoo (Yahoo Data Info 1. Yahoo Data Info 2) para as minhas estratégias de rotação. Eu sabia que Amibroker foi configurado por padrão para usar o fechamento ajustado ao invés do fechamento real em seu banco de dados, mas eu não pensei muito sobre esse detalhe. Eu estava conscientemente usando esse fechamento ajustado ao invés do fechamento real por quase dez anos, mas não tinha realmente considerado o impacto de usar dados fechados ajustados com estratégias de rotação / ranking. A linha no arquivo aqh. format AmiBroker que você deve estar ciente é destacada abaixo: Se você gostaria de usar o fechamento real em vez do fechamento ajustado em Ambroker, substituir a linha realçada acima, com a linha abaixo e re-download Todos os seus dados históricos do Yahoo. Como um lembrete, a série de tempo de fechamento ajustado é uma versão modificada da série de tempo de fechamento real que inclui ganhos de dividendos e ganhos de capital. Isso significa que um preço de compra mostrado em um backtest não será o preço de compra real que você poderia ter recebido negociação naquele dia (para qualquer ação ou ETF que em algum momento mais tarde emitiu um dividendo ou ganho de capital). É muito importante pensar sobre este ponto eo impacto que ele pode ter em seu backtest versus resultados ao vivo Esta questão tem um grande impacto sobre os sinais de entrada e saída de comércio com sistemas de rotação / ranking. Um sistema em que um grupo de ações / ETFs / fundos mútuos estão sendo comparados entre si com base nos dados de preço aberto / alto / baixo / fechado (OHLC). Como exemplo, dê uma olhada nos dados históricos do iShares Core US Aggregate Bond (AGG). Um trecho desses dados históricos é mostrado na imagem abaixo. Se o seu sistema de rotação passasse a estar usando preços de fechamento ajustados e tivesse AGG em sua cesta de veículos de rotação, AGGs pontuação para 29 de agosto teria sido diferente em 29 de agosto, quando você trocou, do que quando você executar o backtest para essa data em dizer setembro 2 (após a emissão do dividendo). Você vai notar que o fechamento de 29 de agosto é 109,98, mas o fechamento ajustado é 109,79. E esta questão se acumula com cada dividendo e ganho de capital que é emitido. Cada fechamento ajustado passado é modificado quando um novo dividendo é emitido. Dê uma olhada na diferença entre o fechamento ajustado eo fechamento real há apenas dois anos: O fechamento em 29 de agosto de 2012 é 111,95, enquanto o fechamento ajustado nessa data é 106,33. À medida que novos dividendos forem emitidos no futuro, o preço de fechamento ajustado de 106,33 será cada vez menor, o que terá impacto no ranking de rotação / pontuação para AGG em todos os backtests. Este mesmo problema ocorre com qualquer veículo que emite dividendos e ganhos de capital. Se usarmos os preços de fechamento reais para nossos backtests, iremos gerar sinais baseados em preços que realmente ocorreram no passado. O trade off é que não vamos ver o impacto positivo dos dividendos e ganhos de capital nos retornos de nossos backtests. Como ilustração, posso mostrar os resultados de várias variações da estratégia de rotação em relação ao seguinte cesto de ETFs: AGG - iShares Fundo de Dividendos Agregados fx DBC - PowerShares DB Com Indx Trckng Fundo EEM - iShares MSCI Mercados Emergentes Indx EFA - iShares Índice MSCI EAFE Fundos GLD - SPDR Gold Trust IYR - iShares Dow Jones US Imóveis JNK - SPDR fx Capital High Rendimento PPH - Market Vetores Farmacêutica SPY - SPDR SampP 500 Confiança TIP - iShares fx TIPS Fundo de Obrigações Na imagem abaixo, você pode ver o patrimônio Curvas para várias estratégias de rotação diferentes correr contra os 10 ETFs na lista acima, mas usando a série de tempo de fechamento ajustado. (Clique na imagem para ver uma versão maior). No painel superior, as linhas verde, roxa e vermelha são as curvas de equidade para três diferentes estratégias de rotação executar contra os 10 veículos na lista acima. As outras três curvas são as curvas buy and hold para SPY, IWM e QQQ. O painel inferior exibe SPY (laranja) e as mesmas curvas de equidade verde, roxo e vermelho do painel superior. Além disso, o painel inferior contém sete curvas patrimoniais para outras variações de estratégia de rotação na mesma lista de 10 ETFs. O eixo y é o retorno percentual, enquanto o texto para cada estratégia lista o retorno monetário acumulado para essa estratégia (o capital inicial para cada estratégia foi de 100.000). Agora vamos olhar para os resultados para as mesmas estratégias exata correr contra os mesmos 10 veículos, mas usando o fechamento de preços reais dados da série de tempo. Esperamos que os retornos sejam menores, uma vez que os dividendos e os ganhos de capital não são refletidos nas séries temporais. A diferença nas curvas patrimoniais é grande, como esperado. Mas como os sinais de entrada e saída comparam entre os dados de fechamento ajustados e os dados de fechamento reais. Na tabela abaixo, é a comparação de datas de entrada e saída e veículos para a estratégia com a curva de equidade verde nos dois gráficos acima. Lembre-se que as curvas de equidade nos dois gráficos acima foi gerada pela mesma estratégia de rotação executada contra os mesmos 10 ETFs na lista acima. A única diferença entre as curvas de patrimônio é os dados. Dados de fechamento ajustados versus dados de fechamento reais. Essas seleções não são muito diferentes entre a série de fechamento ajustada ea série de fechamento real com esta estratégia de rotação e os 10 ETFs na lista acima. Tenho notado diferenças significativamente maiores com diferentes cestas de ETFs e fundos mútuos. Então o que é o ponto Idealmente, para as estratégias de rotação / classificação devemos gerar nossos sinais de entrada e saída com base na série de fechamento real, mas calcular nossos retornos nesses comércios usando a série de tempo de fechamento ajustado. Se pudermos usar apenas uma série de tempo, então devemos considerar usar a série de tempo de fechamento real ao invés da série de tempo de fechamento ajustada. Se pudermos viver com curvas de equidade que mostram retornos menores, usando dados de séries temporais de fechamento reais resultará em sinais de entrada / saída gerados em nossos backtests que correspondem aos nossos sinais de entrada / saída reais que recebemos na negociação real. E um último ponto. Certifique-se de verificar os dados que pagou e serviços de estratégia de rotação livre usar. Seus dados de fechamento ajustados mais prováveis. O que significa que os sinais que eles mostram em seus backtests podem não coincidir com os sinais que eles realmente enviaram para o Amibroker (AFL) Qualquer indicador ou sistema mais cedo ou mais tarde passará por um período difícil ou parar de trabalhar completamente. O objetivo do indicador de rotação do sistema é testar cada sistema em um número fixo de períodos para o estoque atual e determinar qual sistema deve ser negociado no futuro. Isso é reavaliado após cada negociação. Isso pode permitir um sistema mais robusto como você pode girar entre dizer um sistema de cruzamento de média móvel e um sistema baseado em RSI. Isto é conseguido através da função RotateSignalsX que pode girar entre 2 sistemas e 8 dependendo de qual função é escolhida. Quando colocado no topo da fórmula do sistema ele ativa o modo de troca rotacional (também conhecido como fund-switching) do backtester. Nota: esta função está agora marcada como obsoleta. Use SetBacktestMode (backtestRotational) em novas fórmulas. NOTA IMPORTANTE: A menos que você deseje implementar especificamente o sistema de troca de fundos / rotação, você NÃO deve usar este modo. Rotação comercial é método popular para a negociação de fundos mútuos. É também conhecido como fundo de comutação ou scoringranking. Sua permise básica é girar símbolos o tempo todo, de modo que apenas os top N classificados de acordo com alguma pontuação definida pelo usuário são negociados. O número de posições abertas depende de Max. Posição de posições abertas e disponibilidade de fundos / tamanho de posição. Uma vez que a posição é inserida permanece no lugar até que a classificação de segurança caia abaixo de WorstRankHeld (settable via SetOption (WorstRankHeld, 5)). Os sinais regulares de compra / venda / curto / cobrir não são utilizados de forma alguma. O modo de rotação usa apenas a variável de pontuação (PositionScore) para classificar e girar os títulos. Esta idéia foi implementada anteriormente em PortfolioTrader AFL fórmula escrita por Fred Tonetti com GUI escrito por Dale Wingo. Para entrar neste modo você tem que chamar a função EnableRotationalTrading () no início da sua fórmula. A partir de então, o uso de comprar / vender / curto / cobrir variáveis ​​não é permitido. Apenas a variável PositionScore será usada para classificar os títulos e negociar os principais títulos N. Uma fórmula de negociação rotativa simples (ações com alto RSI são os melhores candidatos para o curto prazo, enquanto as ações com baixo RSI são os melhores candidatos para posições longas): PositionSize - 25 // invest 25 do patrimônio em posição única PositionScore 50 - RSI () // PositionScore tem o mesmo significado que rScore em PT A pontuação (PositionScore) para todos os valores é calculada primeiro. Em seguida, todas as pontuações são classificadas de acordo com o valor absoluto de PositionScore. Então top N são escolhidos para serem negociados. N depende de fundos disponíveis e máx. Posição das posições abertas. Backtester sucessivamente entra nos comércios a partir da segurança de maior classificação até que o número de posições abertas alcance max. Posições abertas ou não há mais fundos disponíveis. A pontuação tem o seguinte significado: maior pontuação positiva significa melhor candidato para entrar no longo comércio menor pontuação negativa significa melhor candidato para entrar no comércio de curto a pontuação de zero significa nenhum comércio (sair do comércio, se já existe a posição aberta no símbolo dado) a pontuação Igual a scoreNoRotate constante significa que as negociações já abertas devem ser mantidas e nenhuma nova negociação entrou na pontuação igual a scoreExitToda constante faz com que o backtestter de modo rotativo saia de todas as posições independentemente de HoldMinBars. Observe que este é sinalizador global e é suficiente para defini-lo para qualquer símbolo único para sair de todas as posições abertas atualmente, não importa em qual símbolo você usar scoreExitAll (pode ser mesmo no símbolo que não é mantido no momento). Ao definir PositionScore para scoreExitAll você sair de todas as posições immediatelly independentemente de HoldMinBars configuração saídas são geradas automaticamente quando segurança classifica gotas abaixo pior classificação realizada. Não há controle real sobre quando as saídas acontecem, exceto de definir baixa pontuação para forçar saídas. Você também pode definir a pontuação em qualquer (pelo menos um) de segurança para o valor de scoreNoRotate para evitar a rotação (de modo que as posições já abertas são mantidas). Mas isso é global e não lhe dá controle individual. Importante: O modo de negociação rotacional usa o preço de compra e o atraso de compra na página "Configurações" como preço de negociação e atraso para entradas e saídas (longas e curtas) EnableRotationalTrading () SetOption (WorstRankHeld. Em posição única PositionScore 50 - RSI () // PositionScore tem o mesmo significado que rScore em PT

No comments:

Post a Comment