Thursday, October 20, 2016

How To Build Sistema De Comercio De Alta Frecuencia

Diseño de sistemas de comercio de alta frecuencia y gestión de procesos Diseño de sistemas de comercio de alta frecuencia y gestión de procesos Asesor: Roy E. Welsch. Departamento: Programa de Diseño y Gestión de Sistemas. Las empresas comerciales hoy en día son muy dependientes de la minería de datos, modelado por computadora y desarrollo de software. Los analistas financieros realizan muchas tareas similares a las del software y las industrias manufactureras. Sin embargo, la industria financiera aún no ha adoptado completamente los sistemas de ingeniería de sistemas de alto estándar y los enfoques de gestión de procesos que han tenido éxito en las industrias de software y manufactura. Muchas de las metodologías tradicionales de diseño de productos, control de calidad, innovación sistemática y mejora continua que se encuentran en las disciplinas de ingeniería pueden aplicarse al campo de las finanzas. Esta tesis muestra cómo los conocimientos adquiridos en las disciplinas de ingeniería pueden mejorar el diseño y la gestión de procesos de los sistemas de negociación de alta frecuencia. Los sistemas de negociación de alta frecuencia se basan en el cálculo. Estos sistemas son sistemas de software automáticos o semiautomáticos que son inherentemente complejos y requieren un alto grado de precisión de diseño. El diseño de un sistema de comercio de alta frecuencia vincula múltiples campos, incluyendo finanzas cuantitativas, diseño de sistemas e ingeniería de software. En el sector financiero, donde las teorías matemáticas y los modelos comerciales son relativamente bien investigados, la capacidad de implementar estos diseños en las prácticas comerciales reales es uno de los elementos clave de la competitividad de las empresas de inversión. La capacidad de convertir ideas de inversión en sistemas de negociación de alto rendimiento de manera eficaz y eficiente puede dar a una empresa de inversión una gran ventaja competitiva (cont.) Esta tesis proporciona un estudio detallado compuesto de alta frecuencia sistema de comercio de diseño, Para el desarrollo del sistema. Se hace especial hincapié en el backtesting y la optimización, que se consideran las partes más importantes en la construcción de un sistema comercial. Esta investigación construye modelos de ingeniería de sistemas que guían el proceso de desarrollo. También utiliza sistemas de comercio experimental para verificar y validar los principios tratados en esta tesis. Finalmente, esta tesis concluye que los principios y marcos de ingeniería de sistemas pueden ser la clave del éxito para la implementación de sistemas de negociación de alta frecuencia o de inversión cuantitativa. Tesis (S. M.) - Instituto de Tecnología de Massachusetts, Programa de Diseño y Administración de Sistemas, 2009.Catalogado a partir de la versión en PDF de la tesis. Incluye referencias bibliográficas (págs 78-79). Palabras clave: Programa de Diseño y Gestión de Sistemas. Examinar Mi CuentaEste post detallará lo que hice para hacer aprox. 500k de comercio de alta frecuencia de 2009 a 2010. Desde que estaba negociando de forma totalmente independiente y ya no estoy ejecutando mi programa Irsquom feliz de contar a todos. Mi negociación se realizó principalmente en Russel 2000 y contratos de futuros DAX. Creo que la clave de mi éxito no fue en una sofisticada ecuación financiera, sino en el diseño general del algoritmo, que unió muchos componentes simples y utilizó el aprendizaje automático para optimizar la rentabilidad máxima. Usted wonrsquot necesidad de conocer cualquier terminología sofisticada aquí porque cuando configuro mi programa todo se basa en la intuición. (Andrew Ngrsquos increíble aprendizaje de la máquina curso todavía no estaba disponible - btw si hace clic en ese enlace yoursquoll ser llevado a mi proyecto actual: CourseTalk, un sitio de revisión de MOOCs) En primer lugar, sólo quiero demostrar que mi éxito no fue simplemente el resultado de suerte. Mi programa hizo 1000-4000 oficios por día (medio largo, medio corto) y nunca llegó a posiciones de más de unos pocos contratos a la vez. Esto significaba que la suerte al azar de cualquier comercio en particular era bastante rápida. El resultado fue que nunca perdí más de 2000 en un día y nunca tuve un mes perdidos: (EDIT Estas cifras son después de pagar las comisiones) Y herersquos un gráfico para darle una idea de la variación diaria. Tenga en cuenta que esto excluye los últimos 7 meses porque - como las cifras dejaron de subir - perdí mi motivación para entrar en ellos. Mi fondo de comercio Antes de configurar mi programa de comercio automatizado Irsquod tenía 2 años de experiencia como un comerciante de día ldquomanualrdquo. Esto fue en 2001 - fueron los primeros días del comercio electrónico y hubo oportunidades para ldquoscalpersrdquo para hacer buen dinero. Sólo puedo describir lo que estaba haciendo como parecido a jugar un juego de video / juego con un supuesto borde. Ser exitoso significaba ser rápido, ser disciplinado y tener una buena capacidad intuitiva de reconocimiento de patrones. Fui capaz de hacer alrededor de 250k, pagar mis préstamos estudiantiles y tener dinero restante. Win Durante los próximos cinco años me lanzaría dos startups, recoger algunas habilidades de programación en el camino. No sería hasta finales de 2008 que volvería a entrar en el comercio. Con el dinero corriendo bajo de la venta de mi primera puesta en marcha, el comercio ofrece esperanzas de un poco de dinero rápido, mientras que descubrí mi siguiente movimiento. En 2008 fui ldquomanuallyrdquo día de comercio de futuros utilizando software llamado T4. Irsquod quería algunas teclas de acceso de entrada de pedido personalizadas, así que después de descubrir que T4 tenía una API, tomé el reto de aprender C (el lenguaje de programación requerido para usar la API) y seguí adelante y construí algunas teclas de acceso rápido. Después de mojarse los pies con la API pronto tuve mayores aspiraciones: quería enseñar a la computadora para el comercio para mí. La API proporcionó una corriente de datos de mercado y una forma fácil de enviar órdenes al intercambio - todo lo que tenía que hacer era crear la lógica en el medio. A continuación se muestra una captura de pantalla de una ventana de negociación T4. Lo que era cool es que cuando conseguí mi programa de trabajo que era capaz de ver el comercio de equipo en esta misma interfaz. Ver órdenes reales apareciendo y saliendo (por sí mismos con mi dinero real) era emocionante y aterrador. El diseño de mi algoritmo Desde el principio mi objetivo era configurar un sistema tal que podría estar razonablemente confiado Irsquod ganar dinero antes de hacer cualquier comercio en vivo. Para lograr esto, necesitaba construir un marco de simulación comercial que pudiera simular, en la medida de lo posible, el comercio en vivo. Mientras que el comercio en modo en vivo requería actualizaciones del mercado de procesamiento transmitidas a través de la API, el modo de simulación requería la lectura de las actualizaciones del mercado desde un archivo de datos. Para recopilar estos datos configuro la primera versión de mi programa para simplemente conectarme a la API y registrar las actualizaciones del mercado con marcas de tiempo. Terminé usando 4 semanas de datos de mercado recientes para entrenar y probar mi sistema. Con un marco básico en su lugar todavía tenía la tarea de averiguar cómo hacer un sistema comercial rentable. Como resulta que mi algoritmo se dividiría en dos componentes distintos, que Irsquoll explorar a su vez: Predecir los movimientos de precios y Hacer operaciones rentables Predecir los movimientos de precios Tal vez un componente obvio de cualquier sistema de comercio es poder predecir dónde se moverán los precios. Y la mía no fue la excepción. Definí el precio actual como el promedio de la oferta interior y la oferta interior y establecí el objetivo de predecir dónde estaría el precio en los próximos 10 segundos. Mi algoritmo tendría que llegar a esta predicción momento por momento durante todo el día de negociación. Creación de indicadores de optimización de amplificadores Creé un puñado de indicadores que demostraron tener una capacidad significativa para predecir movimientos de precios a corto plazo. Cada indicador produjo un número que era positivo o negativo. Un indicador fue útil si más a menudo que un número positivo correspondió con el mercado subiendo y un número negativo correspondió con el mercado bajando. Mi sistema me permitió determinar rápidamente cuánta capacidad predictiva tenía cualquier indicador, así que pude experimentar con muchos indicadores diferentes para ver qué funcionaba. Muchos de los indicadores tenían variables en las fórmulas que los producían y pude encontrar los valores óptimos para esas variables al hacer comparaciones lado a lado de los resultados logrados con valores variables. Los indicadores que resultaron más útiles fueron relativamente simples y se basaron en hechos recientes en el mercado en el que operaba, así como en los mercados de valores correlativos. Hacer predicciones exactas de movimiento de precios Tener indicadores que simplemente predijo un movimiento ascendente o descendente de precios no era suficiente. Necesitaba saber exactamente cuánto se predijo el movimiento de precios por cada posible valor de cada indicador. Necesitaba una fórmula que convirtiera un valor indicador en una predicción de precios. Para lograr esto, rastreé los movimientos de precios predichos en 50 cubos que dependían del rango en el que el valor del indicador se redujo. Esto produjo predicciones únicas para cada cubo que luego pude graficar en Excel. Como puede ver, el aumento esperado del precio aumenta a medida que aumenta el valor del indicador. Basándome en un gráfico como este, pude hacer una fórmula para ajustar la curva. En el principio hice este ldquocurve fittingrdquo manualmente pero pronto escribí un poco de código para automatizar este proceso. Observe que no todas las curvas del indicador tenían la misma forma. Observe también que los cubos se distribuyeron logarítmicamente para separar los puntos de datos uniformemente. Por último, se observó que los valores de los indicadores negativos (y sus correspondientes predicciones de precios a la baja) se voltearon y se combinaron con los valores positivos. (Mi algoritmo tratado arriba y abajo exactamente igual.) Combinación de indicadores para una sola predicción Una cosa importante a considerar era que cada indicador no era enteramente independiente. No podía simplemente agregar todas las predicciones que cada indicador hizo individualmente. La clave era calcular el valor predictivo adicional que cada indicador tenía más allá de lo que ya estaba previsto. Esto no era difícil de implementar, pero sí significaba que si yo estaba ldquocurve fittingdocuatro indicadores al mismo tiempo tuve que ser cuidadoso cambiando uno afectaría las predicciones de otro. Con el fin de ldquocurve fitrdquo todos los indicadores al mismo tiempo que configurado el optimizador para el paso sólo 30 de la manera hacia las nuevas curvas de predicción con cada paso. Con este salto de 30 encontré que las curvas de predicción se estabilizarían en unos pocos pasos. Con cada indicador que ahora nos da itrsquos previsión de precios adicionales que simplemente podría sumar para producir una sola predicción de donde el mercado sería en 10 segundos. Por qué la predicción de los precios no es suficiente Usted podría pensar que con esta ventaja en el mercado que era de oro. Pero usted necesita tener en cuenta que el mercado se compone de ofertas y ofertas - itrsquos no sólo un precio de mercado. El éxito en el comercio de alta frecuencia se reduce a conseguir buenos precios y itrsquos no es tan fácil. Los siguientes factores hacen la creación de un sistema rentable difícil: con cada comercio tuve que pagar comisiones tanto a mi corredor como al intercambio. La difusión (diferencia entre la oferta más alta y la oferta más baja) significaba que si simplemente comprar y vender al azar Irsquod estar perdiendo una tonelada de dinero. La mayor parte del volumen del mercado eran otros bots que sólo ejecutarían un comercio conmigo si pensaban que tenían algún borde estadístico. Ver una oferta no garantiza que podría comprarla. En el momento en que mi orden de compra llegó al intercambio era muy posible que esa oferta hubiera sido cancelada. Como un pequeño jugador del mercado no había manera de que yo pudiera competir en velocidad solo. La construcción de una simulación de comercio completo Así que tenía un marco que me permitió backtest y optimizar los indicadores. Pero yo tenía que ir más allá de esto - yo necesitaba un marco que me permitiría backtest y optimizar un sistema de comercio completo en el que estaba enviando órdenes y conseguir en posiciones. En este caso, Irsquod estará optimizando para la PampL total y en cierta medida la PampL promedio por comercio. Esto sería más complicado y de alguna manera imposible de modelar exactamente, pero hice lo mejor que pude. Éstos son algunos de los problemas que tuve que tratar: Cuando una orden fue enviada al mercado en simulación tuve que modelar el tiempo de retraso. El hecho de que mi sistema vio una oferta no significaba que pudiera comprarla de inmediato. El sistema enviaría la orden, esperaría aproximadamente 20 milisegundos y entonces solamente si la oferta todavía estaba allí fue considerado como un comercio ejecutado. Esto era inexacto porque el tiempo de retraso real era inconsistente y no declarado. Cuando hice ofertas o ofertas tuve que mirar el flujo de ejecución de comercio (proporcionado por el API) y utilizarlas para medir cuándo mi orden se habría ejecutado contra. Para hacer esto bien tuve que rastrear la posición de mi pedido en la cola. (Itrsquos un sistema first-in-first-out.) Una vez más, no podía hacer esto perfectamente, pero hice una mejor aproximación. Para refinar mi simulación de ejecución de órdenes lo que hice fue tomar mis archivos de registro de comercio en vivo a través de la API y compararlos con los archivos de registro producido por el comercio simulado desde el mismo período de tiempo. Pude obtener mi simulación hasta el punto de que era bastante exacta y para las partes que eran imposibles de modelar con exactitud me aseguré de por lo menos producir resultados que eran estadísticamente similares (en las métricas que pensé que eran importantes). Haciendo negocios rentables Con un modelo de simulación de pedidos en su lugar, ahora podría enviar pedidos en modo de simulación y ver un simulador de PampL. Pero, cómo iba a saber mi sistema cuándo y dónde comprar y vender? Las predicciones de movimiento de precios fueron un punto de partida, pero no toda la historia. Lo que hice fue crear un sistema de puntuación para cada uno de los 5 niveles de precios de la oferta y la oferta. Éstos incluyeron un nivel sobre la oferta interior (para una orden de compra) y un nivel debajo de la oferta interior (para una orden de venta). Si la puntuación a cualquier nivel de precios dado estaba por encima de un cierto umbral que significaría que mi sistema debería tener una oferta / oferta activa allí - por debajo del umbral, entonces cualquier pedido activo debería ser cancelado. Basado en esto no era infrecuente que mi sistema destellara una oferta en el mercado entonces inmediatamente la cancelaría. (Aunque traté de minimizar esto como itrsquos molesto como heck a cualquiera que mira la pantalla con ojos humanos - incluyendo a mí.) Las puntuaciones de nivel de precios se calcularon sobre la base de los siguientes factores: La predicción de movimiento de precios (que discutimos anteriormente). El nivel de precios en cuestión. (Los niveles internos significaban que se requerían mayores predicciones de movimiento de precios). El número de contratos delante de mi orden en la cola. (Menos fue mejor.) El número de contratos detrás de mi pedido en la cola. (Más era mejor.) Esencialmente, estos factores sirvieron para identificar ldquosaferdquo lugares de oferta / oferta. La predicción de movimiento de precios por sí sola no era adecuada porque no explicaba el hecho de que al realizar una oferta no estaba automáticamente llena, sólo me llené si alguien me vendía allí. La realidad era que el mero hecho de que alguien me vendiera a un precio determinado cambiaba las probabilidades estadísticas del oficio. Las variables utilizadas en este paso fueron todas sujetas a optimización. Esto se hizo de la misma manera que las variables optimizadas en los indicadores de movimiento de precios, excepto en este caso yo estaba optimizando para la línea de fondo PampL. Lo que mi programa ignoró Cuando operamos como humanos, a menudo tenemos emociones y sesgos poderosos que pueden conducir a decisiones menos que óptimas. Claramente no quería codificar estos sesgos. Aquí hay algunos factores que mi sistema ignoró: El precio que se introdujo una posición - En una oficina de comercio itrsquos bastante común para escuchar la conversación sobre el precio al que alguien es largo o corto como si que debe afectar su toma de decisiones futuras. Si bien esto tiene alguna validez como parte de una estrategia de reducción de riesgo que realmente no tiene relación con el curso futuro de los acontecimientos en el mercado. Por lo tanto, mi programa completamente ignorado esta información. Itrsquos el mismo concepto que ignorando los costes hundidos. Ir corto vs salir de una posición larga - Por lo general, un comerciante tendría diferentes criterios que determina dónde vender una posición larga frente a dónde ir corto. Sin embargo, desde mi perspectiva de algoritmos no había razón para hacer una distinción. Si mi algoritmo esperaba un movimiento hacia abajo de venta era una buena idea, independientemente de si era actualmente largo, corto o plano. A ldquoubling uprdquo estrategia - Esta es una estrategia común donde los comerciantes comprarán más acciones en el caso de que el comercio original va en contra de ellos. Esto se traduce en su precio de compra promedio es menor y significa que cuando (o si) la acción gira alrededor yoursquoll ser configurado para hacer su dinero de vuelta en ningún momento. En mi opinión, esta es realmente una estrategia horrible a menos que Warren Buffet. Yoursquore engañado en el pensamiento que usted está haciendo bien porque la mayoría de sus oficios serán ganadores. El problema es cuando pierdes pierdes grande. El otro efecto es que hace difícil juzgar si realmente tienes una ventaja en el mercado o simplemente tienes suerte. Ser un objetivo importante era poder monitorear y confirmar que mi programa tenía una ventaja. Dado que mi algoritmo tomó las decisiones de la misma manera, independientemente de dónde entró en un comercio o si era actualmente largo o corto que ocasionalmente sentarse en (y tomar) algunos grandes operaciones perdedoras (además de algunas grandes operaciones ganadoras). Pero, no debe pensar que no había ninguna gestión de riesgos. Para manejar el riesgo, apliqué un tamaño de posición máximo de 2 contratos a la vez, ocasionalmente subí en días de alto volumen. También tuve un límite máximo de pérdidas diarias para protegerme contra cualquier condición inesperada del mercado o un error en mi software. Estos límites se aplicaron en mi código, pero también en el backend a través de mi corredor. Como sucedió nunca encontré problemas significativos. Ejecución del algoritmo Desde el momento en que comencé a trabajar en mi programa me tomó unos 6 meses antes de que lo lleve al punto de la rentabilidad y comenzó a correr en vivo. Aunque para ser justos una cantidad significativa de tiempo era aprender un nuevo lenguaje de programación. A medida que trabajaba para mejorar el programa vi aumentar los beneficios para cada uno de los próximos cuatro meses. Cada semana me volvería a entrenar mi sistema basado en el valor de 4 semanas anteriores de datos. Encontré esto golpeó el equilibrio correcto entre capturar tendencias recientes del comportamiento del mercado y asegurar mi algoritmo tenía bastante datos para establecer patrones significativos. A medida que el entrenamiento comenzó a tomar cada vez más tiempo lo dividí para que pudiera ser realizado por 8 máquinas virtuales usando Amazon EC2. Los resultados se fusionaron en mi máquina local. El punto culminante de mi comercio fue octubre de 2009, cuando hice casi 100k. Después de esto continué pasando los próximos cuatro meses intentando mejorar mi programa a pesar de la disminución de ganancias cada mes. Desafortunadamente por este punto supongo que Irsquod implementó todas mis mejores ideas porque nada de lo que probé parecía ayudar mucho. Con la frustración de no ser capaz de hacer mejoras y no tener un sentido de crecimiento comencé a pensar en una nueva dirección. He enviado 6 diferentes empresas de alta frecuencia de comercio para ver si theyrsquod estar interesado en la compra de mi software y contratación de mí para trabajar para ellos. Nadie contestó. Tuve algunas nuevas ideas de inicio que quería trabajar, así que nunca lo seguí. ACTUALIZACIÓN - he publicado esto en Hacker News y ha recibido mucha atención. Sólo quiero decir que no abogo a nadie que intente hacer algo así ahora. Usted necesitaría un equipo de personas realmente inteligentes con una gama de experiencias para tener cualquier esperanza de competir. Incluso cuando estaba haciendo esto creo que era muy raro que las personas para lograr el éxito (aunque había oído hablar de otros.) Hay un comentario en la parte superior de la página que menciona las estadísticas manipuladas y se refiere a mí como un london que invertirá quants Ldquogleefully escoger offrdquo. Este es un comentario bastante desafortunado thatrsquos simplemente no basado en la realidad. Estableciendo que aparte therersquos algunos comentarios interesantes: news. ycombinator / itemid4748624 UPDATE 2 - Irsquove publicado un seguimiento de preguntas frecuentes que responde a algunas preguntas comunes Irsquove recibido de los comerciantes acerca de este post. Build Your Own Trading System: Technical Primer BALTIMORE (Stockpickr) - Imagínese encender una máquina cada mañana y verla acumular ganancias al negociar los mercados. Mientras que ese escenario suena como algo que la mayoría de los inversores sólo fantasean, su convertido en una realidad para muchos comerciantes. En este documento técnico. Así que eche un breve vistazo a cómo puede unirse a ellos mediante la construcción de su propio sistema de comercio. Hoy en día, las barreras de entrada han caído dramáticamente para los desarrolladores de sistemas comerciales. Usted no necesita un Ph. D. Un mainframe multimillonario o un espacio de servidor en la NYSE para lograr el éxito como un comerciante algorítmico. Mientras que la construcción de un sistema de comercio puede ir por encima de la cabeza del inversionista casual promedio, es algo que finalmente está al alcance de los comerciantes que arent bankrolled por grandes instituciones financieras. En primer lugar, es importante pensar en cómo se relaciona el análisis cuantitativo con el análisis técnico en su conjunto. En su mayor parte, se puede pensar en el análisis cuantitativo como una subsección del análisis técnico (vale la pena señalar, sin embargo, que cierto análisis cuantitativo es en realidad fundamentalmente impulsado). Si bien el análisis técnico es cualquier análisis que se basa en los datos del mercado, el análisis cuantitativo arroja elementos subjetivos. Gtgt El comercio técnico realmente funciona Los Quants utilizan sistemas de negociación (un conjunto de reglas bien definidas o algoritmos) para tomar decisiones de inversión. Cuando la mayoría de los inversionistas oyen la palabra quant, piensan en los científicos que trabajan en los sistemas de comercio de alta frecuencia para las instituciones. Eso no es lo que estaban hablando aquí - en su lugar, el comercio algorítmico estaban hablando de es más adecuado a plazos más largos (daytrading a través de la posición de comercio). Mientras que apenas rasguñaban la superficie de la negociación algorítmica en esta cartilla, mi meta es darle una ojeada en cómo funcionan los sistemas que negocian, y donde usted puede tomar los pasos siguientes hacia crear uno sus los propios. 2012 Stock Predicciones y Outlook Su tienda de ventanilla única para 2012 las recomendaciones de stock y predicciones del mercado. Introducción al desarrollo del sistema Comience bien con el desarrollo del sistema, es decir, averigüe qué reglas desea utilizar para activar una señal comercial. El primer paso es elegir los factores (o las entradas) que usará para generar decisiones de inversión. Es importante tener en cuenta que los insumos deben ser cuantificables, por lo que criterios como la buena gestión o la liquidez de negociación amplia no pueden ser parte del sistema (en su lugar, la liquidez de comercio amplia tendría que ser algo como el volumen de operaciones promedio superior a 1 millón de acciones por Día). Stickin a los empollones: Construcción de un sistema de comercio de alta frecuencia Como un niño, alguna vez soñó con convertirse en un nerd que no lo creo. Pero en los últimos dos años, cuántos sonríen las personas que vieron en las noticias financieras que parecían, bueno, nerds Enseñanza de la teoría de las computadoras, las matemáticas, la física, lo que sea, estos nerds estaban en los titulares de hacer un montón de dinero con El comercio computarizado: de alto volumen, de segundo y segundo, impulsado por la máquina compra y vende que compensó tal vez 0,05 por 100 acciones. Eso no suena como un montón de dinero, pero se multiplican por cientos de miles de acciones a través de miles de operaciones al día, y comienza a sumar. De hecho, es responsable de la mayoría de los volúmenes de negociación de acciones de hoy. Y como usted enciende su computadora portátil underpowered, usted puede ser que se pregunte, es que lo que tengo que hacer para hacer el comercio del dinero Respuesta corta: No. Respuesta más larga: Absolutamente no. Repelente Nerd Lo que estas historias no han dicho que es que los recientes cambios bruscos en la volatilidad han obligado a muchos que desarrollan el comercio computarizado para repensar sus estrategias. Los movimientos de precios a corto plazo, hacia adelante y hacia atrás, que el comercio computarizado se supone capturar han sido más unidireccionales y han dejado a algunos operadores con grandes posiciones perdedoras. Bueno, entonces, usted pregunta, si no de alta frecuencia, el comercio computarizado, entonces lo que necesita un enfoque basado en la estrategia de comercio, de modo que independientemente de la población o índice, independientemente del entorno de mercado, usted tiene un enfoque para encontrar y ejecutar Comercios que tiene sentido. En otras palabras, un sistema. Esto significa que usted necesita para crear un conjunto de reglas que siguen para entrar y salir de los oficios cada vez, en lugar de simplemente disparar desde la cadera. Su sistema no siempre puede resultar como usted esperaba, o siempre ganar dinero, pero youll tienen un plan para la colocación de oficios. Usted no puede obtener su imagen en las noticias financieras, pero tal vez usted pague sus facturas y todavía tienen tiempo para ser una persona normal. Bueno, para empezar, si ya tienes la plataforma thinkorswim cargada en tu computadora portátil, tienes herramientas a tu disposición que están diseñadas para ofrecer más de lo que la mayoría de la pared Los nerds de la calle tienen. Seriamente. Y youre que va a utilizar esas herramientas para encontrar oficios que cumplan los siguientes tres criterios: 2. Decadencia positiva del tiempo 3. Probabilidades favorables Permite romper cada uno hacia abajo. Esto significa que no importa lo que el stock o índice hace, si sube grande, abajo grande o en ninguna parte en absoluto, su pérdida potencial máxima se conoce antes de que incluso hacer el comercio. Por ejemplo, una llamada corta vertical ha definido el riesgo. Una llamada corta y desnuda no. Con la vertical corta, la pérdida máxima es la diferencia entre los precios de ejercicio menos el crédito recibido. Eso es. Con una llamada corta desnuda, usted realmente no sabe lo que su pérdida máxima podría ser. Incluso si usted piensa que va a usar una orden de stop para comprar la llamada corta de vuelta si la pérdida se vuelve demasiado grande, qué pasa si la población se rompe durante la noche cuando no se puede negociar Stick con operaciones de riesgo definido. 2. Positive Time Decay Además de la muerte y los impuestos, la única otra cosa que usted puede contar con el tiempo pasa. Y si no, todos tenemos problemas más grandes. Debido a esa inevitabilidad, usted quiere que el tiempo pase por su lado. Eso significa que usted quiere que sus posiciones tengan un deterioro de tiempo positivo para que todas las demás cosas sean iguales, un día que pasa significa que su posición vale un poco más. La descomposición positiva del tiempo viene generalmente de tener una opción corta en alguna parte en la posición. No tiene que ser un corto descubierto (ver criterio 1), sino como parte de una propagación como un corto vertical, calendario largo. O cóndor de hierro. Una opción corta pondrá tiempo a su lado. 3. Probabilidades favorables No importa cuánta investigación hagas, la probabilidad de que una acción o un índice se mueva hacia arriba o hacia abajo es 50. Pero usted no quiere que su comercio dependa de la vuelta de una moneda. La manera de inclinar las probabilidades a su favor es con una selección de estrategia más inteligente. Que comienza por buscar la cadena de opciones para una expiración a corto plazo y una alta probabilidad de expirar sin valor. Esto le permitirá crear spreads que dependen menos de estar en la dirección correcta y más en la caries premium. Bueno, ahora lo que no demasiado nerdy, es que permite convertir el teórico en práctica con un par de ejemplos de la vida real tanto para el stock y las opciones de comerciante. El comerciante común Youre un comerciante común. Tal vez usted no está muy listo para toda la opción de propagación de cosas. Entonces, cómo funcionan los tres criterios para usted Si youre acciones largas, ya sabes su pérdida potencial máxima si el stock va a cero. A pesar de que ese riesgo podría ser un número muy grande, Ill argumentan que se define a su manera. Ése es criterio 1. Para 2, usted busca crear una llamada cubierta corta contra esa acción larga para darle un cierto deterioro positivo del tiempo. Cuando estás corto una llamada contra su acción larga, por cada día que el precio de las acciones no se mueve, esa llamada corta va a conseguir más barato y más barato y hacerte un poco de dinero. Para 3, conseguir las probabilidades de su lado significa vender una llamada fuera del dinero que tiene una probabilidad de expirar sin valor de unos 60, lo que se puede hacer desde la plataforma de comercio de TD Ameritrades thinkorswim (Figura 1, a continuación). La acción puede subir hasta el precio de huelga de la llamada corta por vencimiento, y la llamada todavía expirará sin valor. Eso reduce la base de costos de su stock largo, que también reduce su punto de equilibrio. Eso significa que la acción puede hacer un movimiento más grande abajo, y usted todavía puede no perder el dinero. En thinkorswim, ver la probabilidad de una opción que expira en el dinero (ITM). Aquí, una llamada con una probabilidad de expirar ITM es la misma que decir que tiene una probabilidad de expirar sin valor. Sólo con fines ilustrativos. El operador de opciones Youre raring a ir con las opciones, pero youre no está seguro de si debe ser alcista o bajista en un stock o índice en particular. No sudar la dirección de la población. Utilizando los tres criterios, puede encontrar una estrategia que todavía puede ganar dinero, incluso si youre mal en su apuesta direccional. Veamos cómo. Primero, comience con algún sesgo direccional para el stock o índice. Tal vez su basado en el análisis técnico o fundamental, o tal vez su cabeza de hablar favorita en la televisión lo sugirió. Se va a crear una brecha vertical corta (criterios 1 y 2) una llamada corta vertical si tiene un sesgo bajista, o un corto poner vertical si tiene un sesgo alcista. Comience encontrando la caducidad que va de 25 a 45 días. Para los criterios 3, si usted es bajista, encuentre la llamada corta fuera del dinero que tiene una probabilidad de 60 a 70 de expirar sin valor. Si youre alcista, considere la posibilidad de encontrar el put-out de corto plazo que tiene una probabilidad de expirar sin valor de entre 60 y 70. Para crear una llamada corta vertical, considere la posibilidad de comprar la opción de compra thats una huelga más lejos del dinero que su llamada corta. Para crear un corto poner vertical, considere la compra de la opción de put thats una huelga más fuera de la-dinero que su corto poner. Ahora, heres qué puede suceder. Con el corto fuera de la llamada de dinero vertical, si la acción se mueve hacia abajo por vencimiento, usted gana dinero. Si la acción permanece igual al vencimiento, gana dinero. Si la acción sube más allá de la huelga corta de la llamada corta vertical, probablemente perderá dinero. Pero si sólo sube un poco, no tan alto como el golpe corto de la llamada corta vertical, todavía se puede ganar dinero. La opción de venta corta funciona de la misma manera, pero pierde dinero si la acción se mueve hacia abajo más allá de la huelga corta de la vertical de poner corto. Esto no es una manera infalible, garantizada de hacer el comercio del dinero. Pero es mejor que sentarse al margen, frustrado y confundido por no poder cambiar la forma en que crees que los profesionales de Wall Street lo hacen. Cada operación que realice basándose en estos criterios tendrá un razonamiento detrás de él. E incluso si el comercio pierde dinero, youll saber exactamente cuánto y por qué. Eso es un comerciante educado. En lugar de un nerd. Got thinkorswim Si no tienes thinkorswim para analizar las probabilidades, qué estás esperando? Compruebe lo que es todo acerca de amplificador de participar en la diversión. Las estrategias de opciones multijugado como las discutidas en este artículo tendrán costos adicionales debido a las huelgas adicionales intercambiadas. Asegúrese de entender todos los riesgos involucrados con cada estrategia, incluyendo los costos de transacción, antes de intentar colocar cualquier operación. Tenga en cuenta que la asignación en las estrategias de opciones cortas discutidas en este artículo podría dar lugar a posiciones largas o cortas no deseadas sobre el valor subyacente. La volatilidad del mercado, el volumen y la disponibilidad del sistema pueden retrasar el acceso a la cuenta y las ejecuciones comerciales. El desempeño pasado de un valor o estrategia no garantiza resultados futuros ni éxitos. Las opciones no son adecuadas para todos los inversores, ya que los riesgos especiales inherentes al comercio de opciones pueden exponer a los inversores a pérdidas potencialmente rápidas y sustanciales. Comercio de opciones sujeto a revisión y aprobación de TD Ameritrade. Por favor lea Características y Riesgos de Opciones Estandarizadas antes de invertir en opciones. Documentación de apoyo para cualquier reclamación, comparaciones, estadísticas u otros datos técnicos serán suministrados a petición. La información no pretende ser un asesoramiento de inversión ni interpretarse como una recomendación o aprobación de ninguna inversión o estrategia de inversión en particular, y es sólo con fines ilustrativos. Asegúrese de entender todos los riesgos involucrados con cada estrategia, incluyendo los costos de comisión, antes de intentar colocar cualquier operación. Los clientes deben considerar todos los factores de riesgo relevantes, incluyendo sus propias situaciones financieras personales, antes de negociar. Miembro de TD Ameritrade, Inc. FINRA / SIPC. TD Ameritrade es una marca de propiedad conjunta de TD Ameritrade IP Company, Inc. y The Toronto-Dominion Bank. 2016 TD Ameritrade IP Company, Inc. Todos los derechos reservados. Se utiliza con permiso. Inconcebible. Esto podría ser mucho más divertido que los códigos clásicos. Para 99 del sistema theres ninguna razón en particular youd tiene que conectarse a la Bolsa de Nueva York y el comercio de acciones reales de dinero real. Parece que theyre alimentación de iqfeed, pero creo que sería muy divertido para crear un intercambio de la competencia imaginaria, convencer a unos 100 escritores algo para competir, y empujar a unos contra otros puramente por la diversión de ella, ver whos un escritor algo mejor . Con la virtualización moderna, debería ser bastante fácil distribuir un paquete de imágenes, incluyendo datos de práctica, para replicar todo un sistema financiero a pequeña escala en su sótano, entonces una vez que usted piensa que tiene algo decente, suba su imagen a la competencia liga. Si su liga de códigos de barras de hft quiere límites para ciclos de almacenamiento o de CPU, la virtualización es una manera bastante fácil de implementarla. Superficialmente lo más obvio es hacer todo, de arriba a abajo, pero probablemente funcionaría igual de bien usar datos de mercado real y superponerlos encima. Al igual que la simulación de control de tráfico aéreo se ha movido muy lentamente a lo largo de las décadas, desde datos puramente aleatorios hasta realistas a datos reales del aeropuerto. Esto podría ser bastante divertido. Hemos hecho esto en colaboración con UofC, utilizando nuestra plataforma de negociación de Algo (www. optionscity / event / uchicago-midwest-trading-co.) Y fue muy divertido. Hm, me pregunto si hay un interés para hacer esto un evento más abierto :) Gracias por comprobar Julia. Me temo que hay una buena cantidad de información errónea en su comentario, sin embargo, por lo que parece que algunas cosas se perdió en su lectura del código Julias (algunos de los cuales es sin duda muy difícil). Espero que no te importe si me dirijo a algunos de ellos. El primer punto es que Julia ya tiene un rendimiento excelente a la par con la mayoría de los lenguajes compilados, incluyendo, p. Haskell, si están usando LLVM o no. El código directo de Julia está típicamente dentro de un factor de dos de C. Esto se muestra en los microbenchmarks en el sitio julialang. org/ de Julias, pero, por supuesto, eso no es totalmente convincente porque, ya sabes, son microbenchmarks y los escribimos. Sin embargo, el rendimiento similar se encuentra constantemente en las aplicaciones del mundo real por otras personas. Usted no tiene que tomar mi palabra para ella heres lo que Tim Holy holylab. wustl. edu tiene que decir: groups. google/d/msg/julia-users/eQTYBxTnVEs/LDAv. . Iain Dunning y Miles Lubin también encontraron que estaba bien dentro de un factor de 2 de código C altamente optimizado al implementar códigos de programación lineales realistas en Julia puro: github / JuliaLang / julia-tutorial / blob / master / Nume. . Los puntos de referencia aparecen en la página 7 de su presentación. Esta afirmación sobre las optimizaciones de alto nivel de Julias está totalmente equivocada: 62 he analizado cómo se compila a llvm, y básicamente rebate cualquier optimización al lado de llvm, aparte del método más básico de monitoreo / especialización de jit de trazado. Julia no hace ningún rastreo, así que definitivamente no es un JIT de rastreo. Una cantidad muy importante (pero creciente) de optimización de alto nivel se realiza en la Julia AST antes de generar el código LLVM. En particular, un paso de inferencia de tipo flujo de datos dinámico se realiza en el Julia AST. Dado que Julia es homoicónica, este tipo de pasaje de inferencia puede implementarse en la propia Julia, que puede ser la razón por la que la perdiste: github / JuliaLang / julia / blob / master / base / inferenc. . No se deje engañar por la brevedad del código Jeffs algoritmo de inferencia de tipo dinámico es uno de los más sofisticados que se encuentran en cualquier lugar vea arxiv. org/pdf/1209.5145v1.pdf para una explicación más extensa. También es altamente eficaz: 60 del tiempo determina el tipo exacto de una expresión y la mayoría de las expresiones que no pueden ser tipificadas concretamente no son críticas de rendimiento ver sección 5.2 del mismo artículo. Usted está correcto que dejemos la generación de código de máquina LLVM después de todo, eso es lo que su para pero sin toda esa información de tipo, theres ninguna manera podríamos coaxial LLVM en generar código de máquina buena. Otros pasos de optimización muy importantes realizados en el AST de Julia incluyen el método agresivo de alineación y eliminación de la asignación de tupla. 62 más sucinto, Julia carece de una opción suficientemente clara en la semántica estática / dinámica para que el lado anterior a LLVM tenga una historia de optimización fácil dado un equipo central de tamaño pequeño, tal ingeniería de optimización tomará mucho tiempo para desarrollarse o requerirá algunos Entidad comercial para hundir capital serio en escribir un JIT / optimizador bueno. Hay una elección muy clara y pensativa en la semántica estática vs. dinámica en Julia: todas las semánticas son dinámicas, no hay semántica estática en absoluto. Si piensa que su código se ejecuta de forma totalmente dinámica, es exactamente como se comportará. Por supuesto, para obtener un buen rendimiento, el sistema se da cuenta cuando su código es en realidad bastante estática, pero nunca tiene que pensar en la distinción. Y de nuevo, Julia ya tiene un excelente desempeño, y lo hemos logrado con un equipo reconocidamente pequeño y relativamente mal financiado. (Todo el dinero del mundo no te comprará otro Jeff Bezanson.) 62 también: Julia no tiene un sistema de tipo, tiene un sistema de control dinámico. (Muéstrame el código para verificación de tipo estático en la base de código julia tal como existe en github y Ill te debes una cerveza :)) La comunidad de lenguaje de programación académica ha reducido gradualmente su noción de lo que es un tipo en las últimas décadas al punto Donde un sistema de tipo sólo puede ser algo utilizado para comprobar el tipo estático. Mientras tanto, el mundo real ha ido a toda velocidad en la otra dirección: lenguajes totalmente dinámicos se han vuelto enormemente populares. Así que sí, si usted es un teórico de lenguaje de programación, puede insistir en que Julia tiene un sistema de etiquetas en lugar de un sistema de tipos y otros teóricos del tipo asentirán con la cabeza de acuerdo. Sin embargo, el resto del mundo llama a las clases de representaciones para valores en lenguaje dinámico como los tipos Python y entiende que un sistema para hablar de esos tipos marcados o no califica como un sistema de tipos. Así pues, mientras que usted es correcto que Julia no hace ninguna comprobación estática del tipo, todavía se entiende para tener lo que la mayoría de la gente llama un sistema de tipo. Theres realmente un punto importante de la filosofía del lenguaje de programación aquí: una de las premisas de Julia es que la comprobación estática del tipo no es realmente el beneficio principal que trae a la tabla por un sistema del tipo. Por el contrario, aprovecharlo para una mayor expresividad y rendimiento, dejando la comprobación de tipo en la mesa por ahora. Este énfasis no significa que no podemos añadir algún tipo de comprobación más tarde, ya que podemos inferir tipos exactos 60 de la época, podemos comprobar que esas situaciones no conducen a errores. También podemos proporcionar retroalimentación al programador acerca de los lugares donde podrían mejorar la estabilidad de su código y obtener un mejor rendimiento o mejor verificación. Esto permite al programador utilizar un estilo dinámico para la creación de prototipos y gradualmente hacer su programa cada vez más estático, ya que necesita ser más rápido y / o más fiable. 62 Permítanme repetir: Julia no tiene clara semántica estática / diferencia de fase, y realmente no parece hacer nada más allá de la especialización del método antes de pasar el código a LLVM. Esto significa que no puede obtener un rendimiento atractivo en comparación con cualquier otro lenguaje LLVM respaldado. Voy a repetirme un poco también. Julia tiene una semántica estática muy clara, no hay ninguno. El tiempo de ejecución hace un poco de análisis y optimización después de la especialización del método (agresiva run-time método de especialización es increíblemente importante, sin embargo, por lo que no debería descontarlo). Y, por supuesto, Julia ya tiene un rendimiento convincente en comparación con otros idiomas, tanto estáticos como dinámicos, en benchmarks y aplicaciones del mundo real. Python es definitivamente preferido en la investigación en lugar de la producción en general. Algunas organizaciones lo utilizan en el lado de la infraestructura también, pero estos chicos son comerciantes algorítmicos, y no HFTs por lo que la latencia no es tan grande un trato. WRT al problema de desplegar el código de prototipado / investigación, hay los siguientes problemas sin resolver que Im consciente de: Ir de las operaciones matriciales en toda la serie de tiempo (teniendo cuidado de evitar problemas con su algo mirando hacia adelante) para la velocidad en un entorno de investigación a desplegar A un entorno que transmite actualizaciones a las series de tiempo uno a la vez. Creo que este es un área que haskell tiene el potencial de sobresalir en, dadas sus fuertes garantías sobre la estructura. Concurrencia. Las opciones en python todos chupan hasta cierto punto - especialmente si tiene que interactuar con bibliotecas o extensiones C. No creo que tenga sentido construir su fecha de mercado en tiempo real en python. Una vez más here haskell tiene una ventaja. Sin embargo, el ecosistema de python parece ser casi perfecto para los investigadores: Excelente y flexible de datos slurping / munging / transformar. Numpy, scipy, pandas, theano, scikits. Nuff said 62 Pasando de operaciones matriciales sobre toda la serie de tiempo. A implementar en un entorno que transmite actualizaciones a las series de tiempo uno a la vez. Creo que este es un área que haskell tiene el potencial de sobresalir en, dadas sus fuertes garantías sobre la estructura. Exactamente mi pensamiento. Los chicos de Algo quedan atrapados en la tierra de la matriz porque ahí es donde sus herramientas les llevan. Mientras que esto salió en R la semana pasada: cran. r-project. org/web/packages/stream/index python es un mejor conjunto de herramientas que R tal vez, pero el dominio del problema R parece más amplio en los últimos meses de todos modos. Mi interés es monitorear miles de algoritmos en tiempo real directamente dentro del entorno de mensajería, y antes de que los datos lleguen a una base de datos. Ese tipo de concurrencia es donde haskell puede músculo y hacer el trabajo. Algunos de los trabajos que el continuo ha hecho en el resplandor 1 parecen estar abordando el problema de la transmisión en python también. De hecho algunas de las ideas en esta biblioteca vienen directamente de haskell y uno de los desarrolladores principales es Stephen Diehl, quien publicó el muy popular lo que me gustaría saber sobre haskell diapositivas recientemente. Parece un fósforo hecho en cielo :-) Stephen aquí, el boothead sí correcto. Usando una combinación de Haskell y Python usted puede hacer un sistema comercial realmente poderoso. Python tiene un montón de herramientas de algoritmo orientadas al usuario y Haskell tiene la robustez y el paralelismo para el backend que doesnt Python. Si estás interesado en consejos sobre cómo conectar los dos mundos, házmelo saber, hay una gran cantidad de tecnología próxima (LLVM, Blaze, pipes, zeromq, cloud-haskell) que podría ser muy útil. Se siente como si estuviera nadando contra la corriente de marea por el camino de R. Gracias por la oferta :) No he trabajado en algo tan alto rendimiento como este (aunque he estado haciendo un montón de crujido número en Python recientemente), pero hay un par de grandes bibliotecas que puede utilizar antes de saltar a Cython. Echa un vistazo a Numba 1 y numexpr 2 Está usted enterado de los puertos zipline (o bibliotecas similares) en Ruby o ObjectiveC (o C llano) Está tratando de ser contratado por la industria financiera, o hay alguna otra razón para hacer esto Como usted puede Bien sea consciente, HFT es un azote en la economía de los mundos, y su un juego solamente los jugadores más grandes y mejor-conectados se benefician de. No, ya estoy en la industria financiera. Hay dos razones principales que estoy haciendo esto: - Creo que la industria financiera está muy cerrada cuando se trata de desarrollo de propiedad intelectual, y un enfoque de código abierto puede ser seriamente competitivo. Un enfoque abierto puede muy bien ser el futuro cuando se trata de estar conectado - HFT es un problema multidisciplinario interesante y la amplitud de corte de la experiencia necesaria - diseño de chips moderno, interacción de software de baja latencia / hardware, concurrencia libre de bloqueo, Diseño de sistemas tolerante, algoritmos de aprendizaje adaptativo, k-medios de agrupación - medios Im pilares de aprendizaje todos los días. Simplemente no estoy de acuerdo en que HFT es un azote. Su cambio ecológico (ni bueno ni malo) y los inversionistas de horizonte más largo necesitan evolucionar. Trading (como en HFT) no es lo mismo que invertir. Mientras que la mecánica a veces puede ser similar, un comerciante es diferente de un inversor. Lo que HFT hace es segmentar el mercado. Su probablemente mejor descrito como una forma de arbitraje. El arbitraje es necesario, pero en un buen mercado se espera que sea empujado a alguna forma de equilibrio. HFT tiene un impacto en el mercado comercial. Sin embargo, eso no se extiende automáticamente a la inversión. HFT es como un millón de pequeños trolls debajo del puente tratando de extraer su impuesto. Reemplazando a un troll grande en el puente que solía extraer más que el millón de minúsculos totales. Los spreads de la razón se han bajado se debe principalmente a una mejor información por parte de los comerciantes. Los mercados electrónicos lo hicieron posible. HFT es un problema multidisciplinario interesante Esto hace que esto sea un proyecto muy valioso: si o no algo viene de él (he considerado escribir software de análisis técnico de análisis por la misma razón). Alguna documentación acerca de los patrones y las técnicas que utilizó probablemente beneficiaría a la comunidad un poco más. No todo el mundo entiende Haskell (o, prohíba, tiene el tiempo para leer grandes bases de código). Mucha suerte para usted Hay muchos otros problemas multidisciplinarios interesantes que no son tan polémicos como HFT y probablemente más aceptables públicamente y que valen la pena. Pero si HFT es el dominio que te interesa, hazlo. Cool Muy interesante. Creo que dado los idiomas que ha seleccionado que vienen más de un fondo cuantitativo Estos lenguajes son grandes para la heurística y el análisis, pero que realmente desea que todos los componentes estáticos, como la conectividad construida en el montaje / C / C. Para los componentes de algo me gusta Java como usted todavía puede extraer microsegundo latencias de orden al crujir números, pero lo más importante le da un tiempo enorme a la ventaja del mercado que el C / C para casi las mismas velocidades. Im también no está claro si se está conectando directamente al mercado de datos de mercado o utilizando la agregación (como reuters). Este último sería demasiado lento. Im no también claro en qué middleware usted está utilizando que es probablemente la decisión más grande que usted tendrá que hacer. La mayoría utiliza la tecnología inhouse o 29west LBM (todo el mundo todavía lo llama que a pesar de que fueron comprados). Una parte pasada por alto de HFT en mi optimización del OS de la experiencia e incluso las cosas como el bypass del TCP (para algunos componentes) que pueden conducir a las ventajas de la velocidad y de extremo a extremo de extremo a extremo reducciones de la latencia. Estoy de acuerdo con los de FPGA. En mi experiencia realmente no entran en la ecuación excepto por componentes que rara vez cambian. De todos modos algunos individuos incluyendo Martin Thompson se han sentido similarmente a usted y han iniciado el proyecto de lodestone (lodestonefoundation. wordpress /). Si usted está interesado en aprender más sus arquitecturas para la latencia baja, distribuida y componentisation entonces siento que usted podría ensamblar fuerzas y contribuir a esa iniciativa. FYI: Martin construyó la mayor parte de la tecnología detrás del disruptor (lmax-exchange. github. io/disruptor/). Grande ver el interés en hacer este conocimiento más extensamente disponible :) quant. Cómo se puede decir Im conecting con un agregador de causa de los alimentos de mercado directo son monopolistas gougers de precios. Su un interruptor fácil si lo hacemos para arriba esa curva. No estoy seguro si incluso entiendo lo que middleware es (Im un quant), pero creo que la respuesta es el disruptor de los idiomas. He trabajado con un montón de quants y todos ellos rave acerca de R Sí .. el agregador es donde se hace en costo y latencia. Las tiendas de apoyo y los fondos de cobertura pagar a través de la nariz para que las cosas por lo que a menos que vienen de embalaje un poco de capital, HFT verdadera es un problema. En el middleware, no realmente. Por lo que tendría un componente de datos de mercado que estará empujando cosas a varios componentes (riesgo en tiempo real, el pricer y el motor de comercio). El disruptor se encuentra en la cola de espera a esos componentes. El middleware es lo que empuja los mensajes entre instancias que se ejecutan en las mismas / diferentes máquinas. Espero que ayuda :) Tengo la sensación de que el proyecto de Lodestone es ahora difunto. En otro mes o dos la herramienta analítica para hacer estadísticas y números en la tierra de Haskell va a tener un enorme salto adelante en capacidades. Podría ser digno de considerar el ir Haskell lleno entonces :-) Todavía trabajando en él Tomado un pedacito más de largo para conseguir el corazón trabajado hacia fuera que la identificación había querido, pero la vida sucede (eg mi mamá tenía cáncer por un mes este invierno, shes bien ahora , Que es impresionante. Ni siquiera necesita chemo o rad). Además, yo era la planificación original de no escribir mi propio sustrato de álgebra lineal, pero rápidamente me di cuenta de todas las herramientas actuales chupar, y que necesitaba para llegar a un mejor sustrato numérico si quería hacer mejor. Lo que quiero decir con esto Con todas las herramientas numéricas que hay actualmente, no hay ninguno que abordar la siguiente falsedad que muchas personas creen que es cierto: puede tener herramientas de alto nivel que no son extensibles, pero son rápidos, o puede tener herramientas de bajo nivel Que son extensibles y rápido .. Quiero herramientas de alto nivel que son rápidos. Quiero herramientas de alto nivel que sean rápidas y extensibles. Quiero que sea fácil para el usuario final agregar nuevos diseños de matriz (densos y estructurados, escasos estructurados o escasos en general) y disponer de maquinaria genérica para darle toda la maquinaria general de álgebra lineal con sólo un puñado de nuevas líneas de código por Nueva disposición de lujo. Quiero hacer idiomático y natural para escribir todos sus algoritmos de una manera que le da nivel 3 calidad localidad de memoria. Quiero asegurarme de que para todas las necesidades de rendimiento, excepto las más exóticas, puede escribir todo su código en haskell. (Y por exóticos quiero decir, tal vez agregar algún código especializado para ciertos bloques de matriz de tamaño fijo que se ajustan a l2 o l1, pero realmente eso no es la mayoría de los problemas reales de la gente). Heres el punto clave en que ramble thats un poco un gran problema: obtener el nivel 3 de memoria de calidad localidad de tanto escasa y densa álgebra lineal. Creo que he resuelto eso, aunque en última instancia la realidad de los puntos de referencia me dirá en las próximas semanas si tengo o no. Del mismo modo, creo que tengo una manera linda de utilizar toda esta maquinaria para dar una historia de rendimiento sano para más grande que el carnero en una sola máquina de álgebra lineal Theres va a ser algo inherente a ella, pero va a funcionar. Y hacer una caché oculta óptima matriz densa multiplicar de 2 cuadrado 4gb ish tamaño de las matrices en un aire de macbook con 4 gb de RAM va a ser un lindo punto de referencia donde ninguna otra lib será capaz de hacer fuera de la caja. Del mismo modo, cualquier álgebra lineal escasa tendrá un rendimiento de flops menor que su equivalente denso, pero eso es un poco el precio que paga por escaso. Lo que me parece muy interesante es que nadie realmente ha hecho un buen trabajo de proporcionar álgebra lineal escasa con cualquier apariencia de la localidad de memoria. Pienso un poco que tengo una historia agradable para eso, pero otra vez, al final del día los puntos de referencia dirán. Yo por lo menos espero que la tecnología básica valide, porque hay que ser un buen no gpl lin alg suite con buen perf para haskell. Hmatrix siendo gpl tiene gallo bloqueado el crecimiento de un buen ecosistema numérico en el hackel / en haskell durante años, y es hora de que alguien se pone unos pantalones y arregla eso. Asumiendo que la tecnología valida, realmente espero que el biz valide demasiado (a pesar de mí probablemente haciendo varias piezas de código abierto de una manera estilo BSD3 para enriquecer la comunidad / obtener la aprobación de aficionados / otras libs escrito en la parte superior, la gente en la tierra haskell tratar de evitar el uso de libs Que usan licencias que no son estilos de BSD / MIT / Apache), porque theres mucho más que necesita ser hecho para tener realmente una cadena de herramientas convincente para el análisis de datos / cálculo numérico / máquina de aprendizaje / etc, y realmente me gusta pasar mi tiempo de construcción Mejores herramientas. Construir el resto de esa pila será extravagantemente manejable suponiendo que mi tecnología de álgebra lineal valida tener los regímenes correctos de rendimiento en matrices grandes. (Divertidamente, nadie compara nunca las herramientas de álgebra lineal en el régimen de 1gb, y sospecho que es porque en ese punto, la vectorización no significa nada, es todo acerca de la localidad de la memoria localidad de la memoria y una pizca de caché paralelismo consciente). Thats la versión vaga :) Y thats también ni siquiera tocar mis pensamientos en el análisis / datos vis herramientas que van en la parte superior. (O el horrible hecho de que todo el mundo está ansioso por mejorar los datos de las herramientas vis, a pesar de que la mayoría de los datos sobre el trabajo es tan valioso como el diseño de papeles de pared de escritorio bonito para el fondo de sus presentaciones de power point. Así que incluso si tengo todo funcionando. La sospecha de que si permitía a gente sencilla utilizar las herramientas, la mayor parte de los ingresos / intereses estarían alrededor de herramientas de datos de información que se utilizan principalmente para proporcionar a sus clientes / usuarios finales con bonitas imágenes que les hacen sentir bien, pero no les ayudan) Ser: quiero ser capaz de decir que entiendes las matemáticas, entiendes tu dominio del problema, y ​​puedes aprender cosas. Pasar 2-3 semanas jugando con haskell y mis herramientas, y youll ser capaz de centrarse en la aplicación de las matemáticas a su dominio del problema como nunca antes, porque ni siquiera se dan cuenta de lo terrible que la mayoría de las herramientas actuales por ahí estaban luchando con son


No comments:

Post a Comment