понедельник, 14 мая 2018 г.

Estratégia aleatória de comércio florestal


Estratégia de negociação aleatória de floresta
Obter através da App Store Leia esta publicação em nosso aplicativo!
Uso de florestas aleatórias na análise quantitativa de estoques.
Tenho uma pergunta sobre as florestas aleatórias e como elas podem ser utilizadas na negociação? Ouvi que as florestas aleatórias são usadas para a classificação, isso é preciso? Em caso afirmativo, alguém poderia dar um exemplo de que tipo de classificação ele ajuda?
Se não, quais são as florestas aleatórias usadas no Quant finance?
Eu mesmo não usei florestas aleatórias, mas conheço um sujeito que aplicou essa técnica de classificação a algoritmos de aprendizado de máquina aplicados ao reconhecimento de padrões.
Assim, acho que suas vantagens em relação às abordagens de regressão clássicas podem ser aplicadas para discernir padrões em dados financeiros, embora eu tenha a impressão de que ela supere amplamente os dados e, assim, você acabe com o tradeoff clássico que muitos quantos se deparam.
Eu também li que ele é usado pela SEC, onde eles o aplicam em sua busca para analisar padrões de negociação para sinalizar violações de informações privilegiadas.
Recentemente assisti a uma apresentação do primeiro autor do seguinte artigo que nos deu um uso bastante criativo e esclarecedor (tipo de meta-) de florestas aleatórias em Quant Finance:
por Thomas Wiecki, Andrew Campbell, Justin Lent, Jessica Stauth (tudo quantopian)
Quando as estratégias de negociação automatizadas são desenvolvidas e avaliadas usando backtests em dados de preços históricos, existe uma tendência a se superar ao passado. Usando um conjunto de dados exclusivo de 888 estratégias de negociação algorítmicas desenvolvidas e testadas na plataforma de Quantopian com pelo menos 6 meses de desempenho fora da amostra, estudamos a prevalência e o impacto da superação de backtest. Especificamente, achamos que as métricas de avaliação de backtest comummente relatadas, como a taxa de Sharpe, oferecem pouco valor na previsão do desempenho da amostra (R² & lt; 0,025). Por outro lado, momentos de alta ordem, como volatilidade e rebaixamento máximo, bem como características de construção de portfólio, como hedging, mostram valor preditivo significativo de relevância para os profissionais de finanças quantitativas. Além disso, em consonância com considerações teóricas anteriores, encontramos evidências empíricas de superposição - quanto maior o teste de backtest feito por uma estratégia, maior a discrepância entre o desempenho de backtest e fora da amostra. Finalmente, mostramos que ao treinar classificadores de aprendizado de máquina não lineares em uma variedade de características que descrevem o comportamento de backtest, o desempenho fora da amostra pode ser previsto com uma precisão muito maior (R² = 0,17) em dados de holdout comparados ao uso recursos lineares e univariados. Um portfólio construído com base em previsões de dados de hold-out teve um desempenho significativamente melhor fora da amostra do que um construído a partir de algoritmos com as mais altas taxas de backtest de Sharpe.
Então, o que eles basicamente fizeram foi tirar todos os tipos de algas comerciais de quantos reais e perguntou a velha pergunta de EMH se no desempenho da amostra havia algum poder preditivo para o desempenho da amostra. Eles calcularam todos os tipos de medidas para esses algos e os usaram (e combinações dos mesmos) para prever o desempenho fora da amostra. Em seguida, eles extraíram os recursos mais importantes do modelo de floresta aleatório - a foto a seguir foi tirada do papel (p. 9)
Tal como acontece com muitas tecnologias de aprendizagem de máquinas, você pode executar uma fase de treinamento e teste separada antes de implantá-la ao vivo para a previsão. Tudo o que ele faz é criar uma coleção de árvores de decisão com base nos parâmetros que você fornece - se o campo de saída é um fator, você obtém classificação (um conjunto finito de valores enumerados); Se é numérico, você obtém previsão. Uma abordagem pode ser adicionar uma coluna para que uma mercadoria atinja um determinado nível de lucro dentro de um período de tempo acessível; a floresta aleatória pode então construir uma lógica para correlacionar isso com todas as outras colunas de entrada (como indicadores técnicos, etc.).
Há algum tempo, implementei uma floresta de árvores de decisão fuzzy binária para classificar aplicativos de crédito como um projeto de semestres.
Digamos que uma árvore se pareça com isso:
Os benefícios das técnicas de árvore de decisão em geral são:
Compreensibilidade: Os caminhos da árvore têm uma interpretação direta: "Se a condição C1 e a condição C11, então X". Por exemplo, "se dívida> 0 e renda = = 0, então no_credit". Conhecimento especializado: É possível mudar as árvores com base no conhecimento de fundo. Extensibilidade: É possível incluir outras ferramentas de classificação nos nós, por exemplo, você pode ter uma rede neural que detecta tendências e depois desce a árvore dependendo da saída da rede.
As florestas de árvores Decicion têm benefícios adicionais:
Adaptação: Se o problema se divide em vários domínios, as árvores podem se ajustar à sua região mais de perto. Árvores menores: as árvores podem ser restritas a um tamanho muito menor, o que as torna mais fáceis de entender. Informação de confiança: se muitas das árvores no forrest votarem na mesma classificação, isso pode ser visto como uma medida de confiança.
No lado negativo, as florestas podem ser muito mais caras para computar e gerenciar. Além disso, enquanto uma única árvore pode evitar o excesso de uso usando técnicas de poda padrão, não parece haver concordância, que é a melhor abordagem para forrests, ainda.
Qualquer aplicação de técnicas de aprendizado de máquina, essa abordagem é tão boa quanto os dados e os indicadores usados ​​para treiná-la.
Artigos interessantes incluem.
Poderia ajudar com coisas como detecção de fraudes, análise de probabilidade de falência, risco de inadimplência, aprendizado não supervisionado para fins qualitativos / descritivos, ou para uma análise supervisionada puramente retroativa sobre retornos novamente para propósitos descritivos / compreensivos (variável importante, etc., talvez resposta ao impulso) análise).
Também pode ser bom para prever a volatilidade de baixa frequência, que é bem conhecida por ser fácil de prever; intuitivamente, isso funciona porque é provável que sejam combinações de eventos que causam volatilidade muito alta, o que é difícil de incorporar em uma equação de variância GARCH. Você poderia confiar apenas na floresta para aprender regimes, quebras, etc (considere uma floresta dinâmica).
Para ser mais preciso, as florestas aleatórias trabalham construindo várias árvores usando amostras com substituição dos mesmos dados de treinamento. Cada árvore também é construída usando um subconjunto aleatório dos recursos (atributos). A poda é geralmente feita para cada árvore antes da sua inclusão. Os valores de hipóteses são resultado da média de todas as árvores. Um dos principais usos de florestas aleatórias é a redução da variância. Se o viés for o problema, então um deve usar o aumento (Adaboost).
confira este artigo: "Prever a direção dos preços do mercado de ações usando a floresta aleatória" Luckyson Khaidem Snehanshu Saha Sadeepa Roy Dey, Applied Mathematical Finance.
Estes foram combinados em um único papel que também fala sobre ações específicas das grandes empresas farmacêuticas. Envie-me um e-mail se precisar disso.
Você pode encontrar uma implementação do Excel e VBA de Random Forest usando o open source ALGLIB Libary aqui.

Estratégia de negociação aleatória de floresta
Bandas Bollinger são um dos indicadores técnicos mais populares, com muitos comerciantes que os utilizam tanto para negociar o intervalo quanto para procurar fugas. No entanto, quais recursos e valores você deve realmente estar olhando quando você está usando Bandas Bollinger para negociar?
Neste artigo, usaremos uma floresta aleatória, uma poderosa abordagem de aprendizado de máquina, para descobrir quais os aspectos das Bandas Bollinger são mais importantes para uma estratégia GBP / USD em gráficos de 4 horas.
Bandas de Bollinger.
O Bollinger Bands, uma ferramenta de negociação técnica desenvolvida por John Bollinger no início dos anos 80, fornece uma medida relativa do alcance do mercado. Em tempos de alta volatilidade, o alcance da negociação será naturalmente maior, enquanto em tempos de baixa volatilidade o alcance será menor.
Bollinger Bands é uma combinação de três linhas. A linha do meio é uma média móvel simples (geralmente 20 períodos), com a linha superior sendo 2 desvios padrão do fechamento acima da linha do meio e a linha inferior sendo 2 desvios padrão abaixo da linha do meio.
Uma maior volatilidade levará a desvios padrão maiores e, portanto, uma faixa mais ampla entre as bandas superior e inferior.
Ao usar as Bandas de Bollinger em qualquer tipo de estratégia sistemática, as três linhas diferentes apresentam algumas questões e questões; ou seja, que fator único você deve incluir? Você quer ver onde o preço atual é relativo ao intervalo? Talvez você esteja preocupado apenas com a faixa superior para operações curtas e a banda inferior para operações longas, ou você quer ver a altura total da faixa?
Há um grande número de valores diferentes que você poderia observar e esse processo, conhecido como "seleção de pessoas" no mundo da aprendizagem de máquinas, é incrivelmente importante.
A escolha do recurso correto que contém mais informações relevantes para sua estratégia pode ter um impacto enorme no desempenho de sua estratégia.
Em vez de precisar avaliar essas características, podemos usar uma floresta aleatória, uma poderosa técnica de aprendizado de máquina, para avaliar objetivamente esses recursos para nós.
Florestas aleatórias.
As florestas aleatórias são uma abordagem conjunta baseada no princípio de que um grupo de "aprendizes fracos" pode ser combinado para formar um "aprendiz forte". Florestas aleatórias começam com a construção de um grande número de árvores de decisão individuais.
As árvores de decisão inserem uma entrada no topo da árvore e a enviam para baixo de suas ramificações, onde cada divisão representa níveis variáveis ​​de valores de indicadores. (Para saber mais sobre as árvores de decisão, dê uma olhada no nosso post anterior, no qual usamos uma árvore de decisão para negociar ações do Bank of America.)
Aqui está a árvore de decisão que construímos em um post anterior:
As árvores de decisão individuais são vistas como aprendentes bastante fracos, o que significa que eles podem facilmente superar os dados e ter problemas para generalizar bem os novos dados. Combinados em "florestas" com milhares de "heróis", esses algoritmos simplistas podem formar uma abordagem de modelagem muito poderosa.
O sucesso em uma floresta aleatória é derivado principalmente da capacidade de criar grande quantidade de variabilidade entre as árvores individuais. Isto é conseguido introduzindo um grau de aleatoriedade de duas maneiras diferentes:
Bagging Bagging, abreviação de "agregação de inicialização", significa simplesmente amostrar com substituição. Em vez de usar todo o conjunto de dados disponível para construir cada árvore, o conjunto de dados é amostrado aleatoriamente com cada ponto de dados disponível para ser selecionado novamente. Por exemplo, se fôssemos realizar o ensacamento em um conjunto de treinamento que consistisse nos números de 1 a 10, poderíamos acabar com o seguinte conjunto de dados: 1 3 2 1 5 7 5 5 7 10 Isso nos permite criar um número infinito de conjuntos de dados. todo o mesmo tamanho e derivado do nosso conjunto de dados original. Subconjunto de indicadores Em vez de usar todos os indicadores disponíveis para construir cada árvore, apenas um subconjunto de indicadores escolhido aleatoriamente é usado. Por exemplo, se tivéssemos 5 recursos diferentes que estávamos testando, apenas 3 seriam usados ​​em cada árvore.
A partir dessas duas fontes de aleatoriedade, criamos uma floresta inteira de diversas árvores. Agora, para cada ponto de dados, cada árvore é chamada para fazer uma classificação e uma votação majoritária decide a decisão final.
Uma grande vantagem das florestas aleatórias é que elas são capazes de fornecer uma medida muito robusta do desempenho de cada indicador. Com milhares de árvores cada uma construída com um conjunto de treinamento ensacado diferente e um subconjunto de indicadores, eles contam quais indicadores foram mais importantes para decidir a classe da variável que estamos tentando prever, neste caso, a direção do mercado.
Aproveitamos esta valiosa propriedade de florestas aleatórias para descobrir quais recursos, derivados das Bandas de Bollinger, devemos usar em nossa estratégia.
Criação de recursos.
Primeiro, temos que decidir quais recursos derivar das Bandas Bollinger. Esta é uma área onde você pode ser criativo em criar cálculos e fórmulas sofisticadas, mas por enquanto vamos nos ater a 8 características básicas: Banda Superior - Preço A distância entre a faixa superior do preço atual Banda Média - Preço A distância entre o meio linha, uma média móvel simples de 20 períodos, e o preço atual Banda Inferior - Preço A distância entre a banda inferior o preço atual% B Mede o preço atual relativo às bandas superior e inferior:% B = (Preço Atual - Banda Inferior) / (Banda Superior - Banda Inferior)
Vamos também olhar para a mudança percentual de cada um dos recursos para adicionar um aspecto temporal: Variação percentual (Banda superior - Preço) A variação percentual em um período da distância entre a banda superior eo preço atual. - Preço) A variação percentual em um período da distância entre a faixa do meio e o preço atual Variação percentual (faixa inferior - Preço) A variação percentual em um período da distância entre a faixa inferior e o preço atual Variação percentual (% B ) A variação percentual em um período do valor% B.
Agora que temos nossos 8 recursos, vamos construir nossa floresta aleatória para ver quais recursos devemos usar em nossa estratégia.
Construindo nosso modelo.
Primeiro, vamos instalar os pacotes e importar nosso conjunto de dados (você pode baixar os dados usados ​​aqui):
Antes de podermos construir nossa floresta aleatória, precisamos encontrar o número ideal de indicadores a serem usados ​​para cada árvore individual. Felizmente, o pacote de floresta aleatório que estamos usando pode nos ajudar:
Podemos ver que uma árvore com 2 características (mtry = 2), teve uma taxa de erro de saída (OOB) mais baixa, então iremos com isso para nossa floresta aleatória.
Vejamos como os recursos se acumulam.
A "precisão de diminuição" mede quão pior cada modelo se comporta sem cada recurso e a "redução média Gini" é uma função matemática mais complexa que é uma medida de quão puro é o final de cada ramificação de árvore para cada característica.
Podemos ver imediatamente que a alteração percentual no valor de% B foi o fator mais importante e, em geral, observar a variação percentual nos valores foi melhor do que observar apenas a distância entre o preço e o valor superior, inferior e médio. linhas.
(Devido às duas fontes de aleatoriedade, você pode obter resultados ligeiramente diferentes, mas no geral achei as conclusões consistentes.)
Então agora sabemos quais recursos, baseados nas Bollinger Bands, devemos usar em nossa estratégia de negociação.
Conclusão.
As florestas aleatórias são uma abordagem muito poderosa que geralmente supera os algoritmos mais sofisticados. Eles podem ser usados ​​para classificação (previsão de uma categoria), regressão (previsão de um número) ou com seleção de recursos (como vimos aqui).
A seleção de recursos, ou a decisão sobre quais fatores incluir em sua estratégia, é uma parte extremamente importante da construção de qualquer estratégia e há muitas técnicas de aprendizado de máquina focadas na solução desse problema.
Com o TRAIDE, nós cuidamos do segundo passo: depois de selecionar os recursos para sua estratégia, usamos algoritmos de aprendizado de máquina para encontrar os padrões para você.
Crie sua própria conta aqui e, como sempre, feliz TRAIDING!

