Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 2959

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

Você pode me dar algum exemplo de um AO? Eu tinha a impressão de que encontrar um professor era um trabalho por partes e que se prestava à automação.

Você pode...

Você precisa torná-lo o mais simples e reproduzível possível, se houver interesse...

Isso levaria um pouco de tempo.

 
mytarmailS #:

você pode...

Precisamos tornar o exemplo o mais simples e reproduzível possível, se houver interesse...

você precisa de um pouco de tempo

Isso é muito interessante para mim. Minha busca por um professor é um processo longo e doloroso.

 
mytarmailS #:

Seu problema é um problema de otimização, buscando parâmetros desconhecidos.

Aqui está o ÚNICO artigo que você precisa para estudar https://www.mql5.com/ru/articles/2225


Se você quiser ensinar o AMO a maximizar o lucro e minimizar o drawdown:


você precisa

1) criar uma função de adequação, uma função que contará os lucros e as perdas dos sinais de negociação.

2) qualquer algoritmo MO que gere sinais para negociação, para a função de aptidão (p.1)

3) qualquer algoritmo de otimização (genético, enxame de partículas, churn) - que gerará sinais como alvos para o AMO (p.2).


algoritmo como este

1) AO cria um alvo para o AMO

2) O AMO é treinado nesse alvo

3) O AMO cria uma previsão de sinais de negociação

4) os sinais de negociação são avaliados pelo FF e produzem um resultado

5) o resultado do FF é avaliado pelo AO e maximizado/minimizado ainda mais, e assim por diante, em um círculo, até que um resultado aceitável seja obtido.


==========

AO - algoritmo de otimização

AMO - algoritmo de aprendizado de máquina

FF - função de adequação

=========


ps. se quiser trabalhar com o neuronka e não com nenhum AMO, você pode alterar os pesos por meio do AO, sem aprender a segmentação.

Obrigado!

Essa formulação da resposta levou imediatamente à questão da concretização da negociação manual, em que faltam a clareza e a concretude dos sinais, sua variedade e flexibilidade excessiva. Ou seja, há o que pensar.

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

Isso é muito interessante para mim. Minha busca por um professor é um processo longo e doloroso.

Aqui está o código para ensinar a floresta de rendom por meio de AO,

a função de adequação (NOSSO OBJETIVO) é encontrar um crescimento de lucro bonito/estável, ou seja, a correlação máxima entre a dinâmica do balanço patrimonial e a linha reta de crescimento

#  install.packages(c("randomForest","GA"))
library(randomForest)
library(GA)


#  создаю фейковые данные для простоты воспроизводимости
price <- cumsum(rnorm(100))
X <- embed(price,dimension = 10)[,10:1]
X <- t(apply(X,1,scale))
price <- tail(price,nrow(X))

#  настройка графики
par(mar=c(2,2,2,2))
layout(1:2)

#  запускаю генетический алгоритм
#  который "придумывает" такой таргет полсе обучения на котором
#  АМО даст самый красивый прирост капитала
best_res <- 0
GA <- ga(type = "real-valued",
         fitness = fitness, 
         lower = rep(-5,nrow(X)),
         upper = rep( 5,nrow(X)),
         popSize = 100,
         maxiter = 50,
         run = 20)


Aqui está o código das funções para calcular o lucro e a FF.

#  простая функция которая считает прибыль ( возможно не верно :)  ) 
count_equity <- function(trade_signal, price)  cumsum(c(diff(price),0)*trade_signal)

#  ФФ которая берет выход из АО и обучает АМО
fitness <- function(ga_out){
  
  target <- ga_out
  set.seed(123)
  rf <- randomForest(target~., X, ntree=100)
  pr <- predict(rf,X)
  
  trade_signal <- sign(pr)
  balance <- count_equity(trade_signal = trade_signal,price = price)
  res <- cor(balance, 1:length(balance))
   
  #  просто графика, необезательный елемент
  if(res>best_res){
    best_res <<- res
    plot(price,t="l",main="price")
    color <- ifelse(trade_signal==1,3,2)
    points(price,col=color,lwd=5,pch=20)
    plot(balance,t="l",col=4,main="balance")
  }
  return(res)
}



Aqui está o resultado: o AO encontrou um alvo para o AMO que, se negociarmos seus sinais, obteremos um belo crescimento de lucro.


 
Elvin Nasirov #:

Obrigado!

