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

 
mytarmailS #:
Tu segui, ma non capisci nulla...(

Per esempio cosa - per risolvere qualsiasi problema è necessario un criterio di risoluzione del problema, è anche un errore))))


Ora ho notato che hai completato il post. Quindi mi permetto di rispondere.

Voi non cercate altro che errori. Qui sta il problema dei sognatori del MO. Cercare gli errori, non i risultati specifici delle previsioni. Anche il più piccolo errore è al 100% un errore)). Prima di tutto nei mercati finanziari.

Continuate a sbagliare))) Non risponderò e non interferirò più.

 
Uladzimir Izerski #:

Ho notato ora che hai aggiornato il post.

Inoltre, ho risposto alla tua domanda molto tempo fa))


Uladzimir Izerski #:

Non cercate altro che errori. Questo è il problema dei sognatori del MO. Cercare gli errori, non i risultati concreti delle previsioni.

Lei ha una visione molto, molto ristretta del concetto di "errore".

in un caso si trattava di un errore di previsione di un indicatore,

in un altro caso, ad esempio, l'errore potrebbe essere la curva di bilancio, o la deviazione da un capitale ideale,

o la dinamica di crescita del capitale,

oppure, ad esempio, il numero di errori dell'algoritmo (anche il numero di errori dell'algoritmo è un errore).

oppure si può guardare il robot algoritmico con gli occhi e dirgli (tramite codice/pulsante) - mi piace questo, ma non fare quest'altro, e anche questo può essere considerato un errore....

E ci sono milioni di varianti diverse, e anche quello che fate, avete un criterio (buono/cattivo). Anche questo è un errore.

Il fatto che non ve ne rendiate conto, che non lo ammettiate, è solo vostro...


Un errore è un criterio buono/cattivo espresso da un numero.

 

Uladzimir cerca ancora una volta, con la sua mente infantile e curiosa , di comprendere significati che per lui sono grandi e di screditare i partecipanti a questo thread, cioè quei significati:

Ricostruzione dell'equazione:" scatolanera".

"Scatola nera " è sia laformulazionepiù difficileche quella più"seducente " di un problema di modellazione,in cuinon ci sonoinformazioni a priori sull'oggetto,equindi sulla struttura del modello. L'intrigo sta nel fatto che unmodelloin grado di riprodurre il comportamento osservato o di fornire una previsione dell'ulteriore evoluzionedovrebbe essere ottenuto solo dalla serie osservata,cioèpraticamente"dal nulla".Leprobabilità di successo sono ridotte,ma in caso di fortuna, un"buon " modello diventa uno strumento molto prezioso per caratterizzare l'oggetto e comprendere i"meccanismi " del suo funzionamento: "quasi un bluff può portare a una grande vincita".L'assenza di informazioni a priori costringe a utilizzare strutture universali di equazioni del modello, per esempioreti neurali artificiali, funzionia base radiale,polinomi algebrici, ecc.Tali modelli si rivelano spesso multidimensionali e contengono molti parametri sconosciuti.


ZY e più di un anno fa ha scritto che lui stesso usa le reti neurali e che tutti i suoi TS sono basati su di esse... che pagliaccio che è abzdez

#870

#1826

Il nostro caro Uladzimir ha imparato le reti neurali molto velocemente, in 2 mesi, a quanto pare.

Vorrei che lo avesse fatto, ma due anni prima stava già ricevendo segnali dal NS.

#5758

Quindi il tipo dice sciocchezze in stato di ubriachezza e mente, mente, mente.... e non fa altro che screditare se stesso e i suoi folli indicatori.

 

Risulta essere un test abbastanza buono del modello attraverso la distorsione della finestra. Se fornisce molti lag, invece di zero, con statistiche migliori (come mi), allora il modello si basa sulla randomizzazione.

Altrimenti sarebbe inequivocabile, non ci possono essere così tanti TS redditizi contemporaneamente.

Ho provato a selezionare tramite std secondo le istruzioni di Sanych - all'incirca la stessa immagine. Ma ho selezionato insiemi di tratti, non ciascuno di essi separatamente.

Esaminerò di nuovo i tratti separatamente

 
>>> results = []
>>> for i in range(25):
...     pr = get_prices()
...     pr = labeling_shift(pr,shift=i)
...     mi = mutual_info_classif(pr[pr.columns[1:-1]], pr[pr.columns[-1]])
...     results.append([mi.mean(), mi.std(), mi, i])
...     print(i)
... 
results.sort()
results[-1]    
pd.DataFrame(results)

Il miglior punteggio è il lag 9, ma lo std è migliore con lo 0:

15  0.002473  0.002008  [0.0, 0.0, 0.0, 7.738132773948969 e-05, 0.00428...   0
16  0.002482  0.002536  [0.0027194272625081783, 0.004082692968791601, ...   4
17  0.002544  0.002137  [0.00016451381901605444, 0.003159073557252867,...   2
18  0.002678  0.002174  [0.0, 0.0015686230398428425, 0.000974887322880...   8
19  0.002749  0.001978  [0.0, 0.001425018820565338, 0.0, 0.0, 0.002788...   1
20  0.002793  0.002378  [0.00535509344523355, 0.0, 0.00400320235670181...  12
21  0.002897  0.002330  [0.00406257691063705, 0.001421806087245736, 0....  13
22  0.003113  0.002501  [0.0, 0.0, 0.004822852461999094, 3.66068989796...  10
23  0.003195  0.002560  [0.0024128008240758003, 0.0, 0.001845732619932...  11
24  0.003255  0.002406  [0.0, 0.0, 0.0034648745240082324, 0.0063568287...   9

Okabe guarda i backtest di entrambi, 9°:

0-я:

Lo 0° ha, logicamente, uno spread di valori inferiore nel backtest, perché lo std per mi è inizialmente più piccolo. Ma non influisce sui risultati di OOS, né sul valore più alto di mi (informazione reciproca).

Bene, supponiamo di effettuare il retraining su un numero elevato di caratteristiche (14 caratteristiche in questo caso).

MA_PERIODS = [i for i in range(10, 150, 10)]

Esaminiamo le statistiche di ciascuna caratteristica e scegliamo solo le migliori per il modello con 9 lag:

>>> results[24]
[0.003255328338368026, 0.002405621052220332, array([0.        , 0.        , 0.00346487, 0.00635683, 0.00490859,
       0.        , 0.00305732, 0.00268664, 0.00877952, 0.00305562,
       0.00138638, 0.00320064, 0.00415751, 0.00452067]), 9]
>>> 

Alcune caratteristiche sono del tutto nulle, cioè non hanno alcun valore. Scegliamo solo quelle che hanno un valore superiore a 0,004 e ci alleniamo su di esse:

>>> per = results[24][2]
>>> np.array(per) > 0.004
array([False, False, False,  True,  True, False, False, False,  True,
       False, False, False,  True,  True])
>>> 

MA_PERIODS = [40, 50, 90, 130, 140] - отобранные фичи

Addestramento e test:

Mnde.

Conclusione: una maggiore correlazione delle informazioni sul campione di addestramento non aiuta a migliorare il modello sul campione di test.

Ma questo può essere usato per spremere frazioni di % nelle competizioni, che è quello che dicono i professionisti, che la preselezione delle caratteristiche per i modelli moderni come Busting non dà quasi nulla.

 
Maxim Dmitrievsky #:

Risulta essere un test abbastanza buono del modello attraverso la distorsione della finestra. Se produce molti lag, invece di zero, con statistiche migliori (come mi), allora il modello è costruito sulla casualità.

altrimenti sarebbe inequivocabile: non ci possono essere così tanti TC redditizi contemporaneamente.

Ho provato a selezionare attraverso std secondo le istruzioni di Sanych - più o meno la stessa immagine. Ma ho selezionato insiemi di segni, non ciascuno di essi separatamente.

Guarderò di nuovo i tratti separatamente

std della stima numerica della correlazione tra un tratto e un tratto target?

Per prima cosa è necessario rimuovere i tratti correlati. Per qualche motivo, la correlazione ottimale per i miei tratti è del 75%.

Quindi selezionare 5-10 tratti con il punteggio massimo.

Disegnate dei quadri, come sopra nel mio post, per assicurarvi che la correlazione divida i voti.

L'errore di previsione dovrebbe essere inferiore al 30%. In caso contrario, i tratti dovranno essere scartati.

 
СанСаныч Фоменко #:

std una stima numerica della relazione tra un tratto e un obiettivo?

Per prima cosa è necessario rimuovere i tratti correlati. Nei miei tratti, per qualche motivo, la correlazione ottimale è del 75%.

Quindi selezionare 5-10 attributi con il punteggio massimo.

Disegnate dei quadri, come sopra nel mio post, per assicurarvi che la correlazione sia divisa per classi.

L'errore di previsione deve essere inferiore al 30%. In caso contrario, le caratteristiche dovranno essere scartate.

Dall'entropia si può vedere che la correlazione è trascurabile (0,003), ma dovrebbe tendere a 1.

Ma ho stimato la differenza, quindi non ha importanza. Dovrebbe comunque esserci un piccolo miglioramento. Forse non c'è perché la differenza è minima.

In generale, anche se tutto è buono (ce ne sono di buoni nel set), non è necessario rimuovere le altre caratteristiche.

È solo una base per altre cose, come una finestra non standard.
 
Maxim Dmitrievsky #:

è chiaro dall'entropia che la correlazione è trascurabile (0,003), ma dovrebbe tendere a 1.

Ma ho stimato la differenza, quindi non ha importanza. Dovrebbe comunque esserci un piccolo miglioramento. Forse non c'è perché la differenza è minima.

in generale, anche se tutto è buono (ce ne sono di buoni nel set), il resto dei chip non deve essere rimosso.

Il punteggio stesso è una cosa relativa.

Ripeterò le immagini.

Male, senza speranza


Meglio, se ce ne sono diversi, possiamo parlare di un errore di previsione del 30%.



E la spazzatura dovrebbe essere rimossa, perché sul set di allenamento il chip può trovarsi a favore della spazzatura, è più facile trovare il valore che porta all'optimum.

 
Maxim Dmitrievsky #:

La preselezione delle caratteristiche per i moderni modelli di tipo Busting non produce quasi nulla.

Busting cerca le migliori suddivisioni da tutte le colonne e da tutti gli esempi. Utilizza cioè i chip migliori.
Schuch. forest prende metà dei chip e metà degli esempi (la frazione è configurabile) per ogni albero e poi da 20-100 alberi trova la media. Se ci sono solo 5 chip informativi su 200 chip, alcuni alberi non conterranno chip informativi (in media 2,5 chip informativi per albero). E una parte degli alberi informativi verrà mediata con alberi rumorosi. Il risultato sarà anche molto rumoroso.
Un albero di rumore funzionerà bene se ci sono molte schede informative (come negli esempi classici/ compiti MO).

Busting troverà e utilizzerà le schede più informative, poiché le controlla tutte. Quindi, secondo la logica del bousting, selezionerà da solo le schede migliori. Ma anche il busting ha i suoi problemi.

 
elibrarius #:

Busting troverà e utilizzerà i chip più informativi, perché li controlla tutti. Quindi, secondo la logica di Busting, selezionerà i chip migliori. Ma anche il busting ha i suoi problemi.

Ho creato un topic con un esempio che dimostra il contrario: il boosting non è onnipotente, soprattutto fuori dalla scatola.