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

 
mytarmailS #:
Eu me lembro, mas é um erro de ajuste, quero dizer, amostragem de traços...
Qual é o erro da próxima vela, o teste.

É o erro nas próximas 300 barras. As previsões foram geradas em cada barra, depois filtradas, o modelo foi treinado e a próxima barra foi prevista.

 
Maxim Dmitrievsky #:
Bem, isso faz algum sentido, porque geralmente os modelos não duram muito tempo. Mas eu gostaria de encontrar opções sem retreinamento constante, pelo menos no intervalo de um ano ou mais, com degradação lenta do modelo, que é fácil de rastrear
.

Não posso concordar com isso.

O mercado está mudando, e os intervalos de tempo da mudança são diferentes e independentes uns dos outros.

Eu costumava escrever EAs que duravam de 3 a 6 meses. Eu os otimizava nos fins de semana. Depois, eles morriam e, por um curto período, o suficiente para drenar o depósito. Mas não havia tempo suficiente para a otimização. No final, a situação era ainda pior: depois de algum tempo, descobriu-se que havia um limite, afastando-se do qual era impossível selecionar parâmetros.

Há períodos mais longos de mudanças no mercado: 5 a 7 anos. Mas o resultado é o mesmo dos períodos mensais. O bot morre para sempre. Enviarei um bot específico do mercado em uma mensagem privada - aqui não é possível.

Portanto, toda essa ideia de "fora da amostra" é uma besteira. Um bot ainda tem uma vida útil, não sabemos quanto tempo: 3 meses ou 7 anos. Quando o bot morre, nós o confundimos com outro drawdown e perdemos nosso depósito.

O ideal é que ele seja treinado novamente no próximo candle. Se trabalharmos com ticks, então com o próximo tick, com o H1 e com a chegada da próxima hora.

 
Valeriy Yastremskiy #:

Não discuto o treinamento em todas as barras, e talvez até mesmo em um tique não estacionário, por exemplo. Não entendo completamente a estrutura do treinamento. A lógica da EA é um treinamento separado ou faz parte do treinamento em cada barra? É como as caudas do primeiro treinamento, quantas caudas ou estágios de treinamento?

Em cada barra, tudo é novo

 
Maxim Dmitrievsky #:

Há mais modelos de madeira para inferência causal, mas ainda não tive tempo de descobrir isso

na prática, muitas interpretações:

- o ambiente afeta o sujeito (quando tudo está correlacionado em condições de laboratório, em condições naturais aparecem outras dependências não contabilizadas - a mais trivial é o fator humano ou o efeito de aglomeração) - a RL é melhor que a ML, mas também é necessário modelar e nem tudo pode ser levado em conta....
- quando se trata de 2 valores correlacionados, só é possível fazer uma inferência sobre o que depende do que, e não o contrário (resultado sobre o fator ou fator sobre o resultado)
- mediação, moderação, interação, dependências que interferem no processo (muitas vezes não podem nem mesmo ser rastreadas experimentalmente)
- em geral, é importante planejar um experimento (é útil poder desenhar gráficos de dependências, exatamente lógicas, teóricas) para planejar um experimento cujos resultados possam ser processados por ML ou até mesmo mais simples....
ou seja, em que sequência e quais fatores corrigir para obter uma distribuição condicional sobre o fator investigado ou a influência conjunta de 2 fatores investigados, para comparar os resultados obtidos com a distribuição incondicional - para apresentar uma hipótese "melhor - não melhor", "influência - não_influência", para confirmar ou refutar estatisticamente, para transferir para testes em condições de campo.... e você obtém uma nova inferência causal).

e no ML RF - não sei como eles fazem isso, processando matrizes de correlação - (especialmente o ponto 2 é questionável).

Muitas pessoas criticam os modelos probabilísticos justamente por causa do ponto 2 e começam a exaltar a inferência causal, alegando que levaram em conta a influência de outros fatores.... mas, algoritmicamente, como a questão (! outra palavra sinônima de raciocínio) é resolvida pelo aparato da VM é desconhecida (pelo menos para mim) - eu diria "nada".

Para mim, a inferência causal é essencialmente raciocínio, e o estudo da mediação, moderação e interação é um grande tópico separado e uma questão de gosto (ou seja, esboçar este ou aquele gráfico construído logicamente) - também um tipo de Design (experimento).

Com apenas um BP no mercado, não é possível testar uma hipótese sobre dependências... e, com uma configuração razoável do experimento, um OLS ou ANOVA será suficiente (mas você não precisará destacar os chips com certeza).

?? ... portanto, não conheço o algoritmo de atribuição de um recurso a um fator ou a um resultado (por meio de modelos de madeira ou qualquer outro), exceto pela lógica e pelo conhecimento teórico .... mas hoje em dia temos todos os tipos de coisas sendo anunciadas com outras palavras - não sei em que contexto você encontrou a inferência causal

 
JeeyCi #:

na prática, muitas interpretações:
- o ambiente influencia a pessoa que faz o teste (quando tudo se correlaciona em condições de laboratório, em condições naturais aparecem outras dependências não contabilizadas - a mais banal - fator humano ou efeito de aglomeração) - a RL é melhor que a ML, mas também é necessário modelar e nem tudo pode ser levado em conta....
- quando se trata de 2 valores correlacionados, só é possível fazer uma inferência sobre o que depende do que, mas não vice-versa (resultado sobre o fator ou fator sobre o resultado)
- mediação, moderação, interação, dependências que interferem no processo (muitas vezes não podem nem mesmo ser rastreadas experimentalmente)
- em geral, é importante planejar um experimento (é útil poder desenhar gráficos de dependências, exatamente lógicas, teóricas) para planejar um experimento cujos resultados possam ser processados pelo ML....
ou seja, em que sequência e quais fatores corrigir para obter uma distribuição condicional para o fator investigado ou a influência conjunta de 2 fatores investigados, para comparar os resultados obtidos com a distribuição incondicional - para apresentar uma hipótese "melhor - não melhor", para confirmar ou refutar estatisticamente, para transferir para testes em condições de campo ... e realizar uma nova inferência causal)

e no ML RF - não sei como eles fazem isso, processando matrizes de correlação - (especialmente o ponto 2 é questionável).

Muitas pessoas criticam os modelos probabilísticos justamente por causa do ponto 2 e começam a exaltar a inferência causal, alegando que levaram em conta a influência de outros fatores.... mas, algoritmicamente, como a questão (! outra palavra sinônima de raciocínio) é resolvida pelo aparato da VM é desconhecida (pelo menos para mim) - eu diria "nada".

Para mim, a inferência causal é essencialmente raciocínio, e o estudo da mediação, moderação e interação é um grande tópico separado e uma questão de gosto (ou seja, esboçar um gráfico construído logicamente) - também um tipo de projeto (experimento).

ter apenas 1 BP no mercado - não é possível realmente testar uma hipótese sobre dependências... e com uma experimentação razoável, um OLS ou LDA será suficiente (mas você não terá que alocar recursos com certeza).

?? ... portanto, não conheço o algoritmo de atribuição de um recurso a um fator ou a um resultado (por meio de modelos de madeira ou qualquer outro), exceto pela lógica e pelo conhecimento teórico..... mas hoje em dia temos todos os tipos de coisas sendo anunciadas com outras palavras - não sei em que contexto você encontrou a inferência causal

Vi um anúncio da Uber que dizia que eles melhoraram seus processos.

e a interpretação geral de que correlação != causalidade e a tentativa de resolver isso de diferentes maneiras, começando com A/B, mas não sei se isso é verdade.

Eles têm algumas definições estranhas, não dá para entender sem uma garrafa, é preciso encher a cabeça com palavras desnecessárias.

Causal Inference from Observational Data, или как провести А/В-тест без А/В-теста.
Causal Inference from Observational Data, или как провести А/В-тест без А/В-теста.
  • Stats&Data ninja
  • koch-kir.medium.com
Привет дата-ниндзя👋! Первый вопрос, который ты задашь — зачем вообще это нужно ❗️❓ Предположим, ты исследуешь причинно-следственную связь между двумя величинами (Y зависит от X). И тогда, изменяя X, мы можем быть уверены что изменяем Y, причем уверены мы не только в самом факте изменения, но и в его направлении и величине (magnitude). Конечно...
 
mytarmailS #:

A propósito, gostaria de saber como os outros modelos funcionarão, se eles conseguirão criar a função mach() sem erro

Treinei brevemente diferentes modelos sem nenhum ajuste de GP

1 0.002392       форест
3 0.005348 екстр. буст.
4 0.024160     нейронка
2 0.037200         МГУА

Conclusão: os modelos não podem criar a função, apenas aproximá-la com alguma precisão, portanto, a criação de recursos e a seleção de recursos ainda são relevantes.

set.seed(125)
dat <- round(rnorm(100000),2)
X <- matrix(dat,ncol = 5)
Y <- apply(X,1,max)
colnames(X) <- paste0("x",1:5)

tr <- 1:19950
ts <- 19951:20000

#///////////////

library(randomForest)
rf <- randomForest(Y[tr]~.,X[tr,],ntree=100)
pr <- predict(rf,X[ts,])

cb <- round(  cbind(pred=pr,actual=Y[ts])  ,2)
matplot(cb,t="l",col=c(1,2),lty=1,lwd=c(3,1),main="RF regresion")
rf_MSE <- mean((cb[,1] - cb[,2])^2)  #  rf MSE 0.002392

#///////////////

library(GMDHreg)
gmdh <- gmdh.mia(X = X[1:10000,],
                 y = Y[1:10000],
                 x.test = X[10000:19951,] ,
                 y.test = Y[10000:19951], prune = 25,criteria = "test")
pr <- predict(gmdh,X[ts,])

cb <- round(  cbind(pred=pr,actual=Y[ts])  ,2)
matplot(cb,t="l",col=c(1,2),lty=1,lwd=c(3,1),main="gmdh regresion")
gmdh_MSE <- mean((cb[,1] - cb[,2])^2)  #  gmdh MSE 0.038692

#///////////////

library(xgboost)
xgb_train = xgb.DMatrix(data = X[1:10000,], label = Y[1:10000])
xgb_test =  xgb.DMatrix(data = X[10000:19951,], label = Y[10000:19951])

watchlist = list(train=xgb_train, test=xgb_test)
xgb = xgb.train(data = xgb_train, max.depth = 3, watchlist=watchlist, nrounds = 1750)

pr <- predict(xgb,X[ts,])
cb <- round(  cbind(pred=pr,actual=Y[ts])  ,2)
matplot(cb,t="l",col=c(1,2),lty=1,lwd=c(3,1),main="xgb regresion")
xgb_MSE <- mean((cb[,1] - cb[,2])^2)  #  xgb MSE 0.005348

#///////////////

library(automl)
nn <- automl_train(Xref = X[tr,], Yref = Y[tr],
                   autopar = list(numiterations = 10,
                                  psopartpopsize = 10),
                   hpar = list(numiterations = 10))

pr <- automl::automl_predict(nn,X[ts,])

cb <- round(  cbind(pred=pr,actual=Y[ts])  ,2)
matplot(cb,t="l",col=c(1,2),lty=1,lwd=c(3,1),main="nn regresion")
nn_MSE <- mean((cb[,1] - cb[,2])^2)  #  nn MSE 0.023828

#///////////////

 res <- c(rf_MSE , gmdh_MSE , xgb_MSE , nn_MSE)
nms <- c("форест","МГУА","екстр. буст.","нейронка")
m <- cbind.data.frame(res,nms)
m <- m[order(m$res),]
m
barplot(m$res,names.arg = m$nms)
 
СанСаныч Фоменко #:

Esse é o erro nas próximas 300 barras. Em cada barra, os preditores foram formados, depois filtrados, o modelo foi treinado e a próxima barra foi prevista.

Tentarei fazer algo semelhante à noite, mas já fiz muitos desses bots de retreinamento e, para eles, darem um resultado tão ruim, mal posso acreditar....

Em vez disso, há uma confusão nos conceitos/entendimentos do que é uma amostra de teste e, por isso, falamos de coisas diferentes, chamando-as da mesma coisa

 
Aleksey Vyazmikin #:

A fila de tarefas foi descarregada um pouco - tornou-se possível executar o script. Eu o executo e recebo um erro.

Estou entendendo corretamente que o programa quer a versão antiga R 4.0?

Bem, procurei por uma versão antiga e não a encontrei. A terrível incompatibilidade é repulsiva, é claro.

Errado. Se um pacote for criado para uma versão diferente, haverá um aviso. De que incompatibilidade estamos falando?

O randomForest v.4.7-1.1 não foi a lugar algum e no crane. R 4.1.3

 
Renat Fatkhullin #:

Observe que, a partir do build 3440, começamos a distribuir versões AVX do software: https://www.mql5.com/ru/forum/432624/page5#comment_42117241.

A próxima etapa é reescrever o aparato matemático em funções vetoriais e OpenCL, o que proporciona acelerações de dez traços sem a necessidade de instalar bibliotecas adicionais como CUDA.

Esse é realmente um grande passo à frente. Precisa reescrever indicadores e especialistas?

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

Não posso concordar com isso.

O mercado está mudando, e os intervalos de tempo da mudança são diferentes e independentes uns dos outros.

Eu costumava escrever Expert Advisors que duravam de 3 a 6 meses. Eu os otimizava nos fins de semana. Então eles morriam, e por um curto período de tempo, o suficiente para drenar o depósito. Mas não havia tempo suficiente para a otimização. No final, a situação era ainda pior: depois de algum tempo, descobriu-se que havia um limite, afastando-se do qual era impossível selecionar parâmetros.

Há períodos mais longos de mudanças no mercado: 5 a 7 anos. Mas o resultado é o mesmo dos períodos mensais. O bot morre para sempre. Enviarei um bot específico do mercado em uma mensagem privada - não é possível fazer isso aqui.

Portanto, toda essa ideia de "fora da amostra" é uma besteira. Um bot ainda tem uma vida útil, não sabemos quanto tempo: 3 meses ou 7 anos. Quando o bot morre, nós o confundimos com outro drawdown e drenamos nosso depósito.

O ideal é que ele seja treinado novamente no próximo candle. Se trabalharmos com ticks, então com o próximo tick, com o H1 e com a chegada da próxima hora.

Você comparou seu algoritmo com o KNN (ou alguma modificação dele)? Seria interessante saber se o ganho é significativo.