Previsione di mercato basata su indicatori macroeconomici - pagina 56

 
Vladimir:

3: Rendimenti su titoli di diverse scadenze più uno in più

Tasso percentuale annuo Buy & hold, 1974 - oggi: APR = 7,35%

Strategia di acquisto e vendita utilizzando gli indicatori economici: TAEG = 13,18%.

Questa strategia ha dato un segnale di vendita nel dicembre 2019. Nessun segnale di acquisto è stato dato finora. A quanto pare il mercato scenderà.

Comprare e tenere.

Sarebbe interessante vedere un test in avanti di un tale modello, ma non è possibile qui.

In questo momento, per quanto ho capito, tutti stanno aspettando le elezioni.

 
Vladimir:

3: Rendimenti su titoli di diverse scadenze più uno in più

Tasso percentuale annuo Buy & hold, 1974 - oggi: APR = 7,35%

Strategia di acquisto e vendita utilizzando gli indicatori economici: TAEG = 13,18%.

Questa strategia ha dato un segnale di vendita nel dicembre 2019. Nessun segnale di acquisto è stato dato finora. A quanto pare il mercato scenderà.

Stiamo parlando di uno strumento specifico o di un indicatore generale?

 
Vladimir :

Quindi, il compito è prevedere l'indice S&P 500 sulla base degli indicatori economici disponibili.

Passaggio 1: trova gli indicatori. Gli indicatori sono disponibili pubblicamente qui: http://research.stlouisfed.org/fred2/ Ce ne sono 240.000. Il più importante è la crescita del PIL. Questo indicatore viene calcolato ogni trimestre. Da qui il nostro passo - 3 mesi. Tutti gli indicatori per un periodo più breve vengono ricalcolati per un periodo di 3 mesi, il resto (annuale) viene scartato. Scartiamo anche gli indicatori per tutti i paesi ad eccezione degli Stati Uniti e gli indicatori che non hanno una storia profonda (almeno 15 anni). Quindi, con un lavoro scrupoloso, filtriamo una serie di indicatori e otteniamo circa 10 mila indicatori. Formuliamo un compito più specifico di prevedere l'indice S&P 500 con uno o due trimestri di anticipo, avendo a disposizione 10mila indicatori economici con un periodo trimestrale. Faccio tutto in MatLab, anche se è possibile in R.

Passaggio 2: convertire tutti i dati in forma stazionaria mediante differenziazione e normalizzazione. Ci sono molti metodi qui. La cosa principale è che i dati originali possono essere ripristinati dai dati convertiti. Senza stazionarietà, nessun modello funzionerà. La serie S&P 500 prima e dopo la conversione è mostrata di seguito.

Passaggio 3: scegli un modello. Forse una rete neurale. Si può fare una regressione lineare multivariabile. È possibile eseguire la regressione polinomiale multivariabile. Dopo aver testato modelli lineari e non lineari, giungiamo alla conclusione che i dati sono così rumorosi che non ha senso inserire un modello non lineare. Il grafico y(x), dove y = S&P 500 e x = uno dei 10mila indicatori, è una nuvola quasi circolare. Pertanto, formuliamo il compito in modo ancora più specifico: prevedere l'indice S&P 500 con uno o due trimestri di anticipo, avendo 10mila indicatori economici con un periodo trimestrale, utilizzando la regressione lineare multivariabile.

Step 4: Selezioniamo gli indicatori economici più importanti da 10 mila (riduciamo la dimensione del problema). Questo è il passo più importante e difficile. Diciamo che prendiamo la storia dell'S&P 500 fino a 30 anni (120 trimestri). Per rappresentare l'S&P 500 come una combinazione lineare di indicatori economici di vario genere, è sufficiente disporre di 120 indicatori per descrivere accuratamente l'S&P 500 in questi 30 anni. Inoltre, gli indicatori possono essere assolutamente qualsiasi per creare un modello così accurato di 120 indicatori e 120 valori S&P 500. Quindi è necessario ridurre il numero di input al di sotto del numero di valori di funzione descritti. Ad esempio, stiamo cercando i 10-20 indicatori di input più importanti. Tali compiti di descrizione dei dati con un piccolo numero di input selezionati da un numero enorme di basi candidate (dizionario) sono chiamati codifica sparsa.

