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

 
Aleksey Nikolayev:

Si, por ejemplo, todas las estrategias hacen sólo BUY, entonces probablemente se reduce a minimizar su intersección en el tiempo (minimizando las correlaciones, que siempre son positivas). Si se permite la compra y la venta, los cruces de tiempo pueden ser útiles para compensar mutuamente las partes malas de las estrategias (las correlaciones negativas suelen ser buenas para la cartera).

Supongo que la correlación puede determinarse simplemente a través del momento de las estrategias y el momento de su superposición.

En general, estoy de acuerdo sobre la compensación mutua de señales dirigidas de forma diferente, pero para esto en mi caso necesito aplicar diferentes estrategias, y hacer un margen de beneficio para cada una - es otro cantar, pero pienso aplicarlo también.

Pero para encontrar estrategias similares con el fin de seleccionarlas de un grupo o para dividir su riesgo (lote), debemos considerar no sólo los tiempos de entrada y salida, sino también la dirección de entrada. Debería pensar cómo hacerlo mejor.

 
Aleksey Vyazmikin:

¿Cómo que lo hace perfectamente? No lo hago manualmente, escribo un script que lo hace como lo veo ahora.

En mi caso, lo ideal sería una evaluación por separado de cada variante del valor del predictor. Y, quiero fusionar los rangos de activación de un predictor amplificando un objetivo en un solo predictor, cosa que las mallas que conozco no hacen dividiendo los rangos secuencialmente, de igual manera fusionando el predictor en el ranking a spar (construyendo un nodo) con otro predictor. Hasta aquí la teoría.


¿Qué tipo de rejilla de partición agregaría los rangos en una sola división, eliminando los valores intermedios, como en la figura de abajo los valores 1 y 4?


Perfecto - en el sentido de perfectamente preciso según la función de estimación de la división. Evaluará miles de opciones y recordará la mejor, y se convertirá en un nodo.

Lo más fácil es entrenar 24 bosques/boosts estándar, cada uno de ellos alimentando predictores de la hora apropiada.

 
elibrarius:

Perfecto - en el sentido de perfectamente exacto según la función de evaluación dividida. Evalúa miles de opciones y recuerda la mejor, que se convierte en el nodo.

Está claro que esto es según el algoritmo, pero ¿qué algoritmo es el correcto? Sólo en CatBoost hay 3 algoritmos para la construcción de una red.

elibrarius:

La forma más sencilla es entrenar 24 bosques/busts estándar, cada uno de ellos alimentando predictores de la hora apropiada.

Esto reduciría la muestra en aproximadamente 24 veces (y mi muestra ya es pequeña), y luego, observando el principio codicioso de la construcción de árboles (no siempre es cierto, como resultó de mis experimentos con la división de árboles) seleccionaríamos sólo aquellos predictores para la ramificación del árbol, que exactamente en una hora particular estadísticamente tenía la mejor probabilidad, Pero en mi opinión, deberíamos encontrar los predictores y ponerlos en el árbol, aquellos que independientemente de otras condicionalidades dieran una ventaja en toda la muestra, entonces obtendremos no un ajuste para una hora concreta del día (descripción condicional más precisa de un evento para la activación), sino una acumulación de probabilidades independientes en una hoja.

 
Aleksey Vyazmikin:

Se trata de un algoritmo que comprueba la capacidad de predicción del rango de valores de los predictores y trata de dividir las partes del rango para que destaquen mejor la capacidad de predicción. Supongamos que hay una muestra con 3 objetivos, la muestra se distribuye como 1 - 24%, 2 - 50%, 3 - 26%, y hay algún predictor con un rango de valores, por lo que el objetivo de la cuadrícula es encontrar áreas de valores del predictor donde, digamos, el objetivo 1 será "predicho" en más de un 24%, y la división asignará esa área. Existen diferentes variantes de algoritmos para construir dichas cuadrículas.

Una idea interesante, pero ¿no es más fácil hacerlo así...?

p.1) Tenemos algún tipo de algoritmo de aprendizaje automático. MO

p.2) Hay una muestra que se divide en un tren y una prueba.

p.3) hay un precio que se agrupa según un determinado principio (tiempo, patrón gráfico, todo junto, algo más... ...) (puede percibirse como una situación de mercado o simplemente como un cluster)

pp. debe haber muchos o muy muchos clusters


algoritmo de acciones :

1) enseñar MO en una bandeja

2) predecir la prueba mediante un modelo semántico.

3) en la prueba identificamos aquellos puntos que el modelo predijo sin errores, los llamamos XT (punto bueno)

4) cada ht corresponde a un cluster del paso 3 anterior...

Eso es todo, ahora sabemos en qué grupos (estados) del mercado el modelo comercia bien... Los clústeres (estados) son como un análogo de su cuadrícula, es decir, intentamos decidir qué puede pronosticar y qué no a través de los clústeres (estados)...


Pero ambos enfoques tienen problemas conceptuales que deberían resolverse primero. El problema ni siquiera está en el enfoque, sino en la forma de presentar la información.

 
mytarmailS:


p.3) hay un precio que se agrupa según algún principio (tiempo, patrón gráfico, todos juntos, algo más... ...) (puede percibirse como una condición de mercado o simplemente como una agrupación)

pp. debe haber muchos o muy muchos clusters

Aquí no entiendo, ¿estás sugiriendo tomar el precio desnudo de los puntos de recargo objetivo y agruparlos o qué?


mytarmailS:


3) durante una prueba identificamos los puntos que el modelo predijo sin errores, llamémoslos HT (buen punto)

4) cada ht corresponde a un cluster del paso 3 anterior...

Eso es todo, ahora sabemos en qué grupos (estados) del mercado el modelo comercia bien... Los clústeres (estados) son como un análogo de su cuadrícula, es decir, intentamos utilizar los clústeres para dividir lo que podemos predecir y lo que no...

