Overfitting (4 lettori)

sardi75

Nuovo forumer
A parte gli scherzi, il capitale può comprarti tempo per diventare trader, e sicuramente aiuta. Del resto aiuta sempre e comunque.
Semplicemente non è indispensabile.
Quindi il sacro graal esiste e non richiede neppure grossi capitali?
La mia osservazione partiva da una discussione con malnati di qualche anno fa, il quale aveva dichiarato di aver trovato il sacro graal ma di poterlo sfruttare solo grazie alla disponibilità di cifre consistenti.
Osservazione ridicola esattamente quanto il graal che aveva trovato.
Non ti seguo. Allora il sacro graal non esiste? Oppure era ridicolo il suo ma ce ne è uno buono?
Quanto a Malnati ti riferisci a quel lungo thread sul Vix? Beh... a me, a parte un aspetto (che se vuoi ti dico), il ragionamento non sembrava tanto sballato. Faceva riferimento a dati storici e non pretendeva di avere grandi rendimenti.
Naturalmente se per i prossimi 2 anni il Vix si comporta diversamente dagli ultimi 10 il ragionamento non funziona più, ma questo era implicito nel ragionamento.
Ma questo vale sempre, se il futuro impazzisce finiamo tutti in braghe di tela e non solo nel trading.
 
Ultima modifica:

sardi75

Nuovo forumer
Se dovessi mettermi a spiegare nel dettaglio come un algoritmo sviluppato in C# implementi la propria capacità di generalizzare, credo che qualcuno, leggendomi, potrebbe sentirsi inadeguato.. ..ma non avrebbe alcun senso ne per l'interlocutore ne tantomeno per me ( anche perchè se l'ho implementato lo conosco nel dettaglio e se lo spiegassi rischierei di dare per scontati concetti che probabilmente non lo sono.. ..anche perchè gli altri non sono nella mia testa e potrebbero avere conoscenze diverse dalle mie ).
Cordialità
Beh... potresti entrare un po' nel dettaglio del concetto di "autoadattivo". Sembra l'uovo di colombo o il sacro graal come dice Giulia. Il sistema si accorge che il mercato cambia e si adegua ad esempio cambiando i punti di enttratra e di uscita. Ho detto bene?
Ma si adegua sempre "dopo" che ha notato qualcosa. E magari dopo che ha cambiato i livelli di entrata e uscita il mercato torna a comportarsi come prima e quindi l'adattamento ti ha fatto solo perdere, era meglio rimanere fermo.
E' corretto oppure ho detto qualche caz.zata?
 

GiuliaP

The Dark Side
Quindi il sacro graal esiste e non richiede neppure grossi capitali?

Definisci "sacro graal", definisci "diventare trader", e poi risponditi da solo! ;)

Non ti seguo.

:up:

Allora il sacro graal non esiste? Oppure era ridicolo il suo ma ce ne è uno buono?

Sicuramente il suo era ridicolo (come lui stesso, del resto si è fatto due anni di terapia dopo quel gigantesco palo). Ed io, udite udite, a priori non ne avevo il minimo dubbio! :-o :lol:

Del resto la sua ignoranza in materia era al confine tra l'avvilente e il sorprendente :(
 

AndrewLR

Nuovo forumer
lascia perdere metri e centimetri, il problema reale secondo me è un altro:

