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

 
SanSanych Fomenko:

2. Ver vídeo:

Lo siento, pero las tonterías habituales de un estudiante de doctorado inculto ...

Como dicen, lo que compro, lo vendo. Me hicieron una pregunta y di un vídeo con una respuesta detallada. El conferenciante no se hace el listo, sino que suelta la teoría del aprendizaje estadístico.

ver. Vapnik V.N. Teoría del aprendizaje estadístico. NY: John Wiley, 1998.

SanSanych Fomenko:

1. Un notable deterioro de la generalizabilidad, si eliminamos al menos un predictor informativo de la muestra.


Créame, desgraciadamente esto no demuestra nada. Además, si el conjunto de predictores es malo (mucho ruido), este efecto será más fuerte cuanto más ruido haya. Esto se explica de forma muy sencilla: cuanto más ruido, más fácil es para el algoritmo encontrar un valor "conveniente".

Como se dice, para gustos y colores...

SanSan Fomenko:

En cuanto a su expediente.

1. No he podido construir 6 modelos de clasificación con sus datos: error superior al 50%. Si quieres puedo publicar los resultados aquí

Gracias por la información. Los resultados ya están claros: una falta total de ellos.

SanSanych Fomenko:

2. La razón de este resultado es que tiene un conjunto muy pobre de predictores - ruido, es decir, predictores no relevantes para la variable objetivo. Los predictores 6, 7 y 8 tienen cierto poder predictivo, pero muy poco. No trabajo con esos predictores. Los demás son sólo ruido.

Bueno, bueno. Sin ruido cualquier tonto es capaz de clasificar correctamente. El ruido está ahí y en una cantidad decente. También hay información útil. Aquí están, por ejemplo, los resultados de la antigua libVMR 3.01:

/**
* La calidad del modelado en fuera de muestra:
*
* TruePositives: 245
* TrueNegatives: 113
* FalsosPositivos: 191
* FalsosNegativos: 73
* Total de patrones en las muestras con estadísticas: 622
* Total de errores fuera de la muestra: 264
* Sensibilidad de la capacidad de generalización: 56,19266055045872%.
* Especificidad de la capacidad de generalización: 60,752688172043015%
* Capacidad de generalización: 16,94534872250173%
* Indicador de Reshetov: 0,1075044213677977

*/

Es decir, he subido casi un 17% en la capacidad de generalización.

El rendimiento del nuevo es notablemente mejor.

 
Alexey Burnakov:
Utilice la validación cruzada para recoger el número de componentes. Mejor valor en la validación cruzada y luego comprobar en el conjunto de validación.

No salió bien otra vez. Habría tomado 20 componentes, ya que min(trainwinrate. validate1winrate, validate2winrate) es la mayor en comparación con otras cantidades de componentes. Y obtendría un resultado de ~55% en el fronttest, incluso peor que antes. Salió un modelo extraño: el porcentaje de victorias es un poco más del 50% (no es adecuado para el mercado de divisas), la validación cruzada no funciona, la importancia de los predictores no se puede sacar. Sólo puedo imprimirlo y colgarlo en la pared :)


 
Yury Reshetov:

* TruePositives: 245

* TrueNegatives: 113
* FalsosPositivos: 191
* FalsosNegativos: 73

Así que tienes un porcentaje de victorias del 57,6% en test.csv, ¿verdad? Voy a probar mi método para cribar los predictores y entrenar la neurona, mañana informaré de los resultados.
 
Dr.Trader:

No salió bien otra vez. Habría tomado 20 componentes, ya que min(trainwinrate. validate1winrate, validate2winrate) es la mayor en comparación con otras cantidades de componentes. Y obtendría un resultado de ~55% en el fronttest, incluso peor que antes. Salió un modelo extraño: el porcentaje de victorias es un poco más del 50% (no es adecuado para el mercado de divisas), la validación cruzada no funciona, la importancia de los predictores no se puede sacar. Sólo puedo imprimirlo y colgarlo en la pared :)


Si no tiene suficientes datos, la validación cruzada puede dar malos resultados. El aprendizaje automático implica decenas de miles de observaciones. Si la validación cruzada es mala, significa que el modelo en su conjunto es así.
 

Estos son los resultados de mi gran experimento. Debido a un error en el viento, el código se interrumpió y no terminé de aprender sobre todos los personajes. Pero esto es suficiente para mí por ahora. Buenos resultados en el eurusd.

Sólo he mostrado los valores máximos que he encontrado sin especificar ningún parámetro. Ya hay un buen resultado. Las sutilezas del entorno del GBM ayudan.

 

Al predecir el eurusd con 512 minutos de antelación, se puede ganar 1,5 pips por operación, ¿estoy en lo cierto? ¿Y el diferencial también se tiene en cuenta? También es importante conocer el drawdown máximo para ese tiempo, no tiene sentido operar incluso por 10 pips, si el drawdown para ese tiempo fue de doscientos. Para estimar la operación, sería bueno utilizar el Ratio de Sharpe pero no lo he visto en R, para empezar podemos utilizar el siguiente factor: (beneficio final)/(reducción máxima del patrimonio en todo el tiempo).

Por ejemplo, supongamos que tenemos una señal 1. El operador ha ganado un 1000% durante el año, pero su reducción máxima fue del 50%. Al mismo tiempo, la señal 2 sólo tiene un 600% de beneficios en el año, pero la reducción máxima fue del 25%. Puede parecer que el operador 1 es mejor (en términos de beneficio), pero en realidad no lo es, simplemente arriesga el doble. El primer comerciante tiene 1000/50 = 20, el segundo tiene 600/25 = 24. Así que es mejor inscribirse en la segunda señal, y duplicar el riesgo si quiere arriesgar el 50% del depósito.

Además, en su experimento es importante evaluar los riesgos. Operar en un intervalo pequeño puede ser mucho más rentable, ya que el modelo puede reaccionar a tiempo a los picos de precios y ganar con ellos, en lugar de esperar a través de un enorme drawdown con el riesgo de coger un stop loss.

 
Alexey Burnakov:

Colegas, si tienen tiempo, ¿pueden hacerme preguntas en el artículo?https://habrahabr.ru/company/aligntechnology/blog/303750/

¡Porque Habr es silencioso!

Hubr no está en silencio - Hubr está leyendo.
Muchas cartas.
 
Dr.Trader:

Al predecir el eurusd con 512 minutos de antelación, se puede ganar 1,5 pips por operación, ¿estoy en lo cierto? ¿Y el diferencial también se tiene en cuenta? También es importante conocer el drawdown máximo para ese tiempo, no tiene sentido operar incluso por 10 pips, si el drawdown para ese tiempo fue de doscientos. Para estimar la operación, sería bueno utilizar el Ratio de Sharpe pero no lo he visto en R, para empezar podemos utilizar el siguiente factor: (beneficio final)/(reducción máxima del patrimonio en todo el tiempo).

Por ejemplo, supongamos que tenemos una señal 1. El operador ha ganado un 1000% durante el año, pero su reducción máxima fue del 50%. Al mismo tiempo, la señal 2 sólo tiene un 600% de beneficios en el año, pero la reducción máxima fue del 25%. Puede parecer que el operador 1 es mejor (en términos de beneficio), pero en realidad no lo es, simplemente arriesga el doble. El primer comerciante tiene 1000/50 = 20, el segundo tiene 600/25 = 24. Así que es mejor inscribirse en la segunda señal, y duplicar el riesgo si quiere arriesgar el 50% del depósito.

Además, en su experimento es importante evaluar los riesgos. Operar en un intervalo pequeño puede ser mucho más rentable, ya que el modelo puede reaccionar a tiempo a los picos de precios y ganar con ellos, en lugar de esperar a que se produzca una enorme caída y arriesgarse a coger un stop loss.

Sí 1,5 puntos con un margen de 1.

Todos los demás indicadores se evaluarán juntos: publicaré búhos en mt4 sobre el modelo entrenado.

Por desgracia, no puedo calcular Sharp y etc. en R, porque tengo 49 muestras aleatorias, que no restablecen la secuencia de operaciones.

Los resultados se dan para 13000 operaciones para el eurusd en particular.
 
Dr.Trader:
Así que tu porcentaje de victorias en test.csv es del 57,6%, ¿verdad? Probaré mi método para cribar los predictores y entrenar la neurona e informaré de los resultados mañana.

No la ganancia, sino el número de predicciones correctas de la dirección futura de los precios. El clasificador produce uno de los dos valores en la muestra de prueba: Positivo: se espera un aumento futuro de los precios, Negativo: se espera una disminución futura de los precios. Si predice correctamente una muestra de prueba, se le asignará Verdadero. Si es incorrecto, es falso.

Sensibilidad de la capacidad de generalización: 56,19266055045872% - el crecimiento futuro de los precios es correcto: 100% * TP / (TP + FP) = 100% * 245 / (245 + 191) = 100% * 245 / 436 = 56,192660550458715%

Especificidad de la capacidad de generalización: 60,752688172043015% - predicción correcta de la futura disminución de precios: 100% * TN / (TN + FN) = 100% * 113 / (113 + 73) = 100% * 113 / 186 = 60,75268817204302%.

 
Yury Reshetov:

No la ganancia, sino el número de predicciones correctas de la dirección futura de los precios. El clasificador de la muestra de prueba produce uno de los dos valores: Positivo: se supone que el precio crecerá en el futuro, Negativo: se supone que el precio disminuirá en el futuro. Si predice correctamente una muestra de prueba, se le asignará Verdadero. Si es incorrecto, es falso.

Sensibilidad de la capacidad de generalización: 56,19266055045872% - el crecimiento futuro de los precios es correcto: 100% * TP / (TP + FP) = 100% * 245 / (245 + 191) = 100% * 245 / 436 = 56,192660550458715%

Especificidad de la capacidad de generalización: 60,752688172043015% - predicción correcta de la futura disminución de precios: 100% * TN / (TN + FN) = 100% * 113 / (113 + 73) = 100% * 113 / 186 = 60,75268817204302%.

Yuri, la primera prueba con tus datos:

método función_de_pérdida cv_folds bag_frac parámetros_del_modelo AUC_cv precisión_entrenamiento accuracy_validate
GBM bernoulli 4 0.4 0.015_|_7_|_70_|_600 0.429659 0.590361 0.50501
GBM bernoulli 4 0.6 0.02_|_5_|_110_|_600 0.485727 0.586345 0.51503

Dos conjuntos diferentes de valores de parámetros para el entrenamiento. Cabe destacar que el AUC está por debajo del plinto en la validación cruzada.

En general, una precisión del 51,5% en la prueba es lo mejor que ha resultado.

Ni siquiera sé cómo se puede evitar el 60%.