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

 
sibirqk:

Se non è un segreto, su quali principi è fatta la serie artificiale? È solo un'onda sinusoidale approssimativa mescolata al rumore, o è più complicato di così?

Dato che ci sono diverse domande al mio post, dovrei rispondere a tutte in una volta.

Questo è il forum per il trading, i sistemi di trading automatico e il test delle strategie di trading.

Come usare il machine learning nel trading: teoria e pratica (trading e non solo)

Yuriy Asaulenko, 2019.02.17 21:01

Ho cercato di usare Python per addestrare una rete neurale. Il pacchetto è scikit-learn, NS stesso è sklearn.neural_network.MLPRegressor. Oltre 100 neuroni, strati nascosti -7, ingressi -19, uscita 1. Il compito è quello di prevedere un processo casuale.

Il compito è artificiale, fatto su un generatore di rumore e in modo che questo rumore possa essere teoricamente previsto. Provato per alcuni conteggi in anticipo.

Risultato del confronto tra previsione e reale per 5 mila punti scelti a caso:

X è la previsione, Y è il valore reale. Sono tutti molto vicini a una linea retta di 45 gradi. Cioè la previsione è quasi perfetta (su campione artificiale).

L'apprendimento è molto veloce - 24 epoche. Nel tempo, circa 10 secondi.

Devo dire che sono rimasto molto sorpreso. Ho cercato in tutti i modi di nascondere i dati. Sono sorpreso che l'abbia trovato. In generale, vicino al misticismo).

Conclusioni: Il NS sklearn.neural_network.MLPRegressor è abbastanza utilizzabile. Non ho ancora provato il classificatore.

Già provato qualcosa con il mercato, nessun risultato finora. Non sta cercando, dice che non c'è niente, anche se il compito è della stessa classe di uno generato artificialmente.

Devo dire subito che non ho inventato la macchina del moto perpetuo e non ho fatto nessun trucco, quindi se ho fatto qualche trucco allora l'ho fatto solo per la mia ignoranza.

All'inizio, un po' di teoria. I processi casuali possono essere previsti, compreso il lancio di una moneta. Tutto dipende dalla formulazione del problema di previsione. Per esempio, la previsione "Domani pioverà" è corretta al 90% circa. Tuttavia, non si dice se pioverà la mattina, il pomeriggio o la sera tardi o se potrebbe piovere tutto il giorno, perché non si ottiene una previsione affidabile.

È possibile prevedere le serie temporali - è possibile a certe condizioni. Una di queste possibili condizioni è la natura limitata dello spettro BP - più ampio è lo spettro, più piccolo è l'intervallo di previsione, più stretto è, più lungo è l'intervallo di previsione.

Le serie temporali del mercato hanno uno spettro infinito, quindi non si può davvero prevedere il prezzo per 5 minuti o un'ora in anticipo. Non mi sono posto un compito del genere.

Ora prepariamo i dati per l'allenamento.

1. otteniamo una serie dal generatore di numeri casuali (RNG) e la trasformiamo in una forma vicina a quella del mercato. Tale serie ha uno spettro illimitato e non è realistico prevedere i suoi valori.

2. passiamo la serie attraverso il filtro passa basso (LPF). Abbiamo ricevuto una serie casuale con uno spettro limitato e la possibilità di prevedere il numero n avanti, tuttavia questa serie non è molto simile a quella del mercato.

3. Generiamo una serie con M=0 dalla RNG e la aggiungiamo alla serie dopo la LPF, dopo aver tenuto un gioco di tamburello. Otteniamo di nuovo una serie che è molto vicina a quella del mercato. Useremo questa serie per la formazione.

4. Come funzione obiettivo prendiamo la serie nel passo 2 passata attraverso la LPF e spostata di N campioni all'indietro che dà la previsione di N campioni in avanti.

Poi alimenta le serie di input e di target al NS, si allena e controlla i risultati dell'allenamento. Poi ripetere i passi 1-4, alimentato serie nel passo 3 al NS e confrontare l'uscita del NS con una serie spostata di N campioni nel passo 4.

Questo è tutto. Nessuna meraviglia. Tutto questo può essere fatto senza NS. Quello che mi ha sorpreso è che l'NS lo ha fatto in pochi secondi, e in soli 24 cicli di clock di apprendimento. E questo con molto rumore, non si può nemmeno vedere la componente a bassa frequenza. Incredibile.

Perché non ha funzionato con il mercato VR. Qualsiasi LPF ha un ritardo significativo e la sua curva è spostata a destra rispetto a VR. Cioè, abbiamo un segnale LF già ritardato in ogni punto della serie, e quindi l'intervallo di predizione risulta essere più grande del consentito, e la predizione diventa irrealistica. Non possiamo nemmeno costruire un vero obiettivo per l'allenamento.

 

Yuriy Asaulenko:

Il concetto di spettro è definito solo per un processo stazionario. Il prezzo non lo è, se non altro perché la dispersione aumenta con il tempo.

 
Aleksey Nikolayev:

Il concetto di spettro è definito solo per un processo stazionario. Il prezzo non lo è, se non altro per l'aumento della dispersione nel tempo.

Questo viene dal ciclo di "un piccolo sambuco in un cottage e un piccolo sambuco a Kiev".
Fuori questione.
 
Yuriy Asaulenko:
Questo è del ciclo, c'è un anziano in un giardino, e uno zio a Kiev.
Fuori questione.

OK, non vi impedirò di vendere tamburi Stradivari.

 
Aleksey Nikolayev:

OK, non vi impedirò di vendere tamburi Stradivari.

Bene, ok, avrò pietà. )) Quasi ogni segnale radio è un processo non stazionario, ma ha uno spettro. La nozione di spettro non ha niente a che vedere con la stazionarietà.
Dovresti andare al ramo T&P, ai fantasisti).
 

Ottenere i prezzi in Python via socket quasi istantaneamente (50k record) in 10 righe di codice

e sul lato mt5 20

Non ho bisogno di libretti improvvisati per R. Perché è così difficile farlo da soli? Grazie per i socket nativi in mt5.

Posso aggiungere qualsiasi funzione molto facilmente, sia che abbiate bisogno di segnali per aprire compravendite o altro.

 
Maxim Dmitrievsky:

Ottenere i prezzi in Python via socket quasi istantaneamente (50k record) in 10 righe di codice

e sul lato mt5 20

Non ho bisogno di libretti improvvisati per R. Perché è così difficile farlo da soli? Grazie per il fatto che i socket nativi funzionano in mt5.

Ci puoi scommettere).

Vedo che sono passati a Spyder. Dovrebbero, è meglio che armeggiare con il tuo notebook.

Non si sa mai. La griglia su un grafico è fatta da plt.grid().

 
Yuriy Asaulenko:
Beh, ok, mi fa pena. )) Quasi ogni segnale radio è un processo non stazionario, tuttavia, ha uno spettro.
Dovresti andare al ramo Tip, dai fantasisti)).

I radioamatori confondono un processo casuale con la sua attuazione.

 
Aleksey Nikolayev:

I radioamatori confondono un processo casuale con la sua attuazione.

Non voglio discutere con i troll.

 
Yuriy Asaulenko:

Sì, giusto).

Vedo che sei passato a Spyder. È vero, è meglio che pasticciare in U-notepad.

ZS La griglia del grafico è fatta da plt.grid().

Ho dovuto armeggiare con spyder per portarlo su python nudo, senza anaconda.

Avevo vscode prima, ma prosciuga la durata della batteria, quindi devo raggiungere la presa.

Motivazione: