Ipotesi basate su Fourier - pagina 11

 
equantis >> :

Proprio così, vale la pena tenere...

Per chiudere la questione vorrei mostrare un'immagine con risultati tipici:

Blu - prezzo

Rosso - previsione fatta dal programma con trasformazione del coseno da 0

viola - la stessa curva, ma calcolata dal punto di partenza della previsione (100)

Verde - semplice previsione basata sulla curva dei prezzi (ho usato la funzione built-in predict)



Come ho scritto prima, il trucco è identificare il modello. Il problema è davvero complicato, non può essere risolto solo a occhio. E concettualmente, se posso dire così - la "previsione nel dominio della frequenza" è usata in alcuni compiti, ma molto specifici.

 
grasn писал(а) >>

Come ho già scritto, il trucco è identificare il modello. Il problema è davvero complicato, non può essere risolto solo a occhio. E concettualmente, se posso dire così - la "previsione nel dominio della frequenza" è usata in alcuni compiti, ma molto specifici.

Ho passato quasi un mese a smontare con PF e tutto invano. Ho provato a prevedere qualsiasi cosa, serie temporali, medie mobili, indicatori, ma tutti i risultati erano 50-50 (o giù di lì).

Ho cercato di implementare la tua idea con la trasformazione discreta del coseno. Purtroppo dopo la trasformazione del coseno inverso ho ottenuto il seguente quadro: nel segnale restaurato l'ultima barra (per il quale la predizione è stata effettivamente fatta) ha semplicemente ripetuto la penultima barra (l'ultima nel set di allenamento) con un certo piccolo errore.

Per sicurezza, descriverò un breve algoritmo di quello che stavo facendo:

  1. Ha preso un set di dati di prova che inizia con START = 1:FRAME
  2. Selezionato una finestra WIND per ogni set di dati (cioè il campionamento è stato eseguito nell'intervallo START:START+WIND)
  3. Per ogni finestra, ha fatto una trasformazione del coseno.
  4. Tutti i risultati sono stati combinati in una matrice di dimensioni FRAME x WIND dove le colonne contenevano i coefficienti di conversione del coseno per ogni frequenza e le righe contenevano i coefficienti per una frequenza per ogni set di dati di prova
  5. Per ogni colonna di coefficienti è stata addestrata una piccola rete neurale che, basandosi su quattro valori precedenti, ha previsto molto bene il prossimo cambiamento della sinusoide di 1 bar. La rete neurale è stata approcciata perché la predizione AR stava dando risultati molto scarsi.

  1. Ha prodotto un insieme di coefficienti predetti per il set di dati predetti, dove l'ultima barra era il valore desiderato. Una trasformazione inversa del coseno è stata eseguita sui coefficienti predetti.

Ora una pausa... ahimè, non ci sono miracoli - la barra prevista con un piccolo errore ha ripetuto la penultima barra della sequenza di test. Analizzando il risultato ho scoperto che la prima barra era cambiata un po', mentre tutte le altre sono rimaste invariate, spostandosi solo di una posizione (come dovrebbe essere). Ma l'ultima barra ha semplicemente ripetuto la penultima, invece delle previsioni. (Vedere l'immagine qui sopra).

Forse questo risultato può essere utile per alcuni matematici, ma per il compito di prevedere EURUSD si è rivelato inutile. Ahimè. Ancora. )))

 
equantis >> :

Ho passato quasi un mese a cercare di risolvere le cose con il PF ed è stato tutto inutile. Ho provato a predire tutto: serie temporale, media mobile, indicatori, e tutti i risultati di predizione erano 50-50 (o giù di lì).

Ho cercato di implementare la tua idea con la trasformazione discreta del coseno. Purtroppo dopo la trasformazione del coseno inverso ho ottenuto il seguente quadro: nel segnale restaurato l'ultima barra (per il quale la predizione è stata effettivamente fatta) ha semplicemente ripetuto la penultima barra (l'ultima nel set di allenamento) con un certo piccolo errore.

