Discussão do artigo "Florestas Aleatórias na Previsão das Tendências"

 

Novo artigo Florestas Aleatórias na Previsão das Tendências foi publicado:

Este artigo considera o uso do pacote Rattle na busca automática de padrões para prever as posições compradas ou vendidas dos pares de moedas no Forex. Este artigo pode ser útil tanto para novatos quanto para profissionais experientes.

O objetivo inicial da construção de qualquer sistema de negociação é prever o comportamento de um instrumento do mercado, por exemplo, um par de moedas. Os objetivos das previsões podem ser diferentes. Vamos nos limitar apenas com a previsão de tendências, ou para ser mais preciso, prever o crescimento (posições compradas) ou o declínio (posições curtas) das cotações dos pares de moedas.

Para prever o comportamento da moeda, um trader atribui um par de indicadores a um gráfico do par de moeda e tenta encontrar um padrão que possui um poder preditivo.

Este artigo considera a seleção automática dos padrões e a sua avaliação preliminar utilizando o pacote Rattle, que é uma biblioteca do sistema de análise estatística R.

Nós vamos usar o R para prever o comportamento dos pares de moedas, que é ideal para a previsão de mercados financeiros. No entanto, o R é essencialmente uma linguagem de programação para estatísticos qualificados, estando além da compreensão de muitos traders. A complexidade de R é agravada pelo fato de que as ferramentas de previsão são numerosas e espalhadas por vários pacotes que formam a funcionalidade básica do R.

O Rattle (A ferramenta Analítica de R para aprender facilmente) reúne um conjunto de pacotes de R, que são importantes para o desenvolvimento de sistemas de negociação, mas ele não é fácil de se usar separadamente por novatos. Não é necessário saber e entender a linguagem R para começar a trabalhar com o Rattle. O resultado do trabalho com o Rattle será um código em R, que é possível ser utilizado para o desenvolvimento de um sistema real de negociação. No entanto, nesta fase será necessário ter conhecimento de R.

Em qualquer caso, o Rattle é uma ferramenta insubstituível na fase de concepção de um sistema de negociação. Ele permite que até os iniciantes possam ver e avaliar rapidamente os resultados de várias idéias.

Rattle (Williams, 2009) é um software livre com código open source criado como um pacote, que é uma parte do R (R Developing working group, 2011). Uma vez que ele é um software livre, o código fonte de Rattle e R estão disponíveis sem quaisquer limitações. O código fonte de Rattle é escrito em С e os usuários possuem permissão e são encorajados a estudar o código, testá-lo e estendê-lo.

Fig.1. O indicador ZigZag

Autor: СанСаныч Фоменко

 

O primeiro pensamento que me veio à mente ao ler o artigo foi "que tradução de má qualidade".

Pesquisei a origem do autor e descobri que, afinal, não se tratava de uma tradução)))

В качестве инструмента для предсказания поведения валютных пар выберем систему R, которая идеально подходит для задач предсказания на финансовых рынках и, в частности, предсказания поведения валютных пар.

Eu não queria dizer nada de ruim, apenas pensamentos no ouvido. O artigo pode ser bom, pode ser muito bom......

 

Interessado na ideia em si (não conhecia a floresta randômica ). Ferramenta imposta artificialmente. Quero repetir sem ela - não está claramente declarado o que exatamente foi feito, quais vetores de dados são usados. Os parâmetros do ziguezague são omitidos. O público-alvo são os usuários do pacote Rattle? Ou aqueles que escrevem em R? Sem o estudo deles, muitos pontos do artigo são incompreensíveis. As conclusões são confusas - não fica claro no artigo se essa direção é promissora ou não. Seria possível dar exemplos de comércio. Impressão geral - como se tivesse sido escrito para um círculo restrito.

PS. Ao tentar abrir o TC.Rdata a partir do artigo, aparece o seguinte:

Ошибка в sqrt(ncol(crs$dataset)) : 
  нечисловой аргумент для математической функции
Вдобавок: Предупреждение
In rm(crs) : объект 'crs' не найден
 
wmlab:
Interessado na ideia em si (não conhecia a floresta randômica). Ferramenta imposta artificialmente. Quero repetir sem ela - não está claramente declarado o que exatamente foi feito, quais vetores de dados são usados. Os parâmetros do ziguezague são omitidos. O público-alvo são os usuários do pacote Rattle? Ou aqueles que escrevem em R? Sem o estudo deles, muitos pontos do artigo são incompreensíveis. As conclusões são confusas - não fica claro no artigo se essa direção é promissora ou não. Seria possível dar exemplos de comércio. A impressão geral é como se o artigo tivesse sido escrito para um círculo restrito.