Estratégia de negociação aleatória de floresta
O aprendizado de máquina é uma ferramenta poderosa para não só criar novas estratégias (como fazemos no TR AI DE), mas também para melhorar suas estratégias existentes.
Neste artigo, abordaremos o ajuste do tamanho de sua posição usando um algoritmo de floresta aleatória e desativando sua estratégia usando um Modelo oculto de Markov. Você pode copiar e colar o código R para experimentá-lo em suas próprias estratégias. Este artigo pressupõe que você já tenha uma estratégia. Você pode fazer o download do conjunto de dados históricos da minha estratégia aqui. Se você estiver procurando por uma nova estratégia, você pode rapidamente construir uma na TR AI DE e copiar as negociações da mesa de negociação no Dashboard para um csv. Apenas certifique-se de usar o mesmo formato que o csv acima.
Como melhorar o dimensionamento da posição.
O dimensionamento de posição é um aspecto importante, muitas vezes negligenciado, da negociação. Muitos traders consideram o dimensionamento de posição como uma maneira de diminuir o risco de queda sem vê-lo como uma ferramenta para aumentar o desempenho. Embora seja importante não arriscar muito de sua conta total em cada negociação (geralmente em torno de 2%), há maneiras muito melhores do que apenas usar um lote fixo ou porcentagem fixa, o tamanho da posição para cada negociação.
Uma linha lógica de pensamento seria entrar em uma posição maior quando o seu comércio tiver uma probabilidade maior de sucesso e uma posição menor quando você estiver menos seguro sobre o negócio. Usando uma floresta aleatória, um popular algoritmo de aprendizado de máquina, podemos estimar a probabilidade de sucesso para cada comércio e tamanho de acordo (nunca arriscando mais de 2% por comércio, é claro).
Entrei em maior detalhe no uso de uma floresta aleatória para construir uma estratégia Bollinger baseada na banda para o GBP / USD e podemos usar uma abordagem semelhante para nos ajudar a determinar o tamanho ideal da posição.
Dado o meu conjunto de dados de negociações históricas (você pode baixá-lo aqui para brincar com ele mesmo), primeiro classificamos cada negociação em três categorias com base em seu retorno: Ganhar comércios Retorna> = 10 pips Idealmente queremos entrar em posições maiores para estes comércios Negociações neutras Devoluções = -10 pips Podemos usar isso como nosso tamanho de posição padrão Perdendo trocas Retorna.

Estratégia aleatória de comércio florestal
Esse algoritmo usa um classificador de floresta aleatório com um limite para o quanto o preço foi movido (por exemplo, considere apenas y = Verdadeiro se o preço subiu ou desceu x%). Parece suavizar o SPY um pouco, mas claramente não é uma estratégia bem-sucedida. Eu acho que o que ajudaria é olhar para uma carteira de ações e usar um limite mais alto (atualmente usando 25bps). Por exemplo, digitalizando um portfólio de 100 ações para aqueles que atendem & gt; ou & lt; 2%, mas isso exigiria muito mais poder de processamento.
Obrigado por compartilhar Michael! Mantenha-nos informados enquanto continua a trabalhar na lista de tarefas, eu ficarei curioso para ver como ele se junta.
Tenha em mente que este tipo de estratégia não funcionará em negociação ao vivo, porque usa um objeto aleatório. Na negociação ao vivo, exigimos que os algoritmos sejam deterministas. Nesta postagem, você encontrará uma explicação mais detalhada e a maneira como alguém encontrou uma solução alternativa (alerta de spoiler: usando o objeto datetime para obter pseudo-aleatoriedade): quantopian / posts / random-selection-with-ratcheting-price .
O material deste site é fornecido apenas para fins informativos e não constitui uma oferta de venda, uma solicitação de compra ou uma recomendação ou endosso para qualquer segurança ou estratégia, nem constitui uma oferta de prestação de serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece nenhuma opinião em relação à adequação de qualquer segurança ou investimento específico. Nenhuma informação contida neste documento deve ser considerada como uma sugestão para se envolver ou abster-se de qualquer curso de ação relacionado ao investimento, já que nenhuma das empresas atacadas ou nenhuma das suas afiliadas está a comprometer-se a fornecer conselhos de investimento, atuar como conselheiro de qualquer plano ou entidade sujeito a A Lei de Segurança de Renda de Aposentadoria do Empregado de 1974, conforme alterada, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em capacidade fiduciária em relação aos materiais aqui apresentados. Se você é um aposentadorio individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado a Quantopian sobre se qualquer idéia, estratégia, produto ou serviço de investimento descrito aqui pode ser apropriado para suas circunstâncias. Todos os investimentos envolvem risco, incluindo perda de principal. A Quantopian não oferece garantias sobre a precisão ou integridade das opiniões expressas no site. Os pontos de vista estão sujeitos a alterações e podem ter se tornado pouco confiáveis ​​por vários motivos, incluindo mudanças nas condições do mercado ou nas circunstâncias econômicas.
Sim, eu vi que você não pode usar aleatoriamente () em outra postagem e achou o mesmo para Random Forest, obrigado pelo link para a solução alternativa, eu vou dar uma olhada.
Desculpe, algo deu errado. Tente novamente ou contate-nos enviando comentários.
Você enviou um ticket de suporte com sucesso.
Nossa equipe de suporte estará em contato em breve.
O material deste site é fornecido apenas para fins informativos e não constitui uma oferta de venda, uma solicitação de compra ou uma recomendação ou endosso para qualquer segurança ou estratégia, nem constitui uma oferta de prestação de serviços de consultoria de investimento pela Quantopian.
Além disso, o material não oferece nenhuma opinião em relação à adequação de qualquer segurança ou investimento específico. Nenhuma informação contida neste documento deve ser considerada como uma sugestão para se envolver ou abster-se de qualquer curso de ação relacionado ao investimento, já que nenhuma das empresas atacadas ou nenhuma das suas afiliadas está a comprometer-se a fornecer conselhos de investimento, atuar como conselheiro de qualquer plano ou entidade sujeito a A Lei de Segurança de Renda de Aposentadoria do Empregado de 1974, conforme alterada, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em capacidade fiduciária em relação aos materiais aqui apresentados. Se você é um aposentadorio individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado a Quantopian sobre se qualquer idéia, estratégia, produto ou serviço de investimento descrito aqui pode ser apropriado para suas circunstâncias. Todos os investimentos envolvem risco, incluindo perda de principal. A Quantopian não oferece garantias sobre a precisão ou integridade das opiniões expressas no site. Os pontos de vista estão sujeitos a alterações e podem ter se tornado pouco confiáveis ​​por vários motivos, incluindo mudanças nas condições do mercado ou nas circunstâncias econômicas.
O material deste site é fornecido apenas para fins informativos e não constitui uma oferta de venda, uma solicitação de compra ou uma recomendação ou endosso para qualquer segurança ou estratégia, nem constitui uma oferta de prestação de serviços de consultoria de investimento pela Quantopian.
Além disso, o material não oferece nenhuma opinião em relação à adequação de qualquer segurança ou investimento específico. Nenhuma informação contida neste documento deve ser considerada como uma sugestão para se envolver ou abster-se de qualquer curso de ação relacionado ao investimento, já que nenhuma das empresas atacadas ou nenhuma das suas afiliadas está a comprometer-se a fornecer conselhos de investimento, atuar como conselheiro de qualquer plano ou entidade sujeito a A Lei de Segurança de Renda de Aposentadoria do Empregado de 1974, conforme alterada, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em capacidade fiduciária em relação aos materiais aqui apresentados. Se você é um aposentadorio individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado a Quantopian sobre se qualquer idéia, estratégia, produto ou serviço de investimento descrito aqui pode ser apropriado para suas circunstâncias. Todos os investimentos envolvem risco, incluindo perda de principal. A Quantopian não oferece garantias sobre a precisão ou integridade das opiniões expressas no site. Os pontos de vista estão sujeitos a alterações e podem ter se tornado pouco confiáveis ​​por vários motivos, incluindo mudanças nas condições do mercado ou nas circunstâncias econômicas.

Categoria: Forrests aleatórios.
Sistemas de negociação de aprendizado de máquina.
O SPDR S & P 500 ETF (SPY) é um dos produtos ETF amplamente negociados no mercado, com cerca de US $ 200 bilhões em ativos e volume de negócios médio de pouco menos de 200 milhões de ações diariamente. Portanto, a probabilidade de ser capaz de desenvolver um sistema de negociação com dinheiro usando informações publicamente disponíveis pode parecer desproporcional. Então, para nos dar a nós mesmos # 8230;
Técnicas de aprendizado de máquina podem ser usadas para prever direção de mercado? O teste do modelo de 1.000.000.
Durante o ano de 1990, o advento das Redes Neurais desencadeou uma torrente de pesquisas sobre suas aplicações nos mercados financeiros, acompanhado por algumas afirmações bastante extravagantes sobre suas habilidades predicativas. Infelizmente, grande parte da pesquisa provou ser sub-padrão e os resultados ilusórios, seguindo o tópico que foi largamente relegado às arquibancadas, pelo menos em & # 8230;

