Thursday 26 October 2017

Opción Trading Python


Python Algorithmic Trading Library PyAlgoTrade es una biblioteca de intercambio algorítmico Python centrada en backtesting y soporte para el comercio de papel y el comercio en vivo. Digamos que usted tiene una idea para una estrategia comercial y le gustaría evaluar con datos históricos y ver cómo se comporta. PyAlgoTrade le permite hacerlo con el mínimo esfuerzo. Características principales Totalmente documentado. Evento conducido . Soporta órdenes de Market, Limit, Stop y StopLimit. Soporta los archivos de Yahoo Finance, Google Finance y NinjaTrader CSV. Soporta cualquier tipo de datos de series de tiempo en formato CSV, por ejemplo Quandl. Bitcoin soporte comercial a través de Bitstamp. Indicadores técnicos y filtros como SMA, WMA, EMA, RSI, bandas de Bollinger, exponente de Hurst y otros. Métricas de rendimiento como Sharpe ratio y análisis de reducción. Manejo de eventos de Twitter en tiempo real. Profiler de eventos. Integración TA-Lib. Escalable Muy fácil de escalar horizontalmente, es decir, usar uno o más equipos para volver a probar una estrategia. Free PyAlgoTrade es libre, de código abierto, y está licenciado bajo la Licencia Apache, Versión 2.0.Learn Quant habilidades Si usted es un comerciante o un inversor y le gustaría adquirir un conjunto de habilidades de negociación cuantitativa, usted está en el lugar correcto. El curso de Trading con Python le proporcionará las mejores herramientas y prácticas para la investigación de comercio cuantitativo, incluyendo funciones y guiones escritos por expertos comerciantes cuantitativos. El curso le da el máximo impacto para su tiempo invertido y dinero. Se centra en la aplicación práctica de la programación al comercio en lugar de la informática teórica. El curso se pagará rápidamente ahorrándote tiempo en el procesamiento manual de datos. Pasará más tiempo investigando su estrategia e implementando operaciones rentables. Descripción general del curso Parte 1: Conceptos básicos Usted aprenderá por qué Python es una herramienta ideal para el comercio cuantitativo. Comenzaremos por crear un entorno de desarrollo y luego le presentaremos a las bibliotecas científicas. Parte 2: Manejo de los datos Aprenda a obtener datos de varias fuentes gratuitas como Yahoo Finance, CBOE y otros sitios. Leer y escribir múltiples formatos de datos incluyendo archivos CSV y Excel. Parte 3: Investigación de estrategias Aprenda a calcular PL y métricas de rendimiento como Sharpe y Drawdown. Construir una estrategia comercial y optimizar su rendimiento. Múltiples ejemplos de estrategias se discuten en esta parte. Parte 4: Viviendo en Vivo Esta parte está centrada en Interactive Brokers API. Usted aprenderá cómo obtener datos de stock en tiempo real y colocar pedidos en vivo. Lotes de código de ejemplo El material de curso consiste en portátiles que contienen texto junto con código interactivo como éste. Podrás aprender interactuando con el código y modificándolo a tu gusto. Será un gran punto de partida para escribir sus propias estrategias Si bien algunos temas se explican con gran detalle para ayudarle a entender los conceptos subyacentes, en la mayoría de los casos ni siquiera tendrá que escribir su propio código de bajo nivel, debido al apoyo de los existentes Bibliotecas de fuentes. TradingWithPython biblioteca combina gran parte de la funcionalidad discutida en este curso como un ready-to-use funciones y se utilizará a lo largo del curso. Pandas le proporcionará toda la potencia de carga pesada necesaria en el crujido de datos. Todo el código se proporciona bajo la licencia BSD, permitiendo su uso en aplicaciones comerciales Calificación del curso Un piloto del curso se llevó a cabo en la primavera de 2013, esto es lo que los estudiantes llegaron a decir: Matej curso bien diseñado y buen entrenador. Definitivamente vale la pena su precio y mi tiempo Lave Jev obviamente conocía sus cosas. Profundidad de cobertura era perfecta. Si Jev corre algo como esto de nuevo, Ill ser el primero en inscribirse. John Phillips Su curso realmente me hizo empezar a considerar python para el análisis del sistema de existencias. Por qué Python Antes de empezar, me gustaría decirle por qué uso Python para la informática financiera. Me tomó varios años para tener una idea de todas las opciones por ahí y voy a tratar de convencer de que Python es realmente la mejor herramienta para la mayoría de las tareas involucradas en el comercio. Cuando empecé a programar como un niño en algún lugar a principios de los años noventa, la elección de un lenguaje de programación era fácil, ya que simplemente no había muchos para elegir. Comencé por primera vez en Pascal y desde entonces he programado en Delphi, C, C, C, Java. VB, PHP, Matlab, Python, SPIN e incluso ASM. No aprendí todas estas lenguas para divertirme, ya que tengo mejores cosas que hacer (como el trabajo real), pero necesitaba que no tuviera ningún idioma de cuchillo de ejército suizo para todas mis necesidades. Necesitaba C y Delphi para hacer aplicaciones independientes, PHP para construir un sitio web y Matlab para cálculos científicos. Como dice el refrán, Jack de todos los oficios es el amo de ninguno. Así que cambiando de un idioma a otro nunca adquirí conocimiento experto en ninguno de ellos. Idealmente, me gustaría aprender sólo un idioma que es adecuado para todo tipo de trabajo: crujido de números, la construcción de aplicaciones, el desarrollo web, la interfaz con las API, etc Este idioma sería fácil de aprender, el código sería compacto y claro, sería Correr en cualquier plataforma. Me permitiría trabajar de manera interactiva, permitiendo que el código evolucione a medida que lo escribo y al menos sea libre como en el habla. Y lo más importante, me importa mucho más sobre mi propio tiempo que el tiempo de CPU de mi PC, por lo que el rendimiento de crujir número es menos importante para mí que mi propia productividad. Hoy en día, los dos lenguajes más populares para la informática técnica y científica son Matlab y Python. Ambos satisfacen muchos de los deseos descritos anteriormente, pero tienen algunas diferencias importantes. Matlab es más popular cuando se trata de computación técnica. Esto es lo que solía usar día a día para resolver problemas de ingeniería. Para las simulaciones numéricas y el trabajo con datos limpios, es probablemente la mejor herramienta que hay. Buen IDE, fantásticas funciones de trazado, gran documentación. Es menos adecuado para el desarrollo de aplicaciones o como un lenguaje de uso general. Espere pagar 2k por una licencia comercial básica más extra para cajas de herramientas específicas. Hacer investigaciones financieras en Matlab ha demostrado ser un desafío para mí, principalmente porque no hay una manera fácil de manejar datos sucios (datos que no están bien alineados en una tabla, pero tiene múltiples fuentes con fechas diferentes y entradas faltantes). Otro desafío que enfrenté fue mantener mi código de convertirse en un desastre. Es posible escribir bibliotecas ordenadas con Matlab, pero está lejos de trivial y el diseño del lenguaje realmente fomenta la codificación desordenada. Durante el uso de Matlab para el desarrollo de la estrategia de negociación que era capaz de hacer frente a las deficiencias de esta plataforma. Sin embargo, cuando decidí construir un sistema de comercio automático, había llegado a un callejón sin salida. Aunque pude conectarme con Interacive Brokers API, resultó que no había manera de crear una aplicación confiable. Si bien es bueno para la investigación, Matlab apesta para el despliegue. Esto fue cuando decidí mirar otras opciones. Python es muy similar a Matlab y resuelve la mayoría de sus deficiencias. Sin embargo, lo que obtienes es un lenguaje de programación que puede completar casi cualquier tarea, desde la minería de datos hasta el desarrollo web y las aplicaciones de calidad de producción con excelentes interfaces gráficas de usuario (GUIs). Si tengo que empezar todo de nuevo, elegiría Python, ya que me ahorraría la molestia de aprender otro idioma para Gui y el desarrollo web. Después de usar Python durante tres años, sigo siendo tan entusiasta como el momento en que me he enamorado de él. Siento que muchos otros comerciantes pueden beneficiar grandemente aprendiendo Python desde el principio y por esta razón he fijado un comercio con el curso de Python. Instalación Python Python, como la mayoría del software de código abierto tiene una característica específica: puede ser un reto para un principiante encontrar su camino alrededor de miles de bibliotecas y herramientas. Esta guía te ayudará a conseguir todo lo que necesitas en tu caja de herramientas, con suerte sin ningún problema. Afortunadamente hay varias distribuciones, que contienen la mayoría de los paquetes requeridos, haciendo la instalación una brisa. La mejor distribución en mi opinión es Anaconda de Continuum Analytics. La distribución de Anaconda incluye: intérprete Python 3 Python en la parte superior de la cual todo lo demás ejecuta Ipython. Interactive shell amp portatil Spyder IDE numpy amp scipy. Herramientas de computación científica, similar a los pandas Matlab 2. Biblioteca de estructuras de datos. Muchos más paquetes científicos y de utilidad, vea la lista de paquetes Por lo tanto, por favor, vaya adelante e instale Anaconda Extra herramientas y bibliotecas Junto a las cosas que vino incluido con el instalador de Anaconda, necesitará al menos un editor de texto de descenso y un bloc de notas del navegador es versátil Y el editor de texto ligero Google Chrome o navegador Firefox es necesario para Jupyter portátil (Internet Explorer no funcionará) Otras bibliotecas útiles incluyen herramientas para lectura xml, documentación, etc se cubrirá más adelante. Código de ejecución La mayor parte del código de este curso se ejecuta en un documento interactivo denominado notebook. Nota: El entorno de programación interactiva que usamos se llama cuaderno de Jupyter. Anteriormente se llamaba IPython notebook. Pero se ha renombrado a Jupyter. Esto se hizo para demostrar que los idiomas múltiples son compatibles (JUlia, PYThon, R. y más) Este curso fue escrito antes de esta transición de nomenclatura, por lo que ocasionalmente encontrarás referencias a cuaderno Ipython. Que es el mismo que el portátil Jypyter Lanzamiento del portátil Jupyter En este momento (mayo de 2016) no es posible cambiar el directorio de trabajo después de iniciar el portátil. Usted necesita comenzarlo en el directorio que contiene sus cuadernos para tener acceso a sus cuadernos. Sin embargo, hay varias opciones para abrir rápidamente sus portátiles: Inicio del portátil Jupyter con un acceso directo Si está utilizando un directorio estático para almacenar los cuadernos, la forma más fácil de abrirlos sería en un directorio personalizado mediante un acceso directo modificado: 1. Busque el acceso directo al cuaderno en el menú Inicio haciendo clic en Inicio y escribiendo Jupyter en la ventana de búsqueda. Una vez que se encuentra el acceso directo, cópielo al portapapeles presionando el botón derecho del ratón y seleccionando copiar. Luego péguelo en su escritorio. Ahora puede editar el directorio de trabajo haciendo clic con el botón derecho en el acceso directo del escritorio y eligiendo las propiedades. Cambie el campo Inicio en el directorio donde se encuentran sus portátiles. Puede crear varios métodos abreviados uno para cada directorio de ordenadores. A partir del símbolo del sistema Opcionalmente, puede iniciar el cuaderno Jupyter desde el comando promt: Para iniciarlo en el directorio correcto: Abrir el Explorador de Windows Mantenga presionada la tecla Mayús y haga clic con el botón derecho en el directorio que le gustaría utilizar como ubicación del portátil. Aparecerá un menú. Seleccione Abrir ventana de comandos aquí. Se iniciará un símbolo del sistema con la ruta correcta. Inicie Jupyter con jupyter notebook Comenzando con el menú contextual Otra opción para iniciar el servidor Jupyter en un directorio de su elección sería agregar un acceso directo al menú contextual. Para hacer los menús contextuales de instalación, siga las instrucciones de instalación Le dará un nuevo menú contextual al hacer clic con el botón derecho en un directorio en el Explorador de Windows: Conceptos básicos de Python Conceptos básicos de idioma Si es nuevo en python, . Le recomiendo que comience con Python Language Essentials en el libro Python for Data Analysis. Opcional Se puede encontrar una selección de tutoriales en línea gratuitos en la página Recursos. Trabajar con los cuadernos de Jupyter El bloc de notas para empezar puede encontrarse en los cuadernos de ejemplo de la parte inferior de esta página (o puede verlo en línea aquí). El primer cuaderno le dará una visión general del entorno IPython. Para ejecutar código de ejemplo, tiene que descargar extraer los cuadernos a su directorio de portátiles. Una vez que haya descargado el archivo, puede iniciar el notebook en ese directorio, el archivo descargado debería aparecer en la lista de los portátiles disponibles. Un tutorial más extenso sobre el uso del cuaderno se puede encontrar aquí. Bibliotecas científicas NumPy NumPy es un paquete fundamental diseñado para los cálculos científicos. En su funcionalidad es muy similar a Matlab, proporcionando métodos de trabajo con matrices y arrays multidimensionales. Numpy sitio web ofrece toda la documentación que necesita junto con un tutorial. Pero leer el Capítulo 4 del libro Python for Data Analysis es aún mejor para obtener una visión general de lo que esta herramienta puede hacer. Usted no debe preocuparse demasiado sobre la comprensión de todas las campanas y silbidos de NumPy, por ahora es suficiente para entender los conceptos generales de trabajar con ndarray e indexación. Matplotlib Para tener una idea de las capacidades casi infinitas de esta biblioteca, basta con echar un vistazo a la galería matplotlib. Normalmente solo necesitamos las funciones plot () e hist (). Otro gran tutorial de las funciones de trazado se da en este cuaderno. Escribir, ejecutar y depurar código Hasta ahora nos hemos centrado en escribir código dentro del cuaderno IPython. Esta es una buena manera de hacer prototipos rápidos, pero cuando se necesita reutilizar la misma funcionalidad en diferentes portátiles, el código de copiar y pegar es un muy mal hábito. Un buen hábito sería utilizar módulos para reutilizar la funcionalidad. Un módulo es esencialmente un archivo. py o un directorio con archivos. py que contiene funciones y clases. Estas funciones / clases pueden hacerse accesibles mediante la directiva de importación. Una buena explicación de los módulos se puede encontrar en los documentos de python. Estaremos buscando escribir nuestros propios módulos en la Parte 2, por ahora es suficiente saber cómo reutilizar la funcionalidad de los módulos existentes. Un flujo de trabajo de desarrollo de código típico consta de dos etapas: Etapa de prototipado: Aquí es donde se toma el enfoque rápido-n-sucio. Desarrollar interactivamente utilizando IPython, IPython o Spyder. Aquí puede reutilizar funciones de bibliotecas existentes y crear nuevas funcionalidades. El portátil es ideal para el trabajo interactivo, pero menos adecuado para la depuración avanzada, Spyder es excelente para la depuración y Ipython está en algún punto intermedio. Mi propia experiencia es que un depurador avanzado rara vez se requiere, normalmente puedo resolver 70 de los errores sólo por mirar el mensaje de error, otro 25 mediante la adición de una declaración de impresión. También hay una manera de iniciar un depurador desde el portátil. Sólo tienes que escribir qtconsole en el bloc de notas y una nueva consola se abrirá conectado al mismo ipython detrás de las escenas. La consola tiene acceso a todas las variables y también puede ejecutar depuración. Que iniciará una sesión de depuración. Etapa del módulo: Una vez que esté satisfecho con la funcionalidad desarrollada en una etapa de prototipado, puede integrarla en un módulo. En esta etapa es una buena práctica agregar alguna documentación al código que usted ha escrito. La documentación de código en Python es muy fácil con docstrings. Docstrings son cadenas de texto incluidas en el código que se utilizan para documentar la funcionalidad. Para un par de ejemplos eche un vistazo aquí. Para obtener una productividad óptima en la fase del módulo, necesita un buen editor de código fuente. Hay muchas opciones por ahí. Mis favoritos (gratis) son (en orden de creciente complejidad y características): Bloc de notas Bloc de notas, pero mucho mejor (resaltado de sintaxis, etc). Ideal para cambios rápidos de código, cuando no desea iniciar un editor más extenso. Spyder. Ligero que cierra la brecha entre IPython y un completo IDE (Integrated Development Environment). Específicamente orientado al trabajo científico interactivo. Pyscripter - Fácil de usar IDE con un depurador bien integrado. Sólo Windows. Pydev - IDE de calidad profesional. Puede tomar algún tiempo para encontrar una forma de desarrollar el código que mejor se adapte a usted. Para mí el flujo de trabajo ideal es: Prototype with notebook - agregar a un módulo con PyDev o PyScripter - módulo de uso en un nuevo cuaderno. Más material de lectura. Capítulo 3 del libro del PDA. Ok, suficiente teoría, permite llegar a trabajar con módulos. Si ya no ha descargado los libros para esta parte, por favor, consígalos en la sección de ejemplos de portátiles. Y eche un vistazo al cuaderno twp03Workingwithmodules. Ejemplos de portátiles Ahora es el momento de hacer uso de los conceptos que ha aprendido en esta parte. Saltaremos directamente al trabajo con matrices numpy y funciones de trazado. En cuanto a trazado, ahora sólo necesita dos funciones plot () e hist () junto con un par de comandos para establecer las etiquetas de títulos y ejes. Hay tres ejemplos de portátiles en esta parte del curso: twp01IPythonNotebook - le muestra el camino alrededor de IPython notebook (ver en línea) twp02Leveragedetfs - simular el etfs aprovechado para demostrar que no hay tal cosa como el apalancamiento etf decaimiento (ver en línea) twp03Workingwithmodules. ipynb Aprender a trabajar con los módulos (ver en línea) Obtener los cuadernos Sólo tiene que el archivo zip y extraerlo a su carpeta de portátiles, a continuación, iniciar Jupyter portátil para verlos aparecer en el salpicadero.

No comments:

Post a Comment