Algo que tem muito de exigente. Eu, por exemplo, não sendo um matemático, entendi a essência muito bem, exceto por alguns pontos que deveriam ter sido explicados com mais detalhes.Por exemplo, não entendi muito bem o termo "tree splitting", que aparece várias vezes e não está muito claro o que exatamente significa. E quanto às conclusões, de que conclusões você precisa? "Vá! para as barricadas"? Eu, por exemplo, depois de ler o artigo, percebi que estava inventando uma bicicleta, tentando inventar algoritmos semelhantes por conta própria em vez de usar uma solução pronta.Pelo que entendi, a ideia principal era popularizar o pacote R entre os amadores interessados em estatística (mas não para "manequins"). E deu muito certo, na minha opinião.

 
wmlab:

Interessado na ideia em si (não conhecia a floresta randômica). Ferramenta imposta artificialmente. Quero repetir sem ela - não está claramente declarado o que exatamente foi feito, quais vetores de dados são usados. Os parâmetros do ziguezague são omitidos. O público-alvo são os usuários do pacote Rattle? Ou aqueles que escrevem em R? Sem o estudo deles, muitos pontos do artigo são incompreensíveis. As conclusões são confusas - não fica claro no artigo se essa direção é promissora ou não. Seria possível dar exemplos de comércio. Impressão geral - como se tivesse sido escrito para um círculo restrito.

PS. E ao tentar abrir o TC.Rdata a partir do artigo, é fornecido o seguinte:

Público alvo - usuários do pacote Rattle? Ou aqueles que escrevem na linguagem R? Sem estudá-los, muitos pontos do artigo são incompreensíveis.

Ao usar o Rattle, identifico dois públicos-alvo:

Usuários não treinados em R que podem compor seu próprio arquivo .csv de entrada e criar e avaliar os resultados de 6 modelos, não apenas florestas aleatórias. O principal problema não é o modelo, mas os dados de entrada do modelo. Se você conseguir encontrar os dados iniciais, poderá solicitar a programação. O principal é a ideia, e as técnicas de programação também podem ser aplicadas

PS. E ao tentar abrir o TC.Rdata do artigo, aparece o seguinte:

