Signal Pilot
🟠 Avanzato • Lezione 70 di 85

L’apprendimento automatico come filtro

Tempo di lettura ~13 min • Modulo 8: Costruire un sistema
Signal Pilot
Formazione professionale sul trading
0 %
Stai facendo progressi!
Continua a leggere per completare questa lezione

La lezione 69 ha lasciato una griglia a questa pagina. Sei iperparametri da cinque valori ciascuno fanno 15.625 configurazioni, una griglia che un principiante chiamerebbe modesta, e l’aritmetica della lezione 64 dice che una ricerca di quella larghezza, giudicata su 156 operazioni, fabbrica 0,318 di un R per operazione prima che il mercato abbia fatto alcunché. Questa è l’obiezione consueta all’apprendimento automatico nel trading ed è quella a cui si può rispondere: conta la griglia, alza l’asticella da 1,645 a 4,507 e guarda se il modello la supera. L’obiezione a cui non si può rispondere così non contiene alcun modello. Un filtro non crea operazioni, le toglie, quindi può soltanto restituirti i perdenti che è riuscito a prendere, e una strategia che sembra buona non ne ha quasi nessuno da prendere. La regola vincente della lezione 63 ha sei vincenti e una perdente. Un filtro altrettanto bravo a tenere i vincenti quanto a scartare i perdenti dovrebbe azzeccare il 96,04 per cento delle operazioni mai viste solo per non rimetterci su quella regola, e uno perfetto, che prende l’unica perdente e non tocca altro, la migliorerebbe del 4,30 per cento.

Prerequisiti: Lezione 64, per la formula del massimo atteso e per l’asticella che un conteggio di configurazioni fissa, lezione 63, per le sette operazioni che questa pagina smonta, e lezione 17, per i due numeri di cui è fatto un fattore di profitto.

Quanto costa una griglia prima di aver visto un prezzo

Una regola ha parametri e la lezione 64 li ha contati. Un modello ha iperparametri, che sono la stessa cosa con un altro nome, e ha una dimensione che una regola non ha: quali variabili entrano. Entrambe si moltiplicano, e l’aritmetica che prezza una ricerca non si cura di quale sia quale. Conta configurazioni, e il conteggio si conosce prima che parta qualsiasi cosa.

Prendi la griglia lasciata dall’anticipo. Sei iperparametri da cinque valori ciascuno fanno 15.625, e la sostituzione è scritta per intero perché nulla di tutto questo debba essere preso sulla fiducia. Uno diviso 15.625 fa 0,0000640, e il valore della normale standard che lascia tanto nella coda superiore è 3,83028. Poi 15.625 per e fa 42.473, uno diviso quello fa 0,0000235, e il suo valore normale è 4,06963. Pesando i due per 0,4228 e 0,5772 viene 3,96843, che è una t. Dividi per la radice quadrata di 156, cioè 12,49, e il vantaggio fabbricato è 0,318 di un R per operazione. L’asticella che una ricerca di quella larghezza deve superare perché solo il cinque per cento delle ricerche senza valore la batta sta a 4,507.

Ora la dimensione che nessuno conta. Un elenco di venti variabili con l’istruzione di sceglierne da tre a sei è la forma consueta di questo esercizio, e quell’istruzione si legge come una semplificazione. È una ricerca. Sceglierne esattamente quattro su venti fa 4.845 modelli distinti, sceglierne da tre a sei ne fa 60.249, e l’elenco era scritto prima che tu cominciassi, quindi il conteggio è a disposizione di chiunque lo voglia. Moltiplica la cifra di quattro su venti per la griglia di iperparametri e il lavoro di un pomeriggio fa 75.703.125 configurazioni.

Che cosa hai fatto variareConfigurazioniAsticella al cinque per centoR per operazione fabbricato su 156 operazioni
Tre iperparametri, cinque valori ciascuno1253,3460,209
Quattro iperparametri, cinque valori ciascuno6253,7690,250
Sei iperparametri, cinque valori ciascuno15.6254,5070,318
Quattro variabili scelte da un elenco di venti4.8454,2520,295
Le ultime due insieme75.703.1256,0610,453