Per sicurezza, descriverò un breve algoritmo di quello che stavo facendo:

  1. Ha preso un set di dati di prova che inizia con START = 1:FRAME
  2. Selezionato una finestra WIND per ogni set di dati (cioè il campionamento è stato eseguito nell'intervallo START:START+WIND)
  3. Per ogni finestra, ha fatto una trasformazione del coseno.
  4. Tutti i risultati sono stati combinati in una matrice di dimensioni FRAME x WIND dove le colonne contenevano i coefficienti di conversione del coseno per ogni frequenza e le righe contenevano i coefficienti per una frequenza per ogni set di dati di prova
  5. Per ogni colonna di coefficienti è stata addestrata una piccola rete neurale che, basandosi su quattro valori precedenti, ha previsto molto bene il prossimo cambiamento della sinusoide di 1 bar. La rete neurale è stata approcciata perché la predizione AR stava dando risultati molto scarsi.

  1. Ha prodotto un insieme di coefficienti predetti per il set di dati predetti, dove l'ultima barra era il valore desiderato. Una trasformazione inversa del coseno è stata eseguita sui coefficienti predetti.

Ora una pausa... ahimè, non ci sono miracoli - la barra prevista con un piccolo errore ha ripetuto la penultima barra della sequenza di test. Analizzando il risultato ho scoperto che la prima barra era cambiata un po', mentre tutte le altre sono rimaste invariate, spostandosi solo di una posizione (come dovrebbe essere). Ma l'ultima barra ha semplicemente ripetuto la penultima, invece delle previsioni. (Vedere l'immagine qui sopra).

Forse questo risultato può essere utile per alcuni matematici, ma per il compito di prevedere EURUSD si è rivelato inutile. Ahimè. Ancora. )))

E non ho detto che ci sarà un miracolo. Ci sono alcune incertezze:

Una piccola rete neurale è stata addestrata per ogni colonna con dei coefficienti, che prevedevano molto bene il prossimo cambiamento di 1 bar nella sinusoide sulla base dei quattro valori precedenti. La rete neurale è stata approcciata perché la predizione AR stava dando risultati molto scarsi.

Non sono sicuro che un NS su 4 numeri di una serie così complessa possa prevedere molto bene il futuro. Molto improbabile. E se prevede, perché c'è una così grande discrepanza? E cosa c'entra la "sinusoide"? Per quanto riguarda il modello AR, ogni curvatura, è in realtà un processo AR, molto vicino ad esso nelle sue proprietà. L'identificazione di un tale modello è complicata, si usano molti metodi (stranamente, più complicati di NS): backtracking e predizione, criterio di Akiache, "valigia", funzioni di trasferimento autoregressive, criteri di accordo e massima verosimiglianza (e loro varianti), correlazione reciproca, approssimazione stocastica, filtraggio (è usato anche per l'identificazione del modello).


Almeno l'idea è buona come la tua. :о) Se non ha funzionato - non ha funzionato, e succede, mi dispiace sinceramente per il tuo tempo, non posso aiutarti a restituirlo. Ma a proposito qui https://forum.mql4.com/ru/24888/page9 nel caso in cui vi avessi avvertito. Ci sono molte sottigliezze in questo modello, alcune delle quali ho modestamente omesso. Una di queste sottigliezze è che è inutile prevedere un singolo conteggio con un tale modello, proprio inutile. Semplicemente non otterrete la precisione che volete, e non la otterrete mai. Bisogna prevedere in senso "statistico". È così, in termini letterari.


 

Grasn, comunque, grazie mille per l'idea! Il processo è stato piacevole e non si è perso tempo)) E il risultato deve ancora arrivare!

grasn писал(а) >>

Non sono sicuro che NS su 4 numeri di una serie così complessa possa prevedere bene il futuro. Ne dubito molto. E se è così, perché c'è una così grande discrepanza? E cosa c'entra la "sinusoide"?

1. Se consideriamo il cambiamento di ogni coefficiente DCT, come hai scritto, assomiglia molto a una specie di "curva-sinusoide" (con frequenza corrispondente al numero d'ordine del coefficiente, soprattutto per le oscillazioni ad alta frequenza), che cambierà la sua ampiezza con il tempo. Ho provato a usare AR per prevedere "la testa", più o meno come nel tuo esempio in Matcad.

Se consideriamo la previsione della "curvulina" per 1 barra, allora AR (almeno ho provato tutte le formule che ho in Matlab) dà risultati molto imprecisi, specialmente per le "curvuline-sinusoidi" con periodi dispari (anche se potrei non averle provate tutte). In questo caso una semplice rete neurale (in Matlab è implementata con la funzione newlind (penso che non sia nemmeno una rete neurale, ma solo un solutore per un insieme di equazioni lineari), quando predice 1 punto, dà risultati molto buoni (visivamente).

2. Mi trovo abbastanza bene, su 50 barre predice esattamente (quasi esattamente) 48 barre e le sposta di 1 posizione a sinistra, facendo solo 1 errore (non so perché) e l'ultimo (mi dispiace, stavo facendo tutto per). Apparentemente i "micro errori" di previsione su ogni "curveline" si sommano nella conversione inversa in questo modo.

Ho provato a "imbrogliare" l'algoritmo cercando di nascondere l'ultima barra all'interno del segmento di prova (ho fatto un semplice spostamento circolare), ma erano ancora l'ultima e la prima barra ad essere sbagliate.

3. A proposito, ha cercato di prevedere non solo la chiusura (come la serie più mal prevista), ma anche alto/basso/aperto, e la differenza e anche i minimi-massimi dello zigzag. (Come esempio di una serie, con un asse temporale distorto). Poiché il risultato è lo stesso, la conclusione è ovvia - questo metodo sposta solo N-2 barre a sinistra di 1 barra "di testa", ma non prevede gli zigzag.

Per quanto riguarda il modello AR, ogni curva è in effetti un processo AR, molto vicino ad esso per le sue proprietà. L'identificazione di un tale modello è complicata, si usano molti metodi (stranamente, più complicati di NS): inversione e previsione, criterio di Akiache, "valigia", funzioni di trasferimento autoregressive, criteri di accordo e massima verosimiglianza (e loro varianti), correlazione reciproca, approssimazione stocastica, filtraggio (che è anche usato per l'identificazione del modello).

Grazie una seconda volta - molti nomi nuovi - altri da provare!

Ci sono molte sottigliezze in questo modello, alcune delle quali ho umilmente omesso. Una di queste sottigliezze è che è inutile prevedere un singolo campione con un tale modello, è semplicemente inutile. Semplicemente non otterrete la precisione che volete, e non la otterrete mai. Bisogna prevedere in senso "statistico". È così, in termini letterari.

Grazie una terza volta, proviamo in senso "statistico"))

 

lieto di essere d'aiuto. Buona fortuna :o)


A proposito, cercherò di postare una previsione nel thread 'Real Time Prediction System Testing' qui vicino. Se ce la faccio per lunedì, altrimenti la posterò più tardi. Quindi, "mettiti in contatto".

 
2 grasn:

1. Mi è venuta un'idea: se applico la trasformata del coseno due volte (prima sulla sezione di prova e poi su ciascuna delle "curve" che sono così simili alle sinusoidi), questo non "migliorerà" le proprietà predittive del processo? Cercherò di dirvi i risultati domani.

2. naturalmente nel caso della previsione a lungo termine di certi tipi di processi AR sarà migliore, anche se la sovrapposizione di due sinusoidi può essere ben interpolata da una rete neurale.

3. Ho capito bene (ho letto il tuo post da qualche parte), che per questo metodo è meglio prevedere ln(Xi/Xi-1) invece di Close stesso?

 
equantis >> :

1. Mi è venuta un'idea: se applico la trasformata del coseno due volte (prima sulla sezione di prova e poi su ciascuna delle "curve" che sono così simili alle sinusoidi), questo non "migliorerà" le proprietà predittive del processo? Cercherò di dirvi i risultati domani.

2. naturalmente nel caso di previsione a lungo termine di certi tipi di processi AR sarà migliore, anche se la sovrapposizione di due sinusoidi può essere ben interpolata da una rete neurale.

3. Ho capito bene (ho letto il tuo post da qualche parte), che per questo metodo è meglio prevedere ln(Xi/Xi-1) invece di Close stesso?

1. deve essere provato.

2. il punto è che la dinamica per frequenze non ha periodi, è un processo complicato e non è affatto una sovrapposizione di onde sinusoidali

3. sì, questa è una delle opzioni per portare a una fila ferma.

Motivazione: