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

 
mytarmailS:

em prol de uma conversa pessoal

sua opção

versão simples

como você pode ver os valores são bem diferentes, você mesmo pode verificar


No meu modelo.

portanto só uma coluna, mas isso não importa.

===================UPD

Meu, eles são diferentes cada vez que você corre umap_tranform, não deveria ser

Não estava a prestar atenção. Já passou muito tempo...

 
mytarmailS:

em prol de uma conversa pessoal

sua opção

versão simples

como você pode ver os valores são bem diferentes, você mesmo pode verificar


No meu modelo.

portanto só uma coluna, mas isso não importa.

===================UPD

Cara, eles são diferentes toda vez que você executa umap_tranform, não deveria ser assim

Normalmente a Semente (do RNG incorporado) é definida para algum valor de repetibilidade. Se não, então é usado aleatoriamente. Este pacote também pode ter uma Semente - verifique.
 
elibrarius:
Normalmente para a repetibilidade você define a Semente (do HSS incorporado) para algum valor. Se não, então é usado aleatoriamente. Talvez este pacote também tenha Semed - veja.

Eu acho que sim, mas a questão é que sem RMS deve ser sempre o mesmo, no pacote analógico "umap" o resultado é sempre o mesmo

 
Aleksey Vyazmikin:

para ti, com apenas uma esperança de que aprendas o r-ku)

install.packages("TTR","uwot")

clos <- d$X.CLOSE.

get.ind <- function(x,n=5){
  
  all_to.all_colums <- function(x,names){
    cb <- combn(ncol(x),2)
    res <- matrix(ncol = 0,nrow = nrow(x))
    for(i in 1:ncol(cb)){
      j1 <- cb[1,i]
      j2 <- cb[2,i]
      
      res <- cbind(res,   x[,j1] - x[,j2]  )
      colnames(res) <- paste0(names, 1:ncol(res))
    }
    return(res)}
  
  library(TTR)
  aroon  <- aroon(x,n)
  BBands <- BBands(x,n)            ;   BBands <- all_to.all_colums( BBands, names = "BBands")
  CCI    <- CCI(x,n)
  CMO    <- CMO(x,n)
  DEMA   <- diff(c(0,DEMA(x,n)))
  Donchian <- DonchianChannel(x,n) ;   Donchian <- all_to.all_colums( Donchian, names = "Donchian")
  MACD   <- MACD(x,n)
  moment <- momentum(x,n)
  PBands <- PBands(x,n)            ;   PBands <- all_to.all_colums( PBands, names = "PBands")
  RSI    <- RSI(x,n)
  SAR    <- diff(c(0,SAR(cbind(x,x,n))))   
  SMA    <- diff(c(0,SMA(x,n)))
  stoch  <- stoch(x,n)
  TDI    <- TDI(x,n)
  VHF    <- VHF(x,n)
  WPR    <- WPR(x,n)
  
  ind <- cbind.data.frame(aroon,BBands,CCI,CMO,DEMA,Donchian,
                          MACD,moment,PBands,
                          RSI,SAR,SMA,stoch,TDI,VHF,WPR)
  return(ind)
}
get.target <- function(x, change){
  zz <- TTR::ZigZag(x,change = change,percent = F)
  zz <- c(diff(zz),0) ; zz[zz>=0] <- 1 ; zz[zz<0] <- -1
  return(zz)
}

X <- get.ind(clos)
Y <- as.factor(get.target(clos,change = 0.001))


library(uwot)

train.idx <- 100:8000
test.idx <- 8001:10000

UM <- umap(X = X[train.idx,],
           y = Y[train.idx], 
            approx_pow = TRUE, 
            n_components = 3, 
            ret_model = TRUE,
            n_threads = 4 L, 
            scale = T)

predict.train <- umap_transform(X = X[train.idx,], 
                                model = UM, n_threads = 4 L, 
                                verbose = TRUE)

predict.test <- umap_transform(X = X[test.idx,], 
                                model = UM, n_threads = 4 L, 
                                verbose = TRUE)



library(car)

scatter3d(x = predict.train[,1], 
          y = predict.train[,2], 
          z = predict.train[,3],
          groups = Y[train.idx],
          grid = F, 
          surface = F,
          ellipsoid = F,
          bg.col = "black",surface.col = c(2,3))

há duas funções

get.ind

и

get.target

o primeiro cria um conjunto de indicadores de data, o segundo a meta do ziguezague

tudo que você precisa fazer é carregar os dados com um preço fechado de 10k e escrevê-los na variável fechar

e conseguir a sua umap com o alvo


https://github.com/jlmelville/uwot
 
mytarmailS:

para você, com apenas uma esperança de que você aprenda o p)

há duas funções

и

o primeiro cria um conjunto de indicadores de data, o segundo cria uma meta de ziguezague

tudo que você precisa fazer é carregar os dados com um preço fechado de 10k e escrevê-los na variável fechar

e conseguir a sua umap com o alvo


