Mécanisme de correspondance des transactions au niveau du tick développé pour le backtesting de stratégies à haute fréquence

Auteur:La bonté, Créé: 2019-09-09 11:46:24, Mis à jour: 2023-11-07 20:51:21

img

Résumé

img

Qu'est-ce qui est le plus important lorsque vous testez la stratégie de trading? la vitesse? les indicateurs de performance?

La réponse est l'exactitude! Le but du backtest est de vérifier la logique et la faisabilité de la stratégie. C'est aussi le sens du backtest lui-même, les autres sont secondaires. Un résultat de backtest qui reflète vraiment les données historiques de la stratégie a une valeur de référence. Ces courbes de backtest apparemment parfaites peuvent raconter une belle histoire, mais ne peuvent pas être faites dans l'environnement réel du marché.

Quelles données sont nécessaires pour le backtesting

La première chose que nous devons comprendre est que les données sont dans le commerce, parce que la qualité des données a largement déterminé la qualité du backtest.

Pour ces types de données, la plupart des gens peuvent penser au prix d'ouverture, au prix le plus élevé, au prix le plus bas, au prix de clôture et au volume de négociation sur le graphique de la ligne K. Pour une meilleure distinction, nous nous référons à ces données collectivement sous le nom de données Bar, que vous pouvez comprendre comme la ligne K. Mais avez-vous déjà pensé à l'origine des données et à la source de ces données?

img

En fait, les données envoyées par l'échange ne contiennent pas ces données Bar, mais seulement les données Tick. Qu'est-ce que les données Tick? Vous pouvez visualiser les données dans l'échange comme une rivière. Cette rivière contient des données détaillées pour chaque ordre. Les données Tick sont une tranche dans le flux de données. La fréquence est de 2 tranches par seconde. c'est une reproduction d'une certaine situation du marché.

Ensuite, les données Bar sont basées sur les données Tick et sont divisées en fonction de la période de temps. Les données Bar de 1 minute sont composées de données Tick en 1 minute, les données Bar de 5 minutes sont composées de données Tick en 5 minutes, et ainsi de suite. Il a formé une variété de graphiques minute, graphiques horaires, graphiques quotidiens, etc. La ligne K d'une minute ne contient qu'une seule donnée Bar, mais peut contenir 120 données Tick. Par conséquent, les données historiques du backtest peuvent être divisées en: données Bar et données Tick, et la quantité de données dans les données Tick est beaucoup plus grande que la quantité de données Bar dans le même cycle.

Test antérieur basé sur les données de Bar

La plupart des logiciels de trading quantitatif sur le marché prennent en charge le backtesting des données Bar. Parce que la quantité de données est petite, la charge de travail du moteur de backtesting est grandement simplifiée. Par conséquent, ce backtesting est généralement très rapide et les données de dix ans peuvent être backtestées en quelques secondes. Même lorsque le backtest de dizaines de variétés de futures en même temps ne dépassera pas une minute. Mais le backtesting des données Bar a beaucoup de problèmes:

  • Des prix extrêmes

La plupart des traders savent qu'il est difficile d'acheter ou de vendre au prix limite quotidien, mais il peut être négocié dans l'environnement de backtest.

img

  • Le vide de prix

Lorsque le prix saute soudainement de la limite la plus basse à la limite la plus haute prix ou apparaissant un écart de prix, il est montré comme une grande ligne positive K sur le grand cycle K-line graphique, mais il n'y a pas de transactions à faire pendant tout le temps.

Par exemple: la ligne K actuelle a été flottant autour du prix 5000, et il monte soudainement à 5100 près de la fermeture du marché, et il n'y a presque pas d'ordres en attente et les transactions au milieu.

  • Le vol des prix et des données futures

Je crois que beaucoup de traders quantitatifs ont rencontré de tels pits, et la plupart de ces courbes de backtest d'angle de 45 degrés proviennent de cela. Afin de faciliter la compréhension de tout le monde, laissez-moi donner un autre exemple: Nous savons qu'une ligne K a 4 prix. Si c'est une ligne k positive de 1 minute, alors la formation de cette ligne K devrait être: prix d'ouverture >>> prix le plus bas >>>> prix le plus élevé >>> prix de clôture.

Cependant, la ligne k du grand cycle ne sera pas si simple. Elle peut atteindre un nouveau sommet, puis un nouveau bas, puis se fermer; elle peut aussi atteindre un nouveau bas, puis un nouveau haut, puis se fermer; ou même après une série de virages, elle atteint un nouveau bas, puis le nouveau haut, puis le nouveau bas, puis se fermer; mais elle apparaît juste comme une ligne K avec une ombre supérieure et inférieure, il y a beaucoup de possibilités au milieu de la façon dont elle s'est formée.

Si une ligne K apparaît comme ceci: prix d'ouverture 4950, prix le plus bas 4900, prix le plus élevé 5100, prix de clôture 5050, une ligne K positive normale.

OK, commençons le backtest:

Opening price 4950
The price exceeds the previous high 5000
Opening long position
Earned 1% when the market closed

Mais la réalité pourrait être la suivante:

Opening price 4950
The price exceeds the previous high 5000
Opening long position
Soon the price begins to fall
Continue to fall to 4949
Stop loss signal triggers stop loss 1%
Price rises to 5100
Market close at 5050

Comme vous pouvez le voir, l'exemple ci-dessus, la même stratégie, les mêmes données, il y avait deux résultats très différents. La raison est toujours à cause de la différence de données. Dans le backtest de niveau Bar, si vous utilisez le backtest quotidien de la ligne K, vous ne saurez pas comment ces lignes K sont formées. Si vous utilisez le backtest de la ligne K horaire, vous ne saurez pas si ces lignes horaires sont formées. En bref, le test de données de Bar est faible!

  • Retour en arrière basé sur les données Tick

Si vous pouvez utiliser les données de Tick pour le backtesting et l'analyse, il ne fait aucun doute qu'il a de grands avantages. Cependant, il semble qu'il n'y ait pas de plate-forme de trading quantitative pour le backtesting et l'analyse des données de Tick sur le marché. Par exemple, MT4 utilise des données de simulation d'interpolation. Cela ne simule que les changements dans les données, pas les données de Tick réelles.

Bien sûr, il y a des logiciels qui prétendent être en mesure de faire le backtesting de niveau Tick. mais ces logiciels ont fait une erreur fatale lors de la conception du moteur de backtesting, à savoir: mécanisme de correspondance de prix.

Sachez que dans un environnement de négociation réel, les ordres que nous avons passés sont correspondus dans le flux de données Tick de l'échange. Les règles d'appariement de l'échange sont: priorité de prix, priorité de temps. Si la profondeur des ordres n'est pas trop épaisse à ce moment-là, l'ordre d'achat de 5000 prix que nous avons envoyé sera probablement négocié passivement.

  • Le principe du moteur de backtesting basé sur les données du marché

Par conséquent, la plateforme FMZ Quant (fmz.com) Le moteur de backtesting Tick-level a été mis en place, ce moteur de backtesting ne correspond pas seulement aux commandes basées sur la priorité de prix des données Tick. Selon la même priorité de prix, le nombre d'ordres en attente est calculé pour déterminer si l'ordre en attente actuel a atteint la condition de transaction passive, afin d'obtenir un environnement de simulation réel.

  • Le premier Tick est: Vendre: 101 Volume: 80 Acheter: 100 Volume: 30

  • Le deuxième Tick est: Vendre: 101 Volume: 60 Acheter: 100 Volume: 50

  • Le troisième Tick est: Vendre: 101 Volume: 80 Acheter: 100 Volume: 30

  • Le 4e Tic est: Vendre: 101 Volume: 80 Acheter: 100 Volume: 10

Pour le premier Tick, le prix d'achat est de 100, la quantité d'ordres en attente est de 30 lots; à ce moment, le signal d'achat arrive, achetez 20 lots au prix de 100; le deuxième Tick est généré, le prix d'achat est de 100, et la quantité d'ordre en attente est de 50. il y a 20 lots d'ordres en attente; le troisième Tick est produit, le prix d'achat est de 100, et la quantité d'ordres en attente est de 30 lots. Cela prouve que 20 lots ont été exécutés ou annulés, et nous clôturons l'affaire; le quatrième Tick a été produit, le prix d'achat était de 100, et la quantité d'ordres en attente était de 10 lots.

Grâce à l'exemple ci-dessus, nous pouvons constater que dans les données Tick, sous prémisse que le prix n'a pas changé, il est possible de calculer s'il y a une transaction passive de l'ordre en attente par le changement du montant de l'ordre en attente. L'utilisation du même prix, première approche du temps. Ce type de moteur de backtesting bionique presque l'environnement commercial réel, éliminant le mécanisme de correspondance de prix de la transaction et la fausse transaction, de sorte que chaque donnée de marché est vraiment montrée, de sorte que le backtest est le même que le marché réel, seul un tel backtest a du sens.

Par où faire le backtest?

Sur la plateforme FMZ Quant, le backtesting au niveau des barres et des tics existe en même temps. Chaque trader quantitatif peut utiliser différents moteurs de backtesting en fonction de ses propres stratégies de trading, et peu importe le type de backtesting que vous utilisez. Le moteur n'a pas besoin de modifier le code de stratégie, et chaque type de backtesting peut être commuté de manière transparente.

Le backtesting de la stratégie à basse fréquence ne nécessite pas un moteur de correspondance complexe, car le nombre de transactions pour de telles stratégies est faible, le coût du glissement n'a pas un grand impact sur la stratégie elle-même.

Certaines stratégies de trading intraday ou impliquant l'ouverture de position pendant la journée, si nécessaire, peuvent également ajuster la granularité des données sur la page des paramètres de configuration de backtesting, comme le backtesting sur un cycle d'une heure, qui peut être ajusté à des données plus fines de 15 minutes.

Le commerce à haute fréquence est un système de trading basé sur le principe de l'équilibre des transactions, car le nombre de transactions est suffisamment élevé, une seule variété peut être négociée des dizaines voire des centaines de fois par jour, donc tant que le moteur de correspondance est raisonnable, alors sous l'effet de la loi des grands nombres, les résultats du backtesting sont fondamentalement fiables. Il n'y a généralement pas de problème de suradaptation.

Dans le backtest de trading à haute fréquence, plus la fréquence de transaction est élevée, plus la période de temps de détention est courte; plus le profit moyen d'une seule transaction est faible.

Backtest des données de niveau de cote selon les données réelles du marché

Nous vous montrons comment un backtest de niveau Tick fonctionne avec une stratégie de création de marché à haute fréquence écrite en C++ (qui prend également en charge Python et JavaScript). Vous pouvez compléter la stratégie et effectuer un backtest en ligne en cliquant sur le lien ci-dessous.

img

  • Le premier Tick est: Vendre: 2232 Volume: 409 Compteur: 2231 Volume: 73

  • Le deuxième Tick est: Vendre: 2232 Volume: 351 Compteur: 2231 Volume: 84

  • Le troisième Tick est: Vendre: 2232 Volume: 369 Compteur: 2231 Volume: 67

Cette stratégie de démonstration consiste à fermer la position en réalisant un bénéfice de cote. Après l'ouverture de la position, nous envoyons l'ordre de position de fermeture à 2232 pour fermer la position longue et 2231 pour fermer la position courte. Selon le backtest traditionnel de niveau Bar, le prix de cet ordre en attente ne peut pas être fermé. Cependant, le moteur de backtesting de niveau Tick de la plate-forme calcule constamment le changement de la quantité d'ordres sur le marché. Lorsque les données du troisième Tick sont générées, selon le mécanisme de marche des ordres de change de l'échange, si le prix est le même, selon la règle du temps-premier, notre opération de position longue de fermeture sera négociée.

Stratégie de copie

Cliquez sur ce lien (https://www.fmz.com/strategy/162372) pour copier la stratégie complète sans avoir à configurer les paramètres

Remarque: À l'heure actuelle, nous ne prenons en charge que la gamme complète de contrats à terme chinois sur les produits de base et les données de niveau Tick de l'échange de crypto-monnaie OKEX. Nous prendrons en charge davantage d'échanges à l'avenir.

Finition

Ce qui précède est l'analyse de la plate-forme FMZ Quant et le combat réel du backtesting à tous les niveaux. Non seulement cela, mais en plus de soutenir les traders professionnels et les utilisateurs institutionnels, il est également très convivial pour les novices qui n'ont pas encore commencé.

Nous ne faisons pas de fonctionnalités de jouet, basées sur un backtesting historique précis au niveau Tick, nous pouvons tester n'importe quelle combinaison de plusieurs variétés, plusieurs stratégies et plusieurs cycles pour vous aider à construire un portefeuille d'investissement optimal.


Relationnée

Plus de