Tuesday 13 March 2018

Trading sistema objetivo função


Como otimizar o sistema de negociação. NOTA Este é um tópico bastante avançado Por favor, leia os tutoriais AFL anteriores primeiro. A idéia por trás de uma otimização é simples Primeiro você tem que ter um sistema comercial, este pode ser um crossover média móvel simples, por exemplo Em quase todos os sistemas lá São alguns parâmetros como período de média que decidem como dado sistema se comporta ie é é bem adequado para longo prazo ou curto prazo, como é reage em estoques altamente volátil, etc A otimização é o processo de encontrar valores ideais dos parâmetros que dão maior lucro de O sistema para um determinado símbolo ou um portfólio de símbolos AmiBroker é um dos poucos programas que permitem otimizar seu sistema em vários símbolos ao mesmo tempo. Para otimizar seu sistema você tem que definir de um até dez parâmetros para ser otimizado Você decide O que é um valor mínimo e máximo permitido do parâmetro e em que incrementos esse valor deve ser atualizado AmiBroker então executa vários testes de volta o sistema usando A LL possíveis combinações de valores de parâmetros Quando este processo é terminado AmiBroker exibe a lista de resultados classificados por lucro líquido Você é capaz de ver os valores de parâmetros de otimização que dão o melhor resultado. Formulação AFL de gravação. Otimização no back tester é suportado através de nova função Chamada otimizar A sintaxe desta função é a seguinte: variable optimize Descrição, default min max step. variable - é a variável AFL normal que recebe o valor retornado pela função otimizar Com modos normais de backtesting, exploração, exploração e comentar, a função otimizar retorna o padrão Valor, então a chamada de função acima é equivalente a variável default. In otimização modo otimizar função retorna sucessivos valores de min a max inclusive com step stepping. Description é uma seqüência de caracteres que é usado para identificar a variável de otimização e é exibido como um nome de coluna em O resultado de otimização list. default é um valor padrão que otimiza a função retorna na exploração , Indicador, comentário, varredura e modos normais de teste de volta. Min é um valor mínimo da variável que está sendo otimizada. max é um valor máximo da variável que está sendo otimizada. step é um intervalo usado para aumentar o valor de min para max. AmiBroker suporta Até 64 chamadas para otimizar a função, portanto, até 64 variáveis ​​de otimização, note que se você estiver usando a otimização exaustiva, então é realmente boa idéia para limitar o número de variáveis ​​de otimização para apenas few. Each chamada para otimizar gerar otimização máxima otimização loops e várias chamadas Para otimizar multiplicar o número de execuções necessárias Por exemplo, otimizar dois parâmetros usando 10 etapas exigirá 10 10 100 laços de otimização. Call otimizar a função apenas ONCE por variável no início de sua fórmula como cada chamada gera um novo loops de otimização. Otimização multi-símbolo É totalmente suportado pelo AmiBroker. O espaço de pesquisa máximo é 2 64 10 19 10.000.000.000.000.000.000 combinações.1 Single optimization variável. sigavg Otimizar S Ignal média 9 2 20 1.Buy Cross MACD 12 26, Sinal 12 26 sigavg Venda Cross Signal 12 26 sigavg, MACD 12 26.2 Otimização de duas variáveis ​​adequada para 3D charting. per Otimizar por 2 5 50 1 Nível Otimizar nível 2 2 150 4.Comprar CCI por nível de venda de nível, CCI per.3 Múltiplo 3 variável otimização. mfast Otimizar MACD Rápido 12 8 16 1 mslow Otimizar MACD Lento 26 17 30 1 sigavg Otimizar Sinal média 9 2 20 1.Buy Cross MACD mfast Depois de digitar a fórmula, basta clicar no botão Otimizar na janela de análise automática. O AmiBroker iniciará o teste de todas as combinações possíveis de variáveis ​​de otimização e relatará os resultados em A lista Após a otimização é feita a lista de resultado é apresentada ordenada pelo lucro líquido Como você pode classificar os resultados por qualquer coluna na lista de resultados é fácil obter os valores ideais de parâmetros para o mais baixo rebaixamento, menor número de comércios, Maior prof O fator, a exposição de mercado mais baixa e o retorno anual ajustado pelo risco mais alto As últimas colunas da lista de resultados apresentam os valores das variáveis ​​de otimização para o dado teste. Quando você decide qual combinação de parâmetros se adequa às suas necessidades o melhor tudo o que você precisa fazer é substituir o padrão Valores em otimizar chamadas de função com os valores ótimos Na fase atual você precisa digitá-los manualmente na janela de edição de fórmula o segundo parâmetro de otimizar a função call. Displaying gráficos de otimização 3D animado. Para exibir gráfico de otimização 3D, você precisa executar dois - Otimização de variáveis ​​primeiro Duas otimização de variáveis ​​precisa de uma fórmula que tenha 2 Otimizar chamadas de função Uma fórmula de otimização de duas variáveis ​​de otimização se parece com this. per Otimizar por 2 5 50 1 Nível Otimizar nível 2 2 150 4.Buy Cross CCI per, - Level Sell Cross Level, CCI per. After entrando a fórmula que você necessita estalar Optimize o botão. Uma vez que a optimização é completa você deve estalar sobre a gota para baixo seta no botão Optimize e escolher Visualizar o gráfico de otimização 3D Em poucos segundos, um gráfico de superfície tridimensional colorido aparecerá em uma janela do visualizador de gráfico 3D Um gráfico de exemplo 3D gerado usando a fórmula acima é mostrado abaixo. Por padrão, os gráficos 3D exibem valores de lucro líquido contra variáveis ​​de otimização. No entanto enredo gráfico de superfície 3D para qualquer coluna na tabela de resultados de otimização Basta clicar no cabeçalho da coluna para classificá-lo seta azul aparecerá indicando que os resultados de otimização são classificados por coluna selecionada e, em seguida, escolha Exibir gráfico de otimização 3D novamente. Os parâmetros afetam o desempenho de negociação, você pode mais facilmente decidir quais os valores dos parâmetros produzem frágil e que produzem o desempenho do sistema robusto Configurações robustas são regiões no gráfico 3D que mostram gradual em vez de mudanças abruptas no enredo de superfície gráficos de otimização 3D são grande ferramenta para evitar curva - Encaixe Curve-montagem ou sobre-otimização ocorre quando o sistema é mais complexo do que ele precisa ser, e al L que a complexidade foi focada em condições de mercado que podem nunca acontecer novamente Mudanças radicais ou picos nos gráficos de otimização 3D mostram claramente áreas de sobre-otimização Você deve escolher a região de parâmetro que produz um platô amplo e amplo em gráfico 3D para a sua vida real trading Parâmetro conjuntos Produzindo picos de lucro não funcionará de forma confiável em trading.3D reais visualizadores de gráfico views. AmiBroker s visualizador de gráfico 3D oferece capacidades de visualização total com rotação de gráfico completo e animação Agora você pode ver os resultados do sistema de todas as perspectivas concebíveis Você pode controlar a posição e outros parâmetros Do gráfico usando o mouse, barra de ferramentas e atalhos de teclado, o que você achar mais fácil para você Abaixo você encontrará a lista.- para girar - mantenha pressionado o botão esquerdo do mouse e mover em direções XY - Zoom-in, zoom-out - Para baixo RIGHT botão do mouse e mover em XY direções - para mover traduzir - mantenha pressionado o botão esquerdo do mouse e tecla CTRL e mover em XY direções - para animar - mantenha pressionada Gire o botão do mouse, arraste rapidamente e solte o botão ao arrastar. SPACE - animar auto-girar SETA PARA A ESQUERDA - girar vert para a esquerda SETA PARA A DIREITA - girar para a direita para a direita SETA PARA CIMA - girar horiz para cima PARA BAIXO KEY - Zoom NUMPAD - MINUS - Far zoom out NUMPAD 4 - mover para a esquerda NUMPAD 6 - mover para a direita NUMPAD 8 - mover para cima NUMPAD 2 - mover para baixo PAGE UP - nível da água para cima PAGE DOWN - nível da água para baixo. Smart não exaustiva optimization. AmiBroker agora Oferece otimização inteligente não-exaustiva, além de busca regular e exaustiva Pesquisa não-exaustiva é útil se o número de todas as combinações de parâmetros do sistema de negociação dado é simplesmente muito grande para ser viável para busca exaustiva. Pesquisa exaustiva é perfeitamente bem desde que seja Razoável usá-lo Vamos dizer que você tem 2 parâmetros cada variando de 1 a 100 passo 1 Que s 10000 combinações - perfeitamente OK para pesquisa exaustiva Agora com 3 parâmetros você tem 1 milhão de combinações - ainda é OK para sear exaustiva Ch, mas pode ser lenghty Com 4 parâmetros você tem 100 milhões de combinações e com 5 parâmetros 1 100 você tem 10 bilhões de combinações Nesse caso, seria muito demorado para verificar todos eles, e esta é a área onde não - Os métodos de busca podem resolver o problema que não é resolvível em tempo razoável usando busca exaustiva. Aqui está absolutamente a instrução mais simples como usar novo otimizador não-exaustiva neste caso CMA-ES.1 Abra sua fórmula no Editor de Fórmula. Única linha no topo de sua formula. OptimizerSetEngine cmae você também pode usar spso ou trib here.3 Opcional Selecione seu alvo de otimização em Análise Automática, Configurações, Walk-Forward guia, otimização alvo campo Se você pular esta etapa otimizará para CAR MDD composto anual retorno dividido pelo máximo drawdown. Now se você executar a otimização usando esta fórmula, ele vai usar novo evolutivo não-exhaustive CMA-ES otimizador. Como ele funciona. A otimização é o processo de encontrar min Imum ou máximo de determinada função Qualquer sistema de negociação pode ser considerado como uma função de certo número de argumentos As entradas são parâmetros e dados de cotação a saída é o seu alvo de otimização dizer CAR MDD E você está procurando máximo de determinada função. Alguns de otimização inteligente Os algoritmos são baseados no comportamento animal da natureza - algoritmo de PSO, ou processo biológico - Algoritmos genéticos, e alguns são baseados em conceitos matemáticos derivados por seres humanos - CMA-ES. Estes algoritmos são usados ​​em muitas áreas diferentes, incluindo finanças Entre PSO finanças ou CMA - ES financiar no Google e você vai encontrar um monte de info. Non-exaustiva ou métodos inteligentes vai encontrar global ou local óptimo O objetivo é, naturalmente, para encontrar um global, mas se houver um único pico afiado de combinações de parâmetros zilhões, Métodos exaustivos podem não conseguir encontrar este único pico, mas tomando-o forma perspecive do comerciante, encontrando o único pico afiado é inútil para negociar porque esse resultado seria instável demasiado frágil e n Ot replicável em negociação real Em processo de otimização estamos procurando bastante regiões de platô com parâmetros estáveis ​​e esta é a área onde os métodos inteligentes brilham. Quanto ao algoritmo usado pela pesquisa não exaustiva, parece o seguinte. O otimizador gera alguma partida normalmente aleatória A população de conjuntos de parâmetros b backtest é realizada por AmiBroker para cada conjunto de parâmetros da população c os resultados de backtests são avaliados de acordo com a lógica do algoritmo e nova população é gerada com base na evolução dos resultados, E vá para a etapa b até que os critérios de parada sejam atendidos. Os critérios de parada de exemplo podem incluir um alcance de iterações máximas especificadas b parar se o intervalo de melhores valores objetivos das últimas gerações X é zero c parar se adicionar 0 1 vetor de desvio padrão em qualquer eixo principal Direção não altera o valor do valor objetivo d others. To usar qualquer otimizador inteligente não-exaustiva em AmiBroker você precisa especificar o engin otimizador E você deseja usar na fórmula AFL usando a função OptimizerSetEngine. A função seleciona o mecanismo de otimização externo definido pelo nome AmiBroker atualmente é fornecido com 3 motores Padrão Particle Swarm Optimizer spso, Tribes trib, e CMA-ES cmae - os nomes em chaves devem ser Usado em chamadas OptimizerSetEngine. Além de selecionar otimizador de motor que você pode querer definir alguns dos seus parâmetros internos Para fazê-lo usar OptimizerSetOption função. OptimizerSetOption nome, função de valor. A função definir parâmetros adicionais para motor de otimização externo Os parâmetros são dependentes do motor Todos Três otimizadores fornecidos com o AmiBroker SPSO, Trib, CMAE suportam dois parâmetros Executando o número de execuções e MaxEval testes de avaliação máxima por execução única O comportamento de cada parâmetro é dependente do motor, então os mesmos valores podem e normalmente renderão resultados diferentes com diferentes motores usados. A diferença entre Runs e MaxEval é a seguinte avaliação ou teste é único backtest ou avaliação N de valor de função objetivo RUN é uma execução completa do algoritmo encontrar o melhor valor - geralmente envolvendo muitas avaliações de testes. Cada executar simplesmente RESTAURAR todo o processo de otimização a partir do novo início nova população inicial aleatória Portanto, cada execução pode levar a encontrar diferentes locais min max Se não encontrar global Um parâmetro So Runs define o número de corridas de algoritmo subsequentes MaxEval é o número máximo de bactests de avaliações em qualquer run. If único o problema é relativamente simples e 1000 testes são suficientes para encontrar global max, 5x1000 é mais provável Encontrar máximo global porque há menos chances de ser preso no máximo local, como subseqüentes será iniciado a partir de diferentes inicial random population. Choosing valores de parâmetros pode ser complicado Depende do problema em teste, sua complexidade, etc, etc Qualquer estocástico não-exaustiva Método não lhe dá garantia de encontrar global min max, independentemente do número de testes se for menor do que exaustiva A resposta mais fácil é Para especificar como grande número de testes como é razoável para você em termos de tempo necessário para completar Outro conselho simples é multiplicar por 10 o número de testes com a adição de nova dimensão Isso pode levar a superestimar o número de testes necessários, mas é bastante Seguros Os motores enviados são projetados para ser simples de usar, portanto, os valores automáticos padrão razoável são usados ​​para otimização pode ser normalmente executado sem especificar qualquer coisa aceitando defaults. It é importante entender que todos os métodos de otimização inteligentes funcionam melhor em espaços de parâmetro contínuo e relativamente bom objetivo Funções Se o espaço de parâmetros é discreto algoritmos evolutivos podem ter dificuldade em encontrar o valor ideal É especialmente verdadeiro para binário on off parâmetros - eles não são adequados para qualquer método de pesquisa que usa o gradiente de mudança de função objetivo como a maioria dos métodos inteligentes fazer Se o seu sistema de negociação contém muitos Parâmetros binários, você não deve usar otimizador inteligente diretamente neles. Em vez disso, tente otimizar Somente parâmetros contínuos que usam o optimizer esperto, e comuta parâmetros binários manualmente ou através do script externo. SPOSO - Padrão Particle Swarm Optimizer. Standard Particle Swarm Optimizer é baseado no código SPSO2007 que é suposto produzir bons resultados desde que os parâmetros corretos, ou seja, Runs, MaxEval são fornecidos Para o problema específico Picking opções corretas para o otimizador PSO pode ser complicado, portanto, os resultados podem variar significativamente de caso para caso. Vem com os códigos de fonte cheios dentro da subpasta de ADK. Código do exemplo para o optimizer padrão do enxame da partícula que encontra o valor o melhor em 1000 testes dentro do espaço da busca de 10000 combinações. OptimizerSetEngine spso OptimizerSetOption Funciona, OptimizerSetOption MaxEval, 1000.sl Optimize s, 26, 1 fa Otimizar f, 12, 1, 100, 1.Comprar Cross MACD fa, sl, 0 Vender Cross 0, MACD fa, sl. TRIBES - Parâmetro Adaptativo sem Particle Swarm Optimizer. Tribes é adaptativo, parâmetro-menos versão de PSO Otimizador não-exaustivo de otimização de enxame de partículas Para o fundo científico ver. Em teoria, ele deve executar melhor do que PSO regular, porque ele pode ajustar automaticamente os tamanhos de enxame e estratégia de algoritmo para o problema que está sendo resolvido. Prática mostra que seu desempenho é bastante semelhante ao PSO. O plugin implementa Tribes-D ie variante sem dimensão Baseado em por Maurice Clerc Códigos fonte originais usados ​​com permissão do autor. Vem com código fonte completo dentro da pasta ADK. Parâmetros suportados MaxEval - número máximo de avaliações backtests por padrão de execução 1000.Você deve aumentar o número de avaliações com número crescente de dimensões número de parâmetros de otimização O padrão 1000 é bom para 2 ou máximo 3 dimensões. Runs - número de execuções reinicia padrão 5 Você pode deixar o número de execuções no valor padrão de 5.O número padrão de execuções ou reinicializações é definido como 5.Para usar otimizador Tribes, basta adicionar uma linha ao seu código. OptimizerSetOption MaxEval, 5000 5000 avaliações max. CMA-ES - Covariance Matrix Adaptação Estratégia Evolutiva Optimizer. CMA-ES Covariance Matrix Adaptação Estratégia Evolutiva é avançado otimizador não-exaustiva Para o fundo científico ver De acordo com benchmarks científicos supera nove outras estratégias evolutivas mais populares como PSO, evolução genética e diferencial. O plugin implementa a variante global de pesquisa com vários reinícios com pop crescente Ulation tamanho vem com código fonte completo dentro ADK folder. By número padrão de execuções ou reinicia é definido como 5 É aconselhável deixar o número padrão de reinicializações. Você pode variá-lo usando OptimizerSetOption Runs, N chamada, onde N deve estar no intervalo 1 10 Especificar mais de 10 execuções não é recomendado, embora seja possível Note que cada execução usa DUAS vezes o tamanho da população da execução anterior para que ele cresça exponencialmente Portanto, com 10 execuções você acaba com a população 2 10 maior 1024 vezes que a primeira execução. É outro parâmetro MaxEval O valor padrão é ZERO o que significa que o plugin irá calcular automaticamente MaxEval necessário É aconselhável não definir MaxEval por si mesmo como padrão funciona bem. O algoritmo é inteligente o suficiente para minimizar o número de avaliações necessárias e converge muito rápido Ao ponto da solução, tão frequentemente encontra soluções mais rapidamente do que outras estratégias. É normal que o plugin pulará algumas etapas das avaliações, se detecta que a solução foi encontrada, para ela E você não deve se surpreender que a barra de progresso de otimização pode se mover muito rápido em alguns pontos O plugin também tem capacidade de aumentar o número de etapas acima do valor inicialmente estimado se for necessário para encontrar a solução Devido à sua natureza adaptativa, Ou o número de etapas exibido pelo diálogo de progresso é apenas melhor adivinhar no momento e pode variar durante o curso de otimização. Para usar otimizador CMA-ES, você só precisa adicionar uma linha ao seu código. Isso irá executar a otimização com configurações padrão que Estão bem para a maioria dos casos. Deve-se notar, como é o caso com muitos algoritmos de busca de espaço contínuo, que o parâmetro de etapa decrescente em Otimizar chamadas de funciton não afeta significativamente os tempos de otimização. A única coisa que importa é a dimensão do problema, Número de diferentes parâmetros número de otimizar chamadas de função O número de passos por parâmetro pode ser definido sem afetar o tempo de otimização, então use a resolução mais fina que você deseja Em theor Y o algoritmo deve ser capaz de encontrar solução em no máximo 900 N 3 N 3 backtests onde N é a dimensão Na prática, converge um LOT mais rápido Por exemplo, a solução em 3 N espaço de parâmetro tridimensional dizer 100 100 100 1 milhão etapas exaustivas pode Pode ser encontrado em tão pouco como 500-900 CMA-ES. Multi-threaded otimização individual. Iniciando a partir de AmiBroker 5 70, além de multithreading símbolo múltiplo você pode executar multi-threaded único símbolo de otimização Para acessar esta funcionalidade, clique em drop Se para baixo ao lado do botão Optimize na janela New Analysis e selecione Individual Optimize. Individual Optimize usará todos os núcleos de processador disponíveis para realizar a otimização de símbolo único, tornando-a muito mais rápida do que a otimização regular. No modo de símbolo atual, realizará a otimização em um símbolo Em todos os símbolos e modos de filtro irá processar todos os símbolos sequencialmente, isto é, primeira otimização completa para o primeiro símbolo, então otimização no segundo símbolo, etc. M backtester não é suportado ainda 2 motores de otimização inteligente não são suportados - otimização apenas otimização obras. Eventualmente, podemos nos livrar da limitação 1 - quando AmiBroker é alterado para backtester personalizado não usa OLE mais Mas 2 é provavelmente aqui para ficar por muito tempo. Melhorar os sistemas de negociação técnica usando um novo algoritmo genético baseado em MATLAB procedure. Recent estudos nos mercados financeiros sugerem que a análise técnica pode ser uma ferramenta muito útil na previsão da tendência Sistemas de comércio são amplamente utilizados para a avaliação do mercado no entanto, otimização de parâmetros destes sistemas tem Atraiu pouco interesse Neste artigo, para explorar o poder potencial do comércio digital, apresentamos uma nova ferramenta MATLAB baseada em algoritmos genéticos a ferramenta especializada em otimização de parâmetros de regras técnicas Ele usa o poder de algoritmos genéticos para gerar soluções rápidas e eficientes em reais Termos de negociação A nossa ferramenta foi testada extensivamente sobre dados históricos de um fundo UBS que investe em mercados emergentes K através do nosso sistema técnico específico Os resultados mostram que o nosso GATradeTool proposto supera as ferramentas de software comumente utilizadas e não adaptativas no que diz respeito à estabilidade do retorno e economia de tempo durante todo o período de amostragem. No entanto, Qualidade de soluções. Mercados financeiros. Algoritmos genéticos. Regras técnicas 1 Introdução. Os comerciantes e os analistas de investimento de hoje requerem ferramentas rápidas e eficientes em um mercado financeiro impiedoso As batalhas em negociar são agora principalmente travadas em velocidade de computador O desenvolvimento de tecnologia de software nova eo MATLAB fornece a base para resolver problemas financeiros difíceis em tempo real MATLAB s built-in built-in funcionalidade matemática e financeira, o fato de que é tanto uma linguagem de programação interpretada e compilada e sua independência plataforma torná-lo bem adequado para Desenvolvimento de aplicações financeiras. A evidência sobre os retornos Incluindo estratégias de impulso, por exemplo 14 15 16 16 25 20, regras de média móvel e outros sistemas de comércio 6 2 9 24 pode apoiar a importância da análise técnica. No entanto, a maioria destes estudos têm ignorado a questão da otimização de parâmetro, deixando-os abertos À crítica de dados snooping ea possibilidade de viés de sobrevivência 7 17 8 Tradicionalmente os pesquisadores usaram especificação ad hoc de regras de negociação Eles usam uma configuração popular padrão ou aleatoriamente experimentar alguns parâmetros diferentes e selecionar o melhor com base em critérios de retorno principalmente. Papadamou e Stephanides 23 implementou uma nova caixa de ferramentas baseada em MATLAB para o comércio técnico assistido por computador que incluiu um procedimento para problemas de otimização de parâmetros No entanto, o ponto fraco de seu procedimento de otimização é o tempo a função objetivo, por exemplo, lucro isn ta simples quadrado função de erro, A iteração de otimização passa pelos dados, gera sinais de negociação, calcula lucros, Etc Quando os conjuntos de dados são grandes e você gostaria de reoptimize seu sistema com freqüência e você precisa de uma solução o mais rápido possível, em seguida, tentar todas as soluções possíveis para obter o melhor seria uma tarefa muito tediosa. Algoritmos genéticos GAs são mais adequados Desde que realizam buscas aleatórias em uma maneira estruturada e convergem muito rapidamente em populações de soluções quase ótimas O GA lhe dará uma população ajustada de soluções boas Os analistas estão interessados ​​em obter algumas soluções boas o mais rápido possível em vez da melhor solução globalmente The Globalmente a melhor solução existe, mas é altamente improvável que ela continue a ser a melhor. O objetivo deste estudo é mostrar como algoritmos genéticos, uma classe de algoritmos em computação evolutiva, podem ser empregados para melhorar o desempenho ea Eficiência de sistemas de negociação informatizados Não é o propósito aqui fornecer justificação teórica ou empírica para a análise técnica Eu demonstro nossa abordagem em uma parte Este trabalho está organizado da seguinte forma: O trabalho anterior é apresentado na Seção 2 O conjunto de dados ea nossa metodologia são descritos na Seção 3 Os resultados empíricos são discutidos na Seção 4 Conclusões a seguir Seção 5.2 Trabalhos prévios. Um grande corpo de trabalho GA na área de ciência da computação e engenharia, mas pouco trabalho tem sido feito no que diz respeito a áreas relacionadas com negócios Latterly, tem havido um crescente interesse no uso GA na economia financeira, mas até agora tem havido pouca pesquisa sobre comércio automatizado. Para nosso conhecimento, o primeiro artigo publicado vinculando algoritmos genéticos a investimentos foi de Bauer e Liepins 4 Bauer 5 em seu livro Algoritmos Genéticos e Estratégias de Investimento oferecido orientações práticas sobre como GAs pode ser usado para desenvolver estratégias de negociação atraente com base em informações fundamentais Essas técnicas podem ser Facilmente alargado para incluir outros tipos de informação, tais como técnicas e De acordo com Allen e Karjalainen 1 algoritmo genético é um método apropriado para descobrir regras de negociação técnica Fern ndez-Rodr guez et al 11 por adotar a otimização de algoritmos genéticos em uma regra de negociação simples fornecer evidências para o uso bem sucedido de GAs Da Bolsa de Valores de Madri Alguns outros estudos interessados ​​são aqueles de Mahfoud e Mani 18 que apresentaram um novo sistema baseado em algoritmos genéticos e aplicaram-na à tarefa de prever os desempenhos futuros de ações individuais por Neely e cols. 21 e por Oussaidene et al 22 que aplicou a programação genética à previsão de câmbio e relatou algum sucesso. Uma das complicações na otimização GA é que o usuário deve definir um conjunto de parâmetros, como a taxa de cruzamento, tamanho da população e taxa de mutação De acordo com De Jong 10 que estudou genética Algoritmos em otimização de função bom desempenho GA requer alta probabilidade de crossover inversamente proporcional ao tamanho da população e um mo O tamanho da população de derate Goldberg 12 e Markellos 19 sugerem que um conjunto de parâmetros que funciona bem em muitos problemas é um parâmetro de cruzamento 0 6, tamanho de população 30 e parâmetro de mutação 0 0333 Bauer 4 realizou uma série de simulações sobre problemas de otimização financeira e confirmou a validade Das sugestões de Goldberg No presente estudo, realizaremos um estudo de simulação limitado, testando várias configurações de parâmetros para o sistema de negociação escolhido. Também forneceremos evidências para o GA proposto comparando nossa ferramenta com outras ferramentas de software.7 Tipos de robustez de negociação Construir robôs Que o tempo todas as tempestades. Construindo o robô invencível. Então você ouviu falar sobre como os computadores vão governar o mundo comercial, como robôs inteligentes fazem milhões nos mercados e agora você quer construir seu robô de negociação owb todo-poderoso que pode conquistar todos Bem, Este artigo não promete a fórmula mágica ou o santo graal a seu robô invencível, mas é como próximo como começa. Cepts mencionados aqui não se aplica a negociação de alta freqüência comercial em milissegundos. Make seus robôs inteligentes, mas não muito inteligente. Que significa tempo para todas as tempestades. Para nossos sistemas de negociação para o tempo todas as tempestades, aka permanecer eficaz em mercado diferente Condições, eles precisam se adaptar ao mercado Isso envolve lógica de negociação que são eficazes em diferentes períodos, backtesting quadros que minimizam preconceitos e regras que não são demasiado rígidos. Esses critérios podem ser resumidos em uma palavra Robustness. What é robustez. Definição oficial de robustez Na economia, a robustez é a capacidade de um sistema de negociação financeira permanecer eficaz sob diferentes mercados e condições de mercado diferentes, ou a capacidade de um modelo econômico para permanecer válido sob diferentes pressupostos, parâmetros e condições iniciais. Um sistema de negociação é robusto se puder permanecer eficaz em mudar as condições de mercado. Codificação, teste e avaliação Robôs de negociação de hoje em dia é barato. Tipos de robustez. Robustez parece ser uma palavra usada em demasia Muitas pessoas falam sobre robustez em um sistema de negociação sem referência específica para único tipo de robustez Existem muitos tipos de robustez, este artigo irá falar sobre o principal 7.Period Robustness. Seasonal Robustness. Timeframe Robustness. Instrument Robustness. Optimization Robustness. Parameter Robustness. Portfolio Robustness. Period Robustness. Definition Um sistema de negociação é robusto em todos os períodos, se ele pode permanecer eficaz em diferentes períodos de mercado. Os períodos de mercado podem ser caracterizados em 2 tipos Generic e Strategic. Generic Market Periods. Figure 1 Seis Períodos de Mercado Genéricos. A Figura 1 mostra-nos os seis principais períodos de mercado genérico Neste caso, estamos analisando o desempenho dos nossos sistemas de negociação nestes seis períodos. No entanto, Algumas tabelas genéricas do período de mercado são 5 por 5 ou maior.5 por 5 eixo Y Volatilidade Muito Baixa, Volatilidade Baixa, Neutro, Alta Volatilidade, V Ery High Volatility.5 por 5 eixo X Forte Uptrend, Uptrend, Ranging, Downtrend, Forte Downtrend. The classificação 5 por 5 é apenas uma variação do original 2 por 3, mas não há nada de errado com o 5 por 5 ou qualquer maior Classificação. Se o nosso sistema de negociação é eficaz em todos os 6 períodos básicos, isso significa que é período robust. Strategic Market Periods. Strategic períodos de mercado são definidos pelo comerciante Isso depende de condições específicas que influenciam fortemente o ativo que você está negociando Claro, Estas condições específicas variam para diferentes ativos. Por exemplo, se estamos negociando EURUSD, a política monetária do Federal Reserve dos EUA irá influenciar fortemente a nossa negociação Por isso, vamos analisar 2 períodos de mercado estratégicos 1 Fed Easing 2 Fed Tightening Se você está negociando ações, O exemplo seria 1 Justo antes da liberação dos lucros 2 Logo após a liberação dos lucros. A aplicação a negociar. Isto significa que se meu sistema negociando não for período robusto, é unprofitable. That é incorreto Há p Lenty de sistemas de negociação que são projetados para capturar uma ineficiência de mercado específico Nosso objetivo aqui é entender as características do nosso sistema de negociação s para que saibamos como e quando implantá-los. Seasonal Robustness. Definition Um sistema comercial é sazonalmente robusto se é capaz de Permanecer eficaz apesar dos efeitos sazonais. A robustez sazonal pode ser considerada como um subconjunto da robustez do período. Um efeito sazonal é toda a anomalia de mercado ou efeito econômico que pareça ser relacionado ao calendário Nós dizemos que existe efeitos sazonais no mercado se houver uns repetitivos Comportamento nos mercados ao longo do tempo Existem cinco principais tipos de efeitos sazonais. Intra-Dia Efeito Comportamento específico dos mercados em determinados momentos do dia. Efeito diário Comportamento específico dos mercados em determinados dias da semana. Efeito do mês Comportamento específico dos mercados em Determinados meses do ano. Quarter Effect Comportamento específico dos mercados em uma base trimestral. Efeito Multi-year O termo às vezes inclui multi-ano e Como o ciclo decenal de dez anos. Na maioria dos casos, os efeitos sazonais não são profecias auto-realizáveis. São criados pelos fundamentos do mercado.1 Os mercados de Forex são mais ativos durante certas horas do dia por causa das sobreposições de mercado global.2 Janeiro Effect exists because of tax reducing reasons.3 Markets tend to be quieter on the earlier half of the first Friday of every month due to Non-Farm Payrolls. Figure 2 Examining the January Effect Credits. Application to Trading. Why don t we exploit this recurring inefficiency It is definitely possible, but there are several reasons this could be difficult. Timing and extent of seasonal effects are unstable. Market participants are constantly trying to exploit seasonal effects These actions influence the extent and behaviour of the seasonal effects Therefore, this creates a dynamic situation where the seasonal effects are constantly changing. Cost of trade is too high. The seasonal effect could exist because the cost to exploit the effect is too high The high cost acts as a natural barrier to protect the seasonal effects. We don t believe the market is completely efficient, but we believe it is efficient to a certain extent In many cases, it is difficult to exploit a seasonal effect because the efficiency is priced in For instance, you may want to buy a straddle an option structure that gains in value when volatility increases during Non-Farm Payroll because you expect higher volatility However, the sellers of the straddle have factored in the high volatility and thus priced this into the straddle price option premiums. Timeframe Robustness. Definition A trading system is timeframe robust if it is able to stay effective when trading in different timeframes. Timeframe refers to our candlestick period 1min, 5min, 15min, 1hour, Daily etc Our trading system is timeframe robust if its underlying trading strategy is effective in different timeframes. We need to understand timeframe robustness in two types of market conditions.1 Our a sset behaves like a fractal across timeframes.2 No fractal behaviour. Scenario 1 Our asset behaves like a fractal across timeframes. No we are not referring to the candlestick pattern when we talk about Fractals. Official Definition of Fractals A fractal is a natural phenomenon or a mathematical set that exhibits a repeating pattern that displays at every scale If the replication is exactly the same at every scale, it is called a self-similar pattern. To simplify it A fractal is a pattern that repeats itself in different visuals or time scales. Figure 3 Fractals in different timeframes. As we zoom into the lower timeframes, we see that the shapes characteristics of the asset remains the same. Our trading system will always be timeframe robust when it is trading an asset that behaves as a fractal across timeframe If the market behaves in the same manner at every timeframe, there should not be any difference in our trading system s behaviour. Scenario 2 No fractal behaviour. A general rule of thu mb is that noise volatility increases as we go to the lower timeframe Our trading system will be timeframe robust here if its underlying logic is effective in spite of the different noise levels and market behaviour at different timeframes. Application to Trading. If our trading system is timeframe robust, it works at every timeframe However, this does not mean that we remain indifferent to the timeframe we trade. We should trade on lower timeframe This will maximise the number of trading opportunities per time Imagine averaging 1 trade per 5 bars If you trade on Daily timeframe, you will fire 52 trades a year 260 weekdays 5 If you trade on 1 Hourly timeframe, you can fire 1248 260 24 5 trades a year Hence, your profit will be 24 times higher without considering the effects of compounding. Should we trade on the lowest possible timeframe. Following the logic stated above, if we should trade on the lowest possible timeframe 1min for MT4 , we should be massively profitable right Sadly and uns urprisingly, no. It is unlikely for a trading system to be perfectly timeframe robust It is unlikely for an asset to behave in a perfect fractal manner As we go to lower timeframes, the noise increases The asset s behaviour becomes more unpredictable due to real-time influences from current events, market microstructure and speculation by market participants Therefore, we should choose a timeframe that balances noise reduction and profit maximisation. If our trading system is not timeframe robust, we need to understand which timeframe is most suitable for our trading system in different market conditions. Instrument Robustness. Definition A trading system is robust across instruments assets if it can remain effective across different instruments. A trading system is instrument robust if it performs as expected across different assets This means that the trading system s underlying trading logic is capturing an inefficiency that exist in multiple assets. Application to Trading. Instrument robu stness is not a gauge of a trading system s performance In fact, most trading systems are not instrument robust Trading systems are designed to capture specific market inefficiencies and these inefficiencies tend to be instrument specific Thus, it is not unusual that most trading systems are not instrument robust. Instead of aiming for instrument robustness, we should understand how our trading systems work in different assets This will allow us to discover common inefficiencies in different assets and deploy our portfolio of trading systems more effectively. Optimisation Robustness. Definition A trading system is robust in optimisation if the trading system objective function is maximised while minimising curve fitting. Before we explain in detail what Optimisation Robustness is, let s briefly understand what optimisation, objective function and curve fitting are. Optimisation The process where we adjust the structure and rules of a trading system to maximise or minimise its objective func tion. Objective Function This is the performance output of a backtest that we are trying to maximise or minimise. An easy and lazy way to choose an objective function is to use Net Profit This is rarely a good idea In trading, this output should consist of 3 things reward, consistency and risk. Curve Fitting The process of catering the trading system so closely to historical data that it becomes ineffective in the future. Why Because the future rarely reflects the past. Because the future rarely reflects the past, we need an optimisation process that minimises curve fitting This will increase the odds of success of our trading system A trading system going through such a process can be said to be optimisation robust. Application to Testing. This brings us to our solution The Walk Forward Optimisation. Definition according to Wikipedia. The trading strategy is optimised with in-sample data for a time window in a data series The remainder of the data are reserved for out-of-sample testing A small portion of the reserved data following the in-sample data is tested with the results recorded The in-sample time window is shifted forward by the period covered by the out-of-sample test, and the process repeated At the end, all of the recorded results are used to assess the trading strategy. To translate into simpler words. We optimise our trading system using one period in-sample , and apply the optimised parameters to the next period out-of-sample Repeat The performance of the trading system is collated using all the out-of-sample periods. Figure 4 In-sample and out-of-sample periods.1 Optimise trading system using In-Sample A.2 Test trading system s performance in Out-Sample A.3 Optimise trading system using In-Sample B.4 Test trading system s performance in Out-Sample B.5 Repeat for Period C to E.6 We will evaluate the trading system s performance in Out-Sample A to E. The aim of this process is to examine how will our trading system perform when executed in unknown territory out-of - sample. Parameter Robustness. Definition A trading system is parameter robust if its performance does not change drastically due to slight change in parameter values. If the underlying trading logic is sound, changing the parameter values slightly should not significantly affect its performance If the performance changes drastically, the trading system exhibits signs of curve fitting. Application to Testing. The results of an optimisation can be viewed in an optimisation surface parameter space if we are only optimising two parameters The x-axis and y-axis represents our two parameters The z-axis represents our objective function. Figure 5 Optimisation Surface with spiky peaks. Figure 6 Optimisation Surface with flat hills. The two figures above represents the optimisation surface of a trading system that uses two parameters, a fast moving average and a slow one When we examine this optimisation surface, we prefer flat hills over spiky peaks Flat hills indicate little change in performance eve n if we shift the parameter values slightly. Portfolio Robustness. Definition Portfolio Robustness occurs when a group of trading systems are able to remain effective in different market conditions. Portfolio Robustness and Period Robustness are different as Portfolio Robustness focuses on the complementary effects of separate trading systems Different trading systems have different strengths and weaknesses They can be combined in a way to maximise our objective function of the portfolio in the long run. Application to Trading. For illustration, assume we have two trading systems which are long term profitable but are negatively correlated to each other. Figure 7 Net equity curve of a portfolio of two robots. By combining these two trading systems, we are able to cancel out the risk in their performance and achieve a net long run positive result with significantly lower risk. By applying this concept to a portfolio of different trading systems, we aim to achieve Portfolio Robustness. This artic le serves to briefly introduce the seven main types of robustness However, in order to truly have a good grasp on building great trading systems, you need these three elements Trading System Design, Coding for Algorithmic Trading and Market Knowledge What s next Go Google these topics and get started. AlgoTrading101 is the first comprehensive online course on algorithmic trading Learn the fundamentals of algo trading and put your ideas into action along with more than 10,000 students Learn more about us at AlgoTrading101.This dude runs an algorithmic trading academy with over 13,000 students Click on the Author link above to learn more about him. Post navigation.

No comments:

Post a Comment