senza nulla togliere a Harvey, Lopez de Prado et altri e al summa scientifico applicato al problema delle ipotesi multiple (che funziona benone dagli anni '30), tutti i metodi di correzione del p-value per rifiutare l'ipotesi nulla implicano la conoscenza del reale numero di trial, e questo non è sempre facile da stabilire in economia/finanza

ti faccio un esempio: supponiamo tu voglia valutare il p-value del miglior loookback in termini di mesi per una strategia di tipo momentum, apparentemente se testi da 1 mese a 24 ti sembra di avere solo 24 backtest da infilare nell'analisi, con relativa correzione.

in realtà i gradi di libertà sono molti di più: hai scelto il momentum e non il mean reverse perché in qualche modo già sai che il secondo non funziona, hai scelto il frame mensile e non giornaliero perché sai già che è quello col miglior profilo in base a riduzione del noise e costi, oppure come ho visto fare su questo e altri forum, scegli il country dove funziona meglio, e così via.

in altre parole, tutte le volte che generi una qualsiasi strategia, più o meno consapevolmente stai usando tutto ciò che hai letto su centinaia di paper scientifici, scegliendo alcune cose ed evitandone altre che hanno già dimostrato di non essere utili e diventa praticamente impossibile tenere conto di tutto ciò per correggere l'elegante p-value dei paper di Harvey e Liu o del MAFFIA team

.


Confusione fra gradi di liberta' e data snooping a parte, il concetto che hai espresso e' giustissimo. Ed infatti e' da folli pensare di poter stimare l'overfitting solo cosi' (mi son venuti i brividi la prima volta che ho letto "Probability of Overfitting", ma vabbe' forse devono anche vendersi in qualche modo).

Correzioni del p-value, insample/outsample, bootstrapping e ambaradan vari hanno valore solo se usati ciascuno nel modo e contesto giusto, che era il discorso che cercavo di fare nel thread qui accanto fra l'altro.

Questo pero' non porta in alcun modo a dire che e' in generale impossible stimare se c'e' valore in una strategia oltre un eventuale grado di overfitting. L'esercizio e' piu' volatile e spesso limitato in valore nel nostro campo che in altri, questo si' - e non solo per un problema di conoscenza diffusa, ma anche per la natura mutevole dei mercati.


Riguardo al prosieguo ( spero gradevole ) di questa conversazione, mi aspetto che avvenga non con i soliti nozionismi, sarebbero invece graditi esempi reali dove magari si descrivono strategie di mutazione, di autoadattamento, di generalizzazione ecc. ecc. giusto per parlare una lingua comprensibile a tutti in particolare per il sottoscritto poichè le capacità si misurano solo con i risultati ottenuti in campo e non certo creando un inutile senso di inadeguatezza nelle altre pesone.
Se dovessi mettermi a spiegare nel dettaglio come un algoritmo sviluppato in C# implementi la propria capacità di generalizzare, credo che qualcuno, leggendomi, potrebbe sentirsi inadeguato.. ..ma non avrebbe alcun senso ne per l'interlocutore ne tantomeno per me ( anche perchè se l'ho implementato lo conosco nel dettaglio e se lo spiegassi rischierei di dare per scontati concetti che probabilmente non lo sono.. ..anche perchè gli altri non sono nella mia testa e potrebbero avere conoscenze diverse dalle mie ).

Molto premuroso da parte tua :) Se traduci dal C# all'italiano, magari nessuno si sente inadeguato :)
 
...
Se dovessi mettermi a spiegare nel dettaglio come un algoritmo sviluppato in C# implementi la propria capacità di generalizzare...

A proposito di discorsi autoreferenziali, questa sottolineatura al linguaggio C# mi pare un po' forzata, considerando anche che è solo un linguaggio di programmazione che, di fatto, non può migliorare né peggiorare un sistema magari sviluppato prima con carta e penna.

Ciao.
 

Entità Numerica

Forumer attivo
Una ventata di concretezza operativa è senz'altro gradita, benvenuto. :)
Personalmente trovo il trading automatizzato affascinante ma non ho capacità, risorse e fiducia sufficienti per fargli gestire il mio portafoglio.
Al momento la cosa più automatizzata che uso sono i rudimentali e banali screener che si trovano online per fare una pre-selezione dei titoli che mi possono interessare, tutto il resto a mano.
Perdona quindi le domande generiche (le risposte non è necessario che lo siano ;)):
1) il tuo codice è libero di cercare le correlazioni che desidera o imponi dei constraint, p.e. nessi causali predeterminati basati magari su una teoria economica?
2) dividi i tuoi dati nei tradizionali training-set, validation-set & test-set o fai altro?

Grazie per le risposte. :bow:

Ciao GiveMeLeverage,
la mia celerità nel rispondere è ai minimi termini, attività purtroppo realizzabile solo nei ritagli di tempo.
Ma veniamo al dunque poichè non ho ne la voglia ne il tempo per dedicarmi a discorsi di contorno.
Le teorie economiche sono molto affascinanti, esse offrono un " punto panoramico " magnifico, una visione ampia che ci permette di cogliere le macrotendenze evitando di incorrere in alcune distorsioni causate da condizioni estemporanee fuorvianti, il problema però è proprio questo:
se il punto panoramico è posto troppo in alto si perde la visione del dettaglio e la " sensibilità " che ne consegue.
Per una questione di comodità e semplificazione gestionale, si da per scontato che vi siano cause ( anche concomitanti e non strettamente di natura economica vedi ad esempio terremoto del Giappone ) in grado di determinare cambiamenti di tendenza anche solo momentanei, ma non si entra in merito ad esse.
Ci si sofferma invece sugli effetti che tali cause avranno sull'andamento dei prezzi, ovvero, in estrema sintesi ( e forse anche con una discreta dose di superficialità ) si assume che i prezzi scontano tutto quindi " basta " analizzare il loro andamento senza preoccuparsi più di tanto delle cause..

Poichè questi sistemi, in genere aggressivi, per raggiungere rendimenti elevati sfruttano oscillazioni di ampiezza limitata e tendono a concentrare le operazioni in prossimità dei punti di inversione ( piuttosto che la cosidetta distribuzione operativa a " pioggia " ), è necessario basarsi su una visione sufficientemente ravvicinata affinchè sia possibile cogliere i cambiamenti di fase dell'onda prezzo considerata ed il relativo timing.. ( più avanti approfondiremo il concetto ).
Non vengono nemmeno gestite correlazioni con indici di riferimento e/o altri titoli poichè ogni correlazione implica un ritardo interpretativo e quindi una maggiore possibilità di perdere il timing.
Diciamo che più che una correlazione, viene cercata una relazione diretta con un template di riferimento ovvero un'onda prezzo appartenente ad una determinata banda di frequenza ( in uno strumento finaziario vi sono onde prezzo/valore di diverse frequenze ) e la tipologia di un sistema di trading automatizzato tiene prima di tutto conto di questo aspetto ovvero del periodo di oscillazione che si vuole considerare, analizzare, gestire operativamente..
A seconda delle oscillazioni considerate: bassa, media, alta, altissima frequenza ( micro-scillazioni ) verranno implementati trading system specifici. La caratteristica ricorrente per tutte le tipologie è proprio la capacità di rilevare i cambiamenti di fase per ognuna di queste frequenze in modo tale che sia possibile " cogliere " con un ritardo accettabile ( evitando quindi di incorrere in un controfase ) il cambiamento di tendenza ( da non confondere in nessun caso con le teorie tanto stravaganti quanto strampalate di Elliott, che non aveva nemmeno un'idea esatta di cosa fosse un'onda.. ) .
I cambiamenti di fase permettono di determinare i trend e conseguentemente la strategia operativa che il sistema deve adottare.
Ormai la direzione presa nell'automazione del trading è proprio questa ovvero di sistemi quantitativi che effettuano accumuli/distribuzioni parzializzate e sono specializzati per tipo di operatività:
1) solo operatività long ( ovvero accumuli in prossimità del termine delle fasi ribassiste, distribuzioni in prossimità del termine delle fasi rialziste )
2) solo operatività short ( ovvero accumuli in prossimità del termine delle fasi rialziste, distribuzioni in prossimità del termine delle fasi ribassiste ( ricoprendosi ed uscendo dalla posizioni short ). E' quello che avviene nella gestione degli Hedge.

A volte dico che per chiarirsi le idee conviene di più avere una visione scientifica come se si trattasse di uno studio approfondito dei fenomeni ondulatori: lunghezze, frequenze, ampiezze, d'onda sommatoria delle frequenze ecc. ( la teoria di Fourier spiega perfettamente molti fenomeni che osserviamo nell'andamento dei prezzi e nei cambiamenti di fase.. ) piuttosto che avere conoscenze di tipo economico ( peraltro nel mio caso estremamente scarse ).
Le performance di un sistema basato su questi concetti saranno tanto maggiori quanto le sue capacità di saper riconoscere diverse forme d'onda con tutte le possibili varianti saranno elevate.
Poichè le forme d'onda potrebbero essere in teoria infinite ( ma solo in teoria, poichè, si scopre che il comportamento ondulatorio dei prezzi su una determinata banda di frequenza presenta una gamma ridotta di casi con diverse ricorrenze simili ), con un sistema che sia in grado di generalizzare in modo adeguato, ad esempio partendo da una forma d'onda ricorrente ( template ) e tenendo sotto controllo tutte le possibili mutazioni che essa subisce durante il suo sviluppo, confrontandole con un database di mutazioni rilevate durante le fasi di apprendimento, oppotunamente classificate in famiglie ( per le mutazioni si tiene conto sia di dinamiche di prezzo che volumetriche che di limiti di volatilità ) si può arrivare a stabilire con buona approssimazione ( in alcuni casi anche di pochi cents. ) dove l'onda prezzo considerata cambierà di fase.. anche se ( ed in questo consiste la generalizzazione ) la forma dell'onda prezzo finale può risultare " sconosciuta " ovvero diversa/molto diversa da tutte le precedenti oscillazioni verificatesi nella stessa banda di frequenza ed ognuna di esse sarà diversa dall'altra.. e ciò vale anche e soprattutto per il futuro ovvero per le oscillazioni successive che non si sono ancora verificate.. Questo da un punto di vista predittivo è il massimo che si possa ottenere ed implica una capacità di generalizzazione ed interpretativa notevole. Qualcuno dirà " questa è utopia.. " ..non è detto.. i risultati tangibili protratti nel tempo dicono diversamente.. ( e ciò è possibile solo perchè l'overfitting è stato ridotto ai minimi termini ).
Giusto per fare un esempio molto semplice, nel caso le oscillazioni che si susseguono su una determinata banda di frequenza, rispettano una lunghezza ed un'ampiezza più o meno simile, il canale trend costruito sui punti di tangenza reali ( e non certo con Tline tracciate a " mano " come appare nel 99.9% dei chart di analisi tecnica pubblicati da sedicenti analisti ) permette di individuare con buona precisione i punti di inversione significativi ( origine dei cambiamenti di fase ) in prossimità dell' intersezione con le suddette Tline a patto che, un s/w basato su concetti interpretativi, dia il meglio di sè proprio in prossimità delle suddette intersezioni per stabilire se avverrà o meno l'inversione di tendenza..
La costruzione di un template " canale " fa anch'essa parte di una logica interpretativa per riconsocere ( qualora ci siano ) i limiti di ampiezza dell'oscillazione in atto..

