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

 

ese es el tipo de señal que tengo. Correlacionar porque la base son incrementos de órdenes de magnitud cercanos


fórmula de ejemplo: precio - MA(n) * std(n) * coef, donde MA y std - media móvil y desviación estándar de orden arbitrario y coeficiente de nivelación, cuanto mayor - más estacionaria la serie. En este caso, es 50000.

por alguna razon mi MO muestra estabilidad mejor que solo en incrementos

con coef 20.

Resulta ser algo similar a la diferencia fraccionaria, pero cuenta al instante.

Tal vez alguien puede pensar en otras opciones

 
Maxim Dmitrievsky #:

ese es el tipo de señal que tengo. Correlacionado, porque la base son incrementos de órdenes de magnitud cercanos

¿Qué son estas curvas en general?

Maxim Dmitrievsky

tal vez alguien vendrá con otras opciones

Aquí vamos, regresión simbólica al rescate

 
mytarmailS #:

¿Qué pasa con las bolas curvas de todos modos?

Bueno, la regresión simbólica al rescate.

La fórmula está escrita.
Sugiera una variante de cómo acercar las cotizaciones a la serie estacionaria utilizando cf
 
Maxim Dmitrievsky #:
La fórmula está escrita
Sugiera una variante de cómo acercar las cotizaciones a la serie estacionaria mediante cf

Te propongo un ejemplo más sencillo sin SR.

 
mytarmailS #:

Sólo voy a tirar algo juntos y mostrar un ejemplo más simple sin SR.

No se puede hacer aquí con una sola variante, es necesario construir atributos y comprobar y entrenar en ellos.

Pero los signos no son estúpidos, pero al menos de alguna manera significativa, de lo contrario se puede ir para siempre.
 
Maxim Dmitrievsky #:

Con SR lleva más tiempo codificar y planificar, así que por simplicidad, rapidez y claridad lo hice sencillo...

En lugar de crear una fórmula en tiempo real, creo un "resultado de la fórmula", una curva, y la utilizo como objetivo para el modelo.


Creo una función de adecuación que maximiza la correlación entre el precio y el resultado del modelo, pero el resultado del modelo tiene una limitación: sólo puede estar entre -1 y 1.

Es decir, obtenemos una serie que debería correlacionarse con el precio, pero "sujeta" dentro de los límites de los valores estatsionales. Si necesitas una estatsionalidad real según Dickie Fuller y demás, sólo tienes que cambiar la función fitness por la que necesites.



crear datos y entrenar el modelo con la genética

par(mar=c(2,2,2,2))
#  для простоты Создаю цену 
P <- cumsum(rnorm(300))
plot(P,t="l")

hankel <- function(x,n) embed(x, n)[ ,n:1]
#  Создаю данные для обучения Х ,скользящее окно виде матрицы
X <- t(apply(hankel(P,11),1,function(x) cumsum(diff(x))))
P <- tail(P,nrow(X))

#  Делаю разметку индексов для трейн и тест и валидации
tr <- 1:100
ts <- 1:200
al <- 1:nrow(X)

library(randomForest)
#  Создаю фитнес сункцию , подбираем генетикой для фореста такой таргет чтобы 
#  на выходе был максимально коррелированый с ценой ряд
fit <- function(Y){
set.seed(123)
rf <- predict(  randomForest(Y~.,X[tr,],ntree=100) ,   X[ts,])
return( cor(rf, P[ts]) )}

library(GA)
GA <- ga(type = "real-valued", 
         fitness =  fit,
         lower = rep(-1,100), 
         upper = rep(1,100), 
         popSize = 100,
         maxiter = 100,
         run = 40)
plot(GA)
GA_Y <- tail(GA@solution,1)[1,]

probar el modelo.

#  Получаем нашу модель которая делает то что нужно
set.seed(123)
rf <- predict(  randomForest(GA_Y~.,X[tr,],ntree=100) ,   X[al,])

layout(1:2)
plot(P,t="l",main="original price") ; abline(v=c(100,200),lty=2,col=c(3,4))
plot(rf,t="l",main="model out") ; abline(v=c(100,200),lty=2,col=c(3,4))
abline(h=0,col=3,lty=3)

layout(1:2)
plot(P,t="l",main="original price") ; abline(v=c(100,200),lty=2,col=c(3,4))
plot(cumsum(rf),t="l",main="model out cumsum") ; abline(v=c(100,200),lty=2,col=c(3,4))

Las líneas verticales son la separación de entrenar, probar y validar.


Como puedes ver en la imagen, el modelo ha aprendido a tomar el precio como entrada, y la salida es una serie estadística que se correlaciona con el precio.

Para mayor claridad podemos hacer una suma acumulativa de la salida del modelo.


como este )))) Y no hace falta inventar nada, todo se puede hacer automáticamente.

 
mytarmailS #:

Con SR necesitas más tiempo para el código y la planificación, así que por simplicidad, rapidez y claridad lo hice más sencillo.

En lugar de crear una fórmula en tiempo real, creo un "resultado de fórmula", una curva, y luego la utilizo como objetivo para el modelo.


Creo una función de adecuación que maximiza la correlación entre el precio y el resultado del modelo, pero el resultado del modelo tiene una limitación: sólo puede estar entre -1 y 1.

Es decir, obtenemos una serie que debería correlacionarse con el precio, pero "sujeta" dentro de los límites de los valores estatsionales. Si necesitamos la estatsionalidad real según Dickie Fuller y demás, simplemente cambiamos la función de adecuación a lo que necesitemos.



crear datos y entrenar el modelo con la genética

validar el modelo

Las líneas verticales son la separación entre entrenamiento, prueba y validación.


Como se puede ver en la imagen, el modelo ha aprendido a tomar el precio como entrada, y la salida es una serie estadística que se correlaciona con el precio.

Para mayor claridad, podemos hacer una suma acumulativa a partir de la salida del modelo


como este )))) Y no hay que pensar en nada, todo se puede hacer en la máquina

Interesante, intentaré pensarlo más tarde, hoy es un bloody mary, cuesta pensar.
 
Maxim Dmitrievsky #:
Interesante, intentaré pensarlo más tarde, hoy tenemos un bloody mary, es difícil pensar.

Me pregunto cuántas líneas tomaría en python.....

probablemente miles en µl))))))))))))))))))))))))))))

 
mytarmailS #:

Me pregunto cuántas líneas se necesitarían en python.....

en µl, probablemente miles))))

Sí, más o menos la misma cantidad, un poco más
Es probablemente una cuestión de overfit, mostrará diferentes curvas en los nuevos datos
 
Maxim Dmitrievsky #:
Es más o menos lo mismo, un poco más.
Probablemente sea una cuestión de sobreajuste, los nuevos datos mostrarán curvas diferentes.
La tercera pieza de la imagen son los nuevos datos.