Documentazione

Applicazioni

Ultimo aggiornamento il 12. 10. 2021 da Mark Fric

Lavorare con ResultsGroup

Gruppo di risultati è l'oggetto che SQX usa per memorizzare:

  • codice strategico/XML
  • Risultati del backtest
  • altri risultati di ottimizzazioni e controlli incrociati
  • impostazioni utilizzate negli ultimi backtest
  • altri utili valori personalizzati nel suo archivio di valori chiave

Ogni strategia che si vede nella banca dati è in effetti una Gruppo di risultati contenente la strategia + i risultati che vengono poi visualizzati nelle colonne della banca dati o nell'elenco delle operazioni, nel grafico azionario, ecc.

 

Ottenere risultati individuali dal gruppo

Possono essere eseguiti più backtest o ottimizzazioni per una strategia: si possono avere backtest principali + backtest su altri mercati, o ottimizzazioni WF aggiuntive.

I risultati di questi backtest separati vengono memorizzati come Risultato nel gruppo ResultsGroup, quindi l'oggetto ResultsGroup è in realtà un gruppo di oggetti Result e poche altre cose.

 

I singoli risultati del gruppo ResultsGroup sono accessibili chiamando subRisultato(chiave del risultato) dove resultKey è il nome (chiave) del risultato secondario che si vuole ottenere.

È possibile ottenere un elenco di tutte le chiavi dei risultati chiamando getResultKeys()che restituirà un array di tutte le chiavi contenute nel gruppo di risultati.

È inoltre possibile utilizzare un metodo speciale getMainResultKey() per ottenere la chiave del risultato principale del backtest.

Risultato mainResult = resultsGroup.subResult( resultsGroup.getMainResultKey() ) // restituirà il risultato principale del backtest.

 

Il nome dell'oggetto ResultsGroup è il nome della strategia che si vede nella banca dati, quindi la chiamata a resultsGroup.getName() restituirà "Strategia 1.2.3", ad esempio

 

Portafoglio

Esiste anche uno speciale risultato di portafoglio che viene aggiunto automaticamente se ResultsGroup contiene più di un risultato. È possibile ottenere il risultato del portafoglio semplicemente chiamando ResultsGroup.portafoglio()

Risultato portfolioResult = resultsGroup.portafoglio().

Se c'è un solo risultato, questa chiamata restituirà il risultato principale del backtest.

 

Ottenere metriche da un risultato

Quando si dispone di un risultato, è possibile ottenere facilmente le metriche come il profitto netto, lo SharpeRatio ecc. che sono state calcolate per questo risultato.

Tutte le metriche calcolate sono memorizzate in SQStats che si può ottenere chiamando Result.statistiche(Direzione, PLType, SampelType). Si noti che il metodo stats() ha tre parametri: le statistiche vengono calcolate separatamente per:

 

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

 

Il SQStats è una semplice mappa chiave-valore che contiene le metriche calcolate per la combinazione di statistiche data. Le metriche sono memorizzate sotto le chiavi che corrispondono ai nomi delle classi degli snippet Java, ad esempio "NetProfit", "Drawdown", ecc.

Una volta ottenuto l'oggetto SQStats, è possibile ottenere il valore della metrica semplicemente chiamando:

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

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

 

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

Abbonarsi
Notificami
5 Commenti
Il più vecchio
Più recente I più votati
Feedback in linea
Visualizza tutti i commenti
Oliver
17. 11. 2021 20:29

Salve, prima di studiarlo in dettaglio..... mi permette di selezionare specifici run di walk forward per costruire un portafoglio ottimizzato? Ho postato una richiesta qui sotto in modo che i trade di una corsa specifica possano essere utilizzati in quant analyzer. Questo fa lo stesso? Grazie

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

Emmanuel
25. 11. 2021 20:43

Questo è molto utile, lo sto testando. Grazie a Mark

Emmanuel
26. 11. 2021 1:18 pm

dove posso trovare esempi di oggetti Result? 
, metodo subResult(resultKey) ?, 
getResultKeys(), getMainResultKey()
SQStats statsIS = result.stats(Directions.Both, PLTypes.Money, SampleTypes.InSample);

Ho cercato nell'editor di codice con getResultKey e altre parole chiave, ma non ho trovato alcun esempio.

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

Grazie