Documentation

Dernière mise à jour le 14. 5. 2015 par Mark Fric

Introduction à Scripter

Remarque ! Les fonctionnalités de Scripter sont pour l'instant expérimentales, et la hiérarchie des classes ainsi que leurs noms sont susceptibles d'être modifiés !
Par ailleurs, la documentation sur l'interface du Scripteur et du Programme est en cours de réalisation et sera étendue dans les semaines à venir.

Qu'est-ce que Scripter ?

En général, Scripter offre à l'utilisateur de Quant Analyzer un moyen d'utiliser les fonctionnalités du programme sans passer par l'interface utilisateur. C'est un peu comme la fonctionnalité Macro dans Excel.

Scripter est destiné aux utilisateurs avancés, car vous devrez y faire un peu de programmation. Le script est un simple code Java qui appelle diverses fonctions du programme.

Vous souhaitez effectuer une simulation Monte Carlo ? Vous pouvez le faire à l'aide de Scripter, en définissant tous les paramètres et en stockant le résultat dans une banque de données ou en affichant les valeurs clés dans le champ de sortie.

Pourquoi utiliser Scripter ?

Scriper permet l'automatisation. Il vous permet d'automatiser des choses que vous devriez normalement faire à la main dans l'interface utilisateur

Par exemple, disons que vous voulez.. :

  • charger un rapport
  • utiliser l'analyse d'hypothèses pour créer des variantes du système - avec des rapports, où seules les transactions du lundi sont supprimées, ou où seules les transactions du mardi sont supprimées, etc.
  • exécuter une simulation Monte Carlo sur chaque variation et obtenir ses résultats à des niveaux de confiance donnés
  • choisir la meilleure simulation MC et y exécuter une simulation de gestion financière avec différentes méthodes

Vous pouvez faire tout cela à la main, en cliquant dans tous les sens avec le programme, mais si vous prévoyez d'effectuer ce processus souvent, il peut être judicieux d'écrire un script.

Exemple

Nous allons créer un exemple de script qui chargera le rapport, affichera son bénéfice net, puis exécutera une simulation de Monte Carlo et affichera le bénéfice net MC avec un niveau de confiance de 90%.

import org.slf4j.Logger ;
import org.slf4j.LoggerFactory ;

import com.strategyquant.lib.results.SQResultsGroup ;
import com.strategyquant.lib.scripter.Program ;
import com.strategyquant.lib.snippets.MonteCarloSim.ConfidenceLevelResults ;
import com.strategyquant.lib.snippets.MonteCarloSim.MonteCarloSimulationResults ;
import com.strategyquant.lib.snippets.MonteCarloSim.MonteCarloStatValues ;
import com.strategyquant.lib.utils.ExtendableStorage ;
import com.strategyquant.lib.utils.SQConst ;
import com.strategyquant.lib.results.SQResult ;
import com.strategyquant.lib.results.SQStats ;
import com.strategyquant.lib.results.StatsConst ;

public class MonteCarloSample2 implements Runnable {
public static final Logger Log = LoggerFactory.getLogger("MonteCarloSample") ;

    @Override
    public void run() {
        try {
            SQResultsGroup strategyResults = (SQResultsGroup) Program.get("Loader").call("loadFile", "./tests/data/loaders/SQ_Portfolio1.stp") ;

            // afficher le bénéfice net d'origine
            SQResult result = strategyResults.getResult(SQConst.SYMBOL_PORTFOLIO) ;
            SQStats stats = result.getStats(SQConst.DIRECTION_ALL, SQConst.PL_IN_MONEY, SQConst.KEY_SAMPLE_ALL) ;
            SQStats statsPct = result.getStats(SQConst.DIRECTION_ALL, SQConst.PL_IN_PCT, SQConst.KEY_SAMPLE_ALL) ;

            System.out.println("Bénéfice net original="+stats.getDouble(StatsConst.NET_PROFIT)) ;
            System.out.println("Bénéfice net original="+statsPct.getDouble(StatsConst.NET_PROFIT)) ; System.out.println("Bénéfice net original="+stats.getDouble(StatsConst.NET_PROFIT)) ;

            // exécuter Monte Carlo et afficher le bénéfice net à un niveau de confiance de 90%
            ExtendableStorage settings = (ExtendableStorage) Program.get("MonteCarlo").call("getSettings", null) ;
            settings.set("NumberOfSimulations", 10) ;
            settings.set("Result", strategyResults) ;
            settings.set("Methods.SkipTradesRandomly.Use", true) ;

            MonteCarloSimulationResults simulationResults = (MonteCarloSimulationResults) Program.get("MonteCarlo").call("run", settings) ;

            System.out.println("# simulations="+simulationResults.simulationsList.size()) ;

            //calculer les niveaux de confiance
            settings = (ExtendableStorage) Program.get("MonteCarloConfidenceLevels").call("getSettings", null) ;
            settings.set("SimulationResults", simulationResults) ;
            settings.set("Result", strategyResults) ;

            ConfidenceLevelResults confidenceLevelResults = (ConfidenceLevelResults) Program.get("MonteCarloConfidenceLevels").call("run", settings) ;
            MonteCarloStatValues mcResult = confidenceLevelResults.get(90) ;

            System.out.println("Bénéfice net du MC 90%="+mcResult.netProfit) ;
            System.out.println("MC 90% PctNetProfit="+mcResult.pctNetProfit) ;
        } catch(Exception e) {
            e.printStackTrace() ;
            Log.error("Exception :", e) ;
        }
    }
}

 



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

S'abonner
Notification pour
0 Commentaires
Commentaires en ligne
Afficher tous les commentaires