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

 
elibrarius:

Há um ótimo site que arquiva quase toda a internet.

super!!! obrigado

 

Na minha opinião, faz pouco sentido prever a série com 100-200-500 dias de antecedência. Muito pode acontecer... para mudar drasticamente a série e as forças que influenciam o seu movimento.

Você pode repetir este código (melhor do artigo 3, é mais estável) para M1-M15 prevendo 1-10 horas de antecedência? Mesmo 1 hora é suficiente para vencer o spread e ter lucro.
Se isto for bem sucedido, então você pode usar o método para trabalhar.

 
sibirqk:

Pelo que entendi, os autores não revelam muito sobre o algoritmo em si, fazendo máximas como:

Portanto, o método GenericPred usa duas regras básicas:

R1: Procure sempre manter o valor de uma medida não linear tão estável quanto possível durante a previsão(Fig. 3).

R2: O novo valor deve ser escolhido a partir de um conjunto de valores potenciais gerados a partir de uma distribuição de probabilidade.

A previsão tem de ser feita um passo de cada vez porque o valor previsto no passo actual é necessário para determinar o intervalo de variação válido para o passo seguinte.


Até onde posso adivinhar, primeiro seleciona-se algum componente linear logístico, e depois a cada passo é modelado um não linear, sendo o critério principal a estabilidade de algum conjunto de características estocásticas da série. Em geral é vago, mas o resultado é impressionante.

Na minha opinião, a abordagem é um pouco semelhante à utilizada no pacote "profeta" em R.

Eu olhei um pouco mais de perto - vejo que estava um pouco enganado. Eles fazem uma série de métricas não lineares deslizantes de séries originais (escrevem sobre dimensão fractal e índices de Lyapunov). Esta nova série que consideram (com base em observações práticas) semelhante à SB. E eles multiplicam esta série pelo método de Monte Carlo no futuro e tomam uma variante com a máxima aproximação ao conjunto inicial.

O segredo é uma transformação específica das séries iniciais em séries de métricas, e mais importante - a transformação inversa.

No conjunto, tudo isto parece suspeito (em primeiro lugar, o estilo de apresentação dos resultados) e não causa grande desejo de estudo mais aprofundado da questão.

 
Aleksey Nikolayev:

Olhei um pouco mais de perto - vejo que estava um pouco enganado. Eles fazem uma série de métricas não lineares deslizantes da série original (eles escrevem sobre dimensionalidade fractal e índices de Lyapunov). Esta nova série que consideram (com base em observações práticas) semelhante à SB. E eles multiplicam esta série pelo método Monte-Carlo no futuro e tomam uma variante com a máxima aproximação ao conjunto inicial.

O segredo é uma transformação específica das séries iniciais em séries de métricas, e mais importante - a transformação inversa.

No conjunto, tudo isto parece suspeito (em primeiro lugar, o estilo de apresentação dos resultados) e não suscita grande desejo de estudo mais aprofundado da questão.

Parecem fezes nauseantes, para parafrasear )

Se você calcular o bar, será pior do que a previsão ingênua do preço do último bar.

 
Aleksey Nikolayev:

O segredo continua sendo o tipo de transformação específica da série original em uma série de métricas e, mais importante, a transformação inversa.

Há um código!

 
Aleksey Nikolayev:

Bem, não nos é permitido entrar nos servidores de DC e ECN) Temos de ser nós próprios a inventar tudo).

Mesmo que nos deixem entrar, isso não fará muito) Rapidez na obtenção de preços e sua certa correção não mudará a essência. Mas a tendência é que a capacidade de pesquisa de preços e algoritmos de estimativa de dados FA está crescendo, este último, infelizmente, é muito mais lento. Mas a tendência está aí)))) E quem é o primeiro a ser capaz de fundir resultados estará no topo por um tempo))))...

 

artigo de 2014. Eu definitivamente li sua tradução para russo ou um relato dela em algum trabalho popular de "trader-teacher's".

Lembro-me vagamente de que, quando há uma tendência, a previsão é boa; quando há uma mudança na tendência, a previsão está errada. Eles não foram suficientemente longe)

 

O tópico de MoD desceu ao nível de DSP e Arim, curiosamente

embora os autores do artigo não pudessem sequer usar Arima ou Garch corretamente para não mostrarem uma linha reta

Escreva mais sobre ondas sinusoidais e assim por diante.
 
mytarmailS:

O código está lá!

Não sei o que estava errado com o autor do artigo quando ele escreveu o código na terceira parte, mas o código estava "quebrado" em três lugares, tin....

Eu arranjei-o.

library(quantmod)
library(fractaldim)


getSymbols("SPY",src="yahoo", from="2019-01-01")


N <- 10  #  Predict the last N bars

mainData <- SPY$SPY.Close



colnames(mainData) <- c("data")
endingIndex <- length(mainData$data)-(N+1)

TEST <- mainData[1:endingIndex]
total_error <- 0
error_per_prediction <- matrix(ncol = 1,nrow = 0)

#These  are the fractal dimension calculation parameters
#see  the fractaldim library reference for more info

method <- "rodogram"
Sm <- as.data.frame(TEST, row.names = NULL)
delta <- c()

#  calculate delta between consecutive Sm values to use as guesses
for(j in 2:length(Sm$data)){
  delta <- c(delta, (Sm$data[j]-Sm$data[j-1])/Sm$data[j-1])
}

Sm_guesses <- delta

#do 100 predictions of next values in Sm
for(i in 1:N){
  
  #update  fractal dimension used as reference
  V_Reference <- fd.estimate(Sm$data, method=method)$fd
  minDifference = 1000000
  
  #  check the fractal dimension of Sm plus each different guess and
  #  choose the value with the least difference with the reference
  for(j in 1:length(Sm_guesses)){
    
    new_Sm <- rbind(Sm, Sm_guesses[j]*Sm$data[length(Sm$data)]+Sm$data[length(Sm$data)])
    new_V_Reference <- fd.estimate(new_Sm$data, method=method)$fd
    
    if (abs(new_V_Reference - V_Reference) < minDifference ){
        Sm_prediction <- Sm$data[length(Sm$data)]+Sm_guesses[j]*Sm$data[length(Sm$data)]
        minDifference <- abs(new_V_Reference - V_Reference)
    }
  }
  
  print(i)
  #add  prediction to Sm
  Sm <- rbind(Sm, Sm_prediction)
 
 
}

id <- endingIndex:(endingIndex+N)

pred <- Sm$data[id]
real <- as.data.frame(mainData$data[id], row.names = NULL)

plot(pred, type="l",col=2,ylim = range(pred,real),lty=3)
lines(real,lwd=2)

Tradução e Revisão: Equipa PT-Subs

 
Maxim Dmitrievsky:

O tema do MdD desceu ao nível do COC ......

Quando não se sabe muito, só há maravilhas...