Thursday, February 16, 2017

Backtesting Trading Strategies In Matlab

Bien que j'aime où cette question va, je suggère de la rendre un peu plus concrète. Quelles parties du processus de backtesting aimeriez-vous apprendre? Cela peut aller de n'importe quelle estimation d'un retour normal, où le portefeuille renvoie de votre stratégie sont déjà donnés à la mise en œuvre d'une règle de constitution de portefeuille complète algorithmically. Ndash Constantin Dec 30 14 at 21:06 Pour être honnête je don39t savoir beaucoup de backtesting. On m'a dit que je devrais de nouvelles stratégies de backtest ou d'améliorer une actuelle pendant mon stage. Je voudrais donc en savoir un peu plus sur le sujet avant de commencer. Quelles sont les différentes parties de celui-ci. Ndash Maxime Dec 30 14 at 21:31 L'idée générale Pour les titres de participation, un backtest simple se compose généralement de deux étapes: Calcul du rendement du portefeuille résultant de votre règle de constitution de portefeuille (ou stratégie de négociation) Modèle d'évaluation des actifs L'étape 2 est simplement une régression et très simple en mathématiques dans Matlab. Quoi de plus délicat est la mise en œuvre de l'étape 1, qui vous obligera à être très à l'aise dans Matlab, et il existe différentes façons de le faire. Si vous savez comment faire une régression OLS dans Matlab, ce que vous devez se concentrer sur toutes sortes de manipulations matricielles. Mise en œuvre dans Matlab Formation de portefeuille et calcul des rendements Pour vous donner un exemple de la façon dont une stratégie de négociation primitive pourrait être mise en œuvre dans Matlab, supposons des données de retour mensuelles et une période de détention uniforme d'un mois sur n actifs sur k périodes, où i in et k dans . En supposant aucun changement dans la composition de votre univers d'actions, votre matrice de retour X est de dimensions k fois n. X ampères x ampères ampères ampères ampères ampères vdots ampères ddots ampères vdots ampères ddots ampères vdots x ampères dots ampères x ampli dots ampères vdots ampères ddots ampères vdots ampères ddots amp vdots x ampères dots ampères x ampli dots ampères x fin Où retourne Sont calculés sous la forme x frac-1. En supposant que votre critère de sélection est une caractéristique de stock qui est disponible à la fréquence mensuelle, vous aurez également une matrice de caractéristiques C. Vous pouvez ensuite écrire un algorithme qui identifie les entrées en C qui répondent à votre critère de sélection (par exemple, ) Et remplacer les entrées correspondantes (où i et t sont identiques) d'une matrice indicatrice I (qui a été initialisée comme matrice zéro à l'aide de la fonction zéros) avec ones. Vous pouvez alors multiplier les entrées de I par celles de la matrice de retours X pour obtenir une matrice R qui indique les rendements résultant de vos avoirs. Vous pouvez ensuite calculer la moyenne des entrées non nulles pour chaque rangée de R pour obtenir votre vecteur des rendements du portefeuille. Ajustement des risques et identification des rendements anormaux À l'étape 2, vous comparez ce vecteur aux rendements normaux obtenus à partir de l'estimation de régression d'un modèle de tarification de l'actif tel que le modèle Fama-français. En soustrayant le vecteur retour normal de votre portefeuille retourne le vecteur, vous déterminez si votre stratégie de négociation a abouti à un rendement anormal positif, ce qui est ce que vous viser. Recommandations Si vous êtes nouveau dans Matlab, je vous suggère personnellement de vous familiariser suffisamment avec cette stratégie simpliste avant de relâcher certaines des hypothèses simplificatrices (telles que la périodicité et la périodicité) et de procéder à des implémentations plus sophistiquées. Encore une fois, ce que je voudrais souligner, c'est que cela nécessite que vous soyez très à l'aise avec Matlab et surtout les différentes façons de manipuler les matrices, ce qui peut prendre un certain temps. Si vous n'avez pas besoin d'utiliser Matlab pour votre stage et que vous souhaitez obtenir des résultats rapides, vous pouvez faire l'étape 1 dans Excel, ce qui est fastidieux, mais ne nécessite pas l'investissement initial (utile) que vous devez faire pour Matlab. Pour vous familiariser avec Matlab, je suis sûr que vous avez déjà découvert la documentation extrêmement bonne qui vient avec elle. C'est pour moi la ressource la plus précieuse et probablement plus utile que toute autre ressource financière spécifique (avec laquelle j'attendrais jusqu'à ce que vous soyez familier avec Matlab lui-même). Tout ce qui est nécessaire pour déterminer le retour normal est une régression OLS et une compréhension rudimentaire des modèles de tarification de l'actif. A répondu 30 décembre à 22: 20MatlabTrading Ce poste est sur l'importance est d'utiliser différents types de méthodes d'optimisation tels que les algorithmes génétiques et la parallélisation pour obtenir des résultats plus rapidement. Optimisation des Algorithmes Génétiques Malgré le fait que le principe de l'algorithme génétique (évolutionnaire) est très bien expliqué dans les webinaires de MathWorks, dans les exemples, il est utilisé uniquement pour l'optimisation du choix d'un groupe de stratégie à partir d'un ensemble. Il s'agit d'un bon exemple de l'utilisation de ces algorithmes, mais il arrive qu'il est nécessaire de définir de nombreuses variables avec des intervalles significatifs pour une stratégie, vous n'avez pas obtenir avec une itération et la parallélisation des processus 8211 calculs peuvent prendre plusieurs jours . Certes, il existe des stratégies dans la phase finale de l'optimisation. Lorsque nous savons presque sûrement que la stratégie de négociation est couronnée de succès, nous pouvons attendre plusieurs jours ou louer le cluster entier - le résultat pourrait en valoir la peine. Cependant, si nous devons estimer les résultats d'une stratégie volumineuse et décider s'il vaut la peine de passer le temps, alors les algorithmes génétiques peuvent être parfaitement adaptés. Nous proposons la possibilité d'utiliser trois méthodes pour optimiser la stratégie dans WFAToolbox: Méthode linéaire 8211 c'est un mode habituel de tri dans lequel vous verrez tous les résultats intermédiaires (sous-optimale). Il donne une précision maximale. Méthode parallèle 8211 tous les noyaux de votre CPU seront utilisés. Il ne permet pas de voir des résultats intermédiaires, mais accélère considérablement l'opération. Il donne une précision maximale lors de l'augmentation de la vitesse de calcul. La méthode génétique 8211 utilise l'algorithme d'optimisation évolutive. Il permet de voir des valeurs sous-optimales, mais donne le résultat proche de la meilleure. Ce n'est pas une méthode très précise, mais elle est suffisamment précise pour la phase initiale de la stratégie. Très vite. On nous demande souvent si WFAToolbox - Walk-Forward Analysis Toolbox pour MATLAB a la possibilité d'utiliser le GPU dans les calculs. Malheureusement, le GPU n'est pas adapté à toutes les tâches et son utilisation est très spécifique. Pour l'utiliser, vous devez ajuster la logique et le code de chaque stratégie pour les tests de noyaux graphiques. Malheureusement, en raison de cette non-universalité de la méthode on ne peut pas utiliser GPU dans WFAToolbox. Suite à la deuxième partie de la discussion sur les problèmes et solutions dans le test et l'analyse de la stratégie de trading algorithmique dans MATLAB, je vous invite à lire ce post sur le problème de l'indisponibilité de la visualisation des processus dans les solutions logicielles modernes pour tester les systèmes de trading. Visualisation du processus de test Dans mon expérience de travail, j'ai souvent analysé d'autres plates-formes populaires pour les tests de stratégie de négociation. Tels que TradeStation. MetaStock. Multicharts etc et j'ai toujours été surpris de la façon dont peu d'attention a été accordée à la visualisation du processus d'essai. La chose est que quand nous ne voyons pas les résultats des valeurs intermédiaires, sous-optimales des paramètres optimisés, nous jetons souvent de l'or avec la saleté. La question est en raison d'un échantillonnage trop large, la stratégie ajuste les paramètres de la façon dont nous soit voir une stratégie parfaite qui échoue dans la vie réelle ou de voir un ou deux traite, qui sont censés être le meilleur parce qu'il a été sélectionné telles données d'intervalle de temps où le La meilleure stratégie de négociation serait buy-and-hold, mais pourquoi sont alors d'autres stratégies nécessaires pour la visualisation du processus de test de stratégie de négociation dans MATLAB (proposé dans webinar) En conséquence, sans voir les résultats intermédiaires, nous avons 171blindly187 modifier les paramètres à essayer Pour obtenir les meilleures données ou le regarder en 3D ou 4D (la couleur est la 4ème dimension), comme proposé dans les webinaires. L'analyse des valeurs dans les espaces N-dimensionnels peut certainement être une alternative, mais a plusieurs limitations: Que faire si il ya plus de 4 dimensions Lorsque vous voyez quels signaux et à quelle fréquence ils apparaissent dans la fourchette de prix, vous avez presque tous les La représentation visuelle nécessaire de votre stratégie: la fréquence des transactions, leur rentabilité (courbe de revenu), la précision de l'ouverture, la similitude avec d'autres valeurs sous-optimales, etc. qui ne peuvent pas être dites sur la performance dans l'espace N-dimensionnel où toutes les informations utiles Est en fait que la valeur optimale n'est pas seulement une, mais il existe toute une gamme de valeurs sous-optimales dans une ou plusieurs zones. Tout en optimisant une stratégie dans WFAToolbox 8211 Walk-Forward Analysis Toolbox pour MATLAB174. Comme une nouvelle valeur optimale est trouvée, les signaux de la stratégie de négociation dans la période dans l'échantillon et hors de l'échantillon apparaissent immédiatement sur le graphique, de sorte que vous pouvez toujours contrôler quelle gamme d'options vous devez affecter, et aussi vous pouvez mettre en pause l'optimisation Sans attendre la fin du test, car il devient clair que quelque chose a mal tourné ou tout est fine. Hello, mon nom est Igor Volkov. Je développe des stratégies de négociation algorithmique depuis 2006 et j'ai travaillé dans plusieurs hedge funds. Dans cet article, je voudrais discuter des difficultés sur la façon de développeur de stratégies de négociation MATLAB au cours d'essais et d'analyse, ainsi que d'offrir des solutions possibles. J'ai utilisé MATLAB pour tester des stratégies algorithmiques depuis 2007 et je suis parvenu à la conclusion que ce n'est pas seulement l'outil de recherche le plus pratique, mais aussi le plus puissant car il permet l'utilisation de modèles statistiques et économétriques complexes, L'apprentissage automatique, les filtres numériques, la logique floue, etc. en ajoutant la boîte à outils. Le langage MATLAB est assez simple et bien documenté, donc même un non-programmeur (comme moi) peut le maîtriser. Comment tout a commencé. C'était 2008 (si je ne me trompe pas) que le premier webinaire sur le trading algorithmique de MATLAB avec Ali Kazaam a été publié, couvrant le thème de l'optimisation de stratégies simples basées sur des indicateurs techniques, etc. malgré un code plutôt local, les outils étaient intéressants Assez pour utiliser. Ils ont servi de point de départ à la recherche et à l'amélioration d'un modèle de test et d'analyse qui permettrait d'utiliser toute la puissance des boîtes à outils et la liberté des actions MATLAB lors de la création de stratégies commerciales propres, Des tests et les données obtenues et leur analyse ultérieure choisiraient un portefeuille efficace de systèmes de négociation robustes. Par la suite, les webinaires Mathworks ont été mis à jour chaque année et progressivement introduit des éléments de plus en plus intéressants. Ainsi, le premier webinaire sur le trading par paires (arbitrage statistique) à l'aide de la Boîte à Outils Econométriques a eu lieu en 2010, bien que la Boîte à outils d'analyse et d'analyse soit restée la même. En 2013, Trading Toolbox de Mathworks est apparu qui a permis de connecter MATLAB à différents courtiers pour l'exécution de leurs applications. Bien qu'il y ait eu des solutions automatiques pour l'exécution des transactions, à partir de ce moment MATLAB pourrait être considéré comme un système pour développer des stratégies de trading avec un cycle complet: du chargement de données à l'exécution de stratégies de trading automatisées. Pourquoi tous les Algotrader devaient-ils réinventer la roue? Cependant, Mathworks n'a pas offert une solution complète pour tester et analyser les stratégies. Les codes que vous pouviez tirer des webinaires étaient les seuls éléments d'un test complet du système et il était nécessaire de les modifier , Les personnaliser et les ajouter à l'interface graphique pour faciliter l'utilisation. Il fallait beaucoup de temps, ce qui posait une question: quelle que soit la stratégie, elle doit passer par le même processus de test et d'analyse, ce qui permettrait de le classer comme stable et utilisable. Pourquoi chaque algotrader devrait-il réinventer la roue et écrire Son propre code pour les stratégies de test appropriées dans MATLAB Ainsi, la décision a été prise de créer un produit qui permettrait d'effectuer l'ensemble du processus associé à l'essai et l'analyse des stratégies de trading algorithmique en utilisant une interface simple et conviviale. Tout d'abord, je voudrais répondre aux questions suivantes: Qu'est-il arrivé avec le blog 1. Jev Kuznetsov n'est pas le propriétaire plus Le blog a été acheté à notre ami, Jev Kuznetsov, qui a déménagé à son autre blog tradingwithpython. blogspot. Il a conclu que Python est meilleur que MATLAB pour la négociation, ce que je considère comme faux. MATLAB reste l'un des meilleurs logiciels au monde pour les fins de négociation algorithmique IMHO (j'ai quelques faits à ce sujet si pour la discussion future). 2. Nous avons changé la marque A partir de ce moment, le blog sera appelé MatlabTrading, qui est beaucoup plus compréhensible en ce qui concerne les sujets qu'il comprendra. En outre, le nom de domaine a été changé en matlabtrading au lieu de matlab-trading. blogspot initial. Bien que l'ancien domaine fonctionne toujours redirection à partir du nom de domaine principal. Qu'est-ce qui va arriver au blog 1. Plus de posts et d'articles Nous espérons donner vie à ce blog en affichant des contenus pertinents une ou deux fois par semaine. Dans les premiers mois, nous publierons principalement les articles et les vidéos que nous avons déjà pour faciliter aux lecteurs que nous cherchions des informations sur une ressource et que nous ayons des liens croisés. Ensuite, nous avons des plans pour écrire des messages sur les aspects pratiques de la négociation algorithmique dans MATLAB. Comment créer des stratégies commerciales modernes automatiques telles que: arbitrage statistique paires trading moyen reversion marché neutre stratégies commerciales basées sur cointegration bollinger bandes kalman filtre etc pour les matières premières, les stocks et Forex. Stratégies de suivi des tendances avec Jurik Moyenne mobile et autres filtres numériques sophistiqués Stratégies de prévision avec l'apprentissage automatique (Support Vector Machines) et d'autres méthodes Création de stratégies commerciales robustes à l'aide de la gestion visuelle de l'argent pour réinvestir votre capital (science sur comment obtenir 1M de 10K Dans une année avec des récompenses maximales, mais estimées de risque et de sueur). Peut-être après avoir lu ce que vous avez pensé que ce sera un autre article stupide pour ces pauvres gars cherchant comment devenir riche par le commerce sur le forex et tout cela. Eh bien, c'est totalement faux Nous travaillons dans MATLAB, et la majorité d'entre nous sont des scientifiques et des experts dans cet aspect donc tout est sérieux. 2. Plus d'interactivité Je serai heureux si nous pouvons tous relier par des commentaires dans les messages. Abonnez-vous à nos nouvelles pour vous alerter sur les nouveaux messages et événements. Plus tard, nous avons l'intention de créer des webinaires Google Hangouts. Ne le manquez pas, cliquez sur le bouton Suivre dans le coin supérieur droit pour rejoindre notre communauté. Que voulez-vous lire dans nos articles de blog Quels sujets pouvez-vous suggérer Veuillez écrire ici dans les commentaires. Dans mon précédent post, je suis arrivé à la conclusion que la négociation de paires étroites à proches n'est pas aussi rentable qu'auparavant qu'auparavant. Un lecteur a souligné qu'il pourrait être que la nature de la réversion moyenne des spreads a simplement évolué vers des délais plus courts . Je partage la même idée, alors j'ai décidé de tester cette hypothèse. Cette fois, une seule paire est testée: 100 SPY vs -80 IWM. Le backtest est effectué sur des données de bar de 30 secondes du 11.2011 au 12.2012. Les règles sont simples et semblables à la stratégie que j'ai testé dans le dernier message: si le retour de la paire de la paire dépasse 1 sur z-score, le commerce de la barre suivante. Le résultat semble très joli: je considérerais ceci comme une preuve suffisante qu'il ya encore beaucoup de réversion moyenne sur une échelle de 30 secondes. Si vous pensez que ce tableau est trop beau pour être vrai, c'est malheureusement le cas. Aucun coût de transaction ni écart bid-ask n'ont été pris en compte. En fait, je doute qu'il n'y aurait plus de profit après avoir soustrait tous les coûts de transaction. Pourtant, ce genre de graphiques est la carotte qui pendent devant mon nez, me gardant en cours. Mauvaise nouvelle tout le monde, selon mes calculs, (que j'espère sincèrement sont incorrects) le commerce des paires classique est mort. Certaines personnes seraient fortement en désaccord, mais voici ce que j'ai trouvé: Laisse prendre une stratégie hypothétique qui fonctionne sur un panier de etfs: SPY, XLY, XLE, XLF, XLI, XLB, XLK, IWM, QQQ, DIA Paires peuvent être faites. Chaque paire est construite comme une propagation neutre sur le marché. Règles de la stratégie: Chaque jour, pour chaque paire, calculez le z-score basé sur l'écart-type de 25 jours. Si z-score gt seuil, aller court, fermer le lendemain Si z-score lt-seuil aller long, fermer le lendemain Pour garder tout simple, le calcul se fait sans gestion du capital (on peut avoir jusqu'à 90 paires en portefeuille Sur chaque jour). Les coûts de transaction ne sont pas pris en compte non plus. Pour simplifier, cette stratégie permet de suivre la nature moyenne des spreads de marché neutres d'une journée. Voici les résultats simulés pour plusieurs seuils: Quel que soit le seuil utilisé, la stratégie est très rentable en 2008, assez bonne au cours de 2009 et totalement sans valeur à partir de début 2010. Ce n'est pas la première fois que je suis tombé sur ce changement dans la moyenne de renversement Comportement en etfs. Peu importe ce que j'ai essayé, je n'ai pas eu de chance de trouver une stratégie de négociation de paires qui fonctionnerait sur les ETFs passé 2010. Ma conclusion est que ces types de modèles simples stat-arb simplement ne pas le couper plus. Backtesting succès des stratégies de trading algorithmique - Partie I Cet article continue la série sur le commerce quantitatif, qui a commencé avec le Guide des débutants et l'identification de la stratégie. Ces deux articles plus longs et plus impliqués ont été très populaires, donc je vais continuer dans cette veine et fournir des détails sur le thème du backtesting de stratégie. Le backtesting algorithmique nécessite des connaissances dans de nombreux domaines, y compris la psychologie, les mathématiques, la statistique, le développement de logiciels et la microstructure de marketexchange. Je ne pouvais pas espérer couvrir tous ces sujets dans un article, donc je vais les diviser en deux ou trois morceaux plus petits. Ce que nous allons discuter dans cette section mal commencer par la définition de backtesting et puis je vais décrire les bases de la façon dont il est effectué. Ensuite, je vais élucider sur les préjugés dont nous avons parlé dans le Guide des débutants sur le commerce quantitatif. Ensuite, je vais vous présenter une comparaison des différentes options de logiciel de backtesting disponibles. Dans les articles suivants, nous examinerons les détails des implémentations de stratégies qui sont souvent à peine mentionnées ou ignorées. Nous examinerons également comment rendre le processus de backtesting plus réaliste en incluant les idiosyncrasies d'un échange commercial. Ensuite, nous discuterons des coûts de transaction et comment les modéliser correctement dans un paramètre de backtest. Nous allons terminer par une discussion sur la performance de nos backtests et enfin fournir un exemple d'une stratégie quanti commune, connu comme un commerce de paires de moyenne-reverting. Commençons par discuter ce que le backtesting est et pourquoi nous devrions le réaliser dans notre trading algorithmique. Qu'est-ce que Backtesting Algorithmique trading se distingue des autres types de classes d'investissement, car nous pouvons plus fiables fournir des attentes sur les performances futures des performances passées, en raison de la disponibilité abondante des données. Le processus par lequel ceci est réalisé est connu comme backtesting. En termes simples, backtesting est effectuée en exposant votre algorithme de stratégie particulière à un flux de données financières historiques, ce qui conduit à un ensemble de signaux commerciaux. Chaque opération (que nous entendons ici être un aller-retour de deux signaux) aura un profit ou une perte associée. L'accumulation de ce profitloss sur la durée de votre backtest stratégie entraînera le profit total et la perte (également connu sous le PL ou PnL). C'est l'essence de l'idée, bien que bien sûr le diable est toujours dans les détails Quelles sont les raisons clés pour backtesting une stratégie algorithmique Filtration - Si vous vous souvenez de l'article sur l'identification de la stratégie. Notre objectif au stade de la recherche initiale était de mettre en place un pipeline de stratégie et de filtrer toute stratégie qui ne répondait pas à certains critères. Backtesting nous fournit un autre mécanisme de filtration, car nous pouvons éliminer les stratégies qui ne répondent pas à nos besoins de performance. Modélisation - Le backtesting nous permet de tester (en toute sécurité) de nouveaux modèles de certains phénomènes du marché, tels que les coûts de transaction, le routage des ordres, la latence, la liquidité ou d'autres problèmes de microstructure du marché. Optimisation - Bien que l'optimisation de la stratégie soit lourde de biais, le backtesting nous permet d'augmenter la performance d'une stratégie en modifiant la quantité ou les valeurs des paramètres associés à cette stratégie et en recalculant sa performance. Vérification - Nos stratégies sont souvent obtenues à l'externe, via notre pipeline de stratégie. Backtesting d'une stratégie assure qu'il n'a pas été incorrectement mis en œuvre. Bien que nous ayons rarement accès aux signaux générés par des stratégies externes, nous aurons souvent accès aux paramètres de performance tels que les caractéristiques de Sharpe Ratio et Drawdown. Nous pouvons donc les comparer à notre propre mise en œuvre. Backtesting fournit une foule d'avantages pour le trading algorithmique. Cependant, il n'est pas toujours possible de revoir directement une stratégie. En général, à mesure que la fréquence de la stratégie augmente, il devient plus difficile de modéliser correctement les effets de la microstructure du marché et des échanges. Cela conduit à des backtests moins fiables et donc à une évaluation plus délicate d'une stratégie choisie. C'est un problème particulier où le système d'exécution est la clé de la performance de la stratégie, comme avec les algorithmes de fréquence ultra-haute. Malheureusement, le backtesting est lourd de biais de tous types. Nous avons abordé certaines de ces questions dans des articles précédents, mais nous allons maintenant en discuter en profondeur. Biais affectant les backtests de stratégie Il existe de nombreux biais qui peuvent affecter la performance d'une stratégie backtestée. Malheureusement, ces biais ont tendance à gonfler les performances plutôt que de la diminuer. Ainsi, vous devriez toujours considérer un backtest comme une limite supérieure idéalisée sur la performance réelle de la stratégie. Il est presque impossible d'éliminer les préjugés de la négociation algorithmique, il est donc notre devoir de les minimiser au mieux pour prendre des décisions éclairées sur nos stratégies algorithmiques. Je voudrais discuter de quatre biais majeurs: le biais d'optimisation. Prévision des préjugés. Préjugé de survie et biais de tolérance psychologique. Biais d'optimisation C'est probablement le plus insidieux de tous les biais de backtest. Il s'agit d'ajuster ou d'introduire des paramètres de trading supplémentaires jusqu'à ce que la performance de la stratégie sur l'ensemble de données de backtest soit très attrayante. Cependant, une fois en direct, la performance de la stratégie peut être nettement différente. Un autre nom pour ce biais est l'ajustement de la courbe ou le biais de snooping des données. Le biais d'optimisation est difficile à éliminer car les stratégies algorithmiques impliquent souvent de nombreux paramètres. Les paramètres dans ce cas peuvent être les critères entryexit, les périodes de rétrospection, les périodes de moyenne (c'est-à-dire le paramètre de lissage moyen mobile) ou la fréquence de mesure de la volatilité. Le biais d'optimisation peut être minimisé en maintenant le nombre de paramètres au minimum et en augmentant la quantité de points de données dans l'ensemble d'apprentissage. En fait, il faut également faire attention à ce dernier, car les anciens points de formation peuvent être soumis à un régime antérieur (comme un environnement réglementaire) et peuvent donc ne pas être pertinents pour votre stratégie actuelle. Une méthode pour aider à atténuer ce biais est d'effectuer une analyse de sensibilité. Cela signifie que l'on peut varier les paramètres de façon incrémentielle et tracer une surface de performance. Le raisonnement sonore et fondamental pour les choix de paramètres devrait, avec tous les autres facteurs considérés, conduire à une surface de paramètre plus lisse. Si vous avez une surface très performante, cela signifie souvent qu'un paramètre ne reflète pas un phénomène et est un artefact des données d'essai. Il existe une vaste littérature sur les algorithmes d'optimisation multidimensionnelle et il s'agit d'un domaine de recherche très actif. Je ne m'attarderai pas là-dessus, mais gardez-le à l'arrière de votre esprit lorsque vous trouvez une stratégie avec un backtest fantastique Look-Ahead Bias Look-ahead biais est introduit dans un système de backtesting lorsque les données futures accidentellement inclus à un point de la Où ces données n'auraient pas été disponibles. Si nous faisons chronologiquement le backtest et que nous atteignons le point de temps N, alors le biais d'anticipation se produit si les données sont incluses pour tout point Nk, où k0. Les erreurs de biais prospectives peuvent être incroyablement subtiles. Voici trois exemples de la façon dont le biais prospectif peut être introduit: Bugs techniques - vecteurs Arrays dans le code ont souvent des itérateurs ou des variables d'index. Des décalages incorrects de ces indices peuvent conduire à un biais prospectif en incorporant des données à Nk pour des valeurs non nulles k. Calcul des paramètres - Un autre exemple courant de biais prospectif se produit lors du calcul des paramètres de stratégie optimale, par exemple avec des régressions linéaires entre deux séries temporelles. Si l'ensemble des données (y compris les données futures) est utilisé pour calculer les coefficients de régression et donc rétroactivement appliqué à une stratégie de négociation à des fins d'optimisation, des données futures sont incorporées et un biais de prospective existe. MaximaMinima - Certaines stratégies de trading utilisent des valeurs extrêmes à n'importe quelle période, comme l'incorporation des prix élevés ou bas dans les données OHLC. Cependant, étant donné que ces valeurs minimales maximales ne peuvent être calculées qu'à la fin d'une période de temps, un biais de prospection est introduit si ces valeurs sont utilisées pendant la période courante. Il est toujours nécessaire de décaler les valeurs de highlow par au moins une période dans toute stratégie commerciale en faisant usage d'eux. Comme avec le biais d'optimisation, il faut être extrêmement prudent pour éviter son introduction. C'est souvent la raison principale pour laquelle les stratégies de trading sous-performent leurs backtests significativement dans le commerce en direct. Préjugé de survie Le biais de survie est un phénomène particulièrement dangereux et peut conduire à des performances significativement gonflées pour certains types de stratégies. Il se produit lorsque les stratégies sont testées sur des ensembles de données qui ne comprennent pas l'univers complet des actifs antérieurs qui peuvent avoir été choisis à un moment donné, mais ne considèrent que ceux qui ont survécu à l'heure actuelle. À titre d'exemple, envisager de tester une stratégie sur une sélection aléatoire des actions avant et après la chute du marché de 2001. Certains stocks technologiques ont fait faillite, tandis que d'autres ont réussi à rester à flot et même prospéré. Si nous avions restreint cette stratégie uniquement aux stocks qui ont traversé la période de tirage du marché, nous introduirions un biais de survie parce qu'ils ont déjà démontré leur succès pour nous. En fait, il ne s'agit là que d'un autre cas spécifique de biais prospectif, car les informations futures sont intégrées dans les analyses passées. Il existe deux façons principales d'atténuer le biais de survie dans vos backtests de stratégie: Survivance Bias Free Datasets - Dans le cas des données d'équité, il est possible d'acheter des ensembles de données qui incluent des entités délocalisées, mais ils ne sont pas bon marché et ont tendance à être utilisés par les entreprises institutionnelles . En particulier, les données de Yahoo Finance n'est pas libre de survie, et cela est couramment utilisé par de nombreux commerçants de détail. On peut également négocier sur des classes d'actifs qui ne sont pas sujettes à un biais de survie, comme certaines marchandises (et leurs dérivés futurs). Utiliser des données plus récentes - Dans le cas des actions, l'utilisation d'un ensemble de données plus récentes atténue la possibilité que la sélection de titres choisis soit pondérée pour les survivants, tout simplement parce qu'il y a moins de risque de clôture globale des stocks dans des périodes plus courtes. On peut aussi commencer à construire un jeu de données de survivance-bias gratuit en collectant des données à partir du point actuel. Après 3 à 4 ans, vous disposerez d'un ensemble solide de données sur les actions qui vous permettront de tester d'autres stratégies. Nous allons maintenant considérer certains phénomènes psychologiques qui peuvent influencer vos performances commerciales. Biais de tolérance psychologique Ce phénomène particulier n'est pas souvent discuté dans le contexte du commerce quantitatif. Toutefois, il est largement discuté en ce qui concerne les méthodes de négociation plus discrétionnaires. Il a des noms différents, mais Ive décidé de l'appeler biais de tolérance psychologique, car il capte l'essence du problème. Lors de la création de backtests sur une période de 5 ans ou plus, il est facile de regarder une courbe ascendante tendance des actions, de calculer le rendement annuel composé, le ratio Sharpe et même les caractéristiques de tirage et être satisfait des résultats. À titre d'exemple, la stratégie pourrait posséder un retrait relatif maximal de 25 et une durée maximale de retrait de 4 mois. Ce ne serait pas atypique pour une stratégie de momentum. Il est facile de se convaincre qu'il est facile de tolérer de telles périodes de pertes parce que l'image globale est rose. Toutefois, dans la pratique, il est beaucoup plus difficile Si des tirages historiques de 25 ou plus se produisent dans les backtests, alors vous verrez probablement des périodes de rabais similaires dans le commerce en direct. Ces périodes de retrait sont psychologiquement difficiles à endurer. J'ai observé de première main ce que peut être un retrait prolongé, dans un cadre institutionnel, et ce n'est pas agréable - même si les backtests suggèrent que de telles périodes se produiront. La raison pour laquelle je l'ai qualifié de biais est que souvent une stratégie qui aurait autrement réussi est arrêté de trading pendant les périodes de tirage prolongé et donc conduira à une sous-performance significative par rapport à un backtest. Ainsi, même si la stratégie est de nature algorithmique, les facteurs psychologiques peuvent encore avoir une forte influence sur la rentabilité. Le takeaway est de s'assurer que si vous voyez des tirages d'un certain pourcentage et la durée dans les backtests, alors vous devriez s'attendre à ce qu'ils se produisent dans les environnements commerciaux en direct, et devra persévérer afin d'atteindre la rentabilité une fois de plus. Paquets de logiciel pour le backtesting Le paysage de logiciel pour le backtesting de stratégie est vaste. Les solutions vont du logiciel sophistiqué de niveau institutionnel entièrement intégré à des langages de programmation tels que C, Python et R où presque tout doit être écrit à partir de zéro (ou plugins appropriés obtenus). En tant que négociants quantitatifs, nous sommes intéressés par le solde d'être en mesure de posséder notre pile de technologie de négociation par rapport à la vitesse et la fiabilité de notre méthodologie de développement. Voici les principales considérations pour le choix du logiciel: Compétence de programmation - Le choix de l'environnement sera dans une grande partie descendre à votre capacité à programmer des logiciels. Je dirais que le fait d'avoir le contrôle de la pile totale aura un effet plus important sur votre PL à long terme que l'externalisation autant que possible à un logiciel de fournisseur. Cela est dû au risque de bugs externes ou d'idiosyncrasies que vous ne parvenez pas à réparer dans le logiciel de fournisseur, qui autrement serait facilement remédié si vous aviez plus de contrôle sur votre pile de technologie. Vous voulez également un environnement qui établit le bon équilibre entre productivité, disponibilité de la bibliothèque et rapidité d'exécution. Je fais ma propre recommandation ci-dessous. Capacité d'exécutionBroker Interaction - Certains logiciels de backtesting, tels que Tradestation, sont directement liés à un courtage. Je ne suis pas un fan de cette approche comme la réduction des coûts de transaction sont souvent une grande composante d'obtenir un ratio Sharpe plus élevé. If youre tied into a particular broker (and Tradestation forces you to do this), then you will have a harder time transitioning to new software (or a new broker) if the need arises. Interactive Brokers provide an API which is robust, albeit with a slightly obtuse interface. Customisation - An environment like MATLAB or Python gives you a great deal of flexibility when creating algo strategies as they provide fantastic libraries for nearly any mathematical operation imaginable, but also allow extensive customisation where necessary. Strategy Complexity - Certain software just isnt cut out for heavy number crunching or mathematical complexity. Excel is one such piece of software. While it is good for simpler strategies, it cannot really cope with numerous assets or more complicated algorithms, at speed. Bias Minimisation - Does a particular piece of software or data lend itself more to trading biases You need to make sure that if you want to create all the functionality yourself, that you dont introduce bugs which can lead to biases. Speed of Development - One shouldnt have to spend months and months implementing a backtest engine. Prototyping should only take a few weeks. Make sure that your software is not hindering your progress to any great extent, just to grab a few extra percentage points of execution speed. C is the elephant in the room here Speed of Execution - If your strategy is completely dependent upon execution timeliness (as in HFTUHFT) then a language such as C or C will be necessary. However, you will be verging on Linux kernel optimisation and FPGA usage for these domains, which is outside the scope of this article Cost - Many of the software environments that you can program algorithmic trading strategies with are completely free and open source. In fact, many hedge funds make use of open source software for their entire algo trading stacks. In addition, Excel and MATLAB are both relatively cheap and there are even free alternatives to each. Now that we have listed the criteria with which we need to choose our software infrastructure, I want to run through some of the more popular packages and how they compare: Note: I am only going to include software that is available to most retail practitioners and software developers, as this is the readership of the site. While other software is available such as the more institutional grade tools, I feel these are too expensive to be effectively used in a retail setting and I personally have no experience with them. Backtesting Software Comparison Description: High-level language designed for speed of development. Wide array of libraries for nearly any programmatic task imaginable. Gaining wider acceptance in hedge fund and investment bank community. Not quite as fast as CC for execution speed. Execution: Python plugins exist for larger brokers, such as Interactive Brokers. Hence backtest and execution system can all be part of the same tech stack. Customisation: Python has a very healthy development community and is a mature language. NumPySciPy provide fast scientific computing and statistical analysis tools relevant for quant trading. Strategy Complexity: Many plugins exist for the main algorithms, but not quite as big a quant community as exists for MATLAB. Bias Minimisation: Same bias minimisation problems exist as for any high level language. Need to be extremely careful about testing. Development Speed: Pythons main advantage is development speed, with robust in built in testing capabilities. Execution Speed: Not quite as fast as C, but scientific computing components are optimised and Python can talk to native C code with certain plugins. Cost: FreeOpen Source Description: Mature, high-level language designed for speed of execution. Wide array of quantitative finance and numerical libraries. Harder to debug and often takes longer to implement than Python or MATLAB. Extremely prevalent in both the buy - and sell-side. Execution: Most brokerage APIs are written in C and Java. Thus many plugins exist. Customisation: CC allows direct access to underlying memory, hence ultra-high frequency strategies can be implemented. Strategy Complexity: C STL provides wide array of optimised algorithms. Nearly any specialised mathematical algorithm possesses a free, open-source CC implementation on the web. Bias Minimisation: Look-ahead bias can be tricky to eliminate, but no harder than other high-level language. Good debugging tools, but one must be careful when dealing with underlying memory. Development Speed: C is quite verbose compared to Python or MATLAB for the same algorithmm. More lines-of-code (LOC) often leads to greater likelihood of bugs. Execution Speed: CC has extremely fast execution speed and can be well optimised for specific computational architectures. This is the main reason to utilise it. Cost: Various compilers: LinuxGCC is free, MS Visual Studio has differing licenses. Different strategies will require different software packages. HFT and UHFT strategies will be written in CC (these days they are often carried out on GPUs and FPGAs ), whereas low-frequency directional equity strategies are easy to implement in TradeStation, due to the all in one nature of the softwarebrokerage. My personal preference is for Python as it provides the right degree of customisation, speed of development, testing capability and execution speed for my needs and strategies. If I need anything faster, I can drop in to C directly from my Python programs. One method favoured by many quant traders is to prototype their strategies in Python and then convert the slower execution sections to C in an iterative manner. Eventually the entire algo is written in C and can be left alone to trade In the next few articles on backtesting we will take a look at some particular issues surrounding the implementation of an algorithmic trading backtesting system, as well as how to incorporate the effects of trading exchanges. We will discuss strategy performance measurement and finally conclude with an example strategy. Cliquez ci-dessous pour en savoir plus. L'information contenue sur ce site web est l'opinion des auteurs individuels basée sur leur observation personnelle, leur recherche et leurs années d'expérience. L'éditeur et ses auteurs ne sont pas des conseillers en placement, des avocats, des CPA ou d'autres professionnels des services financiers enregistrés et ne rendent pas de conseils juridiques, fiscaux, comptables, de placement ou autres services professionnels. L'information offerte par ce site Web est seulement l'éducation générale. Parce que chaque situation factuelle des individus est différente, le lecteur devrait chercher son conseiller personnel. Ni l'auteur ni l'éditeur n'assument aucune responsabilité ou responsabilité pour des erreurs ou omissions et n'a aucune responsabilité ni responsabilité envers une personne ou une entité à l'égard des dommages causés ou prétendument causés directement ou indirectement par les informations contenues sur ce site. À utiliser à vos risques et périls. En outre, ce site Web peut recevoir une compensation financière des sociétés mentionnées par la publicité, les programmes d'affiliation ou autrement. Les tarifs et offres des annonceurs affichés sur ce site Web changent fréquemment, parfois sans préavis. Alors que nous nous efforçons de maintenir des informations exactes et en temps opportun, les détails de l'offre peuvent être périmés. Les visiteurs doivent donc vérifier les modalités de ces offres avant de participer à ces offres. L'auteur et son éditeur déclinent toute responsabilité quant à la mise à jour des informations et déclinent toute responsabilité concernant le contenu, les produits et les services de tiers, y compris lorsqu'ils sont accessibles par le biais d'hyperliens et / ou d'annonces sur ce site.


No comments:

Post a Comment