5.2 Comment effectuer un backtesting quantitatif du trading

Auteur:La bonté, Créé: 2019-05-08 13:08:52, mis à jour:

Résumé

L'importance et l'importance du backtesting sont indéniables. Lors du backtesting quantitatif, la stratégie doit être placée dans l'environnement historique le plus réel et le plus proche possible. Si certains détails de l'environnement historique sont ignorés, l'ensemble du backtesting quantitatif peut être invalide. Cet article expliquera comment faire le backtesting commercial quantitatif approprié.

Le backtesting est équivalent à la lecture de données. En reproduisant les données historiques de la ligne K et en exécutant des règles de trading du marché réel, telles que le ratio de Sharpe, le taux de retracement maximum, le taux de rendement annualisé et les courbes de capital.github.com, qui peut être personnalisé de manière flexible.

Le FMZ Quant, en tant que logiciel commercial de trading quantitatif, est livré avec le moteur de backtest haute performance, utilisant le cadre de backtest for-loop (polling), pour quantifier le calcul plus rapidement.

Introduction à l'interface de test arrière quantique FMZ

  • Étape 1

En prenant l'exemple de la stratégie de chronométrage FMZ Quant Thermostat, ouvrons le site officiel du FMZ Quant (www.fmz.comCliquez sur le tableau de bord, Stratégie, sélectionnez une stratégie, cliquez sur backtest, et accédez à la page suivante:

img img

Dans l'interface de configuration de backtest, vous pouvez le personnaliser en fonction de vos besoins réels. Par exemple: définir la période de backtest, le cycle de ligne K, le type de données (données de niveau de simulation ou de niveau de marché réel. En revanche, la vitesse de backtesting des données de niveau de simulation est plus rapide, le backtesting des données de niveau de marché réel est plus précis). En outre, vous pouvez également définir les frais de commission pour le backtest et les fonds initiaux du compte.

  • Étape 2

Cliquez sur la bibliothèque de trading mylanguage core (car cette stratégie est écrite par le langage M, si vous utilisez un autre langage de programmation, cette option peut ne pas apparaître) Tout d'abord, définissez l'étiquette de trading. Le langage FMZ Quant M a deux types de méthodes d'exécution de backtest, à savoir: le modèle de prix de clôture et le modèle de prix le plus récent. Le modèle de prix de clôture fait référence à l'exécution du modèle après que la ligne K actuelle soit terminée, et le trading est exécuté au début de la ligne K suivante; Le modèle de prix le plus récent fait référence à l'exécution d'un modèle pour chaque changement de prix, et lorsque le signal de trading est établi, il se négocie immédiatement. Comme indiqué ci-dessous:

img img

La taille par défaut du lot ouvert se réfère au montant de la position d'ouverture et de fermeture lors du backtesting. Le montant maximal de la transaction une fois est la position d'ouverture maximale envoyée au moteur de backtest par une seule transaction.

Il y aura toujours un écart entre le prix de négociation réel et le prix de négociation prévu. Ce décalage se déplace généralement dans une direction qui n'est pas favorable pour le trader, ce qui entraîne des pertes supplémentaires dans la négociation. Par conséquent, il est nécessaire d'ajouter un glissement pour simuler l'environnement de négociation réel.

  • Étape 3

Remplissez le contrat à terme avec le type de contrat que vous voulez backtest, pour cryptocurreny, nous avons juste besoin de spécifier la période de k-ligne que nous voulons backtest, dans ce cas, utilisez simplement k ligne hebdomadaire, donc, mettre this_week dans.

img

L'option de réglage du marché réel est principalement utilisée pour le trading sur le marché réel, dans l'environnement de backtesting, nous maintenons simplement que le réglage par défaut sera correct. Si l'avancement de récupération automatique est marqué comme vrai, alors lorsque le robot s'arrête sur le marché réel, le redémarrage du robot rétablira automatiquement la position du signal précédent sans recalculer le signal.

img

  • Étape 4

L'option de négociation au comptant est principalement pour le trading de crypto-monnaie, lors du backtesting, gardez-la dans les paramètres par défaut, cela ira bien. Si vous le souhaitez, vous pouvez spécifier tous les paramètres dans ces paramètres.

img

Retour sur la stratégie

Avant le backtesting, déterminez votre stratégie de trading. Ici, nous prenons la stratégie de chronométrage Thermostat à titre d'exemple. Cette stratégie adoptera une stratégie de tendance sur le marché de tendance en fonction de l'état du marché et adoptera une stratégie d'oscillation sur le marché volatil. Le code source est le suivant (peut également être téléchargé à partir de la page Stratégie Square du site Web FMZ Quant):

// Calculate CMI indicator to distinguish between Oscillating and trend market
CMI:=ABS(C-REF(C,29))/(HHV(H,30)-LLV(L,30))*100;

// Define key prices
KOD:=(H+L+C)/3;

// In the Oscillating market, the closing price is greater than the key price is suitable for selling market, otherwise it is for buying market
BE:=IFELSE(C>KOD,1,0);
SE:=IFELSE(C<=KOD,1,0);

// Define 10-day ATR indicator
TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR10:=MA(TR,10);

// Define the highest and lowest price 3-day moving average
AVG3HI:=MA(H,3);
AVG3LO:=MA(L,3);

// Calculate the entry price of the Oscillating market
LEP:=IFELSE(C>KOD,O+ATR10*0.5,O+ATR10*0.75);
SEP:=IFELSE(C>KOD,O-ATR10*0.75,O-ATR10*0.5);
LEP1:=MAX(LEP,AVG3LO);
SEP1:=MIN(SEP,AVG3HI);

// Calculate the entry price of the trend market
UPBAND:=MA(C,50)+STD(C,50)*2;
DNBAND:=MA(C,50)-STD(C,50)*2;

// Calculate the quit price of the trend market
MA50:=MA(C,50);

// Oscillating strategy logic
CMI<20&&C>=LEP1,BK;
CMI<20&&C<=SEP1,SK;
CMI<20&&C>=AVG3HI,SP;
CMI<20&&C<=AVG3LO,BP;

// Trend strategy logic
CMI>=20&&C>=UPBAND,BK;
CMI>=20&&C<=DNBAND,SK;
CMI>=20&&C<=MA50,SP;
CMI>=20&&C>=MA50,BP;
AUTOFILTER;

Dans l'interface de backtesting de simulation, après avoir configuré les paramètres de backtesting, cliquez sur le bouton Démarrer le backtest, et les résultats du backtest seront affichés immédiatement après quelques secondes. Dans le journal du backtest, il montrera combien de secondes ont été utilisées pour le backtest, les journaux et le nombre total de transactions. Les informations du compte impriment les résultats finaux du backtest de stratégie: profit et perte moyens, profit et perte de position, marge, frais de commission et rendements estimés.

img

La barre d'état enregistre la variété de négociation, les positions, les prix des positions, le dernier prix, les types de signaux de négociation précédents, le prix le plus élevé et le plus bas des positions, le nombre de mises à jour ainsi que les informations sur le capital et le temps.

Parmi eux, l'indicateur de performance le plus important est: le ratio de Sharpe. C'est lors de la mise en œuvre de l'indice global considérer les avantages et les risques, et il est un indice important pour mesurer un produit de fonds. En général, il est combien de risque que vous supportez, à chaque fois que vous gagnez un profit, donc la valeur du ratio de Sharpe est plus élevée, mieux c'est.

La volatilité annualisée, en termes simples, annualisant un chiffre suppose que les observations sur un court laps de temps se poursuivront au cours d'une année. C'est une mesure du risque du fonds, mais ce n'est certainement pas le risque total. Par exemple, la stratégie A a une volatilité plus grande, mais elle a été volatile vers le haut, le profit est bon; la stratégie B a une faible volatilité, mais elle a été en constante évolution ((à peine ne bouge pas du tout). Pouvons-nous dire que la stratégie B est meilleure que la stratégie A?

img

Enfin, dans les informations du journal, un enregistrement détaillé de chaque situation de négociation par courtage lors du backtesting, y compris l'heure spécifique de la négociation, les informations d'échange, le type de position ouverte et de position fermée, le mécanisme de correspondance des ordres du moteur de backtest, ainsi que le nombre de transactions et les informations imprimées.

img

Après le backtesting

Après tout, une stratégie à long terme, stable et rentable n'est pas si facile à obtenir, ce qui nécessite votre capacité à comprendre le marché.

Si vos résultats de backtest de stratégie vous font perdre de l'argent, ne vous découragez pas. C'est en fait tout à fait normal. Vérifiez si la logique de la stratégie est mal interprétée par le code, si elle utilise des paramètres extrêmes, si elle utilise trop de conditions de position d'ouverture, etc. Il est également nécessaire de réexaminer les stratégies de trading et les idées de trading sous un autre angle.

Si vos résultats de backtest de stratégie sont très bons, la courbe de financement est parfaite, avec un ratio de Sharpe supérieur à 1. S'il vous plaît ne pas être pressé, Dans ce cas, la plupart des situations utilisent les fonctions futures, le vol des prix, sur-ajustement, ou aucun prix de glissement ajouté, etc. Vous pouvez utiliser les données hors échantillon et la simulation de négociation sur le marché réel pour exclure ces problèmes.

Pour résumer

Ce qui précède est l'ensemble du processus de backtesting de la stratégie de trading, on peut dire qu'il a été spécifique à chaque détail. Il convient de noter que le backtesting des données historiques est un environnement idéal où tous les risques sont connus. Par conséquent, il est préférable de passer par un cycle de marché haussier et baissier pour le temps de backtesting de la stratégie. Le nombre effectif de transactions ne doit pas être inférieur à 100 fois, afin d'éviter certains biais de survivants.

Le marché est toujours en cours de changement et d'évolution. La stratégie de backtesting historique ne signifie pas que l'avenir sera le même. Il ne s'agit pas seulement de laisser la stratégie faire face aux risques possibles connus dans l'environnement de backtesting, mais aussi de faire face aux risques inconnus à l'avenir. Par conséquent, il est très nécessaire d'accroître la résistance au risque et l'universalité de la stratégie.

Exercices après l'école

  1. Essayez de copier la stratégie dans cette section et de la tester.

  2. Essayez d'améliorer et d'optimiser la stratégie dans cette section en fonction de votre expérience de trading.


Plus de