Im nouveau à Pandas. J'ai reçu un tas de données de sondage Je veux calculer un moyen de roulement pour obtenir une estimation pour chaque jour sur la base d'une fenêtre de trois jours. D'après ce que je comprends de cette question. Les fonctions de roulage calculent la fenêtre en fonction d'un nombre de valeurs spécifié, et non d'une plage de dates spécifique. Y at-il une fonction différente qui implémente cette fonctionnalité Ou suis-je coincé en écrivant mes propres données d'entrée d'échantillon: La sortie aurait seulement une ligne pour chaque date. EDIT x2: typo fixe Cet exemple semble appeler une moyenne pondérée comme suggéré dans le commentaire andyhaydens. Par exemple, il y a deux sondages sur 1025 et un sur 1026 et 1027. Si vous rééchantillonnez et prenez la moyenne, cela donne deux fois plus de pondération aux sondages sur 1026 et 1027 par rapport à ceux sur 1025. Pour donner Un poids égal à chaque sondage plutôt qu'un poids égal à chaque jour. Vous pouvez faire quelque chose comme ce qui suit. Cela vous donne les ingrédients bruts pour faire une moyenne basée sur les sondages au lieu d'une moyenne journalière. Comme précédemment, les sondages ont une moyenne sur 1025, mais le poids pour 1025 est également stocké et est le double du poids sur 1026 ou 1027 pour refléter que deux sondages ont été pris sur 1025. On notera que le moyen de roulement pour 1027 est maintenant de 0,51500 (poll - Pondéré) plutôt que 52,1667 (pondéré en jours). Notez également qu'il ya eu des changements aux APIs pour le rééchantillonnage et le roulage à partir de la version 0.18.0.Backtesting un Crossover Moyenne mobile en Python avec des pandas Dans l'article précédent sur la recherche Backtesting Environnements Dans Python Avec Pandas nous avons créé un objet orienté recherche - Et 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 individuels de moyenne mobile. Mastering pandas pour les finances Moyennes mobiles Que ce soit en utilisant une stratégie de momentum ou de réversion moyenne pour le commerce, Les analyses utiliseront, sous une forme ou une autre, les moyennes mobiles du cours de clôture des actions. Nous avons vu cela auparavant quand nous avons cherché à calculer un moyen de roulement. Nous allons maintenant examiner plusieurs formes différentes de moyens de roulement et de couvrir plusieurs concepts qui sont importants à utiliser afin de prendre des décisions commerciales basées sur la façon dont un ou plusieurs moyens se déplacer au fil du temps: Moyenne mobile simple Moyenne mobile exponentielle Moyenne mobile simple Une moyenne mobile est un Technique d'analyse technique qui lisse les données de prix en calculant un prix moyen constamment mis à jour. Cette moyenne est prise sur une période de temps spécifique, allant de minutes, jours, semaines et mois. La période. Le meilleur contenu pour votre carrière. Découvrez l'apprentissage illimité sur demande pour environ 1 jour.
No comments:
Post a Comment