Machine Learning: la mia esperienza

Il punto principale è che il ML a cui fai riferimento in qualsiasi ambito lo si usi è un modo per far fare a una macchina ciò che già faceva prima un essere umano esperto. Tutto qua.

Siccome non siamo in grado di programmare l'esperienza, usiamo dei modelli matematici per mapparla dai dati alle macchine e agli algoritmi.

Questo presuppone un elemento fondamentale che c'è in qualsiasi settore meno che nel trading: qualcuno che sappia cosa fare e da cui sia possibile copiare. Qui servirebbe il ML: regressioni, classificazioni, tabelle di policy ottimali, analisi del linguaggio, computer vision... Tutto presuppone che ci sia un essere umano che è stato capace di imparare cosa fare e come farlo per creare valore, che tu puoi osservare e da cui la macchina impara.

Il problema nel nostro ambito è che quelle persone semplicemente non esistono: se ci fosse qualcuno che ti spiega come fare soldi sui mercati, il paradosso è che nemmeno ti servirebbe il ML.

Ovvero: quando capisci quali dati guardare, come e in che contesto, non hai nemmeno più bisogno di una rete neurale profonda: bastano poche regolette del pollice.

Per rispondere alla tua domanda: non cerchi anomalie frullando a caso, perché quello è il modo migliore per avere illusioni ottiche facendo modellare alla macchina solo rumore.

Viceversa, formuli una teoria che stia in piedi perché i mercati sono fatti da un esercito di squilibrati, frizioni e vincoli esogeni; poi raccogli i dati e cerchi di capire se ci hai visto giusto; solo a quel punto - se senti il bisogno di fare qualche passaggio analitico in tempi non praticabili per l'essere umano - ti rivolgi all'algoritmo di ML.

Alla fine sono ripetitivo ma il tutto si riduce sempre a intuire (o ipotizzare) alle spalle di chi stai facendo soldi e perché.

Quando ti lanci a provare un algoritmo senza avere abbozzato una risposta a questa domanda stai già sicuramente sbagliando approccio.
 
Ultima modifica:
Per rispondere alla tua domanda: non cerchi anomalie frullando a caso, perché quello è il modo migliore per avere illusioni ottiche facendo modellare alla macchina solo rumore.

Viceversa, formuli una teoria che stia in piedi perché i mercati sono fatti da un esercito di squilibrati, frizioni e vincoli esogeni; poi raccogli i dati e cerchi di capire se sta ci hai visto giusto; solo a quel punto - se senti il bisogno di fare qualche passaggio analitico in tempi non praticabili per l'essere umano - ti rivolgi all'algoritmo di ML.

Alla fine sono ripetitivo ma il tutto si riduce sempre a intuire (o ipotizzare) alle spalle di chi stai facendo soldi e perché.

Quando ti lanci a provare un algoritmo senza avere abbozzato una risposta a questa domanda stai già sicuramente sbagliando approccio.

L approccio qui sopra descritto è il mio approccio. Prima si formula una teoria la si prova a parametri costanti, la si può provare facendo variare i parametri seguendo le regole ferree per non incorrere nell Overfitting

Ma quello che ritengo sia più importante è di non concentrarsi solo sul momentum entrata ed uscita ma anche sull asset management ed il rischio.

Un modello quantitativo efficace non è altro che L Unione sincronizzata di svariati algoritmi che si occupano cooperando di tutte le fasi in cui ogni singolo dollaro viene movimentato a cui il ML può (o non può) essere applicato.

Se uno inizia a ragionare così globalmente i 50.000 linee di codice le brucia velocemente.
 
  • Like
Reazioni: Mei
Il punto principale è che il ML a cui fai riferimento in qualsiasi ambito lo si usi è un modo per far fare a una macchina ciò che già faceva prima un essere umano esperto. Tutto qua.

Siccome non siamo in grado di programmare l'esperienza, usiamo dei modelli matematici per mapparla dai dati alle macchine e agli algoritmi.

Questo presuppone un elemento fondamentale che c'è in qualsiasi settore meno che nel trading: qualcuno che sappia cosa fare e da cui sia possibile copiare. Qui servirebbe il ML: regressioni, classificazioni, tabelle di policy ottimali, analisi del linguaggio, computer vision... Tutto presuppone che ci sia un essere umano che è stato capace di imparare cosa fare e come farlo per creare valore, che tu puoi osservare e da cui la macchina impara.

Il problema nel nostro ambito è che quelle persone semplicemente non esistono: se ci fosse qualcuno che ti spiega come fare soldi sui mercati, il paradosso è che nemmeno ti servirebbe il ML.

Ovvero: quando capisci quali dati guardare, come e in che contesto, non hai nemmeno più bisogno di una rete neurale profonda: bastano poche regolette del pollice.

Per rispondere alla tua domanda: non cerchi anomalie frullando a caso, perché quello è il modo migliore per avere illusioni ottiche facendo modellare alla macchina solo rumore.

Viceversa, formuli una teoria che stia in piedi perché i mercati sono fatti da un esercito di squilibrati, frizioni e vincoli esogeni; poi raccogli i dati e cerchi di capire se ci hai visto giusto; solo a quel punto - se senti il bisogno di fare qualche passaggio analitico in tempi non praticabili per l'essere umano - ti rivolgi all'algoritmo di ML.

Alla fine sono ripetitivo ma il tutto si riduce sempre a intuire (o ipotizzare) alle spalle di chi stai facendo soldi e perché.

