Documentação
Aplicações
Última atualização em 12. 10. 2021 por Mark Fric
Trabalhando com ResultsGroup
Conteúdo da página
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:
- em todas as direções (Longo, Curto, Ambos),
- Tipo PL (dinheiro, porcentagem, pips)
- tipo de amostra (FullSample, InSample, OutOfSample).
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
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
Isto é muito útil, estou testando. Obrigado Mark
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.
Olá,
isto pode ajudá-lo também https://strategyquant.com/doc/programming-for-sq/working-with-resultsgroup/
obrigado