1189
Cómo gané $ 500K en el aprendizaje de la máquina y la negociación de alta frecuencia - Parte 2
Desde el intérprete: Continuar traducir artículos ( parte 1 ), capturó mi atención y extraños en alma habrazhitelyam, sobre un tipo que, usando sus habilidades tecnológicas, fue capaz de ganar más de medio millón de dólares al año. i>
Creación de un simulador de comercio y derecho h4>
Cuando el comando se envía al mercado en el simulador que tiene que simular el retraso de tiempo. El hecho de que mi sistema "vio" la propuesta no significa que ella puede comprar de inmediato. El sistema le enviará un comando, espere durante unos 20 milisegundos, y sólo si la oferta sigue siendo válida, será considerado como el cierre de la transacción. Esto no es del todo exacto, ya que la duración del retraso real no siempre es el mismo y no se ha registrado. Cuando pongo una oferta para comprar o vender acciones, tengo que tener en cuenta el flujo de ejecución de las transacciones (que proporciona API) y lo utilizan para realizar un seguimiento cuando se ejecuta mi orden. Para hacer esto correctamente, necesito hacer un seguimiento de la posición de mi equipo en la cola (generada por el sistema de primero en entrar, primero en salir). Y de nuevo, no pude hacerlo con exactitud, pero modela como cerca de sistema de realidad.
Asegurar operaciones rentables h4>
La predicción del comportamiento de los precios (que hemos comentado anteriormente) Tratada nivel de precios (niveles internos significa una mayor probabilidad de salto de precios) El número de contratos a mi orden en la cola (el el más pequeño es el mejor) El número de contratos después de mi orden en la cola (cuanto más alto mejor)
Todas las variables utilizadas en este paso para ser optimizados. Se hace de la misma manera que yo optimizado variables de los indicadores de los cambios de precios, excepto que en este caso me optimizado variables en el límite inferior de las pérdidas y ganancias.
¿Qué ignoró mi programa h4>
El precio en la posición de entrada - En la oficina de las empresas comerciales a menudo hablar sobre el precio al que alguien entre en largo y corto transacción como si se debe afectar a este tipo de decisiones en el futuro. A pesar de que estos datos son de cierta importancia en la estrategia para reducir los riesgos a los que no guardan relación con el desarrollo futuro de la evolución del mercado. Así que mi programa se ignora por completo esta información. Es como que los costos de ignorar hundidos Conclusión largo comercio / corto -. Como regla general, un comerciante, una persona tendría unos criterios especiales para determinar dónde vender una posición larga, y donde - a entrar en un comercio a corto. Sin embargo, desde el punto de vista de mi algoritmo, no hubo diferencia entre estos dos conceptos. Si mi algoritmo esperando una caída de los precios, la venta era un paso lógico, independientemente de qué personaje fue el trato: ". Plana» La estrategia de "" largo "," corto "o duplicar" - Esta es una estrategia común según el cual los comerciantes compran más acciones en el caso de que la subasta originalmente no fue ir a su favor. Como resultado, el precio promedio de compra se reduce, y esto significa que cuando (si) el supuesto cambio de precio de las acciones, que "desalentar" sus costos en ningún momento. Creo que es sólo una estrategia horrible, a menos que usted es Warren Buffett. Usted engaña a sí mismo pensando que usted está todo bien, porque la mayoría de sus transacciones se quemará. El problema es que si no tienes suerte, la pérdida será impresionante. Otra consecuencia de este enfoque es que se vuelve extremadamente difícil determinar si o no usted tiene una ventaja en el mercado, o simplemente tuvo suerte. Una cualidad importante de mi programa era justo lo que yo era capaz de realizar un seguimiento y confirmar la situación en la que mi programa realmente tenía esa ventaja. Gestión de Riesgos h4>
Usando el algoritmo h4>
Creación de un simulador de comercio y derecho h4>
Por lo tanto, tuve un marco que me permitió probar y optimizar los indicadores. Pero tenía que hacer algo más - que necesitaba un marco de trabajo que me permitiera probar y optimizar todo el sistema de comercio de comerciante por completo; uno en el que yo pudiera enviar comandos y las posiciones abiertas. En ese caso, yo sería capaz de optimizar las ganancias y pérdidas totales, y - en cierta medida - las ganancias medias y las pérdidas en una sesión de negociación
.
Para crear tal marco sería difícil - en cierto sentido incluso imposible simular exactamente, pero lo hice todo lo que pude. Y aquí están algunas de las preguntas que he tenido que enfrentar:
Cuando el comando se envía al mercado en el simulador que tiene que simular el retraso de tiempo. El hecho de que mi sistema "vio" la propuesta no significa que ella puede comprar de inmediato. El sistema le enviará un comando, espere durante unos 20 milisegundos, y sólo si la oferta sigue siendo válida, será considerado como el cierre de la transacción. Esto no es del todo exacto, ya que la duración del retraso real no siempre es el mismo y no se ha registrado. Cuando pongo una oferta para comprar o vender acciones, tengo que tener en cuenta el flujo de ejecución de las transacciones (que proporciona API) y lo utilizan para realizar un seguimiento cuando se ejecuta mi orden. Para hacer esto correctamente, necesito hacer un seguimiento de la posición de mi equipo en la cola (generada por el sistema de primero en entrar, primero en salir). Y de nuevo, no pude hacerlo con exactitud, pero modela como cerca de sistema de realidad.
Asegurar operaciones rentables h4>
Con la colocación del modelo de simulación de órdenes, yo era capaz de enviar comandos a la central en modo de simulación y realizar un seguimiento de las ganancias y pérdidas contingentes. Pero como mi sistema va a entender dónde y cuándo comprar y vender?
Predecir el comportamiento de los precios fue el punto de partida para el sistema, pero la historia no ha terminado. A continuación, he desarrollado un sistema de puntuación para cada uno de los 5 niveles de precios de compra y venta. Entre tales el nivel de entrada de un nivel superior de precios internos de la demanda (por órdenes de compra) y un nivel por debajo del precio de la oferta en el interior (para órdenes de venta).
Si la cuenta en cualquier nivel de precios está por encima de un valor umbral predeterminado, significa que a este nivel en mi sistema debe ser ofrecer activamente comprar / vender. Si la puntuación está por debajo del umbral, entonces las órdenes activas deben ser abolidas. Estas condiciones son a menudo sería una situación en la que mi sistema de repente exhibido en la oferta del mercado para la compra y luego removerlo de inmediato (en realidad yo estaba tratando de reducir al mínimo la probabilidad de que este tipo de eventos, ya que cualquier persona que vive en una situación similar en la pantalla hubiera parecido terriblemente molesto).
Se calcularon las cuentas correspondientes a los diferentes niveles de precios en base a los siguientes factores:
La predicción del comportamiento de los precios (que hemos comentado anteriormente) Tratada nivel de precios (niveles internos significa una mayor probabilidad de salto de precios) El número de contratos a mi orden en la cola (el el más pequeño es el mejor) El número de contratos después de mi orden en la cola (cuanto más alto mejor)
Todas las variables utilizadas en este paso para ser optimizados. Se hace de la misma manera que yo optimizado variables de los indicadores de los cambios de precios, excepto que en este caso me optimizado variables en el límite inferior de las pérdidas y ganancias.
¿Qué ignoró mi programa h4>
Cuando el comercio lleva a la gente a menudo influir significativamente en las emociones y prejuicios que pueden conducir a unas soluciones subóptimas. Por supuesto, yo no quiero tener estos prejuicios tenían alguna reflexión en mi código. Así que mi sistema de ignorar algunos factores:
El precio en la posición de entrada - En la oficina de las empresas comerciales a menudo hablar sobre el precio al que alguien entre en largo y corto transacción como si se debe afectar a este tipo de decisiones en el futuro. A pesar de que estos datos son de cierta importancia en la estrategia para reducir los riesgos a los que no guardan relación con el desarrollo futuro de la evolución del mercado. Así que mi programa se ignora por completo esta información. Es como que los costos de ignorar hundidos Conclusión largo comercio / corto -. Como regla general, un comerciante, una persona tendría unos criterios especiales para determinar dónde vender una posición larga, y donde - a entrar en un comercio a corto. Sin embargo, desde el punto de vista de mi algoritmo, no hubo diferencia entre estos dos conceptos. Si mi algoritmo esperando una caída de los precios, la venta era un paso lógico, independientemente de qué personaje fue el trato: ". Plana» La estrategia de "" largo "," corto "o duplicar" - Esta es una estrategia común según el cual los comerciantes compran más acciones en el caso de que la subasta originalmente no fue ir a su favor. Como resultado, el precio promedio de compra se reduce, y esto significa que cuando (si) el supuesto cambio de precio de las acciones, que "desalentar" sus costos en ningún momento. Creo que es sólo una estrategia horrible, a menos que usted es Warren Buffett. Usted engaña a sí mismo pensando que usted está todo bien, porque la mayoría de sus transacciones se quemará. El problema es que si no tienes suerte, la pérdida será impresionante. Otra consecuencia de este enfoque es que se vuelve extremadamente difícil determinar si o no usted tiene una ventaja en el mercado, o simplemente tuvo suerte. Una cualidad importante de mi programa era justo lo que yo era capaz de realizar un seguimiento y confirmar la situación en la que mi programa realmente tenía esa ventaja. Gestión de Riesgos h4>
Desde mi algoritmo tomó decisiones por igual, sin importar en qué etapa de desarrollo de los acontecimientos, él hizo un trato y si la posición es actualmente a largo o corto, lo que realmente abrió temporalmente posición desventajosa y concluye transacciones fallidas de grandes cantidades de dinero (aunque había buenas ofertas en menor cantidad grande). Sin embargo, no creo que yo no hice nada para la gestión de riesgos.
Puse rígidamente el tamaño máximo de la posición en la 2 contratos por unidad de tiempo, como durante la negociación activa máximo tamaño de la separación de vez en cuando podría aumentar. También me puse un límite en el monto máximo de las pérdidas por el día para protegerse de los cambios inesperados en el mercado, así como los errores en su propio programa. Estos límites se han establecido en el código, pero, además, dotar de seguridad al dar instrucciones a su agente. Al tomar estas precauciones, que, posteriormente, no tuvimos ningún problema significativo.
Usando el algoritmo h4>
Desde el inicio de los trabajos en mi programa, que duró seis meses antes de que me lo trajo hasta el punto en que se ha convertido para obtener un beneficio, y tuve la oportunidad de probarlo en el caso. Aunque, para ser honesto, la mayoría de ese tiempo yo estaba estudiando lenguaje de programación. Mientras trabajaba para mejorar el programa, grabé el beneficio incremental de cada uno de los próximos cuatro meses.
Cada semana me tendría que volver a educar a mi programa sobre la base de los datos recogidos durante las 4 semanas anteriores. Sin embargo, me encontré con que se altera el equilibrio entre la búsqueda de las últimas tendencias del mercado de comportamiento y la certeza de que mi algoritmo recibe suficiente información para desarrollar patrones significativos de comportamiento. Cuando el aprendizaje se ha vuelto más y tomar más tiempo, lo rompí para que pudiera ser implementado 8 máquinas virtuales utilizando un servicio de Amazon EC2. A continuación, los resultados obtenidos se combinan en mi máquina local.
El punto más alto de mi comercio fue en octubre de 2009, cuando gané casi $ 100 000. Posteriormente, pasé otros 4 meses, tratando de mejorar mi programa a pesar de que las ganancias cada mes disminuyeron. Desafortunadamente, hasta la fecha, creo que he intentado todos sus mejores ideas, porque todo lo que he utilizado no es particularmente me ayudó.
Frente a la frustración de no mejorar el programa y la falta de sentido de crecimiento, empecé a pensar en una nueva dirección. Escribí una carta de 6 de empresa comercial diferente especializada en alta oferta, y le pregunté si no le gustaría comprar mi programa y me contratan para trabajar para él. Nadie respondió. Luego empecé a tener ideas para nuevas empresas de nueva creación, en los que me gustaría trabajar, así que finalmente me di por vencido este negocio.
Nota:
Arriba de la página [ en el post original i> - aprox. intérprete] es un comentario en el que hay expresiones como "la manipulación de las estadísticas", y me llamó uno de los "inversores-minoristas" sobre los cuales estos quanta [ quanta / Quant - en las prácticas de traducción de ruso utilizan ambas versiones de la traducción i> - aprox. Traductor] dicen que su "necesidad de disparar." Este es un muy desafortunado comentario, sólo lejos de la realidad. Mientras tanto, hay más interesante a mi artículo.
Nota 2 список respuestas a las preguntas más frecuentes que he recibido de los comerciantes, lea este artículo.
Fuente: habrahabr.ru/company/itinvest/blog/211642/
Como he ganado $ 500K en el aprendizaje de la máquina y la negociación de alta frecuencia - Parte 1
Kremlin no necesita Ucrania y Kazajstán - Rusia tiene la intención de conquistar la Luna y Marte (no falso!)