L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 50

 
mytarmailS:

Ecco anche questo ragazzo senza fronzoli che parla, guarda dal minuto 10

https://www.youtube.com/watch?v=KUdWTnyeBxo&list=PLDCR37g8W9nFO5bPnL91WF28V5L9F-lJL&index=3

Nel video, il punto non è applicare esattamente una serie di Fourier, ma usare qualche funzione per elaborare i dati e trasferirli in un altro spazio (trasformazione kernel). Si suggerisce di convertire le immagini in palette di colori HSL, il suono in istogramma di frequenze. Tutto questo cambierà i dati, ma può essere facilmente ripristinato dalla funzione inversa se necessario. Questa conversione deve in qualche modo avere un senso logico, in modo che le classi dopo la conversione possano essere più facilmente raggruppate tra loro nello spazio multidimensionale, per semplificare la classificazione. Se dopo qualsiasi trasformazione le classi saranno ancora più disperse nello spazio di prima - non c'è niente di buono in questa azione, sarà solo peggio.

Non è necessario usare esattamente Fourier, poiché non è consigliato. Alexey, per esempio, suggerisce di prendere i delta tra le barre, non i valori grezzi. Yury in libVMR ha usato diverse trasformazioni matematiche, è anche interessante, guarda le sue fonti su java. È possibile decomporre i dati utilizzando il metodo dei componenti principali, e alimentarli nel componente neuronico, su questo SanSanych e io abbiamo condiviso alcuni articoli ed esempi. Quello che vuoi fare ha centinaia di soluzioni, Fourier è solo una di queste.

Oppure si può semplicemente usare la neuronica con decine di strati, e funzionerà da sola sui dati grezzi, senza alcuna trasformazione del kernel. Ma ci saranno molti problemi con la regolamentazione, la convalida incrociata ecc.

Inoltre, nessuno di questi metodi eliminerà il problema della spazzatura in entrata. Input spazzatura -> post-conversione spazzatura -> output spazzatura -> fronttest prugna.

 
mytarmailS:

Una domanda: è possibile misurare le somiglianze tra le funzioni attraverso l'ampiezza, la fase e la frequenza?

ECCO!!! Non mi interessa nient'altro...

Tutto il resto scritto su Fourier è una conseguenza della risposta di CC e non è rilevante per la mia domanda

Se le funzioni sono periodiche, è possibile. Se non è periodica, ci saranno errori nel confronto dei bordi (all'inizio - valore 0 dell'argomento, e alla fine del periodo - valore 2*PI dell'argomento) delle due funzioni.
 
Dr.Trader:

Nel video il punto non è applicare esattamente la serie di Fourier, ma elaborare i dati in qualche funzione per trasferirli in un altro spazio (trasformazione kernel).

Oppure si può semplicemente usare la neuronica con decine di strati e funzionerà da sola sui dati grezzi senza alcuna trasformazione del kernel.

Le trasformazioni del kernel in questo video sono selezionate manualmente visualizzando le coppie di predittori. Cioè, avete bisogno di uno specialista umano che trovi visivamente le coppie appropriate e selezioni le trasformazioni del kernel adeguate per loro.

Dr.Trader:


Oppure si può semplicemente prendere una neuronica con decine di strati, si risolverà da sola sui dati grezzi senza alcuna trasformazione del kernel.

Il video dice che non solo non funzionerà, ma diventerà ancora più confuso. Inoltre, i metodi di propagazione dell'errore inverso non regolano praticamente i pesi negli strati lontani dallo strato di uscita - il segnale non ci arriva, e se ci arriva, è troppo debole.


Dr.Trader:


Yuri ha usato in libVMR diverse trasformazioni matematiche, è anche interessante, guarda il suo codice sorgente in java


Non varie, ma compilate algoritmicamente con il metodo di fattorizzazione di gruppo degli argomenti (GMDH) di A.G. Ivakhnenko. Se prendi a caso, cioè senza alcuna struttura, otterrai delle stronzate.


 
Yury Reshetov:
Se le funzioni sono periodiche, è possibile. Se non è periodico, ci saranno errori quando si confrontano i bordi (all'inizio - valore 0 dell'argomento, e alla fine del periodo - valore 2*PI dell'argomento) di due funzioni.

Capisco, ci sarà ancora distorsione alle estremità e più vicino al bordo più forte, mi dispiace, non si adatta....

Il dottor Trader.

come viene addestrata la tua rete neurale?

 

Ho trovato questo su un sito web, ma non funziona più per qualche motivo

Forse qualcuno potrebbe essere interessato:

".... Seguendo le vostre raccomandazioni ho costruito diversi modelli di robot, i robot stanno imparando e riconoscono alcune cose con nuovi dati, ma i risultati, ahimè, sono ancora lontani da quello che mi aspettavo.

.... Prima ho applicato l'approssimazione polinomiale-armonica ai filtri passa-basso per ottenere il primo set di caratteristiche secondarie, un filtro per la tendenza a breve termine e un secondo per la tendenza a lungo termine. Frequenze, ampiezze cos e sin e coefficienti P come caratteristiche secondarie. ... La rete ha imparato, ma non ha generalizzato.

...Il passo successivo è stato un nuovo modello: applichiamo un filtro passa-basso (ho usato un filtro Butterworth del 2° ordine) al prezzo di chiusura, applichiamo un'approssimazione polinomiale-armonica, trasformiamo A*cos(wx)+B*sin(wx) nella forma M*sin(wx+f) e prendiamo M e f come attributi secondari.

.... E con questo modello sono riuscito a costruire una rete che aveva ottime proprietà di generalizzazione: riconosceva correttamente quasi tutti i nuovi dati.

L'approssimazione polinomiale-armonica richiede tempo, quindi ho deciso di fare un altro modello: un insieme di filtri passa-banda con uguale distribuzione di frequenza, applicarli al filtro LF dei prezzi di chiusura e poi applicare la trasformata di Hilbert. Sono anche riuscito a fare una rete per il modello di mercato artificiale che ha riconosciuto con successo i nuovi dati.

Dopo di che ho applicato questo modello a citazioni reali:

- filtriamo il prezzo di chiusura con un filtro LF adattivo.

- costruire un insieme di filtri passa-banda per rilevare le onde del mercato.

- applicare la trasformata di Hilbert.

- prima serie di attributi secondari: valori del filtro passa banda, valori istantanei di ampiezza e fase.

- costruiamo un filtro passa-basso dal prezzo vicino.

- la seconda serie di attributi secondari - la deviazione relativa dei prezzi di chiusura e bassi dell'ultima candela, i livelli di supporto e resistenza dal valore del filtro LF, il volume relativo in una barra (rispetto al valore medio).

- creare un campione di allenamento.

Il risultato è il seguente: la rete sta imparando ma funziona male sui nuovi dati. Da qualche parte predice accuratamente i minimi, e da qualche parte dimentica cosa fare. Rispetto a quello che facevo prima, il risultato sembra essere di un livello qualitativamente diverso. Sì. Un'altra cosa per chiarire, ho seguito le regole empiriche: numero di caratteristiche della rete in ingresso (caratteristiche secondarie in questo caso) < dimensione del campione di allenamento/10, numero di neuroni in uno strato nascosto non superiore al numero di ingressi della rete...". Spero che questi estratti della lettera vi diano un'idea dei possibili approcci al recupero delle caratteristiche.

 
mytarmailS:

Capisco, ci sarà ancora una distorsione alle estremità e più è vicino al bordo più è forte, peccato che non si adatti....

La questione se si adatta o meno è molto banale. Per prima cosa, decomponi la funzione in serie di Fourier, poi ripristinala dalla serie mediante trasformazione inversa. E confrontare la funzione iniziale prima della decomposizione e quella restaurata. Se la funzione ricostruita è fondamentalmente diversa dalla funzione originale, diventa abbastanza ovvio che questo metodo non funzionerà.

Per le funzioni non periodiche si raccomanda di usare le trasformate wavelet. Non l'ho provato personalmente. Ma a giudicare dal modo in cui un'immagine viene prima compressa da wavelets e poi restaurata con alcune distorsioni, ma non visivamente evidenti rispetto alle distorsioni da trasformate di Fourier, è abbastanza ovvio che le wavelets sono più adeguate per serie non periodiche rispetto alle trasformate di Fourier. Poiché non ho esperienza pratica nell'applicazione di wavelets ai BP quotati, non posso condividere informazioni utili su quali wavelets siano più adeguate in questo caso. E ce ne sono un carro e un piccolo carretto.

mytarmailS:

Come va la tua rete neurale?

Dipende da che tipo di compito e di dati? Se gli dai un campione di numeri a caso, borbotta: "Garbage in, Garbage out". Ma se gli date un campione di predittori significativi, produrrà valori di generalizzabilità. Non ci vuole molto per allenarsi, almeno per un campione di una dozzina di predittori e qualche migliaio di esempi.
 
Yury Reshetov:

La domanda se funzionerà o meno è abbastanza banale. In primo luogo, decomponi la funzione in una serie di Fourier, poi ricostruiscila dalla serie risultante mediante trasformazione inversa. E confrontare la funzione originale prima della decomposizione e la funzione ricostruita. Se la funzione ricostruita è fondamentalmente diversa dalla funzione originale, è ovvio che questo metodo non funzionerà.

Probabilmente lo farò.... Prima vi dirò cosa sto facendo in generale e cosa devo risolvere, e poi mi direte i vostri suggerimenti in merito, perché penso che vi sto confondendo tutti...
 

Un po' di preistoria....

Ho iniziato a cercare dei modelli nella storia usando il seguente principio:

1) abbiamo il prezzo attuale - che siano le ultime 20 candele

2) andiamo nella storia e cerchiamo una situazione simile nel passato (la vicinanza si misura con la correlazione di Pearson e Euclide)