L’ultima riga è il conteggio onesto di un pomeriggio, e 6,061 è una t che qualche centinaio di operazioni non produrrà per quanto buona fosse l’idea. Leggi però la terza colonna dall’alto in basso e la forma è più dolce di quanto sembri: passare da 15.625 configurazioni a 75.703.125 è 4.845 volte più ricerca e sposta l’asticella di 1,554. La penalità cresce con il logaritmo del conteggio, e questo taglia dal lato che nessuno menziona. Non serve un modello alla moda per essere malamente esposti. Quattro iperparametri e nessuna selezione di variabili sono già a 3,769.

Supponi dunque di fare tutto questo per bene. Supponi di contare la griglia, superare l’asticella e avere in mano un modello che ordina davvero i tuoi setup meglio del caso. Il resto di questa pagina riguarda se ciò valga qualcosa, e non richiede alcun conteggio di configurazioni, alcuna simulazione e alcuna ipotesi sui mercati.

Impostalo come funziona davvero il denaro. Un filtro non trova operazioni nuove. Si posa sui setup che il tuo metodo produce già e ne toglie alcuni, quindi il confronto onesto è il profitto totale sulle stesse occasioni iniziali, non il profitto per operazione presa. Scrivi il tuo tasso di successo come p e il tuo pagamento come b, entrambi dalla lezione 17, così una vincente paga b e una perdente costa uno. Il filtro tenga una frazione s delle vincenti e scarti correttamente una frazione t delle perdenti. Per operazione iniziale rinuncia a p per uno meno s per b, e risparmia uno meno p per t. Conviene quando la seconda quantità è almeno la prima:

(1 − p) t  ≥  p (1 − s) b

Dividilo in due modi e dice due cose diverse e utili. Dividi per p per uno meno s e le perdenti che il filtro butta devono superare di numero le vincenti che butta di almeno b, il tuo rapporto di pagamento, che è una prova che puoi fare su un registro di operazioni con due conteggi e nessuna statistica. Dividi invece per uno meno p e il membro di destra diventa p b su uno meno p, cioè profitto lordo su perdita lorda, la quantità di solito chiamata fattore di profitto e l’unico nome nuovo di questa pagina. Sono i due numeri della lezione 17 scritti come uno.

Se il modello è ugualmente bravo nelle due direzioni, così che s e t siano lo stesso numero a, la condizione si riduce a una soglia sulla sola accuratezza: a deve valere almeno il fattore di profitto diviso uno più il fattore di profitto. Girata, un filtro di accuratezza a si guadagna il posto su qualsiasi strategia il cui fattore di profitto stia sotto ad a diviso uno meno a.

Al 52 per cento di accuratezza, su qualsiasi strategia con un fattore di profitto sotto 1,08.

Al 55 per cento, sotto 1,22.

Al 60 per cento, sotto 1,50.

Al 65 per cento, sotto 1,86.

Il 52 per cento non è un riempitivo. Gu, Kelly e Xiu hanno misurato l’intera famiglia di questi modelli fuori campione su rendimenti mensili di migliaia di azioni, e la loro rete migliore ha raggiunto un R quadro mensile fuori campione di circa quattro decimi di un per cento. Traducilo nella lingua di questa pagina: sotto una normale bivariata la probabilità che il segno di una previsione coincida con il segno del risultato è un mezzo più l’arcoseno della correlazione, diviso pi greco; la correlazione è la radice quadrata dell’R quadro, cioè 0,0632, e l’accuratezza è del 52,01 per cento. Il miglior risultato pubblicato del settore è un filtro per strategie con un fattore di profitto sotto 1,08.

Quasi nessuno fra chi ha adattato un modello alle proprie operazioni ha diviso il proprio profitto lordo per la propria perdita lorda e messo i due numeri uno accanto all’altro. Sono due somme prese da un registro di operazioni e una divisione, ed è tutta lì la decisione.

Il foglio che questo modulo costruisce dalla lezione 62 non guadagna una nona colonna. È qui che viene speso, tutte e otto in una volta, sull’unica regola che il corso segue dalla lezione 63.

Il foglio, speso su una regola

La lezione 63 ha passato al setaccio 253 configurazioni di medie mobili su sessanta chiusure e ha tenuto una media a 2 barre contro una a 5: sette operazioni, 10,70 per azione lordi, 9,84 dopo i costi, contro 5,68 per la detenzione. Riempi le otto colonne e il foglio si legge così.

