Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 2323

 
elibrarius:

Hay un gran sitio que archiva casi todo Internet.

super!!! gracias

 

En mi opinión, no tiene mucho sentido predecir las series con 100-200-500 días de antelación. Pueden pasar demasiadas cosas... para cambiar drásticamente la serie y las fuerzas que influyen en su movimiento.

¿Puedes repetir este código (mejor del artículo 3, es más estable) para la previsión M1-M15 con 1-10 horas de antelación? Incluso 1 hora es suficiente para superar el spread y obtener beneficios.
Si esto tiene éxito, entonces puedes llevar el método al trabajo.

 
sibirqk:

Según tengo entendido, los autores no revelan demasiado sobre el algoritmo en sí, haciendo máximas como

Por lo tanto, el método GenericPred utiliza dos reglas básicas:

R1: Intente siempre mantener el valor de una medida no lineal lo más estable posible durante la predicción(Fig. 3).

R2: El nuevo valor debe elegirse entre un conjunto de valores potenciales generados a partir de una distribución de probabilidad.

La predicción debe realizarse paso a paso, ya que el valor predicho en el paso actual es necesario para determinar el rango de cambio válido para el siguiente paso.


Por lo que puedo adivinar, al principio se selecciona algún componente lineal logístico, y luego en cada paso se modela uno no lineal, siendo el criterio principal la estabilidad de algún conjunto de características estocásticas de la serie. En general es impreciso, pero el resultado es impresionante.

En mi opinión, el enfoque es algo similar al utilizado en el paquete "prophet" de R.

He mirado un poco más de cerca y veo que me he equivocado un poco. Hacen una serie de métricas no lineales deslizantes a partir de series originales (escriben sobre la dimensión fractal y los índices de Lyapunov). Esta nueva serie la consideran (basándose en observaciones prácticas) similar a la SB. Y multiplican esta serie por el método de Monte-Carlo en el futuro y toman una variante con la máxima cercanía al conjunto inicial.

El secreto es una transformación específica de las series iniciales en series de métricas y, lo que es más importante, la transformación inversa.

En general, todo esto parece sospechoso (en primer lugar, el estilo de presentación de los resultados) y no provoca muchas ganas de seguir estudiando la cuestión.

 
Aleksey Nikolayev:

Mirando un poco más de cerca, veo que estaba algo equivocado. Hacen una serie de métricas no lineales deslizantes a partir de la serie original (escriben sobre la dimensionalidad fractal y los índices de Lyapunov). Esta nueva serie la consideran (basándose en observaciones prácticas) similar a la SB. Y multiplican esta serie por el método de Monte-Carlo en el futuro y toman una variante con la máxima cercanía al conjunto inicial.

El secreto es una transformación específica de las series iniciales en series de métricas y, lo que es más importante, la transformación inversa.

En general, todo esto parece sospechoso (en primer lugar, el estilo de presentación de los resultados) y no despierta muchas ganas de seguir estudiando la cuestión.

Parece un excremento nauseabundo, parafraseando )

Si se calcula el cram, será peor que la predicción ingenua del precio de la última barra

 
Aleksey Nikolayev:

El secreto sigue siendo el tipo de transformación específica de la serie original en una serie de métricas y, sobre todo, la transformación inversa.

¡Hay un código!

 
Aleksey Nikolayev:

Bueno, no se nos permite entrar en los servidores de los DCs y ECNs) Tenemos que inventarnos las cosas nosotros mismos).

Aunque nos dejen entrar, no dará mucho) Velocidad en la obtención de precios y su cierta corrección no cambiará la esencia. Pero la tendencia es que la capacidad de investigación de los precios y los algoritmos de estimación de los datos de la FA está creciendo, esta última es desgraciadamente mucho más lenta. Pero la tendencia está ahí))) Y quien sea el primero que logre combinar los resultados estará en la cima durante un tiempo )))).

 

artículo de 2014. Definitivamente leí su traducción al ruso o un relato de la misma en alguna obra popular del "comerciante-maestro".

Recuerdo vagamente que se reducía a que cuando hay una tendencia, la previsión es buena; cuando hay un cambio de tendencia, la previsión es errónea. No fueron lo suficientemente lejos)

 

El tema del MdD ha descendido al nivel de DSP y Arim, curiosamente

aunque los autores del artículo ni siquiera supieron utilizar correctamente Arima o Garch para no mostrar una línea recta

Escribe más sobre las ondas sinusoidales, etc.
 
mytarmailS:

El código está ahí.

No sé qué le pasaba al autor del artículo cuando escribió el código de la tercera parte, pero el código estaba "roto" en tres sitios, tin....

Lo he arreglado.

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)

Sincronización de Honeybunny

 
Maxim Dmitrievsky:

El tema del Ministerio de Defensa ha descendido al nivel del COC ......

Cuando no se sabe mucho, sólo hay maravillas...