Quantstart Forex Trading
Quant Strategies - sono per voi le strategie d'investimento quantitative sono evoluti in strumenti molto complessi con l'avvento dei moderni computer, ma le strategie radici risalgono oltre 70 anni. Essi sono in genere gestiti da team altamente istruiti e utilizzano modelli proprietari per aumentare la loro capacità di battere il mercato. Ci sono programmi, anche off-the-shelf che sono plug-and-play per chi cerca semplicità. modelli Quant funzionano sempre bene quando torna testato, ma le loro applicazioni reali e tasso di successo sono discutibili. Mentre sembrano funzionare bene in mercati toro. quando i mercati vanno in tilt, le strategie quant sono sottoposti agli stessi rischi come qualsiasi altra strategia. La storia Uno dei padri fondatori dello studio della teoria quantitativa applicata alla Finanza era Robert Merton. Si può solo immaginare quanto sia difficile e richiede molto tempo il processo è stato prima l'uso del computer. Altre teorie della finanza si sono evoluti anche da alcuni dei primi studi quantitativi, compresa la base di diversificazione del portafoglio sulla base di moderna teoria di portafoglio. L'uso di entrambi finanza quantitativa e calcolo ha portato a molti altri strumenti comuni, tra cui uno dei più famosi, la formula di valutazione delle opzioni di Black-Scholes, che aiuta non solo le opzioni investitori di prezzo e sviluppare strategie, ma aiuta a mantenere i mercati sotto controllo con la liquidità. Quando viene applicato direttamente alla gestione del portafoglio. l'obiettivo è come qualsiasi altra strategia di investimento. per aggiungere valore, alfa o rendimenti in eccesso. Quants, come gli sviluppatori sono chiamati, compongono complessi modelli matematici per individuare opportunità di investimento. Ci sono molti modelli là fuori come quants che li sviluppano, e tutti sostengono di essere il migliore. Uno di un quant strategys investimento best-seller punti è che il modello, e, infine, il computer, prende la decisione buysell reale, non un essere umano. Questo tende a rimuovere ogni risposta emotiva che una persona può sperimentare per comprare o vendere investimenti. strategie Quant sono ora accettati nella comunità degli investitori e gestiti da fondi comuni, hedge fund e investitori istituzionali. Essi in genere vanno dai generatori nome alfa. o gens alfa. Dietro la cortina proprio come nel Mago di Oz, qualcuno è dietro la tenda guidare il processo. Come con qualsiasi modello, il suo solo buono come l'essere umano che si sviluppa il programma. Mentre non vi è alcun requisito specifico per diventare un Quant, la maggior parte delle imprese che eseguono modelli quant uniscono le competenze di analisti finanziari, statistici e programmatori che il codice del processo nei computer. A causa della natura complessa dei modelli matematici e statistici, la sua comune vedere le credenziali come lauree e dottorati in finanza, economia, matematica e ingegneria. Storicamente, questi i membri del team hanno lavorato negli uffici di back. ma come modelli quant è diventato più comune, il back office si sta muovendo per il front office. Benefici delle strategie Quant Mentre il tasso globale di successo è discutibile, la ragione per alcune strategie di quant lavoro è che si basano sulla disciplina. Se il modello è di destra, la disciplina mantiene la strategia di lavorare con i computer fulmini velocità per sfruttare le inefficienze dei mercati sulla base di dati quantitativi. I modelli stessi possono essere basate su un minimo di alcuni rapporti come PE. debiti in capitale e la crescita degli utili, o utilizzare migliaia di ingressi che lavorano insieme allo stesso tempo. Strategie di successo possono prendere sulle tendenze nelle fasi iniziali, come i computer eseguono costantemente scenari per individuare inefficienze prima degli altri. I modelli sono in grado di analizzare un gruppo molto ampio di investimenti contemporaneamente, in cui l'analista tradizionale può guardare solo pochi alla volta. Il processo di screening può valutare l'universo da livelli di qualità come 1-5 o A-F a seconda del modello. Questo rende il processo di negoziazione reale molto semplice, investendo negli investimenti ad alto rating e la vendita di quelli a basso rating. modelli Quant aprono anche le variazioni delle strategie come lungo, corto e longshort. fondi quant successo tenere un occhio attento sul controllo del rischio a causa della natura dei loro modelli. La maggior parte delle strategie di iniziare con un universo o di riferimento e utilizzare settore e le ponderazioni di settore nei loro modelli. Questo permette ai fondi di controllare la diversificazione in una certa misura, senza compromettere il modello stesso. fondi quant genere eseguite su una base di costo più basso perché non hanno bisogno come molti analisti e gestori di portafoglio tradizionali per farli funzionare. Svantaggi di strategie Quant Non ci sono ragioni per cui così tanti investitori non cogliere appieno il concetto di lasciare una scatola nera eseguire i loro investimenti. Per tutti i fondi quant successo là fuori, proprio come molti sembrano non avere successo. Purtroppo per la reputazione quants, quando falliscono, falliscono grande tempo. Long-Term Capital Management è stato uno dei più famosi hedge fund quant, come è stato gestito da alcuni dei leader accademici più rispettati e due economisti Nobel Memorial Prize-winning Myron S. Scholes e Robert C. Merton. Negli anni 1990, la loro squadra ha generato rendimenti superiori alla media e ha attirato capitali da tutti i tipi di investitori. Erano famosi non solo per sfruttare le inefficienze, ma utilizzando un facile accesso al capitale per creare enormi scommesse leva su indicazioni del mercato. La natura disciplinata della loro strategia in realtà creato la debolezza che ha portato alla loro collasso. Long-Term Capital Management è stata liquidata e sciolta nei primi mesi del 2000. I suoi modelli non includono la possibilità che il governo russo risulti inadempiente su alcuni del proprio debito. Questo evento ha innescato eventi e una reazione a catena ingrandita dal caos leva-creato. LTCM è stato così pesantemente coinvolto con altre operazioni di investimento che il suo crollo ha interessato i mercati mondiali, innescando eventi drammatici. Nel lungo periodo, la Federal Reserve è intervenuta per aiutare, e altre banche e fondi di investimento sostenuto LTCM per evitare ulteriori danni. Questo è uno dei motivi per fondi quant può fallire, in quanto si basano su eventi storici che non possono comprendere gli eventi futuri. Mentre una squadra forte quant sarà l'aggiunta di sempre nuovi aspetti ai modelli per predire eventi futuri, la sua impossibile prevedere il futuro ogni volta. fondi quant possono anche essere sopraffatti quando l'economia ed i mercati stanno vivendo volatilità superiore alla media. I segnali di acquisto e vendita possono venire così rapidamente che il turnover può creare alte commissioni e gli eventi imponibili. fondi quant possono anche rappresentare un pericolo quando sono commercializzati come orso a prova o si basano su strategie a breve. Prevedere flessioni. utilizzando strumenti derivati e combinare leva può essere pericoloso. Una curva sbagliata può portare a implosioni, che spesso fanno notizia. Le strategie di investimento quantitative Bottom Line si sono evoluti da back office scatole nere a strumenti di investimento tradizionali. Essi sono progettati per utilizzare le migliori menti del settore e dei computer più veloci sia per sfruttare le inefficienze e utilizzare la leva per fare le scommesse del mercato. Possono essere molto efficace se i modelli hanno incluso tutti gli input giusti e sono abbastanza agile per predire eventi di mercato anomali. Il rovescio della medaglia, mentre i fondi quant sono rigorosamente testati indietro fino a che non lavorano, il loro punto debole è che si basano su dati storici per il loro successo. Mentre Quant-style che investe ha il suo posto nel mercato, è importante essere consapevoli dei suoi difetti e rischi. Per essere coerenti con le strategie di diversificazione. è una buona idea per il trattamento di strategie quant come uno stile di investimento e combinarlo con le strategie tradizionali per realizzare un'adeguata diversificazione. Un tipo di imposta riscossa sulle plusvalenze sostenute da individui e aziende. Le plusvalenze sono i profitti che un investitore. Un ordine per l'acquisto di un titolo pari o inferiore a un determinato prezzo. Un ordine di acquisto limite consente agli operatori e agli investitori di specificare. Un Internal Revenue Service (IRS) regola che consente per i prelievi senza penalità da un account IRA. La regola prevede che. La prima vendita di azioni da una società privata al pubblico. IPO sono spesso emesse da piccole, le aziende più giovani che cercano la. Rapporto DebtEquity è rapporto debito utilizzato per misurare una leva finanziaria company039s o un rapporto debito utilizzato per misurare un individuo. Un tipo di struttura di compensazione che i gestori di hedge fund tipicamente impiegano in cui una parte del risarcimento è la prestazione based. Forex Trading Diary 5 - Trading coppie di valute multiple Ieri ho pubblicato alcune importanti modifiche al software QSForex. Queste modifiche hanno aumentato l'utilità del sistema in modo significativo al punto in cui è quasi pronto per più giorni backtesting tick-dati su una serie di coppie di valute. Le seguenti modifiche sono state pubblicate a Github: Ulteriori modifiche sia per la posizione e gli oggetti portafoglio al fine di consentire a più coppie di valute per essere scambiati, nonché valute che non sono denominati nella valuta del conto. Quindi un account GBP-deonominated possono ora scambiare EURUSD, per esempio. Revisione completa di come la posizione e calcolare portafoglio si apre, si chiude, aggiunte e rimozioni di unità. L'oggetto la società svolge il lavoro pesante lasciando un oggetto portafoglio relativamente magro. L'aggiunta della prima strategia non banale, cioè il noto Moving strategia Average Crossover con un paio di semplici medie mobili (SMA). Modifiche ai backtest. py per renderlo single-threaded e deterministica. Nonostante il mio ottimismo che un approccio multi-threaded andrei essere troppo dannoso per simulazione la precisione, ho trovato difficile ottenere risultati dei test retrospettivi soddisfacenti con un approccio multi-threaded. Introdotto uno script uscita Matplotlib-based molto di base per la visualizzazione della curva azionaria del portafoglio. La generazione curva di equità è in una fase iniziale e richiede ancora un sacco di lavoro. Come ho già detto nella voce precedente. per quelli di voi che non hanno familiarità con QSForex e vengono a questa serie diario forex per la prima volta, vi consiglio vivamente di avere una lettura delle seguenti voci di diario per arrivare fino a velocità con il software: Oltre alla pagina di Github per QSForex : multiple valuta supportano una caratteristica che ho sempre discusso in queste pagine di diario è la capacità di supportare più coppie di valute. In questa fase Ive ora ha modificato il software per consentire diverse denominazioni conto, dal momento che in precedenza era la valuta GBP hardcoded. E 'inoltre ora possibile scambi di altre coppie di valute, ad eccezione di quelli che sono costituiti da una base o citazione in Yen giapponesi (JPY). Quest'ultimo è dovuto al modo in tick dimensioni sono caclulated in valute JPY. Per raggiungere questo ho modificato come il profitto viene calcolato quando le unità vengono rimossi o la posizione viene chiusa. Ecco il frammento di corrente per il calcolo pips, nel file position. py: Se chiudiamo la posizione al fine di realizzare un guadagno o una perdita, abbiamo bisogno di utilizzare il seguente frammento per closeposition. anche nel file position. py: In primo luogo si ottiene l'offerta e chiedere i prezzi sia per la coppia di valute oggetto di scambio così come la coppia di valute quotehome. Per esempio, per un account denominato in sterline, in cui ci stiamo trading EURUSD, dobbiamo ottenere prezzi per USDGBP, poiché euro è la valuta di base e USD è la citazione. In questa fase, controlliamo se la posizione in sé è una posizione lunga o corta e quindi calcolare il prezzo di rimozione appropriata e quotehome rimuovere prezzo, che sono dati rispettivamente da removeprice e qhclose. Abbiamo quindi aggiornare i prezzi correnti e medi all'interno della posizione e, infine, calcoliamo la PampL moltiplicando i semi, il prezzo di rimozione quotehome e quindi il numero di unità sono state chiudendo. Abbiamo completamente eliminato la necessità di discutere l'esposizione, che era una variabile ridondante. Questa formula fornisce quindi correttamente il PampL contro qualsiasi (non-JPY denominate) coppia di valute commercio. Revisione della posizione e del portafoglio Handling Oltre alla possibilità di scambi di coppie di valute multiple Ive anche raffinato come la posizione e Portfolio condividono la responsabilità di posizioni di apertura e di chiusura, così come le unità aggiungendo e sottraendo. In particolare, Ive ha spostato gran parte del codice di posizione di gestione che era in portfolio. py in position. py. Questo è più naturale in quanto la posizione dovrebbe prendere cura di se stessa e non delegando al portafoglio In particolare, i addunits. removeunits e metodi closeposition sono state create o migliorate: In questi ultimi due si può vedere come è implementato la nuova formula per il calcolo del profitto. Molte delle funzionalità della classe portafoglio è quindi stato corrispondentemente ridotta. In particolare, le modalità addnewposition. addpositionunits. removepositionunits e closeposition sono stati modificati per tener conto del fatto che il lavoro di calcolo è stato fatto nell'oggetto Posizione: In sostanza tutti (a parte addnewposition) semplicemente controllare se la posizione esiste per quella coppia di valute e quindi chiamare il metodo corrispondente posizione , tenendo conto del profitto, se necessario. Moving Average Crossover strategia Weve ha discusso la strategia di Moving Average Crossover prima su QuantStart. nel contesto delle azioni di trading. È un utilissimo indicatore strategia banco di prova perché è facile replicare i calcoli a mano (almeno a frequenze più basse), al fine di verificare che il backtester si comporta come dovrebbe. L'idea di base della strategia è come segue: Due semplici filtri medi separati movimento sono creati, con vari periodi lookback, di una particolare serie temporale. I segnali di acquisto del bene si verificano quando la media mobile lookback più breve supera la più lookback media mobile. Se la media più successivamente supera la media più breve, il bene viene venduto indietro. La strategia funziona bene quando una serie di tempo entra in un periodo di forte tendenza e poi inverte lentamente la tendenza. L'implementazione è semplice. In primo luogo, mettiamo a disposizione un metodo calcrollingsma che ci permette di utilizzare in modo più efficiente il precedente periodo di tempo di calcolo SMA al fine di generare il nuovo, senza dover ricalcolare completamente la SMA ad ogni passo. In secondo luogo, generare segnali in due casi. Nel primo caso si genera un segnale se la breve SMA supera la lunga SMA e di non lunga la coppia di valute. Nel secondo caso si genera un segnale se la lunga SMA supera breve SMA e siamo già lunga. Ho impostato la finestra predefinita di essere 500 battiti per il breve SMA e 2.000 zecche per il lungo SMA. Ovviamente in una impostazione di questi parametri produttivo verrà migliorato, ma funzionano bene per i nostri scopi di test. Single-threaded Backtester Un altro cambiamento importante è stato quello di modificare il componente backtesting di essere single-threaded, piuttosto che multi-threaded. Ho fatto questo cambiamento, perché ho avuto un momento molto difficile sincronizzare i fili per eseguire in modo che si verificherebbe in un ambiente vivo. E 'in sostanza ha fatto sì che i prezzi d'entrata e di uscita sono stati molto realistico, spesso si verificano ore (virtuali) dopo la zecca reale era stato ricevuto. Quindi ho incorporato lo streaming di TickEvent oggetti nel circuito backtesting, come si può vedere nel seguente frammento di backtest. py: Si noti la linea di ticker. streamnexttick (). Questo è chiamato prima di un polling della coda eventi e come tale sarà sempre garantire che un nuovo evento tick pervenute prima che la coda viene interrogato di nuovo. In particolare, ciò significa che un segnale viene eseguita come arrivano nuovi dati di mercato, anche se c'è un certo ritardo nel processo di ordinazione a causa di slittamento. Ive anche impostare un valore maxiters che controlla per quanto tempo il ciclo di backtesting continua. In pratica, questo dovrà essere abbastanza grande quando si tratta di più valute su più giorni, ma Ive impostato su un valore di default che permette per un singolo giorno di dati di una coppia di valute. Il metodo streamnexttick della classe handler prezzo è simile a streamtoqueue tranne che chiama il iteratore metodo next () manualmente, piuttosto che svolgere il segno di spunta in streaming in un ciclo for: Si noti che si ferma dopo aver ricevuto un'eccezione StopIteration. Questo consente al codice di riprendere piuttosto che schiantarsi l'eccezione. Matplotlib uscita Ive ha anche creato uno script molto semplice uscita Matplotlib per visualizzare la curva di equità. output. py attualmente vive nella directory backtest di QSForex e è il seguente: Si noti che c'è una nuova variabile settings. py ora chiamato OUTPUTRESULTSDIR. che deve essere impostato nelle impostazioni. Ce l'ho indicando una directory temporanea altrove sul mio file system come io non voglio aggiungere accidentalmente alcun risultato netto backtest alla base di codice La curva di equità funziona avendo un valore di equilibrio aggiunto a un elenco di dizionari, con un dizionario corrispondente ad una time-stamp. Una volta che il back-test è completo l'elenco dei dizionari è convertito in un Pandas dataframe e il metodo tocsv viene utilizzato per equity. csv uscita. Questo script uscita poi semplicemente si legge nel file e traccia la colonna di equilibrio della successiva dataframe. È possibile vedere il frammento per le appendequityrow e outputresults metodi della classe portafoglio di seguito: Ogni volta executesignal si chiama, il primo metodo viene chiamato e aggiunge il valore timestampbalance al membro del patrimonio netto. Alla fine degli outputresults backtest si chiama semplicemente che converte l'elenco dei dizionari ad un dataframe e poi uscite directory OUTPUTRESULTSDIR specificata. Purtroppo, questo non è un modo particolarmente appropriato di creare una curva netto si verifica solo quando viene generato un segnale. Ciò significa che non prende in considerazione PampL non realizzato. Anche se questo è il modo vero e proprio avviene la negoziazione (havent realmente fatto i soldi fino a quando si chiude una posizione) significa che la curva di equità rimarrà completamente pianeggiante tra gli aggiornamenti di equilibrio. Peggio ancora, Matplotlib imposterà interpolazione lineare tra questi punti, fornendo così la falsa impressione del PampL non realizzato. La soluzione a questo problema è quello di creare un inseguitore PampL realizzato per la classe posizione che aggiorna correttamente su ogni tick. Questo è un po 'più computazionalmente costoso, ma non consentire una curva di equità più utile. Questa funzione è prevista per una data successiva Fasi successive Il principale compito successivo per QSForex è quello di permettere di più giorni backtesting. Attualmente l'oggetto HistoricCSVPriceHandler carica un solo valore di giorni di dati di Dukascopy tick per eventuali coppie di valute specificate. Per consentire più giorni testando sarà necessario caricare e streaming ogni giorno sequenzialmente per evitare RAM riempimento con tutta la storia dei dati tick. Ciò richiederà una modifica di come funziona il metodo streamnexttick. Una volta che è completo permetterà backtesting strategia a lungo termine su più coppie. Un altro compito è quello di migliorare l'uscita della curva di equità. Al fine di calcolare una qualsiasi delle usuali parametri di rendimento (come l'indice di Sharpe) avremo bisogno di calcolare i rendimenti percentuali in un determinato periodo di tempo. Tuttavia, questo richiede che bin i dati delle zecche nel bar al fine di calcolare il ritorno per un determinato periodo di tempo. Tale categorizzazione deve avvenire su una frequenza di campionamento che è simile alla frequenza negoziazione o Ratio Sharpe non sarà rispecchiano l'effettiva riskreward della strategia. Questa categorizzazione non è un esercizio banale come ci sono un sacco di ipotesi che vanno in generando un prezzo per ogni bin. Una volta che questi due compiti sono completi, e dati sufficienti è stato acquisito, saremo in grado di backtest una vasta gamma di tick-dati basati strategie forex e produrre curve di patrimonio netto della maggior parte dei costi di transazione. Inoltre, sarà estremamente semplice per testare queste strategie sul conto pratica carta-trading fornito da OANDA. Questo dovrebbe consentire di fare molto meglio decisioni sul fatto che per eseguire una strategia rispetto ad una ricerca orientata sistema più backtesting. Appena iniziato con Quantitative TradingForex Trading Diary 3 - Aprire Sourcing il Forex Trading System Nell'odierna ingresso del Trading Forex Diario voglio discutere il piano a lungo termine per il sistema di trading forex. Oltre voglio delineare come Ive ha usato Pythons Decimale tipo di dati per fare calcoli più precisi. Fino ad oggi, weve modo di sperimentare con il OANDA Resto API al fine di vedere come rispetto al API fornite da Interactive Brokers. Weve anche visto come aggiungere un elemento di replica portafoglio di base, come il primo passo verso un adeguato sistema di backtesting event-driven. Ive ha avuto anche alcuni commenti utili su entrambi i precedenti articoli (1 e 2), il che suggerisce che molti di voi sono pronti a cambiare e l'estensione dei stessi codici. Aprire Sourcing il Forex Trading System Per le ragioni sopra esposte ho deciso di open-source del sistema di trading forex. Cosa significa Ciò significa che tutto il codice attuale e futuro sarà disponibile gratuitamente, sotto una licenza open source liberale MIT, sul sito web di controllo della versione Github al seguente URL: githubmhallsmooreqsforex. Per quelli di voi che hanno usato git e GitHub prima, sarete in grado di git clone del pronti contro termine e iniziare a modificarlo per i propri scopi. L'Automated Forex Trading System QuantStart è ora open-source sotto licenza MIT liberale. È possibile trovare le ultime codice su Github sotto il repository qsforex a githubmhallsmooreqsforex. Per quelli di voi che sono nuovi per il controllo di versione sorgente, probabilmente vorrete leggere come git (e la versione di controllo in generale) lavora con il fantastico e-Book gratuito Pro Git. Vale la pena di spendere un po 'di tempo conoscere controllo del codice sorgente in quanto vi farà risparmiare una quantità enorme di futuro mal di testa se si spende un sacco di tempo nella programmazione e aggiornamento dei progetti L'avvio rapido di un sistema Ubuntu è quello di installare git: Sarà quindi necessario fare una directory per il progetto qsforex di vivere e clonare il progetto dal sito Github come segue: a questo punto è necessario creare un ambiente virtuale in cui eseguire il codice: sarà quindi necessario installare i requisiti (questo richiederà po 'di tempo): Finalmente sarà necessario creare un link simbolico nel proprio ambiente virtuale, Python per consentire di digitare importazione qsforex nel codice (ed eseguirlo): Come ho detto nelle voci precedenti è necessario creare le variabili di ambiente necessarie per le credenziali di autenticazione OANDA. Si prega di consultare diario 2 per le istruzioni su come fare questo. Si prega di prestare attenzione al README associato con il pronti contro termine, in quanto contiene istruzioni per l'installazione, una dichiarazione e una garanzia sull'uso del codice. Dal momento che il software è in modalità alfa, queste istruzioni diventano più semplice come passare del tempo. In particolare cercherò di avvolgere il progetto in un pacchetto di Python in modo che possa essere facilmente installato tramite pip. Se avete domande circa la procedura di installazione, quindi non esitate a scrivermi su mikequantstart. Longer-Term Plan La filosofia del sistema di trading forex, come con il resto del sito QuantStart, è quello di cercare di imitare il commercio di vita reale quanto più possibile nel nostro backtesting. Questo significa includere i dettagli che sono spesso esclusi dai più ricerca orientata situazioni backtesting. Latenza, interruzioni del server, automazione, controllo, i costi di transazione realistici saranno tutti inclusi all'interno dei modelli per darci una buona idea di quanto bene una strategia rischia di eseguire. Dal momento che avremo accesso a spuntare dati (timestamp bidask) saremo in grado di integrare la diffusione nei costi di transazione. Possiamo anche modellare lo slittamento. E 'meno straighforward di impatto sul mercato del modello, anche se questo è meno di una preoccupazione a valori commerciali più piccoli. Oltre ai costi di transazione vogliamo robusto modello di gestione del portafoglio con sovrapposizioni di rischio e la posizione di dimensionamento. Quindi, ciò che è attualmente incluso nel Forex Trading System fino ad oggi Architettura Event-Driven - Il sistema di forex trading è stato progettato come un sistema event-driven da zero, in quanto questo è il modo in un sistema di trading intraday verrà implementato in un ambiente vivo . Prezzo Streaming - Abbiamo un oggetto prezzo base streaming. Questo attualmente gestisce sottoscrizione di solo una singola coppia, ma possiamo facilmente modificare questo per iscriversi a più coppie di valute. Signal Generation - Siamo in grado di integrare le strategie di trading (basate direttamente sul prezzo di zecche passati e presenti) utilizzando l'oggetto strategia, che crea oggetti SignalEvent. Di esecuzione degli ordini - Abbiamo un sistema di esecuzione degli ordini ingenua che invia ciecamente gli ordini dal portafoglio di OANDA. Con ciecamente voglio dire che non ci sia la gestione del rischio o la posizione di dimensionamento in corso, né alcuna esecuzione algoritmica che potrebbe portare a una riduzione dei costi di transazione. GBP Valuta base - Per mantenere le cose semplici, Ive ha scritto solo il sistema per la valuta di base GBP. Questo è forse l'aspetto più importante di modificare data quanti di voi avranno conti pratica denominate in USD, EUR, CAD, JPY, AUD e NZD GBPUSD Trading - Ho scelto il cavo come la coppia di valute per testare la posizione iniziale e oggetti Portfolio con. La gestione di più coppie di valute è un importante passo successivo. Ciò comporterà modifiche alla posizione e di portafoglio calcoli. Manipolazione decimale - Qualsiasi sistema di produzione commerciale deve gestire correttamente calcoli di valuta. In particolare, i valori di valuta non devono essere conservati in virgola mobile tipi di dati, dal momento che gli errori di arrotondamento si accumulano. Si prega di vedere questo fantastico articolo sul floating point rappresentazioni per ulteriori dettagli. LongShort Trading - Tra le voci di diario 2 e 3 ho aggiunto la possibilità di breve una coppia di valute (al contrario di solo essere in grado di andare a lungo). Fondamentalmente, questo è anche unità testata. Local Manipolazione Portfolio - A mio parere la realizzazione di un backtest che gonfia le prestazioni strategia a causa di ipotesi irrealistiche è fastidioso al meglio e molto redditizio nel peggiore dei casi introduzione di un oggetto portafoglio locale che replica i calcoli OANDA significa che siamo in grado di controllare i nostri calcoli interni nello svolgimento delle pratiche negoziazione. che ci dà maggiore fiducia quando in seguito usiamo questo stesso oggetto portafoglio per backtesting sui dati storici. Unit test per PositionPortfolio - Mentre Ive non menzionato direttamente a pagine di diario 1 e 2, Ive stato effettivamente scrivendo alcuni test di unità per il Portafoglio e posizionare gli oggetti. Dal momento che questi sono così cruciali per il calcolo della strategia, si deve essere estremamente fiducioso che essi svolgono come previsto. Un ulteriore vantaggio di questi test è che permettono il calcolo sottostante da modificare, in modo tale che se tutti i test ancora passano, possiamo essere certi che il sistema nel suo complesso continuerà a comportarsi come previsto. In questa fase il Forex Trading System manca le seguenti funzionalità: Manipolazione Unità - Il sistema sta generando un sacco di slittamento a causa della natura ad alta frequenza dei dati forniti da tick OANDA. Ciò significa che l'equilibrio di portafoglio calcolato a livello locale non è che riflette l'equilibrio calcolato da OANDA. Fino corretta gestione degli eventi e la regolazione slittamento avviene, questo significa che un backtest non riflettere correttamente la realtà. Valute multiple Base - Ci sono attualmente limitati a GBP. Per lo meno abbiamo bisogno di includere i principali denominazioni di valute - USD, EUR, CAD, AUD, JPY e NZD. Coppie di valute multiple - Allo stesso modo abbiamo bisogno di sostenere le principali coppie di valute al di là di Cavo (GBPUSD). Ci sono due aspetti di questo. Il primo è quello di gestire correttamente i calcoli quando né la base o citazione di una coppia di valute è uguale alla valuta del conto denominazione. Il secondo aspetto è quello di supportare più posizioni in modo da poter scambiare un portafoglio di coppie di valute. Gestione del rischio - Molti estensivi di ricerca completamente ignorare la gestione del rischio. Purtroppo questo è generalmente necessario per brevità nel descrivere le regole di una strategia. In realtà abbiamo - must - utilizziamo una sovrapposizione di rischio quando trading, altrimenti è molto probabile che ci sarà una perdita sostanziale a un certo punto. Questo non vuol dire che la gestione del rischio in grado di prevenire questo del tutto, ma rende certamente meno probabile Ottimizzazione Portfolio - In un contesto istituzionale avremo un mandato d'investimento, che detterà un sistema di gestione del portafoglio solido con diverse regole di allocazione. In un ambiente retailpersonal si potrebbe desiderare di utilizzare un approccio di dimensionamento posizione così come il criterio di Kelly per massimizzare il nostro tasso di crescita composto a lungo termine. Strategie robusti - mi hanno dimostrato solo qualche semplice segnale casuale generare strategie di giocattoli fino ad oggi. Ora che stiamo cominciando a creare un sistema di forex trading intraday affidabile, dovremmo iniziare a svolgere alcune strategie più interessanti. diario del futuro si concentreranno sulle strategie tratte da una miscela di indicatorsfilters tecnici così come i modelli di serie storiche e tecniche di apprendimento automatico. Remote Deployment - Dal momento che siamo potenzialmente interessati nel commercio di 24 ore (almeno durante la settimana) abbiamo bisogno di una messa a punto più sofisticati di gestione del backtester su una macchina locale desktoplaptop a casa. E 'fondamentale che si crei un robusto dispiegamento server remoto del nostro sistema con ridondanza e monitoraggio adeguato. Backtesting Storico - Abbiamo costruito l'oggetto portafoglio per permetterci di effettuare backtesting realistico. A questo punto ci manca un sistema di archiviazione dei dati tick storici. Negli articoli successivi vedremo ottenere dati storici tick e la memorizzazione in un database appropriato, ad esempio HDF5. Commercio Database - Alla fine ci vorranno memorizzare i nostri mestieri dal vivo nel nostro database. Questo ci permetterà di svolgere le nostre analisi sui dati di trading dal vivo. Una buona raccomandazione per un database relazionale sarebbe PostgreSQL o MySQL. Monitoraggio e High Availability - Dal momento che stiamo prendendo in considerazione un sistema intraday ad alta frequenza, dobbiamo mettere un monitoraggio completo e la ridondanza elevata disponibilità sul posto. Questo significa che la segnalazione su l'utilizzo della CPU, l'utilizzo del disco, della rete IO, la latenza e la verifica che gli script periodici sono impostati per continuare a correre. Inoltre abbiamo bisogno di una strategia di backup e ripristino. Chiedetevi che cosa riserva piani si avrebbe in atto se si ha grandi posizioni aperte, in un mercato volatile, e il server improvvisamente morto. Credetemi, succede multipla Integrazione BrokerFIX - Al momento stiamo fortemente accoppiati al broker OANDA. Come ho già detto questo è semplicemente perché mi sono imbattuto in loro API e trovato ad essere un'offerta moderna. Ci sono un sacco di altri broker là fuori, molti dei quali supportano il protocollo FIX. Aggiunta di una capacità FIX aumenterebbe il numero di mediatori che potrebbero essere utilizzati con il sistema. GUI di controllo e reporting - In questo momento il sistema è linea completamente consolecommand base. Per lo meno avremo bisogno di un po 'di grafici di base per visualizzare i risultati backtest. Un sistema più sofisticato incorporerà statistiche di riepilogo di mestieri, metriche di performance a livello di strategia e le prestazioni complessive del portafoglio. Questa GUI può essere implementato usando un sistema a finestre multi-piattaforma, come Qt o Tkinter. Potrebbe anche essere presentato con un front-end web-based, utilizzando un web-quadro come Django. Come si può vedere c'è un sacco di funzionalità a sinistra sulla tabella di marcia Detto questo, ogni nuova voce del diario (e potenziali contributi della comunità) si sposta avanti il progetto. Decimali tipi di dati Ora che abbiamo discusso il piano a lungo termine voglio presentare alcuni dei cambiamenti che ho fatto per il codice dal diario 2. In particolare, voglio descrivere come ho modificato il codice per gestire il data - decimale digitare invece di utilizzare lo stoccaggio in virgola mobile. Questo è un cambiamento estremamente importante in quanto floating point rappresentazioni sono una notevole fonte di errori a lungo termine in sistemi portafoglio e gestione degli ordini. Python supporta nativamente rappresentazioni decimali ad una precisione arbitraria. La funzionalità è contenuto all'interno della libreria decimale. In particolare abbiamo bisogno di modificare il valore Chiunque usi che appare in un calcolo della posizione di un decimale di dati-tipo. Questo comprende l'utile di unità, l'esposizione, pip, il profitto e la percentuale. In questo modo siamo in pieno controllo di come i problemi di arrotondamento sono gestiti quando si tratta di rappresentazioni di valute che hanno due cifre decimali di precisione. In particolare abbiamo bisogno di scegliere il metodo di arrotondamento. Python supporta alcuni tipi differenti, ma abbiamo intenzione di andare con ROUNDHALFDOWN. che arrotonda all'intero più vicino con i legami che vanno verso lo zero. Ecco un esempio di come il codice viene modificato per gestire decimali tipi di dati dai loro precedenti rappresentazioni in virgola mobile. Di seguito è riportato un elenco di position. py: Si noti che dobbiamo fornire decimale con un argomento stringa, piuttosto che un argomento in virgola mobile. Questo perché una stringa è specificare precisamente la precisione del valore, mentre un tipo a virgola mobile non. Si noti anche che quando si comincia immagazzinare i nostri mestieri in un database relazionale (come sopra descritto nella tabella di marcia) abbiamo bisogno di fare in modo che una volta utilizzato il corretto tipo di dato. PostgreSQL e MySQL supportano una rappresentazione decimale. E 'fondamentale che noi utilizziamo questi tipi di dati quando creiamo il nostro schema di database, altrimenti incorrere in errori di arrotondamento che sono estremamente difficili da diagnosticare Per coloro che sono interessati ad una discussione più approfondita di questi problemi, in matematica e informatica, la oggetto di Analisi numerica copre i problemi di archiviazione in virgola mobile, tra molti altri argomenti interessanti. Nelle successive pagine di diario che ci accingiamo a discutere di come ho applicato test delle unità di codice e come possiamo estendere il software a più coppie di valute modificando i calcoli di posizione. Pieno Codice Python Dal momento che il codice sorgente completo per il progetto è ora open source, sotto licenza MIT. si può sempre essere scoperto a githubmhallsmooreqsforex. con la documentazione di accompagnamento. Se volete leggere le altre voci della serie, si prega di seguire i link qui sotto: appena iniziato con Trading Quantitative
Comments
Post a Comment