Aprendizaje Automático Del Sistema De Comercio


Los únicos algoritmos de aprendizaje de máquina que he encontrado para trabajar realmente en el comercio son algoritmos lineales tales como varias encarnaciones de regresiones. Todo lo demás tiende a overfit de ruido. Recuerde que, a diferencia de campos como el reconocimiento de imagen o de voz, las series temporales financieras tienen una relación señal / ruido muy baja, y más problemáticamente, las distribuciones de probabilidad en las finanzas son a menudo no estacionarias. Puedes leer más sobre este tema en mi libro Quantitative Trading. 11k Vistas middot Ver Upvotes middot No es para reproducción Más respuestas abajo. Preguntas Relacionadas Andrew Ng: ¿Cómo aplicar métodos de Aprendizaje de Máquina en el Comercio de Alta Frecuencia ¿Cómo enfocar / aplicar el aprendizaje de máquina en el comercio Primero, se centraría en reunir tanto datos como sea posible y poner en un solo formulario de tabla grande. Esto sería datos de precios históricos. Tal vez aumentar esto con artículos de periódico, blogs, sec filings convertido en vectores de conteo de palabras, etc (utilizando técnicas de procesamiento de lenguaje natural). A continuación, entrenaría un algoritmo supervisado para la decisión de compra / venta. Algoritmos adecuados son la regresión logística (más rápida) y los bosques al azar (más precisos usualmente). Hay otros, como máquinas de vector de apoyo, árboles de decisión potenciados, redes neurales de 3 capas, pero estos no ofrecen una precisión tan buena como los bosques al azar (ya menudo más lento también) o tanta velocidad como la regresión logística. En mi opinión, la mejor opción sería simplemente la regresión logística, y la mejor implementación es wapbit vowpal - extremadamente rápido, puede manejar enormes cantidades de datos - 1 terabyte por hora en una máquina, más rápido aún en el clúster - y de código abierto. Esto también le permite ver claramente qué indicadores (columnas de la tabla) son predictivos. También puede agregar artículos de periódico, etc. directamente como texto a este usando el truco de hashing. Esto también se implementa en wabbit vowpal, así, y por lo que puede manejar muy grande de texto de forma libre artículos en una sola fila también. Habiendo hecho lo anterior hasta el punto que ya no puede recopilar más fuentes de datos, it039s tiempo para pasar a la fase de ingeniería de características. Usted ya hizo algo de esto cuando lo hizo nlp cosas (pero que estaban utilizando técnicas estándar - es decir, no pensar / inventar sus propios métodos). Hay dos opciones en este punto: manual y automático. Por lo general, las personas en este momento inventan sus propias características. Esto es lo que los comerciantes pasan la mayor parte de su tiempo haciendo - las llamadas quotstrategiesquot o quotrulesquot. Estos son probados en contra de los datos - llamado backtesting. Otro método más reciente, autómatico, también está disponible hace poco: el aprendizaje profundo sin supervisión. El aprendizaje no supervisado existía antes, pero era de la variedad quotshallowquot y no funcionaba bien en la práctica. Redes neuronales de aprendizaje profundo usando autocodificadores es un nuevo método (inventado hace sólo 6 años) que funciona muy bien. Este documento es una demostración de ello. Esencialmente, lanzando porciones de computadoras en el problema, es posible formar estrategias automáticamente. Cuanto más grande es la red neuronal, mejor lo hace, pero en consecuencia se requieren más computadoras. Esto (en mi opinión), sin embargo, es mejor / más barato que tratar de contratar a un montón de gente altamente creativa / analítica / trabajadora. Supongo que un buen punto de partida sería un sistema de comercio existente (y entonces buscarías, en ese sistema, para lugares donde se beneficiaría para alguna forma de predicción de grano fino). La única vez que hice algo similar, traté de aplicar el aprendizaje de la máquina al comercio y descubrí que la mayor parte de la complejidad era en realidad manejar los aspectos burocráticos de la negociación (cuándo vender fuertemente afecta a los impuestos cada corredor le cobra de una manera un poco diferente todos Estos problemas periféricos cambian lo que es una pérdida y lo que es un beneficio). Creo que se puede hacer la parte de aprendizaje de la máquina en general de dos maneras: o bien utilizando algún tipo de regresión para predecir los valores de las acciones y utilizar estos valores para tomar decisiones (y es mejor tratar de predecir conjuntamente, Predecir las decisiones de compra y venta directamente para minimizar la pérdida usando algún tipo de aprendizaje de refuerzo de aprendizaje en línea. Nada impide que uses rasgos muy poco ortodoxos, como mensajes de blog sobre las empresas involucradas, sus presentaciones en la SEC, etc. No estoy seguro de cuál es el estado del arte en esto, especialmente porque estos papeles de alguna manera tienden a no ser publicados. 5.5k Vistas middot Ver Upvotes middot No para ReproducciónMáquina Learning for Trading Contenido del curso Descripción Este curso presenta a los estudiantes a los retos del mundo real de la implementación de estrategias de negociación basadas en el aprendizaje de máquinas, incluyendo los pasos algorítmicos de recolección de información a órdenes de mercado. 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) Les toma 3 semanas para 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 que 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 te gustaría 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 la práctica 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. Para el desarrollo y prueba de código, estas tres configuraciones funcionarán PC: Windows XP o superior con las últimas actualizaciones instaladas Mac: OS X 10.6 o superior con las últimas actualizaciones instaladas Linux: Cualquier distribución reciente que tenga instalados los navegadores compatibles Para probar 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 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 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.

Comments