L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 2323

 
elibrarius:

C'è un grande sito che archivia quasi tutto internet.

super!!! grazie

 

Secondo me, ha poco senso prevedere la serie con 100-200-500 giorni di anticipo. Possono succedere troppe cose... per cambiare drasticamente la serie e le forze che influenzano il suo movimento.

Puoi ripetere questo codice (meglio dall'articolo 3, è più stabile) per le previsioni M1-M15 1-10 ore avanti? Anche 1 ora è sufficiente per battere lo spread e ottenere un profitto.
Se questo ha successo, allora si può portare il metodo al lavoro.

 
sibirqk:

Da quanto ho capito, gli autori non rivelano troppo sull'algoritmo stesso, facendo massime come:

Pertanto, il metodo GenericPred utilizza due regole di base:

R1: Cercare sempre di mantenere il valore di una misura non lineare il più stabile possibile durante la previsione(Fig. 3).

R2: Il nuovo valore deve essere scelto da un insieme di valori potenziali generati da una distribuzione di probabilità.

La previsione deve essere perseguita un passo alla volta perché il valore previsto nel passo corrente è necessario per determinare l'intervallo di cambiamento valido per il passo successivo.


Per quanto posso indovinare, all'inizio si seleziona qualche componente lineare logistico, e poi ad ogni passo se ne modella uno non lineare, il criterio principale essendo la stabilità di qualche insieme di caratteristiche stocastiche della serie. In generale è vago, ma il risultato è impressionante.

Secondo me l'approccio è in qualche modo simile a quello usato nel pacchetto "profeta" in R.

Ho guardato un po' più da vicino - vedo che mi ero un po' sbagliato. Fanno una serie di metriche non lineari scorrevoli dalla serie originale (scrivono sulla dimensione frattale e sugli indici di Lyapunov). Questa nuova serie che considerano (sulla base di osservazioni pratiche) simile a SB. E moltiplicano questa serie con il metodo Monte Carlo-like in futuro e prendono una variante con la massima vicinanza al set iniziale.

Il segreto è una trasformazione specifica delle serie iniziali in serie di metriche, e più importante - la trasformazione inversa.

Nel complesso, tutto questo sembra sospetto (prima di tutto, lo stile di presentazione dei risultati) e non provoca molto desiderio di approfondire la questione.

 
Aleksey Nikolayev:

Guardando un po' più da vicino - vedo che mi ero un po' sbagliato. Fanno una serie di metriche non lineari scorrevoli dalla serie originale (scrivono sulla dimensionalità frattale e sugli indici di Lyapunov). Questa nuova serie che considerano (sulla base di osservazioni pratiche) simile a SB. E moltiplicano questa serie con il metodo Monte-Carlo-like in futuro e prendono una variante con la massima vicinanza al set iniziale.

Il segreto è una trasformazione specifica delle serie iniziali in serie di metriche, e più importante - la trasformazione inversa.

Nell'insieme, tutto questo sembra sospetto (prima di tutto, lo stile di presentazione dei risultati) e non suscita molto desiderio di approfondire la questione.

Sembrano delle feci nauseabonde, per parafrasare)

Se si calcola il cram, sarà peggiore della previsione ingenua del prezzo dell'ultima barra

 
Aleksey Nikolayev:

Il segreto rimane il tipo di trasformazione specifica della serie originale in una serie di metriche e, più importante, la trasformazione inversa.

C'è un codice!

 
Aleksey Nikolayev:

Beh, non ci è permesso entrare nei server dei DC e degli ECN) Dobbiamo inventarci tutto da soli).

Anche se ci lasciano entrare, non farà molto) Velocità nell'ottenere i prezzi e la loro correttezza non cambierà l'essenza. Ma la tendenza è che la capacità di ricerca dei prezzi e degli algoritmi di stima dei dati FA sta crescendo, quest'ultima è purtroppo molto più lenta. Ma la tendenza c'è))) E chi è il primo ad essere in grado di unire i risultati sarà in cima per un po'))))...

 

articolo del 2014. Ho sicuramente letto la sua traduzione russa o un resoconto di essa in qualche opera popolare di "commercianti-insegnanti".

Ricordo vagamente che si riduceva al fatto che quando c'è una tendenza, la previsione è buona; quando c'è un cambiamento nella tendenza, la previsione è sbagliata. Non sono andati abbastanza lontano)

 

L'argomento del MoD è sceso al livello di DSP e Arim, abbastanza divertente

anche se gli autori dell'articolo non potevano nemmeno usare Arima o Garch correttamente, quindi non mostrano una linea retta

Scrivere di più sulle onde sinusoidali e così via.
 
mytarmailS:

Il codice è lì!

Non so cosa non andava nell'autore dell'articolo quando ha scritto il codice nella terza parte, ma il codice era "rotto" in tre punti, tin....

L'ho aggiustato.

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)

Sync by honeybunny

 
Maxim Dmitrievsky:

L'argomento del MoD è sceso al livello del COC ......

Quando non si sa molto, ci sono solo meraviglie...