La idea es interesante, pero su principio no está relacionado con mi sugerencia o no la entiendo del todo. Descubrimos que el modelo activaba un determinado porcentaje de racimos, y entonces ¿qué hacer con él? Entiendo que hay que mirar en qué hoja (si se trata de un árbol) cuántos clústeres se activan, y si la hoja activa un clúster mucho más a menudo, entonces es sólo una señal de que ha aprendido a identificarlo. En este caso, podría ser que una gran proporción de las hojas se activen correctamente de manera uniforme en diferentes racimos, lo que indicaría aleatoriedad, aparentemente. Una vez más, hay que estar seguro del algoritmo de agrupación: asegúrese de que el resultado son clusters únicos y no muchos similares...

 
Aleksey Vyazmikin:

Está claro que esto es según el algoritmo, pero ¿qué algoritmo es el correcto? Sólo CatBoost tiene 3 algoritmos para construir la red.

Esto reducirá la muestra por cerca de 24 veces (y mi muestra ya es pequeña), y luego, observando el principio de la construcción de árboles codiciosos (no siempre es cierto, como resultó de mis experimentos con los árboles de división) vamos a seleccionar sólo aquellos predictores para la ramificación del árbol, que es en una hora particular estadísticamente tienen la mejor probabilidad, y la necesidad, en mi opinión, para encontrar signos y ponerlos en el árbol, los que, independientemente de otras condiciones dio la ventaja en toda la muestra, entonces se obtiene no se ajusta a una hora particular del día (condicional).

¿Qué diferencia hay en el lugar donde se reduce la muestra? ¿Afuera, haciendo 24 bosques o adentro, por ejemplo sumando los primeros 24 nodos separados por horas? De estos 24 nodos, cada rama restante tomará 1/24 de la muestra.

 
Por cierto, lo que no me gusta del boosting es que la profundidad recomendada del árbol es de 7 a 10.
Es decir, si tenemos 100 predictores y la división comienza en la mitad de cada predictor. Es muy probable que tengamos 7 predictores diferentes divididos por la mitad. Tal vez 1 o 2 se dividan a un cuarto, probablemente más pequeño.
¿O en los algoritmos de refuerzo el algoritmo no funciona por medio de la división, sino en trozos más pequeños? ¿Alguien lo sabe?
¿Y quién utiliza qué profundidad de árbol?
 
elibrarius:

¿Qué diferencia hay en el lugar donde se reduce el muestreo? ¿En el exterior, haciendo 24 bosques o en el interior, por ejemplo añadiendo los primeros 24 nodos con un reloj dividido? De esos 24 nodos, cada rama restante tomará 1/24 de la muestra.

No se trata de la reducción, sino de las estadísticas del comportamiento del predictor en la muestra fuera de la división - esto debería reducir la aleatoriedad de la selección del valor del predictor.

Por cierto, ¿AlgLib hace la cuadrícula en cada división o una vez y luego utiliza esa cuadrícula? Según tengo entendido, los desarrolladores de CatBoost afirman que la parrilla se hace una vez por ellos.

 
Aleksey Vyazmikin:

No entiendo, ¿estás sugiriendo tomar el precio desnudo de los puntos de recargo objetivo y agruparlos o qué?

El objetivo es tuyo, cualquier objetivo... Estoy un poco desgarrado ....

Sólo se necesitan racimos para un objetivo:


Aquí encontramos los HT en los nuevos de prueba, y los aceptamos como buenos...

Ahora en los nuevos datos necesitamos encontrar este TX para aplicarle el modelo, ya que el modelo funciona bien sólo en el TX, y ¿cómo lo reconocemos en los nuevos datos? como una opción por el número de cluster

 
Aleksey Vyazmikin:

En general, estoy de acuerdo sobre la compensación mutua de señales dirigidas de forma diferente, pero para esto en mi caso necesito usar diferentes estrategias, y hacer un margen de beneficio para cada una - ese es otro tema, pero pienso usarlo también.

Pero para encontrar estrategias similares con el fin de seleccionarlas de un grupo o para dividir su riesgo (lote), debemos considerar no sólo los tiempos de entrada y salida, sino también la dirección de entrada. Tengo que pensar cómo hacerlo mejor.

Llevaré la idea a su conclusión lógica. Supongamos que tenemos un conjunto de sistemas en un activo. Cada sistema mantiene la posición de volumen fijo cuando está en el mercado, pero la dirección puede variar. Se conocen los rendimientos y las volatilidades de la estrategia. Definamos la correlación entre las estrategias utilizando la fórmula (t1-t2)/cuadrado (T1*T2) donde T1 y T2 son la duración de su tiempo en el mercado, t1 y t2 son la duración del tiempo que estas estrategias están simultáneamente en el mercado y dirigidas en la misma y opuesta dirección respectivamente. Se trata de una fórmula simplificada derivada bajo el supuesto de la proximidad del precio a la SB. Ahora tenemos todos los datos para aplicar la teoría de Markowitz y encontrar la cartera óptima.

Obviamente, no obtendremos ninguna cartera significativa de esta manera (al menos porque sólo se utiliza un activo). Necesitamos algunas modificaciones.

1) Cambiar el algoritmo de optimización (límites de los parámetros, penalizaciones). Aclarar la definición de la correlación entre estrategias.

2) Optimizar la cartera ya en el momento de crear la estrategia. Es decir, buscar estrategias basadas en la condición de optimización de la cartera en ellos. No está del todo claro cómo se puede formalizar esto de forma aplicable en la práctica, pero el enfoque parece más lógico en general. Aunque, como ya ha escrito, requeriría reescribir los algoritmos, etc. etc. No estoy seguro de que merezca la pena.