Documentation

Applications

Dernière mise à jour le 12. 10. 2021 par Mark Fric

Travailler avec ResultsGroup

Groupe de résultats est l'objet que SQX utilise pour stocker :

  • code de stratégie/XML
  • résultats du backtest
  • les autres résultats des optimisations et des vérifications croisées
  • paramètres utilisés dans les derniers backtests
  • d'autres valeurs personnalisées utiles dans son magasin de valeurs clés

Chaque stratégie que vous voyez dans la banque de données est en fait une Groupe de résultats objet contenant la stratégie + les résultats qui sont ensuite affichés dans les colonnes de la banque de données ou dans la liste des transactions, le graphique des actions, etc.

 

Obtenir des résultats individuels à partir d'un groupe

Il peut y avoir plusieurs backtests ou optimisations pour une même stratégie - vous pouvez avoir un backtest principal + des backtests sur des marchés supplémentaires, ou des optimisations WF supplémentaires.

Les résultats de ces backtests distincts sont stockés en tant que Résultat dans le ResultsGroup, de sorte que l'objet ResultsGroup est en fait un groupe d'objets Result et quelques autres éléments.

 

Les résultats individuels du ResultsGroup sont accessibles en appelant sous-résultat(clé de résultat) où resultKey est le nom (clé) du sous-résultat que vous souhaitez obtenir.

Vous pouvez obtenir une liste de toutes les clés de résultat en appelant getResultKeys()qui renvoie un tableau de toutes les clés contenues dans le ResultGroup.

Vous pouvez également utiliser une méthode spéciale getMainResultKey() pour obtenir la clé du résultat principal du backtest.

Result mainResult = resultsGroup.subResult( resultsGroup.getMainResultKey() ) // renvoie le résultat du backtest principal.

 

Le nom de l'objet ResultsGroup est le nom de la stratégie que vous voyez dans la banque de données, donc appeler resultsGroup.getName() renverra "Stratégie 1.2.3" par exemple

 

Le portefeuille

Il existe également un résultat de portefeuille spécial qui est ajouté automatiquement si ResultsGroup contient plus d'un résultat. Vous pouvez obtenir le résultat du portefeuille en appelant simplement ResultsGroup.portefeuille()

Résultat portfolioResult = resultsGroup.portefeuille().

S'il n'y a qu'un seul résultat, cet appel renverra le résultat principal du backtest.

 

Obtenir des métriques à partir d'un résultat

Lorsque vous avez un résultat, vous pouvez facilement obtenir les mesures telles que le bénéfice net, le ratio de Sharpe, etc. qui ont été calculées pour ce résultat.

Toutes les mesures calculées sont stockées dans SQStats que vous pouvez obtenir en appelant Result.statistiques(Direction, PLType, SampelType). Notez que la méthode stats() a trois paramètres - les statistiques sont calculées séparément pour :

 

SQStats statsIS = result.stats(Directions.Both, PlTypes.Money, SampleTypes.InSample) ;

SQStats statsOOS = result.stats(Directions.Both, PlTypes.Money, SampleTypes.OutOfSample) ;

SQStats statsLong = result.stats(Directions.Long, PlTypes.Money, SampleTypes.FullSample) ;

 

Les SQStats est une simple carte clé-valeur qui contient les mesures calculées pour la combinaison de statistiques donnée. Les mesures sont stockées sous les clés correspondant aux noms de classe des extraits Java, par exemple "NetProfit", "Drawdown", etc.

Une fois que vous avez l'objet SQStats, vous pouvez obtenir la valeur de la métrique en appelant simplement :

double netProfit = stats.getDouble("NetProfit") ;

int noOfTradest = stats.getInt("NumberOfTrades") ;

 

Cet article a-t-il été utile ? L'article était utile L'article n'était pas utile

S'abonner
Notification pour
5 Commentaires
Le plus ancien
Le plus récent Le plus populaire
Commentaires en ligne
Afficher tous les commentaires
Oliver
17. 11. 2021 8:29 pm

Bonjour, avant d'étudier cela en détail..... est-ce que cela me permet de sélectionner des séries de marche avant spécifiques pour construire un portefeuille optimisé ? J'avais posté une demande ci-dessous pour que les transactions d'un run spécifique puissent être utilisées dans l'analyseur quantique. Est-ce que cela fait la même chose ?

https://roadmap.strategyquant.com/tasks/sq4_8403

Emmanuel
25. 11. 2021 8:43 pm

C'est très utile, je suis en train de le tester. Je le teste actuellement.

Emmanuel
26. 11. 2021 1:18 pm

Où puis-je trouver des exemples d'objets Result ? 
, subResult(resultKey) method ?, 
getResultKeys(), getMainResultKey()
SQStats statsIS = result.stats(Directions.Both, PLTypes.Money, SampleTypes.InSample) ;

J'ai cherché dans l'éditeur de code avec getResultKey, et d'autres mots clés mais je n'ai pas trouvé d'exemple.

tomas262
Administrateur
Répondre à  Emmanuel
1. 12. 2021 7:51 pm
Emmanuel
Répondre à  tomas262
4. 1. 2022 1:52 pm

merci