Esistono molti metodi per selezionare gli input del predittore. Li ho provati tutti. Ecco i due principali:

  1. Classifichiamo tutti i 10.000 dati in base al loro potere predittivo S&P 500. Il potere predittivo può essere misurato tramite coefficiente di correlazione o informazioni reciproche.
  2. Esaminiamo tutti i 10mila indicatori lungo il fondo e scegliamo quello che ha dato il modello lineare y_mod = a + b*x1 descrivendo l'S&P 500 con l'errore più piccolo. Quindi selezioniamo nuovamente il secondo input ordinando i restanti 10mila -1 indicatori in modo che descriva il resto y - y_mod = c + d*x2 con il minor errore. Eccetera. Questo metodo è chiamato regressione graduale o ricerca di corrispondenza.

Ecco i primi 10 indicatori con il più alto coefficiente di correlazione con l'S&P 500:

ID serie Ritardo Corr Mute informazioni
'PPICRM' 2 0,315 0,102
'CWUR0000SEHE' 2 0,283 0,122
'CES1021000001' uno 0,263 0,095
'B115RC1Q027SBEA' 2 0,262 0,102
'CES1000000034' uno 0,261 0,105
'A371RD3Q086SBEA' 2 0,260 0,085
'B115RC1Q027SBEA' uno 0,256 0,102
'CUUR0000SAF111' uno 0,252 0,117
'CUUR0000SEHE' 2 0,251 0,098
'USMINARE' uno 0,250 0,102

Ecco i primi 10 indicatori con le informazioni più reciproche con l'S&P 500:

ID serie Ritardo Corr Mute informazioni
'CPILEGSL' 3 0,061 0,136
'B701RC1Q027SBEA' 3 0,038 0,136
'CUSR0000SAS' 3 0,043 0,134
'GDPPOT' 3 0,003 0,134
'NGDPPOT' 5 0,102 0,134
'OTHSEC' 4 0,168 0,133
'LNU01300060' 3 0,046 0,132
'LRAC25TTUSM156N' 3 0,046 0,132
'LRAC25TTUSQ156N' 3 0,046 0,131
'CUSR0000SAS' uno 0,130 0,131

Il ritardo è il ritardo della serie di input rispetto alla serie S&P 500 simulata. Come si può vedere da queste tabelle, diversi metodi di scelta degli input più importanti danno come risultato diversi insiemi di input. Poiché il mio obiettivo finale è ridurre al minimo l'errore del modello, ho scelto il secondo metodo di selezione dell'input, ovvero enumerazione di tutti gli input e selezione dell'input che ha dato il minor errore.

Passaggio 5: scegliere un metodo per calcolare l'errore e i coefficienti del modello. Il metodo più semplice è il metodo COEX, motivo per cui la regressione lineare che utilizza questo metodo è così popolare. Il problema con il metodo RMS è che è sensibile ai valori anomali, ad es. questi valori anomali influiscono significativamente sui coefficienti del modello. Per ridurre questa sensibilità, è possibile utilizzare la somma dei valori assoluti degli errori al posto della somma degli errori al quadrato, il che porta al metodo dei moduli minimi (MLM) o della regressione robusta. Questo metodo non ha una soluzione analitica per i coefficienti del modello a differenza della regressione lineare. Solitamente i moduli sono sostituiti da funzioni di approssimazione lisce/differenziabili e la soluzione viene eseguita con metodi numerici e richiede molto tempo. Ho provato entrambi i metodi (regressione snella e MHM) e non ho notato molti vantaggi di MHM. Invece di MHM, ho fatto una deviazione. Nella seconda fase di ottenere dati stazionari differenziandoli, ho aggiunto un'operazione di normalizzazione non lineare. Cioè, la serie originale x[1], x[2], ... x[i-1], x[i] ... viene prima convertita in una serie di differenze x[2]-x[1] . .. x [i]-x[i-1] ... e quindi ogni differenza viene normalizzata sostituendola con sign(x[i]-x[i-1])*abs(x[i]-x[ i-1] )^u, dove 0 < u < 1. Per u=1, otteniamo il metodo COSE classico con la sua sensibilità ai valori anomali. A u=0, tutti i valori della serie di input vengono sostituiti da valori binari +/- 1 quasi senza valori anomali. Per u=0.5, otteniamo qualcosa di simile a MNM. Il valore ottimale di u è compreso tra 0,5 e 1.

Va notato che uno dei metodi popolari per convertire i dati in una forma stazionaria è sostituire i valori della serie con la differenza nei logaritmi di questi valori, ad es. log(x[i]) - log(x[i-1]) o log(x[i]/x[i-1]). La scelta di una tale trasformazione è nel mio caso pericolosa, poiché il dizionario di 10mila voci ha molte righe con valori zero e negativi. Il logaritmo ha anche il vantaggio di ridurre la sensibilità del metodo RMS agli outlier.In sostanza, la mia funzione di trasformazione sign(x)*|x|^u ha lo stesso scopo di log(x), ma senza i problemi associati a zero e valori negativi.

