Monday, February 27, 2017

Moyenne Mobile Exponentielle Pandas

Moyenne mobile exponentielle La moyenne mobile exponentielle La moyenne mobile exponentielle diffère d'une moyenne mobile simple, tant par la méthode de calcul que par la façon dont les prix sont pondérés. La moyenne mobile exponentielle (abrégée aux initiales EMA) est effectivement une moyenne mobile pondérée. Avec l'EMA, la pondération est telle que les prix des jours récents sont donnés plus de poids que les prix plus anciens. La théorie derrière cela est que les prix plus récents sont considérés comme plus importants que les prix plus anciens, en particulier comme une moyenne simple à long terme (par exemple 200 jours) place poids égal sur les données de prix qui est plus de 6 mois et pourrait être pensé D'aussi légèrement dépassé. Le calcul de l'EMA est un peu plus complexe que la moyenne mobile simple, mais présente l'avantage de ne pas tenir compte d'un grand nombre de données couvrant chaque prix de clôture pour les 200 derniers jours (ou le nombre de jours considéré) . Tout ce dont vous avez besoin sont l'EMA pour la journée précédente et le cours de clôture d'aujourd'hui pour calculer la nouvelle moyenne mobile exponentielle. Calcul de l'exposant Initialement, pour l'EMA, un exposant doit être calculé. Pour commencer, prenez le nombre de jours EMA que vous souhaitez calculer et ajoutez un au nombre de jours que vous envisagez (par exemple pour une moyenne mobile de 200 jours, ajoutez un pour obtenir 201 dans le calcul). Appelez bien ce Days1. Ensuite, pour obtenir l'exposant, il suffit de prendre le numéro 2 et de le diviser par Days1. Par exemple, l'exposant pour une moyenne mobile de 200 jours serait: 2 201. Ce qui équivaut à 0,01 Calcul complet si la moyenne mobile exponentielle Une fois que nous avons l'exposant, nous avons besoin de deux autres bits d'information pour nous permettre d'effectuer le calcul complet . Le premier est la moyenne mobile exponentielle du jeudi. Eh bien supposons que nous savons déjà ce que nous aurions calculé hier. Toutefois, si vous n'êtes pas au courant d'EMA hier, vous pouvez commencer par calculer la moyenne mobile simple pour hier, et en utilisant cette place à la place de l'EMA pour le premier calcul (c'est-à-dire le calcul d'aujourd'hui) de l'EMA. Puis demain vous pouvez utiliser l'EMA que vous avez calculé aujourd'hui, et ainsi de suite. La deuxième information dont nous avons besoin est le prix de clôture d'aujourd'hui. Supposons que nous voulons calculer aujourd'hui 200 jours Moyenne mobile exponentielle pour une action ou un stock qui a un EMA jours précédents de 120 pence (ou cents) et un cours de clôture jours de clôture de 136 pence. Le calcul complet est toujours le suivant: Moyenne mobile exponentielle d'aujourd'hui (prix de clôture courants x exposant) (jours précédents EMA x (1 exposant)) Ainsi, en utilisant nos exemples ci-dessus, l'EMA actuelle de 200 jours serait: (136 x 0,01 ) (120 x (1- 0.01)) Ce qui équivaut à une EMA pour aujourd'hui de 120.16.Répartition d'une moyenne mobile Crossover en Python avec des pandas Dans l'article précédent sur Research Backtesting Environments En Python Avec Pandas nous avons créé un backtesting basé sur la recherche orienté objet Environnement et l'a testé sur une stratégie de prévision aléatoire. Dans cet article, nous allons utiliser les mécanismes que nous avons mis en place pour mener des recherches sur une stratégie réelle, à savoir le Crossover moyen mobile sur AAPL. Stratégie de croisement moyenne mobile La technique de crossover de moyenne mobile est une stratégie de momentum simpliste extrêmement connue. Il est souvent considéré comme l'exemple Hello World pour le commerce quantitatif. La stratégie décrite ici est longue seulement. Deux filtres de moyenne mobile simple distincts sont créés, avec des périodes d'analyse différentes, d'une série temporelle particulière. Les signaux d'achat de l'actif se produisent lorsque la moyenne mobile de retour en arrière est plus longue que la moyenne mobile à long terme. Si la moyenne plus longue dépasse par la suite la moyenne plus courte, l'actif est vendu de nouveau. La stratégie fonctionne bien quand une série chronologique entre dans une période de tendance forte, puis inverse lentement la tendance. Pour cet exemple, j'ai choisi Apple, Inc. (AAPL) comme la série chronologique, avec un court retour de 100 jours et un lookback long de 400 jours. C'est l'exemple fourni par la bibliothèque de trading algorithmique zipline. Ainsi, si nous voulons mettre en œuvre notre propre backtester, nous devons nous assurer qu'il correspond aux résultats en zipline, comme un moyen de base de validation. Implémentation Assurez-vous de suivre le tutoriel précédent ici. Qui décrit comment la hiérarchie d'objet initiale pour le backtester est construite, sinon le code ci-dessous ne fonctionnera pas. Pour cette implémentation particulière, j'ai utilisé les bibliothèques suivantes: La mise en œuvre de macross. py nécessite le backtest. py du tutoriel précédent. La première étape consiste à importer les modules et les objets nécessaires: Comme dans le didacticiel précédent, nous allons sous-classer la classe de base abstraite de stratégie pour produire MovingAverageCrossStrategy. Qui contient tous les détails sur la façon de générer les signaux lorsque les moyennes mobiles de AAPL se croisent. L'objet nécessite une fenêtre courte et une fenêtre longue sur laquelle fonctionner. Les valeurs ont été définies à des valeurs par défaut de 100 jours et 400 jours respectivement, qui sont les mêmes paramètres utilisés dans l'exemple principal de la tyrolienne. Les moyennes mobiles sont créées en utilisant la fonction rollingmaing pandas sur les barsFermer le cours de clôture du stock AAPL. Une fois que les moyennes mobiles individuelles ont été construites, la série de signaux est générée en plaçant la colonne égale à 1,0 lorsque la moyenne mobile courte est supérieure à la moyenne mobile longue ou 0,0 autrement. De là, les ordres de position peuvent être générés pour représenter des signaux de négociation. Le MarketOnClosePortfolio est sous-classé de Portfolio. Qui se trouve dans backtest. py. Il est presque identique à la mise en œuvre décrite dans le didacticiel précédent, à l'exception que les métiers sont maintenant effectués sur une base Close-to-Close, plutôt que Open-to-Open. Pour plus de détails sur la définition de l'objet Portfolio, reportez-vous au didacticiel précédent. Ive a laissé le code dedans pour l'intégralité et pour garder ce tutoriel autonome: Maintenant que les classes MovingAverageCrossStrategy et MarketOnClosePortfolio ont été définies, une fonction principale sera appelée pour attacher toutes les fonctionnalités ensemble. En outre, la performance de la stratégie sera examinée au moyen d'un graphique de la courbe de capitaux propres. L'objet DataReader de pandas télécharge les prix OHLCV des stocks d'AAPL pour la période du 1er janvier 1990 au 1er janvier 2002, date à laquelle les signaux DataFrame sont créés pour générer les signaux long seulement. Par la suite, le portefeuille est généré avec une base de capital initiale de 100 000 USD et les rendements sont calculés sur la courbe de capitaux propres. La dernière étape est d'utiliser matplotlib pour tracer un graphique à deux chiffres des deux prix AAPL, recouvert avec les moyennes mobiles et les signaux buysell, ainsi que la courbe d'équité avec les mêmes signaux buysell. Le code de traçage est pris (et modifié) à partir de l'exemple d'implantation de typo. La sortie graphique du code est la suivante. J'ai fait usage de la commande IPython coller pour mettre cela directement dans la console IPython alors que dans Ubuntu, de sorte que la sortie graphique reste en vue. Les upticks roses représentent l'achat du stock, alors que les downticks noirs représentent la vente de retour: Comme on peut le voir la stratégie perd de l'argent au cours de la période, avec cinq métiers de tour-aller. Cela n'est pas surprenant compte tenu du comportement de l'AAPL au cours de la période, qui a connu une légère tendance à la baisse, suivie d'une recrudescence significative à partir de 1998. La période de retour des signaux de la moyenne mobile est assez importante et a eu un impact sur le profit du commerce final , Qui autrement aurait pu rendre la stratégie rentable. Dans les articles suivants, nous allons créer un moyen plus sophistiqué d'analyser la performance, ainsi que la description de la façon d'optimiser les périodes de retour des signaux de moyenne mobile individuelle. Merci pour la publication de l'EMA. Et oui, TAlib devrait vraiment être disponible. Il ya quelques travaux sur ce qui semble réellement très prometteur (githubquantopianziplinepull100). J'essaierai de le faire bientôt pour le rendre accessible à un public plus large. Le contenu de ce site Web est fourni à titre informatif seulement et ne constitue pas une offre de vente, une sollicitation d'achat ou une recommandation ou une recommandation pour un titre ou une stratégie, et ne constitue pas une offre de services de consultance en investissement par Quantopian. En outre, le matériel ne donne pas d'opinion quant à la pertinence d'un titre ou d'un investissement spécifique. Quantopian ne donne aucune garantie quant à l'exactitude ou l'exhaustivité des opinions exprimées dans le site Web. Les opinions sont sujettes à changement et peuvent être devenues peu fiables pour diverses raisons, y compris des changements dans les conditions du marché ou dans les circonstances économiques. Tous les placements comportent des risques, y compris la perte de capital. Vous devriez consulter un professionnel de l'investissement avant de prendre toute décision d'investissement. Cela fait. Mais la plupart des travaux de trouver le meilleur chemin est déjà fait. Il suffit de le finaliser. Après cela, c'est juste un tas de copyamppaste pour envelopper toute la bibliothèque TAlib. Il ya beaucoup de bonnes choses dans les travaux pour remédier à certains raccourcis. C'est une question de ressources pour la plupart. Le contenu de ce site Web est fourni à titre informatif seulement et ne constitue pas une offre de vente, une sollicitation d'achat ou une recommandation ou une recommandation pour un titre ou une stratégie, et ne constitue pas une offre de services de consultance en investissement par Quantopian. En outre, le matériel ne donne pas d'opinion quant à la pertinence d'un titre ou d'un investissement spécifique. Quantopian ne donne aucune garantie quant à l'exactitude ou l'exhaustivité des opinions exprimées dans le site Web. Les opinions sont sujettes à changement et peuvent être devenues peu fiables pour diverses raisons, y compris des changements dans les conditions du marché ou dans les circonstances économiques. Tous les placements comportent des risques, y compris la perte de capital. Vous devriez consulter un professionnel de l'investissement avant de prendre toute décision d'investissement.


No comments:

Post a Comment