Documentação

Aplicações

Última atualização em 12. 10. 2021 por Mark Fric

Trabalhando com ResultsGroup

ResultadosGrupo é o objeto que a SQX usa para armazenar:

  • código de estratégia/XML
  • resultados de trás para frente
  • outros resultados de otimizações e verificações cruzadas
  • configurações usadas nos últimos backtests
  • outros valores personalizados úteis em seu armazém de valores-chave

Cada estratégia que você vê no banco de dados é, de fato, uma ResultadosGrupo objeto contendo a estratégia + resultados que são então exibidos nas colunas do banco de dados ou na lista de comércio, gráfico de patrimônio líquido, etc.

 

Obtenção de resultados individuais do grupo

Pode haver vários backtests ou otimizações realizadas para uma estratégia - você pode ter os principais backtests + backtests em mercados adicionais, ou otimizações adicionais de WF.

Os resultados destes testes secundários separados são armazenados em separado. Resultado objetos no ResultsGroup, portanto ResultsGroup é de fato um grupo de objetos de Resultado mais algumas outras coisas.

 

Os resultados individuais no ResultsGroup são acessíveis por meio de subResultado(resultadoKey) método, onde resultadoKey é o nome (chave) do subresultado que você quer obter.

Você pode obter uma lista de todas as chaves de resultados ligando para getResultKeys()que devolverá um conjunto de todas as chaves que o ResultGroup contém.

Você também pode usar um método especial getMainResultKey() para obter a chave do resultado principal do backtest.

Resultado principalResultado = resultadosGrupo.subResultado( resultadosGrupo.getMainResultadoKey() ) // retornará o principal resultado de retorno.

 

ResultsGroup object name é o nome da estratégia que você vê no banco de dados, assim chamando resultadosGroup.getName() retornará "Estratégia 1.2.3", por exemplo

 

Portfólio

Há também um resultado especial de portfólio que é adicionado automaticamente se o ResultsGroup contiver mais de um resultado. Você pode obter o resultado da carteira simplesmente chamando ResultsGroup.portfólio()

Carteira de resultadosResultado = resultadosGrupo.portfólio().

Se houver apenas um resultado, esta chamada retornará o principal resultado de retaguarda.

 

Obtenção de métricas a partir de um resultado

Quando você tem um Resultado você pode facilmente obter as métricas tais como lucro líquido, SharpeRatio etc. que foram computadas para este resultado.

Todas as métricas computadas são armazenadas em SQStats objeto que você pode obter chamando Resultado.estatísticas(Direção, PLType, SampelType). Observe que o método stats() tem três parâmetros - as estatísticas são computadas separadamente para:

 

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

SQStatsOOS = result.stats.stats(Directions.Ambos, PlTypes.Money, SampleTypes.OutOfSample);

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

 

O SQStats objeto é um simples mapa de valores-chave que contém as métricas computadas para a combinação de estatísticas dadas. As métricas são armazenadas sob as chaves que correspondem aos nomes das classes de trechos Java, por exemplo "NetProfit", "Drawdown", etc.

Uma vez que você tenha o objeto SQStats você pode obter o valor da métrica simplesmente chamando:

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

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

 

Este artigo foi útil? O artigo foi útil O artigo não foi útil

Assine
Notificação de
5 Comentários
Mais antigo
Novidades Mais Votados
Feedbacks em linha
Ver todos os comentários
Oliver
17. 11. 2021 8:29 pm

Olá antes de estudar isto em detalhe..... isso me permite selecionar passagens específicas para construir um portfólio otimizado? Eu havia postado um pedido abaixo para que as negociações de uma corrida específica pudessem ser usadas em um analisador de quant. Será que isto faz o mesmo? obrigado

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

Emmanuel
25. 11. 2021 8:43 pm

Isto é muito útil, estou testando. Obrigado Mark

Emmanuel
26. 11. 2021 1:18 pm

onde posso encontrar exemplos de objetos de resultado ? 
subResultado(resultadoKey) método ?, 
getResultKeys(), getMainResultKey()
SQStatsIS = result.stats(Directions.Directions.Both, PLTypes.Money, SampleTypes.InSample);

Eu procurei no editor de código com getResultKey e outras palavras-chave, mas não encontrei nenhum exemplo.

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

obrigado