Monday, 20 February 2017

Déménagement Moyenne Backtest

Moyennes mobiles simples - Trading backtests Quels paramètres de moyenne mobile sont les meilleurs Ce site a un océan de moyenne mobile backtests que j'ai réalisé pour le DAX, SP500 et USDEU (Forex). Ces tests ont été réalisés en utilisant différentes stratégies de signalisation: simpleexponentielle et variantes de croisement et différents indices pour une période de 1000 jours de bourse. Contrairement à d'autres sites Web, j'ai testé toutes les valeurs moyennes des fenêtres quotidiennes de 1 à 1000 jours, pour les stratégies de cross-over également en combinaison. Ces données sont également unqiue car j'ai essayé d'effectuer des tests réalistes, simulant l'écart buysell et les taxes pour Comparaison avec une stratégie de référence (buy hold). Une valeur de fenêtre à réaction rapide semble bonne en théorie et avec un simple test. Mais la propagation, les taxes et les taxes détruiront toutes les performances dans l'application pratique. C'est pourquoi ces tests réalistes sont si précieux. J'espère que ce site peut vous aider dans vos métiers, profitez-en. Symbole de Backtest moyen - Entrez n'importe quel symbole suivi dans notre base de données, ou utilisez un ratio entre les symboles en entrant deux symboles comme sym1: sym2. Moyennes mobiles - Peut être Simple ou Exponentielle pour le nombre de jours spécifié. Avec une MA unique, la détention est déterminée par la valeur de Price par rapport à la moyenne mobile. Lorsque deux MA sont utilisées, la détention est déterminée par la relation entre les deux moyennes mobiles. Participations - Le fonds à détenir peut être identique ou différent du fonds utilisé pour les calculs ci-dessus. Par exemple, vous pourriez modéliser l'achat d'un fonds à effet de levier basé sur la moyenne mobile du fonds sans effet de levier. Benchmark - SPY est la valeur par défaut, mais n'importe quel symbole peut être utilisé. Statistiques - Les statistiques incluent trois mesures de la volatilité que vous voulez être bas, l'écart type, l'indice d'ulcère, et le tirage maximal. En outre il ya trois retour: les mesures de risque où plus est meilleur. Ceux-ci incluent le rapport de Sharpe, la proportion de Sortino, et la proportion de Martin. Important: Les informations fournies par ETFScreen sont strictement à des fins d'information et ne doivent pas être interprétées comme des conseils ou une sollicitation pour acheter ou vendre un titre. Le propriétaire d'ETFScreen n'assume aucune responsabilité résultant de l'utilisation du matériel contenu dans le présent document à quelque fin que ce soit, y compris à des fins d'investissement. Politique de confidentialité DisclaimerTermes d'utilisation Si vous avez un commentaire s'il vous plaît contactez-nous. Backtesting un Moyenne mobile Crossover en Python avec pandas Dans l'article précédent sur la recherche Backtesting environnements Python Avec Pandas nous avons créé un environnement de backtesting basé sur la recherche orientée objet 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 de décrire comment optimiser les périodes de retour des signaux de moyenne mobile individuelle.


No comments:

Post a Comment