Quando ti lanci a provare un algoritmo senza avere abbozzato una risposta a questa domanda stai già sicuramente sbagliando approccio.
Ciao Cren, grazie della risposta.
Logicamente con "frullare" intendevo semplicemente dare in pasto al modello di ML i dati scelti per farli processare, non infilare cose a caso.
E' pur vero che l'approccio forse più comune e pregiudiziale al ML, che poi lo ammetto è sempre stato anche il mio, sia quello di usarlo come scatola delle soluzioni.
Nel senso di fargli fare quello che io non riuscirei a fare, cercare e trovare risposte nella mole dei dati improcessabili per l'occhio umano. Gli dai dati e lui ci trova qualcosa, non si sa cosa ma ti fidi. E' la famosa black box.
Eppure il controsenso di questo dovrebbe essere ovvio ma non lo è. Se basta "frullare" e prendersi i frutti lo fanno tutti, aspettano e si ritrovano la soluzione.
Viceversa sapere dove e cosa cercare e farsi aiutare nella ricerca presuppone logica, competenza e comprensione dei mercati. Va da sè che, come dici te, a quel punto basti te col tasto del mouse e il turbo mega learning diventa un cannone in una vetreria.
Solo che rimangono comunque punti oscuri, soprattutto nell'approccio di Amartya che viaggia su altri livelli di competenze matematiche che non posso sfruttare.
Esempio: sono convinto che ci sia una anomalia ciclica il lunedi pomeriggio alla chiusura del Nasdaq, l'ho notata e voglio quantificarla verificando la consistenza e il potenziale.
Uso un modello statistico (non so, cerco distribuzioni o calcolo volatilità con test vari ecc.)? Formulo, come fa Amartya con un approccio da teorico, un modello del tutto nuovo sulla lavagna piena di formule? Rimedio features attinenti a quel problema (che so dati giornalieri detemporalizzati, volatilità in chiusura ecc.) e li uso come carburante di una rete neurale che poi macina e trova pattern significativi senza dirmi perchè?
Ma allora se quell'inefficienza l'avevo notata non serve nemmeno la statistica, nemmeno uno z-score calcolato al volo su Python, mi faccio qualche settimana di trading discrezionale per testarlo e vedo se vado in profitto
Da quello che ho visto comunque, anche parlando con trader quant esteri, l'approccio più potente (per un retail) come risultati e potenziale oltre ad essere la cameriera di Draghi o seguire le mani forti sui volumi mi dicono sia il reinforcement learning con algoritmi genetici o neuroevoluzione, abbinato a dati tick o ancora meglio sull'order book. Di fatto fai il market maker ma senza latenza da hft, operi ogni 3/4 minuti invece che sui microsecondi. Confermi? E' solo curiosità la mia, al momento sono dedicato 100% al discrezionale sui futures
 
Da quello che ho visto comunque, anche parlando con trader quant esteri, l'approccio più potente (per un retail) come risultati e potenziale oltre ad essere la cameriera di Draghi o seguire le mani forti sui volumi mi dicono sia il reinforcement learning con algoritmi genetici o neuroevoluzione, abbinato a dati tick o ancora meglio sull'order book. Di fatto fai il market maker ma senza latenza da hft, operi ogni 3/4 minuti invece che sui microsecondi. Confermi? E' solo curiosità la mia, al momento sono dedicato 100% al discrezionale sui futures
Onestamente di RL mi intendo relativamente poco, ma dalla descrizione che tu dai deduco si tratti di "costruire" la classica Q-table della Value Function Iteration a partire dalle dinamiche del book anzichè copiando qualcuno/qualcosa che applichi una policy ottimale (ma sconosciuta) come fanno coi giochi Atari.

In tutto questo non vedrei altra applicazione dell'evoluzione differenziale se non quella di ricavare questa magica tabella minimizzando una qualche funzione obiettivo (che a occhio sarà una metrica di risultato, fosse anche solo il rapporto tra perdite e profitti), quindi il risultato finale è di trovare un insieme di regoline del tipo «se il book lato acquisto è molto profondo e denso per i primi 5 livelli, mettiti in acquisto a -1% dal prezzo corrente e poi ti metterai in vendita a +1%».

Ho inteso bene?
 
Onestamente di RL mi intendo relativamente poco, ma dalla descrizione che tu dai deduco si tratti di "costruire" la classica Q-table della Value Function Iteration a partire dalle dinamiche del book anzichè copiando qualcuno/qualcosa che applichi una policy ottimale (ma sconosciuta) come fanno coi giochi Atari.

In tutto questo non vedrei altra applicazione dell'evoluzione differenziale se non quella di ricavare questa magica tabella minimizzando una qualche funzione obiettivo (che a occhio sarà una metrica di risultato, fosse anche solo il rapporto tra perdite e profitti), quindi il risultato finale è di trovare un insieme di regoline del tipo «se il book lato acquisto è molto profondo e denso per i primi 5 livelli, mettiti in acquisto a -1% dal prezzo corrente e poi ti metterai in vendita a +1%».

Ho inteso bene?
Si hai inteso abbastanza bene. E' market making che invece di sfruttare la latenza e quindi lavorare sulla velocità rastrella profitti sullo spread cercando di fare quello che dici. Aiutato dai big data del book invece delle time series e coadiuvato dagli algo genetici che ottimizzano tutto.
Mai provato sia chiaro, anche perchè rimediare dati storici (o ricostruiti) del book è una bella barriera all'ingresso per noi poveri.
Comunque c'è pure chi usa il Reinforcement Learning come si userebbe il ML classico, con features legate alle time series ecc. su time frame comodi. Il tutto partendo dal presupposto dell'esattezza di un modello markoviano dei mercati ma col pregio di non dover usare serie target. Lavori a premio e punizione usando che ne so la sharpe ratio come obiettivo. Qui ci va a nozze PGiulia perchè l'overfittometro esplode :D
 
Ultima modifica:
S
Si hai inteso abbastanza bene. E' market making che invece di sfruttare la latenza e quindi lavorare sulla velocità rastrella profitti sullo spread cercando di fare quello che dici. Aiutato dai big data del book invece delle time series e coadiuvato dagli algo genetici che ottimizzano tutto.
Mai provato sia chiaro, anche perchè rimediare dati storici (o ricostruiti) del book è una bella barriera all'ingresso per noi poveri.
Comunque c'è pure chi usa il Reinforcement Learning come si userebbe il ML classico, con features legate alle time series ecc. su time frame comodi. Il tutto partendo dal presupposto dell'esattezza di un modello markoviano dei mercati ma col pregio di non dover usare serie target. Lavori a premio e punizione usando che ne so la sharpe ratio come obiettivo. Qui ci va a nozze PGiulia perchè l'overfittometro esplode :D