Passaggio 6: calcolare la previsione del modello sostituendo i nuovi dati di input e calcolando l'output del modello utilizzando gli stessi coefficienti del modello che sono stati trovati mediante regressione lineare nei segmenti della cronologia precedenti. Qui è importante tenere presente che i valori trimestrali degli indicatori economici e dell'S&P 500 arrivano quasi contemporaneamente (con una precisione di 3 mesi). Pertanto, per prevedere l'S&P 500 per il prossimo trimestre, il modello deve essere costruito tra l'attuale valore trimestrale dell'S&P 500 e le voci ritardate di almeno 1 trimestre (Lag>=1). Per prevedere l'S&P 500 con un quarto di anticipo, il modello deve essere costruito tra l'attuale valore trimestrale dell'S&P 500 e le entrate ritardate di almeno 2 trimestri (Lag>=2). Eccetera. L'accuratezza delle previsioni diminuisce significativamente all'aumentare del ritardo maggiore di 2.

Passaggio 7: verifica l'accuratezza delle previsioni sulla cronologia precedente. La tecnica originale sopra descritta (inserire ogni input nella cronologia precedente, scegliere l'input che fornisce l'MSD più piccolo e calcolare la previsione dal nuovo valore di quell'input) ha prodotto un MSD di previsione che era persino peggiore delle previsioni casuali o nulle. Mi sono posto questa domanda: perché un ingresso che si inserisce bene nel passato dovrebbe avere una buona prevedibilità per il futuro? Ha senso selezionare gli input del modello in base al loro precedente errore di previsione, piuttosto che in base al più piccolo errore di regressione sui dati noti.

Alla fine, il mio modello può essere descritto passo dopo passo in questo modo:

  1. Caricamento dati economici da stlouisfed (circa 10mila indicatori).
  2. Preobrazeum dati in una forma stazionaria e normalizzare.
  3. Scegliamo un modello lineare dell'indice S&P 500, risolto analiticamente con il metodo RMS (regressione lineare).
  4. Scegliamo la lunghezza della storia (1960 - 2° trimestre 2015) e la dividiamo in un segmento di formazione (1960 - 4° trimestre 1999) e un segmento di prova (1° trimestre 2000 - 2° trimestre 2015).
  5. Iniziamo le previsioni dal 1960 + N + 1, dove N*4 è il numero iniziale di valori S&P 500 trimestrali noti.
  6. Sui primi N dati, viene costruito un modello lineare y_mod = a + b*x per ciascun indicatore economico, dove y_mod è il modello S&P 500 e x è uno degli indicatori economici.
  7. Prevediamo N + 1 barra per ogni modello.
  8. Calcoliamo gli errori di previsione di N + 1 barre per ciascun modello. Ricordiamo questi errori.
  9. Aumentiamo di 1 il numero di valori S&P 500 noti, ad es. N + 1 e ripetere i passaggi 6-9 fino a raggiungere la fine del segmento di addestramento (Q4 1999). A questo punto, abbiamo memorizzato gli errori di previsione dal 1960 + N +1 al Q4 1999 per ciascun indicatore economico.
  10. Iniziamo a testare il modello nel secondo periodo storico (Q1 2000 - Q2 2015).
  11. Per ciascuno dei 10mila input, calcoliamo l'errore standard delle previsioni per il 1960 - Q4 1999.
  12. Tra 10mila input, selezioniamo quello che aveva la previsione RMS più bassa per il 1960 - Q4 1999.
  13. Costruiamo un modello lineare y_mod = a + b*x per ogni indicatore economico per il 1960 - Q4 1999.
  14. Prevediamo il primo trimestre del 2000 per ciascun modello.
  15. La previsione dell'input selezionato con l'RMS più basso delle previsioni per l'intervallo di tempo precedente (1960 - 4° trimestre 1999) viene scelta come previsione principale del 1° trimestre 2000.
  16. Calcoliamo gli errori di previsione di tutti gli input per il primo trimestre 2000 e li aggiungiamo al valore efficace degli stessi input per l'intervallo di tempo precedente (1960 - Q4 1999).
  17. Passa al Q2 2000 e ripeti i passaggi 12-17 fino a raggiungere la fine dell'area di test (Q2 2015) con il valore sconosciuto dell'S&P 500, la cui previsione è il nostro obiettivo principale.
  18. Accumuliamo errori di previsione per il 1° trimestre 2000 - 4° trimestre 2014 realizzati dagli input con la deviazione standard più bassa delle previsioni nei segmenti precedenti. Questo errore (err2) è il nostro modello di errore di previsione fuori campione.

