Monday, 30 January 2017

Forex Backtesting Python

Trading avec Python Ive récemment lu un grand post par le blog turinginance sur la façon d'être un quant. En bref, il décrit une approche scientifique pour développer des stratégies commerciales. Pour moi personnellement, observer des données, penser avec des modèles et former des hypothèses est une seconde nature, comme cela devrait l'être pour tout bon ingénieur. Dans ce post je vais illustrer cette approche en passant explicitement par un certain nombre d'étapes (juste un couple, pas tous) impliqués dans le développement d'une stratégie commerciale. Jetons un coup d'œil à l'instrument de négociation le plus courant, le SampP 500 ETF SPY. Je commencerai par des observations. Observations Il m'est apparu que la plupart du temps, il y a beaucoup de discussions dans les médias sur le marché qui s'écroule (après de grosses pertes sur plusieurs jours), un rebond assez significatif se produit parfois. Dans le passé Ive a fait quelques erreurs en fermant mes positions pour couper des pertes courtes, juste manquer une récupération dans les jours suivants. Théorie générale Après une période de pertes consécutives, de nombreux commerçants vont liquider leurs positions par peur de perte encore plus importante. Une grande partie de ce comportement est régi par la peur, plutôt que par un risque calculé. Des commerçants plus intelligents entrent alors pour les bonnes affaires. Hypothèse: Les rendements du lendemain de SPY afficheront un biais ascendant après un certain nombre de pertes consécutives. Pour tester l'hypothèse, Ive a calculé le nombre de jours consécutifs descendants. Tout sous -0,1 retour quotidien se qualifie comme un jour en baisse. Les séries de retour sont presque aléatoires, comme on pourrait s'y attendre, les chances de 5 jours consécutifs descendants sont faibles, ce qui entraîne un nombre très limité d'occurrences. Le faible nombre d'occurrences se traduira par des estimations statistiques peu fiables, de sorte qu'il s'arrêtera à 5. Ci-dessous est une visualisation des rendements de nex-tday en fonction du nombre de jours en baisse. Ive a également tracé 90 intervalle de confiance des rendements entre les lignes. Il s'avère que le rendement moyen est positivement corrélé avec le nombre de jours en baisse. Hypothèse confirmée. Cependant, vous pouvez clairement voir que cet alpha supplémentaire est très faible par rapport à la bande des résultats de rendement probable. Mais même un bord minuscule peut être exploité (trouver un avantage statistique et répéter aussi souvent que possible). La prochaine étape consiste à déterminer si cette arête peut être transformée en une stratégie commerciale. Compte tenu des données ci-dessus, une stratégie de négociation peut être forumlated: Après consectutive 3 ou plus de pertes, aller longtemps. Quitter la prochaine fermeture. Ci-dessous est un résultat de cette stratégie par rapport à pure buy-and-hold. Cela n'a pas l'air mauvais du tout Si l'on regarde les ratios de sharpe, la stratégie marque une descente de 2,2 contre 0,44 pour la BampH. C'est en fait assez bon (ne soyez pas trop excité cependant, car je n'ai pas pris en compte les frais de commission, le glissement etc). Bien que la stratégie ci-dessus n'est pas quelque chose que je voudrais le commerce simplement en raison de la longue période de temps, la théorie elle-même provoque pensées futher qui pourrait produire quelque chose d'utile. Si le même principe s'applique aux données intraday, une forme de stratégie de scalping pourrait être construite. Dans l'exemple ci-dessus, j'ai trop simplifié le monde en ne comptant que le nombre de jours en baisse, sans prêter attention à la profondeur du retrait. En outre, la sortie de position est juste un prochain-jour-fin de base. Il ya beaucoup à améliorer, mais l'essence à mon avis est la suivante: les retours futurs de SPY sont influencés par le tirage et la durée de tirage au cours des 3 à 5 jours précédents. Un trader expérimenté sait quel comportement attendre du marché basé sur un ensemble d'indicateurs et leur interprétation. Ce dernier est souvent fait en fonction de sa mémoire ou d'une sorte de modèle. Trouver un bon ensemble d'indicateurs et traiter leur information pose un grand défi. Premièrement, il faut comprendre quels facteurs sont corrélés aux prix futurs. Les données qui n'ont aucune qualité prédictive ne produisent que du bruit et de la complexité, ce qui diminue les performances de la stratégie. Trouver de bons indicateurs est une science à part entière, nécessitant souvent une compréhension profonde de la dynamique du marché. Cette partie de la conception de la stratégie ne peut pas être facilement automatisée. Heureusement, une fois un bon ensemble d'indicateurs a été trouvé, la mémoire des commerçants et l'intuition peut être facilement remplacé par un modèle statistique, qui sera susceptible de faire beaucoup mieux que les ordinateurs ont une mémoire sans faille et peut faire des estimations statistiques parfaites. En ce qui concerne le trading de volatilité, il m'a fallu beaucoup de temps pour comprendre ce qui influence ses mouvements. En particulier, Im intéressé par les variables qui prédisent les rendements futurs de VXX et XIV. Je n'entrerai pas dans une explication complète ici, mais je présenterai une conclusion. Mes deux indicateurs les plus précieux pour la volatilité sont la pente de structure à terme et la prime de volatilité actuelle. VIX-VXV VIX VXV sont les volatilités implicites à 1 et 3 mois implicites du SampP 500. réaliséVol voici une volatilité de 10 jours réalisés de SPY, Calculé avec la formule de Yang-Zhang. Delta a été souvent discuté sur VixAndMore blog, tandis que la prime est bien connue de négociation d'options. Il est logique d'aller volatilité courte lorsque la prime est élevée et les futures sont en contango (delta lt 0). Cela entraînera un vent arrière de la prime et le roulement quotidien le long de la structure à terme dans VXX. Mais ce n'est qu'une estimation approximative. Une bonne stratégie de négociation combinerait des informations à la fois de prime et de delta pour venir avec une prédiction sur le sens de négociation dans VXX. Ive été en difficulté pour un temps très long pour arriver à un bon moyen de combiner les données bruyantes des deux indicateurs. J'ai essayé la plupart des approches standard, comme la régression linéaire, l'écriture d'un tas de if-thens. Mais tous avec des améliorations très mineures par rapport à l'utilisation d'un seul indicateur. Un bon exemple de cette stratégie indicateur unique avec des règles simples peuvent être trouvés sur le blog TradingTheOdds. Ne semble pas mauvais, mais ce qui peut être fait avec des indicateurs multiples Ill commencer avec quelques données VXX hors-échantillon que j'ai obtenu de MarketSci. Notez qu'il s'agit de données simulées, avant la création de VXX. Les indicateurs pour la même période sont tracés ci-dessous: Si l'on prend l'un des indicateurs (prime dans ce cas) et le tracent en fonction des rendements futurs de VXX, on constate une certaine corrélation, mais les données sont extrêmement bruyantes: Cette prime négative est susceptible d'avoir des rendements positifs VXX le lendemain. La combinaison de la prime et delta dans un modèle a été un défi pour moi, mais j'ai toujours voulu faire une approximation statistique. Essentiellement, pour une combinaison de (delta, premium), Id veut trouver toutes les valeurs historiques qui sont les plus proches des valeurs courantes et faire une estimation des rendements futurs basés sur eux. Quelques fois, j'ai commencé à écrire mes propres algorithmes d'interpolation de voisin-voisin, mais chaque fois que j'ai dû abandonner. Jusqu'à ce que je suis tombé sur le scikit la plus proche régression des voisins. Il m'a permis de construire rapidement un prédicteur basé sur deux entrées et les résultats sont si bons, que Im un peu inquiet que Ive fait une erreur quelque part. Voici ce que j'ai fait: créer un dataset de delta, premium - gt VXX next day return (in-of-sample) créer un prédicteur de voisin proche basé sur le jeu de données ci-dessus stratégie commerciale (hors de l'échantillon) avec les règles: Aller longtemps si le retour prévu gt 0 aller court si le retour prévu lt0 La stratégie ne pouvait pas être plus simple. Les résultats semblent extrêmement bons et s'améliorent quand plus de voisins sont utilisés pour l'estimation. Tout d'abord, avec 10 points, la stratégie est excellente dans l'échantillon, mais est plat hors de l'échantillon (ligne rouge dans la figure ci-dessous est le dernier point dans l'échantillon) Ensuite, la performance s'améliore avec 40 et 80 points: Deux parcelles, la stratégie semble effectuer les mêmes in et hors-échantillon. Sharpe est d'environ 2,3. Im très heureux avec les résultats et ont le sentiment que Ive a été seulement gratter la surface de ce qui est possible avec cette technique. Ma recherche d'un outil de backtesting idéal (ma définition de l'idéal est décrite dans les posts précédents dilemmes Backtesting) n'a pas abouti à quelque chose que je pourrais utiliser tout de suite. Cependant, l'examen des options disponibles m'a aidé à mieux comprendre ce que je veux vraiment. Parmi les options Ive regardé, pybacktest a été celui que j'ai le plus aimé en raison de sa simplicité et la vitesse. Après avoir parcouru le code source, Ive a quelques idées pour le rendre plus simple et un peu plus élégant. De là, ce n'était qu'une petite étape pour écrire mon propre backtester, qui est maintenant disponible dans la bibliothèque TradingWithPython. J'ai choisi une approche où le backtester contient des fonctionnalités que toutes les stratégies de négociation partagent et qui obtient souvent copié-collé. Des choses comme calculer des positions et pnl, des mesures de performance et faire des parcelles. Des fonctionnalités spécifiques à la stratégie, comme la détermination des points d'entrée et de sortie, doivent être effectuées en dehors du backtest. Un workflow typique serait: find entry and exits - gt calculer pnl et faire des parcelles avec backtester - gt données de stratégie post-process A ce moment le module est très minime (jetez un oeil à la source ici), mais à l'avenir je prévois Sur l'ajout de profits et de stop-loss sorties et portefeuilles multi-actifs. L'utilisation du module de backtesting est montrée dans cet exemple d'ordinateur portable. J'organise mes ordinateurs portables IPython en les enregistrant dans différents répertoires. Cela apporte cependant un inconvénient, car pour accéder aux cahiers je dois ouvrir un terminal et taper ipython portable --pylabinline chaque fois. Im sûr que l'équipe ipython va résoudre ce problème à long terme, mais en attendant il ya une jolie façon de descente pour accéder rapidement aux ordinateurs portables à partir de l'explorateur de fichiers. Tout ce que vous devez faire est d'ajouter un menu contextuel qui démarre le serveur ipython dans votre répertoire souhaité: Une façon rapide d'ajouter l'élément de contexte est en exécutant ce correctif de Registre. (Remarque: le patch suppose que votre installation de python se trouve dans C: Anaconda. Si ce n'est pas le cas, vous devez ouvrir le fichier. reg dans un éditeur de texte et définir le bon chemin sur la dernière ligne). Les instructions sur l'ajout des clés de registre manuellement peuvent être trouvées sur le blog Frolians. Beaucoup de gens pensent que les ETFS à effet de levier à long terme sous-performent leurs repères. Ceci est vrai pour les marchés agités, mais pas dans le cas des conditions de tendance, soit vers le haut ou vers le bas. L'effet de levier n'a d'effet que sur le résultat le plus probable, et non sur le résultat escompté. Pour plus d'informations, veuillez lire ce post. 2013 a été une très bonne année pour les stocks, qui ont tendance à la hausse pendant la majeure partie de l'année. Permet de voir ce qui se passerait si nous avons court-circuité certains des ETFS à effet de levier exactement il ya un an et les couvert avec leur point de repère. Connaissant le comportement de l'ETF à effet de levier, je m'attends à ce que les ETFS à effet de levier surpassent leur indice de référence, de sorte que la stratégie qui tenterait de tirer profit de la désintégration perdrait de l'argent. Je considérerai ces couples: SPY 2 SSO -1 SPY -2 SDS -1 QQQ 2 QLD -1 QQQ -2 QID -1 IYF -2 SKF -1 Chaque etf à effet de levier est maintenu court (-1) et couvert avec un 1x Etf. Notez que pour couvrir un inverse etf une position négative est maintenue dans le 1x etf. Voici un exemple: SPY vs SSO. Une fois que nous avons normalisé les prix à 100 au début de la période de backtest (250 jours), il est évident que le 2x etf surpasse 1x etf. Maintenant, les résultats du backtest sur les paires ci-dessus: Tous les 2x etfs (y compris inverse) ont surpassé leur indice de référence au cours de 2013. Selon les attentes, la stratégie exploitant la désintégration bêta ne serait pas rentable. Je pense que le fait de jouer un effet de levier contre leur contrepartie sans levier ne fournit aucun avantage, à moins que vous connaissiez les conditions du marché à l'avance (tendance ou portée). Mais si vous ne connaissez le régime du marché à venir, il existe des moyens beaucoup plus faciles de profiter de celui-ci. Malheureusement, personne n'a encore réussi à prédire le régime du marché, même à très court terme. Le code source complet des calculs est disponible pour les abonnés du cours Trading With Python. Notebook 307 Voici ma photo sur Twitter. Je voudrais commencer par un avertissement: en ce moment une grande partie de mon portrolio se compose de courte position TWTR, donc mon opinion est plutôt biaisée. La raison pour laquelle j'ai fait ma propre analyse, c'est que mon pari ne fonctionnait pas bien, et Twitter a fait un mouvement parabolique en Décembre 2013. Donc, la question que j'essaie de répondre ici est je devrais prendre ma perte ou de conserver mes shorts. Au moment de la rédaction de ce document, TWTR se négociait autour de 64 mark, avec un plafond de marché de 34.7 B. Jusqu'à présent, la société n'a pas réalisé de profit, perdant 142M en 3013 après avoir réalisé 534M de chiffre d'affaires. Les deux derniers chiffres nous donnent des dépenses annuelles d'entreprise de 676M. Prix ​​dérivé de la valeur de l'utilisateur Twitter peut être comparé avec Facebook, Google et LinkedIn pour avoir une idée des numéros d'utilisateurs et leurs valeurs. Le tableau ci-dessous résume les numéros d'utilisateurs par entreprise et une valeur par utilisateur dérivée du plafonnement du marché. (Source pour le nombre d'utilisateurs: Wikipedia, le nombre de Google est basé sur le nombre de recherches uniques) Il devient évident que l'évaluation du marché par utilisateur est très similaire pour toutes les entreprises, cependant mon opinion personnelle est que: TWTR est actuellement plus précieux Par utilisateur thatn FB ou LNKD. Ce n'est pas logique puisque les deux concurrents disposent de données personnelles personnelles plus précieuses. GOOG a été excellant à l'extraction des revenus publicitaires de ses utilisateurs. Pour ce faire, il dispose d'un ensemble d'offres très diversifiées, du moteur de recherche à Google. Docs et Gmail. TWTR n'a rien de semblable à cela, alors que sa valeur par utilisateur est seulement 35 inférieure thatn celle de Google. TWTR dispose d'une marge de manœuvre limitée pour développer sa base d'utilisateurs car elle n'offre pas de produits comparables aux offres FB ou GOOG. TWTR a été autour depuis sept ans maintenant et la plupart des gens qui veulent un accout ont leur chance. Le reste ne se soucie pas. TWTR base d'utilisateurs est volatile et est susceptible de passer à la prochaine chose chaude quand il deviendra disponible. Je pense que la meilleure référence ici serait LNKD, qui a une niche stable sur le marché professionnel. Par cette métrique, TWTR serait surévalué. Le réglage de la valeur utilisateur à 100 pour TWTR donnerait un prix TWTR équitable de 46. Prix ​​dérivé des bénéfices futurs Il ya suffisamment de données disponibles sur les estimations des bénéfices futurs. L'un des plus utiles Ive trouvé est ici. En utilisant ces chiffres tout en soustrayant les dépenses de l'entreprise, que je suppose de rester constante. Produit ces chiffres: Conclusion Sur la base des informations disponibles, l'évaluation optimiste de TWTR devrait se situer dans la fourchette 46-48. Il n'y a aucune raison claire pour laquelle il devrait négocier plus haut et beaucoup de risques opérationnels pour le commerce plus bas. Ma conjecture est que pendant l'IPO suffisamment de professionnels ont examiné le prix, en le fixant à un niveau de prix équitable. Ce qui s'est passé ensuite était un mouvement irrationnel du marché qui n'était pas justifié par de nouvelles informations. Il suffit de jeter un oeil à la frénésie haussière sur stocktwits. Avec des gens prétendant que des choses comme cet oiseau volera à 100. Pure émotion, qui ne fonctionne jamais bien. La seule chose qui me repose maintenant est de mettre mon argent là où ma bouche est et de s'en tenir à mon short. Le temps nous le dira. Shorting la volatilité à court terme etn VXX peut sembler une excellente idée lorsque vous regardez le graphique à partir d'une assez grande distance. En raison du contango dans les contrats à terme de volatilité, le etn éprouve assez un vent de face la plupart du temps et perd un peu sa valeur chaque jour. Cela se produit en raison de rééquilibrage quotidien, pour plus d'informations s'il vous plaît regarder dans la perspective. Dans un monde idéal, si vous le maintenez assez longtemps, un profit généré par la décroissance du temps dans les futures et le rééquilibrage etn est garanti, mais à court terme, vous devrez passer par quelques tirages assez lourds. Il suffit de regarder en arrière à l'été 2011. J'ai été malheureux (ou insensé) assez pour tenir une courte position VXX juste avant le VIX est monté. J'ai presque soufflé mon compte à ce moment-là: 80 retrait en seulement quelques jours, résultant en une menace d'appel de marge par mon courtier. Appel de marge signifie encaisser la perte. Ce n'est pas une situation Id jamais comme à être de nouveau. Je savais qu'il ne serait pas facile de garder la tête froide en tout temps, mais éprouver le stress et la pression de la situation était quelque chose de différent. Heureusement, je savais comment VXX tend à se comporter, donc je n'ai pas paniqué, mais a changé de côté à XIV pour éviter un appel de marge. L'histoire se termine bien, 8 mois plus tard mon portefeuille était de retour à la force et j'ai appris une leçon très précieuse. Pour commencer avec un mot d'avertissement ici: ne commerce la volatilité à moins que vous sachiez exactement combien de risque vous prenez. Cela dit, nous allons jeter un oeil à une stratégie qui minimise certains des risques en court-circuitant VXX seulement quand il est approprié. Thèse de stratégie: VXX éprouve le plus de traînée lorsque la courbe des futures se trouve dans un contango escarpé. La courbe des futures est approchée par la relation VIX-VXV. Nous allons court VXX lorsque VXV a une prime exceptionnellement élevé sur VIX. Tout d'abord, jetez un oeil à la relation VIX-VXV: Le tableau ci-dessus montre les données VIX-VXV depuis Janvier 2010. Les points de données de l'année dernière sont indiqués en rouge. J'ai choisi d'utiliser un ajustement quadratique entre les deux, en approchant VXV f (VIX). Le f (VIX) est tracé sous la forme d'une ligne bleue. Les valeurs au-dessus de la ligne représentent la situation où les futures sont plus forts que le contango normal. Maintenant, je définis un indicateur delta, qui est l'écart par rapport à l'ajustement: delta VXV-f (VIX). Maintenant, nous allons jeter un oeil au prix de VXX avec delta: Ci-dessus: le prix de VXX sur l'échelle log. Ci-dessous: delta. Marqueurs verts indicat delta gt 0. marqueurs rouges deltalt0. Il est évident que les zones vertes correspondent à des rendements négatifs dans le VXX. On simule une stratégie avec ces hypothèses: Short VXX quand delta gt 0 Capital constant (pari sur chaque jour est 100) Pas de dérapage ou de coûts de transaction Cette stratégie est comparée à celle qui trades court tous les jours, mais ne prend pas delta en compte . La ligne verte représente notre stratégie courte de VXX, la ligne bleue est la stupide. Sharpe de 1,9 pour une simple stratégie de fin de journée n'est pas mal du tout à mon avis. Mais ce qui est encore plus important, c'est que les prélèvements à la goutte d'eau sont largement évités en prêtant attention à la courbe des contrats à terme forward. L'élaboration de cette stratégie étape par étape sera discutée lors de la prochaine négociation avec Python cours. Prix ​​d'un actif ou d'un FNB est bien sûr le meilleur indicateur, mais malheureusement, il ya seulement tellement d'informations contenues dans celui-ci. Certaines personnes semblent penser que les indicateurs plus (rsi, macd, crossover moyenne mobile, etc). Le mieux, mais si tous sont basés sur la même série de prix sous-jacent, ils contiendront tous un sous-ensemble de la même information limitée contenue dans le prix. Nous avons besoin de plus d'informations supplémentaires à ce qui est contenu le prix pour faire une estimation plus éclairée sur ce qui va se passer dans un proche avenir. Un excellent exemple de combinaison de toutes sortes d'informations à une analyse intelligente peut être trouvé sur le côté court de long blog. Produire ce genre d'analyse nécessite une grande quantité de travail, pour lequel je n'ai tout simplement pas le temps que je ne commerce à temps partiel. J'ai donc construit mon propre tableau de bord qui collecte automatiquement des informations pour moi et les présente sous une forme facilement digestible. Dans ce post je vais montrer comment construire un indicateur basé sur des données de volume court. Ce message illustrera le processus de collecte et de traitement des données. Étape 1: Recherche de la source de données. BATS exchange fournit des données quotidiennes sur les volumes gratuitement sur leur site. Étape 2: Obtenir des données manuellement amp inspection Les données de volume court de l'échange BATS sont contenues dans un fichier texte compressé. Chaque jour a son propre fichier zip. Après avoir téléchargé et décompressé le fichier txt, c'est ce qui est à l'intérieur (premières lignes): Au total, un fichier contient environ 6000 symboles. Ces données ont besoin de beaucoup de travail avant qu'il puisse être présenté de manière significative. Étape 3: Obtenir automatiquement des données Ce que je veux vraiment n'est pas seulement les données pour un jour, mais un ratio de volume court au volume total pour les dernières années, et je n'ai pas vraiment envie de télécharger 500 fichiers zip et copier-coller dans Excel manuellement. Heureusement, l'automatisation complète est seulement un couple de lignes de code loin: D'abord, nous devons créer dynamiquement une url à partir de laquelle un fichier sera téléchargé: Maintenant, nous pouvons télécharger plusieurs fichiers à la fois: Étape 4. Parse téléchargé les fichiers Nous pouvons utiliser zip et pandas Bibliothèques pour analyser un seul fichier: Il retourne un ratio de volume courtTotal Volume pour tous les symboles dans le fichier zip: Étape 5: Créer un graphique: Maintenant, la seule chose qui reste est d'analyser tous les fichiers téléchargés et de les combiner à une table et une intrigue Le résultat: Dans la figure ci-dessus, j'ai tracé le ratio de volume moyen des deux dernières années. J'aurais aussi pu utiliser un sous-ensemble de symboles si je voulais jeter un coup d'oeil à un secteur ou un stock spécifique. Regarder rapidement les données me donne l'impression que les ratios de volume court élevé correspondent généralement avec les fonds du marché et les ratios bas semblent être de bons points d'entrée pour une position longue. En partant d'ici, ce petit ratio de volume peut être utilisé comme une base pour le développement de stratégie. Trading avec Python cours Si vous êtes un commerçant ou un investisseur et que vous souhaitez acquérir un ensemble de compétences de négociation quantitative, vous pouvez envisager de prendre la négociation avec Python couse. Le cours en ligne 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. Vous apprendrez comment obtenir et traiter des quantités incroyables de données, concevoir et backtest des stratégies et analyser les performances commerciales. Cela vous aidera à prendre des décisions éclairées qui sont cruciales pour un succès des commerçants. Cliquez ici pour continuer au site Web du cours Trading With Python Je m'appelle Jev Kuznetsov, pendant la journée Je suis un chercheur-ingénieur dans une entreprise qui s'occupe de l'imprimerie. Le reste du temps, je suis un commerçant. J'ai étudié la physique appliquée avec la spécialisation dans la reconnaissance de modèle et l'intelligence artificielle. Mon travail quotidien implique quoi que ce soit, depuis le prototypage rapide d'algorithmes dans Matlab et d'autres langages jusqu'à la programmation d'ampli de conception matérielle. Depuis 2009, j'utilise mes compétences techniques sur les marchés financiers. Avant d'arriver à la conclusion que Python est le meilleur outil disponible, je travaillais beaucoup dans Matlab, qui est couvert sur mon autre blog. QSForex est un open-source backtesting événementielle et plate-forme de trading en direct pour l'utilisation dans le change ), Actuellement dans un état alpha. Il a été créé dans le cadre de la série Forex Trading Diary sur QuantStart pour fournir à la communauté de négociation systématique avec un moteur de trading robuste qui permet la mise en œuvre de stratégie de forex simple et de tests. Le logiciel est fourni sous licence permissive MIT (voir ci-dessous). Open-Source - QSForex a été publié sous une Licence MIT open source extrêmement permissive, qui permet une utilisation complète dans les applications de recherche et commerciales, sans restriction, mais sans aucune garantie d'aucune sorte. Gratuit - QSForex est totalement gratuit et ne coûte rien à télécharger ou à utiliser. Collaboration - Comme QSForex est open-source de nombreux développeurs collaborent pour améliorer le logiciel. De nouvelles fonctionnalités sont ajoutées fréquemment. Les bugs sont rapidement déterminés et corrigés. Développement de logiciels - QSForex est écrit dans le langage de programmation Python pour un support multiplate-forme simple. QSForex contient une suite de tests unitaires pour la majorité de son code de calcul et de nouveaux tests sont constamment ajoutés pour les nouvelles fonctionnalités. Architecture événementielle - QSForex est entièrement axé sur les événements pour le backtesting et le trading en direct, ce qui conduit à la transition directe des stratégies d'une phase de recherche vers une mise en œuvre en direct. Coûts de transaction - Les coûts de propagation sont inclus par défaut pour toutes les stratégies testées. Backtesting - QSForex propose un backtesting de paires de devises multidonnées multidimensionnelles intraday. Trading - QSForex prend actuellement en charge le trading intraday en direct à l'aide de l'OANDA Brokerage API sur un portefeuille de paires. Mesures de performance - QSForex prend actuellement en charge la mesure de performance et la visualisation de l'équité par le biais des bibliothèques de visualisation Matplotlib et Seaborn. Installation et utilisation 1) Visitez oanda et configurez un compte pour obtenir les informations d'authentification de l'API, que vous devrez effectuer en direct. J'explique comment réaliser cela dans cet article: QuantstartarticlesForex-Trading-Diary-1-Automated-Forex-Trading-avec-l'OANDA-API. 2) Clonez ce dépôt git dans un emplacement approprié sur votre machine en utilisant la commande suivante dans votre terminal: git clone githubmhallsmooreqsforex. git. Alternatif, vous pouvez télécharger le fichier zip de la branche maîtresse actuelle à githubmhallsmooreqsforexarchivemaster. zip. 3) Créez un ensemble de variables d'environnement pour tous les paramètres trouvés dans le fichier settings. py dans le répertoire racine de l'application. Alternativement, vous pouvez coder en dur vos paramètres spécifiques en écrasant les appels os. environ. get (.) Pour chaque paramètre: 4) Créer un environnement virtuel (virtualenv) pour le code QSForex et utiliser pip pour installer les exigences. Par exemple, dans un système basé sur Unix (Mac ou Linux), vous pouvez créer un tel répertoire comme suit en entrant les commandes suivantes dans le terminal: Cela va créer un nouvel environnement virtuel pour installer les paquets dans. En supposant que vous avez téléchargé le référentiel QSForex git dans un répertoire d'exemple tel que projectsqsforex (changez ce répertoire ci-dessous où que vous ayez installé QSForex), puis pour installer les paquetages vous devrez exécuter les commandes suivantes: Cela prendra un certain temps comme NumPy, SciPy, Pandas, Scikit-Learn et Matplotlib doivent être compilés. Il y a beaucoup de paquets requis pour que cela fonctionne, alors jetez un coup d'oeil à ces deux articles pour plus d'information: Vous devrez également créer un lien symbolique de votre répertoire de paquets de site à votre répertoire d'installation de QSForex afin d'appeler Importer qsforex dans le code. Pour ce faire, vous aurez besoin d'une commande similaire à celle-ci: Assurez-vous de modifier projectsqsforex dans votre répertoire d'installation et venvqsforexlibpython2.7site-packages dans votre répertoire de packages de site virtualenv. Vous pourrez maintenant exécuter les commandes suivantes correctement. 5) A ce stade, si vous souhaitez simplement pratiquer ou pratiquer en direct, vous pouvez exécuter python tradingtrading. py. Qui utilisera la stratégie de trading TestStrategy par défaut. Cela achète ou vend une paire de devises tous les 5 tours. Il est purement pour tester - ne pas l'utiliser dans un environnement commercial en direct Si vous souhaitez créer une stratégie plus utile, puis simplement créer une nouvelle classe avec un nom descriptif, par ex. MeanReversionMultiPairStrategy et assurez-vous qu'il a une méthode calculatesignals. Vous devrez passer cette classe la liste des paires ainsi que la file d'attente des événements, comme dans tradingtrading. py. Veuillez consulter strategystrategy. py pour plus de détails. 6) Afin de réaliser tout backtesting, il est nécessaire de générer des données de forex simulées ou de télécharger des données de ticks historiques. Si vous souhaitez simplement essayer le logiciel, le moyen le plus rapide de générer un exemple de backtest est de générer des données simulées. Le format de données actuel utilisé par QSForex est le même que celui fourni par le DukasCopy Historical Data Feed à dukascopyswissenglishmarketwatchhistorical. Pour générer des données historiques, assurez-vous que le paramètre CSVDATADIR de settings. py doit être défini sur un répertoire dans lequel vous souhaitez que les données historiques soient conservées. Vous devez alors exécuter generateates. py. Qui se trouve sous le répertoire scripts. Il attend un seul argument de ligne de commande, qui dans ce cas est la paire de devises au format BBBQQQ. Par exemple: A ce stade, le script est codé en dur pour créer des données de mois simples pour janvier 2014. Vous verrez des fichiers individuels, du format BBBQQQYYYYMMDD. csv (par exemple GBPUSD20140112.csv) apparaître dans votre CSVDATADIR pour tous les jours ouvrables de Ce mois-là. Si vous souhaitez modifier l'année de mois de la sortie des données, modifiez simplement le fichier et relancez-le. 7) Maintenant que les données historiques ont été générées il est possible de réaliser un backtest. Le fichier backtest lui-même est stocké dans backtestbacktest. py. Mais cela ne contient que la classe Backtest. Pour exécuter réellement un backtest, vous devez instancier cette classe et lui fournir les modules nécessaires. La meilleure façon de voir comment cela est fait est de regarder l'exemple d'implémentation Crossover moyenne mobile dans le fichier examplesmac. py et de l'utiliser comme un modèle. Cela fait appel à MovingAverageCrossStrategy qui se trouve dans strategystrategy. py. Cette valeur par défaut est de négocier à la fois GBPUSD et EURUSD pour démontrer l'utilisation de plusieurs paires de devises. Il utilise les données trouvées dans CSVDATADIR. Pour exécuter l'exemple de backtest, exécutez simplement ce qui suit: Cela prendra un certain temps. Sur mon système de bureau Ubuntu à la maison, avec les données historiques générées via generatesimulatedpair. py. Il faut environ 5-10 minutes pour fonctionner. Une grande partie de ce calcul se produit à la fin du backtest réel, lorsque le prélèvement est calculé, alors s'il vous plaît n'oubliez pas que le code n'a pas raccroché S'il vous plaît laissez-le jusqu'à la fin. 8) Si vous souhaitez visualiser les performances du backtest, vous pouvez simplement utiliser output. py pour afficher une courbe d'équité, des retours de période (c'est-à-dire des rendements tick-to-tick) et une courbe de drawdown: Et thats it À ce stade, vous êtes prêt Pour commencer à créer vos propres backtests en modifiant ou en ajoutant des stratégies dans strategystrategy. py et en utilisant des données réelles téléchargées de DukasCopy (dukascopyswissenglishmarketwatchhistorical). Si vous avez des questions sur l'installation, n'hésitez pas à m'envoyer un mail à mikequantstart. Si vous avez des bugs ou d'autres problèmes que vous pensez être due à la base de code spécifiquement, n'hésitez pas à ouvrir une question Github ici: githubmhallsmooreqsforexissues Copyright (c) 2015 Michael Halls-Moore La permission est accordée gratuitement à toute personne D'obtenir une copie de ce logiciel et des fichiers de documentation associés (le Logiciel) pour traiter le Logiciel sans restriction, y compris, sans limitation, les droits d'utilisation, de copie, de modification, de fusion, de publication, de distribution, de sous-licence et / Et de permettre aux personnes auxquelles le Logiciel est fourni de le faire, sous réserve des conditions suivantes: L'avis de copyright ci-dessus et le présent avis d'autorisation doivent être inclus dans toutes les copies ou parties substantielles du Logiciel. LE LOGICIEL EST FOURNI TEL QUEL, SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE, Y COMPRIS, MAIS SANS S'Y LIMITER, LES GARANTIES DE QUALITÉ MARCHANDE, D'ADÉQUATION À UN USAGE PARTICULIER ET DE NON-CONTREFAÇON. EN AUCUN CAS, LES AUTEURS OU LES TITULAIRES DE DROITS D'AUTEUR NE POURRONT ÊTRE TENUS RESPONSABLES DE TOUTE RÉCLAMATION, DOMMAGE OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS UNE ACTION CONTRACTUELLE, TORTALE OU AUTRE, DÉCOULANT DU LOGICIEL, DE SON UTILISATION OU D'AUTRES LOGICIEL. Exportation de devises Forex Trading de devises sur la marge comporte un niveau élevé de risque et peut ne pas convenir à tous les investisseurs. Les performances passées ne représentent pas les résultats futurs. Le haut degré de levier peut travailler contre vous ainsi que pour vous. Avant de décider d'investir en devises, vous devriez considérer attentivement vos objectifs de placement, votre niveau d'expérience et votre appétit pour le risque. La possibilité existe que vous pourriez soutenir une perte de tout ou partie de votre investissement initial et donc vous ne devriez pas investir de l'argent que vous ne pouvez pas se permettre de perdre. Vous devez être conscient de tous les risques associés aux opérations de change, et demander conseil à un conseiller financier indépendant si vous avez des doutes.


No comments:

Post a Comment