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

 


 
Maxim Dmitrievsky #:


Victor Grigorievich, mis respetos xD

 
Aleksey Nikolayev #:

Ha surgido una pregunta puramente teórica: ¿puede utilizarse un modelo ONNX para derivar otro modelo ONNX? Por ejemplo, el primer modelo se utiliza para volver a entrenar periódicamente con nuevos datos y actualizar el modelo de trabajo. Es decir, sin utilizar python, etc.

A primera vista, es poco probable que sea posible, pero por si alguien ha intentado hacer algo así.

No he conseguido obtener ninguna respuesta significativa de la IA - escribe que puede y cita referencias que no tienen nada que ver con la pregunta).

El modelo ONNX es un gráfico de un modelo entrenado descompuesto en operaciones elementales. Es imposible entrenar un modelo en formato ONNX en Windows. Escriben sobre tal posibilidad en Linux.

Sólo se puede utilizar obteniendo un predicado (se ejecuta mucho más rápido que el predicado del modelo) y sin Python. Aplicación muy interesante del modelo ONNX en el paquete carefree-learn. La imagen de abajo está tomada de la descripción del paquete.

hiheline despreocupado

 
mytarmailS #:

el problema es otro totalmente distinto.

Sí, encontrado la causa.

En general, actualizado, incluso el error no escribe, pero el resultado es el mismo - todo arriba casi.


Y el código script anterior que se publicó anteriormente dejó de funcionar - que solía trabajar antes de las actualizaciones.

> p1 + p2 + plot_layout(nrow = 2)
Error in app$vspace(new_style$`margin-top` %||% 0) : 
  attempt to apply non-function
 
Aleksey Vyazmikin #:

Sí, encontré la causa.

En general actualizado, incluso el error no escribe, pero el resultado es el mismo - todo arriba casi.


Y el código-script anterior que se publicó anteriormente dejó de funcionar - que solía trabajar antes de las actualizaciones.

Mañana voy a tratar de ejecutarlo yo mismo
 
mytarmailS #:

Cualquiera que entienda el paquetequanstrat para crear, backtesting estrategias de cualquier nivel, optimización de parámetros, etc.

Creado por los comerciantes reales del fondo y se utiliza todos los días para las estrategias con dinero real.

breve introducción

Algunas reflexiones interesantes desde el mismo sitio

En lugar de utilizar los backtests para validar buenas estrategias de trading, creo que son más adecuados para rechazar aquellas estrategias que definitivamente NO queremos utilizar.

====

¿cómo sé que mi estrategia no está sobreentrenada ni falsea sus rendimientos?

  • En el caso de los datos financieros, puede utilizar el muestreo ascendente o el remuestreo (pero debe tener mucho cuidado con los cambios de régimen).
  • Pruebas de sensibilidad/estabilidad de los parámetros. Básicamente, si decido utilizar diferentes parámetros para mis indicadores técnicos (por ejemplo, SMA-30 y SMA-180) o empezar en diferentes días de la semana, ¿cambiarán mucho mis resultados (cuán frágiles son mis indicadores). modelo en función de sus condiciones iniciales)?

bueno, si no hay otros criterios de evaluación, entonces a través de la estabilidad de los parámetros

también se pueden imaginar los valores de salida de la ST como señales en el tiempo y medir su entropía y compararla con la aleatoriedad. Si la CT capta algunos patrones que se repiten con cierta periodicidad, esto quedará reflejado.

Para los constructores de FFs personalizadas, podría ser útil.

La mejor medida es el tiempo y las pruebas en la vida real. Cualquier TC dejará de funcionar.
 
Vladimir Perervenko #:

El modelo ONNX es un gráfico de un modelo entrenado descompuesto en operaciones elementales. Es imposible entrenar un modelo en formato ONNX en Windows. Escriben sobre tal posibilidad en Linux.

Sólo se puede utilizar obteniendo un predicado (se ejecuta mucho más rápido que el predicado del modelo) y sin Python. Aplicación muy interesante del modelo ONNX en el paquete carefree-learn. La imagen de abajo está tomada de la descripción del paquete.

La pregunta sobre ONNX de ONNX surgió simplemente de la yuxtaposición de dos afirmaciones que he encontrado: 1) la adquisición de modelos puede representarse como un pipeline, 2) el pipeline puede convertirse a formato ONNX.

Está claro que esto es difícilmente posible en la práctica. En realidad, me gustaría entender qué impide exactamente la aplicación de tal posibilidad para darme cuenta de las limitaciones fundamentales de esta tecnología en su conjunto.

Una cosa son limitaciones como la imposibilidad de escribir en un fichero y otra la falta de soporte para tipos de datos (dataframes, por ejemplo).

 
Ivan Butko #:

Victor Grigorievich, mis respetos xD

Sí, sobre todo el vídeo de hoy(((
 
Aleksey Vyazmikin #:

Y el pasado código-script que se publicó antes un poco - dejó de funcionar - solía trabajar - antes de las actualizaciones.

library(patchwork)

¿Está instalado?

 
Aleksey Vyazmikin #:

En general actualizado, incluso el error no escribe, pero el resultado es el mismo - todo casi.

lo corrió, tengo la misma imagen))


Me di cuenta del error, allí tuve un vistazo al futuro en el objetivo ... sí ... perdemos el control.

Esta línea debe ser reemplazado

dp <- с(diff(close),0)   

por

dp <- tail(c(diff(close),0),nrow(X))


Reescribí el código un poco más legible.

close <- cumsum(rnorm(10000,sd = 0.00001))+100
par(mar=c(2,2,2,2))  ; plot(close,t="l")


D <- make_data(close)
tr <- 1:500
R <- make_rules(y = D$Y[tr] , x = D$X[tr,])
# head(R)
buy_rules <- R$condition[ R$pred==1 ]



plot(x = 1:2000,y = rep(NA,2000), ylim = c(-0.001,0.001)) 
for(i in 1:length(buy_rules)){
  cum_profit <- cumsum( D$diff_price[  eval(str2expression(buy_rules[i]))  ] )
  lines(cum_profit,col=8,lwd=1)}
for(i in 1:length(buy_rules)){
  cum_profit <- cumsum( D$diff_price[  eval(str2expression(buy_rules[i]))  ] )
      
      if(length(cum_profit)>30){
      ccor <- cor(cum_profit, 1:length(cum_profit))
      if(ccor>=0.95)  lines(cum_profit,col=i,lwd=2)
      }
}
abline(h = 0,col=2,lty=2)
gc(T,T)

funciones de ayuda

make_rules <- function(y, x){
  library(inTrees)  # ?inTrees::getRuleMetric()
  library(RRF)
  rf <- RRF(x = x,y = y,ntree=100)
  rule <- getRuleMetric(unique(extractRules(RF2List(rf),x)),x,y)
  rule <- data.frame(rule,stringsAsFactors = F)
  for(i in c(1,2,3,5)) rule[,i] <- as.numeric(rule[,i])
  return(rule)}
make_data <- function(close){
  sw <- embed(x = close,dimension = 10)[,10:1] #  make slide window data
  X <- t(apply(sw,1,scale)) #  normalase data
  
  dp <- tail(c(diff(close),0),nrow(X)) #  diff prices
  Y <- as.factor( ifelse(dp>=0,1,-1) ) #  target for classification
  res <- list(Y=Y,X=X,diff_price=dp)
  return(res)
}