Saturday 25 November 2017

Pca Trading Strategie


Produzione di credito Association - PCA definizione di produzione di credito Association - PCA Un instrumentality federale creata dal Congresso attraverso l'Atto Farm Credit del 1933 per fornire a breve e medio termine del credito agli agricoltori, allevatori e residenti rurali. Il credito è stato esteso in modo che i destinatari possano acquisto di abitazioni, svolgere attività di marketing, acquisto attrezzature agricole e bestiame e gestire aziende agricole legate. A quel tempo, il credito non era né disponibile o era disponibile solo in proibitivi alti tassi di interesse a causa della Grande Depressione. Terreni agricoli e delle materie prime cortesi vale tanto, e le banche già avuto un sacco di prestiti agricoli sui loro libri. le associazioni di credito di produzione possono fare o prestiti di garanzia i cui termini non superiore a sette, 10 o 15 anni, a seconda delle politiche di banche di finanziamento. Il prestito deve essere ammortizzata in 15 anni o meno, e qualsiasi rifinanziamento non può estendere la durata del prestito più di 15 anni dalla data di prestito originale. SMONTAGGIO Produzione di credito associazione - PCA The Farm Credit System, una società sponsorizzata dal governo fondata nel 1916, prevede il finanziamento e servizi finanziari connessi all'agricoltura e comprende una serie di organizzazioni di credito. Oltre alle associazioni di credito produzione, questi includono associazioni agricole di credito, banche di credito agricolo, banche cooperative, per le banche di credito fattoria, banche di credito intermedi federali, associazioni bancarie terreni federali e associazioni di credito terreni federali. APC ottenere il loro finanziamento da parte delle banche di credito agricolo e proprio il loro patrimonio di prestito. Il sistema del credito Farm raccoglie fondi con la vendita di titoli di debito per gli investitori negli Stati Uniti e abroad. About questa rivista The Journal of strategie di investimento è dedicato al trattamento rigoroso delle moderne strategie di investimento che vanno ben oltre gli approcci classici in entrambi i suoi strumenti e le metodologie soggetti. Nel fornire una rappresentanza equilibrata di accademici, di ricerca buy-side e sell-side, il Journal promuove l'impollinazione incrociata di idee tra ricercatori e professionisti, il raggiungimento di un nesso unico del mondo accademico e dell'industria, da un lato, e teorica e modelli applicati sulla altro. Il giornale contiene articoli di ricerca in profondità così come articoli di discussione su argomenti tecnici e di mercato, e ha lo scopo di dotare la comunità di investimento globale con la ricerca pratica e all'avanguardia al fine di comprendere e realizzare moderne strategie di investimento. Con un focus su importanti strategie di investimento contemporanea, tecniche e di gestione, la rivista considera i documenti sui seguenti settori: strategie fondamentali. tra cui macro fondamentale, equità fondamentale o di selezione di credito strategie di valore relativo. la stima di investire e nella relativa valutazione dei titoli relativi, sia di vaniglia e derivati ​​tattico strategie. strategie basate sulla previsione dei, e che investono in, modelli di comportamento di mercato, come la quantità di moto o di mean reversion, e strategie di asset allocation tattica. Le strategie event-driven: strategie basate sulla previsione di probabilità di eventi-movimento di mercato o le reazioni del mercato a tali eventi algoritmico strategie di trading. modelli di microstruttura di mercato, l'impatto di liquidità e di mercato e l'esecuzione del commercio algoritmico e strategie di market-making strategie di investimento principali. strategie di investimento per i titoli illiquidi e la proprietà principale o finanziamento di attività reali e le imprese Portfolio Management e Asset Allocation. modelli per l'ottimizzazione del portafoglio, il controllo del rischio, l'attribuzione delle prestazioni e asset allocation econometrici e metodi statistici. con applicazioni a strategie di investimento è stato selezionato The Journal di strategie di investimento per la copertura a Thomson Reuters Fonti Emerging Citation Index. Questa studi di carta centralità (rischio interconnessione) le misure e il loro valore aggiunto in un quadro di ottimizzazione del portafoglio attivo. In questo lavoro gli autori indagano come costi di transazione a tariffa fissa influenzano portafoglio riequilibrio. Gli autori propongono un quadro analitico per misurare le opportunità di investimento e di allocare il rischio nel tempo in base alla distanza di Mahalanobis. In questo lavoro, gli autori danno algoritmi completi e il codice sorgente per la costruzione di modelli di rischio statistici. Il presente documento propone utilizzando un meccanismo di ottimizzazione nel processo di costruzione del portafoglio di copertura valutaria. Gli autori di questo documento derivano una strategia di trading ottimale che benchmark il prezzo di chiusura in un quadro di ottimizzazione meanvariance. Gli autori di questo documento hanno lo scopo di demistificare portafogli selezionati dalla ottimizzazione robusta, cercando di limitare i portafogli nei casi di grandi e piccoli l'incertezza dei rendimenti medi. Gli autori di questo documento analizzano un portafoglio pari-peso di cross-asset-class esposizioni globali fattori di rischio. Gli autori di questo studio forniscono un algoritmo completo e il codice sorgente per la costruzione di modelli generali di rischio multifattoriale tramite qualsiasi combinazione di fattori di stile, componenti principali fattori del settore Andor. Questo documento utilizza il framework strategie Kelly frazionale per dimostrare che i portafogli ottimali con titoli a basso beta generano maggiore ricchezza mediana e inferiore rischio di perdite intra-orizzonte. Gli autori di questo documento si applicano un approccio lungimirante al portafoglio varianza minima problema di ottimizzazione per una selezione di 100 titoli. Questo lavoro indaga le cause di anomalia qualità esplorando due possibili spiegazioni - la vista del rischio e la vista comportamentale. Questo documento indaga la progettazione ottimale dei fondi che assicurano una protezione del capitale a scadenza specifica. Questo lavoro studia il problema del trading ottimale usando predittori generali alfa con costi lineari e l'impatto temporaneo. Questo documento proietta un portafoglio fattore vincoli ottimale su un insieme di tutti i portafogli possibili utilizzando il tracking error come una misura di distanza. Questo documento analizza i dati empirici per 4000 portafogli di negoziazione di vita reale con la tenuta periodi di circa 0,7-19 giorni di negoziazione. Questo documento deriva formule esplicite per la curva ottimale di trading realizzazione deficit con impatto sul mercato lineari e non lineari. Gli autori di questo documento propongono un metodo di selezione in base a un metodo di selezione variabile utilizzata con APC in statistica multivariata. Questo articolo mette a confronto sedici distinte strategie di campagna di selezione all'interno di un campione di settantotto paesi tra il 1999-2015. Questo documento individua una serie di inefficienze strutturali del mercato azionario small cap statunitense che possono essere utilizzate per generare alpha. Better Strategie 5: Un termine a breve scadenza macchina di apprendimento del sistema It8217s per il 5 ° e la parte finale del costruire migliori strategie di serie. Nella parte 3 we8217ve discusso il processo di sviluppo di un sistema basato su modelli, e di conseguenza we8217ll concludere la serie con lo sviluppo di un sistema di data-mining. I principi di data mining e machine learning sono stati il ​​tema della parte 4. Per il nostro esempio di trading a breve termine we8217ll utilizzare un algoritmo di apprendimento profondo. un autoencoder impilati, ma funzionerà nello stesso modo con molti altri algoritmi di apprendimento automatico. Con strumenti software today8217s, solo circa 20 righe di codice sono necessari per una strategia di apprendimento automatico. I8217ll cercare di spiegare tutti i passi in dettaglio. Il nostro esempio sarà un progetto di ricerca 8211 una macchina di apprendimento esperimento per rispondere a due domande. Fa un algoritmo più complesso 8211, come, più neuroni e l'apprendimento più profondo 8211 producono una previsione migliore e sono a breve termine il prezzo si muove prevedibili dalla storia prezzi a breve termine L'ultima domanda è venuto a causa del mio scetticismo circa il commercio azione dei prezzi nella parte precedente di questa serie. Ho avuto diverse email chiedendo circa le generators8221 sistema 8220trading o simili strumenti di azione dei prezzi che sono lodati su alcuni siti web. Non vi è alcuna prova concreta che questi strumenti mai prodotto alcun profitto (tranne che per i loro fornitori) 8211, ma questo significa che sono tutti spazzatura We8217ll vedere. Il nostro esperimento è semplice: Raccogliamo le informazioni dalle ultime candele di una curva di prezzo, da mangiare in una rete neurale di apprendimento profondo, e utilizzarlo per prevedere i prossimi candele. La mia ipotesi è che alcune candele don8217t contengono informazioni predittive utili. Naturalmente, un esito nonpredictive dell'esperimento won8217t significa che I8217m giusto, dal momento che ho potuto usare parametri errati o preparato i dati di male. Ma un risultato predittivo sarebbe un indizio che I8217m commercio di sbagliato e il prezzo azione può essere davvero redditizio. Macchina di sviluppo strategia di apprendimento Fase 1: La variabile di destinazione per ricapitolare la parte precedente. un algoritmo di apprendimento supervisionato è addestrato con una serie di funzioni al fine di prevedere una variabile di destinazione. Quindi la prima cosa da stabilire è quale sarà la variabile di destinazione. Un obiettivo popolare, utilizzato in molti documenti, è il segno del ritorno prezzo alla successiva. Più adatto per la previsione, in quanto meno sensibili alla casualità, è la differenza di prezzo di una previsione orizzonte più lontano. come 3 barre da oggi, o lo stesso giorno la settimana prossima. Come quasi tutto in sistemi di trading, l'orizzonte di previsione è un compromesso tra gli effetti della casualità (meno bar sono peggiori) e la prevedibilità (meno bar sono migliori). A volte non you8217re interessato a prezzo prevedere direttamente, ma nel prevedere qualche altro parametro 8211, come la gamba corrente di un indicatore Zigzag 8211 che potrebbero altrimenti essere determinata solo col senno di poi. O se si vuole sapere se una certa inefficienza del mercato sarà presente la prossima volta, soprattutto quando si you8217re per mezzo della macchina di apprendimento non direttamente per la negoziazione, ma per il filtraggio mestieri in un sistema basato su modelli. O se si vuole prevedere qualcosa di completamente diverso, ad esempio, la probabilità di un crollo del mercato di domani. Tutto questo è spesso più facile da prevedere che il ritorno tomorrow8217s popolare. Nel nostro esperimento azione dei prezzi we8217ll usare il ritorno di un commercio azione dei prezzi a breve termine come variabile di destinazione. Una volta che il bersaglio è determinato, il prossimo passo è la selezione delle caratteristiche. Fase 2: Il dispone di una curva dei prezzi è il caso peggiore per qualsiasi algoritmo di apprendimento automatico. Non solo portare poco segnale e per lo più rumore. è anche non stazionario e il rapporto signalnoise cambia continuamente. Il rapporto esatto del segnale e rumore dipende da ciò che si intende con 8220signal8221, ma è normalmente troppo basso per qualsiasi algoritmo di apprendimento automatico noto per la produzione qualcosa di utile. Quindi dobbiamo ricavare le caratteristiche della curva dei prezzi che contengono più del segnale e meno rumore. Signal, in tale contesto, è qualsiasi informazione che può essere utilizzato per prevedere l'obiettivo, qualunque esso sia. Tutto il resto è rumore. Così, selezionando le caratteristiche è un fattore critico per il successo 8211 molto più critica di decidere quale machine learning algoritmo you8217re intenzione di utilizzare. Ci sono due approcci per la selezione di caratteristiche. La prima e più comune è l'estrazione di quante più informazioni dalla curva prezzo possibile. Dal momento che non si sa dove l'informazione è nascosta, è solo creare una raccolta selvaggia di indicatori, con una vasta gamma di parametri, e la speranza che almeno alcuni di loro conterrà le informazioni che le esigenze algoritmo. Questo è l'approccio che normalmente si trovano in letteratura. Il problema di questo metodo: qualsiasi algoritmo di apprendimento automatico può essere facilmente confuso dai predittori nonpredictive. Così won8217t fare per gettare appena 150 indicatori a questo. Avete bisogno di qualche algoritmo di preselezione che determina quale di essi portano informazioni utili e che può essere omesso. Senza ridurre le caratteristiche di questo modo di forse otto o dieci, anche l'algoritmo di apprendimento più profondo won8217t produrre qualcosa di utile. L'altro approccio, normalmente per gli esperimenti e ricerche, utilizza solo informazioni limitate dalla curva dei prezzi. Questo è il caso qui: Dal momento che vogliamo esaminare il commercio azione dei prezzi, usiamo solo gli ultimi prezzi di alcuni come ingressi, e deve scartare tutto il resto della curva. Questo ha il vantaggio che abbiamo don8217t bisogno qualsiasi algoritmo preselezione poiché il numero di caratteristiche è limitato comunque. Qui ci sono le due semplici funzioni predittive che usiamo nel nostro esperimento (in C): Le due funzioni sono tenuti a portare le informazioni necessarie per l'azione dei prezzi: il movimento per-bar e la volatilità. La funzione di cambio è la differenza di prezzo corrente al prezzo di n bar prima, rispetto al prezzo corrente. La funzione di gamma è la distanza totale alto-basso degli ultimi n candele, anche in relazione al prezzo corrente. E i centri di funzione di scala e comprime i valori alla gamma -100, in modo che li dividono da 100 per inducendole normalizzato a -1. Ricordiamo che la normalizzazione è necessaria per algoritmi di apprendimento automatico. Fase 3: Preselectingpreprocessing predittori Dopo aver selezionato un gran numero di indicatori o altri segnali come le caratteristiche per il vostro algoritmo, è necessario determinare quale di essi è utile e quali no. Ci sono molti metodi per ridurre il numero di funzioni, per esempio: Determinare le correlazioni tra i segnali. Rimuovere quelli con una forte correlazione ad altri segnali, poiché non contribuiscono alle informazioni. Confrontare il contenuto informativo dei segnali direttamente, con algoritmi come l'entropia informazioni o alberi di decisione. Determinare il contenuto informativo indirettamente confrontando i segnali con segnali randomizzati ci sono alcune librerie software per questo, come il pacchetto R Boruta. Utilizzare un algoritmo come Analisi delle Componenti Principali (PCA) per generare un nuovo set di segnale con dimensionalità ridotta. Utilizzare ottimizzazione genetica per determinare i segnali più importanti semplicemente i risultati più vantaggiosi dal processo di previsione. Grande per montaggio di curva, se si desidera pubblicare i risultati impressionanti in un documento di ricerca. Per il nostro esperimento non abbiamo bisogno di preselezione o pre-elaborare le caratteristiche, ma si possono trovare informazioni utili su questo in articoli (1), (2) e (3) elencati alla fine della pagina. Passo 4: Selezionare l'algoritmo di apprendimento automatico R offre molti pacchetti ML diversi, e nessuno di loro offre molti algoritmi diversi, con molti parametri differenti. Anche se avete già deciso sul metodo 8211 qui, nel profondo di apprendimento 8211 Hai ancora la scelta tra i diversi approcci e diversi pacchetti R. La maggior parte sono abbastanza nuovo, e si possono trovare molte informazioni non empirica che aiuta la vostra decisione. Dovete provarli tutti e acquisire esperienza con metodi diversi. Per il nostro esperimento we8217ve scelto il pacchetto Deepnet, che è probabilmente il più semplice e più facile da usare biblioteca apprendimento profondo. In questo modo il nostro codice breve. We8217re utilizzando il suo algoritmo Stacked Autoencoder (SAE) per la pre-formazione della rete. Deepnet offre anche un limitato Boltzmann automatico (RBM) per il pre-allenamento, ma non ho potuto ottenere buoni risultati da esso. Ci sono altri e più complessi pacchetti di apprendimento profondo per R, in modo da poter spendere un sacco di tempo controllando tutti loro. Come pre-allenamento funziona si spiega facilmente, ma il motivo per cui funziona è una questione diversa. Per quanto a mia conoscenza, nessuno ha ancora messo a punto una solida dimostrazione matematica che funziona affatto. In ogni caso, immaginare una grande rete neurale con molti strati nascosti: La formazione dei mezzi netti che istituiscono i pesi delle connessioni tra i neuroni. Il metodo usuale è errore backpropagation. Ma si scopre che gli strati più nascosti che si possiede, il peggio funziona. I termini di errore backpropagated diventano sempre più piccoli da strato a strato, causando i primi strati della rete per imparare quasi nulla. Il che significa che il risultato previsto diventa sempre più dipendente dello stato iniziale casuale dei pesi. Questo fortemente limitata la complessità delle reti neurali basate su livelli e quindi le attività che possono risolvere. Almeno fino a 10 anni fa. Nel 2006 gli scienziati a Toronto pubblicato la prima volta l'idea di pre-formare i pesi con un algoritmo di apprendimento non supervisionato, una macchina di Boltzmann limitato. Questo si è rivelato un concetto rivoluzionario. E 'potenziato lo sviluppo dell'intelligenza artificiale e ha consentito a tutti i tipi di nuove applicazioni da macchine Go-gioco per le automobili auto-guida. Nel caso di un autoencoder impilati, funziona in questo modo: Selezionare strato nascosto di formare iniziare con il primo strato nascosto. Colleghi le uscite a un livello di uscita temporanea che ha la stessa struttura del livello di input network8217s. Alimentare la rete con i campioni di formazione, ma senza gli obiettivi. Formare in modo che il primo strato nascosto riproduce il segnale di ingresso 8211 caratteristiche 8211 alle sue uscite più precisamente possibile. Il resto della rete viene ignorato. Durante l'allenamento, applicare una sanzione term8217 8216weight in modo che il minor numero possibile di pesi delle connessioni sono utilizzati per la riproduzione del segnale. Ora alimentare le uscite dello strato nascosto addestrato agli ingressi del successivo strato nascosto inesperto, e ripetere il processo di formazione in modo che il segnale in ingresso viene riprodotto alle uscite dello strato successivo. Ripetere questo processo fino a quando tutti gli strati nascosti sono addestrati. Abbiamo ora un 8216sparse network8217 con pochissime connessioni di livello in grado di riprodurre i segnali di ingresso. Ora addestrare la rete con retropropagazione per l'apprendimento della variabile di destinazione, utilizzando i pesi pre-formati degli strati nascosti come punto di partenza. La speranza è che il processo di pre-formazione incustodito produce un'astrazione interna rumore ridotto dei segnali di ingresso che possono poi essere utilizzati per facilitare l'apprendimento il bersaglio. E questo sembra davvero funzionare. Nessuno sa veramente perché, ma diverse teorie 8211 Vedere Carta (4) sotto 8211 Provate a spiegare questo fenomeno. Fase 5: Generare un set di dati di test abbiamo prima bisogno di produrre una serie di dati con le caratteristiche e gli obiettivi in ​​modo da poter testare il nostro processo di previsione e provare parametri. Le caratteristiche devono essere basati sugli stessi dati sui prezzi, come nel trading dal vivo, e per l'obiettivo che ci deve simulare un commerciali a breve termine. Quindi ha senso per generare i dati non con R, ma con la nostra piattaforma di trading, che è in ogni caso molto più veloce. Here8217s un piccolo script Zorro per questo, DeepSignals. c: We8217re generazione di 2 anni di dati con le caratteristiche calcolati dai nostri superiori funzioni di modifica e intervallo definito. Il nostro obiettivo è il ritorno di uno scambio con il tempo di 3 bar di vita. costi di negoziazione sono impostati a zero, quindi in questo caso il ritorno è equivalente alla differenza di prezzo a 3 bar in futuro. La funzione adviseLong è descritta nel manuale Zorro è una funzione potente che gestisce automaticamente formazione e prevedere e consente di utilizzare qualsiasi algoritmo di apprendimento automatico basato R-proprio come se fosse un semplice indicatore. Nel nostro codice, la funzione utilizza il ritorno commercio successivo come bersaglio, e le variazioni di prezzo e le gamme degli ultimi 4 bar come caratteristiche. La bandiera SEGNALI dice che non addestrare i dati, ma per esportare in un file. csv. La bandiera EQUILIBRATO fa in modo che si ottiene il maggior numero positivo rendimenti negativi questo è importante per la maggior parte algoritmi di apprendimento automatico. Eseguire lo script in modalità treno con la nostra solita EURUSD prova risorsa selezionata. Si genera un file di foglio di calcolo denominato DeepSignalsEURUSDL. csv che contiene le caratteristiche nelle prime 8 colonne, e il ritorno del commercio nell'ultima colonna. Passo 6: Calibrare gli algoritmi di algoritmo di apprendimento macchina complessa hanno molti parametri per regolare. Alcuni di essi offrono grandi opportunità per la curva-fit l'algoritmo per le pubblicazioni. Tuttavia, dobbiamo calibrare i parametri poiché l'algoritmo funziona raramente bene con le impostazioni predefinite. Per questo, here8217s uno script R che legge il set di dati creati in precedenza e lo elabora con l'algoritmo di apprendimento profondo (DeepSignal. r): We8217ve definito tre funzioni neural. train. neural. predict. e neural. init per la formazione, la previsione, e l'inizializzazione la rete neurale. I nomi delle funzioni non sono arbitrarie, ma seguono la convenzione utilizzata dalla funzione Zorro8217s consulenza (neurale.). Si won8217t importa ora, ma importa più tardi, quando si usa lo stesso script R per la formazione e la negoziazione della strategia di apprendimento profondo. Una quarta funzione, TestOOS. viene utilizzato per out-of-sample test nostra messa a punto. I semi funzione neural. init generatore casuale R con un valore fisso (365 è il mio numero fortunato personale). In caso contrario, si otterrebbe un risultato leggermente diverso ogni volta, dal momento che la rete neurale viene inizializzato con pesi casuali. Inoltre, crea un elenco R globale denominato 8220Models8221. La maggior parte R tipi di variabili don8217t devono essere creati in precedenza, alcuni lo fanno (don8217t mi chiedono perché). L'operatore 8216ltlt-8216 è per l'accesso a una variabile globale all'interno di una funzione. La neural. train funzione prende come input un numero di modello e il set di dati per essere addestrato. Il numero di modello identifica il modello addestrato nel 8220 Models 8221 lista. Un elenco non è realmente necessario per questo test, ma we8217ll bisogno di strategie più complesse che si allenano più di un modello. La matrice contenente le caratteristiche e destinazione viene passato alla funzione come secondo parametro. Se i dati XY non è una matrice appropriata, che avviene spesso in R a seconda di come è stato generato, esso viene convertito in uno. Poi è suddivisa nelle caratteristiche (X) e la porta (Y), ed infine il bersaglio viene convertito in 1 per un esito commerciale positiva e 0 per esito negativo. I parametri di rete vengono impostati. Alcuni sono ovvi, altri sono liberi di giocare con: La struttura di rete è data dal vettore nascosta: c (50,100,50) definisce 3 strati nascosti, il primo con 50, secondo con 100, e il terzo con 50 neuroni. That8217s il parametro che we8217ll poi modificare per determinare se più profondo è meglio. La funzione di attivazione converte la somma dei valori di ingresso neurone all'uscita neurone più utilizzate sono sigma che satura a 0 o 1, o tanh che satura a -1 o 1. Usiamo tanh qui dato nostri segnali sono anche nella gamma -1 . L'uscita della rete è una funzione sigmoidale poiché vogliamo una previsione nell'intervallo 0..1. Ma l'uscita SAE deve essere 8220linear8221 modo che la pila Autoencoder può riprodurre i segnali di ingresso analogici sulle uscite. Il tasso di apprendimento controlla la dimensione del passo per la discesa del gradiente nella formazione di un tasso più basso significa passi più fini e forse più precisa previsione, ma i tempi di formazione più lungo. Momentum aggiunge una frazione del passo precedente a quello corrente. Previene la discesa del gradiente di rimanere bloccati in un piccolo punto di minimo o di sella locale. La scala tasso di apprendimento è un fattore di moltiplicazione per la modifica del tasso di apprendimento dopo ogni iterazione (non sono sicuro di ciò che questo è un bene, ma ci può essere compiti in cui un tasso di apprendimento inferiore epoche più elevati migliora la formazione). Un'epoca è un'iterazione di formazione sopra l'intero set di dati. La formazione si ferma una volta raggiunto il numero di epoche. Più epoche significa una migliore previsione, ma la formazione più a lungo. La dimensione del lotto è un numero di campioni casuali 8211 un mini lotto 8211 tolto dal set di dati per una singola corsa di formazione. Dividere i dati in mini lotti accelera la formazione dal momento che il gradiente di peso, si calcola un minor numero di campioni. Maggiore è la dimensione del lotto, migliore è la formazione, ma più tempo ci vorrà. L'abbandono è un numero di neuroni selezionati in modo casuale, che sono disattivati ​​durante un mini lotto. In questo modo la rete impara solo con una parte delle sue neuroni. Questo sembra una strana idea, ma in grado di ridurre efficacemente overfitting. Tutti questi parametri sono comuni per le reti neurali. Giocare con loro e verificare il loro effetto sul risultato e il tempo di allenamento. Correttamente calibrare una rete neurale non è banale e potrebbe essere il tema di un altro articolo. I parametri sono memorizzati nel modello insieme con la matrice dei pesi delle connessioni addestrati. Quindi hanno bisogno di non essere data di nuovo in funzione di predizione, neural. predict. Prende il modello e un vettore X di caratteristiche, lo gestisce attraverso gli strati, e restituisce l'output di rete, il target Y previsto. Rispetto alla formazione, la previsione è molto veloce in quanto necessita solo di un paio di migliaia di moltiplicazioni. Se X è un vettore riga, viene recepita e in questo modo convertito in un vettore colonna, altrimenti la funzione nn. predict won8217t accettarlo. Utilizzare RStudio o qualche ambiente simile per comodamente lavorare con R. Modifica il percorso per i dati CSV nel file di cui sopra, lo legge, installare i pacchetti R richiesti (Deepnet, E1071, e accento circonflesso), quindi chiamare la funzione TestOOS dal comando linea. Se tutto funziona, si dovrebbe stampare qualcosa di simile: TestOOS prima legge i nostri set di dati dalla cartella Zorro8217s dati. Si divide i dati in 80 per la formazione (XY. tr) e 20 per out-of-sample test (XY. ts). Il training set è addestrato e il risultato memorizzato nella lista modelle con indice 1. Il set di test è ulteriormente suddiviso nelle caratteristiche (X) e target (Y). Y viene convertito in binario 0 o 1 e memorizzato in Y. ob. il nostro vettore di obiettivi osservati. Abbiamo poi prevedere gli obiettivi del set di prova, convertirli di nuovo a binario 0 o 1 e memorizzarli in Y. pr. Per il confronto l'osservazione con la previsione, usiamo la funzione di matrice di confusione dal pacchetto cursore. Una matrice di confusione di un classificatore binario è semplicemente una matrice 22152 che indica quante 08217s e quanti 18217s era stato previsto a torto e in modo corretto. Molti parametri sono derivati ​​dalla matrice e stampata nelle righe precedenti. La più importante in questo momento è l'accuratezza 62 previsione. Ciò potrebbe suggerire che ho sbattuto l'azione dei prezzi di negoziazione un po 'prematuramente. Ma, naturalmente, il 62 potrebbe essere stata solo fortuna. We8217ll vedere che più tardi, quando si corre una prova WFO. Un consiglio finale: pacchetti R sono occasionalmente aggiornate, con la possibile conseguenza che il codice precedente R improvvisamente potrebbe funzionare in modo diverso, o per niente. Questo accade davvero, così proviamo con attenzione dopo ogni aggiornamento. Passo 7: La strategia Ora che we8217ve testati nostro algoritmo e ottenuto una certa precisione previsione superiore a 50, con un set di dati di test, possiamo finalmente codificare la nostra strategia di apprendimento automatico. Infatti we8217ve già codificato la maggior parte di esso, dobbiamo solo bisogna aggiungere alcune righe allo script Zorro sopra che ha esportato il set di dati. Questo è lo script finale per la formazione, test, e (in teoria) di negoziazione del sistema (DeepLearn. c): We8217re utilizzando un ciclo WFO di un anno, diviso in un corso di formazione di 90 e un out-of-campione di periodo di prova 10. Si potrebbe chiedere perché ho in precedenza utilizzato due dati year8217s e una divisione diversa, 8020, per la calibrazione della rete al punto 5. Questo è per l'utilizzo di dati in modo diverso composti per la calibrazione e per i test in avanti passeggiata. Se abbiamo usato esattamente gli stessi dati, la calibrazione potrebbe OVERFIT e compromettere il test. I parametri WFO selezionati significano che il sistema è allenato con i dati di circa 225 giorni, seguiti da un periodo di 25 giorni di prova o il commercio con nessuna formazione. Nella letteratura you8217ll a volte trovare raccomandazioni per riqualificare un sistema di apprendimento automatico dopo qualsiasi commercio, o per lo meno ogni giorno. Ma questo non ha molto senso per me. Quando è stato utilizzato quasi 1 dati year8217s per la formazione di un sistema, si può ovviamente non deteriorarsi dopo un solo giorno. O, se lo ha fatto, e ha prodotto solo risultati positivi con la riqualificazione quotidiano, avrei fortemente sospetto che i risultati sono artefatti da parte di alcuni di codifica errore. La formazione di un network profonda richiede molto tempo, nel nostro caso circa 10 minuti per una rete con 3 strati nascosti e 200 neuroni. Poiché questo si ripete ad ogni ciclo WFO, utilizzando più core è raccomandato per formare molti cicli in parallelo. La variabile NumCores a -1 attiva tutti i core della CPU, ma uno. Centri multipli sono disponibili solo in Zorro S, quindi un test in avanti passeggiata completa di tutti i cicli di WFO può richiedere diverse ore con la versione gratuita. Nello script che ora alleniamo compravendite sia lunghe che corte. Per questo dobbiamo permettere di copertura in modalità Training, poiché posizioni lunghe e corte sono aperte allo stesso tempo. Entrare posizione è ora dipende dal valore di ritorno dalla funzione consiglio, che a sua volta richiama sia il neural. train o la funzione neural. predict dallo script R. Così we8217re qui entrare posizioni quando la rete neurale prevede un risultato superiore a 0,5. Lo script R è ora controllata dallo script Zorro (per questo deve avere lo stesso nome, NeuralLearn. r. Solo con estensione diversa). E 'identico al nostro script R sopra poiché we8217re utilizzando gli stessi parametri di rete. Una sola funzione aggiuntiva è necessaria per sostenere un test di WFO: La funzione neural. save memorizza l'elenco Models 8211 ora contiene 2 modelli per lungo e per brevi commerci 8211 dopo ogni prova cronometrata nella cartella Zorro8217s dati. Dal momento che i modelli sono memorizzati per un uso successivo, non abbiamo bisogno di formare di nuovo per corse di prova ripetuti. Questa è la curva di equità WFO generato con lo script di cui sopra (EURUSD, senza costi commerciali): Anche se non tutti i cicli WFO ottenere un risultato positivo, sembra che ci sia qualche effetto predittivo. La curva è equivalente ad un rendimento annuo 89, realizzato con una struttura strato nascosto 50-100-50. We8217ll il check-in il prossimo passo come le diverse strutture di rete influenzano il risultato. Dal momento che il neural. init. neural. train. neural. predict. e le funzioni di neural. save vengono chiamate automaticamente da funzioni Zorro8217s adviseLongadviseShort, non ci sono funzioni R chiamati direttamente nello script Zorro. Così lo script può rimanere invariato quando si utilizza un metodo di apprendimento macchina diversa. lo script DeepLearn. r deve essere modificato solo e la rete neurale, per esempio, sostituito da una macchina di supporto vettore. Per la negoziazione di un tale sistema di apprendimento automatico in diretta su un VPS, assicurarsi che R è installato anche sul VPS, i pacchetti R richiesti vengono installati, e il percorso al terminale R istituito nel file ini Zorro8217s. In caso contrario, you8217ll un messaggio di errore quando si avvia la strategia. Fase 8: L'esperimento Se il nostro obiettivo fosse stato lo sviluppo di una strategia, i prossimi passi sarebbe la gestione controllo di realtà, il rischio e il denaro, e la preparazione per il trading dal vivo proprio come descritto in fase di sviluppo di strategia basato su modelli. Ma per il nostro esperimento we8217ll ora eseguire una serie di test, con il numero di neuroni per strato aumentata da 10 a 100 in 3 passi, e 1, 2, o 3 strati nascosti (Deepnet non supporta più di 3). Così we8217re esaminando i seguenti 9 strutture di rete: c (10), C (10,10), C (10,10,10), C (30), C (30,30), c (30,30,30 ), C (100), C (100,100), C (100.100.100). Per questo esperimento è necessario un pomeriggio anche con un PC veloce e in modalità multiple core. Ecco i risultati (SR indice di Sharpe, R2 di linearità): Vediamo che una semplice rete con soli 10 neuroni in una sola opera strato won8217t nascosto e per la previsione a breve termine. complessità Network migliora nettamente le prestazioni, ma solo fino ad un certo punto. Un buon risultato per il nostro sistema è già raggiunto con 3 strati x 30 neuroni. Ancora più neuroni won8217t aiutano molto e qualche volta anche di produrre un risultato peggiore. Questa non è una vera sorpresa, dal momento che per la lavorazione di solo 8 ingressi, 300 neuroni possono probabilmente non fare un lavoro migliore di 100. Conclusione Il nostro obiettivo era determinare se un paio di candele possono avere potere predittivo e come i risultati sono influenzati dalla complessità dell'algoritmo . I risultati sembrano suggerire che i movimenti di prezzo a breve termine possono infatti essere previsti a volte, analizzando i cambiamenti e le gamme degli ultimi 4 candele. La previsione non è molto accurato 8211 it8217s nel range 58..60, e la maggior parte dei sistemi della serie di test diventano inutili quando i costi di negoziazione sono inclusi. Still, I have to reconsider my opinion about price action trading. The fact that the prediction improves with network complexity is an especially convincing argument for short-term price predictability. It would be interesting to look into the long-term stability of predictive price patterns. For this we had to run another series of experiments and modify the training period ( WFOPeriod in the script above) and the 90 ISOOS split. This takes longer time since we must use more historical data. I have done a few tests and found so far that a year seems to be indeed a good training period. The system deteriorates with periods longer than a few years. Predictive price patterns, at least of EURUSD, have a limited lifetime. Where can we go from here There8217s a plethora of possibilities, for instance: Use inputs from more candles and process them with far bigger networks with thousands of neurons. Use oversampling for expanding the training data. Prediction always improves with more training samples. Compress time series f. i. with spectal analysis and analyze not the candles, but their frequency representation with machine learning methods. Use inputs from many candles 8211 such as, 100 8211 and pre-process adjacent candles with one-dimensional convolutional network layers. Use recurrent networks. Especially LSTM could be very interesting for analyzing time series 8211 and as to my knowledge, they have been rarely used for financial prediction so far. Use an ensemble of neural networks for prediction, such as Aronson8217s 8220oracles8221 and 8220comitees8221. Papers Articles I8217ve added the C and R scripts to the 2016 script repository. You need both in Zorro8217s Strategy folder. Zorro version 1.474, and R version 3.2.5 (64 bit) was used for the experiment, but it should also work with other versions. Results below were generated by revised version of DeepSignals. r 8211 only change was use of LSTM net from the rnn package on CRAN. The authors of the package regard their LSTM implementation as 8220experimental8221 and do not feel it is as yet learning properly, so hopefully more improvement to come there. (Spent ages trying to accomplish the LSTM element using the mxnet package but gave up as couldn8217t figure out the correct input format when using multiple training features.) Will post results of full WFO when I have finished LSTM version of DeepLearn. r Confusion Matrix and Statistics Reference Prediction 0 1 0 1641 1167 1 1225 1701 Accuracy. 0.5828 95 CI. (0.5699, 0.5956) No Information Rate. 0.5002 P-Value Acc gt NIR. lt2e-16 Kappa. 0.1657 Mcnemar039s Test P-Value. 0.2438 Sensitivity. 0.5726 Specificity. 0.5931 Pos Pred Value. 0.5844 Neg Pred Value. 0.5813 Prevalence. 0.4998 Detection Rate. 0.2862 Detection Prevalence. 0.4897 Balanced Accuracy. 0.5828 039Positive039 Class. 0 Results of WFO test below. Again, only change to original files was the use of LSTM in R, rather than DNNSAE. Walk-Forward Test DeepLearnLSTMV4 EURUSD Simulated account AssetsFix Bar period 1 hour (avg 87 min) Simulation period 15.05.2014-07.06.2016 (12486 bars) Test period 04.05.2015-07.06.2016 (6649 bars) Lookback period 100 bars (4 days) WFO test cycles 11 x 604 bars (5 weeks) Training cycles 12 x 5439 bars (46 weeks) Monte Carlo cycles 200 Assumed slippage 0.0 sec Spread 0.0 pips (roll 0.000.00) Contracts per lot 1000.0 Gross winloss 3628 -3235 (5199p) Average profit 360year, 30month, 1.38day Max drawdown -134 34 (MAE -134 34) Total down time 95 (TAE 95) Max down time 5 weeks from Aug 2015 Max open margin 40 Max open risk 35 Trade volume 5710964 (5212652year) Transaction costs 0.00 spr, 0.00 slp, 0.00 rol Capital required 262 Number of trades 6787 (6195year, 120week, 25day) Percent winning 57.6 Max winloss 16 -14 Avg trade profit 0.06 0.8p (12.3p -14.8p) Avg trade slippage 0.00 0.0p (0.0p -0.0p) Avg trade bars 1 (1 -2) Max trade bars 3 (3 hours) Time in market 177 Max open trades 3 Max loss streak 17 (uncorrelated 11) Annual return 137 Profit factor 1.12 (PRR 1.08) Sharpe ratio 1.79 Kelly criterion 2.34 R2 coefficient 0.435 Ulcer index 13.3 Prediction error 152 Confidence level AR DDMax Capital 10 143 128 252 20 129 144 278 30 117 161 306 40 107 179 336 50 101 190 355 60 92 213 392 70 85 232 425 80 77 257 466 90 64 314 559 95 53 383 675 100 42 495 859 Portfolio analysis OptF ProF WinLoss Wgt Cycles EURUSD .219 1.12 39072880 100.0 XXX EURUSD:L .302 1.17 18301658 65.0 EURUSD:S .145 1.08 20771222 35.0 Interesting For a still experimental LSTM implementation that result looks not bad. Could you help me answering some questions I have few question below: 1.I want to test Commission mode. If I use interactive broker, I should set Commission . in normal case. 2.If I press the 8220trade8221 button, I see the log the script will use DeepLearnEURUSD. ml. So real trade it will use DeepLearnEURUSD. ml to get the model to trade And use neural. predict function to trade 3.If I use the slow computer to train the data , I should move DeepLearnEURUSD. ml to the trade computer I test the real trade on my interactive brokers and press the result button. Can I use Commission0.60 to train the neural and get the real result Thank you. Result button will show the message below: Trade Trend EURUSD Bar period 2 min (avg 2 min) Trade period 02.11.2016-02.11.2016 Spread 0.5 pips (roll -0.020.01) Commission 0.60 Contracts per lot 1000.0 Commission should be normally not set up in the script, but entered in the broker specific asset list. Otherwise you had to change the script every time when you want to test it with a different broker or account. IB has different lot sizes and commissions, so you need to add the command to the script when you want to test it for an IB account. Yes, DeepLearnEURUSD. ml is the model for live trading, and you need to copy it to the trade computer. Dear jcl Do I write assetList(AssetsIB. csv) in the right place So below code8217s result includes Commission I test the result with Commission that seems pretty good. Annual 93 3177p function run() StartDate 20140601 BarPeriod 60 1 hour LookBack 100 WFOPeriod 25224 1 year DataSplit 90 NumCores -1 use all CPU cores but one assetList(8220AssetsIB. csv8221) set(RULES) Spread RollLong RollShort Commission Slippage 0 LifeTime 3 if(Train) Hedge 2 if(adviseLong(NEURALBALANCED,0, change(1),change(2),change(3),change(4), range(1),range(2),range(3),range(4)) gt 0.5) enterLong() if(adviseShort() gt 0.5) enterShort() Problem 1: I run the DeepLearn. c in the IB paper trade. The code 8220LifeTime 3 prediction horizon8221 seems to close the position that you open after 3 bars(3 hours). But I can8217t see it close the position on third bar close. I see the logs below: Closing prohibited 8211 check NFA flag EURUSD::L4202 Can8217t close 11.10995 at 09:10:51 Problem 2: In my IB paper trade, it the default order size is 1k on EURUSD. How to change the order size in paper trade Thank you very much. IB is an NFA compliant broker. You can not close trades on NFA accounts. You must set the NFA flag for opening a reverse position instead. And you must enable trading costs, otherwise including the commission has no effect. I don8217t think that you get a positive result with trading costs. Those account issues are not related to machine learning, and are better asked on the Zorro forum. Or even better, read the Zorro manual where all this is explained. Just search for 8220NFA8221. I do some experiment to change the neural8217s parameter with commission. The code is below: function run() StartDate 20140601 BarPeriod 60 1 hour LookBack 100 WFOPeriod 25224 1 year DataSplit 90 NumCores -1 use all CPU cores but one assetList(8220AssetsIB. csv8221) set(RULES) Spread RollLong RollShort Slippage 0 LifeTime 3 if(Train) Hedge 2 if(adviseLong(NEURALBALANCED,0, change(1),change(3),change(5),change(7),change(9), range(1),range(3),range(5),range(7),range(9)) gt 0.7) enterLong() if(adviseShort() gt 0.7) enterShort() I get the result with commission that Annual Return is about 23. But I don8217t complete understand the zorro8217s setting and zorro8217s report. Grazie. The result: Annual 23 661p Walk-Forward Test DeepLearn EURUSD Simulated account AssetsIB. csv Bar period 1 hour (avg 86 min) Simulation period 15.05.2014-09.09.2016 (14075 bars) Test period 23.04.2015-09.09.2016 (8404 bars) Lookback period 100 bars (4 days) WFO test cycles 14 x 600 bars (5 weeks) Training cycles 15 x 5401 bars (46 weeks) Monte Carlo cycles 200 Simulation mode Realistic (slippage 0.0 sec) Spread 0.0 pips (roll 0.000.00) Commission 0.50 Contracts per lot 20000.0 Gross winloss 24331 -22685 (914p) Average profit 1190year, 99month, 4.58day Max drawdown -1871 114 (MAE -1912 116) Total down time 92 (TAE 41) Max down time 18 weeks from Dec 2015 Max open margin 2483 Max open risk 836 Trade volume 26162350 (18916130year) Transaction costs 0.00 spr, 0.00 slp, 0.00 rol, -1306 com Capital required 5239 Number of trades 1306 (945year, 19week, 4day) Percent winning 52.5 Max winloss 375 -535 Avg trade profit 1.26 0.7p (19.7p -20.3p) Avg trade slippage 0.00 0.0p (0.0p -0.0p) Avg trade bars 2 (2 -3) Max trade bars 3 (3 hours) Time in market 46 Max open trades 3 Max loss streak 19 (uncorrelated 10) Annual return 23 Profit factor 1.07 (PRR 0.99) Sharpe ratio 0.56 Kelly criterion 1.39 R2 coefficient 0.000 Ulcer index 20.8 Confidence level AR DDMax Capital 10 29 1134 4153 20 27 1320 4427 30 26 1476 4656 40 24 1649 4911 50 23 1767 5085 60 22 1914 5301 70 21 2245 5789 80 19 2535 6216 90 16 3341 7403 95 15 3690 7917 100 12 4850 9625 Portfolio analysis OptF ProF WinLoss Wgt Cycles EURUSD .256 1.07 685621 100.0 XXXXXXXXXXXX EURUSD:L .476 1.16 294278 94.5 EURUSD:S .026 1.01 391343 5.5

No comments:

Post a Comment