Kaggle

  • Trading Day 19 aprile Torino - Corso Gratuito sull'investimento

    Migliora la tua strategia di trading con le preziose intuizioni dei nostri esperti su oro, materie prime, analisi tecnica, criptovalute e molto altro ancora. Iscriviti subito per partecipare gratuitamente allo Swissquote Trading Day.

    Per continuare a leggere visita questo LINK

P.A.T.

Nuovo Utente
Registrato
8/5/01
Messaggi
31.034
Punti reazioni
1.404
E' da anni che mi frulla una domanda in testa, ora che ho visto riprendere questa sezione con la partecipazione di una nuova generazione di qualificati matematici e informatici. La domanda è legata alla valutazione dei risultati di un trading system, che trova due mondi apparentemente incomunicabili tra i giudici "autologi" dei propri trading system (di solito gli stessi analisti tecnici ed econometrici) e i giudici di Kaggle.

Per semplificare la domanda, ipotizzo di voler togliere da un trading system oggetto di analisi tutte le distorsioni presenti che si cumulano nel tempo con il protrarsi dell'esposizione del TS a mercato e di considerare solo uscite ed entrate nell'alta od altissima frequenza. Tecnicamente nella classica rappresentazion
rend y = f(x) + variabile d'errore

vorrei che la variabile d'errore debba tendere idealmente a media 0, oppure se non e' zero la variabile d'errore nell'altissima o alta frequenza deve essere assorbita in y=f(x). Ipotizzando cosi' di avere un trading system che entra a mercato al tempo "t" ed esce immediatamente al tempo "t+1", abbiamo che il risultato del trading puo' essere elaborato come binario, e cio' ci evita di dover considerare la magnitudo degli eventi (code grasse, curtosi, etc.) e mi semplifica di molto l'inquadramento della successiva domanda.

La domanda e':

1) perché gli analisti tecnici ed econometrici considerano di un trading system solo le metriche conseguenti alle entrate ed uscite dal mercato, e non invece, come farebbero a Kaggle tutti gli stati di mercato potenziali ?

1 - entrate a mercato con successo
2 - entrate a mercato con insuccesso
3 - non entrate a mercato con successo
4 - non entrate a mercato con insuccesso


C'e' per caso qualcuno di voi che per valutare un trading system "binario" (di cui non conta la magnitudo degli eventi) usa l'indice di Matthews, consigliato peraltro anche dal famoso quant Paul Wilmott ?

Poi avrei ancora una seconda domandina, eventualmente...
 
La seconda domandina e' semplice: perché Kaggle valuta un sistema di predizione binario (come anche un possbile trading system binario) principalmente su questa modellistica

Receiver operating characteristic - Wikipedia
Understanding AUC - ROC Curve – Towards Data Science

mentre un operatore di borsa lo valuterebbe con i piu' tradizionali indici, che si basano sulle entrate o uscite effettive a mercato (Sharpe, Omega, etc.) ?

Faccio un esempio paradossale. Per un operatore di borsa o trader un trading system puo' avere ottimi ratio (Sharp >2) ma per i giudici Kaggle puo' essere considerato una ciofeca se lo stesso TS mancasse dei possibile segnali di ingresso a mercato che avrebbero fruttato tanti piu' soldi.

Perché i metodi di valutazione di Kaggle (coefficiente di correlazione di Matthews, AUC, ROC) non incontrano in finanza lo stesso successo planetario che incontrano indici di performance finanziari quali coefficiente di correlazione di Bravais-Pearson, MDD, Profit Factor, High Watermark, etc ??
 
La seconda domandina e' semplice: perché Kaggle valuta un sistema di predizione binario (come anche un possbile trading system binario) principalmente su questa modellistica

Receiver operating characteristic - Wikipedia
Understanding AUC - ROC Curve – Towards Data Science

mentre un operatore di borsa lo valuterebbe con i piu' tradizionali indici, che si basano sulle entrate o uscite effettive a mercato (Sharpe, Omega, etc.) ?

Faccio un esempio paradossale. Per un operatore di borsa o trader un trading system puo' avere ottimi ratio (Sharp >2) ma per i giudici Kaggle puo' essere considerato una ciofeca se lo stesso TS mancasse dei possibile segnali di ingresso a mercato che avrebbero fruttato tanti piu' soldi. (cmq mi approntavo a scrivere nel mio thread sul ML)

Perché i metodi di valutazione di Kaggle (coefficiente di correlazione di Matthews, AUC, ROC) non incontrano in finanza lo stesso successo planetario che incontrano indici di performance finanziari quali coefficiente di correlazione di Bravais-Pearson, MDD, Profit Factor, High Watermark, etc ??

Francamente il metodo Kaggle (non conosco ma apprendo che è quello di considerare tutti i possibili stati, quindi anche i mancati ingressi che sarebbero stati positivi) è a mio avviso già incorporato nelle metriche. Per esempio supponendo un processo di Ottimizzazione tramite MMC allora le simulazioni terranno conto di tutti i possibili scenari, compresi quelli di kaggle. Poi francamente ritengo insuperabile il metodo di valutazione di un trading system Back-Forward(nel caso di inserimento di metodi machine learning) o solo back senza ottimizzazioni (nel caso non siano presenti).

E' proprio la sua spietatezza nel dirti che puoi buttare il TS nel cestino a farmelo ritenere il non plus ultra. Nessun altro metodo, per me, è più proxy della realtà di quello.

Poi si può pensare quale possa essere il valore di rigetto dopo il ciclo back-forward, per esempio 3 sigma, e se dopo la caduta nel forward questo rimane performante, si può misurare la stabilità nel tempo.
 
Francamente il metodo Kaggle (non conosco ma apprendo che è quello di considerare tutti i possibili stati, quindi anche i mancati ingressi che sarebbero stati positivi)

Non solo i mancati ingressi che sarebbero stati positivi (FP = Falso positivo), tutte e 4 le rappresentazioni dei possibili stati.

1 - entrate a mercato con successo TP (acronimo di true positive)
2 - entrate a mercato con insuccesso FN (acr. di false negative)
3 - non entrate a mercato con successo FP
4 - non entrate a mercato con insuccesso TN

Prendiamo il caso di un TS che entri a mercato pochissime volte e "non veda" delle numerose occasioni di guadagno che si presentano. :eek: :wall: :wall:

Ovviamente noi sappiamo che nei TS multiday o con frame non HFT a contare e' la magnitudo dei guadagni e delle perdite che si cumulano nel tempo e incidono sulla performance complessiva.

Se pero' passiamo all'alta frequenza, o comunque a stati di mercato rappresentabili in forma di scenari contigui e immediatamente successivi (sui quali non facciamo alcuna ipotesi tranne quella espressa dalle regole del nostro TS) la magnitudo degli eventi si puo' ignorare, perché lo scarto dalla media alla lunga si annulla, come scrivevo nella premessa (variabile di errore con media zero e sigma 1).

E quindi è possibile analizzare il TS ad alta frequenza anche su un piano di valutazione binario, semplificandoci il compito di molto.

Se valutiamo un TS con le metriche da t a t+1 immediatamente successivo (anche il trading overnight ? Io direi di si, che e' possibile) secondo me e' corretto che si consideri anche TP, FN, FP e TN complessivamente nell'algoritmo di valutazione del TS.

Matrice di confusione - Wikipedia

Che poi si utilizzi il test di Abraham Wald, cosi' gradito in passato a Surcontre o LVI (che lo chiamava "run test") oppure questo test di Matthews, oppure ancora il metodo di towards data science in ambito machine Learning cosi' gradito a Kaggle secondo me cambia poco.

La domanda a mio avviso rimane: bisogna tenere conto nei TS almeno dei mancati ingressi che sarebbero stati (molto) positivi e poi, ancora di tutti e 4 gli scenari?
 
Non solo i mancati ingressi che sarebbero stati positivi (FP = Falso positivo), tutte e 4 le rappresentazioni dei possibili stati.

1 - entrate a mercato con successo TP (acronimo di true positive)
2 - entrate a mercato con insuccesso FN (acr. di false negative)
3 - non entrate a mercato con successo FP
4 - non entrate a mercato con insuccesso TN

Prendiamo il caso di un TS che entri a mercato pochissime volte e "non veda" delle numerose occasioni di guadagno che si presentano. :eek: :wall: :wall:

Ovviamente noi sappiamo che nei TS multiday o con frame non HFT a contare e' la magnitudo dei guadagni e delle perdite che si cumulano nel tempo e incidono sulla performance complessiva.

Se pero' passiamo all'alta frequenza, o comunque a stati di mercato rappresentabili in forma di scenari contigui e immediatamente successivi (sui quali non facciamo alcuna ipotesi tranne quella espressa dalle regole del nostro TS) la magnitudo degli eventi si puo' ignorare, perché lo scarto dalla media alla lunga si annulla, come scrivevo nella premessa (variabile di errore con media zero e sigma 1).

E quindi è possibile analizzare il TS ad alta frequenza anche su un piano di valutazione binario, semplificandoci il compito di molto.

Se valutiamo un TS con le metriche da t a t+1 immediatamente successivo (anche il trading overnight ? Io direi di si, che e' possibile) secondo me e' corretto che si consideri anche TP, FN, FP e TN complessivamente nell'algoritmo di valutazione del TS.

Matrice di confusione - Wikipedia

Che poi si utilizzi il test di Abraham Wald, cosi' gradito in passato a Surcontre o LVI (che lo chiamava "run test") oppure questo test di Matthews, oppure ancora il metodo di towards data science in ambito machine Learning cosi' gradito a Kaggle secondo me cambia poco.

La domanda a mio avviso rimane: bisogna tenere conto nei TS almeno dei mancati ingressi che sarebbero stati (molto) positivi e poi, ancora di tutti e 4 gli scenari?

Condivido l'aspetto che sull'HFT la magnitudo tende a perdere significatività.

Però allora rivediamo la premessa. Quindi se la premessa ha come funzione obiettivo valutare un TS rispetto ad un altro in funzione della performance assoluta (in relazione al suo sigma) allora tutti e 4 gli scenari sono già inglobati nella funzione obiettivo, in quanto se per esempio TS1 ha tanti falsi positivi rispetto a TS2, nell'ipotesi che la magnitudo sia costante allora TS1 parte già svantaggiato rispetto a TS2.

Ma voglio andare oltre. Supponiamo, un caso concreto che conosco, hai un TS con n variabili allora per calibrare le n variabili (ad esempio 10) io uso Metodi Monte Carlo, supponiamo 1000000 di runs, per ogni run ho 10 valori di queste variabili pertanto alla fine avrò 1000000 di possibili stati (ma 10 mln di variabili, uno stato è 10 variabili). Ora supponiamo che la magnitudo sia costante 1% vincita e -0.1% perdita. Se per esempio ho due set di parametri con uno vinco 10 volte su 20 che entro alla fine avrò (senza capitalizzare) 10% -2% = 8%, con l'altro invece vinco 30 volte su 70 alla fine avrò 30% - 7% quindi +23%. Ma se cambio magnitudo della perdita per esempio -0.5% alla fine avrò nel primo caso +5% nel secondo -5% quindi la magnitudo diventa essenziale per scegliere.
Ma avevamo supposto che la magnitudo fosse costante ne segue che quello proposto non è un indicatore affidabile perchè non tiene conto della magnitudo che non è possibile stabilire a priori. Quell'indicatore sarebbe corretto se tu riuscissi a stabilire a priori la magnitudo che sebbene costante per un certo arco temporale tende a cambiare in relazione al tempo a meno che non basi il tuo TS sui tick senza relazione con il tempo. Ma a quel punto sai già quante volte entrerà.
Io ritengo che tutto dipende dalla funzione Obiettivo. Nei miei algoritmi di machine learning per esempio posso cambiare di volta in volta la funzione obiettivo.
Una funzione obiettivo che ritengo interessante è per esempio il prodotto tra la Performance e Efficienza (dove l'efficienza è calcolata come performance/valori solo positivi). Lo scopo di questa funzione obiettivo è quella di contenere l'overfitting essendo che l'ipotesi iniziale è che maggiore è l'efficienza migliore sarà il livello di specificazione del modello nel tempo. Tra l'altro calcolata in quel modo essendo l'efficienza un valore compreso tra 0 e 1 ha il pregio che nell'ipotesi di altissimi valori di performance correlati a bassissimi valori di efficienza quel set di valori verrà scartato in presenza di un altro set che ha minor performance ma più efficienza. Oppure la funzione Obiettivo può essere solo Performance o solo Efficienza (ovviamente tutto calcolato nel forward-out of sample). Un'altra funzione Obiettivo potrebbe essere quella di minimizzare lo scarto tra risultati In Sample e quelli Out Sample.

Nel mio caso quindi analizzo milioni di possibili stati e poi scelgo quello che meglio soddisfa la funzione Obiettivo, per capirci quell'indicatore Matthews per me è estremamente riduttivo nel senso che è troppo generale per darmi risposte esaurienti sul caso specifico. Nel caso specifico non ti conviene mai utilizzare un indicatore così generale ma costruirti proprio la TUA funzione Obiettivo ed implementarla dentro il codice sorgente così vai a vedere proprio cosa ti interessa e lo fai calcolando milioni di possibili stati. Ciò ovviamente richiede che non vengano utilizzate funzioni ML built-in ma queste funzioni di Machine Learning devono essere create from scratch.

Quindi in definitiva rispondendo alla tua domanda:
"La domanda a mio avviso rimane: bisogna tenere conto nei TS almeno dei mancati ingressi che sarebbero stati (molto) positivi e poi, ancora di tutti e 4 gli scenari?"
No, nel senso che bisogna tenere conto di tutti i possibili stati e di tutte le possibili combinazioni che tengano conto di quei 4 stati, della magnitudo, del tempo, e di tutto quello che può modificare il risultato rispetto alla TUA funzione Obiettivo.
 
Mi ero perso questa discussione :)

Premesso che non sono un esperto sul tema, il criterio di Matthews risponde ad un problema decisamente specialistico per modelli di classificazione binaria, ma penso che sia un po' fuorviante usarlo per la valutazione di trading system.

Mi spiego.

Il momento in cui ci rendiamo conto che abbiamo bisogno del coefficiente di Matthews (MCC) - o della media armonica F1, che è un altro criterio - è quando ci troviamo nella condizione di avere un modello di classificazione che sputa fuori probabilità ma noi abbiamo bisogno di vivere nella certezza, e quindi di decidere dove impostare un "cut-off" per trasformare le probabilità in 0 o 1 (siamo tutti d'accordo che senza 0 e 1 non possiamo avere una matrice di confusione).

Con la ROC si ha una curva di trade-off, quindi è chiaro che sia la ROC sia l'AUC sono metodi di confronto di modelli diversi più che di scelta del cut-off ottimale; la tentazione è quindi quella di usare F1 o MCC per trovare il numerino magico.

Come tuttavia fa notare molto prosaicamente Lambert Zijp del Netherlands Cancer Institute a proposito della presunta esistenza di un punto di ottimo sulla ROC:
ROC curves show the trade-off between true positives and false positives. If you go farther to the right on the curve, you can increase the true positives a little bit, at the cost of a lot more false positives. It could be that that little bit at high cost is important, but also that it is not. If your data are about e.g. pancreas-cancer detection, it is a clinical decision what is acceptable. That clinical decision is not easily captured in some 'objective' calculations, no matter what algorithm you use.
Lo stesso ragionamento può essere applicato ad una strategia: non tutte sono uguali e dove per alcune interessa maggiormente l'accuratezza per altre è invece importante avere un valore il più piccolo possibile di falsi positivi.
 
Mi ero perso questa discussione :)

Premesso che non sono un esperto sul tema

Io ero fermo concettualmente al test di Wald, quello degli aerei perforati dai nazisti nella seconda guerra mondiale (vedi wikipedia, interessantissimo), che viene chiamato sui forum italiani di trading "run test".


il criterio di Matthews risponde ad un problema decisamente specialistico per modelli di classificazione binaria, ma penso che sia un po' fuorviante usarlo per la valutazione di trading system.
.

Anche per i trading system che effettuano trade ripetuti e frequenti ma che entrano a mercato nel momento t ed escono nel momento t+1 immediatamente successivo, ponendosi in questo modo la finalita' di evitare le code grasse della distribuzione?

Piu' generalmente, il trading ad alta frequenza puo' essere modellizzato (anche) come un trading binario ? Perché io me ne fregherei della curtosi che nell'HFT passa da 3 a 30, se so che - mediamente - gli scarti poi alla fine si compensano tra di loro.

Se si, questa semplificazione concettuale ci aiuterebbe nel ridurre l'importanza dell'overfitting e considerare il trading binario in tutti i suoi aspetti, compreso i mancati interventi a mercato (i cd. "falsi positivi").

Come avrai sicuramente sperimentato, in un trading system che ha come presupposto l'esistenza e lo sfruttamento di bias effettivi operando senza soglie e/o restrizioni si guadagnerebbe di piu', ma ovviamente peggiorano gli indici di performance (Sharpe, etc.) .
 
Indietro