In breve, la scelta di un predittore dipende dall'RMS delle precedenti previsioni dell'S&P 500. Non si può guardare al futuro. Il predittore può cambiare nel tempo, ma alla fine del segmento di test, sostanzialmente smette di cambiare. Il mio modello ha selezionato PPICRM con un ritardo di 2 quarti come primo input per prevedere il secondo trimestre 2015. Di seguito è mostrata la regressione lineare dell'S&P 500 con l'input PPICRM(2) selezionato per il 1960 - Q4 2014. Cerchi neri - regressione lineare. Cerchi multicolori - dati storici per il 1960 - Q4 2014. Il colore del cerchio indica l'ora.


Previsioni S&P 500 stazionarie (linea rossa):

Previsioni S&P 500 in forma grezza (linea rossa):

Il grafico mostra che il modello prevede la crescita dell'S&P 500 nel secondo trimestre del 2015. L'aggiunta di un secondo input aumenta l'errore di previsione:

1 err1=0,900298 err2=0,938355 PPICRM (2)

2 err1=0,881910 err2=0,978233 PERMESSO1 (4)

dove err1 è l'errore di regressione. È ovvio che decresce dall'aggiunta di un secondo input. err2 è l'errore di previsione del quadrato medio della radice diviso per l'errore di previsione casuale. Cioè, err2>=1 significa che la previsione del mio modello non è migliore delle previsioni casuali. err2<1 significa che la previsione del mio modello è migliore delle previsioni casuali.

PPICRM = Indice dei prezzi alla produzione: materie prime per ulteriori lavorazioni

PERMIT1 = Nuove Unità Abitative Private Autorizzate da Permessi di Costruzione - In Strutture con 1 Unità

Il modello sopra descritto può essere riformulato in questo modo. Raccogliamo 10mila economisti e chiediamo loro di prevedere il mercato per il prossimo trimestre. Ogni economista esce con la propria previsione. Ma invece di scegliere una previsione in base al numero di libri di testo che hanno scritto o al numero di premi Nobel che hanno vinto in passato, aspettiamo qualche anno per raccogliere le loro previsioni. Dopo un numero significativo di previsioni, vediamo quale economista è più accurato e iniziamo a credere alle sue previsioni fino a quando qualche altro economista non lo supera in precisione.

L'analisi è impressionante, ma una domanda rimane: hai mai pensato che prevedere 500 (!!!) tassi che si influenzano a vicenda contemporaneamente sia un po' più difficile di 1? Davvero, perché è stato scelto l'S&P500? Ebbene, 500 aziende indipendenti e difficili da prevedere lo formano. La logica elementare suggerisce che è auspicabile testare questo approccio su un emittente, il che aumenterà la fiducia nel risultato finale di circa ... 500 volte. :)
 
Реter Konow:
L'analisi è impressionante, ma una domanda rimane: vi è mai venuto in mente che prevedere 500 (!!!) che si influenzano contemporaneamente è un po' più difficile di 1? Voglio dire, davvero, perché viene scelto l'S&P500? Le sue 500 aziende indipendenti e difficili da prevedere lo formano. La logica elementare impone che questo approccio sia testato preferibilmente su un solo emittente, il che aumenterà la fiducia nel risultato finale di circa... di un fattore 500. :)
Sbagliato. Anche se il tema si chiama "prevedere il mercato sulla base di indicatori macroeconomici", ma gli indicatori non hanno alcun significato in questa analisi. Solo variabili sostituite in qualche formula dopo essere state spersonalizzate matematicamente e dissociate da tutte le connessioni semantiche e logiche esterne al mondo. I numeri secchi, disposti in serie numeriche astratte, servono da modello per una rete neurale, che predice... no, non il mercato, ma la stessa serie numerica.

Da questo punto di vista, non fa differenza quanti tassi sono nell'indice e non importa quale sia la politica delle loro compagnie, ma è necessario che tutte le variabili e i valori siano sostituiti nella formula. E così è.

Quindi, tutto è corretto, solo l'argomento dovrebbe essere chiamato in modo diverso, perché essenzialmente, non si tratta di analisi fondamentale, ma di analisi tecnica.
 
Реter Konow:
Sbagliato. Anche se l'argomento si chiama "prevedere il mercato sulla base di indicatori macroeconomici", gli indicatori sono irrilevanti in questa analisi. Solo variabili sostituite in qualche formula dopo essere state spersonalizzate matematicamente e de-identificate con tutti i legami semantici e logici esterni con il Mondo. I numeri secchi, disposti in serie numeriche astratte, servono da modello per una rete neurale, che predice... no, non il mercato, ma la stessa serie numerica.