La frase, dalla lezione 62: vai lungo quando la media a 2 barre delle chiusure incrocia sopra quella a 5, torna piatto quando reincrocia sotto, esegui alla chiusura successiva.

La coppia, dalla lezione 63: 4,16 sopra il riferimento, contro il 52,5 per cento di ricerche senza struttura che restituiscono 4,16 o più.

L’asticella e il conteggio, dalla lezione 64: 253 celle, un’asticella di 3,537, una t di 3,65, che la supera finché non fissi un numero minimo di operazioni, momento in cui la frazione va dallo 0,68 per cento con una soglia di sette al 50,48 per cento con una soglia di due.

Le operazioni fissate in anticipo, dalla lezione 65: vuoto. Le sette sono quelle che sono capitate.

La quota di esposizione, dalla lezione 66: 0,5085, e dei 10,70 lordi il mercato ne ha forniti 2,95.

La profondità a cui fermarsi, dalla lezione 67: vuoto.

La capacità, dalla lezione 68: un’operazione media di 0,9101R vale 1,4055 per azione, che su un prezzo vicino a 103 fa 136 punti base, quindi nella small cap della lezione 68 l’operazione regge 1.390.545 dollari e la migliore posizione singola è 618.020.

Il tetto di posizione e il suo intervallo di controllo, dalla lezione 69: vuoto.

Tre caselle vuote, e una seconda colonna le cui due cifre stanno al contrario. Quello è il verdetto, e arriva prima che il foglio sia letto a metà. Percorrilo comunque fino in fondo, perché la domanda di questa pagina non è se la regola valga qualcosa. È se un modello potrebbe migliorarla, e quella domanda ha una risposta anche per una regola che non vale nulla.

Le sette operazioni al netto dei costi valgono 2,577, 1,877, 2,377, 1,377, meno 0,423, 1,177 e 0,877. Sei vincenti che sommano 10,262 e una perdente da 0,423, quindi il fattore di profitto è 24,26, la vincente media è 1,1075R, la perdente media è 0,2739R e il rapporto di pagamento è 4,04. Ora metti al lavoro le altre colonne del foglio e guarda che cosa succede via via che ciascuna viene applicata. L’ultima riga della tabella qui sotto è il modello nullo della lezione 63, ricalcolato per questa pagina: i 59 movimenti da barra a barra estratti con reimmissione, 4.000 serie dal seme 20260903, la stessa ricerca di 253 celle su ognuna, alla stessa soglia di sette operazioni che la vincente rispettava, e il fattore di profitto della cella che vince. La sua mediana è 2,34, e il 3,08 per cento di quelle ricerche senza struttura restituisce una vincente con un fattore di profitto di 24,26 o più.

Che cosa è stato sottrattoFattore di profittoAccuratezza che un filtro deve superareIl massimo che un filtro perfetto potrebbe aggiungere
Nulla36,6797,35 %2,80 %
I costi, secondo la convenzione della lezione 6324,2696,04 %4,30 %
I costi, e la quota del mercato dalla lezione 6614,2293,43 %7,57 %
Ciò che la stessa ricerca restituisce sul nulla, mediana2,3470,01 %74,91 %

La quarta colonna è quella su cui vale la pena fermarsi, ed è un secondo numero puro che cade dalla stessa disuguaglianza. Un filtro perfetto toglie ogni perdente e tiene ogni vincente, quindi il massimo che possa aggiungere è l’intera perdita lorda, e come quota di ciò che la strategia già guadagna netto quello è uno diviso il fattore di profitto meno uno. Su questa regola è il 4,30 per cento. Non il 4,30 per cento se il modello è buono: il 4,30 per cento se il modello è impeccabile, perché nel registro c’è una sola perdente e vale 0,423 su 9,839.

Leggi insieme le due colonne centrali, dall’alto in basso, e vanno in direzioni opposte per la stessa ragione. Man mano che il fattore di profitto viene sgonfiato verso la verità — prima i costi, poi la quota del mercato, poi ciò che una ricerca della stessa larghezza restituisce su dati che non contengono niente —, l’accuratezza che serve al filtro scende dal 97,35 per cento al 70,01, e il premio sale dal 2,80 per cento al 74,91. La ricerca ha fabbricato il vantaggio e, con lo stesso gesto, la ragione per cui nessun modello poteva migliorarlo.

