Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 30
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
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í
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.
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 :)
* TruePositives: 245
* TrueNegatives: 113
* FalsosPositivos: 191
* FalsosNegativos: 73
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 :)
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.
Colegas, si tienen tiempo, ¿pueden hacerme preguntas en el artículo?https://habrahabr.ru/company/aligntechnology/blog/303750/
¡Porque Habr es silencioso!
Muchas cartas.
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.
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%.
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:
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%.