As florestas aleatórias predizem as tendências.
Introdução.
O objetivo inicial de construir qualquer sistema de negociação é prever o comportamento de um instrumento de mercado, por exemplo, um par de moedas. Os objetivos das previsões podem ser diferentes. Vamos nos limitar a prever tendências, ou, para ser preciso, prever crescimento (posições longas) ou declinar (posições curtas) de cotações de pares de moedas.
Para prever o comportamento cambial, um comerciante atribui alguns indicadores a um gráfico de par de moedas e tenta encontrar um padrão que tenha poder preditivo.
Este artigo considera a seleção automática de padrões e sua avaliação preliminar usando o pacote Rattle, que é uma biblioteca do sistema de análise estatística R.
1. Sobre Rattle.
Vamos usar o R ​​para prever o comportamento dos pares de moedas, o que é ideal para prever os mercados financeiros. Dizendo que, R é principalmente uma linguagem de programação para estatísticos qualificados e está além da compreensão para muitos comerciantes. A complexidade de R é exacerbada pelo fato de que as ferramentas de predição são numerosas e espalhadas por muitos pacotes que fazem a funcionalidade básica de R.
Rattle (a ferramenta analítica R para aprender com facilidade) une um conjunto de pacotes R, que são importantes para o desenvolvimento de sistemas de negociação, mas não são fáceis de usar separadamente por novatos. Não é necessário conhecer e entender R para começar a trabalhar com o Rattle. O resultado de trabalhar com Rattle será código em R, que pode ser usado para desenvolver um sistema comercial real. No entanto, neste estágio, o conhecimento de R será necessário.
Em qualquer caso, Rattle é uma ferramenta insubstituível na fase de criação de um sistema comercial. Permite que mesmo os iniciantes vejam rapidamente os resultados de várias ideias e as avaliem.
Rattle (Williams, 2009) é um software livre com código aberto criado como um pacote, que faz parte do R (R Developing working group, 2011). Como é software livre, o código fonte de Rattle e R está disponível sem limitações. O código-fonte do Rattle é escrito em С e os usuários são permitidos e incentivados a estudar o código, testá-lo e estendê-lo.
2. Descrição dos dados de origem.
Os cálculos realizados neste artigo baseiam-se em um conjunto de dados contendo cotações de seis pares de moedas EURUSD, GBPUSD, USDCHF, USDJPY, EURGBP, USDCAD com preços de fechamento no período Н1 para o período de 10.01 a 11/12/2013. Os dados compreendem mais de 18 000 bar, o que torna o cálculo confiável. O conjunto de dados com base nos pares de moedas acima foi usado para pesquisar padrões que predizem posições longas e curtas.
O conjunto de dados com as cotações iniciais pode ser encontrado no arquivo anexado chamado kot60_110101_131231_UA. txt.
2.1. Criando uma variável de destino.
No primeiro estágio, temos que definir exatamente o que vamos prever. Apesar da simplicidade aparente, selecionar o objetivo correto para a previsão e os dados que vão apresentar esse objetivo como um conjunto de números são fundamentais.
Quanto à idéia de prever uma tendência, ela é baseada no desejo de negociar com uma tendência.
De acordo com a definição de uma "tendência", "uma tendência de alta é quando cada preço sucessivo é maior que o encontrado anteriormente" e é o oposto da tendência de baixa. Então, a necessidade de prever o preço de um par de moedas segue a definição. Se a taxa inicial para EURUSD for 1.3500 e a prevista for 1.3550, então é uma tendência de alta e solicita a compra.
No entanto, as ordens básicas são "comprar" e "vender" enquanto a previsão é para o nível de preços. Por exemplo, o nível de preços é usado nos sistemas de negociação para prever um nível de ruptura. Para implementar a idéia de negociação de tendências, uma comparação de preços adicional deve ser realizada. Aparentemente, estamos prevendo uma coisa diferente do que íamos negociar!
Portanto, se o sistema de negociação segue tendências por design, o modelo precisa prever tendências. O modelo tem que ser treinado para reconhecer tendências, a variável alvo tem que levar apenas dois valores "comprar" e "vender". No formulário de código (categórico), a variável de destino vai aparecer como "1" e "-1".
Há uma diferença fundamental entre os modelos que usam a população dos dados de origem para calcular o preço de um instrumento financeiro e os modelos que associam uma população dos dados de origem a uma classe. Modelos do primeiro tipo pertencem a modelos de regressão e modelos do segundo tipo pertencem aos modelos de classificação.
Modelos preditivos do tipo de regressão são usados ​​para calcular algum valor no futuro. Quando esse futuro chegar, teremos o valor factual para comparar o previsto.
Modelos preditivos do tipo de classificação são usados ​​para calcular a classe na qual uma população de dados de origem recebidos no momento da previsão será afiliada. Duas classes "longa" e "curta" serão assim. Como em qualquer outro modelo de tipo de qualificação, essas duas classes não têm nenhum tamanho especificado. Portanto, a classe "longa" não pode ser comparada à "curta". Embora nós vamos codificar "long" como "1" e "short" como "0" por conveniência, isso não significa que "long" seja maior que "short". Para enfatizar isso, para tais variáveis ​​qualitativas, R e, consequentemente, Rattle apresentam um tipo especializado de variáveis ​​categóricas (nominais).
As posições longas e curtas como variáveis ​​alvo não existem e essa é a principal diferença das variáveis ​​independentes descritas abaixo. Este aspecto concorda com o fato de que vamos prever um futuro que não existe no momento presente no tempo. Podemos desenhar tendências sobre dados históricos, pois conhecemos o futuro em relação ao passado.
Para distinguir tendências em dados históricos, vamos usar o ZigZag. Este é um indicador brilhante para dados históricos e inútil para os dados reais como o último link e às vezes o anterior é redesenhado. Como não há dinâmica nos dados históricos, podemos desenhar tendências muito bonitas com este indicador.
O indicador ZigZag com o parâmetro "distância entre pontos de inversão" igual a 0,0035 dólares foi utilizado para calcular a variável alvo. A Fig. 1 representa o resultado.
Fig. 1. O indicador do ZigZag.
Agora, os valores do indicador devem ser convertidos em um valor categórico onde "long" = 1 e "short" = 0.
O resultado é mostrado na Fig. 2.
Fig. 2. O indicador do ZigZag na forma categórica.
Deixe-nos executar a última operação com a variável alvo. Se deslocarmos o indicador ZigZag para a esquerda, a barra atual corresponderá ao valor futuro do indicador ZigZag. Neste artigo, a mudança é feita por uma barra, que é igual a uma previsão de um passo à frente para os dados usados ​​com uma hora de antecedência.
O deslocamento pode ser feito para um número maior de barras e se correlacionará com uma previsão para um número maior de barras. Essa abordagem difere de outras abordagens preditivas em que o valor anterior pode ser usado para prever vários valores futuros levando a uma soma dos erros de predição.
Modelos destacados neste artigo, bem como modelos de classificação em geral, não acumulam erros. Nos modelos de classificação, a previsão para duas barras à frente tem seu próprio erro de predição não conectado de forma alguma com o erro de previsão para uma barra à frente.
2.2. Criando Variáveis ​​Independentes.
Variáveis ​​independentes ou preditores são chamados assim porque eles vêm para o modelo de fora. São variáveis ​​externas, mensuráveis ​​ou variáveis ​​calculadas com base nessas variáveis ​​externas. Quaisquer dados econômicos e financeiros, incluindo cotações para pares de moedas, são variáveis ​​independentes, pois seus valores são o resultado da atividade dos atores do mercado. Os dados recebidos de indicadores técnicos pertencem à mesma categoria, pois são calculados com base nas cotações.
A seleção de variáveis ​​independentes é tão importante quanto a escolha da variável de destino. Na verdade, é a seleção de variáveis ​​independentes que definem o sucesso da modelagem. A maior parte do tempo gasto no desenvolvimento do modelo é dedicada à análise e seleção de um conjunto de variáveis ​​independentes.
Variáveis ​​do arquivo de origem kot60_110101_131231_UA contendo seis citações de pares de moedas, hora e data, podem ser definidas como preditores.
O tempo e os dados são bastante interessantes do ponto de vista deste método. Sempre houve tentativas de usar o tempo e os dados nos sistemas de negociação. Em nossos modelos, levar em conta alguns dados ocultos sobre a dependência de cotações na hora do dia e no dia da semana pode ser revelado pelos modelos de classificação automaticamente. A única coisa a fazer aqui é converter essas duas variáveis ​​na forma categórica. A hora é tornar-se uma categoria com 24 níveis ea data é tornar-se uma variável categórica com cinco níveis para corresponder ao número de dias da semana.
Além dos preditores de fontes, vamos criar preditores adicionais, o que, na minha opinião, revela existência de tendências nas citações de origem. Vamos usar indicadores bem conhecidos para criar preditores adicionais.
Serão utilizados os seguintes indicadores: 5,10 e 15; MACD (12,26,9), RSI com períodos 14,21,28. Em cima deles, vamos usar incrementos de cotações e médias móveis. Todas essas conversões devem ser aplicadas a todas as seis cotações dos pares de moedas.
O indicador ZigZag será incluído no número de variáveis ​​independentes para propósitos de suporte. Ele não será usado para desenvolver modelos, pois seu valor na barra da extrema direita é desconhecido.
Então, temos 88 variáveis ​​independentes, uma variável alvo e uma variável de serviço (ZigZag). A quantidade de dados para cada uma das variáveis ​​é 18083 barras.
Este conjunto de dados tem a forma do espaço de trabalho R e pode ser encontrado no anexo deste artigo com o nome de TC. RData. Esse conjunto de dados pode ser usado da seguinte maneira:
carregar R; carregar a biblioteca Rattle; guia Arquivo / Espaço de trabalho; encontre o arquivo TC. RData no disco e carregue-o.
3. Análise Inteligente dos Dados da Fonte.
O pacote Rattle oferece um conjunto de ferramentas para processamento de dados preliminar ou inteligente - mineração de dados.
3.1. Entrada e visualização.
Consideremos algumas oportunidades que se tornam disponíveis depois de realizar as ações mencionadas na seção acima.
O resultado pode ser visto na figura representada na Fig. 3.
Fig. 3. Chocalho tela inicial.
O desenvolvimento de um modelo em Rattle ocorre quando nos movemos da guia Data para a guia Log.
A primeira aba do Rattle é Data. De acordo com o nome, esta guia permite carregar dados que podem ser trabalhados no futuro.
Os dois botões Spreadsheets e R Dataset são de particular interesse para nós.
O botão Spreadsheets permite carregar arquivos do Excel. Se o leitor quiser testar suas idéias, ele poderá preparar seu próprio arquivo do Excel e depois experimentar o Rattle.
Para repetir ações descritas neste artigo ou executar algumas ações adicionais com um arquivo contendo dados brutos anexados a este artigo, use o botão Dataset R. Este botão carrega o arquivo no formato R. O arquivo é chamado de "Diretório de Trabalho" ou "Arquivo de Trabalho". Eles têm uma extensão no disco. RData. Este arquivo pode ser enviado para o R e ficará disponível clicando neste botão após ele.
Faça o upload do nosso arquivo preparado e obtenha a parte superior da imagem na Fig. 4 e a parte inferior da imagem na Fig. 5.
Fig. 4. Parte superior do arquivo de origem.
Fig. 5. Parte inferior do arquivo de origem.
3.2. Correlação da Variável de Destino com Variáveis ​​Independentes.
Nota. O botão "Executar" desempenha um papel crucial. A ação é preparada, mas não é executada. Para executar qualquer ação, pressione o botão "Executar". Tem que ser feito toda vez em ações repetidas descritas neste artigo.
A Fig. 4 mostra uma lista de variáveis, suas características e o papel dessas variáveis. Uma vez que não vamos usar o indicador ZigZag nos modelos e não conseguimos fazê-lo de qualquer maneira, vamos marcá-lo como um para ignorar, ou seja, definir para ignorar.
Outras variáveis ​​são usadas como entradas, exceto para o último, que é usado como a variável alvo.
O botão Partição desempenha um papel importante para a fundamentação do nível de confiança para os resultados da modelagem. Usando este botão, o conjunto de dados pode ser dividido em três partes, se necessário. As proporções do conjunto de dados que são utilizadas para treinamento, validação e teste do modelo são especificadas nesta fase.
In the next field the seed for the sensor of pseudorandom numbers is specified. For example, 70% of source data gathered for the training data set is selected from the source data set randomly. As a result, the other two parts of 15% (like in our case) are also random bar sequences.
Therefore, changing Seed from the source data set, one can get an undefined amount of various training and other data sets.
Fig. 6. Correlation of variables.
Find a column with the name ZZ.35 in the received table. The sample shown in the table below was taken from that column.
Table 1. Correlation of Variables.
As we can see, there is quite a long list of variables having a correlation with ZZ.35 less than 0.01. The level of correlation, less than 0.1 does not allow to come to any conclusion about the influence of independent variables on the target variable.
At this stage we are going to note this fact and use it as appropriate after the models have been assessed.
In the classification models, the degree of influence of predictors on the target variable plays a very important role. At a low correlation level, the matching predictor is believed to be the noise in the model, which leads to its retraining. Retraining of the model is when the model starts taking into account details and predictors insignificant for the target variable.
There are no recommendations on the correlation level. Usually, they use the magical number of statistics – 5%. It is incorrect in essence. Removing predictors, which are the noise in the model, leads to the reduction of the prediction error. Removing a predictor that is not the noise in the model, leads to the increase of the prediction error. Therefore the minimum list of predictors useful for the model are established through experiments.
Some models, like support vector machines (SVM), are very sensitive to different scale of predictors, which means the following. For instance, data on the currency pair EURUSD changes within the limit of 0.5, whereas USDJPY changes within a couple of dozen units. To exclude different scale of predictors, they are to be brought to one scale in the Transform tab. It is preferable that fluctuations of predictors happen within the limit of [0-1].
To perform scaling, select Transform/Rescale/Scale [0-1]. After that we tick all variables and press the "Run" button.
3.4. Converting into the Categorical Form.
Conversion into the categorical form allows converting the value of a numerical variable into a factor with several levels. The RSI indicator is the first one to be converted into a multi-level factor. It is believed to show a trend reversal when its values are approaching zero or 100.
To convert values of the RSI indicator into the categorical form, select: Transform/Recode/KMeans. Doing that, set the number of factor levels at 8. Tick all RSI indicators and press "Run".
After setting the ZZ.35 variable to Ignore then we can move on to developing models.
4. General Algorithm of the Classification Model.
The following models are available in Rattle:
model of tree-like classification (Tree); random forest model (forest); boosting trees model (ada); support vector machines model (SVM); generalized linear model (glm); neural network model (NNET).
Despite the fundamental difference between classification models, (we are not talking about only those available in Rattle) all of them have common features described below.
Let us take a training set consisting of strings (in our case the number is 18030), containing values of predictors (88 in our case) and the value of the target variable ("long" and "short").
Any of the classification algorithms address the problem of separating the combinations of predictor values correspondent to "long" from the combinations of predictor values correspondent to "short". This is a stage of training a model.
Then, follows the stage of verifying the model.
As we divided the source data set into three parts, we take another data set and consider combinations of predictors being compared with those received at the training stage. Every combination of predictors is established if it belongs to "short" or "long". Since the verification data set contains those known values, the result is compared with the factual data. The ratio of factual long and short positions to the predicted ones is the prediction error.
If the result does not suit us, we can return to the stage of the intelligent data analysis to improve the result. Unfortunately, the quality of this stage is completely defined by a trader's experience. Changes are made in the source data set and then a model gets developed again.
If we find the results obtained on the training and verification data sets satisfactory, then we verify the model on the test data set, that is the one that has not been used.
The model quality is defined not only by a small prediction error but also by small difference between the values of this error on different data sets. This shows robustness of the model and absence of retraining or as traders call it ultra adjustment.
In this article only a random forest model is going to be looked at in detail.
5. Random Forest Model.
Algorithm of a trader's work is as follows. A set of indicators is added to a quote of a currency pair and a trade decision is made judging the total of the current quotes and indicator data.
In the simplest trading system "Moving Average", they buy if the current price is higher than the moving average and sell if it is below it. They can add additional conditions like data received from the RSI indicator. As a result, a trader gets a decision tree. In the leaves of that tree there are the quotes of the currency pair, values of the moving average and the RSI indicator. The root of the tree contains only two values - "buy" and "sell".
The described process of building a tree was automated in the model of classification trees. As a result, there is only one tree, or, in traders' slang, one pattern.
The algorithm of a single tree is unable to build precise models as diversity leads to instability, which can be seen at building separate decision trees.
A reader can verify this statement themselves using the Tree model in Rattle. This model implements the described algorithm of building a tree.
The idea of the random forest model is in including many classification trees (patterns) in the model, not just one. So, random forest tends to have higher resistance to data changes and the noise (that is variables that have little influence on the target variable).
Randomness used by the random forest algorithm is manifested in the choice both of the rows of the table (observations) and predictors. This randomness defines the significant resistance to noise, outliers and retraining when comparing with a standalone tree-like classifier.
Probability also defines significant computational efficiency. Building a standalone decision tree, the developer of the model can select a random subset of observations available in the training data set. Besides, in every node of the process of building a tree, they consider only a small part of all available variables at establishing the best proportion of splitting a data set. It leads to a significant relaxation of the requirements to the computational performance.
So, the random forest model is a good choice for developing models for a number of reasons. Very often a small preliminary data processing is required as data is not supposed to be normalized and the approach is elastic to outliers. Necessity to select variables can be avoided as the algorithm efficiently chooses own set of variables. As a lot of trees are being built using two levels of randomness (observations and predictors), every tree is an efficient independent model. This model is not prone to retraining on the training data set.
Algorithms of random forests often generate from 100 to 500 trees. When the final model is developed, the decisions made by every tree are integrated by processing the trees as equal. The final decision on an assembly of trees will be the decision on the major part of constituent trees. If 51 trees out of 100 point at "long", then the value of "long" will be accepted, though, with less confidence.
5.2.1. Forming a Sample from a Data Set.
The algorithm of forming a random tree generates many decision trees using bootstrap aggregation or bagging for short for introducing randomness into the process of sample formation. Bootstrap aggregation is an idea of gathering a random sample of observations into a bag. Many bags formed in a random order consist of selected observations received from source observations on the training data set.
Collating to the bags is performed with substitution. It means that every observation has a chance of multiple appearances in a certain bag. The sample size is often the same as the complete data set. Practice shows that two thirds of observations will be included into a bag (with repetitions) and one third will not be taken into account. Every bag of observations is used as a training data set for building a decision tree. The unaccounted observations can be used as an independent sample to assess the result.
5.2.2. Forming the Choice of Predictors.
The second basic element of randomness concerns the choice of predictors for splitting a data set. At every step of creating a separate decision node, i. e. at every splitting point of a tree, a random and usually small set of predictors is selected. Only the predictors selected at the splitting point are considered. For every node in building a tree, they consider a different random set of predictors.
Forming random sets of both data and variables, they receive decision trees with various results depending on data subset. This very change allows treating this assembly of trees as a team of cooperating experts with different level of competency that make the most reliable prediction.
Sample formation also has another meaningful advantage - computation efficiency. Considering only a small part of the total number of predictors when splitting a data set significantly reduces volumes of required computations.
Creating every decision tree, the algorithm of forming a random tree usually does not cut decision trees. A random forest with ultra adjusted trees can develop a very good model, which works well on new data.
5.2.4. Calculation in the Assembly.
When treating many decision trees as one model, every tree is equally important in the final decision making. Simple majority determines the result. That means that 51% of splits and 99% of splits will produce the same class, for example "long".
Calculations by Rattle are partial as the user gets the result in the form of a class. If the model is used in R, results in the form of a class probability become available.
5.3. Developing a Random Forest Model.
To build a model, select Model/Forest. Started calculation of the model will take a couple of minutes for our source data.
I will divide the result of the calculation in several parts and will comment on each of them.
Let us review the results brought on Fig. 7.
Fig. 7. The upper part of the adjustment results of the random forest model.
Some information on this figure should be highlighted.
TREND is a target variable here.
500 trees were generated at building this model. At splitting in every node of the tree, 9 predictors (variables) were used. Besides, buttons Errors and OOB ROC are of special interest to us.
Then follow the prediction errors, which look like:
OOB estimate of error rate: 15.97%
Table 2. Contingency Table of Error Matrix for the Training Set.
It should be interpreted as "Error out of bag is 15.97%".
The obtained prediction error is significant. It is important to figure out how it was obtained or to be precise, if it was obtained "out of bag". Only a part of the training data set was used for developing this model. This model, in its turn, makes 70% of the source data set. Approximately 60% of the training data set was used for building this model and 40% was not used. This 40% of data is called "Out of bag". The prediction error of 15.97% was received on that data.
Contingency table or error matrix is interpreted the following way.
The top row contains predicted short and long positions. The left side column is a column with actual short and long positions, received from the ZigZag indicator for historical data.
The value of 4960 with coordinates (0,0) is a number of correctly predicted short and long positions. The next value of 1163 is the number of short positions predicted as long ones.
The value of 858 with coordinates (1,0) is a number of long positions predicted as short ones. The value of 5677 is the number of correctly predicted long positions.
Then we move on to the results of modeling.
Below are a few rows of the large table comprising all variables of the model. This is a table of importance of variables.
Table 3. Importance of Variables in the Random Forest Model.
There are several assessments of the importance of variables. The word "importance" here reflects the degree of influence of a certain variable on the target variable. The greater the value, the more "important" the variable is.
This table provides data for excluding least significant values from the model. In statistics and in classification in particular, the simpler a model is the better, as long as the model accuracy is not sacrificed.
The Errors button is the last important thing in the Model tab. By pressing it we shall receive Fig.8.
Fig. 8. Dependence of modeling error on the number of trees.
6. Model Efficiency.
Evaluation of the model efficiency is carried out in the Evaluate tab, where Rattle gives access to the set of options for that.
We shall use Error Matrix, as it was previously called Contingency Table, in the list of available options of model efficiency evaluation.
When you move from the Model tab to the Evaluate tab, the last of the created models will be automatically flagged. It matches the general principle of work in Rattle: we create and set up a model and then explore its efficiency in the Evaluate tab.
For the evaluation of a model, the data set for performing the check has to be specified. The next line of options in the Rattle interface is a set of alternative sources of data.
The first four options for Data correspond to splitting the data set specified in the Data tab. The options are Training, Validation, Test and Full (the whole set). Splitting data set into sets of training, validation and testing has already been discussed.
The first option is supposed to validate the model on the training data set. Usually it is not a good idea. The issue with assessing the model on the training data set is that the model was built on this data set. There the model will give a good result as it initially was what we were trying to achieve. The model is designed to be used on previously unknown data.
An approach is required to ensure good performance of the model on new data. At the same time, we obtain an actual rating of the model errors, which reflects the difference between prediction for the model and factual data. This error rating on an unknown data set, not the training one, is the best way to evaluate the model efficiency.
We use the Validation data set for verification of the model efficiency at its creation and setting up. Therefore after the model has been created, its efficiency will be verified on this verification data set. Some setting up options for creating a model can be changed. We compare the new model with the old one with its efficiency based on the verification data set. In this sense, the verification data set is used in the modeling for developing the final model. We, therefore, still have a shifted estimation of our model efficiency if we rely on the verification data set.
The Test data set is the one that was not used in creating the model at all. As soon as we identified "the best" model based on the Training and Verification data set, we can estimate the efficiency of the model on the Test data set. This is the evaluation of expected efficiency for any new data. The fourth option uses the Full data set for assessing the model. Full data set is Training, Verification and Testing data set altogether. This is nothing but curiosity and certainly not an attempt to get precise data.
Another opportunity available as data source delivered through the sample entry. It is available if the Score option is selected as the assessment type. In this case a window for entering additional data will open.
The error matrix will be used for predicting the categorical target variable.
The error matrix shows factual results against the predicted ones. There are two tables. The first one shows quantitative results and the second one shows the results in percent.
The error matrix can be found in the Evaluate tab in Rattle. Pressing "Run" will implement the selected model on the specified data set for predicting the result for every observation in this data set. Then the predictions are compared with factual observations.
Fig. 9 represents the error matrix for the random forest model calculated earlier.
Fig. 9. Result of evaluation of the random forest model.
The figure shows that the average error is 0.167, i. e. 16.7%. At the training stage prediction error was 15.97%. We can consider those values equal.
Let us perform a calculation for the Testing data set. The result is as follows:
Error matrix for the Random Forest model on TC [test] (counts):
Table 4. Error matrix for the random forest model in absolute terms (test data set)
Error matrix for the Random Forest model on TC [test] (proportions):
Table 5. Error matrix for the random forest model in relative terms (Test data set)
Overall error: 0.1654994, Averaged class error: 0.1649244.
Prediction error is 16.4%.
All three figures are approximately equal, which is a sign of a reasonable result of modeling.
Please note that the efficiency of models calculated by Rattle must be checked in the Strategy Tester of МetaТrader 4 or MetaTrader 5. Then it should be tested on a demo-account and real account with small lots. Only after all test runs we can come to final conclusions about the model.
7. Improving the Model.
When we explored correlation of pseudo variable ZZ.35 with predictors, we found out that a significant number of predictors had a weak correlation with the target variable.
Let us delete the predictors that have the correlation coefficient of less than 0.01. To do that, set the relevant predictors to Ignore in the Data tab and repeat calculation of the random forest model in the Model tab.
We get the following result:
prediction error out of bag = 15.77%; prediction error for the Validation data set = 15.67%; prediction error for the Test data set = 15.77%.
Though the error reduced insignificantly, the gap between prediction errors for different data set has decreased. It is a sign of the model stability.
You can keep removing predictors following the correlation table. The model effectiveness can be improved, i. e. the prediction error decreased, using data from the table of importance of predictors that was obtained in calculating the model.
In any case, removing predictors can be done till removing of another predictor leads to deterioration of the model efficiency. You can stop at that point as you have a minimal and most efficient model for a given number of predictors.
8. Using the Model in MetaTrader 4.
In theory, trading using Rattle can be organized the following way. The input data for Rattle in Excel are getting prepared by some outside tools for the period of day and night. Upon closing of the exchange, a trader gets the required prices and puts them into the source file. A few minutes later the forecast for the following day is ready and can be used straight from the opening.
The МetaТrader 4 terminal or its analogue is necessary for the intraday trading.
To organize an automated or semi-automated trading using Rattle, the following constituents are required:
a previously trained model, which was saved as the R workspace; a library of cooperation of the terminal and R; code in R, which passes on every new block of data to the model, gets the result and sends the result of modeling back to the terminal.
Training one of the six models available in Rattle was considered above. The number of classification models available in R is coming up to 150 but Rattle is of no use for them.
The library of interaction of R and the МetaТrader 4 terminal can be found in the CodeBase: mt4R for new MQL4.
Code in R, which corresponds to the trained model is in the journal (the Log tab). All actions taken at the model development get registered in the form of code in R. This is what is to be used in real trading.
Conclusão.
Both novice and experienced traders will find this article useful for preliminary evaluation and selection of a trading system.
Using Rattle, the main intellectual challenge in developing a trading system is the right choice of the target variable and predictors necessary for it. Experienced traders already have knowledge in this sphere and novices will have necessary practice with Rattle.
Traduzido do russo pela MetaQuotes Software Corp.

Комментариев нет:

Отправить комментарий