Thursday 27 July 2017

Quant Trading Strategies Blog


StrategyQuant - Plataforma de Estratégias de Negociação Geradas por Computador Estratégia de Uso da PlataformaQuem construir novos sistemas de negociação automatizados para qualquer mercado ou prazo Gerar testes de centenas de estratégias por hora Executar Testes de robustez para evitar o encaixe de curva Compilação em Promover-Forwad Otimizador e WF Matrix Export como Consultor Perito para MetaTrader4 Ou estratégia para NinjaTrader ou Tradestation e muito mais. Inscreva-se também no nosso boletim informativo. Levará menos de um minuto e nos permitirá manter você informado sobre novos produtos e atualizações. Eu adoro o EA Wizard e estou usando muito eu adoro o EA Wizard e estou usando muito isso. Eu não sabia nada sobre programação em MT4 e muitas vezes desejava poder escrever uma EA. Agora o seu programa tornou possível. Uma coisa com certeza de que estou mais feliz é o suporte muito bom que você oferece. Você realmente me ajudou a entender melhor como usá-lo. Só posso dizer, estou impressionado Depois de trabalhar agora por 4 semanas com a minha versão própria, só posso dizer, estou impressionado. GB ajuda-me a encontrar as boas combinações de trabalho muito rápidas. Não, pelo menos, gosto muito do código fonte gerado por GB, porque é muito claro e compreensível, além disso, bem documentado também. Copyright copy StrategyQuant 2012 - 2017, Todos os direitos reservados. Aviso de Investimento de Alto Risco: negociar divisas e contratos para diferenças de margem traz um alto risco e pode não ser adequado para todos os investidores. Existe a possibilidade de que você possa sustentar uma perda em excesso de seus fundos depositados e, portanto, você não deve especular com o capital que não pode perder. A informação fornecida é apenas um conselho geral que não leva em consideração seus objetivos, situação financeira ou necessidades. Não deve ser interpretado como um conselho pessoal. Esta publicação explora a aplicação da NEAT na negociação do SampP. A estratégia aprendida significativamente desempenha a compra e a manutenção dentro e fora da amostra. Uma parte fundamental de qualquer problema de aprendizagem de máquina é definir os recursos e garantir que they8217re seja normalizado de alguma forma. As características serão os percentis rolantes dos seguintes dados econômicos, um percentil rotativo leva os últimos n pontos de dados e calcula o que os dados indicam que o ponto de dados mais recente é maior do que. A função de fitness é a equidade final e visa maximizar o patrimônio final. Qualquer genoma que tenha uma redução de 20, ou as tentativas de usar uma alavanca maior que - 2 é encerrada. Na prática, você não deseja que sua máquina do sistema aprenda os controles de risco, pois existe potencial que eles não aprendem. A razão pela qual eles estão incorporados dentro da estratégia é acelerar o processo de aprendizagem, pois podemos matar os genomas cedo antes da simulação estar completa com base em quebrar as regras de risco. Parcela de todos os recursos de dados Parece que, quando as não-fazendas caiem para os percentis inferiores, o desemprego atinge os percentis mais altos do ano passado. Os retornos diários no SampP tornam-se mais voláteis. Espera-se que a aprendizagem possa tirar proveito disso. A aprendizagem identificou uma estratégia que executa simplesmente comprando e segurando. A estratégia proposta tem uma redução máxima em torno de 20 contra a compra e a retenção, tendo um empate de 40. Além disso, a estratégia desacelerou o índice entre 2000-2003, já que estava vendendo antes de longo período de 2007. Gerando um retorno de 80 vs comprar e Espera de 7 Resultados fora da amostra Nos dados fora da amostra (não utilizados durante o treinamento), a estratégia superou significativamente a compra e a retenção, aproximadamente 250 retorna vs 50 com uma redução máxima de cerca de 20 contra a compra e a retirada de 50. Um tutorial simples que demonstra como treinar uma rede neural a números de raízes quadradas usando um algoritmo genético que busca através do espaço de estrutura topológica. O algoritmo é chamado NEAT (Neuro Evolution of Augmenting Topologies) disponível no pacote RNeat (ainda não em CRAN). O treinamento é muito semelhante a outros pacotes de regressão de aprendizado de máquina em R. A função de treinamento leva um quadro de dados e uma fórmula. A fórmula é usada para especificar quais colunas no quadro de dados são as variáveis ​​dependentes e quais são as variáveis ​​explicativas. O código é comentado e deve ser simples o suficiente para novos usuários R. O desempenho da rede pode ser visto no gráfico inferior esquerdo da imagem acima, há diferenças consideráveis ​​entre o resultado esperado e a saída real. É provável que, com mais treinamento, a magnitude desses erros se reduza, pode-se ver no gráfico de baixo direito que a aptidão máxima, média e mediana geralmente aumenta com cada geração. Esta parte do tutorial NEAT mostrará como usar o pacote RNeat (ainda não em CRAN) para resolver o problema clássico do balanço do pólo. A simulação requer a implementação de 5 funções: processInitialStateFunc 8211 Especifica o estado inicial do sistema, para o problema do balanço do pólo, o estado é a localização do carrinho, a velocidade do carrinho, a aceleração do carrinho, a força aplicada ao carrinho, o ângulo do pólo, o ângulo do pólo Velocidade e aceleração angular do pólo. ProcessUpdateStateFunc 8211 Especifica como tomar o estado atual e atualizá-lo usando as saídas da rede neural. Neste exemplo, esta função simula as equações de movimento e leva a saída da rede neural como a força que está sendo aplicada ao carrinho. ProcessStateToNeuralInputFunc 8211 Permite modificar a normalização do estado do estado antes de ser passado como uma entrada para a rede neural fitnessUpdateFunc 8211 Toma a aptidão antiga, o estado antigo e o novo estado atualizado e determina o que é a nova aptidão do sistema. Para o problema do equilíbrio do pólo, esta função quer recompensar o pendulo sendo certo e recompensar o carrinho próximo ao meio da pista. TerminationCheckFunc 8211 Toma o estado e verifica se o término deve ser encerrado. Pode optar por terminar se o pólo cair, a simulação correu demais ou o carrinho foi retirado do final da pista. PlotStateFunc 8211 Traça o estado, para o equilíbrio do pólo, isso desenha o carrinho e o pêndulo. Esta parte do tutorial sobre o uso do algoritmo NEAT explica como os genomas são cruzados de forma significativa, mantendo suas informações topológicas e como a especiação (genomas grupais em espécies) pode ser usada para proteger os genomas fracos com novas informações topológicas de serem erradicadas prematuramente a partir do gene Pool antes do seu espaço de peso pode ser otimizado. A primeira parte deste tutorial pode ser encontrada aqui. Rastreamento do histórico de genes através da Inovação Números A Parte 1 mostrou duas mutações, a ligação muta e a mutação do nó que ambos adicionaram novos genes ao genoma. Cada vez que um novo gene é criado (através de uma inovação topológica), um número de inovação global é incrementado e atribuído a esse gene. O número de inovação global está rastreando a origem histórica de cada gene. Se dois genes tiverem o mesmo número de inovação, eles devem representar a mesma topologia (embora os pesos possam ser diferentes). Isso é explorado durante o cruzamento do gene. Genoma Crossover (Mating) Genomas crossover leva dois genomas dos pais (vamos chamá-los A e B) e cria um novo genoma (vamos chamá-lo de criança) levando os genes mais fortes de A e B copiando qualquer estrutura topológica ao longo do caminho. Durante o crossover, os genes de ambos os genomas estão alinhados usando seu número de inovação. Para cada número de inovação, o gene do pai mais adequado é selecionado e inserido no genoma infantil. Se ambos os genomas dos pais são a mesma aptidão, então o gene é selecionado aleatoriamente de qualquer dos pais com a mesma probabilidade. Se o número de inovação só estiver presente em um dos pais, isso é conhecido como um gene disjunto ou excesso e representa uma inovação topológica, também é inserido na criança. A imagem abaixo mostra o processo de cruzamento para dois genomas da mesma forma física. A especificação leva todos os genomas em um determinado conjunto de genomas e tenta dividi-los em grupos distintos conhecidos como espécies. Os genomas em cada espécie terão características semelhantes. É necessária uma maneira de medir a semelhança entre dois genomas, se dois genomas forem 8220similares, são da mesma espécie. Uma medida natural a ser usada seria uma soma ponderada do número de excesso de amplificador de excesso de genes (representando diferenças topológicas) e a diferença de pesos entre genes correspondentes. Se a soma ponderada estiver abaixo de algum limiar, então os genomas são da mesma espécie. A vantagem de dividir os genomas em espécies é que durante o passo de evolução genética em que os genomas com baixa aptidão são retirados (removidos inteiramente do grupo do genoma) ao invés de ter cada genoma lutar pelo lugar dele em cada outro genoma em todo o grupo do genoma, podemos Faça com que ele lute por esse lugar contra os genomas da mesma espécie. Desta forma, as espécies que se formam a partir de uma nova inovação topológica que podem não ter uma alta aptidão, ainda que não tenham pesantes pesadas otimizadas sobreviverão ao abate. Resumo de todo o processo Crie um pool de genoma com n genomas aleatórios Pegue cada genoma e aplique para simulação de problema e calcule a habilidade do genoma Atribua cada genoma a uma espécie Em cada espécie, remova os genomas removendo alguns dos genomas mais fracos. Raça de cada espécie (genomas selecionados aleatoriamente Na espécie para crossover ou mutate) Repita todo o acima. Esta série de quatro partes explorará o algoritmo NeuroEvolution of Augmenting Topologies (NEAT). As partes um e dois resolverão brevemente o algoritmo e discutirão os benefícios, a terceira parte o aplicará ao problema do equilíbrio do pólo e, finalmente, a parte 4 o aplicará aos dados do mercado. Este algoritmo recentemente foi viral em um vídeo chamado MarIO onde uma rede foi desenvolvida que foi capaz de completar o primeiro nível de super mario, veja o vídeo abaixo. Normalmente, quando se escolhe usar uma rede neural, eles precisam decidir quantas camadas ocultas existem, o número de neurônios em cada camada e quais conexões existem entre os neurônios. Dependendo da natureza do problema, pode ser muito difícil saber o que é uma topologia sensata. Uma vez que a topologia é escolhida, provavelmente será treinada usando a propagação de retrocesso ou uma abordagem de evolução genética e testada. A abordagem de evolução genética é essencialmente pesquisando através do espaço de pesos de conexão e selecionando redes de alto desempenho e criando-os (isto é conhecido como evolução de topologia fixa). A abordagem acima encontra pesos de conexão ótimos, it8217s, em seguida, até um 8220expert8221 para ajustar manualmente a topologia da rede na tentativa de encontrar iterativamente redes de melhor desempenho. Isso levou ao desenvolvimento de treinamento de topologia variável, onde tanto o espaço de conexão quanto o espaço de estrutura são explorados. Com isso veio uma série de problemas, como redes tornando-se incrivelmente espalhafatoso e complexo abrandando o processo de aprendizagem da máquina. Com as abordagens genéticas, foi difícil acompanhar as mutações genéticas e a estrutura do cruzamento de forma significativa. O algoritmo NEAT visa desenvolver um algoritmo genético que busca através do peso da rede neural e espaço de estrutura que tenha as seguintes propriedades: Tenha representação genética que permita que a estrutura seja atravessada de forma significativa. Proteja as inovações topológicas que precisam de algumas evoluções a serem otimizadas. Que não desaparece do pool de genes prematuramente. Minimize topologias ao longo do treinamento sem funções de penalização de complexidade de rede especialmente planejadas A através do tratamento do algoritmo podem ser encontradas no papel que está evoluindo Redes Neurais através de Aumentação de Topologias por Kenneth O. Stanley e Risto Miikkulainen (nn. cs. utexas. edudownloadspapersstanley. ec02.pdf). A informação sobre a rede é representada por um genoma, o genoma contém genes de nó e genes de conexão. Os genes do nó definem nós na rede, os nós podem ser entradas (como um indicador técnico), saídas (como uma recomendação de venda de compra) ou ocultas (usadas pela rede para um cálculo). Os genes de conexão juntam-se a nós na rede e têm um peso a ele vinculado. Os genes de conexão têm um nó de entrada, um nó de saída, um peso, um sinalizador habilitado e um número de inovação. O número de inovação é usado para rastrear o histórico de uma evolução de genes e será explicado com mais detalhes na segunda parte. Esta publicação examinará algumas das mutações que podem acontecer na rede, vale ressaltar que cada genoma incorporou dentro dela uma taxa de mutação para cada tipo de mutação que pode ocorrer. Estas taxas de mutação também são aumentadas aleatoriamente ou diminuem à medida que a evolução avança. Atualiza aleatoriamente o peso de um gene de conexão selecionado aleatoriamente. As atualizações são: Novo peso Peso antigo - Número aleatório entre 0 e genomeMutaçãoRate8220Step8221 Novo peso Número aleatório entre -2 e 2 Adiciona aleatoriamente uma nova conexão à rede com um peso aleatório entre -2 E 2 Esta mutação adiciona um novo nó à rede desabilitando uma conexão, substituindo-a por uma conexão de peso 1, um nó e uma conexão com o mesmo peso que a conexão desativada. Em essência, o it8217s foi substituído por um equivalente de funcionamento idêntico. Ativar Desativar Mutate Aleatoriamente habilita e desativa conexões

No comments:

Post a Comment