Dal mio punto di vista, L approccio logico di creazione di una strategia qualsiasi di entrata ed uscita è o dovrebbe essere formulare una ipotesi su come si muovono i prezzi o perché lo fanno, elaborare il modello matematico che rappresenta L ipotesi, trovare i dati che servono per validare o meno L ipotesi, validare L ipotesi.
Mi risulta francamente difficile partire dalle anomalie per risalire alla strategia. È molto facile in tal caso vedere nelle anomalie strutture persistenti quando praticamente sempre sono random walk.

E questo è solo uno degli aspetti (L entrata ed uscita). Una strategia quantitativa globale che prevede ad esempio L asset allocation può utilizzare strumenti diversi che cooperano con i precedenti.

Poi bisogna capire quale è la funzione obiettivo. Intendiamoci se L obiettivo è guadagnare accettando un rischio allora credo che la strategia migliore da quando è nato il mercato finanziario sia il buy and hold sull S&P500. Ha fatto “solo”il 700% negli ultimi 12 anni, sopportando DD anche del 40%. E lo è perché è chiaro come il sole che se gli USA vanno giù gli altri sono già stati polverizzati. Basterebbe solo verificare questa ipotesi.

Viceversa se si vuole guadagnare minimizzando il rischio ovvero aumentare le unità di guadagno per ogni unità di rischio la faccenda si fa maledettamente complicata e pochissimi, davvero pochissimi riescono a trovarci una soluzione. Anche perché in tal caso entrano in gioco fattori come i costi di transazione. Quindi non ti basta più prevedere ed allocare ma devi anche minimizzare ulteriori costi.

PS
Suggerisco anche di andare oltre concetti come ML, RL, NN, AI ed utilizzare ANCHE concetti di statistica fondamentale come distribuzione di probabilità, regressione, indipendenza stocastica, correlazione, verifica delle ipotesi, legge dei grandi numeri.....
 
S

Dal mio punto di vista, L approccio logico di creazione di una strategia qualsiasi di entrata ed uscita è o dovrebbe essere formulare una ipotesi su come si muovono i prezzi o perché lo fanno, elaborare il modello matematico che rappresenta L ipotesi, trovare i dati che servono per validare o meno L ipotesi, validare L ipotesi.
Mi risulta francamente difficile partire dalle anomalie per risalire alla strategia. È molto facile in tal caso vedere nelle anomalie strutture persistenti quando praticamente sempre sono random walk.

E questo è solo uno degli aspetti (L entrata ed uscita). Una strategia quantitativa globale che prevede ad esempio L asset allocation può utilizzare strumenti diversi che cooperano con i precedenti.

Poi bisogna capire quale è la funzione obiettivo. Intendiamoci se L obiettivo è guadagnare accettando un rischio allora credo che la strategia migliore da quando è nato il mercato finanziario sia il buy and hold sull S&P500. Ha fatto “solo”il 700% negli ultimi 12 anni, sopportando DD anche del 40%. E lo è perché è chiaro come il sole che se gli USA vanno giù gli altri sono già stati polverizzati. Basterebbe solo verificare questa ipotesi.

Viceversa se si vuole guadagnare minimizzando il rischio ovvero aumentare le unità di guadagno per ogni unità di rischio la faccenda si fa maledettamente complicata e pochissimi, davvero pochissimi riescono a trovarci una soluzione. Anche perché in tal caso entrano in gioco fattori come i costi di transazione. Quindi non ti basta più prevedere ed allocare ma devi anche minimizzare ulteriori costi.

PS
Suggerisco anche di andare oltre concetti come ML, RL, NN, AI ed utilizzare ANCHE concetti di statistica fondamentale come distribuzione di probabilità, regressione, indipendenza stocastica, correlazione, verifica delle ipotesi, legge dei grandi numeri.....
"elaborare il modello matematico che rappresenta L ipotesi" credo che per il 99,99% delle persone ci si fermi qua. Parli da matematico, in tutta onestà una persona media non ha senso che si metta a sfidare decenni di ricerche da parte di team di professionisti di alto livello in centri di ricerca elitari. Al massimo può testare modelli presenti sui libri di statistica ma quello lo fanno in tanti. Non saprei come iniziare, non lavoro al MIT e non posso formulare modelli nuovi. Se ancora nessuno è riuscito a superare la distribuzione dei prezzi gaussiana, palesemente errata, perchè dovrei farlo io? (è un esempio).
Stessa cosa vale sulle ipotesi riguardo il movimento dei prezzi, alla fine parliamo dei catalyst di ogni asset e quelli sono abbastanza riconosciuti. Perchè dovrei reinventare la ruota? Stocks mosse da GDP, fusioni e acquisizioni, earnings, settori, tassi ecc. Giusto le crypto non si sa, ma ci hanno provato tutti a capirlo.
Che senso avrebbe fare tutto da zero?
A me intriga molto il reinforcement learning perchè intanto, come suggerito anche da voi, usi i tick data che sono decorrelati dal tempo e valorizzano i movimenti e i volumi. Poi sfrutta il principio markoviano che mi sembra il più credibile e si adatta ad ogni conformazione di mercato, oltre ad essere un sistema completo con ottimizzazione intrinseca tramite l'obiettivo, non richiedendo nemmeno i target. Ci vedo potenziale, anche se facendo i conti della serva ora come ora se fai futures e usi Bookmap, order flow e volume profile sei a tutti gli effetti un trader HFT discrezionale e vedi le stesse cose. Alle brutte becchi gli iceberg, ti accodi e segui le manone grosse facendo le briciole.
Torniamo sempre la, ci serve il quant trading? Guardi un assorbimento su Ninjatrader e già hai l'idea su come si muova veramente il prezzo
 
"elaborare il modello matematico che rappresenta L ipotesi" credo che per il 99,99% delle persone ci si fermi qua. Parli da matematico, in tutta onestà una persona media non ha senso che si metta a sfidare decenni di ricerche da parte di team di professionisti di alto livello in centri di ricerca elitari. Al massimo può testare modelli presenti sui libri di statistica ma quello lo fanno in tanti. Non saprei come iniziare, non lavoro al MIT e non posso formulare modelli nuovi. Se ancora nessuno è riuscito a superare la distribuzione dei prezzi gaussiana, palesemente errata, perchè dovrei farlo io? (è un esempio).
Stessa cosa vale sulle ipotesi riguardo il movimento dei prezzi, alla fine parliamo dei catalyst di ogni asset e quelli sono abbastanza riconosciuti. Perchè dovrei reinventare la ruota? Stocks mosse da GDP, fusioni e acquisizioni, earnings, settori, tassi ecc. Giusto le crypto non si sa, ma ci hanno provato tutti a capirlo.
Che senso avrebbe fare tutto da zero?
A me intriga molto il reinforcement learning perchè intanto, come suggerito anche da voi, usi i tick data che sono decorrelati dal tempo e valorizzano i movimenti e i volumi. Poi sfrutta il principio markoviano che mi sembra il più credibile e si adatta ad ogni conformazione di mercato, oltre ad essere un sistema completo con ottimizzazione intrinseca tramite l'obiettivo, non richiedendo nemmeno i target. Ci vedo potenziale, anche se facendo i conti della serva ora come ora se fai futures e usi Bookmap, order flow e volume profile sei a tutti gli effetti un trader HFT discrezionale e vedi le stesse cose. Alle brutte becchi gli iceberg, ti accodi e segui le manone grosse facendo le briciole.
Torniamo sempre la, ci serve il quant trading? Guardi un assorbimento su Ninjatrader e già hai l'idea su come si muova veramente il prezzo

Quando parlo di modello matematico ovviamente non mi riferisco al senso più comune del termine e cioè equazioni, sistemi di equazioni, funzioni perchè ovviamente stiamo parlando di fenomeni quasi-random walk quindi sarebbe inutile e presuntuoso pensare di addivenire a qualcosa del genere.

No, quando mi riferisco a modello matematico ho in mente singoli strumenti statistici e probabilistici che cooperano indipendentemente l'uno dall'altro per trovare quelle weak correlations che possono far si che la probabilità di successo sia semplicemente maggiore del 50%. Ovviamente più sono alti i costi di transazione tanto più alto deve essere lo scostamento rispetto al 50%.

Immaginati quelli che ricercano l'oro nei fiumi che usano setacci con filtri sempre più fini.

Posso dirti e posso dire che sono riuscito a trovare, testare e validare modelli che riescono ad avere probabilità di successo consistenti ma il cui successo viene eroso dai costi di transazione.

Davanti a me immagino ci siano due strade: la prima porta a diminuire i costi di transazione quindi attraverso accordi con i broker e/o attraverso tecniche di ingegneria finanziaria; la seconda invece porta ad aumentare il tasso di successo mantenendo costante il costo.

Conoscendomi non potevo non perseguire subito la seconda strategia.

In conclusione quindi se la domanda delle domande è: è possibile predire un movimento dei prezzi con una probabilità maggiore del 50% in un lasso di tempo ben definito la risposta è SI, se invece la domanda è se è possibile guadagnare costantemente nei mercati la risposta è che ancora non lo so perchè come ho detto ci sono costi.....che erodono il guadagno.
 
Quando parlo di modello matematico ovviamente non mi riferisco al senso più comune del termine e cioè equazioni, sistemi di equazioni, funzioni perchè ovviamente stiamo parlando di fenomeni quasi-random walk quindi sarebbe inutile e presuntuoso pensare di addivenire a qualcosa del genere.

No, quando mi riferisco a modello matematico ho in mente singoli strumenti statistici e probabilistici che cooperano indipendentemente l'uno dall'altro per trovare quelle weak correlations che possono far si che la probabilità di successo sia semplicemente maggiore del 50%. Ovviamente più sono alti i costi di transazione tanto più alto deve essere lo scostamento rispetto al 50%.

Immaginati quelli che ricercano l'oro nei fiumi che usano setacci con filtri sempre più fini.

Posso dirti e posso dire che sono riuscito a trovare, testare e validare modelli che riescono ad avere probabilità di successo consistenti ma il cui successo viene eroso dai costi di transazione.

Davanti a me immagino ci siano due strade: la prima porta a diminuire i costi di transazione quindi attraverso accordi con i broker e/o attraverso tecniche di ingegneria finanziaria; la seconda invece porta ad aumentare il tasso di successo mantenendo costante il costo.

Conoscendomi non potevo non perseguire subito la seconda strategia.

In conclusione quindi se la domanda delle domande è: è possibile predire un movimento dei prezzi con una probabilità maggiore del 50% in un lasso di tempo ben definito la risposta è SI, se invece la domanda è se è possibile guadagnare costantemente nei mercati la risposta è che ancora non lo so perchè come ho detto ci sono costi.....che erodono il guadagno.
Potresti fare un esempio concreto del processo, modello compreso? Magari usando modelli diversi da quelli tuoi per non rivelare.
Ti metto questo link per farti capire la mia impostazione al ML, cioè quello che ho sempre detto in questo topic. Model cs data mining black box: Build Better Strategies! – The Financial Hacker

Mi permetto di suggerirti, anche solo come curiosità, di provare la neuroevoluzione (NEAT come modello specifico) come ottimizzazione. Se hai tempo e modo di approfondire tu che sei pratico magari riesci a sfruttarla bene. Neuroevolution of augmenting topologies - Wikipedia
 
Senza offesa ma le probabilità che tu abbia un modello funzionante sono 0.

Inoltre puoi avere costi di esecuzione nulli grazie ai motori di esecuzione anonimi.

Prendo spunto da questa riflessione per trovare il tempo di illustrare i risultati finora ottenuti.

Inizio dicendo che attualmente è come dici tu e francamente non so se la strategia da me adottata sarà mai profittevole. E' utile prima di iniziare ad illustrare i risultati distinguere tra reale capacità predittiva e guadagno effettivo.

Il 2021 è stato il primo anno dove ho potuto testare la strategia in maniera consistente avendo anche risolto tutti i bug della piattaforma di trading. Ho testato la strategia utilizzando un conto paper trading fornitomi da Interactive Broker con un 1 mln di $ agganciato ad una piattaforma trading totalmente robotizzata da me costruita ed agganciata ai loro server tramite API. Ho chiuso il 31/12/2021 con 945000 dollari quindi con una perdita effettiva del 5.5%. E ciò al netto di 74.000$ di commissioni e di quasi 2.000$ netti pagati come interessi passivi. Le operazioni di acquisto e vendita sono stati ca. 155 mln ciascuno quindi complessivamente sono state fatte operazioni per oltre 310 mln di $ su cui ovviamente si è pagato il costo dello spread essendo l'operazione di acquisto-vendita at market e questo sempre per assicurare il balance imposto di avere il 55% delle posizioni long ed il 45% short. Secondo i miei calcoli lo spread Bid-Ask mi sarebbe costato ca. l'1.8% al mese e quindi il 20-22% l'anno. In sintesi quindi tra costi di commissioni, interessi netti passivi e spread le operazioni di compravendita mi sarebbero costate tra il 27.5% ed il 30%. La strategia si basa su uno statistical arbitrage che poteva attingere a tutti i sottostanti che formano il Russell 1000, quindi gestisce 1000 ticker, con frequenza daily, le operazioni avvenivano alla chiusura(che garantisce il momento dove il livello dello spread è più basso durante la giornata) in particolare a ca. 20 secondi dalla fine delle contrattazioni e riguardavano tra il 2% ed il 20% dei componenti il Russell 1000.

La cosa interessante è che avevo previsto che per andare in guadagno avrei dovuto avere profitti lordi superiori al 30% quindi in linea al risultato. Da verifiche effettuate il modello teorico veniva seguito dal modello reale al 99%, dove l'1%, come previsto, si comporta come una random walk. In altri termini non influenza il rendimento lordo.

Ovviamente mi ha sorpreso anche la robustezza ed efficienza della piattaforma totalmente robotizzata che doveva processare infiniti calcoli in pochi secondi. Non era scontato perchè per fare ciò ho dovuto scrivere un codice con tecniche di array coding e per il calcolo parallelo. Ha fallito solo 5 volte in un anno per lo più perchè o il NYSE aveva chiuso prima dello standard ovvero per problemi relativi ai loro server a causa di spike nella volatilità. Considerate che il sistema è totalmente robotizzato in ogni aspetto. Quindi lo guardo qualche volta a settimana.

E' chiaro che una simile strategia per i costi che sopporta non è assolutamente profittevole. Si possono ridurre ed anche di molto quelli relativi alle commissioni ma sullo spread non ho le idee chiare in quanto se procedo con ordini con bid ed ask fissati a quel punto non viene assicurato il balance tra posizioni long e short. Si potrebbe pensare che mettendo un cap alle singole operazioni per la legge dei grandi numeri il balance sarebbe assicurato e tuttavia pensandoci bene ciò non è dovuto in quanto si potrebbero avere spike di volatilità in pochi secondo che potrebbero far scattare solo le operazioni Buy o Sell. E' anche vero che le operazioni di Buy-Sell sono simmetriche a coppie per ogni lato delle operazioni.

Non saprei.............
 
Ultima modifica:
  • Like
Reazioni: Mei
74.000$ sono tanti. Se riesci a gestire meglio con order limit va a giovare. Altrimenti con ib puoi passare anche tramite citadel dove paghi 0 ma le esecuzioni saranno lente e incerte

