Machine Learning: la mia esperienza - Pagina 28
Fine egemonia di Wall Street nel prossimo decennio, quattro motivi spingono a diversificare altrove
Wall Street nella prima settimana di marzo ha mostrato qualche segnale di cedimento, in particolare il Nasdaq che è arrivato ad azzerare i guadagni da inizio anno allontanandosi di molto …
Investire sull’economia circolare: BlackRock individua i 4 settori da tenere d’occhio nel 2021
La pandemia ha rischiato di frenare lo slancio mondiale a favore della sostenibilità. Tuttavia, l’Economia circolare è tornata al centro della scena e oggi sono soprattutto quattro i settori che …
Dall’AI alla neuroscienza: la Cina prepara battaglia con USA per dominare su sette ‘tecnologie di frontiera’
La rivalità Usa-Cina continua ad espandersi e trova terreno fertile nella cosiddetta “tecnologia di frontiera”. Il premier Li Keqiang ha annunciato che la Cina aumenterà la spesa per la ricerca …
Tutti gli articoli
Tutti gli articoli Tutte le notizie

  1. #271

    Data Registrazione
    Jan 2012
    Messaggi
    688
    Mentioned
    4 Post(s)
    Quoted
    147 Post(s)
    Potenza rep
    28023052
    Grande!

  2. #272

    Data Registrazione
    Sep 2008
    Messaggi
    8,899
    Mentioned
    12 Post(s)
    Quoted
    2348 Post(s)
    Potenza rep
    42949685
    Citazione Originariamente Scritto da amartya78 Visualizza Messaggio
    ............................ eppure i livelli di parametri che la mia mente stimava risultavano in una qualsiasi proiezione Forward migliori di qualsiasi altro set di parametri stimati dalla macchina dopo poderosi training set nel back testing. Era incredibile osservare che sebbene i set elaborati dalla macchina fossero almeno di un ordine di grandezza migliori dei miei nella specificazione dei dati passati quando si passava all'analisi forward, cioè nell'out sample quindi stiamo parlando di predizione, i miei parametri risultavano mediamente migliori del 30-35% rispetto a quelli della macchina.
    Quando ho aperto questo thread, cioè poco più di due anni fa, quello che avevo in mano, i risultati, le sensazioni erano quelle che descrivevo sopra. Risultati scadenti e delusioni.

    E ciò anche perchè negli approcci anche solo poco più deterministici dell'evoluzione dei prezzi i risultati invece da me ottenuti erano outstanding. Eppure il Machine Learning non funzionava o quanto meno no mi funzionava allora. E' anche vero che potevo benissimo fare a meno del Machine Learning per migliorare i returns e sopratutto il return aggiustato al rischio (e questa e la parte più importante su cui tornerò alla fine)

    Dicevamo del Machine Learning, ecco, alla fine mi ero trovato una quantità di algoritmi infinita, spesso algoritmi grezzi usati per esplorare ora quello ora questo. Insomma avevo una enorme libreria di "giocattoli" che risultava spesso non collegata. Insomma avevo un set di oggetti e poi ne avevo altri, avevo limiti negli inputs definiti scalarmente così che spesso dovevo intervenire nel codice per "divertirmi" con altre esplorazioni.

    Avendo le macchine che già lavoravano per me e quindi disponendo di tempo libero, decisi che mi sarei fatto un ultimo regalo. Cioè avrei riorganizzato quella serie infinita di algoritmi.

    Volevo creare una applicazione che fosse indipendente da tutti gli input, dai sottostanti, dalle asset class, dal singolo underlying alla combinazione di infiniti porfolios, dalle strategie, che utilizzasse il calcolo parallelo, che apprendesse da sola le risorse della macchina e le distribuisse, che avesse una super efficiente allocazione della RAM, che mi desse subito i risultati in maniera intellegibile, che li caricasse da sola su fogli di calcolo e sul DB subito per essere implementate live nel mercato, che potesse esplorare qualsiasi combinazione possibile di money management, che da sola facesse l'asseverazione dei risultati etc etc e che alla fine avesse una bella GUI dove potevo divertirmi a cambiare ora quello ora questo senza più intervenire nel codice. Iniziai questo percorso solo per gioco senza porre davvero nessuna speranza che potesse uscirmi qualcosa di davvero migliore rispetto ai risultati fin li ottenuti.

    Chiaramente per fare una cosa del genere le linee di codice da scrivere diventavano infinite e con altrettanti infiniti bugs eppure esisteva la possibilità di ridurre quelle linee di codice di un fattore di 10^2 (stiamo parlando cmq di migliaia e migliaia di linee di codice)utilizzando la tecnica dell'array coding. Sostanzialmente ogni singola variabile è definita come array. L'inconveniente è che la complessità anch'essa sale ma ritengo di un fattore leggermente minore.

    Insomma alla fine dopo un pò di mesi, anzi un bel pò di mesi, avevo una versione beta del mio "giocattolo", adesso potevo iniziare a divertirmi (presupposto minimo per fare machine learning è avere hardware adeguato e scrivere il codice nel senso di sfruttare l'hardware vedi calcolo parallelo, linguaggio CUDA da girare su gpu NVIDIA etc etc).

    Come da tradizione vuole è per puro caso che, una sera esplorando una delle ennesime strategie dopo altrettanti ennesimi fallimenti, trovo qualcosa di interessante. Avete presente quando ad ARECIBO del progetto SETI captarono il segnale "WOW"? Ecco più o meno quello fu il mio approccio (ripeto non stavo cercando qualcosa per il trading le macchine già facevano un lavoro eccellente, semplicemente non capivo come fosse così difficile trovare un segnale stabile nell'infinito rumore di fondo che sono i mercati finanziari e quindi semplicemente volevo appurare che da parte mia tutto ciò che potevo fare e probabilmente di più fosse stato fatto).
    Ma come ad ARECIBO e più in generale il metodo scientifico impone era necessario che quella cosa fosse ripetibile, che fosse indipendente dagli input, che fosse indipendente dal tempo etc etc. Così lanciai di nuovo la macchina e boom si apprendeva. E quando dico apprendeva mi riferisco al fatto che finalmente la macchina MI BATTEVA. Per ogni diversa combinazione di input e di tempo vi erano 99.9999....% di probabilità che la macchina batteva (FINALMENTE) l'intuizione umana. Dove le probabilità crescevano al numero di trainings set.

    Qua dentro moltissimi hanno posto l'accento a cosa dare in pasto la macchina chi i prezzi, chi i volumi, chi le vendite di auto, il meteo, i tranding topics, i parcheggi vuoti o pieni degli stabilimenti di automobili, un mix di tutte queste cose ma nessuno e quando dico nessuno intendo nessuno, neanche io, ha posto mai l'accento sul come analizzo i dati.

    Così è capitata l'assurda cosa che utilizzando gli stessi input, facendoli variare all'interno degli stessi range, lo stesso money management, facendo variare le stesse variabili, della stessa strategia ma in due modi diversi ottenevo risultati completamenti diversi.
    Nel modo chiamiamolo 1 ottenevo un specificazione della macchina ai dati nell'in sample semplicemente outstanding ma quando si trattava di andare a fare previsioni nell'out of sample queste erano mediocri e quasi sempre inferiori a quello che aveva trovato il mio intuito umano.
    Nel modo chiamiamolo 2 ottenevo una specificazione della macchina ai dati dell'in sample molto buona ma non così esagerata ma quello che più era importante è che nel forecast la macchina batteva il mio set definito ad intuito. E cosa ancora più importante i valori trovati erano tali che ai max (min) nell'in sample corrispondevano i max(min) nell'out of sample.

    Finalmente la macchina apprendeva dal passato eliminando il rumore di fondo trovava il segnale portante.

    Ad essere sinceri non ho ancora implementato i risultati del ML nel trading in quanto il modello matematico che sta lavorando lavora già molto bene di suo e prima di affidarmi ai risultati delle macchine preferisco stressarli. E qui veniamo ad un altro problema il metodo 1 aveva un costo computazionale elevatissimo ma il metodo 2 è davvero fuori portata dell'infrastruttura che ho a disposizione adesso e su cui sto lavorando per ampliarla. E ciò nonostante le tecniche di programmazione fatte in modo da abbassare enormemente i costi computazionali già implementate. Tecniche che utilizzano anche concetti matematico-statistici ad esempio il fatto che ogni estrazione casuale della macchina è considerata i.i.d. e quindi è possibile creare punti fissi per ogni training set e ripartire da quelli per non saturare la RAM (Siamo nell'ordine di Terabyte e di workstation multiprocessori del tipo ThreadRipper con 32 cpu e 64 core per ogni unità di calcolo, con gpu NVIDIA su cui implementare il CUDA che possono costare anche migliaia di $).

    In conclusione quello che posso quindi dire dalla mia esperienza è che si il ML può funzionare e per farlo funzionare servono approcci matematici non convenzionali, risorse software e hardware sofisticatissime le prime e estremamente potenti le altre, ma che comunque anche se il ML funziona questo può rappresentare non più del 5% del contributo alla performance netta. E' la classica ciliegina sulla torta nulla di più nulla di meno.

    Di seguito i grafici del primo modo e poi del secondo. (ovviamente i valori sono puramente indicativi e sono estrapolazioni di test fatti su porzioni molto limitate di tutti i fattori). Nelle ascisse sono indicati i training set, ogni training set può contenere svariati runs. Training set e runs dei rispettivi due metodi non sono comparabili tra di loro ma ciò è ininfluente ai fini di quanto ho scritto. (Ergo non è perchè un metodo ha fatto più runs e/o training set rispetto all'altro risulta migliore)

    Ovviamente il threshold da battere è la linea viola.

    Machine Learning: la mia esperienza-beginning.png

    Machine Learning: la mia esperienza-now.png
    Ultima modifica di amartya78; 16-01-21 alle 10:40

  3. #273

    Data Registrazione
    Sep 2008
    Messaggi
    8,899
    Mentioned
    12 Post(s)
    Quoted
    2348 Post(s)
    Potenza rep
    42949685
    Quest anno non è andata bene per i fondi che operano mediante AI, anche se poi Eureka Hedge dice poi così male non sono andati, anzi.

    Qui un articolo dell FT

    Subscribe to read | Financial Times

    Certamente sono andati benissimo molti fondi tradizionali.

    Rimane costante L anomalia ultra umana del Medallion che avrebbe fatto intorno al 60% con 10 billion di AUM, cioè 6 miliardi di net profit.

    Ora il punto è che passi per la performance che mi sto accorgendo è si stellare ma ancora nell ipotesi del probabile, quello che davvero non riesco a capire è come lo fanno su 10 billions ed anche quali sono i costi di transazione.

    Gli ultimi due punti sono quelli che sono da parte mia under investigation.

  4. #274

    Data Registrazione
    Dec 2012
    Messaggi
    374
    Mentioned
    0 Post(s)
    Quoted
    116 Post(s)
    Potenza rep
    12186984
    Citazione Originariamente Scritto da amartya78 Visualizza Messaggio
    Quando ho aperto questo thread, cioè poco più di due anni fa, quello che avevo in mano, i risultati, le sensazioni erano quelle che descrivevo sopra. Risultati scadenti e delusioni.

    E ciò anche perchè negli approcci anche solo poco più deterministici dell'evoluzione dei prezzi i risultati invece da me ottenuti erano outstanding. Eppure il Machine Learning non funzionava o quanto meno no mi funzionava allora. E' anche vero che potevo benissimo fare a meno del Machine Learning per migliorare i returns e sopratutto il return aggiustato al rischio (e questa e la parte più importante su cui tornerò alla fine)

    Dicevamo del Machine Learning, ecco, alla fine mi ero trovato una quantità di algoritmi infinita, spesso algoritmi grezzi usati per esplorare ora quello ora questo. Insomma avevo una enorme libreria di "giocattoli" che risultava spesso non collegata. Insomma avevo un set di oggetti e poi ne avevo altri, avevo limiti negli inputs definiti scalarmente così che spesso dovevo intervenire nel codice per "divertirmi" con altre esplorazioni.

    Avendo le macchine che già lavoravano per me e quindi disponendo di tempo libero, decisi che mi sarei fatto un ultimo regalo. Cioè avrei riorganizzato quella serie infinita di algoritmi.

    Volevo creare una applicazione che fosse indipendente da tutti gli input, dai sottostanti, dalle asset class, dal singolo underlying alla combinazione di infiniti porfolios, dalle strategie, che utilizzasse il calcolo parallelo, che apprendesse da sola le risorse della macchina e le distribuisse, che avesse una super efficiente allocazione della RAM, che mi desse subito i risultati in maniera intellegibile, che li caricasse da sola su fogli di calcolo e sul DB subito per essere implementate live nel mercato, che potesse esplorare qualsiasi combinazione possibile di money management, che da sola facesse l'asseverazione dei risultati etc etc e che alla fine avesse una bella GUI dove potevo divertirmi a cambiare ora quello ora questo senza più intervenire nel codice. Iniziai questo percorso solo per gioco senza porre davvero nessuna speranza che potesse uscirmi qualcosa di davvero migliore rispetto ai risultati fin li ottenuti.

    Chiaramente per fare una cosa del genere le linee di codice da scrivere diventavano infinite e con altrettanti infiniti bugs eppure esisteva la possibilità di ridurre quelle linee di codice di un fattore di 10^2 (stiamo parlando cmq di migliaia e migliaia di linee di codice)utilizzando la tecnica dell'array coding. Sostanzialmente ogni singola variabile è definita come array. L'inconveniente è che la complessità anch'essa sale ma ritengo di un fattore leggermente minore.

    Insomma alla fine dopo un pò di mesi, anzi un bel pò di mesi, avevo una versione beta del mio "giocattolo", adesso potevo iniziare a divertirmi (presupposto minimo per fare machine learning è avere hardware adeguato e scrivere il codice nel senso di sfruttare l'hardware vedi calcolo parallelo, linguaggio CUDA da girare su gpu NVIDIA etc etc).

    Come da tradizione vuole è per puro caso che, una sera esplorando una delle ennesime strategie dopo altrettanti ennesimi fallimenti, trovo qualcosa di interessante. Avete presente quando ad ARECIBO del progetto SETI captarono il segnale "WOW"? Ecco più o meno quello fu il mio approccio (ripeto non stavo cercando qualcosa per il trading le macchine già facevano un lavoro eccellente, semplicemente non capivo come fosse così difficile trovare un segnale stabile nell'infinito rumore di fondo che sono i mercati finanziari e quindi semplicemente volevo appurare che da parte mia tutto ciò che potevo fare e probabilmente di più fosse stato fatto).
    Ma come ad ARECIBO e più in generale il metodo scientifico impone era necessario che quella cosa fosse ripetibile, che fosse indipendente dagli input, che fosse indipendente dal tempo etc etc. Così lanciai di nuovo la macchina e boom si apprendeva. E quando dico apprendeva mi riferisco al fatto che finalmente la macchina MI BATTEVA. Per ogni diversa combinazione di input e di tempo vi erano 99.9999....% di probabilità che la macchina batteva (FINALMENTE) l'intuizione umana. Dove le probabilità crescevano al numero di trainings set.

    Qua dentro moltissimi hanno posto l'accento a cosa dare in pasto la macchina chi i prezzi, chi i volumi, chi le vendite di auto, il meteo, i tranding topics, i parcheggi vuoti o pieni degli stabilimenti di automobili, un mix di tutte queste cose ma nessuno e quando dico nessuno intendo nessuno, neanche io, ha posto mai l'accento sul come analizzo i dati.

    Così è capitata l'assurda cosa che utilizzando gli stessi input, facendoli variare all'interno degli stessi range, lo stesso money management, facendo variare le stesse variabili, della stessa strategia ma in due modi diversi ottenevo risultati completamenti diversi.
    Nel modo chiamiamolo 1 ottenevo un specificazione della macchina ai dati nell'in sample semplicemente outstanding ma quando si trattava di andare a fare previsioni nell'out of sample queste erano mediocri e quasi sempre inferiori a quello che aveva trovato il mio intuito umano.
    Nel modo chiamiamolo 2 ottenevo una specificazione della macchina ai dati dell'in sample molto buona ma non così esagerata ma quello che più era importante è che nel forecast la macchina batteva il mio set definito ad intuito. E cosa ancora più importante i valori trovati erano tali che ai max (min) nell'in sample corrispondevano i max(min) nell'out of sample.

    Finalmente la macchina apprendeva dal passato eliminando il rumore di fondo trovava il segnale portante.

    Ad essere sinceri non ho ancora implementato i risultati del ML nel trading in quanto il modello matematico che sta lavorando lavora già molto bene di suo e prima di affidarmi ai risultati delle macchine preferisco stressarli. E qui veniamo ad un altro problema il metodo 1 aveva un costo computazionale elevatissimo ma il metodo 2 è davvero fuori portata dell'infrastruttura che ho a disposizione adesso e su cui sto lavorando per ampliarla. E ciò nonostante le tecniche di programmazione fatte in modo da abbassare enormemente i costi computazionali già implementate. Tecniche che utilizzano anche concetti matematico-statistici ad esempio il fatto che ogni estrazione casuale della macchina è considerata i.i.d. e quindi è possibile creare punti fissi per ogni training set e ripartire da quelli per non saturare la RAM (Siamo nell'ordine di Terabyte e di workstation multiprocessori del tipo ThreadRipper con 32 cpu e 64 core per ogni unità di calcolo, con gpu NVIDIA su cui implementare il CUDA che possono costare anche migliaia di $).

    In conclusione quello che posso quindi dire dalla mia esperienza è che si il ML può funzionare e per farlo funzionare servono approcci matematici non convenzionali, risorse software e hardware sofisticatissime le prime e estremamente potenti le altre, ma che comunque anche se il ML funziona questo può rappresentare non più del 5% del contributo alla performance netta. E' la classica ciliegina sulla torta nulla di più nulla di meno.

    Di seguito i grafici del primo modo e poi del secondo. (ovviamente i valori sono puramente indicativi e sono estrapolazioni di test fatti su porzioni molto limitate di tutti i fattori). Nelle ascisse sono indicati i training set, ogni training set può contenere svariati runs. Training set e runs dei rispettivi due metodi non sono comparabili tra di loro ma ciò è ininfluente ai fini di quanto ho scritto. (Ergo non è perchè un metodo ha fatto più runs e/o training set rispetto all'altro risulta migliore)

    Ovviamente il threshold da battere è la linea viola.

    Machine Learning: la mia esperienza-beginning.png

    Machine Learning: la mia esperienza-now.png
    Ciao, forse nel caso in cui avevi ottenuto ottimi risultati in-sample ma non out of sample la rete era andata in overfitting?

    Non ho letto tutta la discussione fin dal principio, ma ho qualche domanda:
    1) Che tipo di reti usi? Multilevel perceptron?
    2) Indipendentemente dal tipo di rete, quanti input e quanti output? Quanti layers?
    3) Quale funzione di attivazione utilizzi per la rete?
    Giusto per inquadrare meglio il lavoro che stai facendo.
    Poi concordo con te che e' equalmente importante come presentare i dati alla rete.

  5. #275
    L'avatar di Scalpo
    Data Registrazione
    Dec 2000
    Messaggi
    2,657
    Mentioned
    8 Post(s)
    Quoted
    123 Post(s)
    Potenza rep
    34991126
    Citazione Originariamente Scritto da amartya78 Visualizza Messaggio
    Qua dentro moltissimi hanno posto l'accento a cosa dare in pasto la macchina chi i prezzi, chi i volumi, chi le vendite di auto, il meteo, i tranding topics, i parcheggi vuoti o pieni degli stabilimenti di automobili, un mix di tutte queste cose ma nessuno e quando dico nessuno intendo nessuno, neanche io, ha posto mai l'accento sul come analizzo i dati.
    Popolarmente: raccogliamo informazioni dalle ultime “candele” di prezzi, le diamo in pasto ad una rete neurale in apprendimento profondo, e le usiamo per prevedere le candele successive. Oppure, sempre popolarmente: cerchiamo di prevedere il segno del rendimento della barra successiva.
    Ancor più popolarmente siamo spesso interessati a prevedere direttamente il prezzo, 1 candela avanti.
    Ma a prevedere una differenza di prezzo rispetto a un orizzonte di previsione più lungo, (ad. es 3 barre) , e magari per lo stesso giorno della prossima settimana no?...
    Così come -credo- siano ben pochi a pensare di poter prevedere qualcosa come la prossima gamba di un indicatore Zigzag. Più ragionevole ancora i forecast sugli indicatori macro (cosa per la quale l’econometria è stata tra l’altro concepita e vi trova la sua naturale ragion d’essere) uno su tutti i famigerati Non Farm Payrol ed il suo impatto sui prezzi n periodi avanti. O ancora: la probabilità di un crollo del mercato domani. La conseguente strategia d’utilizzo in questi ultimi casi non per forza di cose deve essere attuata con trading automatico, anzi, meglio una strategia con opzioni .
    Se si scandaglia a fondo il web, mi sembra che tra gli specialisti, si sia formata l’opinione che la previsione diretta dei prezzi (o suoi immediati derivati matematicamente e opportunamente “schiacciati” in funzione dell’architettura di ML che stiamo adoperando), inerenti attività mobiliari quotate in continua, sia la peste nera della modellistica in generale. Spesso è più facile da prevedere qualcosa di completamente diverso dai prezzi, meglio ciò che li influenza, credo sia questo il tuo riferimento al come analizzare i dati , o sbaglio ?
    Ultima modifica di Scalpo; 16-01-21 alle 21:45

  6. #276

    Data Registrazione
    Sep 2008
    Messaggi
    8,899
    Mentioned
    12 Post(s)
    Quoted
    2348 Post(s)
    Potenza rep
    42949685
    Osservate i grafici.

    Abbiamo gli stessi input, lo stesso tutto, tanto è vero che in steady state cioè con i miei valori delle variabili ottengo gli stessi risultate per due time frame (in sample and out of sample) che poi in steady state si ha che in sample = out of sample.

    Detto questo adesso accade la singolarità. Chiedo alla macchina di trovare valori migliori delle singole variabili del modello matematico tali da massimizzare il risultato dell equazione. Attenzione l equazione è la stessa come dicevo. Così come le variabili etc etc. Nel metodo 1 già al primo training set la macchina trova valori ottimi tali da portatore il valore dell equazione ben sopra 40 mentre il mio intuito si era fermato sotto 10. Dovrei aspettarmi un forecast molto migliore del mio ed invece nessun miglioramento, neanche in corrispondenza del max risultato dei vari training set il forecast migliora. La regressione lineare da come risultato una linda con una slope pari a zero. I risultati dicono che non c’è niente nel passato che possa darci una lettura del futuro siamo in presenza di una random walk.
    Nel metodo 2 accade quello che ci si aspetterebbe dal ML, la macchina apprende e migliora i risultati ed a quei risultati corrisponde un miglioramento del forecast. Bingo.

    Stavolta la tendenza non ha slope uguale a zero ma è positiva.

    Cosa ho in mano, in mano ho un modello matematico con n variabili semplicemente cerco di trovare i valori del modello che massimizzano il risultati dell equazione

  7. #277
    L'avatar di Federico Juvara
    Data Registrazione
    Jan 2021
    Messaggi
    48
    Mentioned
    2 Post(s)
    Quoted
    32 Post(s)
    Potenza rep
    1740802
    Buonasera a tutti, se mi è consentito vorrei fare un piccolo appello agli esperti del forum e del topic in particolare, ovviamente dopo essermi presentato.
    Sono Federico, un ragazzo di 35 anni appassionato di finanza da almeno 10 e questo post è frutto solo ed esclusivamente di disperazione. Lo faccio qua perchè questo topic è un faro assoluto e mi ci sto aggrappando.
    Ciclicamente mi dedico allo studio della materia, tempo permettendo, ma non ho mai completato il percorso. Ho iniziato come tutti: manuali di analisi tecnica, paper trading, soldi persi, soldi vinti, guide, corsi, certificazioni. Logicamente sono arrivato al punti di credere che l'analisi tecnica serva a poco e solo due approcci funzionino: investimenti a lungo termine (non me lo posso permettere) e sistemi automatici su base statistica o di machine learning. L'HFT manco lo calcolo, per i retail è fuori portata.
    Da almeno un anno studio il machine learning con applicazione finanziaria con lo scopo di creare un sistema automatico profittevole. Per farlo, avendola presa come missione, ho rischiato di far finire una relazione di 10 anni e di buttare via il mio lavoro. Nessuno, a parte mia madre, crede che ce la faccia. A dire il vero nemmeno io.
    Ho studiato decine di manuali in inglese, seguito centinaia di corsi online, da Youtube al MIT. Mi sono, con molto sforzo avendo una formazione umanistica ed essendo rimasto alle tabelline per quanto concerne la matematica, creato una basilare formazione scientifica. Dall'analisi all'algebra lineare passando per la statistica bayesiana e non.
    Tolta la parte sul deep learning che francamente ora mi fonderebbe il cervello, ho studiato ogni forma possibile di tecnica di machine learning.
    Ho imparato a programmare con Python e a collegarmi via API con i broker. Tutto sempre in demo, non ho nessuna intenzione di andare live fino ad un backtest decente.
    Trado solo su Forex, CFD, cripto sporadicamente, azionario raramente. Per questioni meramente di budget.
    Arrivo al punto scusandomi per la prolissità: ho un sistema di trading che seleziona dati storici, fa data wrangling, feature selection, feature engineering e poi allena un modello di XGBoost Classification. Il target label è ovviamente binario. L'obiettivo è quello più banale, predire il return della prossima barra (5 minuti, 1 ora, 4 ore o giornaliera). Se mi da 1 vai long, -1 short. La parte di risk management e position sizing non la menziono, al momento mi interessa un modello profittevole con buone accuracy e recall.
    Come il 99% dei casi ottimo in train, discreto in test, sostanzialmente random e da buttare in live.
    Sono stato mesi a studiarmi la selezione delle features, altri mesi a trovare un target sensato e valido. Niente.
    Ho provato tutti i sistemi di cross validation, gridsearch per fare il tuning dei parametri, diversi split dei dati, correzione del bilanciamento delle classi, niente.
    Mi sono studiato il testo, a detta di molti rivoluzionario, di Lopez de Prado. Ho cercato di implementare alcune sue tecniche sulle time bars, visto che lui parte dai tick data (insostenibili per costi e capacità computazionale). Dal suo libro ho provato ad usare la fractional differentiation, il CUSUM filter per selezionare samples validi e la purged cross validation.
    Ora il mio processo è questo: dati storici (tra i 2 anni sui 5 minuti e i 10 anni per le giornaliere), aggiustamento del time index. Applico all'intero dataset la fractional differentiation (tra 0.3 e 0.5), applico il cusum filter all'intero dataset. Poi aggiungo un centinaio di features tipo: dollar value, vari ratio, indicatori tecnici, return, lagged return, ratio dei return, ratio sul volume, linear regression, low pass filters, volatilità, rolling means ecc. Poi calcolo il target label che è la chiusura della barra dopo. Però uso la chiusura con applicato il frac diff. Essendo sempre positivo uso questa logica: se la prossima chiusura è maggiore di quella attuale è classe 1, altrimenti -1.
    Poi faccio train e test split con sklearn e infine applico il modello di XGBoost. Già così il test gira sui 65/70% di accuratezza. Ottimizzo i parametri con gridsearch e salvo il modello.
    Il modello salvato lo sbatto in una funzione che carica le barre storiche da un noto broker e che ad ogni nuova barra chiama una funzione che ricrea tutti i feature del modello sui dati live. Quindi se il train/test ha 105 features li ricostruisco sulle barre aggiornate ad ogni avvio funzione, frac diff compreso. Il cusum invece no, perchè eliminando la continuità della serie storica e selezionando solo eventi non saprei come gestire una predizione su barre non recenti. Ovviamente estrapolo l'ultima barra e ci applico la predizione di classe e di probabilità di appartenenza (quella che servirà anche per settare l'expected return e quindi la percentuale di rischio). Altra funzione applica il risk management ecc. andando poi lungo o corto. Non funziona, ovviamente.
    Sto uscendo letteralmente di testa. Le mie domande sono queste, se avete avuto la pazienza di leggere e se siete mossi da compassione :
    - che voi sappiate è corretto applicare la fractional differentiation a tutto il dataset prima dello split o rischio look-ahead bias e overfitting?
    - stessa domanda però sul CUSUM filter. Anche perchè de Prado lo usa in un sistema del tutto diverso e non saprei come gestirlo. Io lo sto applicando a tutto il dataset prima dello split, ma ho la certezza sia errato. Non a caso se lo applico separatamente a train data e test data l'accuratezza crolla.
    - ha senso usare il prezzo di chiusura con applicata la fractional differentiation invece del classico return, come target label?
    - ha senso calcolare il return e applicarci sopra la frac diff e usarlo come target label? Non ho idea di che golem abbia creato ma funziona.
    - altra cosa che ho notato è la scarsa sensibilità ai cambi di direzione. Esempio: 10 barre da 1 ora, real time 6 long e 4 short, le probabilità predette mi danno 10 long. Eppure
    le classi sono bilanciate. Ci sono sistemi per aumentare la sensibilità?

    Detto tutto ciò, e chiedo davvero scusa a moderatori e partecipanti, vi chiedo con il cuore in mano di darmi una mano. Non voglio segreti, non voglio le vostre tecniche, non voglio rivelazioni. Conosco il "codice cavalleresco" del trading per cui il proprio lavoro e i sistemi funzionanti non si svelano a nessuno, figuriamoci gli sconosciuti.
    Vi chiedo solo di aiutare una ragazzo che ci ha buttato tempo, famiglia e passione a prendere la strada giusta (qualora esista) e a risolvere tanti dubbi.
    Oltre alle domande tecniche precedenti vorrei solo sapere: ci sono target labels efficaci così frullo gli altri? Cioè cosa predico, che segnali voglio ottenere?
    Ci sono features veramente valide da dare in pasto al modello senza che perda tempo con 200 indicatori inutili?
    Il machine learning funziona o posso buttare nel cestino via anni di lacrime e sangue? Per saperlo, almeno mi rilasso e chiudo una fase.
    Grazie davvero a tutti, è un post davvero interessante con dibattiti di spessore tra esperti serissimi. Spero di non essere stato fuori luogo e spero di non essere sembrato saccente nell'utilizzo di tanti inglesismi, è solo perchè avendo studiato tutto in inglese mi risultano più immediati.

    P.S. amartya78 mi ha ispirato a chiedere un sostegno, mi ha ridato una piccola speranza dopo settimane di sconforto. Ho letto anche i consigli di un altro utente che faceva riferimento a dei blog che già seguo. Molto interessanti, solo che usano R e C che sono meno intuitivi di Python.

  8. #278

    Data Registrazione
    Dec 2012
    Messaggi
    374
    Mentioned
    0 Post(s)
    Quoted
    116 Post(s)
    Potenza rep
    12186984
    Citazione Originariamente Scritto da Federico Juvara Visualizza Messaggio
    Buonasera a tutti, se mi è consentito vorrei fare un piccolo appello agli esperti del forum e del topic in particolare, ovviamente dopo essermi presentato.
    Sono Federico, un ragazzo di 35 anni appassionato di finanza da almeno 10 e questo post è frutto solo ed esclusivamente di disperazione. Lo faccio qua perchè questo topic è un faro assoluto e mi ci sto aggrappando.
    Ciclicamente mi dedico allo studio della materia, tempo permettendo, ma non ho mai completato il percorso. Ho iniziato come tutti: manuali di analisi tecnica, paper trading, soldi persi, soldi vinti, guide, corsi, certificazioni. Logicamente sono arrivato al punti di credere che l'analisi tecnica serva a poco e solo due approcci funzionino: investimenti a lungo termine (non me lo posso permettere) e sistemi automatici su base statistica o di machine learning. L'HFT manco lo calcolo, per i retail è fuori portata.
    Da almeno un anno studio il machine learning con applicazione finanziaria con lo scopo di creare un sistema automatico profittevole. Per farlo, avendola presa come missione, ho rischiato di far finire una relazione di 10 anni e di buttare via il mio lavoro. Nessuno, a parte mia madre, crede che ce la faccia. A dire il vero nemmeno io.
    Ho studiato decine di manuali in inglese, seguito centinaia di corsi online, da Youtube al MIT. Mi sono, con molto sforzo avendo una formazione umanistica ed essendo rimasto alle tabelline per quanto concerne la matematica, creato una basilare formazione scientifica. Dall'analisi all'algebra lineare passando per la statistica bayesiana e non.
    Tolta la parte sul deep learning che francamente ora mi fonderebbe il cervello, ho studiato ogni forma possibile di tecnica di machine learning.
    Ho imparato a programmare con Python e a collegarmi via API con i broker. Tutto sempre in demo, non ho nessuna intenzione di andare live fino ad un backtest decente.
    Trado solo su Forex, CFD, cripto sporadicamente, azionario raramente. Per questioni meramente di budget.
    Arrivo al punto scusandomi per la prolissità: ho un sistema di trading che seleziona dati storici, fa data wrangling, feature selection, feature engineering e poi allena un modello di XGBoost Classification. Il target label è ovviamente binario. L'obiettivo è quello più banale, predire il return della prossima barra (5 minuti, 1 ora, 4 ore o giornaliera). Se mi da 1 vai long, -1 short. La parte di risk management e position sizing non la menziono, al momento mi interessa un modello profittevole con buone accuracy e recall.
    Come il 99% dei casi ottimo in train, discreto in test, sostanzialmente random e da buttare in live.
    Sono stato mesi a studiarmi la selezione delle features, altri mesi a trovare un target sensato e valido. Niente.
    Ho provato tutti i sistemi di cross validation, gridsearch per fare il tuning dei parametri, diversi split dei dati, correzione del bilanciamento delle classi, niente.
    Mi sono studiato il testo, a detta di molti rivoluzionario, di Lopez de Prado. Ho cercato di implementare alcune sue tecniche sulle time bars, visto che lui parte dai tick data (insostenibili per costi e capacità computazionale). Dal suo libro ho provato ad usare la fractional differentiation, il CUSUM filter per selezionare samples validi e la purged cross validation.
    Ora il mio processo è questo: dati storici (tra i 2 anni sui 5 minuti e i 10 anni per le giornaliere), aggiustamento del time index. Applico all'intero dataset la fractional differentiation (tra 0.3 e 0.5), applico il cusum filter all'intero dataset. Poi aggiungo un centinaio di features tipo: dollar value, vari ratio, indicatori tecnici, return, lagged return, ratio dei return, ratio sul volume, linear regression, low pass filters, volatilità, rolling means ecc. Poi calcolo il target label che è la chiusura della barra dopo. Però uso la chiusura con applicato il frac diff. Essendo sempre positivo uso questa logica: se la prossima chiusura è maggiore di quella attuale è classe 1, altrimenti -1.
    Poi faccio train e test split con sklearn e infine applico il modello di XGBoost. Già così il test gira sui 65/70% di accuratezza. Ottimizzo i parametri con gridsearch e salvo il modello.
    Il modello salvato lo sbatto in una funzione che carica le barre storiche da un noto broker e che ad ogni nuova barra chiama una funzione che ricrea tutti i feature del modello sui dati live. Quindi se il train/test ha 105 features li ricostruisco sulle barre aggiornate ad ogni avvio funzione, frac diff compreso. Il cusum invece no, perchè eliminando la continuità della serie storica e selezionando solo eventi non saprei come gestire una predizione su barre non recenti. Ovviamente estrapolo l'ultima barra e ci applico la predizione di classe e di probabilità di appartenenza (quella che servirà anche per settare l'expected return e quindi la percentuale di rischio). Altra funzione applica il risk management ecc. andando poi lungo o corto. Non funziona, ovviamente.
    Sto uscendo letteralmente di testa. Le mie domande sono queste, se avete avuto la pazienza di leggere e se siete mossi da compassione :
    - che voi sappiate è corretto applicare la fractional differentiation a tutto il dataset prima dello split o rischio look-ahead bias e overfitting?
    - stessa domanda però sul CUSUM filter. Anche perchè de Prado lo usa in un sistema del tutto diverso e non saprei come gestirlo. Io lo sto applicando a tutto il dataset prima dello split, ma ho la certezza sia errato. Non a caso se lo applico separatamente a train data e test data l'accuratezza crolla.
    - ha senso usare il prezzo di chiusura con applicata la fractional differentiation invece del classico return, come target label?
    - ha senso calcolare il return e applicarci sopra la frac diff e usarlo come target label? Non ho idea di che golem abbia creato ma funziona.
    - altra cosa che ho notato è la scarsa sensibilità ai cambi di direzione. Esempio: 10 barre da 1 ora, real time 6 long e 4 short, le probabilità predette mi danno 10 long. Eppure
    le classi sono bilanciate. Ci sono sistemi per aumentare la sensibilità?

    Detto tutto ciò, e chiedo davvero scusa a moderatori e partecipanti, vi chiedo con il cuore in mano di darmi una mano. Non voglio segreti, non voglio le vostre tecniche, non voglio rivelazioni. Conosco il "codice cavalleresco" del trading per cui il proprio lavoro e i sistemi funzionanti non si svelano a nessuno, figuriamoci gli sconosciuti.
    Vi chiedo solo di aiutare una ragazzo che ci ha buttato tempo, famiglia e passione a prendere la strada giusta (qualora esista) e a risolvere tanti dubbi.
    Oltre alle domande tecniche precedenti vorrei solo sapere: ci sono target labels efficaci così frullo gli altri? Cioè cosa predico, che segnali voglio ottenere?
    Ci sono features veramente valide da dare in pasto al modello senza che perda tempo con 200 indicatori inutili?
    Il machine learning funziona o posso buttare nel cestino via anni di lacrime e sangue? Per saperlo, almeno mi rilasso e chiudo una fase.
    Grazie davvero a tutti, è un post davvero interessante con dibattiti di spessore tra esperti serissimi. Spero di non essere stato fuori luogo e spero di non essere sembrato saccente nell'utilizzo di tanti inglesismi, è solo perchè avendo studiato tutto in inglese mi risultano più immediati.

    P.S. amartya78 mi ha ispirato a chiedere un sostegno, mi ha ridato una piccola speranza dopo settimane di sconforto. Ho letto anche i consigli di un altro utente che faceva riferimento a dei blog che già seguo. Molto interessanti, solo che usano R e C che sono meno intuitivi di Python.
    Se ti interessa, il mio parere e':
    mai mettere in secondo piano famiglia/relazioni per il trading
    non lasciare il tuo lavoro
    dedica alle tue ricerche il tempo libero, senza sottrarre tempo alla famiglia/compagna
    vedilo come un gioco, perche' niente garantisce che un sistema funzionante oggi funzionera' anche domani
    non esistono formule segrete di successo.

  9. #279

    Data Registrazione
    Sep 2008
    Messaggi
    8,899
    Mentioned
    12 Post(s)
    Quoted
    2348 Post(s)
    Potenza rep
    42949685
    Se posso permettermi di dare un consiglio, ma davvero se posso, visto che la materia è scivolosa anche per i più navigati, è che nella mia esperienza L errore più grave ed anche il più diffuso è il fatto che non si tiene conto dei gradi di libertà.

    Una rete neurale consuma tanti gradi di libertà, faccio un esempio se hai una regola allora stai consumando un grado di libertà, se hai una regressione lineare allora ne stai consumando 2, se hai un polinomio ne consumi tanti quanti sono i monomi, se hai una media mobile a 10 ne consumi 10, se ne hai una a 200 ne consumi 200, se hai 100 nodi e una media mobile a 200 ne consumi 300 e via dicendo. Se hai una media a 3 ed una a 10 ne consumi sempre 10.

    Ora, credetemi, ho visto modelli implementati live che consumavano più dati di quelli che erano disponibili. Capisci bene che L unico esito può essere solo la rovina.

    Ora dico questo perché il concetto di gradi di libertà è intimamente legato a quello dell overfitting, ovvero sono i pochi gradi di libertà che originano (il più delle volte) L overfitting.

    Ma il concetto di gradi di libertà lo hai appreso solo se sei stato uno studente perché è uno di quelli argomenti che sei obbligato a studiare e che non ti piace (almeno a me non piaceva). Ritengo che la funzione più importante della scuola sia quella che ti obbliga a studiare un programma intero indipendentemente se l argomento ti piace o meno.

    Una delle spiegazioni che mi sono dato per il fatto che il ML ora mi funziona con il metodo 2 è che ritengo (sto facendo una investigazione) che i gradi di libertà consumati siano passati dall essere meno dell 1% ad essere meno dello 0.01%.

    Poi ripeto io sto parlando di ML cioè il topic del thread, ma se invece la domanda è il trading quantitativo e sistematico funziona allora la mia più sincera opinione è che il ML in seno a questo settore conti meno del 5%. Per capirci quest anno molto fondi quantitativi basati su AI hanno perso. In sintesi se supponiamo che il Medalliom sia il miglior fondo quantitativo al mondo allora io sono sicuro che il Medallion fa quelle performance solo e soltanto perché dietro vi è definita in algoritmi una costruione quantitativa basata sulla pia ampia letteratura di concetti tradizionali di matematica e statistica. Per me la dentro il ML e’ meno dell 1%. E lo dico proprio perché mi sono accorto che finora ho fatto benissimo a meno del ML migliorando i ritorni ed il rischio semplicemente ampliando L inserimento di concetti matematici e statistici nel modello.

    Basarsi solo su ML per andare live dal mio punto di vista è folle.

    Io intendo il ML come L Ottimizzazione dell elemento forecast di un modello di gestione che tiene in seno qualsiasi aspetto e di cui il forecast è solo uno degli elementi. È un processo di apprendimento lungo che passa per tentativi ed errori.

    La Rentec ha speso oltre 10 anni per vincere, il più grande scommettitore al mondo che ha accumulato una fortuna di oltre 1 billions ed adesso bannato da tutti i casinò del mondo ha speso più di 10 anni per perfezionare i modelli.

    Ed è anche per questo che sono qui a parlarne.

    Semmai adesso sono più interessato all executions degli ordini come minimizzare lo spread, come gestire parecchi parecchi soldi mantenendo efficiente L operatività dei modelli. Ecco queste sono le cose su cui sto lavorando adesso. Il ML dal mio punto di vista è una Ottimizzazione che può aspettare ad essere implementata proprio perché ho capito che il salto è venuto dall implementare tanti altri concetti matematici e statistici più tradizionali ma in definitiva molto molto più robusti.

  10. #280

    Data Registrazione
    Sep 2008
    Messaggi
    8,899
    Mentioned
    12 Post(s)
    Quoted
    2348 Post(s)
    Potenza rep
    42949685
    Per Federico,


    allora come già ho detto più volte dire se il ML funziona o meno non è la domanda da fare, a mio avviso, perché lo ritengo quasi ininfluente ai fini del return.

    La domanda da porsi è posso basare il mio approccio sul trading solo sul ML, solo sul ML allora la mia risposta è un secco NO. Io non lo farei mai.

    Ma questa e soltanto la mia opinione.

    PS
    Non sacrificare mai la tua famiglia ed il lavoro che ti da il pane, e sai perché, beh perché non serve anzi.
    Io ho raggiunto i miei risultati migliori proprio quando passavo più tempo con la famiglia o guadagnavo di più facendo altro.

Accedi