La scelta di una piattaforma per il backtesting e esecuzione automatica In questo articolo il concetto di esecuzione automatica sarà discusso. In generale, questo è il processo di consentire una strategia di trading, attraverso una piattaforma di commercio elettronico, per generare segnali di esecuzione commerciali senza alcun ulteriore intervento umano. La maggior parte dei sistemi discussi su QuantStart fino ad oggi sono stati progettati per essere sviluppati come strategie esecuzione automatica. L'articolo descrive i pacchetti software e linguaggi di programmazione che forniscono sia backtesting e capacità di esecuzione automatica. La prima considerazione è il modo di backtest una strategia. La mia opinione personale è che lo sviluppo personalizzato di un ambiente backtesting all'interno di un linguaggio di programmazione di prima classe offre la massima flessibilità. Al contrario, una piattaforma integrata backtesting vendor-sviluppato avrà sempre a fare ipotesi su come backtests vengono effettuate. Nonostante questo, la scelta di linguaggi di programmazione disponibili è ampia e diversificata, che spesso possono essere schiacciante. Non è ovvio prima dello sviluppo quale lingua è probabile che sia adatto. Quando codificare una strategia in regole sistematiche il commerciante quantitativa deve essere sicuri che le sue prestazioni futuro sarà riflettente delle sue prestazioni passate. Ci sono generalmente due forme di sistema backtesting che vengono utilizzati per verificare questa ipotesi. In linea di massima, essi sono classificati come tester schiena ricerca e event-ricacciati tester. Noi prenderemo in considerazione backtesters personalizzati rispetto ai prodotti del fornitore per questi due paradigmi e vedere come si confronta. Strumenti di ricerca, quando l'identificazione di strategie di trading algoritmico è di solito necessario simualte pienamente tutti gli aspetti dell'interazione mercato. Invece, approssimazioni possono essere fatti che forniscono una rapida determinazione del potenziale di prestazioni strategia. Tali strumenti di ricerca spesso fanno ipotesi irrealistiche circa i costi di transazione, probabilmente riempire i prezzi, il corto circuito, i vincoli di dipendenza sede, gestione del rischio e la posizione di dimensionamento. Nonostante queste carenze prestazioni di tali strategie può ancora essere valutato efficacemente. strumenti comuni per la ricerca includono MATLAB, R, Python e Excel. Questi pacchetti software forniti con capacità di vettorizzazione che permettono velocità di esecuzione veloce e l'attuazione della strategia più facile. MATLAB e panda sono esempi di sistemi Vectorised. Con tali strumenti di ricerca è possibile testare più strategie, combinazioni e varianti in un rapido modo iterativo, senza la necessità di approfondire pienamente una simulazione realistica interazione mercato. Mentre questi strumenti sono spesso utilizzati sia per il backtesting e l'esecuzione, questi ambienti di ricerca non sono generalmente adatti per le strategie che si avvicinano trading intraday a frequenze più elevate su scala sub-minuto. Queste librerie non tendono ad essere in grado di connettersi in modo efficace ai fornitori di dati di mercato in tempo reale o l'interfaccia con le API di intermediazione in modo robusto. Nonostante queste carenze Esecutivi, ambienti di ricerca sono molto utilizzati nel settore professionale di trading quantitativo. Essi forniscono la prima bozza per tutte le idee strategia prima promozione verso controlli più rigorosi all'interno di un ambiente backtesting realistico. Event-Driven backtesting Una volta che una strategia è ritenuto adatto nella ricerca deve essere valutata in modo più realistico. Tale realismo tenta di spiegare la maggior parte (se non tutti) i problemi descritti nei post precedenti. La situazione ideale è quella di essere in grado di utilizzare lo stesso codice di generazione commercio per backtesting storico, la sua esecuzione dal vivo. Questo risultato è ottenuto attraverso un backtester event-driven. sistemi di event-driven sono ampiamente utilizzati in ingegneria del software, comunemente per la gestione di input grafico interfaccia utente (GUI) all'interno dei sistemi operativi basati su finestre. Sono ideali anche per il trading algoritmico come la nozione di ordini di mercato in tempo reale o riempimenti commerciali può essere incapsulato come un evento. Tali sistemi sono spesso scritti in linguaggi ad alto rendimento come C, C e Java. Si consideri una situazione in cui una strategia di trading automatico è collegato ad un'alimentazione mercato in tempo reale e un mediatore (questi due possono essere uno e lo stesso). Nuove informazioni mercato sarà inviato al sistema, che innesca un evento per generare un nuovo segnale di negoziazione e quindi un evento di esecuzione. Questi sistemi vengono eseguite in un ciclo continuo di attesa per ricevere gli eventi e gestirli in modo appropriato. È possibile generare sub-componenti come un gestore dati storici e simulatore di intermediazione, che può imitare i loro omologhi vivi. Questo permette strategie di backtesting in maniera estremamente simile a quello di esecuzione vivo. Lo svantaggio di questi sistemi risiede nel loro disegno complicato rispetto ad uno strumento di ricerca semplice. Quindi il time to market è più lungo. Essi sono più inclini a errori e richiedono una buona conoscenza di programmazione e software di metodologia di sviluppo. In termini ingegneristici latenza viene definito come l'intervallo di tempo tra una simulazione e una risposta. Nel commercio quantitativa si riferisce generalmente al ritardo di tempo di andata e ritorno tra la generazione di un segnale di esecuzione e la ricezione delle informazioni di riempimento da un mediatore che effettua l'esecuzione. Tale latenza è raramente un problema sulle strategie interday a bassa frequenza. Il movimento di prezzo previsto durante il periodo di latenza non influenzerà la strategia in grande misura. Lo stesso non vale per le strategie di frequenza superiore in cui la latenza diventa estremamente importante. L'obiettivo finale in HFT è di ridurre la latenza il più possibile per ridurre lo slittamento. Diminuendo la latenza comporta minimizzando la distanza tra il sistema commerciale algoritmico e lo scambio finale su cui viene eseguito un ordine. Questo può comportare accorciare la distanza geografica tra i sistemi, riducendo così i tempi di percorrenza lungo il cablaggio di rete. Si può anche comportare la riduzione del trattamento effettuato in hardware di rete o la scelta di una società di intermediazione con le infrastrutture più sofisticate. Molti broker competono sulla latenza per vincere business. Diminuendo la latenza diventa esponenzialmente più costose, come funzione della distanza internet, che è definito come la distanza di rete tra due server. Così, per un trader ad alta frequenza un compromesso deve essere raggiunto tra le spese della latenza-riduzione e il guadagno da ridurre al minimo lo slittamento. Questi temi saranno discussi nella sezione relativa Colocation di seguito. Scelte di lingua Alcuni problemi che guidano la scelta della lingua sono già stati delineati. Ora si prenderà in considerazione i vantaggi e gli svantaggi dei singoli linguaggi di programmazione. Ho ampiamente classificato le lingue in sviluppo ad alta performanceharder vs sviluppo inferiore performanceeasier. Questi sono termini soggettivi e alcuni non saranno d'accordo a seconda del loro background. Uno degli aspetti più importanti di programmazione di un ambiente backtesting personalizzato è che il programmatore abbia familiarità con gli strumenti utilizzati. Per coloro che sono nuovi per il paesaggio linguaggio di programmazione il seguente chiarirà quello che tende ad essere utilizzato all'interno di trading algoritmico. C, C e Java C, C e Java sono tutti esempi di uso generale linguaggi di programmazione orientati agli oggetti. Ciò significa che essi possono essere utilizzati senza un corrispondente ambiente di sviluppo integrato (IDE), sono tutti multipiattaforma, hanno una vasta gamma di librerie per quasi tutte le attività che si possa immaginare e consentire velocità di rapida esecuzione, quando utilizzato correttamente. Se ultima velocità di esecuzione si desidera poi C (o C) è probabile che sia la scelta migliore. Offre la massima flessibilità per la gestione della memoria e ottimizzare la velocità di esecuzione. Questa flessibilità ha un prezzo. C è difficile da imparare bene e può spesso portare a bug sottili. Il tempo di sviluppo può richiedere molto più tempo che in altre lingue. Nonostante queste carenze è diffusa nel settore finanziario. C e Java sono simili poiché entrambi richiedono tutti i componenti di essere oggetti con l'eccezione dei tipi di dati primitivi come galleggianti e interi. Si differenziano dalle C eseguendo garbage collection automatica. Garbage Collection aggiunge un sovraccarico di prestazioni, ma porta a più rapido sviluppo. Queste lingue sono entrambe buone scelte per lo sviluppo di un backtester quanto hanno capacità GUI nativa, librerie di analisi numerica e velocità di esecuzione veloce. Personalmente, io uso di C per la creazione di backtesters event-driven che ha bisogno di estremamente rapida velocità di esecuzione, come ad esempio per i sistemi HFT. Questo è solo se ho sentito che un sistema di event-driven Python è stato collo di bottiglia, come quest'ultima lingua sarebbe la mia prima scelta per un tale sistema. MATLAB, R e Python MATLAB è un IDE commerciale per il calcolo numerico. Si è guadagnato un largo consenso nei settori accademico, di ingegneria e finanziari. Ha molte librerie numeriche per il calcolo scientifico. Vanta una velocità di esecuzione rapida in base al presupposto che qualsiasi algoritmo in fase di sviluppo è soggetto a vettorizzazione o parallelizzazione. Nonostante questi vantaggi è costoso che rende meno attraente per i commercianti al dettaglio con un budget. MATLAB è talvolta usato per l'esecuzione diretta di una società di intermediazione, come Interactive Brokers. R è un ambiente di statistiche di scripting dedicato. È gratuito, open-source, cross-platform e contiene una grande quantità di pacchetti statistici liberamente disponibili per lo svolgimento di analisi estremamente avanzata. R è molto usato nelle statistiche accademici e l'industria quantitativa degli hedge fund. Mentre è possibile collegare R ad una società di intermediazione non è adatto al compito e dovrebbe essere considerato più di uno strumento di ricerca. Manca anche la velocità di esecuzione meno che le operazioni siano vettorizzati. Ive ha raggruppato Python in questa voce anche se si trova da qualche parte tra MATLAB, R e le suddette lingue general-purpose. È gratuito, open-source e multi-piattaforma. Esso viene interpretato come contrario alla compilato. che lo rende nativamente più lento di C. Tuttavia, contiene una libreria per lo svolgimento di quasi tutte le attività che si possa immaginare, dal calcolo scientifico fino al basso livello di progettazione web server. In particolare essa contiene NumPy, SciPy, panda, matplotlib e scikit-learn, che forniscono un robusto ambiente di ricerca numerica che quando Vectorised è paragonabile alla velocità di esecuzione compilato lingua. Python possiede anche le librerie per la connessione a mediazioni. Questo lo rende un negozio one-stop per la creazione di un backtesting event-driven e ambiente di esecuzione dal vivo, senza dover entrare in altri, più complessi, lingue. velocità di esecuzione è più che sufficiente per i commercianti intraday di negoziazione sulla scala temporale di minuti e di cui sopra. Python è molto semplice da imparare e imparare rispetto ai linguaggi di livello inferiore, come C. Per queste ragioni facciamo ampio uso di Python all'interno degli articoli QuantStart. Integrated Development Environments Il termine IDE ha molteplici significati all'interno di trading algoritmico. Gli sviluppatori di software usano per significare una GUI che permette la programmazione con evidenziazione della sintassi, la navigazione del file, il debug e le caratteristiche di esecuzione di codice. commercianti algoritmico usano per significare un ambiente backtestingtrading completamente integrato con i dati scaricare storico o in tempo reale, grafici, analisi statistica e l'esecuzione dal vivo. Per i nostri scopi, uso il termine per indicare qualsiasi ambiente backtesttrading, spesso basato su GUI, che non è considerato un linguaggio di programmazione general purpose. Mentre alcuni operatori quant possono considerare Excel di essere inadeguato per la negoziazione, ho trovato ad essere estremamente utile per la sanità mentale la verifica dei risultati. Il fatto che tutti i dati sono direttamente disponibili in bella vista lo rende semplice da implementare strategie signalfilter molto semplici. Promotori quali Interactive Brokers permettono anche plugin DDE che permettono di Excel per ricevere dati di mercato in tempo reale ed eseguire ordini di negoziazione. Nonostante la facilità d'uso di Excel è estremamente lento per qualsiasi scala ragionevole di dati o livello di calcolo numerico. Lo uso solo all'errore controllare quando si sviluppano contro altre strategie. In particolare è estremamente utile per verificare se una strategia è soggetta a look-ahead bias. Questo è semplice da rilevare in Excel causa della natura foglio del software. Se vi sentite a disagio con i linguaggi di programmazione e stanno portando una strategia interday quindi Excel può essere una buona scelta. CommercialRetail backtesting Software Il mercato per la creazione di grafici di vendita al dettaglio, analisi tecnica e software backtesting è estremamente competitivo. Funzionalità offerte da tali software sono in tempo reale grafici dei prezzi, una ricchezza di indicatori tecnici, linguaggi di backtesting personalizzate e l'esecuzione automatica. Alcuni fornitori offrono un all-in-one, come TradeStation. TradeStation sono una linea di mediazione che producono software per il trading (noto anche come TradeStation) che fornisce l'esecuzione ordine elettronico su più classi di attività. Attualmente sono a conoscenza di un API diretta per l'esecuzione automatica. Invece gli ordini devono essere collocati attraverso il software GUI. Questo è in contrasto con Interactive Brokers, che hanno una più snella interfaccia di trading (Trader Workstation), ma offrono sia loro in tempo reale API esecuzione marketorder proprietarie e un'interfaccia FIX. Un'altra piattaforma estremamente popolare è MetaTrader. che è utilizzato nel commercio di valuta estera per la creazione di Expert Advisors. Questi sono script personalizzati scritti in un linguaggio proprietario che può essere utilizzato per il trading automatico. Non ho avuto molta esperienza sia con TradeStation o MetaTrader così non lo vorrei spendere troppo tempo a discutere i loro meriti. Tali strumenti sono utili se non si ha familiarità con lo sviluppo di software in modo approfondito e che desiderano un sacco di dettagli per essere curato. Tuttavia, con questi sistemi un sacco di flessibilità è sacrificato e si è spesso legata ad un singolo di intermediazione. Open-Source e Web Tools-Based I due attuali diffusi sistemi di backtesting web-based sono Quantopian e QuantConnect. Il primo fa uso di Python (e ZipLine, vedi sotto), mentre il secondo utilizza C. Entrambi forniscono una grande quantità di dati storici. Quantopian attualmente supporta trading dal vivo con Interactive Brokers, mentre QuantConnect sta lavorando per trading dal vivo. Algo-Trader è una società con sede in Svizzera che offrono sia un open-source e una licenza commerciale per il loro sistema. Da quello che ho potuto capire l'offerta sembra abbastanza maturo e hanno molti clienti istituzionali. Il sistema consente la completa backtesting storico e elaborazione di eventi complessi e legare in Interactive Brokers. La versione Enterprise offre caratteristiche sostanzialmente più alte prestazioni. Marketcetera fornire un sistema di backtesting che può legare in molte altre lingue, come Python e R, al fine di sfruttare il codice che si potrebbe avere già scritto. La strategia Studio offre la possibilità di scrivere codice backtesting così come gli algoritmi di esecuzione ottimizzati e, successivamente, la transizione da un backtest storica di vivere di trading carta. I havent usato prima. ZipLine è la libreria Python che alimenta il servizio Quantopian di cui sopra. Si tratta di un ambiente completamente backtest event-driven e supporta attualmente le azioni degli Stati Uniti su una base minuziosamente-bar. Io ho mai fatto ampio uso di ZipLine, ma so che altri che ritengo che sia un ottimo strumento. Ci sono ancora molte aree lasciate a migliorare ma la squadra sono costantemente al lavoro sul progetto e si è mantenuto molto attivamente. Ci sono anche alcuni Codice GithubGoogle ha ospitato i progetti che si potrebbe desiderare di esaminare. Non ho passato alcun grande quantità di tempo loro indagare. Tali progetti includono OpenQuant. Tradelink e PyAlgoTrade. sistemi di backtesting istituzionale-grade Istituzionale backtesting software come Deltix e QuantHouse spesso non sono utilizzati dai commercianti algoritmico di vendita al dettaglio. Le licenze software sono generalmente ben al di fuori del budget per le infrastrutture. Detto questo, tale software è ampiamente utilizzato dai fondi Quant, case di proprietary trading, family office e simili. I vantaggi di questi sistemi sono evidenti. Essi forniscono una soluzione all-in-one per la raccolta dei dati, strategia di sviluppo, backtesting storico e l'esecuzione dal vivo attraverso i singoli strumenti o portafogli, fino al livello delle alte frequenze. Tali piattaforme hanno avuto numerosi test e un sacco di nell'uso campo e così sono considerati robusti. I sistemi sono event-driven e gli ambienti backtesting spesso possono simulare gli ambienti vivi in un elevato grado di precisione. I sistemi supportano anche gli algoritmi di esecuzione ottimizzati, che tentano di minimizzare i costi di transazione. Questo è particolarmente utile per i commercianti con una base di capitale più grande. Devo ammettere che non ho avuto molta esperienza di Deltix o QuantHouse. Detto questo, il bilancio solo li mette fuori dalla portata della maggior parte dei commercianti al dettaglio, in modo da non lo vorrei soffermarsi su questi sistemi. Colocation Il paesaggio software per il trading algoritmico è stato ora esaminato. Ora possiamo rivolgere la nostra attenzione verso l'attuazione del hardware che eseguirà le nostre strategie. Un commerciante al dettaglio sarà probabilmente eseguendo la loro strategia da casa durante le ore di mercato. Questa volontà ha coinvolto girare sul proprio PC, collegandosi al intermediazione, aggiornare il loro software di mercato e quindi permettendo l'algoritmo di eseguire automaticamente durante il giorno. Al contrario, un fondo professionale quant con un patrimonio importante in gestione (AUM) avrà un'infrastruttura server di scambio-colocated dedicato al fine di ridurre la latenza per quanto possibile, di eseguire le loro strategie ad alta velocità. Casa desktop L'approccio più semplice per l'implementazione hardware è semplicemente quello di effettuare una strategia algoritmica con un computer di casa collegato alla mediazione tramite una banda larga (o simile) di connessione. Anche se questo approccio è semplice per iniziare soffre di molti inconvenienti. La macchina desktop è soggetta a interruzione di corrente, a meno che non sostenuta da un gruppo di continuità. Inoltre, una connessione a Internet da casa è anche in balia del provider di servizi Internet. perdita di potenza o internet fallimento di connettività possono verificarsi in un momento cruciale nel commercio, lasciando il commerciante algoritmico con posizioni aperte che sono in grado di essere chiuso. Questo problema si verifica anche con il sistema operativo si riavvia obbligatorie (ciò è realmente accaduto a me in un ambiente professionale) e guasto di un componente, che porta agli stessi problemi. Per le ragioni di cui sopra ho esitato a raccomandare un approccio casa desktop per il trading algoritmico. Se si decide di perseguire questo approccio, assicurarsi di avere sia un computer di backup e una connessione internet di backup (ad esempio, un dongle 3G), che è possibile utilizzare per chiudere le posizioni in una situazione di inattività. Il livello successivo da un desktop di casa è quello di fare uso di un server privato virtuale (VPS). Un VPS è un sistema di server remoto spesso commercializzato come un servizio cloud. Essi sono molto più economico di un corrispondente server dedicato, dal momento che un VPS è in realtà una partizione di un server molto più grande. Possiedono un ambiente virtuale isolato sistema operativo unicamente a ogni singolo utente. carico della CPU è condivisa tra più VPS e una porzione della RAM sistemi viene assegnato al VPS. Tutto questo è realizzato attraverso un processo noto come la virtualizzazione. fornitori di VPS comuni includono Amazon EC2 e Rackspace Cloud. Essi forniscono sistemi entry-level a basso RAM e uso di base della CPU fino al alta RAM enterprise-ready, server elevato della CPU. Per la maggior parte dei commercianti al dettaglio algoritmici dei sistemi entry level sono sufficienti per intraday a bassa frequenza o strategie interday e database di dati storici minori. I vantaggi di un sistema VPS-based includono 247 disponibilità (anche se con un certo tempo di inattività realistico), funzionalità di monitoraggio più robusto, facile plug-in per i servizi aggiuntivi, come la memorizzazione di file o database gestiti e un'architettura flessibile. Uno svantaggio è la spesa in corso. Poiché il sistema cresce hardware dedicato diventa più economico per unità di prestazioni. Questo punto di prezzo assume colocation lontano da uno scambio. Rispetto ad un latenza del sistema desktop a casa non è sempre migliorata scegliendo un fornitore di VPS. La posizione casa può essere più vicino a un particolare scambio finanziario rispetto ai data center del fornitore di cloud. Questo è mitigato dalla scelta di una società che forniscono servizi VPS orientati specificamente per il trading algoritmico che si trovano nei pressi o scambi. Questi saranno probabilmente costerà più di un fornitore di VPS generico come Amazon o Rackspace. Scambio Colocation Al fine di ottenere la migliore riduzione al minimo la latenza è necessario colocate server dedicati direttamente al centro di scambio di dati. Questa è un'opzione proibitivo per i commercianti algoritmico quasi tutti al dettaglio a meno che theyre molto ben capitalizzate. E 'davvero il dominio del fondo quantitativa professionale o di intermediazione. Come ho già detto in precedenza una soluzione più realistica è quella di acquistare un sistema VPS da un fornitore che si trova nei pressi di uno scambio. Come si può vedere, ci sono molte opzioni per backtesting, esecuzione automatica e hosting di una strategia. Determinare la soluzione dipende budget, capacità di programmazione, il grado di personalizzazione richiesto, disponibilità asset class e se la negoziazione deve essere effettuato su un basis. Dr dettaglio o professionale. Vesna Straser, un'esecuzione ottimale commercio e trading algoritmico professionale, presentato di backtesting a Live Trading lo scorso aprile a QuantCon New York. Durante questo discorso, il Dr. Vesna Straser discusso le differenze di slittamento previsto tra trading dal vivo, il commercio di simulazione, e backtesting. In genere quando backtesting segnali, al fine di compilare le simulazioni sono state semplificate per ottenere i dati delle prestazioni strategia più veloce. Per esempio, molti fornitori di software di back testing commerciali lavoreranno con i dati campionati come punti Minute Prezzo aprire o chiudere e assumere che il segnale viene attivato al momento della chiusura di una barra e riempito al prezzo di chiusura della barra successiva, per lo slittamento Assunta modello. Simulazione di trading, tuttavia, in genere eseguito su dati tick di negoziazione (dal vivo o riprodotti) potenzialmente con conseguente molto diverse dinamiche rispetto back testing. Gli ordini sono pieni per le ipotesi di riempimento che possono variare in modo significativo tra i diversi fornitori. Nel trading dal vivo, gli ordini vengono attivati ed eseguiti immediatamente in condizioni di mercato reali e tipo di ordine. A seconda della strategia di trading, i risultati di trading dal vivo possono differire notevolmente da back-testing Andor commercio di simulazione. Vesna delinea le questioni, Analytics per monitorare, fattori da considerare, e come per tenere conto di loro per ottenere risultati di back-test realistici. Dr. Straser precedenza ha lavorato presso CQG e LiquidMetrix. È possibile visualizzare il suo discorso di seguito, e leggere anche attraverso le sue diapositive qui. QuantCon è Quantopians punta evento annuale, che dispone di colloqui tra esperti e le esercitazioni in una varietà di settori, tra cui finanza quantitativa, trading algoritmico, apprendimento automatico, la scienza dei dati, e altro ancora. Restate sintonizzati, QuantCon 2017 sarà annunciato presto il materiale in questo sito è fornito solo a scopo informativo e non costituisce un'offerta di vendita, una sollecitazione ad acquistare, o una raccomandazione o approvazione per qualsiasi titolo o di una strategia, né costituisce un offrire a fornire consulenza per gli investimenti o altri servizi per Quantopian. Inoltre, i contenuti del sito offre nessun parere rispetto alla idoneità di qualsiasi titolo o qualsiasi investimento specifico. Quantopian non fornisce alcuna garanzia per accuratezza o la completezza delle opinioni espresse nel sito. I punti di vista sono soggetti a modifiche, e possono essere diventati inaffidabili per vari motivi, tra cui i cambiamenti nelle condizioni di mercato o circostanze economiche. Tutti gli investimenti comportano rischi, compresa la perdita del capitale. Si consiglia di consultare con un professionista di investimento prima di prendere decisioni di investimento.
No comments:
Post a Comment