
Encuentre existencias en movimiento altas antes de que se muevan utilizando la detección de anomalías y el aprendizaje automático. Sorteo utiliza el aprendizaje automático para ver la acción del volumen + precio e inferir patrones inusuales que pueden dar como resultado grandes movimientos en las existencias.
| Camino | Descripción |
|---|---|
| sorprender | Carpeta principal. |
| └ Diccionarios | Carpeta para guardar los diccionarios de datos para su uso posterior. |
| └ Figuras | Figuras para estos repositorios de GitHub. |
| └ acciones | Lista de todas las acciones que desea analizar. |
| data_loader.py | Módulo para cargar datos de Yahoo Finance. |
| detection_engine.py | Módulo principal para ejecutar la detección de anomalías en datos y encontrar acciones con la mayoría de los patrones de precios y volumen inusuales. |
| características_generator.py | Genera características de retorno de precio y volumen, así como muchos indicadores técnicos. |
Deberá instalar el siguiente paquete para entrenar y probar los modelos.
Puede instalar todos los paquetes usando el siguiente comando. Tenga en cuenta que el script fue escrito con Python3.
pip install -r requirements.txt
También puede usar Docker si sabe qué es y tiene algún conocimiento sobre cómo usarlo. Estos son los pasos para ejecutar la herramienta con Docker.
docker build . -t surpriver<C:\path\to\this\dir> con el directorio en el que está trabajando.docker-compose up -ddocker exec -it surpriver en su línea de comando.Si desea continuar y obtener directamente las acciones más anómalas para hoy, puede ejecutar el siguiente comando para obtener las acciones con los patrones más inusuales. Nos sumergiremos más profundamente en el comando en las siguientes secciones.
python detection_engine.py --top_n 25 --min_volume 5000 --data_granularity_minutes 60 --history_to_use 14 --is_load_from_dictionary 0 --data_dictionary_path 'dictionaries/data_dict.npy' --is_save_dictionary 1 --is_test 0 --future_bars 0
Este comando le dará las 25 acciones principales que tuvieron la puntuación de anomalía más alta en las últimas 14 bares de velas de 60 minutos . También almacenará todos los datos que utilizó para hacer predicciones en la carpeta Diccionarios/data_dict.npy . A continuación se muestra una explicación más detallada de cada parámetro.
python detection_engine.py --top_n 25 --min_volume 5000 --data_granularity_minutes 60 --history_to_use 14 --is_load_from_dictionary 1 --data_dictionary_path 'dictionaries/data_dict.npy' --is_save_dictionary 0 --is_test 0 --future_bars 0 --output_format 'CLI'
Observe el cambio en IS_SAVE_Dictionary y IS_LOAD_FROM_DICCIONARY .
Aquí hay una salida de cómo se ve una sola predicción. Tenga en cuenta que las puntuaciones negativas indican patrones anómalos e inusuales más altos, mientras que las puntuaciones positivas indican patrones normales. Cuanto más bajo, mejor .
Last Bar Time: 2020-08-25 11:30:00-04:00
Symbol: SPI
Anomaly Score: -0.029
Today Volume (Today = Date Above): 313.94K
Average Volume 5d: 206.53K
Average Volume 20d: 334.14K
Volatility 5bars: 0.013
Volatility 20bars: 0.038
Future Absolute Sum Price Changes: 72.87
Si sospecha del uso del aprendizaje automático y la inteligencia artificial en el comercio, puede probar las predicciones de esta herramienta en datos históricos. Los dos argumentos de línea de comandos más importantes para las pruebas son IS_TEST y Future_Bars . Si el primero se establece en 1 y el posterior se establece en cualquier cosa más de 5, la herramienta realmente dejará esa cantidad de datos para fines de análisis y usará los datos antes de las predicciones anómalas. A continuación, analizará los datos restantes para ver qué tan bien lo hicieron las predicciones. Aquí hay un ejemplo de una trama de dispersión del siguiente comando.
python detection_engine.py --top_n 25 --min_volume 5000 --data_granularity_minutes 60 --history_to_use 14 --is_load_from_dictionary 0 --data_dictionary_path 'dictionaries/data_dict.npy' --is_save_dictionary 1 --is_test 1 --future_bars 25
Si ya ha generado el diccionario de datos, puede usar el siguiente comando donde configuramos IS_LOAD_FROM_DICCIONARY en 1 e IS_SAVE_DICCIONARY a 0.
python detection_engine.py --top_n 25 --min_volume 5000 --data_granularity_minutes 60 --history_to_use 14 --is_load_from_dictionary 1 --data_dictionary_path 'dictionaries/data_dict.npy' --is_save_dictionary 0 --is_test 1 --future_bars 25

Como puede ver en la imagen de arriba, las acciones anómalas (puntaje <0) generalmente tienen un cambio absoluto más alto en el futuro en promedio. Eso demuestra que las predicciones son en realidad para aquellas acciones que se movieron más del promedio en las próximas horas/días. Una pregunta surge aquí, ¿qué pasa si la herramienta es solo elegir las acciones de volatilidad más alta porque eso produciría un alto cambio absoluto en el futuro? Para demostrar que no es el caso, aquí está la descripción más detallada de las estadísticas que obtiene del comando anterior.
--> Future Performance
Correlation between future absolute change vs anomalous score (lower is better, range = (-1, 1)): **-0.23**
Total absolute change in future for Anomalous Stocks: **89.660**
Total absolute change in future for Normal Stocks: **43.000**
Average future volatility of Anomalous Stocks: **0.332**
Average future volatility of Normal Stocks: **0.585**
Historical volatility for Anomalous Stocks: **2.528**
Historical volatility for Normal Stocks: **2.076**
Puede ver que la volatilidad histórica para las existencias anómalas normales de VS no es tan diferente. Sin embargo, la diferencia en el cambio futuro absoluto total es el doble para las acciones anómalas en comparación con las acciones normales.
Ahora puede especificar qué fuente de datos le gustaría usar junto con qué lista de acciones desea usar.
python detection_engine.py --top_n 25 --min_volume 500 --data_granularity_minutes 60 --history_to_use 14 --is_load_from_dictionary 0 --data_dictionary_path 'dictionaries/feature_dict.npy' --is_save_dictionary 1 --is_test 0 --future_bars 0 --data_source binance --stock_list cryptos.txt
Intentaremos publicar los 25 mejores resultados para un solo conjunto de parámetros cada semana.
La herramienta solo encuentra acciones que tienen algún comportamiento inusual en su precio y acción de volumen combinadas. No predice en qué dirección se moverá el stock. Esa podría ser una característica que implementaré en el futuro, pero por ahora, deberá mirar los gráficos y hacer su DD para resolverlo.
Un producto de Tradytics
Copyright (c) 2020-presente, Tradytics.com