Documentazione

Ultimo aggiornamento il 14. 5. 2015 da Mark Fric

Introduzione a Scripter

Nota! La funzionalità dello Scripter è per ora sperimentale e la gerarchia delle classi e i loro nomi potrebbero cambiare!
Inoltre, la documentazione dell'interfaccia di Scripter e Programma è in corso e sarà ampliata nelle settimane successive.

Che cos'è Scripter

In generale, Scripter offre all'utente di Quant Analyzer un modo per utilizzare le funzioni del programma senza utilizzare l'interfaccia utente. È qualcosa di simile alla funzionalità Macro di Excel.

Scripter è per gli utenti avanzati, perché è necessario programmare un po'. Lo script è un semplice codice Java che richiama varie funzioni del programma.

Volete effettuare una simulazione Monte Carlo? Potete farlo con Scripter, definendo tutti i parametri e memorizzando il risultato nella banca dati o visualizzando i valori chiave nel campo di output.

Perché usare Scripter

Scriper consente l'automazione. Permette di automatizzare cose che normalmente si dovrebbero fare a mano nell'interfaccia utente.

Ad esempio, supponiamo che vogliate:

  • caricare un rapporto
  • utilizzare il What-If per creare varianti del sistema, con rapporti in cui vengono rimossi solo gli scambi del lunedì, o in cui vengono rimossi solo gli scambi del martedì, ecc.
  • Eseguire la simulazione Monte Carlo su ogni variazione e ottenere i risultati a determinati livelli di confidenza.
  • Scegliere la migliore simulazione MC ed eseguire su di essa una simulazione di gestione del denaro con diverse metodologie.

È possibile fare tutto questo a mano, facendo clic avanti e indietro con il programma, ma se si prevede di eseguire spesso questo processo, potrebbe essere utile scrivere uno script.

Esempio

Creeremo uno script di esempio che caricherà il report, visualizzerà il suo profitto netto, quindi eseguirà la simulazione Monte Carlo e visualizzerà il profitto netto MC con un livello di confidenza di 90%.

importare org.slf4j.Logger;
importare 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;
importare com.strategyquant.lib.snippets.MonteCarloSim.MonteCarloStatValues;
importare com.strategyquant.lib.utils.ExtendableStorage;
importare com.strategyquant.lib.utils.SQConst;
importare com.strategyquant.lib.results.SQResult;
importare com.strategyquant.lib.results.SQStats;
importare 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");

            // visualizzare il profitto netto originale
            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("Profitto netto originale="+stats.getDouble(StatsConst.NET_PROFIT));
            System.out.println("PctNetProfit originale="+statsPct.getDouble(StatsConst.NET_PROFIT));

            // Eseguire Monte Carlo e visualizzare il profitto netto al livello di confidenza 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());

            //Calcolo dei livelli di confidenza
            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("MC 90% NetProfit="+mcResult.netProfit);
            System.out.println("MC 90% PctNetProfit="+mcResult.pctNetProfit);
        } catch(Exception e) {
            e.printStackTrace();
            Log.error("Eccezione :", e);
        }
    }
}

 



Questo articolo è stato utile? L'articolo è stato utile L'articolo non è stato utile

Abbonarsi
Notificami
0 Commenti
Feedback in linea
Visualizza tutti i commenti