Wednesday, February 15, 2017

Option Trading Python

Python Algorithmic Trading Library PyAlgoTrade est une bibliothèque de négociation Algorithmique Python centrée sur le backtesting et le support pour le trading de papier et le trading en direct. Disons que vous avez une idée pour une stratégie de trading et youd comme pour l'évaluer avec des données historiques et voir comment il se comporte. PyAlgoTrade vous permet de le faire avec un minimum d'effort. Caractéristiques principales Entièrement documenté. Événement. Prend en charge les commandes Market, Limit, Stop et StopLimit. Prend en charge les fichiers Yahoo Finance, Google Finance et NinjaTrader CSV. Supporte tout type de données de séries chronologiques au format CSV, par exemple Quandl. Bitcoin trading support via Bitstamp. Indicateurs techniques et filtres comme SMA, WMA, EMA, RSI, bandes de Bollinger, exposant de Hurst et d'autres. Des mesures de performance comme le ratio Sharpe et l'analyse de retrait. Gestion des événements Twitter en temps réel. Profiler d'événements. Intégration TA-Lib. Très facile à mettre à l'échelle horizontalement, c'est-à-dire à utiliser un ou plusieurs ordinateurs pour revoir une stratégie. PyAlgoTrade est libre, open source, et il est sous licence Apache, version 2.0.Learn Quant compétences Si vous êtes un commerçant ou un investisseur et que vous souhaitez acquérir un ensemble de compétences de négociation quantitatives, vous êtes au bon endroit. Le Trading avec Python cours vous fournira les meilleurs outils et pratiques pour la recherche quantitative de négociation, y compris les fonctions et les scripts écrits par des commerçants quantitatifs experts. Le cours vous donne un impact maximal pour votre temps investi et votre argent. Il se concentre sur l'application pratique de la programmation au commerce plutôt que l'informatique théorique. Le cours va payer lui-même rapidement en vous faisant gagner du temps dans le traitement manuel des données. Vous passerez plus de temps à la recherche de votre stratégie et la mise en œuvre des métiers rentables. Aperçu du cours Partie 1: Notions de base Vous apprendrez pourquoi Python est un outil idéal pour le commerce quantitatif. Nous commencerons par créer un environnement de développement et nous vous présenterons ensuite aux bibliothèques scientifiques. Partie 2: Manipulation des données Apprenez à obtenir des données provenant de diverses sources libres telles que Yahoo Finance, CBOE et d'autres sites. Lire et écrire plusieurs formats de données, y compris les fichiers CSV et Excel. Partie 3: Recherche de stratégies Apprenez à calculer PL et des mesures de performance connexes comme Sharpe et Drawdown. Élaborer une stratégie commerciale et optimiser ses performances. Plusieurs exemples de stratégies sont discutés dans cette partie. Part 4: Going live Cette partie est centrée sur Interactive Brokers API. Vous apprendrez comment obtenir des données stock en temps réel et passer des commandes en direct. Beaucoup d'exemples de code Le matériel de cours se compose de carnets qui contiennent du texte avec code interactif comme celui-ci. Vous serez en mesure d'apprendre en interagissant avec le code et de le modifier à votre goût. Ce sera un excellent point de départ pour écrire vos propres stratégies Si certains sujets sont expliqués en détail pour vous aider à comprendre les concepts sous-jacents, dans la plupart des cas, vous n'aurez même pas besoin d'écrire votre propre code de bas niveau, en raison du soutien existant ouvert - source bibliothèques. TradingWithPython bibliothèque combine une grande partie de la fonctionnalité discutée dans ce cours comme un prêt à l'emploi des fonctions et sera utilisé tout au long du cours. Pandas vous fournira toute la puissance de levage lourd nécessaire au crunching de données. Tout le code est fourni sous la licence BSD, permettant son utilisation dans des applications commerciales Note du cours Un pilote du cours a eu lieu au printemps 2013, c'est ce que les élèves ont à dire: Matej bien conçu cours et un bon entraîneur. Vaut vraiment le prix et mon temps Lave Jev connaissait évidemment ses trucs. La profondeur de la couverture était parfaite. Si Jev exécute quelque chose comme ça encore, Ill sera le premier à s'inscrire. John Phillips Votre cours m'a vraiment fait sauter commencé en considérant Python pour l'analyse du système de stock. Pour Python Avant de commencer, j'aimerais vous dire pourquoi j'utilise Python pour l'informatique financière. Il m'a fallu plusieurs années pour obtenir une compréhension de toutes les options là-bas et je vais essayer de vous convaincre que Python est vraiment le meilleur outil pour la plupart des tâches impliquées dans le commerce. Quand j'ai commencé à programmer comme un gamin quelque part dans le début des années nonante, le choix d'un langage de programmation était facile, car il n'y avait tout simplement pas beaucoup de choix. J'ai d'abord commencé à Pascal et depuis, j'ai programmé dans Delphi, C, C, C, Java. VB, PHP, Matlab, Python, SPIN et même ASM. Je n'ai pas appris toutes ces langues pour m'amuser, car j'ai de meilleures choses à faire (comme le travail réel), mais j'avais besoin comme je n'avais pas de couteau suisse langue de couteau pour tous mes besoins. J'avais besoin de C et Delphi pour faire des applications autonomes, PHP pour construire un site Web et Matlab pour des calculs scientifiques. Comme le dit le proverbe, Jack de tous les métiers est maître d'aucun. Donc en passant d'une langue à une autre je n'ai jamais acquis des connaissances spécialisées dans l'un d'eux. Idéalement, je voudrais apprendre une seule langue qui convient à toutes sortes de travaux: le crunching de nombre, la construction d'application, le développement web, l'interface avec les API etc Cette langue serait facile à apprendre, le code serait compact et clair, il serait Exécuté sur n'importe quelle plate-forme. Cela me permettrait de travailler de manière interactive, permettant au code d'évoluer au fur et à mesure que je l'écris et d'être au moins libre comme dans la parole. Et surtout, je m'occupe beaucoup plus de mon temps propre que l'heure du processeur de mon PC, donc le nombre crunching performance est moins important pour moi que ma propre productivité. Aujourd'hui, deux langages les plus populaires pour l'informatique technique et scientifique sont Matlab et Python. Tous deux répondent à plusieurs des souhaits décrits ci-dessus, mais ils ont des différences importantes. Matlab est le plus populaire quand il s'agit de l'informatique technique. C'est ce que j'utilisais au jour le jour pour résoudre des problèmes d'ingénierie. Pour les simulations numériques et le travail avec des données propres, c'est probablement le meilleur outil qu'il ya. Bon IDE, les fonctions de traçage fantastiques, une excellente documentation. Il est moins adapté pour le développement d'applications ou comme langage à usage général. Attendez-vous à payer 2k pour une licence commerciale de base plus extra pour les boîtes à outils spécifiques. Faire de la recherche financière dans Matlab s'est avéré être un défi pour moi, principalement parce qu'il n'y a pas de moyen facile de manipuler des données sales (données qui n'est pas bien aligné dans une table, mais a plusieurs sources avec des dates différentes et des entrées manquantes). Un autre défi que j'ai dû faire face était de garder mon code de devenir un gâchis. Il est possible d'écrire des bibliothèques soignées avec Matlab, mais est loin d'être trivial et la conception du langage encourage réellement le codage désordonné. Tout en utilisant Matlab pour le développement de la stratégie de négociation, j'ai été capable de faire face aux lacunes de cette plate-forme. Cependant, quand j'ai décidé de construire un système commercial automatique, j'avais frappé une impasse. Alors que je pouvais me connecter à Interacive Brokers API, il s'est avéré qu'il n'y avait aucun moyen de créer une application fiable. Bien que bon pour la recherche, Matlab suce pour le déploiement. C'était quand j'ai décidé d'examiner d'autres options. Python est très similaire à Matlab et résout la plupart de ses lacunes. Et c'est gratuit Avec Ipython, le travail interactif des ordinateurs portables en Python est simple comme dans Matlab, mais ce que vous obtenez est un langage de programmation qui peut accomplir presque toutes les tâches, du data mining au développement web et aux applications de qualité de production avec de grandes interfaces graphiques. Si je devais recommencer, je choisirais Python car il me sauverait la peine d'apprendre une autre langue pour Gui et le développement web. Après avoir utilisé Python pendant trois ans, je suis toujours aussi enthousiaste que le moment où je suis tombé en amour avec elle. Je pense que beaucoup d'autres commerçants peuvent grandement bénéficier de l'apprentissage de Python dès le départ et pour cette raison, j'ai mis en place un trading avec Python cours. Installation Python, comme la plupart des logiciels open source a une caractéristique spécifique: il peut être difficile pour un débutant de trouver son chemin autour de milliers de bibliothèques et d'outils. Ce guide vous aidera à obtenir tout ce dont vous avez besoin dans votre boîte à outils quantique, espérons-le sans aucun problème. Heureusement, il ya plusieurs distributions, contenant la plupart des paquets requis, rendant l'installation une brise. La meilleure distribution à mon avis est Anaconda de Continuum Analytics. La distribution Anaconda comprend: Python 3 interprète Python sur lequel tout le reste fonctionne Ipython. Ordinateur portable Spyder IDE numpy amp scipy. Outils de calcul scientifique, semblable à Matlab pandas 2. Bibliothèque de structures de données. Beaucoup plus de paquets scientifiques et d'utilité, voir la liste de paquet Alors, s'il vous plaît, allez-y et installez des outils et des bibliothèques Anaconda supplémentaires À côté des goodies inclus avec l'installateur d'Anaconda, vous aurez besoin au moins d'un éditeur de texte de descente et d'un bloc-notes de navigateur est polyvalent Et l'éditeur de texte léger Google Chrome ou navigateur Firefox est nécessaire pour Jupyter portable (Internet Explorer ne fonctionnera pas) D'autres bibliothèques utiles comprennent des outils de lecture xml, la documentation, etc seront couverts plus tard. Code d'exécution La plupart du code de ce cours est exécuté dans un document interactif appelé un bloc-notes. Note: L'environnement de programmation interactif que nous utilisons est appelé Jupyter notebook. Auparavant, il s'appelait IPython. Mais a été rebaptisé Jupyter. Cela a été fait pour montrer que les langues multiples sont pris en charge (JUlia, PYThon, R. et plus) Ce cours a été écrit avant cette transition de nommage, donc occasionnellement youll rencontrer des références à l'ordinateur portable Ipython. Qui est le même que le portable Jypyter Lancement du portable Jupyter En ce moment (mai 2016), il n'est pas possible de modifier le répertoire de travail après le démarrage du portable. Vous devez le démarrer dans le répertoire contenant vos ordinateurs portables pour accéder à vos ordinateurs portables. Il existe cependant plusieurs options pour ouvrir rapidement vos ordinateurs portables: Démarrage de l'ordinateur portable Jupyter avec un raccourci Si vous utilisez un répertoire statique pour stocker les ordinateurs portables, la façon la plus simple de les ouvrir serait d'utiliser un raccourci modifié: 1. Recherchez le raccourci vers le bloc-notes dans le menu Démarrer en cliquant sur Démarrer et en tapant Jupyter dans la fenêtre de recherche. Une fois le raccourci trouvé, copiez-le dans le Presse-papiers en appuyant sur le bouton droit de la souris et en sélectionnant Copier. Ensuite, collez-le sur votre bureau. Vous pouvez maintenant modifier le répertoire de travail en cliquant sur le bouton droit sur le raccourci du bureau et en choisissant les propriétés. Changez le champ Start dans le répertoire où se trouvent vos ordinateurs portables. Vous pouvez créer plusieurs raccourcis pour chaque répertoire de bloc-notes. A partir de l'invite de commande Vous pouvez démarrer Jupyter notebook à partir de la commande promt: Pour le démarrer dans le bon répertoire: Ouvrir le navigateur Windows Maintenez la touche Maj enfoncée et cliquez avec le bouton droit sur le répertoire que vous souhaitez utiliser comme emplacement du portable. Un menu apparaîtra. Sélectionnez Ouvrir la fenêtre de commande ici. Une invite de commande démarre avec le bon chemin. Démarrer Jupyter avec jupyter portable À partir de menu contextuel Une autre option pour démarrer Jupyter serveur dans un répertoire de votre choix serait en ajoutant un raccourci de menu contextuel. Pour faire installer les menus contextuels, suivez les instructions d'installation Il vous donnera un nouveau menu contextuel lorsque vous cliquez avec le bouton droit de la souris sur un répertoire dans l'Explorateur Windows: Notions de base sur le langage Notions de base sur la langue Si vous êtes nouveau dans python, . Je vous recommande de commencer par Python Language Essentials dans le livre Python for Data Analysis. Facultatif Une sélection de didacticiels en ligne gratuits est disponible sur la page Ressources. Travailler avec les ordinateurs portables Jupyter Le bloc-notes pour vous aider à démarrer se trouve dans l'exemple de cahiers au bas de cette page (ou vous pouvez le consulter en ligne ici). Le premier bloc-notes vous donnera un aperçu de l'environnement IPython. Pour exécuter un exemple de code, vous devez télécharger extraire les blocs-notes vers votre répertoire de bloc-notes. Une fois que vous avez téléchargé le fichier, vous pouvez démarrer le portable dans ce répertoire, le fichier téléchargé devrait apper dans la liste des ordinateurs portables disponibles. Vous trouverez un tutoriel plus détaillé sur l'utilisation de l'ordinateur portable ici. Bibliothèques scientifiques NumPy est un paquet fondamental conçu pour les calculs scientifiques. Dans sa fonctionnalité, il est très similaire à Matlab, fournissant des méthodes de travail avec des matrices multidimensionnelles et des tableaux. Numpy site fournit toute la documentation dont vous avez besoin avec un tutoriel. Mais la lecture du chapitre 4 du livre Python pour analyse de données est encore mieux pour obtenir un aperçu de ce que cet outil peut faire. Vous ne devriez pas vous inquiéter trop de comprendre toutes les cloches et sifflets de NumPy, car il suffit maintenant de comprendre les concepts généraux de travailler avec ndarray et l'indexation. Matplotlib Pour avoir une idée des possibilités presque infinies de cette bibliothèque, il suffit de jeter un oeil à la galerie matplotlib. Nous n'aurons normalement besoin que des fonctions plot () et hist (). Un autre grand didacticiel des fonctions de complot est donné dans ce cahier. Code d'écriture, de fonctionnement et de débogage Jusqu'à présent, nous nous sommes concentrés sur l'écriture de code à l'intérieur du bloc-notes IPython. C'est un bon moyen pour le prototypage rapide, mais quand vous avez besoin de réutiliser la même fonctionnalité dans différents ordinateurs portables, copier-coller le code est une très mauvaise habitude. Une bonne habitude serait d'utiliser des modules pour réutiliser la fonctionnalité. Un module est essentiellement un fichier. py ou un répertoire avec des fichiers. py contenant des fonctions et des classes. Ces classes de fonctions peuvent être rendues accessibles par la directive d'importation. Une bonne explication des modules peut être trouvée dans les documents python. Nous envisagerons d'écrire nos propres modules dans la partie 2, car il suffit maintenant de savoir comment réutiliser la fonctionnalité des modules existants. Un processus de développement de code typique se compose de deux étapes: Etape de prototypage: C'est là que vous prenez l'approche rapide-n-sale. Développer interactivement en utilisant IPython, IPython ou Spyder. Ici, vous pouvez réutiliser les fonctions des bibliothèques existantes et créer de nouvelles fonctionnalités. Le portable est idéal pour le travail interactif, mais moins adapté pour le débogage avancé, Spyder est excellent pour le débogage et Ipython est quelque part entre les deux. Ma propre expérience est qu'un débogueur avancé est rarement nécessaire, normalement, je peux résoudre 70 des erreurs juste en regardant le message d'erreur, un autre 25 en ajoutant une déclaration d'impression. Il existe également un moyen de démarrer un débogueur à partir du bloc-notes. Il suffit de taper qtconsole dans le bloc-notes et une nouvelle console s'ouvrira connectée au même ipython dans les coulisses. La console a accès à toutes les variables et peut également exécuter le débogage. Qui débutera une session de débogage. Module étape: Une fois que vous êtes satisfait de la fonctionnalité développée dans une étape de prototypage, vous pouvez l'intégrer dans un module. À ce stade, il est bon d'ajouter une documentation au code que vous avez écrit. La documentation de code en Python est très facile avec docstrings. Les chaînes de documents sont des chaînes de texte incluses dans le code qui sont utilisées pour documenter la fonctionnalité. Pour un couple d'exemples jetez un oeil ici. Pour une productivité optimale au niveau du module, vous avez besoin d'un bon éditeur de code source. Il y a beaucoup de choix là-bas. Mes préférés (gratuits) sont (dans l'ordre croissant de la complexité et des fonctionnalités): Notepad bloc-notes, mais beaucoup mieux (syntaxe mise en évidence etc). Idéal pour les changements rapides de code, lorsque vous ne voulez pas démarrer un éditeur plus étendu. Spyder. Éditeur léger qui comble l'écart entre IPython et un IDE complet (Integrated Development Environment). Spécifiquement ciblée sur le travail scientifique interactif. Pyscripter - IDE facile à utiliser avec un débogueur bien intégré. Windows seulement. Pydev - IDE de qualité professionnelle. Il peut prendre un certain temps pour trouver un moyen de développer le code qui vous convient le mieux. Pour moi le flux de travail idéal est: Prototype avec bloc-notes - ajouter à un module avec PyDev ou PyScripter - module d'utilisation dans un nouveau carnet. Plus de matériel de lecture. Chapitre 3 du livre PDA. Ok, assez de théorie, permet de travailler avec des modules. Si vous n'avez pas déjà téléchargé les classeurs pour cette partie, veuillez les obtenir de la section des blocs-notes par exemple. Et jetez un oeil à l'ordinateur portable twp03Workingwithmodules. Exemples d'ordinateurs portables Maintenant, il est temps d'utiliser les concepts que vous avez appris dans cette partie. Nous allons directement travailler avec des matrices numpy et des fonctions de traçage. Concernant le traçage, vous n'avez besoin que de deux fonctions plot () et hist () avec deux commandes pour définir les titres et les étiquettes des axes. Il y a trois exemples de blocs-notes dans cette partie du cours: twp01IPythonNotebook - vous montre le chemin autour du portable IPython (voir en ligne) twp02Leveragedetfs - simule le etfs appuyé pour prouver qu'il n'y a pas de chose comme leendement etf decay (voir en ligne) twp03Workingwithmodules. ipynb Apprendre à travailler avec des modules (voir en ligne) Obtenir les cahiers Obtenez juste le fichier zip et l'extraire à votre dossier de cahiers, puis démarrez Jupyter portable pour les voir apparaître dans le tableau de bord.


No comments:

Post a Comment