Documentación

Última actualización el 14. 5. 2015 por Mark Fric

Introducción a Scripter

Nota La funcionalidad de Scripter es experimental por ahora, y la jerarquía de clases y sus nombres podrían cambiar.
También está en curso la documentación sobre la interfaz de Scripter y Program, que se ampliará en las próximas semanas.

Qué es Scripter

En general, Scripter ofrece al usuario de Quant Analyzer una forma de utilizar las funciones del programa sin utilizar la interfaz de usuario. Es algo parecido a la funcionalidad Macro en Excel.

Scripter es para usuarios avanzados, porque tendrás que hacer algo de programación allí. El script es un simple código Java que llama a varias funciones del programa.

¿Quiere hacer una simulación Monte Carlo? Puede hacerlo con Scripter, definiendo todos los parámetros y almacenando el resultado en la base de datos o mostrando los valores clave en el campo de salida.

Por qué utilizar Scripter

Scriper permite la automatización. Le permite automatizar cosas que normalmente tendría que hacer a mano en la interfaz de usuario

Por ejemplo, digamos que usted quiere:

  • cargar algún informe
  • utilizar What-If para crear variantes del sistema - con informes, donde sólo se eliminan las operaciones del lunes, o donde sólo se eliminan las operaciones del martes, etc.
  • ejecutar la simulación monte carlo en cada variación y obtener sus resultados con niveles de confianza dados
  • elija la mejor simulación MC y ejecute en ella una simulación de gestión monetaria con varios métodos

Puedes hacer todo esto a mano, pulsando hacia adelante y hacia atrás con el programa, pero si planeas hacer este proceso a menudo entonces podría tener sentido escribir un script para ello.

Ejemplo

Haremos un script de ejemplo que cargará el informe, mostrará su Beneficio Neto, luego ejecutará la simulación Monte Carlo y mostrará el Beneficio Neto MC en el nivel de confianza 90%.

import org.slf4j.Logger;
importar 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");

            // mostrar el beneficio neto original
            SQResult resultado = 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("Beneficio neto original="+stats.getDouble(StatsConst.NET_PROFIT));
            System.out.println("Beneficio neto porcentual original="+statsPct.getDouble(StatsConst.NET_PROFIT));

            // ejecutar Monte Carlo y mostrar el Beneficio Neto a un nivel de confianza de 90%
            ExtendableStorage settings = (ExtendableStorage) Program.get("MonteCarlo").call("getSettings", null);
            settings.set("NúmeroDeSimulaciones", 10);
            settings.set("Resultado", strategyResults);
            settings.set("Methods.SkipTradesRandomly.Use", true);

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

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

            //calcular los niveles de confianza
            settings = (ExtendableStorage) Program.get("MonteCarloConfidenceLevels").call("getSettings", null);
            settings.set("SimulationResults", simulationResults);
            settings.set("Resultado", 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("Excepción :", e);
        }
    }
}

 



¿Le ha resultado útil este artículo? El artículo era útil El artículo no era útil

Suscríbase a
Notificar a
0 Comentarios
Feedbacks de Inline
Ver todos los comentarios