$1M con quanta leva? E se usi la leva quanto è drowdown?
Quante operazioni in media al giorno su tutto il paniere russell 1000?
Controvalore medio di un trade?
Quanto dura in media un operazione? (compreso l'overnight)
Quant-è il guadagno medio in percentuale per ogni trade?
Quant-è la perdita media in percentuale per ogni trade?
Quali sono le condizioni per andare a chiudere un trade in positivo e chiudere un trade in negativo?




Quando operativo ci vuole un adetto al monitoraggio altrimenti fai la fine di knight capital. Con progettazione fatta male e per mia inesperienza mi è capitato anche a me di perdere 20k in 3 minuti perchè l'algo di esecuzione inviava ordine a mercato e subito dopo usciva con un altro ordine a mercato in loop e tutto in pochi secondi.

Adesso che hai spiegato meglio devo dire che mi piace la strategia e soprattuto mi piacciono le tecniche temporizzate.

Cercherò di rispondere a tutte le domande. Laddove non dovessi è perchè ho poco tempo (adesso) ovvero non ho dati ben definiti e quindi preferisco rivedere gli stessi.

Premessa il modello matematico utilizzato nel test quasi-reale è un modello non ottimizzato nei suoi parametri e che pertanto sono fissi compreso la leva.

Più che essere fissa la leva ho fissato il cap della leva a 2.2 anche se in media come si può osservare dall'ammontare delle transazioni (310 mln e numero di giorni di trading 250) è stata intorno a 1,240. (credo di non aver fatto errori nel calcolo qui su due piedi). E ciò anche perchè fisso era il cap per l'ammontare dell'asset che veniva allocato per ogni singolo ticker, max 2% del NAV. Questo per il controllo del rischio.

Il numero di transazioni medie lo si può dedurre sapendo che ogni trade da contratto viene a costare $ 0.005 (valore che si può abbattere sensibilmente nel real world) con un minimo di 1$. Quindi in un anno ci sarebbero stati ca. 15.000.000 trades (sapendo che sono stati computati 74.000$) tra long e short, ma il cap di 1$ minimo riduce quel valore, anche di molto, diciamo 6.000.000. Ca. 25.000 trades al giorno.

Le vincite medie e le perdite medie dipendono dalla volatilità dei singoli ticker quindi un AVGO ha profitti/perdite ben superiori all'2% al giorno di contro un titolo come IBM siamo ben sotto.
Posso dirti che dalle simulazioni effettuate prima del test ogni anno, su 7 analizzati, si è chiuso in guadagno con profitti che vanno dal 25% al 150% ed una media dell'70%, è chiaro che quando va sotto il 30% lordo nel reale si perde almeno secondo il reale che posso pensare di conseguire io. Il modello predilige le fasi laterali. Quindi diciamo che gli ultimi anni(13 non proprio gli ultimi due) caratterizzati da decisi movimenti rialzisti non sono stati proprio il suo ambiente. Ciò nondimeno ha chiuso, nelle simulazioni sempre in positivo. Certamente costa complessivamente almeno il 2,2% al mese.

Le operazioni generalmente vengono chiuse in giorni ma è variabile, in genere tra 3 e 7 giorni. Le condizioni di chiusura sono: si è raggiunto il limite massimo della finestra di opportunità stimata ovvero un algoritmo che lavora in background che chiamo sentinella ha stimato che le probabilità di perdita hanno superato quelle di guadagno.
 
Bellissimo 3d, letto tutto, capito quasi niente ma favoloso, complimenti a tutti i partecipanti.

Giusto una domanda:

Vi ricorderete sicuramente delle inefficiente sui CW intorno all'anno 2000, lo sfasamento temporale tra CW e sottostante che portava (MM permettendo) a profitti privi di rischio, ecco la domanda e':

Il ML sarebbe stato in grado di scoprire e sfruttare quella inefficienza? Intendo se il programmatore non l'avesse intuita lui per prima.
 
Prendo spunto da questa riflessione per trovare il tempo di illustrare i risultati finora ottenuti.

Inizio dicendo che attualmente è come dici tu e francamente non so se la strategia da me adottata sarà mai profittevole. E' utile prima di iniziare ad illustrare i risultati distinguere tra reale capacità predittiva e guadagno effettivo.

Il 2021 è stato il primo anno dove ho potuto testare la strategia in maniera consistente avendo anche risolto tutti i bug della piattaforma di trading. Ho testato la strategia utilizzando un conto paper trading fornitomi da Interactive Broker con un 1 mln di $ agganciato ad una piattaforma trading totalmente robotizzata da me costruita ed agganciata ai loro server tramite API. Ho chiuso il 31/12/2021 con 945000 dollari quindi con una perdita effettiva del 5.5%. E ciò al netto di 74.000$ di commissioni e di quasi 2.000$ netti pagati come interessi passivi. Le operazioni di acquisto e vendita sono stati ca. 155 mln ciascuno quindi complessivamente sono state fatte operazioni per oltre 310 mln di $ su cui ovviamente si è pagato il costo dello spread essendo l'operazione di acquisto-vendita at market e questo sempre per assicurare il balance imposto di avere il 55% delle posizioni long ed il 45% short. Secondo i miei calcoli lo spread Bid-Ask mi sarebbe costato ca. l'1.8% al mese e quindi il 20-22% l'anno. In sintesi quindi tra costi di commissioni, interessi netti passivi e spread le operazioni di compravendita mi sarebbero costate tra il 27.5% ed il 30%. La strategia si basa su uno statistical arbitrage che poteva attingere a tutti i sottostanti che formano il Russell 1000, quindi gestisce 1000 ticker, con frequenza daily, le operazioni avvenivano alla chiusura(che garantisce il momento dove il livello dello spread è più basso durante la giornata) in particolare a ca. 20 secondi dalla fine delle contrattazioni e riguardavano tra il 2% ed il 20% dei componenti il Russell 1000.

La cosa interessante è che avevo previsto che per andare in guadagno avrei dovuto avere profitti lordi superiori al 30% quindi in linea al risultato. Da verifiche effettuate il modello teorico veniva seguito dal modello reale al 99%, dove l'1%, come previsto, si comporta come una random walk. In altri termini non influenza il rendimento lordo.

Ovviamente mi ha sorpreso anche la robustezza ed efficienza della piattaforma totalmente robotizzata che doveva processare infiniti calcoli in pochi secondi. Non era scontato perchè per fare ciò ho dovuto scrivere un codice con tecniche di array coding e per il calcolo parallelo. Ha fallito solo 5 volte in un anno per lo più perchè o il NYSE aveva chiuso prima dello standard ovvero per problemi relativi ai loro server a causa di spike nella volatilità. Considerate che il sistema è totalmente robotizzato in ogni aspetto. Quindi lo guardo qualche volta a settimana.

E' chiaro che una simile strategia per i costi che sopporta non è assolutamente profittevole. Si possono ridurre ed anche di molto quelli relativi alle commissioni ma sullo spread non ho le idee chiare in quanto se procedo con ordini con bid ed ask fissati a quel punto non viene assicurato il balance tra posizioni long e short. Si potrebbe pensare che mettendo un cap alle singole operazioni per la legge dei grandi numeri il balance sarebbe assicurato e tuttavia pensandoci bene ciò non è dovuto in quanto si potrebbero avere spike di volatilità in pochi secondo che potrebbero far scattare solo le operazioni Buy o Sell. E' anche vero che le operazioni di Buy-Sell sono simmetriche a coppie per ogni lato delle operazioni.

Non saprei.............
Ciao Amartya, scusa se ti faccio alcune domande ma questi ultimi due post mi hanno spaesato.
Nel corso della discussione, tempo fa, consigliavi di cercare features slegate dal tempo, il fatto che si parli di daily e quindi di time series discreta non mi torna.
Ero altresì convinto che si facessi stat arb ma avessi implementato una struttura simile (anche per le capacità di processo) per cercare mini inefficienze su granularità tick, addirittura con dati LOB profondi.
Da quello che descrivi, dimmi se sbaglio, sembra più una strategia di swing trading ed a tratti di investimento attivo, su una base classica di stat arb. Non capisco quindi quei costi e come quei costi possano incidere sul profitto visto che si usano timeframe più lenti appositamente. Capisco a metà la necessarietà di un computer così potente: è giustificata dada centinaia di asset con relative serie storiche ma sono comunque dati daily, con qualche migliaia di timestamp arrivi al 1500.
Ero convinto avessi inventato un nuovo sistema HFT, per farla breve. Mi ritrovo una strategia di investimento facendo stock picking nel portfolio.
Non è assolutamente una critica sia chiaro, ma non facevi prima ad affidarti a una delle tante piattaforme di portfolio optimization basate sul reinforcement learning?
 
Ciao Amartya, scusa se ti faccio alcune domande ma questi ultimi due post mi hanno spaesato.
Nel corso della discussione, tempo fa, consigliavi di cercare features slegate dal tempo, il fatto che si parli di daily e quindi di time series discreta non mi torna.
Ero altresì convinto che si facessi stat arb ma avessi implementato una struttura simile (anche per le capacità di processo) per cercare mini inefficienze su granularità tick, addirittura con dati LOB profondi.
Da quello che descrivi, dimmi se sbaglio, sembra più una strategia di swing trading ed a tratti di investimento attivo, su una base classica di stat arb. Non capisco quindi quei costi e come quei costi possano incidere sul profitto visto che si usano timeframe più lenti appositamente. Capisco a metà la necessarietà di un computer così potente: è giustificata dada centinaia di asset con relative serie storiche ma sono comunque dati daily, con qualche migliaia di timestamp arrivi al 1500.
Ero convinto avessi inventato un nuovo sistema HFT, per farla breve. Mi ritrovo una strategia di investimento facendo stock picking nel portfolio.
Non è assolutamente una critica sia chiaro, ma non facevi prima ad affidarti a una delle tante piattaforme di portfolio optimization basate sul reinforcement learning?

Parto dalla fine. Non facevo prima semplicemente perchè parto da un modello matematico ben preciso che può essere ottimizzato come non ottimizzato. Nel test non ho ottimizzato per essere chiari. Quindi volevo usare un mio modello proprietario molto efficiente nel forecast. Considera che molti modelli di ML liberi falliscono semplici test back-forward sebbene usino pochi gradi di libertà.

Il modello che uso è indipendente dal tempo. Intendiamoci un cosa è i time frame operativo un altra è la base su cui mi appoggio per la predizione. Quindi nel secondo caso ribadisco di cercare processi slegati dal tempo ovvero del tipo mean reverting.
Il Time Frame operativo invece mi è imposto dai costi operativi e la chiusura è una scelta dovuta alla curva degli spread che si riduce alla chiusura appunto. Subendo quei costi devo avere una magnitudo dei rialzi e dei ribassi adeguata. La magnitudo la puoi trovare o aumentando il time frame ovvero la leva. Ho fatto un mix.
Come strategia non sbagli. Non cerco inefficienze ma pattern che il modello matematico riconosce, questi pattern possono essere individuati in diversi time frame l'importante è che ho un numero sufficiente di dati. I costi purtroppo sono quelli. un 8-9% di commissioni ed un 20-21% di spread bid ask. Parlo di costi annui su una rotazione del capitale superiore al 31000%. Significa che guadagno solo se supero il 30% di profitto lordo.

I computer potenti al momento servono solo nella fase di ricerca. Sebbene abbia utilizzato nel test un modello non ottimizzato, la piattaforma di ricerca che ho creato può valutare simultaneamente almeno 100 variabili a vari livelli di profondità dal momento alle correlazioni. In tal caso il numero di permutazioni possibili è tale che solo la disponibilità di calcolo può darti risultati apprezzabili.
 
Ultima modifica:
Parto dalla fine. Non facevo prima semplicemente perchè parto da un modello matematico ben preciso che può essere ottimizzato come non ottimizzato. Nel test non ho ottimizzato per essere chiari. Quindi volevo usare un mio modello proprietario molto efficiente nel forecast. Considera che molti modelli di ML liberi falliscono semplici test back-forward sebbene usino pochi gradi di libertà.

Il modello che uso è indipendente dal tempo. Intendiamoci un cosa è i time frame operativo un altra è la base su cui mi appoggio per la predizione. Quindi nel secondo caso ribadisco di cercare processi slegati dal tempo ovvero del tipo mean reverting.
Il Time Frame operativo invece mi è imposto dai costi operativi e la chiusura è una scelta dovuta alla curva degli spread che si riduce alla chiusura appunto. Subendo quei costi devo avere una magnitudo dei rialzi e dei ribassi adeguata. La magnitudo la puoi trovare o aumentando il time frame ovvero la leva. Ho fatto un mix.
Come strategia non sbagli. Non cerco inefficienze ma pattern che il modello matematico riconosce, questi pattern possono essere individuati in diversi time frame l'importante è che ho un numero sufficiente di dati. I costi purtroppo sono quelli. un 8-9% di commissioni ed un 20-21% di spread bid ask. Parlo di costi annui su una rotazione del capitale superiore al 31000%. Significa che guadagno solo se supero il 30% di profitto lordo.

I computer potenti al momento servono solo nella fase di ricerca. Sebbene abbia utilizzato nel test un modello non ottimizzato, la piattaforma di ricerca che ho creato può valutare simultaneamente almeno 100 variabili a vari livelli di profondità dal momento alle correlazioni. In tal caso il numero di permutazioni possibili è tale che solo la disponibilità di calcolo può darti risultati apprezzabili.
Grazie della spiegazione, ora è molto più chiaro ed assume senso (per me).
In sostanza per quanto riguarda lo sganciamento dal tempo, per fare un esempio semplice, lavori sugli eventi più che sulle scansioni temporali discrezionali tipo le chiusure delle candele. Per dire "quando lo spread tra i due asset aumenta vai long/short" ecc.
 
Grazie della spiegazione, ora è molto più chiaro ed assume senso (per me).
In sostanza per quanto riguarda lo sganciamento dal tempo, per fare un esempio semplice, lavori sugli eventi più che sulle scansioni temporali discrezionali tipo le chiusure delle candele. Per dire "quando lo spread tra i due asset aumenta vai long/short" ecc.

Sullo sganciamento dal tempo lavoro in due modi: 1) esiste un comportamento nei prezzi degli asset che si manifesta con una certa probabilità all occorrere di certi andamenti, quando questi andamenti si allineano nella configurazione del modello matematico ho una buona probabilità certamente superiore al 50% di predire il movimento dell asset e con magnitudo tale che la probabilità di guadagnare è certamente maggiore del 50%. Questi comportamenti sono slegati dal tempo cioè accadono sempre al verificarsi di quel tipo di andamento, 2) per intercettare quel comportamento faccio uso di processi mean reverting.
Il problema è che questo modello ha rotazione del capitale elevata, direi quasi elevatissima e sebbene abbia ridotto al massimo commissioni e spread, rimane comunque elevato il costo. Devo guadagnare più del 30% L anno solo per andare in pari.
Magari L ingegneria del trading e migliori accordi con i broker possono ridurre significativamente questi costi. Non lo so.
Sto cercando di ridurre significativamente la rotazione del capitale senza compromettere troppo la capacità di forecast o in ogni caso cercando di ridurre i costi più di quanto si riducono i guadagni.
 
Sto cercando di ridurre significativamente la rotazione del capitale senza compromettere troppo la capacità di forecast o in ogni caso cercando di ridurre i costi più di quanto si riducono i guadagni.

SUI COSTI : per sentito dire (:eek:), i costi nello stat arb si riducono.... appunto non usando ordini a mercato, ma usando un ordine limit nella leg meno liquida, e - quando viene eseguito - andando con un ordine MARKET sulla leg più liquida.

E' un cambiamento di paradigma rispetto a quello che fanno la maggior parte dei trader sistematici RETAIL: la maggior parte del codice non viene più dedicato all'ottenimento del segnale (ove non c'è niente da inventare... in realtà), ma su come inviare e gestire gli ordini una volta che sono sul book.

PS Andare con ordini MARKET è comodo per backtesting, ma è anche un controsenso logico, dato che l'edge di queste strategie sta proprio nel fatto di fornire liquidità ai mercati meno liquidi, mentre se vai a con ordini MARKET
la liquidità la togli.


- SUL PAPER TRADING di IB: per questi tipi di sistemi non è efficacissimo, in quanto tende ad AMPLIARE lo slippage. Infatti in simulazione compri sempre l'ask, e vendi sempre il BID, cioè non consideri la liquidità che è "nascosta" quasi sempre tra BID e ASK per molti ticker. Io ho fatto prove sul Nasdaq future e lo slippage del paper trading è superiore a quello reale. In ultima analisi, l'unico test che conta di una sistema è quello del real time, con quantità simboliche.


- SUL CONSIGLIO DI USARE IB LIGHT o comunque un broker commission free. A parte che "IB Light" non ha le api, quindi servre solo per il trading manuale, è forse la cosa più sconcertante che ho letto in queta discussione, in quanto in tal caso il maggiore costo in slippage è di almeno un ordine di grandezza superiore alla commissione che si risparmia (per la ragione scritta poco più sopra)
 
SUI COSTI : per sentito dire (:eek:), i costi nello stat arb si riducono.... appunto non usando ordini a mercato, ma usando un ordine limit nella leg meno liquida, e - quando viene eseguito - andando con un ordine MARKET sulla leg più liquida.

E' un cambiamento di paradigma rispetto a quello che fanno la maggior parte dei trader sistematici RETAIL: la maggior parte del codice non viene più dedicato all'ottenimento del segnale (ove non c'è niente da inventare... in realtà), ma su come inviare e gestire gli ordini una volta che sono sul book.

PS Andare con ordini MARKET è comodo per backtesting, ma è anche un controsenso logico, dato che l'edge di queste strategie sta proprio nel fatto di fornire liquidità ai mercati meno liquidi, mentre se vai a con ordini MARKET
la liquidità la togli.


- SUL PAPER TRADING di IB: per questi tipi di sistemi non è efficacissimo, in quanto tende ad AMPLIARE lo slippage. Infatti in simulazione compri sempre l'ask, e vendi sempre il BID, cioè non consideri la liquidità che è "nascosta" quasi sempre tra BID e ASK per molti ticker. Io ho fatto prove sul Nasdaq future e lo slippage del paper trading è superiore a quello reale. In ultima analisi, l'unico test che conta di una sistema è quello del real time, con quantità simboliche.

Andare con ordini al limit è una opzione che sto considerando. E' vero anche che come segnali gli spread bid ask sono leggermente più alti nell'ambiente simulato.

Hai anche ragione sulla piattaforma. IB piattaforma normale consente una infinità di cose vedi tutte le API che mi hanno permesso di dedicare alle operazioni appena 24 ore su 365 giorni. Inoltre sulle commissioni esiste una politica di riduzione all'aumentare degli eseguiti. Le commissioni hanno rappresentato il 20% dei costi, lo spread l'80%.
 
Domanda secca: lo statistical arbitrage funziona ancora per un trader retail senza particolari "vantaggi" computazionali tipo latenza ultra HFT ecc?
Parlo di PC da casa, broker, Python. Considerando i costi, magari sulle crypto.
E' solo una curiosità, non ho nessuna intenzione di sbattermi :D
 
Indietro