3) quando troviamo una tale situazione, guardiamo come è finita - con la crescita o il declino

4) quando abbiamo trovato molti di questi analoghi è possibile raccogliere le statistiche con una certa prevalenza, per esempio abbiamo trovato 10 analoghi

8 dei quali sono finiti in crescita e 2 - in declino, ecco una previsione di ciò che accadrà al prezzo :)

Cioè, ho fatto qualcosa di simile come nel "metodo di compilazione degli analoghi - previsione senza modello" di Ivakhnenok, ma il mio metodo è molto più primitivo

Bene, questo approccio si è rivelato non funzionare per una serie di ragioni

1) più candele nel vettore richiesto, meno analogie si possono trovare nella storia, in pratica se si prendono tutti i prezzi OHLC e la precisione della correlazione di Pearson >0,93, un vettore di 3 candele sarà il limite, mentre una previsione normale ha bisogno di un vettore molto più grande

2) In pratica, non ci sono praticamente situazioni di prezzo identiche nel mercato....

3) Si scopre che non possiamo aumentare il vettore, perché perderemmo molta precisione. Ma anche se potessimo, non riusciremmo a trovare un analogo in un vettore più grande, perché non ci sono situazioni identiche

La soluzione è stata trovata.....

 
Yury Reshetov:

Dipende da quali compiti e dati? Se gli passi un campione di numeri casuali, borbotta: "Garbage in, Garbage out". E se gli date un campione di predittori significativi, produce valori di generalizzabilità. Non ci vuole molto per allenarsi, almeno per un campione di una dozzina di predittori e qualche migliaio di esempi.

Saluti!!!! Uso LibVMR ma sembra essere una vecchia versione, perché continua a ricevere l'errore "Bad Data". Ho capito che c'è una nuova versione. Dove posso scaricarlo? Se è possibile?
 
mytarmailS:

Un po' di preistoria....

Ho iniziato a cercare dei modelli nella storia usando il seguente principio:

1) abbiamo il prezzo attuale - che siano le ultime 20 candele

2) Andiamo nella storia come un ciclo e cerchiamo una situazione simile nel passato (la vicinanza è stata misurata dalla correlazione di Pearson e da Euclide)

Non è abbastanza chiaro? Stai prendendo i prezzi come OHLC per i modelli o qualche tipo di trasformazione di essi?

Il punto è che se si prende l'OHLC così com'è, un pattern simile ma 1.000 pip più alto o più basso di quello che viene confrontato differirà in distanza euclidea più di un pattern completamente dissimile ma 10 pip più alto o più basso di quello che viene confrontato. E la differenza sarà di due ordini di grandezza, quindi anche l'errore di confronto sarà di due ordini di grandezza.