Un filtro può solo restituirti le tue perdenti, e una buona strategia non ne ha quasi nessuna.

Ecco perché la riga in fondo conta più di quanto sembri. Un fattore di profitto di uno è una strategia con esattamente zero attesa, e lì la soglia sta al cinquanta per cento e un filtro al 52 per cento conviene davvero. Contalo su trecento operazioni con un pagamento di due: cento vincenti che pagano due e duecento perdenti che costano uno fanno zero. Tieni 52 delle vincenti e 96 delle perdenti e hai 104 meno 96, cioè 8R sulle trecento iniziali, ossia 0,027 di un R per operazione. Il filtro non sta migliorando la strategia. È tutta la strategia, ed è piccola. Sali a un fattore di profitto di due e lo stesso filtro al 52 per cento toglie 0,22R per operazione a una strategia che ne fa 0,50.

Quindi somma le tue vincenti, somma le tue perdenti, dividi, e leggi la risposta come l’accuratezza che qualsiasi filtro deve superare prima che tu lo costruisca.

Ciò che questo non risolve

Che il filtro sia bilanciato. La soglia di accuratezza presuppone che il modello sia esattamente altrettanto bravo a tenere le vincenti quanto a scartare le perdenti, e la disuguaglianza da cui viene non presuppone nulla del genere: chiede soltanto che la specificità divisa per uno meno la sensibilità superi il fattore di profitto. Un modello tarato con decisione verso lo scarto delle perdenti, accettando di tenere quasi ogni vincente che gli viene mostrata, può superare quell’asticella con un’accuratezza complessiva molto sotto la soglia, ed è la direzione in cui vale la pena costruire. Questa pagina stampa il numero bilanciato perché è il numero che un classificatore riporta di default, il che è un’affermazione sul software e non sui mercati.

Che le operazioni tenute dal filtro paghino quanto avrebbero pagato quelle scartate. Se il modello tiene di preferenza le vincenti grandi, l’aritmetica migliora e la soglia scende, e un modello che ordina le operazioni per dimensione attesa anziché smistarle per segno è un oggetto diverso e migliore da quello prezzato qui. La pagina prezza un classificatore perché un classificatore è ciò che la gente costruisce, e perché la cifra di accuratezza che il settore cita è definita solo per un classificatore.

Che un fattore di profitto calcolato su sette operazioni sia un numero. È un rapporto fra due somme, e una di quelle somme ha un solo termine. Se l’unica operazione perdente della lezione 63 fosse costata 1,423 anziché 0,423, il fattore di profitto sarebbe 7,21, la soglia l’87,82 per cento e il premio il 16,10 per cento, con la stessa regola sulle stesse chiusure. Su qualche centinaio di operazioni il rapporto si stabilizza, ma non è mai preciso, e il secondo decimale di qualsiasi soglia calcolata da esso è un ornamento.

Che il 52 per cento sia il riferimento giusto per il tuo modello. Gu, Kelly e Xiu prevedono rendimenti mensili su una sezione trasversale di migliaia di azioni con quasi cento predittori, che è un problema diverso dal valutare setup che il tuo metodo ha già prodotto: loro hanno molti più dati e nessun accesso alla tua regola di ingresso, e per te vale il contrario. La cifra sta su questa pagina come verifica dell’ordine di grandezza che il lavoro migliore del settore raggiunge, e non è una previsione di ciò che farà il tuo classificatore.

Che le configurazioni siano contabili. Questa è la concessione della lezione 64 e un modello la peggiora anziché migliorarla. Gli iperparametri che hai digitato in una griglia sono contabili. La variabile che hai costruito, disegnato, giudicata brutta e cancellata non lo è, e non lo è nemmeno l’obiettivo che hai ridefinito dalla direzione della barra successiva a quella delle tre successive perché il primo non si allenava. Ogni riaddestramento su dati nuovi è un’altra configurazione, e un calendario che riaddestra ogni mese per due anni ne ha fatte girare in silenzio altre ventiquattro.

E la concessione che costa di più: questa pagina ha prezzato un modello e non ha detto nulla sulla possibilità che uno abbia ragione per un motivo. Un filtro che rifiuta le operazioni prese nei primi quindici minuti perché le tue perdenti si addensano lì è una regola, si scrive in una riga, e conta come una sola configurazione con un’asticella di 1,645. Ciò che l’aritmetica di questa pagina punisce non è imparare qualcosa dal proprio registro. È impararne molte e tenere la migliore, che è esattamente in che cosa consiste adattare un modello. La lezione 71 apre il modulo portafoglio chiedendo che cosa comprino quattro regole che una sola non compra, misura la correlazione fra regole anziché assumerla, e trova che i 14,7 mesi prezzati dalla lezione 67 scendono a 14,1 e non a 3,7.

Esercizi

  1. Conta la tua griglia. Prendi l’ultimo modello che hai adattato, o l’ultimo che ti hanno mostrato, e contalo per bene: ogni valore di iperparametro che hai provato, moltiplicato, e quello moltiplicato ancora per il numero di sottoinsiemi di variabili che hai considerato. Leggi l’asticella nella prima tabella qui sopra o calcolala dal conteggio. Dieci minuti, e finisci con un numero, la t che il tuo modello doveva superare, che quasi certamente non è 1,645.
  2. Calcola la tua soglia. Prendi le tue ultime duecento operazioni, somma tutto quello che hanno fatto le vincenti, somma tutto quello che sono costate le perdenti, e dividi la prima somma per la seconda. Mezz’ora, e finisci con un numero, il tuo fattore di profitto, da cui l’accuratezza che un filtro deve superare è quel numero diviso uno più esso, e il massimo che un filtro perfetto potrebbe aggiungere è uno diviso quel numero meno uno.
  3. Misura il filtro che potresti davvero costruire. Taglia il tuo registro in ordine di tempo. Sulla prima metà scegli una variabile per cui sai dare una ragione in una frase e trova l’unica soglia su di essa che separa meglio le tue vincenti dalle tue perdenti. Applica quell’unica soglia, invariata, alla seconda metà, e conta due cose: quante perdenti ha scartato e quante vincenti ha scartato. Una serata, e finisci con un numero, il rapporto fra il primo conteggio e il secondo, che deve superare il tuo rapporto di pagamento prima che il filtro più semplice che puoi costruire valga qualcosa, e che dovresti confrontare con quello che ti aspettavi prima di tagliare il registro.

Fonti. David H. Bailey, Jonathan M. Borwein, Marcos López de Prado e Qiji Jim Zhu, «Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance» (Notices of the American Mathematical Society, 2014), per la formula del massimo atteso da cui è calcolata la prima tabella, ripresa dalla lezione 64 e applicata qui a una griglia di iperparametri anziché a una di parametri. Shihao Gu, Bryan Kelly e Dacheng Xiu, «Empirical Asset Pricing via Machine Learning» (The Review of Financial Studies, 2020), per la misura fuori campione che questa pagina converte nel 52 per cento contro cui ogni sua soglia va letta. Marcos López de Prado, Advances in Financial Machine Learning (Wiley, 2018), per l’argomento che la convalida incrociata ordinaria lascia filtrare informazione in finanza e per la correzione per test multipli di cui la prima tabella è un piccolo caso. Robert D. Arnott, Campbell R. Harvey e Harry Markowitz, «A Backtesting Protocol in the Era of Machine Learning» (The Journal of Financial Data Science, 2019), per il protocollo che impone di registrare il numero di prove prima della ricerca, che è la colonna del foglio aggiunta dalla lezione 64 e spesa da questa pagina.

Lezioni correlate
Lezione 64

Il prezzo di cercare

La formula del massimo atteso e l’asticella che un conteggio di configurazioni fissa.

Leggi la lezione →
La lezione 63

Il backtesting come prova

Le sette operazioni che questa pagina smonta, e la ricerca che le ha prodotte.

Leggi la lezione →
Lezione 17

Aspettativa

Il tasso di successo e il pagamento di cui è fatto un fattore di profitto.

Leggi la lezione →
Solo a scopo educativo. Il trading comporta un rischio sostanziale di perdita. Non è una consulenza finanziaria. I risultati passati non garantiscono risultati futuri.

💬 Discussione (0 commenti)

0/1000

Caricamento dei commenti…

← Lezione precedente Lezione successiva →

Pronto a operare con Signal Pilot?

Metti in pratica la tua formazione con indicatori professionali e strumenti di analisi di mercato in tempo reale.

Torna a Signal Pilot →