Sunday 29 October 2017

Opciones De Aprendizaje De Máquinas


No estoy muy seguro, si esta pregunta encaja aquí. Recientemente he empezado a leer y aprender acerca del aprendizaje automático. ¿Puede alguien arrojar algo de luz sobre cómo ir sobre él o más bien puede compartir su experiencia y algunos consejos básicos sobre cómo hacerlo o al menos empezar a aplicarlo para ver algunos resultados de los conjuntos de datos ¿Qué tan ambicioso es este sonido También, Algoritmos estándar que deben ser probados o mirados al hacer esto. Parece ser una falacia básica que alguien puede venir y aprender algunos algoritmos de aprendizaje automático o AI, configurarlos como una caja negra, ir a ir, y sentarse mientras se retiran. Mi consejo para usted: Aprenda las estadísticas y el aprendizaje automático primero, y luego se preocupe acerca de cómo aplicarlas a un problema dado. No hay almuerzo gratis aquí. El análisis de datos es un trabajo duro. Lea Los Elementos del Aprendizaje Estadístico (el pdf está disponible gratuitamente en el sitio web), y no empiece a intentar construir un modelo hasta que entienda por lo menos los primeros 8 capítulos. Una vez que usted entiende las estadísticas y el aprendizaje de la máquina, entonces usted necesita aprender a backtest y construir un modelo comercial, la contabilidad de los costos de transacción, etc, que es un área entera. Después de que usted tiene una manija en el análisis y las finanzas, entonces será algo obvio cómo aplicarlo. El punto entero de estos algoritmos está tratando de encontrar una manera de ajustar un modelo a los datos y producir un sesgo y una varianza bajos en la predicción (es decir, que el error de predicción de entrenamiento y prueba será bajo y similar). Aquí está un ejemplo de un sistema comercial usando una máquina del vector de la ayuda en R. pero apenas tenga presente que usted hará usted mismo un flaco servicio si usted no pasa el tiempo de entender los fundamentos antes de intentar aplicar algo esotérico. Sólo para añadir una actualización entretenida: Recientemente me encontré con esta tesis de maestros: Un nuevo marco de comercio algorítmico Aplicación de la evolución y aprendizaje de la máquina para la optimización de la cartera (2012). Es una revisión extensa de diferentes enfoques de aprendizaje de máquina en comparación con buy-and-hold. Después de casi 200 páginas, llegan a la conclusión básica: Ningún sistema comercial fue capaz de superar el benchmark al usar los costos de transacción. Huelga decir que esto no significa que no pueda hacerse (no he pasado el tiempo revisando sus métodos para ver la validez del enfoque), pero ciertamente proporciona más evidencia a favor del teorema del almuerzo libre. Como uno de los autores de la mencionada tesis de maestro puedo citar mi propio trabajo y decir: "Si alguien realmente logra resultados rentables no hay incentivo para compartirlos, ya que negaría su ventaja." Aunque nuestros resultados podrían apoyar la hipótesis del mercado, no excluye la existencia de sistemas que funcionen. Podría ser como la teoría de la probabilidad: se especula que los avances en el campo de la teoría de las probabilidades han ocurrido varias veces, pero nunca compartidas. Esto podría deberse a su aplicación práctica en el juego. Por otra parte, tal vez esto es todo alquimia moderna. Ndash Andr233 Christoffer Andersen Mi Consejo a Usted: Hay varias ramas de la Aprendizaje de la Máquina / Inteligencia Artificial (ML / AI) por ahí: www-formal. stanford. edu/jmc/whatisai/node2.html Tengo Sólo intentó la programación genética y algunas redes neuronales, y personalmente creo que la rama de aprendizaje de la experiencia parece tener el mayor potencial. GP / GA y las redes neuronales parecen ser las metodologías más comúnmente exploradas con el propósito de las predicciones del mercado de valores, pero si usted hace un poco de minería de datos en Predict Wall Street. Usted puede ser capaz de hacer algunos análisis de sentimiento también. Pase algo de tiempo aprendiendo acerca de las diferentes técnicas de ML / AI, encuentre algunos datos de mercado e intente implementar algunos de esos algoritmos. Cada uno tendrá sus fortalezas y debilidades, pero puede ser capaz de combinar las predicciones de cada algoritmo en una predicción compuesta (similar a lo que hicieron los ganadores del Premio NetFlix). Algunos de los recursos: Aquí hay algunos recursos que usted puede ser que desee mirar: El Chatter: El consenso general entre los comerciantes es que la Inteligencia Artificial es una ciencia del vudú, usted no puede hacer una computadora predecir los precios comunes y youre seguro perder su dinero si usted intenta haciéndolo. Sin embargo, la misma gente le dirá que casi la única manera de ganar dinero en el mercado de valores es construir y mejorar su propia estrategia comercial y seguirlo de cerca (que en realidad no es una mala idea). La idea de los algoritmos AI no es construir el chip y dejar que el comercio para usted, sino para automatizar el proceso de creación de estrategias. Es un proceso muy tedioso y de ninguna manera es fácil :). Cómo minimizamos la sobreejecución: Como hemos oído antes, un problema fundamental con los algoritmos AI es excesivo (también conocido como sesgo de datamining): dado un conjunto de datos, su algoritmo AI puede encontrar un patrón que es particularmente relevante para el conjunto de entrenamiento. Pero puede no ser relevante en el conjunto de prueba. Hay varias maneras de minimizar la sobreequipación: Use un conjunto de validación. No da retroalimentación al algoritmo, pero le permite detectar cuando su algoritmo está potencialmente comenzando a overfit (es decir, usted puede dejar de entrenar si youre overfitting demasiado). Utilice el aprendizaje en línea de la máquina. En gran medida elimina la necesidad de back-testing y es muy aplicable para los algoritmos que intentan hacer predicciones del mercado. Ensemble Learning. Le proporciona una manera de tomar múltiples algoritmos de aprendizaje de la máquina y combinar sus predicciones. La suposición es que los varios algoritmos pueden haber overfit los datos en una cierta área, pero la combinación correcta de sus predicciones tendrá una energía predictive mejor. Dos aspectos del aprendizaje estadístico son útiles para el comercio 1. Primero los mencionados anteriormente: algunos métodos estadísticos se centraron en trabajar en conjuntos de datos vivos. Significa que usted sabe que está observando sólo una muestra de datos y que desea extrapolar. Por lo tanto, tiene que tratar en la muestra y fuera de los problemas de la muestra, overfitting y así sucesivamente. Desde este punto de vista, la minería de datos se centra más en datasets muertos (es decir, se puede ver casi todos los datos, usted tiene un problema en la muestra sólo) que el aprendizaje estadístico. Debido a que el aprendizaje estadístico se trata de trabajar en un conjunto de datos en vivo, las matemáticas aplicadas que se ocupan de ellos tenían que centrarse en un problema de dos escalas: a la derecha. Donde X es el espacio de estado (multidimensional) para estudiar (tienes en él tus variables explicativas y las que predecir), F contiene la dinámica de X que necesita algunos parámetros theta. La aleatoriedad de X viene de la innovación xi, que es i. i.d. El objetivo del aprendizaje estadístico es construir una metodología L ith como entradas una observación parcial pi de X y ajustar progresivamente una estimación hattheta de theta, para que sepamos todo lo que se necesita en X. Si se piensa en utilizar el aprendizaje estadístico para encontrar Los parámetros de una regresión lineal. Podemos modelar el espacio de estado como este: underbrace yx end right) left begin a amp b amp 1 1 amp 0 amp 0 end right cdot underbrace x 1 epsilon end right) lo que permite observar (y, x) n en cualquier n Aquí theta (a, b). Entonces usted necesita encontrar una manera de construir progresivamente un estimador de theta usando nuestras observaciones. ¿Por qué no un descenso de gradiente en la distancia L2 entre yy la regresión: C (sombrero a, sombrero b) n suma (yk - (sombrero a, xk sombrero b)) 2 Aquí gamma es un esquema de ponderación. Por lo general, una buena manera de construir un estimador es escribir correctamente los criterios para minimizar e implementar un descenso gradiente que producirá el esquema de aprendizaje L. Volviendo a nuestro problema genérico original. Necesitamos algunas matemáticas aplicadas para saber cuándo convergen los sistemas dinámicos de pareja en (X, hattheta), y necesitamos saber cómo construir esquemas de estimación L que converjan hacia la teta original. Para darle indicaciones sobre tales resultados matemáticos: Ahora podemos volver al segundo aspecto del aprendizaje estadístico que es muy interesante para los comerciantes / estrategas: 2. Los resultados usados ​​para demostrar la eficiencia de los métodos de aprendizaje estadístico pueden usarse para probar la Eficiencia de los algoritmos de negociación. Para ver que basta con leer de nuevo el sistema dinámico acoplado que permite escribir el aprendizaje estadístico: izquierda M ampamp Frho (Mn, xi) ampamp L (pi (Mn), n) final derecha. Ahora M son variables de mercado, rho es PnL subyacente, L es una estrategia de negociación. Simplemente reemplace minimizando un criterio maximizando el PnL. Véase, por ejemplo, la división óptima de órdenes entre agrupaciones de liquidez: un enfoque de algoritmo estocático por: Gilles Pags, Sophie Laruelle, Charles-Albert Lehalle. En este documento, los autores muestran a quién utilizar este enfoque para dividir de forma óptima una orden a través de diferentes piscinas oscuras simultáneamente aprender la capacidad de las piscinas para proporcionar liquidez y utilizar los resultados para el comercio. Las herramientas de aprendizaje estadístico pueden usarse para construir estrategias de negociación iterativas (la mayoría de ellas son iterativas) y probar su eficiencia. La respuesta corta y brutal es: usted no. En primer lugar, porque ML y las estadísticas no es algo que usted puede ordenar bien en uno o dos años. Mi horizonte de tiempo recomendado para aprender nada no trivial es de 10 años. ML no es una receta para ganar dinero, sino sólo otro medio para observar la realidad. En segundo lugar, porque cualquier buen estadístico sabe que la comprensión de los datos y el dominio del problema es 80 del trabajo. Es por eso que usted tiene estadísticos enfocados en el análisis de datos de Física, en genómica, en sabermetría, etc. Para el registro, Jerome Friedman, co-autor de ESL citado anteriormente, es un físico y todavía tiene una posición de cortesía en SLAC. Por lo tanto, el estudio Estadísticas y Finanzas durante unos años. Se paciente. Ve por tu propio camino. El kilometraje puede variar. Respondió Feb 9 11 at 4:41 Estoy totalmente de acuerdo. Sólo porque conoce el aprendizaje de máquinas y las estadísticas, no implica que usted sabe cómo aplicarlo a la financiación. Ndash Dr. Mike Aug 10 11 at 20:25 También una cosa importante a recordar es que won39t ser el comercio contra la gente, usted estará negociando contra otros algoritmos de inteligencia artificial que están viendo sus oficios pila en, y están calculando furiosamente las probabilidades de que el Colectivo yous sería asustado por un declive fabricado y teniendo que la menor pérdida en la creación de un pico / inmersión y engañar a todos los AI39s en parar, y luego rodar la inmersión de nuevo en ella y montar la ola, ganando sus pérdidas. El mercado de valores es un juego de suma cero, tratarlo como entrar en un partido de boxeo profesional, si no eres un veterano de 20 años, you39re va a perder ndash Eric Leschinski 13 de febrero a la 1:56 Una aplicación básica es la predicción de dificultades financieras. Obtener un montón de datos con algunas empresas que han incumplido, y otros que no tienen, con una variedad de información financiera y ratios. Utilice un método de aprendizaje automático como SVM para ver si puede predecir qué compañías predeterminarán y cuáles no. Utilice ese SVM en el futuro a corto empresas de alto riesgo probabilístico y largo probabilidades de baja probabilidad de las empresas, con los ingresos de las ventas a corto. Hay un decir quotPicking centavos para arriba delante de rollersquot del vapor. Usted está haciendo el equivalente de vender un put out-of-the-money. En este caso, you39ll hacer pequeñas ganancias durante años, a continuación, obtener totalmente limpiado cuando el mercado se derrite cada 10 años o menos. Hay también una estrategia equivalente que compra el dinero-pone: pierden el dinero por años, después hacen una matanza cuando el mercado se derrite. Vea el Cisne Negro de Talab39s. Ndash Contango Jun 5 11 at 22:20 Recuerde que las empresas internacionales han gastado cientos de miles de millones de dólares y horas hombre en las mejores y más brillantes inteligencia artificial inteligencia en los últimos 40 años. He hablado con algunas de las torres de la mente responsables de los alfas más de Citadel y Goldman Sachs, y la arrogancia de los novatos a pensar que pueden armar un algoritmo que va a toe to toe con ellos, y ganar, es casi tan tonto como Un niño que le dice que él va a saltar a la luna. Niño de buena suerte, y cuidado con el espacio marcianos. Por no decir nuevos campeones no se puede hacer, pero las probabilidades están en contra de usted. Ndash Eric Leschinski Feb 13 at 2:00 Una posibilidad que vale la pena explorar es utilizar la herramienta de aprendizaje de la máquina vectorial de soporte en la plataforma Metatrader 5. En primer lugar, si usted no está familiarizado con él, Metatrader 5 es una plataforma desarrollada para los usuarios para implementar el comercio algorítmico en los mercados de divisas y CFD (Im no estoy seguro si la plataforma se puede extender a las poblaciones y otros mercados). Normalmente se utiliza para estrategias basadas en análisis técnico (es decir, utilizando indicadores basados ​​en datos históricos) y es utilizado por personas que buscan automatizar su negociación. La Herramienta de Aprendizaje de la Máquina Vector de Soporte ha sido desarrollada por una comunidad de usuarios para permitir que las máquinas vectoriales de apoyo se apliquen a indicadores técnicos y asesoren sobre operaciones. Una versión de demostración gratuita de la herramienta se puede descargar aquí si desea investigar más. Según lo entiendo, la herramienta utiliza datos de precios históricos para evaluar si las operaciones hipotéticas en el pasado hubieran tenido éxito. A continuación, toma estos datos junto con los valores históricos de una serie de indicadores personalizables (MACD, osciladores, etc), y utiliza esto para formar una máquina de vector de apoyo. Entonces utiliza la máquina entrenada del vector de la ayuda para señalar las operaciones futuras de la compra / de la venta. Una mejor descripción se puede encontrar en el enlace. He jugado con un poco con algunos resultados muy interesantes, pero como con todas las estrategias de negociación algorítmica, recomiendo sólidas / delanteras pruebas antes de llevarlo al mercado en vivo. Respondió Dec 10 12 at 11:59 Lo sentimos, pero a pesar de ser utilizado como un ejemplo popular en el aprendizaje de la máquina, nadie ha logrado una predicción del mercado de valores. No funciona por varias razones (compruebe el paseo al azar de Fama y un montón de otros, falla racional de toma de decisiones, suposiciones erróneas), pero lo más convincente es que si funcionara, alguien podría volverse insanamente rico En cuestión de meses, básicamente poseer todo el mundo. Como esto no está sucediendo (y usted puede estar seguro de que todos los bancos lo han intentado), tenemos una buena evidencia, que simplemente no funciona. Además: ¿Cómo crees que vas a lograr lo que decenas de miles de profesionales han fallado, mediante el uso de los mismos métodos que tienen, además de recursos limitados y sólo las versiones básicas de sus métodos respondidos La razón más importante: las estrategias tienen límites de capacidad, es decir, niveles más allá de los cuales su impacto en el mercado excedería al alfa disponible, incluso suponiendo que tuviera un capital ilimitado. No estoy seguro de lo que quieres decir con una predicción del mercado de los quotales (futuros de índices ETF39s), pero ciertamente hay un montón de gente haciendo predicciones a corto plazo, y beneficiándose de ellos, todos los días en los mercados. Ndash afekz Nov 23 15 at 13:19 Yo hago eco de lo que Shane escribió. Además de leer ESL, sugeriría un estudio aún más fundamental de estadísticas primero. Más allá de eso, los problemas que he esbozado en otra pregunta sobre este intercambio son muy relevantes. En particular, el problema del sesgo de datamining es un serio obstáculo para cualquier estrategia basada en el aprendizaje de máquinas. Machine Learning for Trading Contenido del curso Introducción Este curso presenta a los estudiantes a los retos del mundo real de implementar estrategias de negociación basadas en el aprendizaje de máquinas, Para vender pedidos. El enfoque se centra en cómo aplicar enfoques de aprendizaje probabilístico de máquinas a las decisiones comerciales. Consideramos enfoques estadísticos como regresión lineal, Q-Learning, KNN y árboles de regresión y cómo aplicarlos a las situaciones reales de comercio de valores. Este curso se compone de tres mini-cursos: Nota importante Este curso sube en dificultad hacia el final. Los proyectos en la final 1/3 del curso son un reto. Estar preparado. Información del instructor Tucker Balch, Ph. D. Profesor de Informática Interactiva en Georgia Tech CS 7646 Diseñador de Cursos CS 7646 Instructor: Primavera de 2016, otoño de 2016 David Byrd Investigador Científico, Centro de Tecnología de Medios Interactivos en Georgia Tech CS 7646 Instructor: Verano 2016 CS 7646 Head TA: Spring 2016, Fall 2016 Syllabi and Horario para semestres específicos Libros de texto, Software amp Otros recursos Usaremos los siguientes libros de texto: Para Mini-curso 1: Python para Finanzas de Yves Hilpisch amazon (opcional) Para Mini-curso 2: Qué Hedge Funds Realmente Hacer por Romero y Balch amazon Necesario) Para el Mini-curso 3: Aprendizaje de la máquina de Tom Mitchell (opcional) Comprelo por 218.00 en: amazon Compre una versión de bolsillo para 61.78. ADVERTENCIAS IMPORTANTES: 1) Envían solamente a los EEUU 2) Tardan 3 semanas imprimir el libro. Si usted ordena fuera de los EEUU aceptarán reservado su dinero pero nunca envían el libro: versión menos costosa en la colina del mcgraw Compre una versión internacional del libro de bolsillo para 19.10. No estoy seguro acerca de la fiabilidad de esta empresa: internacional Prerrequisitos / Co-requisitos Todos los tipos de estudiantes son bienvenidos Los temas de aprendizaje de la máquina podría ser una revisión para los estudiantes de CS, mientras que las partes de la financiación será la revisión para los estudiantes de finanzas. Sin embargo, incluso si usted tiene experiencia en estos temas, encontrará que los consideramos de una manera diferente de lo que podría haber visto antes, en particular con un ojo hacia la aplicación para el comercio. Si responde no a las siguientes preguntas, puede ser beneficioso actualizar su conocimiento del material previo antes de tomar CS 7646: ¿Tiene un conocimiento práctico de estadísticas básicas, incluyendo distribuciones de probabilidad (como normal y uniforme), cálculo y Diferencias entre la media, la mediana y el modo ¿Entiendes la diferencia entre la media geométrica y la media aritmética? ¿Tienes habilidades de programación fuertes? Toma este examen compinvesti-prog-quiz si quieres ayudar a determinar la fuerza de tus habilidades de programación. A quién va dirigido este curso: El curso está dirigido a personas con una sólida experiencia en programación de software y un conocimiento de nivel introductorio de las prácticas de inversión. Un requisito previo es un interés y entusiasmo sobre el mercado de valores. Uso de software: Para completar las asignaciones de programación, necesitará un entorno de desarrollo que le resulte cómodo. Utilizamos Unix, pero también podemos trabajar con entornos Windows y Mac OS. Debe descargar e instalar un conjunto de módulos Python en su computadora (incluyendo NumPy, SciPy y Pandas). Logística OMSCS: Usaremos Udacity para videos de conferencias. Ingresa aquí usando tu cuenta de GT: GT-Udacity Login (video de instrucción) Nota. NO inicie sesión con su cuenta de Udacity personal, en caso de que tenga uno. Ir al curso sobre Udacity (u navegar por Mis cursos): udacity / course / viewer / c-ud501 Si tiene problemas para acceder al contenido de Udacity, comparta su problema por correo electrónico con gtech-supportudacity Usaremos T-Square para ALL Presentaciones: T-Square (escoger el sitio del curso) Usaremos Piazza para interacción y discusión: Fall 2016 Foro Piazza Clasificación A: 90 y más B: 80 y más C: 70 y más D: 60 y más F: Semestral para pesos de asignación. Requisitos técnicos mínimos Velocidad de navegador y conexión: Se recomienda encarecidamente una versión actualizada de Chrome o Firefox. También es compatible con Internet Explorer 9 y las versiones de escritorio de Internet Explorer 10 y superiores (no las versiones de metro). Se recomienda 2 Mbps a una velocidad de descarga de 0,768 Mbps como mínimo. Hardware: Un equipo con al menos 4 GB de RAM y una velocidad de CPU de al menos 2,5 GHz. Mac: OS X 10.6 o superior con las últimas actualizaciones instaladas Linux: Cualquier distribución reciente que tenga instalados los navegadores compatibles Para la toma de pruebas en línea (proctortrack) Necesitará uno de: PC: Windows XP o superior con las últimas actualizaciones instaladas Mac: OS X 10.6 o superior con las últimas actualizaciones instaladas Linux no es compatible. Horas de oficina Por determinar. Plagio En la mayoría de los casos espero que todo el código enviado será escrito por usted. Voy a presentar algunas bibliotecas en clase que se les permite usar (como pandas y numpy). De lo contrario, todo el código fuente, imágenes y escritos que usted proporcione debería haber sido creado por usted solo. Políticas de Clases Para estudiantes de auditoría: Usted debe completar un proyecto importante o el examen de mitad de período con un grado de 80 o más. Para los estudiantes con aprobación / reprobación: Su calificación general debe ser 60 o más para obtener una calificación de aprobado. La comunicación oficial es por correo electrónico: Utilizamos piazza para las discusiones, pero no es un canal oficial de comunicaciones. Todas las comunicaciones oficiales a usted serán enviadas vía t-square a su dirección de correo electrónico oficial de GT. Del mismo modo, debe comunicarnos artículos importantes por correo electrónico también. Responsabilidades del estudiante: Esté enterado de los plazos fijados en el horario. Lea su correo electrónico GT todos los días. Empezar a trabajar en proyectos incluso si no están abiertos en t-square. Período de concurso de grado: Después de que un grado de proyecto es puesto en libertad tiene 7 días para impugnar el grado. Después de ese tiempo los proyectos no serán reevaluados. Debe tener un problema muy específico con un argumento convincente en cuanto a por qué su calificación es incorrecta. Ejemplo argumento convincente: El TA tomó 10 puntos porque faltaba un gráfico, pero el gráfico es visible en la página 5. Ejemplo no argumento convincente: Creo que debería haber conseguido más puntos, por favor regrade mi proyecto. Proceso de concurso de grado: Envíe un correo electrónico a su TA sobre la situación. Tarde de la política: Las asignaciones son a las 11:55 PM hora del Este en la fecha de vencimiento de la asignación. Las asignaciones entregadas después de las 11:55 PM se consideran tarde. Las asignaciones pueden ser entregadas hasta un día tarde con una penalización de 10. No se aceptarán asignaciones con más de 24 horas de retraso. No hay un período de gracia para las asignaciones ya un día completo tarde. Programación de exámenes: Los exámenes se llevarán a cabo en días específicos en momentos específicos. Si hay una emergencia u otro problema que requiera cambiar la fecha de un examen para usted, necesitará que lo apruebe el Decano de Estudiantes. Puede solicitarlo aquí: deanofstudents. gatech. edu (bajo Recursos - gt Clase Ausencias) Esta publicación 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 fue 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 para 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 perdedor: (EDIT Estas cifras son después de pagar 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 a través de la API, el modo de simulación requería la lectura de las actualizaciones del mercado a partir de 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 dentro de la oferta 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 la mayoría de las veces un número positivo correspondía 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 obtenidos 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 totalmente 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 - Normalmente, 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 de 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 he 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á que quants Ldquogleefully escoger offrdquo. Este es un comentario bastante desafortunado thatrsquos simplemente no basado en la realidad. Poniendo eso 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.

No comments:

Post a Comment