https://github.com/jlmelville/uwot

Muito prazer em conhecê-lo, obrigado!

Desejo mais comentários :)

A questão aqui é como sincronizar os preditores do arquivo com o alvo resultante?

 
Aleksey Vyazmikin:

Muito prazer em conhecê-lo, obrigado!

Desejo mais comentários :)

A questão aqui é como sincronizar os preditores a partir do arquivo com o alvo?

Como o alvo é construído usando o preço, já está em sincronia e se os preditores são construídos usando a mesma cena, isso significa que eles também estão)

Ou eu não entendo a pergunta.


Eu tentei nomear as variáveis para que fossem compreensíveis sem comentários

 

Uma pergunta de um nerd.


Há três variáveis A, B, C. Algum tipo de condição é escrita à mão a partir deles. Por exemplo.

(A > B) && (A - B < C) && (A + 3 * C > 2 * B)


Eu quero reproduzir esta condição automaticamente. Não preciso de o encontrar, porque eu já o sei. Mas eu preciso ter, por exemplo, dezenas de coeficientes de peso, cuja combinação pode atingir esta condição com alta probabilidade, quando eu definir ali A, B, C (polinomial ou HC - eu não sei, porque eu sei zero) e obter a condição original.


Estou interessado em que tipo e quantos pesos de entrada a função requerida tem, para que tais condições originais possam ser reproduzidas através de pesos?

 

Então, como as árvores foram treinadas em grupos, eu digo-vos e mostro-vos.

Temos o seguinte modelo para o reconhecimento das aulas

A história tem uma Precisão de 0,9196756 - ou seja, a lógica do cluster é bastante reprodutível.

Depois treinei um modelo para cada cluster

Cluster 1

Cluster 2

Aglomerado 3

Cluster 4

Todos os clusters têm Precisão 0,53 ou assim.

E é assim que o modelo é, sem se dividir em grupos.

A precisão 0,5293815 é mais ou menos a mesma que para os clusters.

Se compararmos modelos para clusters e um modelo de árvore com toda a amostra, vemos que as árvores de cluster têm mais folhas com informação de amostra generalizada com o alvo 1 e -1, o que é teoricamente bom.

Vamos ver o que os testes mostram - primeiro vamos olhar para o período de treinamento

Modelo sem partição de cluster:

Modelo com partição em clusters:

Vemos que a precisão é melhor com o modelo sem o clustering, mas negoceia mais com o modelo em clusters, o que permite um melhor desempenho financeiro.

Agora vamos olhar para a amostra fora do treino.

E aqui estão os nossos aglomerados:

E o modelo sem aglomerados:

A situação aqui parece estar invertida - muitas negociações tiveram um efeito prejudicial quando o mercado começou a convulsionar a partir de abril.

Decidi olhar para as folhas dos modelos de cluster individualmente, se não houvesse cluster, em um histograma descendente:


Um total de 6 folhas não rentáveis (zero alvo removido - isto é uma proibição de entrada), acontece que não estamos no grupo certo?

 
mytarmailS:

Bem, como o alvo é baseado no preço, ele já está sincronizado, e se os preditores são baseados na mesma cena, eles também são)

Ou eu não entendo a pergunta.


Eu tentei nomear as variáveis para que fossem compreensíveis sem comentários

Como pegar um conjunto de dados com preditores e preço fechado e carregá-lo com a especificação de uma coluna com preço fechado em vez de usar a variante de geração de indicadores em R?

Como eu entendo, como o alvo é ZZ tops, então parte da amostra com preditores deve ser filtrada, aqui, e assim para alimentar os preditores também se deve filtrar a tabela com preditores, ou o quê?

 
fxsaber:

Uma pergunta de um nerd.


Há três variáveis A, B, C. Algum tipo de condição é escrita à mão a partir deles. Por exemplo.


Eu quero reproduzir esta condição automaticamente. Não preciso de o encontrar, porque eu já o sei. Mas eu preciso ter, por exemplo, dezenas de coeficientes de peso, cuja combinação pode atingir esta condição com alta probabilidade, quando eu definir ali A, B, C (polinomial ou HC - eu não sei, porque eu sei zero) e obter a condição original.


Estou interessado em que tipo e quantos pesos de entrada a função requerida tem, para que tais condições originais possam ser reproduzidas através de pesos?

alternativamente

(A > B) && (A - B < C) && (A + 3 * C > 2 * B)

A entrada de NS é valores A,B,C n vezes (digamos, 1000), a saída é respostas da sua fórmula para estes valores como 0;1. Experimenta. E veja o erro de classificação e o quão bem o modelo reproduz a condição.

se quiseres ver exactamente de que tipo e interpretar, podes fazê-lo através das árvores.

Variante 2 (se a primeira não funcionou bem) - A, B, A-B, C, A+3*C, 2B - variáveis, todas iguais às da primeira variante a ser colocada na árvore. E você pode ver sua estrutura como nas fotos do Alexey acima.