Essa resposta levou imediatamente à questão da concretização da negociação manual, em que faltam a clareza e a concretude dos sinais, sua variedade e flexibilidade excessiva. Ou seja, há muito o que pensar.

Ainda não consigo concretizar minha negociação manual....

 
mytarmailS #:

Aqui está o código para ensinar o Rendom Forrest com ferramentas AO,

função de adequação (NOSSO OBJETIVO) - encontrar um crescimento de lucro bonito/estável, ou seja, a correlação máxima entre a dinâmica do balanço patrimonial e uma linha reta ascendente


Aqui está o código das funções de cálculo de lucro e FF



Aqui está o resultado: a AO encontrou um alvo para o AMO que, se negociarmos seus sinais, obteremos um belo crescimento de lucro


E daí? ) Como isso afeta o resultado em novos dados? Isso é feito sem esforço por meio de uma simples marcação.
 
Elvin Nasirov #:

Eu não diria que tenho preguiça de fazer outras marcações, eu tento diferentes variantes e, como não sou especialista em aprendizado de máquina, quando alguma ideia me vem à mente, tento encontrar pelo menos algumas variantes de exemplos com tentativas de alcançar o resultado.

Quando tentei criar uma versão paramétrica da solução com seus próprios valores de indicadores, descobri que há tantas variantes do conjunto de valores de indicadores que, com o poder de computação atual, a seleção de parâmetros será realizada em quase 10 anos.)

Fiquei surpreso quando li a frase "tirar qualquer TS lucrativa do mercado". Eu nem sequer considerei essa opção, pois achei que eles não existiam.

Isso tudo é um tipo de percepção complicada. Você precisa encontrar a ineficiência. Se não conseguir encontrá-la por si mesmo, procure-a em outras pessoas. Há sinais com histórico no mercado.
 
Maxim Dmitrievsky #:
E daí? ) É uma marcação simples sem FF.

Se fosse tão simples assim, não haveria AO e FF...


É quando sabemos exatamente o que precisamos e entendemos como algoritmizar, que podemos fazer isso com a marcação.

E há casos em que queremos apenas dizer: "Não sei como deve ser a aparência, mas faça com que seja boa".

Tudo o que podemos descrever é bom/ruim, e é isso que é colocado no FF.


Aqui está um exemplo de uma tarefa:

A tarefa é treinar um AMO de forma que ele não cometa erros em suas previsões sobre novos dados em uma das classes, uma das classes é proibida de cometer erros...

Como fazer essa marcação?


 
mytarmailS #:

Se fosse assim tão simples, não haveria AO e FF.


Quando você sabe exatamente o que precisa e tem conhecimento de como algoritmizar, pode usar a marcação.

E há casos em que queremos apenas dizer - não sei como deve ficar, mas faça com que fique bom.

Tudo o que podemos descrever é bom/ruim, e é isso que está incorporado no FF.


Aqui está um exemplo de uma tarefa:

A tarefa é treinar o AMO para que ele não cometa erros em suas previsões sobre novos dados em uma das classes, uma das classes é proibida de cometer erros....

Como fazer isso com marcação?


Após a marcação, você joga fora as negociações perdedoras na terceira classe, e a mesma curva plana é obtida.
E como a seleção de critérios de otimização pode fazer algo para novos dados? É um meio de melhorar uma TS pronta. Procurar perdas personalizadas e ver o que há em novos dados? Essa também não é uma boa ideia.
 
Maxim Dmitrievsky #:
Após a marcação, você joga fora as negociações perdedoras na terceira classe, e a mesma curva suave é obtida.

Essa é a quantidade de código que você tem de escrever com essas classes, jogando-as fora, retreinando...

No FF, escrevo apenas duas linhas, penalizando um erro de classe e recompensando uma resposta correta, e é isso, e ele imagina como fazer isso sozinho e não precisa de uma montanha de código....


OK, isso foi fácil, outro exemplo de tarefa

A entrada do AMO é o eurodólar, e quero que a saída seja uma série que seja

1) cointegrada com a libra esterlina

2) se negociarmos uma linha de arbitragem AMO / libra, de modo que haja lucro.

Como isso pode ser feito por meio da marcação?

Maxim Dmitrievsky #:
a otimização pode fazer algo para novos dados?

da mesma forma que com o MO regular, treinamos e olhamos com um olho na pista, com o outro no teste.