Previsioni del mercato dei cambi con reti neurali


10

Vorrei utilizzare ANN per automatizzare le valute di trading, preferibilmente USD / EUR o USD / GBP. So che è difficile e potrebbe non essere semplice. Ho già letto alcuni articoli e fatto alcuni esperimenti, ma senza molta fortuna. Vorrei ricevere consigli dagli esperti per farlo funzionare.

Ecco cosa ho fatto finora:

  1. Ho ricevuto i dati tick per tick per il mese di luglio 2013. Ha bid / ask / bid volume / ask volume.
  2. Estratti tutti i tick per l'intervallo di tempo dalle 12:00 alle 14:00 per tutti i giorni.
  3. Da questi dati, creato un set di dati in cui ogni voce è composta da n valori di offerta in sequenza.
  4. Utilizzato quei dati per formare un ANN con input n-1 e l'output è l'ennesimo valore di offerta previsto.
  5. La ANN aveva neuroni di input n-1, (n-1) * 2 + 1 neurone nascosto e 1 output. Lo strato di input aveva TF lineare, nascosto aveva log TF e l'output aveva TF lineare.
  6. Ho addestrato la rete con la propagazione posteriore prima con n-125 e poi 10.

Per entrambi n, l'MSE non è sceso al di sotto di 0,5 ed è rimasto a quel valore durante la formazione completa. Supponendo che ciò potrebbe essere dovuto al fatto che le serie temporali sono totalmente casuali, ho usato il pacchetto R per trovare un'auto-correlazione parziale sul set di dati (pacf). Ciò ha dato valori diversi da zero solo per ritardi di 2 e 3.

Domanda 1: cosa significa esattamente?

Quindi ho usato l'esponente di Hurst per valutare la casualità. In R, hurst (valori) ha mostrato valori superiori a 0,9.

Domanda 2: dovrebbe essere quasi casuale. Dovrebbe avere un valore più vicino a 0,5?

Ho ripetuto l'allenamento della RNA con n = 3. L'ANN è stata addestrata ed è stata in grado di ottenere un valore piuttosto basso per MSE. Tuttavia, l'output calcolato da questa ANN non differisce molto dal (n-1) valore dell'offerta. Sembra che ANN abbia appena preso l'ultima offerta come la prossima offerta! Ho provato diverse strutture di rete (tutte le percezioni multistrato), diversi parametri di allenamento, ecc., Ma i risultati sono gli stessi.

Domanda 3: come posso migliorare l'accuratezza? Esistono altri metodi di allenamento oltre alla backpropagation?


Non sono sicuro che farai meglio della previsione del rumore 1 / f quando usi i valori passati come indicatori per quelli futuri. scholarpedia.org/article/1/f_noise#Stock_markets_and_the_GNP - i risultati finora sembrano coerenti con quello. Probabilmente dovresti esaminare altre possibili caratteristiche che hanno qualche motivo per correlarsi con i tassi di cambio futuri. Se ciò fosse facile, ci sarebbero scienziati più ricchi di dati.
Neil Slater,

sì, forse altre variabili stanno contribuendo al valore successivo più dei valori delle serie temporali stesse .. Lo sperimenterò anch'io. Grazie per i suggerimenti.
user1300

Risposte:


6

I risultati che stai vedendo non sono un sottoprodotto del tuo prodotto di formazione, ma piuttosto neural netsnon sono un'ottima scelta per questo compito. Neural netssono effettivamente un mezzo per creare una funzione non lineare di alto ordine componendo un numero di funzioni più semplici. Questa è spesso un'ottima cosa, perché consente alle reti neurali di adattarsi a schemi molto complessi.

Tuttavia, in una borsa qualsiasi modello complesso, se negoziato, decadrà rapidamente. Il rilevamento di uno schema complicato generalmente non genererà risultati utili, poiché si tratta in genere di schemi complessi a breve termine. Inoltre, a seconda della metrica scelta, esistono diversi modi per ottenere buoni risultati che in realtà non ripagheranno nell'investimento (come la previsione dell'ultimo valore nel tuo esempio).

Inoltre, il mercato azionario è sorprendentemente caotico, il che può tradursi in un neural netoverfitting. Ciò significa che i modelli che apprende si generalizzeranno male. Qualcosa sulla falsariga di vedere uno stock diminuire in un giorno e decidere uniformemente che lo stock diminuirà sempre solo perché è stato visto su un periodo relativamente breve. Invece tecniche come ridgee robust regression, che identificheranno schemi più generali, meno complessi, fanno meglio.

Il vincitore di una simile competizione Kaggle ha usato proprio robust regressionper questo motivo. È probabile che tu ottenga risultati migliori se passi a un modello di apprendimento superficiale che troverà funzioni di un ordine polinomiale inferiore, rispetto alle funzioni complesse profonde di una rete neurale.


grazie mille. Valuterò la regressione robusta e vedrò come va.
user1300,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.