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

 
Andrey Dik:

Aquí, he explicado exactamente lo que estoy haciendo:

En detalles: en la barra actual la señal de compra, como comprar, contar el menor número de barras hacia adelante al futuro y comprobar si el comercio es rentable, si es así, como cerrar, si no - contar una barra más hacia adelante y comprobar de nuevo. Y así llegamos al máximo número de barras y las cerramos finalmente. Se trata de un mecanismo de aprendizaje.

¿Qué no está claro? No es una fantasía, es exactamente lo que hago ahora. La función objetivo es maximizar los beneficios con mínimas detracciones. Me entreno con mi propia genética.

¿Qué estamos enseñando? Es posible aplicarlo simplemente, ¿no?
 

SanSanych Fomenko:
1. ¿Qué enseñamos?

2. Puedes implementarlo así, ¿no?

1.la función del objetivo es maximizar los beneficios con las mínimas detracciones. Enseño con la ayuda de mi genética.

2. Sí, muy sencillo.

 
¿alguien sabe cómo averiguar en qué idioma está escrito el paquete R?
 
mytarmailS:
¿Alguien sabe cómo averiguar en qué idioma está escrito el paquete R?

Documentación. Se abre desde la Ayuda en R:

  • Escribir extensiones de R
  • R Internos

Además, hay una descripción detallada de cómo trabajar con Cp

 

Señores, una nueva tarea de mi parte:

Aquí hay un conjunto de datos en formato .R: https://drive.google.com/open?id=0B_Au3ANgcG7CcjZVRU9fbUZyUkE

Hay aproximadamente 40.000 filas y 101 columnas en el conjunto. La columna de la derecha es la variable objetivo. A la izquierda hay 100 entradas.

Te sugiero que intentes construir un modelo de regresión que prediga el valor de la columna 101 en función de las 100 columnas restantes, sobre las primeras 20.000 observaciones.

En las más de 20.000 observaciones restantes, el modelo construido debería mostrar un R^2 de al menos 0,5.

A continuación, revelo la forma en que se generan los datos y doy mi solución.

La pista son los datos de las series temporales. La entrada es de 100 muestras, con una predicción de 1 por delante. No se trata de precios o cotizaciones ni de sus derivados.

Alexey

 
También puedo publicar estos datos en csv. Sería interesante conocer la opinión de los corifeos sobre la importancia de los predictores.

De nuevo, los datos son puramente sintéticos y por pura diversión.
 

Intenté encontrar la importancia de los predictores a través del paquete vtreat. Pero el paquete no es capaz de buscar relaciones entre predictores, sólo tiene en cuenta las relaciones directas entre el predictor y el objetivo, no es muy adecuado para esta tarea.

treatments <- designTreatmentsN(dat_ready[1:20000,], colnames(dat_ready)[1:100], tail(colnames(dat_ready),1))
treatments$scoreFrame #важность  предикторов определяется через колонку "sig"
treatments$scoreFrame[order(treatments$scoreFrame$sig),] #предикторы  отсортированы по важности

A juzgar por la importancia de vtreat - lag_diff_51 y lag_diff_52 son los más útiles. Poco a poco fui añadiendo otros predictores de la lista recibida y miré el crecimiento de R^2 en los datos de entrenamiento para el bosque. Al final me detuve en estos predictores - 51, 52, 53, 54, 55, 17, 68, muy probablemente se utilizan para calcular el objetivo. R^2 en los datos de entrenamiento con ellos > 0,9, pero en las pruebas y validaciones todo es malo. Ahora necesito probar diferentes operaciones matemáticas con estos predictores, seleccionar fórmulas y demás, para que en la validación cruzada el R^2 también aumente. No lo buscaré más :)

Lo terminé más tarde:
Experimenté un poco más, hice un montón de nuevos predictores a partir de los existentes, con diferentes operaciones matemáticas. Tanto vtreat como forest se decantan por estas dos combinaciones: sum(51,52) y average(51,52). Pero nunca he podido conseguir una fórmula para el valor objetivo. Y los modelos entrenados con estos predictores tampoco pueden predecir nada adecuadamente.

 

¿100 entradas? Eso es fuerte.

¿Por qué no mil?

No tenéis ni idea de lo que es una red de nervios.

 
Dr.Trader:

Intenté encontrar la importancia de los predictores a través del paquete vtreat. Pero el paquete no es capaz de buscar relaciones entre predictores, sólo tiene en cuenta las relaciones directas entre el predictor y el objetivo, no es muy adecuado para esta tarea.

A juzgar por la importancia de vtreat - lag_diff_51 y lag_diff_52 son los más útiles. Poco a poco fui añadiendo otros predictores de la lista recibida y miré el crecimiento de R^2 en los datos de entrenamiento para el bosque. Al final me detuve en estos predictores - 51, 52, 53, 54, 55, 17, 68, muy probablemente se utilizan para calcular el objetivo. R^2 en los datos de entrenamiento con ellos > 0,9, pero en las pruebas y validaciones todo es malo. Ahora necesito probar diferentes operaciones matemáticas con estos predictores, seleccionar fórmulas y demás, para que en la validación cruzada el R^2 también aumente. No lo buscaré más :)

Lo terminé más tarde:
Experimenté un poco más, hice un montón de nuevos predictores a partir de los existentes, con diferentes operaciones matemáticas. Tanto vtreat como forest se decantan por estas dos combinaciones: sum(51,52) y average(51,52). Pero nunca he podido conseguir una fórmula para el valor objetivo. Y los modelos entrenados con estos predictores tampoco pueden predecir nada adecuadamente.

Caminando cerca, pero pasando de largo. No se ha señalado todo. Existen correlaciones lineales entre los productos y las entradas. Pero no ayudan mucho.

Tienes el bosque sobreentrenado. Es mejor mirar el CV. Luego te contaré el secreto de los datos. Se supone que es sencillo. Hay mucha redundancia en las entradas.
 

Además, 0,9 es sobreentrenamiento. Un R^2 superior a 0,6 en un conjunto de entrenamiento es un máximo realista.

Una cosa más: recuerda lo de las interacciones. Las conexiones individuales pueden llevar a una dirección falsa.

Yo mismo estoy tratando de resolver mi propia tarea. He aplicado NS de una sola capa. La prueba R^2 no supera el 0,148. No encaja...

Razón de la queja: