Documentación

Aplicaciones

Última actualización el 12. 10. 2021 por Mark Fric

Trabajar con ResultsGroup

Grupo de resultados es el objeto que SQX utiliza para almacenar:

  • código de estrategia/XML
  • resultados de la prueba retrospectiva
  • otros resultados de optimizaciones y comprobaciones cruzadas
  • ajustes utilizados en las últimas pruebas retrospectivas
  • otros valores personalizados útiles en su almacén de valores clave

Cada estrategia que ve en el banco de datos es en realidad una Grupo de resultados objeto que contiene la estrategia + los resultados que luego se muestran en las columnas de la base de datos o en la lista de operaciones, el gráfico de renta variable, etc.

 

Obtener resultados individuales del grupo

Puede haber múltiples backtests u optimizaciones realizadas para una estrategia - puede tener backtest principal + backtests en mercados adicionales, u optimizaciones WF adicionales.

Los resultados de estas pruebas retrospectivas se almacenan por separado como Resultado en el ResultsGroup, por lo que el objeto ResultsGroup es de hecho un grupo de objetos Result más algunas otras cosas.

 

Se puede acceder a los resultados individuales del ResultsGroup llamando a subResultado(resultKey) donde resultKey es el nombre (clave) del subresultado que desea obtener.

Puede obtener una lista de todas las claves de resultados llamando a getResultKeys()que devolverá un array con todas las claves que contiene el ResultGroup.

También puedes utilizar un método especial getMainResultKey() para obtener la clave del resultado principal del backtest.

Resultado mainResult = resultsGroup.subResult( resultsGroup.getMainResultKey() ) // devolverá el resultado principal del backtest.

 

El nombre del objeto ResultsGroup es el nombre de la estrategia que se ve en el banco de datos, por lo que llamar a resultsGroup.getName() devolverá, por ejemplo, "Estrategia 1.2.3

 

Cartera

También hay un resultado de cartera especial que se añade automáticamente si ResultsGroup contiene más de un resultado. Puede obtener el resultado de la cartera simplemente llamando a ResultsGroup.cartera()

Resultado carteraResultado = resultadosGrupo.cartera().

Si sólo hay un resultado, esta llamada devolverá el resultado principal del backtest.

 

Obtención de métricas a partir de un resultado

Cuando tenga un Resultado, podrá obtener fácilmente las métricas como Beneficio neto, SharpeRatio, etc. que se calcularon para este resultado.

Todas las métricas calculadas se almacenan en SQStats que puede obtener llamando a Result.Estadísticas(Dirección, PLType, SampelType). Tenga en cuenta que el método stats() tiene tres parámetros - las estadísticas se calculan por separado para:

 

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);

 

En SQStats es un simple mapa clave-valor que contiene las métricas calculadas para la combinación de estadísticas dada. Las métricas se almacenan bajo las claves que corresponden a los nombres de clase de los fragmentos de Java, por ejemplo "NetProfit", "Drawdown", etc.

Una vez que tengas el objeto SQStats puedes obtener el valor de la métrica simplemente llamando a:

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

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

 

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

Suscríbase a
Notificar a
5 Comentarios
Más antiguo
Más reciente Más votados
Feedbacks de Inline
Ver todos los comentarios
Oliver
17. 11. 2021 8:29 pm

Hola antes de estudiar esto en detalle..... ¿esto me permite seleccionar caminata específica hacia adelante se ejecuta para construir una cartera optimizada? Yo había publicado una solicitud a continuación para que los oficios de una ejecución específica se puede utilizar en quant analyzer. ¿Hace esto lo mismo? gracias

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

Emmanuel
25. 11. 2021 8:43 pm

Esto es muy útil, lo estoy probando. Gracias Mark

Emmanuel
26. 11. 2021 1:18 pm

¿Dónde puedo encontrar ejemplos de objetos resultantes? 
subResultado(resultKey) método ?, 
getResultKeys(), getMainResultKey()
SQStats statsIS = result.stats(Directions.Both, PLTypes.Money, SampleTypes.InSample);

He buscado en el editor de código con getResultKey, y otra palabra clave pero no he encontrado ningún ejemplo.

tomas262
Admin
Responder a  Emmanuel
1. 12. 2021 19:51
Emmanuel
Responder a  tomas262
4. 1. 2022 1:52 pm

gracias