Bene GiveMeLeverage, quanto detto sopra, è un'infarinatura di come questi sistemi " lavorano " direttamente sul movimento dei prezzi la cui unica dipendenza ( relazione diretta ) è di tipo ondulatorio.
Come vedi il mio è un approccio molto operativo con sperimentazioni e riscontri diretti sul " campo " dove non c'è spazio per i voli pindarici poichè il mercato ha il potere di sciogliere la cera..

Per quanto riguarda la seconda domanda, ovvero come vengono impiegati le sessione ed i periodi di apprendimento degli algoritimi lo vedremo in seguito poichè la faccenda è abbastanza complessa e si articola in due parti distinte.

Per il momento è tutto ( frase estremamente riduttiva solo per non dire che mi manca il tempo.. ma di concetti da sviluppare ce ne sarebbero tantissimi ).
 
Ultima modifica:

GiuliaP

The Dark Side
Io credo che i motivi che porteranno al successo dei VXST, come anche quelli che hanno portato al progressivo miglioramento dei VIX e delle relative opzioni, siano ben altri.

Del resto spread e liquidità dei book stanno migliorando di giorno in giorno (lo so, lo so, siamo ancora praticamente a zero)...

Ebbene si, ho toppato alla grande :titanic:

Le stanno addirittura ritirando! :sad:

E ora che me ne faccio di tutti i dati raccolti? :d:
 

Tolomeo

Perdo pelo, non il vizio
...

e/o addirittura eliminarli del tutto nelle fasi in cui il mercato presenti caratteristiche persistenti tali per cui gli algoritmi siano in grado di autoadattarsi al training set o ( per usare un termine più calzante alla nostra realtà ) ad un periodo in-sample gestito però in tempo reale ( stiamo infatti parlando di autoapprendimento e non di backtest ).
A volte mi piace stupire le persone che lavorano con me affermando che, l'unico sistema in grado di sconfiggere l'overfitting è il sistema in grado di " overfittare " se stesso...

Ciao E.N.,
la ventata di realismo che tenti di infilare in questo 3D e' da benedire, ma temo che non sarà molto gradita dai frequentatori abituali, molto più propensi alle schermaglie accademiche ("celodurismo" da professorini :D).
Io sono infinitamente meno professionale e specializzato di tutti voi, ma da principiante quale sono, cerco sempre di rubare qualche spunto dai discorsi che si tengono qui, al fine di tradurlo immediatamente in sw.

Se non ho capito male, questo tuo accenno ad algoritmi che
" ...siano in grado di autoadattarsi al training set o ( per usare un termine più calzante alla nostra realtà ) ad un periodo in-sample gestito però in tempo reale..."
e' attualmente al centro dei miei principali sforzi per migliorare i miei migliori TS automatici, ovvero quelli che producono equity molto belle quando sono ottimizzati nella fase attuale di mercato.

Questi TS, molti dei quali basati su cicli e su oscillazioni (dunque ONDE!), hanno la caratteristica di essere sempre molto efficenti e profittevoli su brevi periodi, con configurazioni ogni volta (piu' o meno) diverse, ma non riconoscono nessuna di queste configurazioni come valida e profittevole su periodi molto lunghi.

Sto ottenendo risultati positivi usando questi TS con "ottimizzazioni di giornata" ovvero ripetendo l'ottimizzazione su un periodo mobile, che ogni giorno scarta la sessione ( o l'onda) piu' vecchia e aggiunge la sessione (o l'onda) appena conclusa.

Per ora ottimizzo off-line, con la procedura inserita nella mia piattaforma, ma vorrei scrivere un "programmone" capace di ottimizzare automaticamente e in tempo reale, sulle ultime n sessioni, e capace quindi di adattare in continuo i parametri del TS.
Che ne pensi ?

...
...
N.b.: non fate caso alla data di iscrizione, nel forum della concorrenza ( FinanzaOnLine ) scrivo da anni e, compatibilmente con il poco tempo a disposizione ( infatti scrivo oggi che è sabato ), cerco di tenermi il più possibile informato sulle novità...

A questo punto vorrei leggere quello che hai scritto.
Forse non lo potrai fare qui, per non essere subito bannato, ma ti sarei grato se mi inviassi il tuo nick dell'altro forum, con un messaggio privato.
Grazie e ciao
 

Entità Numerica

Forumer attivo
Ciao E.N.,
la ventata di realismo che tenti di infilare in questo 3D e' da benedire, ma temo che non sarà molto gradita dai frequentatori abituali, molto più propensi alle schermaglie accademiche ("celodurismo" da professorini :D).
Io sono infinitamente meno professionale e specializzato di tutti voi, ma da principiante quale sono, cerco sempre di rubare qualche spunto dai discorsi che si tengono qui, al fine di tradurlo immediatamente in sw.

Se non ho capito male, questo tuo accenno ad algoritmi che
" ...siano in grado di autoadattarsi al training set o ( per usare un termine più calzante alla nostra realtà ) ad un periodo in-sample gestito però in tempo reale..."
e' attualmente al centro dei miei principali sforzi per migliorare i miei migliori TS automatici, ovvero quelli che producono equity molto belle quando sono ottimizzati nella fase attuale di mercato.

Questi TS, molti dei quali basati su cicli e su oscillazioni (dunque ONDE!), hanno la caratteristica di essere sempre molto efficenti e profittevoli su brevi periodi, con configurazioni ogni volta (piu' o meno) diverse, ma non riconoscono nessuna di queste configurazioni come valida e profittevole su periodi molto lunghi.

Sto ottenendo risultati positivi usando questi TS con "ottimizzazioni di giornata" ovvero ripetendo l'ottimizzazione su un periodo mobile, che ogni giorno scarta la sessione ( o l'onda) piu' vecchia e aggiunge la sessione (o l'onda) appena conclusa.

Per ora ottimizzo off-line, con la procedura inserita nella mia piattaforma, ma vorrei scrivere un "programmone" capace di ottimizzare automaticamente e in tempo reale, sulle ultime n sessioni, e capace quindi di adattare in continuo i parametri del TS.
Che ne pensi ?



A questo punto vorrei leggere quello che hai scritto.
Forse non lo potrai fare qui, per non essere subito bannato, ma ti sarei grato se mi inviassi il tuo nick dell'altro forum, con un messaggio privato.
Grazie e ciao

Mi ha fatto immensamente piacere trovare una persona che parli la mia stessa lingua e penso che tu sia sulla strada giusta.
Tieni conto dell'aspetto persistenza, ovvero che per un periodo più o meno lungo, le onde prezzo di una determinata frequenza mantengono in essere le stesse caratteristiche ( vedi ad esempio i canali trend ).
Quando la persistenza viene meno, ovvero quando le inversioni di tendenza decise dal s/w tendono a sfasarsi rispetto a quelle reali rilevate sull'onda prezzo stessa, è opportuno iniziare a cercare un modello di riferimento ( template ) diverso del quale il s/w è magari già a conoscenza sul quale la dinamica dei prezzi sta evolvendo.. ( intendo in termini comportamentali )
Il primo passo è comunque quello da te prospettato, ovvero implementare un sistema a parametrizzazione variabile ( in grado di variare automaticamente un set di parametri di Default inizialmente preimpostati ) basata su criteri di rilevazione/analisi del decadimento delle performance nei casi migliori e/o di rilevazione/analisi dell'errore nei casi peggiori.
Il s/w in pratica effettua una sorta di autocritica delle decisioni da lui prese sino all'istante attuale valutandole in base a ciò che è accaduto sull'oscillazione reale ( in particolare l'ultima poichè essa indica se la persistenza si mantiene tale ..o se sta venendo meno.. ).
Un buon metodo di generalizzazione, ( anche se ovviamente non è l'unico ), consiste proprio nell'analizzare in che termini avviene la sfasatura, ad esempio se il s/w tende ad arrivare troppo in anticipo conviene agire sui parametri che possono ritardare il signal generato da un particolare oscillatore ( rendendolo meno reattivo ), viceversa, se ritarda troppo, conviene agire sui parametri che possono anticipare il signal ( rendendo più reattivo l'oscillatore considerato ) ..oppure, in sistemi più sofisticati, andare ad analizzare le caratteritiche peculiari dell'onda prezzo attuale per stabilire se il template impiegato dal s/w è ancora in grado di assolvere il compito di " descrittore " oppure no ed in caso contrario, analizzando le differenze riscontrate rispetto al " descrittore " attualmente impiegato, selezionare un template diverso che si adatti ( e non viceversa ) alle attuali caratteristiche.. ..la dinamica dei prezzi ha sempre ragione l'unica cosa che possiamo fare ( ammesso di esserne in grado ) è adattarci!.
Se il s/w non è in grado di reagire in tempo " quasi " reale al cambiamento delle caratteristiche dell'oscillazione in essere ( ed è per questo motivo che l'onda prezzo dovrebbe essere costantemente analizzata nel suo evolversi come dicevamo ieri ), conviene interrompere immediatamente l'operatività ( stop loss/profit ..meglio il secondo caso ovviamente :D ) oppure, nel caso di sistemi quantitativi, " alleggerire " il più possibile l'esposizione ( distribuendo eventualmente i lotti/blocchi/pacchetti in gain o in pari ) e poi cambiare le caratteristiche interpretative/gestionali del sistema adattandole alla nuova realtà " ondulatoria " la quale si spera possa rimanere tale per un cospicuo nro di oscillazioni successive ( persistenza ).

Ti invierò in privato il link ma posso già anticiparti che se non vi saranno più i presupposti affinchè io possa continuare a scrivere nell'altra comunità mi trasferirò da questa parte..
 
Ultima modifica:

Users who are viewing this thread

Alto