Da questo punto di vista, non fa differenza quanti corsi sono nell'indice e non importa quali politiche hanno le loro aziende, ma che tutte le variabili e i valori devono essere sostituiti nella formula. E così è.

Quindi, tutto è corretto, solo l'argomento dovrebbe essere chiamato diversamente, perché in sostanza non si tratta di analisi fondamentale ma tecnica.

Si scopre l'analisi tecnica suidati fondamentali.

L'analisi fondamentale non è così semplice.Ci sono molti fattori che influenzano i prezzi che non rientrano negli indicatori economici. Si tratta di elezioni, Brexit, ogni sorta di voci e così via. Possono influenzare il prezzo più di tutti gli indicatori economici.

 
Fuori tema. <br/ translate="no">
Sono stato a lungo interessato dalle domande che nascevano dalla lettura dei numerosi "flussi di coscienza" dei trader sul forum:

1. Perché le persone dimenticano facilmente e rapidamente l'oggetto di studio, perdendosi nelle "serie di numeri", nei coefficienti, ecc. e non tornano mai al punto di origine, vagando per sempre nelle terre selvagge della matematica?

2. Cosa li motiva? È davvero solo denaro?

La prima domanda non ha ancora una risposta, ma la seconda... ...ce n'è uno:

Tutte le loro ricerche di mate.searches portano ad un certo "paradiso" di fantasia formula-tavolo, dove l'esistenza è raccolta, ordinata e prevedibile in tutti gli aspetti. È così che le persone intelligenti immaginano il Graal.

Il primo post di questo thread non dimostra né il primo né il secondo passo in questa oscura direzione...
 
Uladzimir Izerski:

Si ottiene un'analisi tecnica sudati fondamentali.

Non è tutto così semplice con l'analisi fondamentale.Ci sono molti fattori che influenzano i prezzi e che non rientrano negli indicatori economici. Sono elezioni, Brexit, voci di ogni tipo e così via. Possono influenzare il prezzo più di tutti gli indicatori economici.

Sì, proprio così.
 

A Peter: non sto predicendo direttamente l'S&P500. Lo scopo di questo articolo è quello di prevedere le recessioni per uscire dal mercato prima che si verifichino e migliorare la redditività della strategia buy&hold. Anche se l'S&P500 contiene azioni di 500 aziende, è guidato da investitori istituzionali che comprano e vendono l'indice stesso (o le sue opzioni), non i suoi componenti. Il 13% all'anno non sembra molto, ma abbastanza per i grossi soldi dove il fatturato è importante. Bernie Madoff ha attirato i suoi clienti promettendo loro un modesto 10% all'anno, che non è riuscito a raggiungere.

A Uladzimir: sono d'accordo che le fluttuazioni dei prezzi dipendono da diversi eventi sociali e politici, elezioni, brexit, infezioni ecc. Alla fine tutto si riduce all'offerta e alla domanda di prodotti/servizi, alla disoccupazione e ad altri indicatori dell'economia. Non mi importa delle fluttuazioni quotidiane dei prezzi di mercato. Anche una semplice strategia buy&hold guadagna il 7,4% all'anno. Mi interessa evitare posizioni lunghe durante le recessioni e migliorare la redditività di questa strategia. A proposito, un'altra strategia è l'acquisto di beni immobili. Ma questo rende solo il 5% all'anno, negli Stati Uniti.

 
Реter Konow:
Sbagliato. Anche se l'argomento si chiama "prevedere il mercato sulla base di indicatori macroeconomici", gli indicatori sono irrilevanti in questa analisi. Solo variabili sostituite in qualche formula dopo essere state spersonalizzate matematicamente e de-identificate con tutti i legami semantici e logici esterni con il Mondo. I numeri secchi, disposti in serie numeriche astratte, servono da modello per una rete neurale, che predice... no, non il mercato, ma la stessa serie numerica.

Da questo punto di vista, non fa differenza quanti corsi sono nell'indice e non importa quali politiche hanno le loro aziende, ma che tutte le variabili e i valori devono essere sostituiti nella formula. E così è.

Quindi, tutto è corretto, solo l'argomento dovrebbe essere chiamato in modo diverso, perché in sostanza, non si tratta di analisi fondamentale, ma di analisi tecnica.

Allora, quali sono le previsioni per lo S&P500?

 
Vladimir:

Mi dispiace, ma tutto questo per il 5-13% all'anno? Non ne vale la pena).

Motivazione: