Discussione sull’articolo "La matematica nel trading: rapporti di Sharpe e Sortino" - pagina 2

 
Ivan Titov #:
Ho capito bene che Sharpe.mqh calcola solo il rapporto Sharpe annuale? Il Sortino mensile non funziona?

L'articolo contiene la risposta alla sua domanda.

 
Andrey Khatimlianskii #:

Di nuovo, cos'è un "numero basso"? A me sembra che 70-80 sia basso, ma non c'è una penalità su questi passaggi.

I numeri sono confrontati con altri passaggi?

Sono normalizzati in base alla lunghezza dell'intervallo di prova?

Molto probabilmente viene impostato un valore fisso, altrimenti si dovrebbe ricalcolare l'intera tabella dei risultati molte volte.

Sono d'accordo con le argomentazioni di cui sopra.

 
Andrey Khatimlianskii #:
Coincidono, ma non sempre

Se si imposta il timeframe settimanale nel tester, quasi sempre non coincidono:

Sul timeframe mensile, la variazione è ancora maggiore:


 
Rashid Umarov #:

L'articolo contiene la risposta alla vostra domanda.

Non ho trovato la risposta alla mia domanda nell'articolo, ma a giudicare dal codice Sharpe.mqh Sortino non è presente. Per questo motivo ho allegato di seguito il codice modificato con l'opzione di calcolo di Sortino. Allo stesso tempo ho ottimizzato il codice in termini di chiamate di funzioni non necessarie.

A mio avviso, lo svantaggio del coefficiente di Sortino è che per il suo calcolo vengono presi in considerazione solo i rendimenti inferiori al tasso privo di rischio (zero in questo caso). Ma anche un rendimento positivo in uno dei periodi al di sotto della media calcolata per la strategia testata è un rischio. Per questo motivo ho aggiunto un coefficiente di calcolo che tiene conto solo dei rendimenti inferiori alla media. Non ho trovato un analogo, quindi l'ho modestamente chiamato coefficiente di Titov)). Quando lo troverò, lo rinominerò.

Nell'originale, è scomodo che il periodo di calcolo dipenda dall'orizzonte temporale corrente. Per questo motivo ho aggiunto la possibilità di impostare il periodo di calcolo (se non viene impostato esplicitamente, viene preso il timeframe corrente):

Returns.SetTF(PERIOD_MN1);

Non ho trovato in nessuna fonte la necessità di utilizzare il logaritmo del rendimento per calcolare lo Sharpe ratio e portarlo al valore annuale. Per questo motivo ho aggiunto la possibilità di disabilitare queste opzioni.

Per qualche motivo, gli esempi dell'articolo ignorano i periodi con rendimenti pari a zero. Questo distorce il risultato. Pertanto, ho aggiunto un'opzione per includere tali periodi nel calcolo.

Esempio di utilizzo per il calcolo del coefficiente di Sharpe come nell'articolo originale:

#include <Sortino.mqh>
CReturns Returns;

..

void OnTick()
{
        Returns.OnTick();
        ..
}


double OnTester(void)
{
        return(Returns.OnTester(DEF_SHARPE));
}

Esempio di calcolo del coefficiente di Sortino a parità di altre condizioni:

#include <Sortino.mqh>
CReturns Returns;

..

void OnTick()
{
        Returns.OnTick();
        ..
}


double OnTester(void)
{
        return(Returns.OnTester(DEF_SORTINO));
}

Per quanto mi riguarda, ho deciso di valutare il rischio di rendimenti inferiori alla media su intervalli mensili:

#include <Sortino.mqh>
CReturns Returns;

..

int OnInit()
{
        Returns.SetTF(PERIOD_MN1);
        ..
}


void OnTick()
{
        Returns.OnTick();
        ..
}


double OnTester(void)
{
        return(Returns.OnTester(DEF_TITOV, false, false, false));
}
File:
Sortino.mqh  10 kb
 
Ivan Titov #:
Non ho trovato in nessuna fonte la necessità di utilizzare il logaritmo dei rendimenti nel calcolo dello Sharpe ratio.