Verificado novamente, tudo está normal. A sequência de ação é a seguinte:

  • start R
  • guia {File/load workspace
  • em seguida, procure o arquivo TC.RData no arquivo descompactado.
  • Inicie o Rattle
  • guia Data\R Dataset
  • no menu suspenso, procure o nome TC na janela Data Name (Nome dos dados).
  • Clique em "Run" (Executar)

Obtemos a lista de vetores em que você está interessado.

Outro público são os usuários treinados. O Rattle é uma ferramenta bastante conveniente para a seleção de dados iniciais para o modelo. A maior parte do tempo na criação de sistemas de negociação é gasta na seleção dos dados iniciais - a parte mais incerta do trabalho. É nesse ponto que o Rattle é muito útil. Você pode obter uma estimativa final muito rapidamente, sem ter que entrar em construções de modelos matemáticos muito complexos.

Boa sorte, estou pronto para continuar as explicações

 
meat:

Você está apenas sendo minucioso. Eu, por exemplo, não sendo um matemático, entendi a essência muito bem, exceto por alguns pontos que deveriam ter sido explicados com mais detalhes.Por exemplo, não entendi muito bem o termo "tree splitting" (divisão de árvore), ele aparece várias vezes e não está muito claro o que exatamente significa. E quanto às conclusões, de que conclusões você precisa? "Vá! para as barricadas"? Eu, por exemplo, depois de ler o artigo, percebi que estava inventando uma bicicleta, tentando inventar algoritmos semelhantes por conta própria em vez de usar uma solução pronta.Pelo que entendi, a ideia principal era popularizar o pacote R entre os amadores interessados em estatística (mas não para "manequins"). E, na minha opinião, o resultado foi muito bom.

Por exemplo, eu não entendia muito bem o termo "tree splitting" (divisão de árvore)

Pegamos a raiz da árvore - ela está no topo.

Dividimos a raiz e desenhamos duas linhas a partir da raiz - divisão da raiz, depois a mesma ação em cada nível.

Em cada nó da árvore, alguma condição formulada pelo algoritmo é verificada. Por exemplo, se eurusd > 1,35, então, vá para o ramo esquerdo; caso contrário, vá para o ramo direito.

O algoritmo gerou excessivamente 500 árvores desse tipo. Deveria haver 10.000 condições.

Próximo. Na chegada dos valores de todos os preditores - um valor de cada preditor - tenho 88 peças no total, eles são comparados com as árvores e é tomada uma decisão de que esse conjunto específico de 88 valores implica em longo ou curto prazo. Ou seja, um análogo de um padrão, só que muito parecido.

 
faa1947:

Verifiquei novamente e está tudo certo. A sequência é a seguinte:

  • Executar o R
  • guia file/load workspace
  • e procure o arquivo TC.RData no arquivo descompactado.
  • Inicie o Rattle
  • guia Data\R Dataset
  • no menu suspenso, procure o nome TC na janela Data Name (Nome dos dados).
  • Clique em "Run" (Executar)

Obteremos a lista de vetores em que você está interessado.

Obrigado! Agora está claro.

Você poderia explicar a essência desses vetores: ZZ.75, ZZ.35?
O que são os vetores *.dif1, *.dif2, *.dif3? Incrementos? De quê em relação a quê?
Vetores eur, gbp, etc.? - O que são?

E uma pergunta global: por que os dados dos indicadores são adicionados? Não é o mesmo que [x, f1(x), f2(x)]? Estou sugerindo redundância. Você não tentou fornecer apenas os incrementos dos fechamentos?

Agradeço antecipadamente por suas respostas.

 
wmlab:

Obrigado! Agora está claro.

Você poderia explicar a essência desses vetores: ZZ.75, ZZ.35?
O que são os vetores *.dif1, *.dif2, *.dif3? Incrementos? De quê em relação a quê?
Vetores eur, gbp, etc.? - Quais são eles?

E uma pergunta global: por que adicionar dados de indicadores? Não é o mesmo que [x, f1(x), f2(x)]? Estou sugerindo redundância. Você não tentou fornecer apenas os incrementos dos fechamentos?

Agradeço antecipadamente por suas respostas.

Você poderia explicar a essência desses vetores: ZZ.75, ZZ.35?

Esses são ZZs com uma distância mínima de reversão de 75 pips e 35. A variável-alvo TREND é obtida a partir de ZZ.35. Essas variáveis não podem ser usadas no modelo - olhando para o futuro.

O que são os vetores *.dif1, *.dif2, *.dif3? Incrementos? De quê em relação a quê?

O incremento para a barra anterior, a barra anterior (-2) e (-3). A ideia é levar em conta as tendências.

Vetores eur, gbp, etc. - o que são?

Os quocientes eurusd, gbpusd são os primeiros símbolos.

Estou sugerindo redundância. Você já tentou apenas alimentar com os incrementos dos fechamentos?

Já tentei várias coisas. O artigo é uma demonstração de possibilidades e, ao mesmo tempo, de redundância, para que todos possam selecionar suas próprias ideias e tentar. A seleção é feita de forma muito simples: a variável é marcada como Ignorar.

 

Parabéns pelo artigo, SanSanych!

É claro que no R ele seria mais compacto, mas provavelmente deveríamos começar por ele primeiro.

Estou terminando o artigo sobre aprendizagem "profunda". Com seus dados, tentaremos comparar o resultado.

Boa sorte

 

Dei uma olhada no conjunto de dados e ele não está bom. As citações precisam ser descartadas. Ou seja, as primeiras 48 variáveis são removidas. Ficamos com um conjunto de dados com 42 variáveis de entrada e uma variável de destino.

Bem, isso fica a critério do proprietário, cada um escolhe de acordo com seu gosto, experiência, etc. Mas há uma observação sobre o modelo. "O RandomForest é maravilhoso porque não precisa de pré-processamento, nenhum. Ele aceita dados brutos de forma maravilhosa.

Além disso, é claro que o artigo é muito útil.

 
vlad1949:

Parabéns pelo artigo, SanSanych!

É claro que no R ele seria mais compacto, mas provavelmente deveríamos começar por aí.

Estou terminando o artigo sobre aprendizagem "profunda". Com seus dados, tentaremos comparar o resultado.

Boa sorte

Seria muito bom repetir esse seu tópico aqui.

Foi um material muito útil.