Per rispondere con una citazione

L'utilizzo del logaritmo dei rendimenti nel calcolo dello Sharpe ratio non è strettamente necessario, ma può essere utile per semplificare i calcoli e migliorare le proprietà statistiche dei dati, soprattutto quando si tratta di periodi di tempo lunghi o di attività altamente volatili. I rendimenti logaritmici sono spesso utilizzati perché forniscono una migliore approssimazione della distribuzione normale dei rendimenti e semplificano i calcoli nella compilazione dei portafogli.

Aggiungerei: provate senza logaritmi e ditemi qual è l'insolito effetto collaterale. Dovreste riscontrarlo.

 
Ivan Titov #:
Non ho trovato in nessuna fonte la necessità di calcolare lo Sharpe ratio e di portarlo a un valore annualizzato.

Un'altra citazione

Per quanto riguarda il fatto di portare lo Sharpe ratio a un valore annualizzato, questo viene fatto per standardizzare il rapporto e consentire il confronto tra diverse strategie di investimento e portafogli, indipendentemente dalla scala temporale originale dell'investimento. Si tratta di una pratica comune che aiuta gli investitori a misurare la performance dell'investimento rispetto a uno standard comune, soprattutto quando i confronti vengono effettuati tra diversi tipi di attività o strategie con frequenze di negoziazione diverse.

 
Rashid Umarov #:
Risponderò con una citazione

Per fonti intendevo informazioni sui rapporti di Sharpe e Sortino al di fuori di questo articolo.

Rashid Umarov #:
Per quanto riguarda il fatto di portare il rapporto di Sharpe a un valore annualizzato, questo viene fatto per standardizzare il rapporto, consentendo di confrontarlo tra diverse strategie di investimento e portafogli, indipendentemente dalla scala temporale originale dell'investimento.
Lo Sharpe ratio è il rapporto tra il rendimento medio dei segmenti di un determinato periodo e la deviazione standard degli stessi segmenti. In altre parole, la lunghezza dei segmenti non ha molta importanza ai fini della possibilità di confrontare le strategie tra loro. A mio avviso, è solo consigliabile sceglierla più lunga della durata media di un'operazione per eliminare il rumore inutile.
Rashid Umarov #:
provate senza logaritmi e ditemi se c'è un effetto collaterale insolito. Dovreste riscontrarlo

L'ho provato: niente di strano. Ma ho trovato un errore, allego la versione corretta.

File:
Sortino.mqh  10 kb
 
Rashid Umarov #:

Risponderò con una citazione

Aggiungo per me stesso - provate senza logaritmi e poi ditemi dell'insolito effetto collaterale. Dovreste riscontrarlo.

Curiosamente, per questo tipo di azioni questo script fornisce uno Sharpe di 2,08:

E per questo (lo stesso con reinvestimento) 3,66:

Anche se è ovvio che la qualità della seconda azione è peggiore (il reinvestimento peggiora sempre la qualità dell'azione).

E se invece dei logaritmi degli incrementi azionari utilizziamo gli incrementi stessi:

         log_return = (m_equities[i] - prev_equity); // incremento 
         //log_ritorno = MathLog(m_equities[i] / prev_equity); // incremento del logaritmo

Otteniamo 3,85 per il primo e 2,1 per il secondo. Molto più adeguato.

 
Inoltre, lo Sharpe sui logaritmi dipende in modo significativo dall'entità del deposito iniziale. Nell'esempio di cui sopra (equity 1) con un deposito iniziale di 4000 dà 2,08. Con un deposito di 400000 dà 3,83. Anche se la forma dell'equity non è cambiata in alcun modo (trading con un lotto fisso).
 

Lo Sharpe sui logaritmi non dipende dalla dimensione del deposito solo nel caso di trading con reinvestimento.

Ma in questo caso lo Sharpe su incrementi semplici non dipende dalla dimensione del deposito.

Pertanto, non capisco perché dovrei utilizzare lo Sharpe sui logaritmi.