Sunday 29 October 2017

Trading Strategia Backtesting Example


Back-testare le tue idee di trading Una delle cose più utili che si possono fare nella finestra di analisi è quello di back-testare la vostra strategia di trading su dati storici. Questo può dare informazioni preziose in punti di forza e punti deboli del sistema prima di investire soldi veri. Questa singola caratteristica AmiBroker è in grado di risparmiare un sacco di soldi per voi. Scrivere le regole di trading In primo luogo è necessario disporre di regole oggettive (o meccanica) per entrare e uscire dal mercato. Questo passaggio è la base della vostra strategia ed è necessario pensare a voi stessi quanto il sistema deve corrispondere la vostra tolleranza al rischio, le dimensioni del portafoglio, le tecniche di gestione del denaro, e molti altri fattori individuali. Una volta che avete le vostre proprie regole per la negoziazione si dovrebbe scrivere loro come comprare e vendere le regole in AmiBroker Formula Lanugage (più breve e la copertura se si desidera verificare anche breve di trading). In questo capitolo prenderemo in considerazione molto semplice, lo spostamento trasversale media nel sistema. Il sistema dovrebbe comprare stockscontracts quando vicino prezzo sale sopra 45 giorni di media mobile esponenziale e venderà stockscontracts quando vicino prezzo scende al di sotto di 45 giorni media mobile esponenziale. La media mobile esponenziale può essere calcolato in AFL usando la sua funzione di EMA built-in. Tutto quello che devi fare è specificare l'array di input e il periodo di media, quindi la media mobile esponenziale dei prezzi di chiusura di 45 giorni può essere ottenuta con la seguente dichiarazione: La stretta identificazione si riferisce a built-in matrice tenendo i prezzi degli simbolo attualmente analizzato chiusura . Per verificare se gli stretti croci di prezzo di cui sopra media mobile esponenziale useremo funzione built-in croce: acquistare croce (vicino, ema (vicino, 45)) La dichiarazione di cui sopra definisce una regola buy commerciale. Dà quot1quot o quottruequot quando chiudere croci di prezzo di cui sopra ema (vicino, 45). Poi possiamo scrivere la regola vendita che darebbe quot1quot quando situazione opposta si verifica - vicino croci di prezzo al di sotto ema (chiudi, 45): la vendita incrociata (EMA (vicino, 45), vicino) Si prega di notare che stiamo usando la stessa funzione di cross ma l'ordine inverso di argomenti. Così formula completa per lunghi commerci sarà simile a questa: acquistare croce (vicino, ema (vicino, 45)) vendere croce (EMA (vicino, 45), vicino) NOTA: Per creare nuova formula si prega di aprire Formula Editor utilizzando Analysis-gtFormula Editor Menu, digitare la formula e selezionare Strumenti-gtSend al menu Analysis in editor di formule per il back-testare il sistema è sufficiente fare clic sul pulsante Test Indietro nella finestra di analisi automatica. Assicurarsi di aver digitato nella formula che contiene almeno comprare e vendere regole di negoziazione (come mostrato sopra). Quando la formula è corretta AmiBroker inizia analizzare i simboli in base alle regole di negoziazione e genera un elenco di mestieri simulati. L'intero processo è molto veloce - è possibile eseguire il test di migliaia di simboli in una questione di minuti. La finestra di avanzamento vi mostrerà il tempo di completamento previsto. Se si desidera interrompere il processo si può semplicemente fare clic sul pulsante Annulla nella finestra di avanzamento. Quando il processo è finito l'elenco dei traffici simulati viene mostrato nella parte inferiore della finestra di analisi automatica. (Riquadro Risultati). È possibile esaminare se le comprano e vendono i segnali si sono verificati solo con un doppio clic sul commercio di riquadro Risultati. Questo vi darà segnali prime o non filtrati per ogni bar quando sono soddisfatte le condizioni di acquisto e di vendita. Se si desidera visualizzare solo i singoli frecce commerciali (apertura e chiusura commercio attualmente selezionata) si dovrebbe doppio clic sulla riga tenendo premuto il tasto SHIFT premuto. In alternativa è possibile scegliere il tipo di visualizzazione selezionando la voce appropriata dal menu contestuale che appare quando si fa clic sul riquadro dei risultati con un pulsante destro del mouse. Oltre all'elenco dei risultati è possibile ottenere statistiche molto dettagliate sulle prestazioni del sistema facendo clic sul pulsante Report. Per saperne di più circa le statistiche del rapporto si prega di consultare descrizione finestra del rapporto. Modifica delle impostazioni di test Pagina precedente la prova dei motori a AmiBroker utilizza alcuni valori predefiniti per eseguire il suo compito tra cui la dimensione del portafoglio, la periodicità (dailyweeklymonthly), la quantità di commissione, di tasso di interesse, perdita massima e target di profitto si ferma, il tipo di commerci, i campi dei prezzi e così sopra. Tutte queste impostazioni possono essere modificate dall'utente utilizzando finestra delle impostazioni. Dopo aver modificato le impostazioni si prega di ricordarsi di eseguire nuovamente il test indietro se si desidera che i risultati siano in sintonia con le impostazioni. Ad esempio, per eseguire il test barre settimanali invece di tutti i giorni è sufficiente fare clic sul pulsante Impostazioni selezionare settimanale da casella combinata Periodicità e fare clic su OK. quindi eseguire l'analisi facendo clic su Indietro prova. Riservato nomi delle variabili La tabella seguente mostra i nomi delle variabili riservate utilizzate da Analyser automatico. Il significato e gli esempi sul loro utilizzo sono riportate più avanti in questo capitolo. Permette il controllo importo in dollari o la percentuale di portafoglio che viene investito in commercio (vedi spiegazioni qui sotto) analisi automatica (nuova in 3.9) Fino ad ora abbiamo discusso l'uso abbastanza semplice del tester indietro. AmiBroker, tuttavia supporta molto più sofisticati metodi e concetti che saranno discusse più avanti in questo capitolo. Si prega di notare che l'utente principiante dovrebbe prima giocare un po 'con le tematiche più semplici di cui sopra prima di procedere. Così, quando si è pronti, si prega di dare un'occhiata alle seguenti caratteristiche di recente introduzione del back-tester: a) serie AFL di scripting per gli scrittori formula avanzata b) sostegno rafforzato per brevi Compravendite c) il modo per controllare l'ordine di prezzo di esecuzione del lo script d) vari tipi di fermate a tornare tester e) posizione dimensionamento f) la dimensione del lotto rotondo e spuntare le dimensioni g) i futures conto di deposito h) backtesting AFL host di scripting è un argomento avanzato che è coperto in un documento separato disponibile qui e non lo vorrei discutere in questo documento. restanti funzioni sono molto più facili da capire. Nelle versioni precedenti di AmiBroker, se si voleva sistema di back-test utilizzando compravendite sia lunghe che corte, si potrebbe simulare unica strategia stop-and-reverse. Quando la posizione lunga è stata chiusa una nuova posizione short è stato aperto immediatelly. E 'stato perché comprare e vendere variabili riservate sono stati utilizzati per entrambi i tipi di mestieri. Ora (con la versione 3.59 o superiore) ci sono variabili riservate separati per apertura e chiusura a lungo e breve tondo: acquistare - quottruequot o 1 valore si apre lungo commercio vendita - quottruequot o 1 Valore chiude lungo commerciali a breve - quottruequot o 1 Valore apre copertura commerciale a breve - quottruequot o 1 valore chiude breve commercio Som al fine di back-test di compravendite brevi è necessario assegnare variabili a breve e copertura. Se si utilizza il sistema stop-and-reverse (sempre sul mercato) è sufficiente assegnare vendita a breve e comprare per coprire la copertura short sell acquistare questo simula il modo pre-3.59 versioni lavorato. Ma ora AmiBroker consente di avere regole di negoziazione separati per andare a lungo e per andare a breve, come mostrato in questo semplice esempio: commerci lungo le regole di entrata e di uscita: acquistare croce (CCI (), 100) vendere croce (100, CCI ()) breve mestieri di entrata e uscita regole: cross corto (-100, CCI ()) coprire croce (CCI (), -100) si noti che in questo esempio se CCI è compreso tra -100 e 100 si è fuori dal mercato. Il controllo dei prezzi commercio AmiBroker ora offre 4 nuove variabili riservate per specificare il prezzo al quale comprare, vendere, vengono eseguiti gli ordini brevi e copertura. Questi array hanno i seguenti nomi: buyprice, sellprice, shortprice e coverprice. L'applicazione principale di queste variabili è il controllo prezzo commerciale: BuyPrice IIF (DAYOFWEEK () 1, HIGH, CLOSE) il Lunedi comprare a alta, altrimenti acquistare su una stretta Così si può scrivere il seguente per simulare reali di stop-ordini: BuyStop. La formula per il livello di arresto buy SellStop. La formula per il livello di arresto vendere se in qualsiasi momento durante i prezzi al giorno salgono sopra il livello del buystop (highgtbuystop) l'ordine di acquisto si svolge (a buystop o basso a seconda di quale sia superiore) Acquista Croce (alta, BuyStop) se in qualsiasi momento durante i prezzi al giorno scendono sotto il livello del sellprice (basso sellstop lt) l'ordine di vendita si svolge (ad sellstop o alto se inferiore) collocare Croce (SellPrice, sellStop) BuyPrice max (BuyStop, low) assicurarsi prezzo di acquisto non inferiore a bassa SellPrice min (sellStop, high) accertarsi prezzo non superiore ad alta si prega di notare che i preset AmiBroker buyprice, sellprice, shortprice e matrice coverprice variabili con i valori definiti nel sistema di finestra delle impostazioni di test (vedi sotto) vendere, in modo da poter, ma non avete bisogno di definirli nella formula. Se non li definiscono AmiBroker funziona come nelle vecchie versioni. Durante back-testing AmiBroker controllerà se i valori assegnati a buyprice, sellprice, shortprice, coverprice inserirsi in alta gamma bassa di data bar. In caso contrario, AmiBroker regolerà a prezzo elevato (se il valore prezzo dell'array è superiore a quello alto) o per il prezzo basso (se il valore prezzo dell'array è inferiore a quello basso) obiettivo di profitto si ferma Come si può vedere nella foto sopra, nuove impostazioni per fermate obiettivo di profitto sono disponibili nella finestra delle impostazioni di test del sistema. fermate obiettivo di profitto vengono eseguiti quando il prezzo elevato per un dato giorno exceedes il livello di arresto che può essere dato in percentuale o punto di aumento del prezzo di acquisto. Per impostazione predefinita arresti sono eseguiti al prezzo che si definisce come serie prezzo di vendita (per lunghi commerci) o una matrice prezzo di copertina (per brevi trades). Questo comportamento può essere modificato utilizzando quotExit in funzione stopquot. quotExit in funzione stopquot Se si contrassegna quotExit a scatola stopquot nelle impostazioni verranno eseguiti gli arresti a livello di arresto preciso, vale a dire se si definisce profitto fermata target a 10 vostra fermata e il prezzo di acquisto è stato di 50 ordine di arresto verrà eseguito a 55, anche se la matrice prezzo di vendita contiene un valore diverso (ad esempio prezzo di chiusura di 56). perdita massima si ferma il lavoro in un modo simile - vengono effettuate quando il prezzo basso per un dato giorno scende sotto il livello di arresto che può essere dato in percentuale o punto di aumento del prezzo di acquisto di questo tipo di arresto viene utilizzato per proteggere i profitti in quanto ascolti il ​​commercio così ogni volta che un valore di posizione raggiunge un nuovo massimo, il trailing stop è posta ad un livello superiore. Quando il profitto scende sotto il livello trailing stop la posizione viene chiusa. Questo meccanismo è illustrato nella figura sottostante (10 trailing stop viene mostrato): un esempio di implementazione a basso livello di arresto Profit-bersaglio in AFL: Acquisto Cross (MACD (), Signal ()) per (i 0 i lt BarCount i) if (priceatbuy 0 Acquista i) BuyPrice priceatbuy i if (priceatbuy GT 0 SellPrice i gt 1.1 priceatbuy) Vendi i 1 SellPrice i 1.1 priceatbuy priceatbuy 0 altro Vendi I 0 Questa è una nuova funzionalità nella versione 3.9. Posizione dimensionamento in backtester è attuato mediante nuova riservato variabile PositionSize ltsize arraygt Ora è possibile controllare importo in dollari o la percentuale di portafoglio che viene investito nel commercio numero positivo definire quantità (in dollari) che viene investito nel commercio, ad esempio: PositionSize 1000 invest 1000 in ogni commercio numeri negativi -100 ..- 1 definire percentuale: -100 dà 100 di dimensioni portafoglio attuale, -33 dà 33 di disposizione patrimoniale per esempio: PositionSize -50 sempre investe solo la metà dell'esempio dimensionamento dinamico corrente del patrimonio netto: PositionSize - 100 RSI () come RSI varia da 0..100 questo si tradurrà in posizione a seconda dei valori RSI - gt bassi valori di RSI si tradurrà in maggiore percentuale investita Se meno di 100 di cassa disponibile è investito quindi l'importo residuo guadagna tasso di interesse come definito nelle impostazioni. C'è anche una nuova casella di controllo nella finestra delle impostazioni AA: quotAllow dimensione della posizione shrinkingquot - questo controlla come backtester gestisce la situazione quando richiesto dimensione della posizione (tramite variabile PositionSize) supera disponibilità liquide: quando questo flag è selezionata la posizione è entrato con la dimensione shinked a cassa disponibile se è selezionata la posizione non viene inserito. Per vedere dimensioni reali di posizione si prega di utilizzare una nuova modalità di rapporto nella finestra delle impostazioni AA: lista quotTrade con prezzi e pos. sizequot Per la fine, ecco un esempio di posizione Tharps ATR-based dimensionamento tecnica codificato in AFL: Acquisto ltyour acquistare formula heregt vendi 0 vendita solo da arresto TrailStopAmount 2 ATR (20) Capitale 100000 IMPORTANTE: Impostare anche nelle Impostazioni: Initial rischio azionario 0.01Capital PositionSize (RiskTrailStopAmount) BuyPrice ApplyStop (2, 2, TrailStopAmount, 1) la tecnica potrebbe essere riassunto come segue: il patrimonio totale per simbolo è 100.000, abbiamo impostato il livello di rischio a 1 del capitale totale. Livello di rischio è definito come segue: se un Trailing Stop su un 50 azionario è, diciamo, 45 (il valore di due ATR contro la posizione), la perdita di 5 è suddiviso in rischio 1000 a dare 200 azioni da acquistare. Quindi, il rischio di perdita è di 1000, ma il rischio di assegnazione è di 200 azioni x 50share o 10.000. Quindi, stiamo attribuendo il 10 del capitale per l'acquisto, ma solo rischiando 1000. (estratto a cura dalla mailing list AmiBroker) di dimensioni molto rotonda e di dimensioni tick Vari strumenti sono negoziati con vari unitsquot quottrading o quotblocksquot. Per esempio è possibile acquistare il numero frazionario di unità di fondo comune, ma non è possibile acquistare il numero frazionario di azioni. A volte è necessario acquistare in 10s o 100s lotti. AmiBroker ora consente di specificare la dimensione del blocco a livello globale e per-simbolo. È possibile definire per-simbolo dimensioni molto rotondo nella pagina Symbol-gtInformation (fig. 3). Il valore di zero significa che il simbolo non ha formato speciale molto rotondo e utilizzerà quotDefault molto sizequot rotondo (impostazione globale) dalla pagina delle impostazioni analisi automatica (fig. 1). Se la dimensione di default è impostato anche a zero significa che il numero frazionario di sharescontracts sono ammessi. È inoltre possibile controllare la dimensione del lotto rotonda direttamente dal vostro formula AFL utilizzando RoundLotSize riservato variabile, ad esempio: Questa impostazione controlla il movimento di prezzo minimo di una data simbolo. Si può definire a livello globale e per-simbolo. Come con la dimensione del lotto rotondo, è possibile definire per-simbolo dimensioni segno di spunta nella pagina di Symbol-gtInformation (fig. 3). Il valore di zero indica AmiBroker utilizzare quotdefault tick sizequot definito nella pagina delle impostazioni (fig. 1) di finestra di analisi automatica. Se la dimensione predefinita zecca è anche impostato a zero vuol dire che non esiste un prezzo minimo di movimento. È possibile impostare e recuperare la dimensione del segno di spunta anche da AFL formula utilizzando TickSize riservato variabile, ad esempio: Si noti che l'impostazione della dimensione tick influisce compravendite uscito dal built-in ferma Andor ApplyStop (). Il backtester presuppone che i dati sui prezzi seguono requisiti di dimensione zecche e non cambia le matrici di prezzi forniti dall'utente. Così dimensioni specificando tick ha senso solo se si sta utilizzando built-in così smette di punti di uscita vengono generati livelli di prezzo quotallowedquot invece di quelli calcolati. Per esempio in Giappone - non si può avere parti frazionarie di yen così si dovrebbe definire ticksize globale a 1, in modo integrato ferma uscire mestieri a livelli interi. impostazione del margine account definisce requisito di margine percentuale per l'intero account. Il valore predefinito di margine di account è 100. Questo significa che è necessario fornire 100 fondi per entrare nel commercio, e questo è il modo in cui backtester lavorato nelle versioni precedenti. Ma ora è possibile simulare un conto di deposito. Quando si acquista a margine si sta semplicemente prendendo in prestito i soldi dal proprio broker di acquistare azioni. Con normativa vigente si può mettere su 50 del prezzo di acquisto delle azioni che si desidera acquistare e prendere in prestito l'altra metà dal vostro broker. Per simulare questo basta inserire 50 nel campo margine di account (vedi fig. 1). Se il vostro capitale intial è impostato su 10000 vostro potere d'acquisto sarà poi 20000 e si sarà in grado di entrare in posizioni più grandi. Si prega di notare che questa impostazioni imposta il margine per l'intero account e non è legato alla negoziazione dei futures a tutti. In altre parole è possibile negoziare titoli sul conto di deposito. casella di controllo quotReverse forze segnale di entrata exitquot alle impostazioni Backtester. Quando è su ON (l'impostazione predefinita) - backtester funziona come nelle versioni precedenti e chiude già positon aperta se viene rilevato nuovo segnale di ingresso in direzione inversa. Se questo switch è OFF - anche in caso di segnale d'inversione backtester mantiene commercio aperto e non si chiude positon fino all'uscita regolare (vendita o il coperchio) viene generato il segnale. In altre parole, quando questo interruttore è spento backtester ignora i segnali brevi durante i lunghi commerci e ignora segnali di compra durante brevi compravendite. quotAllow stessa uscita bar (singola barra commercio) opzione quot alle impostazioni Quando è su ON (le impostazioni di default) - ingresso e di uscita per lo stesso bar è consentito (come nelle versioni precedenti) se è spento - uscita può avvenire a partire dal solo accanto bar (questo vale per i segnali regolari, vi è una regolazione separata per le uscite ApplyStop generati). Commutazione su OFF permette di riprodurre il comportamento di MS backtester che non è in grado di gestire stesse uscite giorno. quotActivate ferma impostazione immediatelyquotThis risolve il problema dei sistemi di controllo che entrano compravendite sul mercato aperto. Nelle versioni precedenti alla 4.09 backtester presume che si stava entrando compravendite sul mercato vicino in modo fermate built-in sono stati attivati ​​a partire dal giorno successivo. Il problema è stato quando si infatti definito prezzo di apertura come il prezzo di entrata commercio - allora stesse fluttuazioni di prezzo giorno non innescano le fermate. C'erano alcune soluzioni pubblicati basati sul codice AFL, ma ora non avete bisogno di usarli. Semplicemente se il commercio su aperta si dovrebbe contrassegnare quotActivate ferma immediatelyquot (fig. 1). Si può chiedere perché non si limitano a controllare la matrice buyprice o shortprice se è uguale al prezzo di apertura. Purtroppo questo non funzionerà. Perché semplicemente perché ci sono giorni in cui doji prezzo di apertura è uguale a chiudere e poi backtester non potrà mai sapere se il commercio è stato immesso al mercato aperto o chiuso. Quindi, abbiamo davvero bisogno di un ambiente separato. quotUse QuickAFLquotQuickAFL (tm) è una funzione che permette una più veloce calcolo AFL in determinate condizioni. Inizialmente (dal 2003) era disponibile solo per gli indicatori, a partire dalla versione 5.14 è disponibile in analisi automatica troppo. Inizialmente l'idea era quella di consentire grafico più veloce ridisegna attraverso il calcolo AFL formula solo per quella parte che è visibile sul grafico. In modo simile, finestra di analisi automatica può utilizzare sottoinsieme di quotazioni disponibili per calcolare AFL, se selezionato parametro 8220range8221 è inferiore 8220All quotationsquot. spiegazione dettagliata su come funziona QuickAFL e come controllarlo, viene fornita in questo articolo della Knowledge Base: amibrokerkb20080703quickafl Si noti che questa opzione non funziona solo in backtester, ma anche in ottimizzazioni, esplorazioni e scans. Backtesting: Interpretazione Il passato backtesting è una chiave componente di un efficace sviluppo commerciale del sistema. Tutto è compiuto ricostruendo, con i dati storici, mestieri che si sarebbero verificati in passato utilizzando le regole definite da una determinata strategia. Il risultato offre statistiche che possono essere utilizzati per valutare l'efficacia della strategia. Utilizzando questi dati, gli operatori possono ottimizzare e migliorare le loro strategie, trovare eventuali difetti tecnici o teoriche, e guadagnare la fiducia nella loro strategia prima di applicarlo ai mercati reali. La teoria di fondo è che qualsiasi strategia che ha funzionato bene in passato è in grado di lavorare bene in futuro, e viceversa, qualsiasi strategia che ha eseguito male in passato, è probabile che scarso rendimento in futuro. Questo articolo prende in esame quali applicazioni vengono utilizzate per backtest, che tipo di dati si ottiene, e come metterlo a utilizzare i dati e gli strumenti di backtesting può fornire un sacco di feedback statistico preziose su un dato sistema. Alcune statistiche backtesting universali includono: utile o la perdita - percentuale di guadagno netto o la perdita. Tempo di telaio - date passate in cui si è verificato prova ing. Universo - Azioni che sono stati inclusi nel backtest. misure di volatilità - Percentuale massima rialzo e ribasso. Medie - percentuale media di guadagno e la perdita media, bar media detenuta. L'esposizione - Percentuale del capitale investito (o esposta al mercato). Rapporti - Vittorie-to-perdite rapporto. Annualizzato ritorno - ritorno percentuale più di un anno. rendimento percentuale in funzione del rischio - rendimento corretto per il rischio. In genere, il software di backtesting avrà due schermi che sono importanti. Il primo permette al trader di personalizzare le impostazioni per il backtesting. Queste personalizzazioni comprendono tutto, dalla periodo di tempo di spese di commissione. Ecco un esempio di un tale schermo in AmiBroker: La seconda schermata è l'attuale rapporto di risultati dei test retrospettivi. Questo è dove si possono trovare tutte le statistiche di cui sopra. Ancora una volta, ecco un esempio di questa schermata in AmiBroker: In generale, la maggior parte di software commerciale contiene elementi simili. Alcuni programmi software di fascia alta includono anche funzionalità aggiuntive per eseguire il dimensionamento posizione automatica, l'ottimizzazione e altre funzioni più avanzate. I 10 Comandamenti Ci sono molti fattori commercianti prestare attenzione a quando sono backtesting strategie di trading. Ecco una lista delle 10 cose più importanti da ricordare, mentre backtesting: Prendere in considerazione le grandi tendenze del mercato nel lasso di tempo in cui è stata testata una determinata strategia. Ad esempio, se una strategia è stata backtested solo 1999-2000, potrebbe non passerai bene in un mercato orso. Spesso è una buona idea di backtest per un periodo di tempo lungo, che comprende diversi tipi di condizioni di mercato. Prendere in considerazione l'universo in cui si è verificato backtesting. Ad esempio, se un sistema ampio mercato viene testato con un universo composto da titoli tecnologici, potrebbe non riuscire a fare bene in diversi settori. Come regola generale, se la strategia è mirata verso un genere specifico di magazzino, di limitare l'universo di questo genere, ma, in tutti gli altri casi, mantenere un grande universo a scopo di test. misure di volatilità sono estremamente importanti per prendere in considerazione nello sviluppo di un sistema di trading. Questo è particolarmente vero per gli account di leveraged, che sono sottoposti a richieste di margini se il loro capitale scende sotto un certo punto. Gli operatori dovrebbero cercare di mantenere bassa volatilità, al fine di ridurre i rischi e consentire più facile la transizione dentro e fuori di un determinato stock. Il numero medio di bar detenuti è molto importante anche per guardare quando si sviluppa un sistema di trading. Sebbene la maggior parte del software di backtesting include spese di commissione nei calcoli finali, questo non significa che si dovrebbe ignorare questa statistica. Se possibile, aumentare il numero medio di bar possedute in grado di ridurre i costi di commissione, e migliorare il rendimento complessivo. L'esposizione è una spada a doppio taglio. Maggiore esposizione può portare a maggiori profitti o le perdite maggiori, mentre è diminuito l'esposizione significa minori profitti o perdite inferiori. Tuttavia, in generale, è una buona idea per mantenere l'esposizione al di sotto 70, al fine di ridurre il rischio e consentire agevole passaggio dentro e fuori di un determinato stock. La statistica medio-gainloss, in combinazione con il rapporto vittorie-per-le perdite, può essere utile per determinare la posizione ottimale dimensionamento e la gestione del denaro utilizzando tecniche come la Kelly Criterion. (Vedere Money Management utilizzando il criterio di Kelly.) Gli operatori possono assumere posizioni più grandi e ridurre i costi di commissione, aumentando i loro guadagni medi e aumentando il loro rapporto vittorie-to-perdite. rendimento annualizzato è importante perché è utilizzato come strumento per riferimento un sistema restituisce contro altre sedi di investimento. E 'importante non solo per esaminare il rendimento annualizzato generale, ma anche di prendere in considerazione il rischio aumentato o diminuito. Questo può essere fatto guardando il rendimento corretto per il rischio, che rappresenta vari fattori di rischio. Prima di un sistema di negoziazione è adottato, esso deve superare tutte le altre sedi di investimento a rischio uguale o inferiore. Backtesting personalizzazione è estremamente importante. Molte applicazioni backtesting hanno ingresso per gli importi delle commissioni, rotonde (o frazionali) lotto dimensioni, spunta dimensioni, i requisiti di margine, i tassi di interesse, ipotesi slittamento, le regole di posizione dimensionamento, regole di uscita dello stesso bar, (finali) fermare le impostazioni e molto altro ancora. P er ottenere i risultati dei test retrospettivi più accurati, i t è importante per regolare queste impostazioni per imitare il broker che verrà utilizzato quando il sistema va in diretta. Backtesting a volte può portare a qualcosa di noto come eccesso di ottimizzazione. Questa è una condizione in cui i risultati di prestazione sono sintonizzati così altamente al passato che sono più come esatte in futuro. E 'generalmente una buona idea per implementare regole che si applicano a tutti gli stock, o un gruppo selezionato di azioni mirate, e non sono ottimizzati nella misura in cui le regole non sono più comprensibili dal creatore sono. Backtesting non è sempre il modo più accurato per misurare l'efficacia di un dato sistema di trading. A volte le strategie che si sono esibiti bene in passato non riescono a fare bene nel presente. I rendimenti passati non sono indicativi di risultati futuri. Assicurarsi di commercio di carta un sistema che è stato con successo backtested prima di andare in diretta per essere sicuri che la strategia si applica ancora in pratica. Conclusione Backtesting è uno degli aspetti più importanti di sviluppo di un sistema di trading. Se creata e interpretata correttamente, può aiutare gli operatori a ottimizzare e migliorare le loro strategie, trovare eventuali difetti tecnici o teorici, così come acquisire fiducia in loro strategia prima di applicarlo ai mercati del mondo reale. Risorse Tradecision (tradecision) - High-end Trading System Development AmiBroker (AmiBroker) - Budget Trading System Development. Una teoria economica della spesa totale per l'economia e dei suoi effetti sulla produzione e l'inflazione. economia keynesiana è stato sviluppato. Una partecipazione di un bene in un portafoglio. Un investimento di portafoglio è realizzato con l'aspettativa di guadagnare un ritorno su di esso. Questo. Un rapporto sviluppato da Jack Treynor che misura i rendimenti ottenuti, superiori a quelle che avrebbero potuto essere guadagnati su un privo di rischio. Il riacquisto delle azioni in circolazione (riacquisto) da parte di una società al fine di ridurre il numero di azioni sul mercato. Aziende. Il rimborso fiscale è un rimborso sulle tasse pagate ad un individuo o famiglia quando l'onere fiscale effettivo è inferiore alla quantità. Il valore monetario di tutti i beni e servizi prodotti all'interno di un confini country039s in un momento specifico period. Backtesting backtesting finiti è il processo di applicazione di una strategia di trading o di un metodo di analisi ai dati storici per vedere come con precisione la strategia o il metodo avrebbero predetto i risultati effettivi . Come funziona (esempio): Per esempio, permette di assumere a elaborare un modello che si pensa predice costantemente il valore futuro del SampP 500. Utilizzando i dati storici, è possibile backtest il modello per vedere se avrebbe funzionato in passato. Confrontando i risultati previsti del modello contro i risultati storici effettivi, backtesting in grado di determinare se il modello ha valore predittivo. Quasi qualsiasi metodo per prevedere tutto può essere backtested. Ad esempio, un analista può backtest suo o suoi metodi per la previsione di un risultato netto della società. il grado di volatilità di una particolare azione. Rapporti principali. o tornare percentuali. operatori tecnici sono gli utenti più comuni di backtesting, e la maggior parte backtesting oggi avviene con software per computer. Perché è importante: backtesting offre analisti. commercianti e investitori un modo per valutare e ottimizzare le proprie strategie di trading e modelli analitici prima di implementarli. L'idea è che una strategia che avrebbe funzionato male in passato probabilmente funzionerà male in futuro, e viceversa. Ma come si può vedere, una parte fondamentale del backtesting è l'ipotesi rischiosa che le performance passate prevede risultati futuri. InvestingAnswers è l'unica guida di riferimento finanziario youll mai bisogno. I nostri strumenti di approfondimento danno a milioni di persone in tutto il mondo altamente dettagliato e accuratamente spiegato risposte alle loro più importanti questioni finanziarie. Forniamo dizionario finanziaria qualità più completo e il più alto del pianeta, oltre a migliaia di articoli, calcolatrici a portata di mano, e le risposte alle domande più comuni finanziarie - tutte le 100 gratuitamente. Ogni mese, più di 1 milione di visitatori in 223 paesi in tutto il mondo si rivolgono a InvestingAnswers come una fonte attendibile di valore information. Successful backtesting di strategie di trading algoritmico - Parte I Questo articolo continua la serie di negoziazione quantitativa, che ha iniziato con la guida per principianti e Identificazione strategia. Entrambi questi articoli più lunghi, più coinvolti sono stati molto popolari in modo Ill continuare su questa strada e di fornire dettagli sul tema della strategia di backtesting. backtesting algoritmica richiede la conoscenza di molti settori, tra cui la psicologia, matematica, statistica, sviluppo software e marketexchange microstruttura. Non potevo sperare di coprire tutti questi argomenti in un unico articolo, quindi ho intenzione di dividerli in due o tre pezzi più piccoli. Cosa faremo discutere in questa sezione Ill iniziare definendo backtesting e poi descriverà le basi di come essa viene effettuata. Poi mi chiarire sui pregiudizi che abbiamo toccato nella Guida per principianti Trading Quantitative. Successivo presenterò un confronto tra le varie opzioni software backtesting disponibili. Negli articoli successivi vedremo i dettagli di implementazione di strategia che spesso sono a malapena menzionati o ignorati. Ci sarà anche considerare come rendere il processo di backtesting più realistico includendo le idiosincrasie di uno scambio commerciale. Poi si discuterà dei costi di transazione e su come modellare correttamente in un ambiente backtest. Ci si concluderà con una discussione sulle prestazioni dei nostri estensivi e, infine, fornire un esempio di una strategia quant comune, noto come coppie di commercio media-ritornare. Iniziamo a discutere ciò che è backtesting e perché dovremmo portarlo a termine nel nostro trading algoritmico. Qual è backtesting trading algoritmico si distingue da altri tipi di classi di investimento, perché siamo in grado di fornire in modo più affidabile le aspettative sull'andamento futuro dal rendimento passato, come conseguenza di abbondante disponibilità dei dati. Il processo attraverso il quale questa viene effettuata è conosciuto come backtesting. In termini semplici, backtesting viene effettuato esponendo l'algoritmo particolare strategia ad un flusso di dati finanziari storici, che porta ad una serie di segnali di trading. Ogni commercio (che significherà qui per essere un andata e ritorno di due segnali) avrà un utile o la perdita associati. L'accumulo di questo profitloss per tutta la durata della vostra strategia di backtest porterà al profitto totale e la perdita (noto anche come il PL o PNL). Questa è l'essenza dell'idea, anche se ovviamente il diavolo è sempre nei dettagli Quali sono ragioni principali per backtesting una filtrazione strategia algoritmica - Se vi ricordate dal l'articolo sulla strategia di identificazione. il nostro obiettivo nella fase di ricerca iniziale era di creare una pipeline di strategia e poi filtrare qualsiasi strategia che non soddisfano determinati criteri. Backtesting ci fornisce un altro meccanismo di filtraggio, come possiamo eliminare strategie che non soddisfano le nostre esigenze di prestazioni. Modellazione - backtesting ci permette di (in sicurezza) sperimentare nuovi modelli di alcuni fenomeni di mercato, come ad esempio i costi di transazione, order routing, la latenza, la liquidità o altri problemi di microstruttura del mercato. Ottimizzazione - Anche se l'ottimizzazione strategia è pieno di pregiudizi, backtesting ci permette di aumentare le prestazioni di una strategia modificando la quantità o valori dei parametri associati a tale strategia e ricalcolando le sue prestazioni. Verifica - Le nostre strategie sono spesso provengono dall'esterno, attraverso la nostra pipeline di strategia. Backtesting una strategia assicura che non è stata attuata in modo errato. Anche se ci sarà raramente hanno accesso ai segnali generati da strategie esterne, avremo spesso avere accesso ai parametri di rendimento, come l'indice di Sharpe e le caratteristiche drawdown. Così li possiamo confrontare con la nostra implementazione. Backtesting offre una serie di vantaggi per il trading algoritmico. Tuttavia, non è sempre possibile backtest semplicemente una strategia. In generale, come la frequenza degli aumenti strategia, diventa più difficile modellare correttamente gli effetti microstruttura del mercato e scambi. Questo porta a backtests meno affidabili e quindi una valutazione più complicato di una strategia scelta. Questo è un problema particolare quando il sistema di esecuzione è la chiave per il rendimento della strategia, come con algoritmi ultra-alta frequenza. Purtroppo, backtesting è pieno di pregiudizi di ogni tipo. Abbiamo toccato alcuni di questi problemi in articoli precedenti, ma ci sarà ora li discuterà in profondità. Pregiudizi che influenzano backtests strategia Ci sono molti pregiudizi che possono influenzare le prestazioni di una strategia backtested. Sfortunatamente, questi pregiudizi hanno la tendenza a gonfiare il rendimento piuttosto che ridurre esso. Così si dovrebbe sempre prendere in considerazione un backtest per essere un idealizzato limite superiore al rendimento effettivo della strategia. E 'quasi impossibile eliminare pregiudizi da trading algoritmico quindi è il nostro lavoro per ridurre al minimo loro nel miglior modo possibile al fine di prendere decisioni informate circa le nostre strategie algoritmiche. Ci sono quattro grandi pregiudizi che desidero discutere: Ottimizzazione Bias. Look-Ahead Bias. La sopravvivenza Bias e Bias psicologica Tolleranza. Ottimizzazione Bias Questo è probabilmente il più insidioso di tutti i pregiudizi backtest. Si tratta di regolazione o di introdurre parametri di negoziazione aggiuntivi fino a quando il rendimento della strategia sul set di dati backtest è molto interessante. Tuttavia, una volta vivo le prestazioni della strategia può essere notevolmente diversa. Un altro nome per questo bias è curva pregiudizi montaggio o dati-snooping. bias di ottimizzazione è difficile da eliminare le strategie algoritmiche coinvolgono spesso molti parametri. I parametri in questo caso potrebbero essere i criteri entryexit, guardare-back periodi, con una media punti (i. e il parametro smoothing media mobile) o frequenza di misura la volatilità. polarizzazione ottimizzazione può essere minimizzata mantenendo il numero di parametri al minimo e aumentando la quantità di punti dati di addestramento. In realtà, si deve anche stare attenti di quest'ultimo come punti di formazione più grandi possono essere soggetti a un regime precedente (come ad esempio un contesto normativo) e quindi non possono essere rilevanti per la vostra strategia corrente. Un metodo per aiutare a mitigare questa tendenza è quello di eseguire un'analisi di sensibilità. Questo significa variando i parametri incrementale e tracciando una superficie di prestazioni. Suono, il ragionamento fondamentale per le scelte dei parametri deve, con tutti gli altri fattori considerati, portare ad una superficie più liscia parametro. Se si dispone di una superficie prestazione molto nervosa, spesso significa che un parametro non riflette un fenomeno ed è un artefatto dei dati di test. Esiste una vasta letteratura su algoritmi di ottimizzazione multi-dimensionali ed è una zona altamente attiva di ricerca. I wont soffermo su di esso qui, ma tenerlo nella parte posteriore della vostra mente quando si trova una strategia con una fantastica backtest Look-Ahead Bias pregiudizi Look-ahead viene introdotto in un sistema di backtesting quando i dati futuri viene accidentalmente incluso in un punto in simulazione in cui i dati non sono stati effettivamente disponibili. Se ci sono in esecuzione il backtest cronologicamente e raggiungiamo punto di tempo N, poi look-ahead si verifica pregiudizi se i dati è incluso per ogni punto Nk, dove K0. Look-ahead errori sistematici possono essere incredibilmente sottile. Ecco tre esempi di come pregiudizi look-ahead può essere introdotto: Bugs tecniche - Arraysvectors nel codice spesso hanno iteratori o variabili indice. compensazioni non corretti di questi indici può portare a una distorsione look-ahead incorporando i dati a Nk per k diverso da zero. Il parametro di calcolo - Un altro esempio comune di bias look-ahead si verifica quando il calcolo dei parametri strategia ottimale, come ad esempio con regressioni lineari tra due serie storiche. Se si utilizza l'intero insieme di dati (compresi quelli futuri) per calcolare i coefficienti di regressione, e, quindi, retroattivamente applicata ad una strategia di trading a scopo di ottimizzazione, quindi i dati futuro è incorporato ed esiste una polarizzazione look-ahead. MaximaMinima - Alcune strategie di trading fanno uso di valori estremi in qualsiasi periodo di tempo, come ad esempio incorporando i prezzi alti o bassi nei dati OHLC. Tuttavia, poiché questi valori maximalminimal possono essere calcolati solo alla fine di un periodo di tempo, una polarizzazione look-ahead viene inserito se questi valori vengono utilizzati - during - periodo corrente. È sempre necessario ritardo highlow valori di almeno un periodo in qualsiasi negoziazione making strategia uso. Come con pregiudizi di ottimizzazione, bisogna essere estremamente attenti ad evitare la sua introduzione. Spesso è il motivo principale per cui le loro strategie di trading sottoperformare backtests significativamente nel trading dal vivo. La sopravvivenza Bias sopravvivenza bias è un fenomeno particolarmente pericoloso e può portare a prestazioni in modo significativo gonfiati per alcuni tipi di strategia. Essa si verifica quando le strategie sono testati su insiemi di dati che non includono l'universo completo delle attività precedenti che possono essere stati scelti in un particolare momento, ma considerano solo quelle che sono sopravvissute al tempo corrente. A titolo di esempio, si consideri testare una strategia su una selezione casuale di azioni prima e dopo il crollo del mercato del 2001. Alcuni titoli tecnologici sono fallite, mentre altri sono riusciti a rimanere a galla e perfino prosperato. Se avessimo limitato questa strategia solo per gli stock che hanno superato il periodo di prelievo di mercato, ci sarebbe l'introduzione di un bias di sopravvivenza, perché hanno già dimostrato il loro successo a noi. In realtà, questo è solo un altro caso specifico di bias look-ahead, come le informazioni futuro viene incorporato in analisi passato. Ci sono due modi principali per mitigare pregiudizi sopravvivenza nei tuoi backtests strategia: sopravvivenza Bias Dataset gratuiti - In caso di dati equità, è possibile acquistare i set di dati che includono revocate entità, anche se non sono a buon mercato e solo tendono ad essere utilizzati dalle imprese istituzionali . In particolare, i dati Yahoo! Finanza non è pregiudizio sopravvivenza libera, e questo è comunemente utilizzato da molti commercianti al dettaglio algo. Si può anche operare su classi di attività che non sono soggetti a pregiudizi sopravvivenza, come alcuni prodotti di base (e loro derivati ​​futuri). Utilizzare più recenti dati - Nel caso di titoli di capitale, utilizzando una recente serie di dati più mitiga la possibilità che la selezione dei titoli scelta è ponderata ai sopravvissuti, semplicemente in quanto vi è meno probabilità di azionario globale delisting in periodi di tempo più brevi. Si può anche iniziare a costruire un insieme di dati libera sopravvivenza-pregiudizi personali attraverso la raccolta di dati da punto corrente in poi. Dopo 3-4 anni, si avrà una sopravvivenza-bias set gratuito solida di azioni di dati con cui backtest ulteriori strategie. Noi ora considerare alcuni fenomeni psicologici che possono influenzare le prestazioni di trading. Psicologica Bias Tolleranza Questo fenomeno particolare, non è spesso discusso nel contesto del trading quantitativo. Tuttavia, è ampiamente discusso in relazione a più metodi di negoziazione discrezionali. Ha vari nomi, ma Ive ha deciso di chiamarla psicologica tolleranza pregiudizi perché cattura l'essenza del problema. Quando si crea backtests per un periodo di 5 anni o più, è facile guardare un curva di equità verso l'alto trend, calcolare il rendimento annuo composto, indice di Sharpe e anche drawdown caratteristiche e di essere soddisfatto dei risultati. Come esempio, la strategia potrebbe possedere un prelievo relativa massima di 25 e una durata massima di prelievo del 4 mesi. Ciò non sarebbe atipica per una strategia di moto. E 'semplice per convincersi che è facile da tollerare tali periodi di perdite a causa del quadro generale è roseo. Tuttavia, in pratica, è molto più difficile se utilizzi storici di 25 o più verificarsi nella estensivi, poi con ogni probabilità si vedranno i periodi di prelievo simile in trading dal vivo. Questi periodi di prelievo sono psicologicamente difficile da sopportare. Ho osservato in prima persona ciò che un prelievo prolungato può essere come, in un contesto istituzionale, e non è piacevole - anche se i test retrospettivi suggeriscono si verificheranno tali periodi. La ragione per cui ho definito un pregiudizio è che spesso una strategia che altrimenti sarebbe successo viene fermato da negoziazione durante i periodi di prelievo prolungato e, quindi, porterà alla sottoperformance significativa rispetto a un backtest. Così, anche se la strategia è algoritmica in natura, fattori psicologici possono ancora hanno un peso pesante sulla redditività. L'asporto è quello di garantire che se si vede utilizzi di una certa percentuale e durata nel estensivi, allora si dovrebbe pretendere che si verificano in ambienti di trading dal vivo, e avrà bisogno di perseverare per raggiungere la redditività, una volta di più. Pacchetti software per Backtesting Il paesaggio software per la strategia di backtesting è vasto. Le soluzioni variano da un sofisticato software di grado istituzionale completamente integrata attraverso linguaggi di programmazione come C, Python e R dove quasi tutto deve essere scritto da zero (o plugin adatti ottenuti). Come i commercianti quant ci interessa l'equilibrio di essere in grado di possedere il nostro stack di tecnologia di trading contro la velocità e l'affidabilità della nostra metodologia di sviluppo. Qui ci sono le considerazioni principali per la scelta del software di programmazione: Abilità - La scelta di ambiente sarà in gran parte sceso per la vostra capacità di programmare software. Direi che avere il controllo dello stack totale avrà un effetto maggiore sulla PL lungo termine rispetto di outsourcing per quanto possibile, di fornitore di software. Ciò è dovuto al rischio di ribasso di avere bug esterni o idiosincrasie che non si riesce a risolvere il problema nel software vendor, che altrimenti sarebbe facile porre rimedio se si ha un maggiore controllo sul tuo stack tecnologico. Volete anche un ambiente che il giusto equilibrio tra produttività, disponibilità biblioteca e velocità di esecuzione. Faccio mie raccomandazione personale di seguito. Esecuzione CapabilityBroker Interaction - Alcuni software backtesting, come ad esempio Tradestation, si lega direttamente con una società di intermediazione. Io non sono un fan di questo approccio a ridurre i costi di transazione sono spesso una grande componente di ottenere un indice di Sharpe più elevato. Se sei legato in un particolare broker (e le forze TradeStation di fare questo), allora si avrà un tempo più difficile la transizione a un nuovo software (o un nuovo mediatore) in caso di necessità. Interactive Brokers forniscono una API che è robusto, anche se con una interfaccia leggermente ottuso. Personalizzazione - un ambiente come MATLAB o Python ti dà una grande flessibilità nella creazione di strategie algo in quanto forniscono le librerie fantastici per quasi qualsiasi operazione matematica che si possa immaginare, ma consentono anche di personalizzazione estesa, se necessario. Strategia Complessità - Alcuni software appena isnt tagliato per numero pesante scricchiolio o complessità matematica. Excel è un tale pezzo di software. Anche se è bene per le strategie più semplici, non può davvero far fronte a numerose attività o algoritmi più complessi, a velocità. Bias minimizzazione - Fa un particolare pezzo di software o dati si presta di più a pregiudizi di negoziazione È necessario fare in modo che, se si desidera creare tutte le funzionalità te, che tu non introdurre bug che può portare a pregiudizi. Velocità di sviluppo - Uno dovreste avere a trascorrere mesi e mesi l'implementazione di un motore di backtest. Prototipazione dovrebbe solo prendere un paio di settimane. Assicurarsi che il software non ostacola i vostri progressi in misura rilevante, solo per afferrare un paio di punti percentuali in più di velocità di esecuzione. C è l'elefante nella stanza qui velocità di esecuzione - Se la strategia è completamente dipendente al momento dell'esecuzione la tempestività (come in HFTUHFT), allora sarà necessario un linguaggio come C o C. Tuttavia, vi sarà tendente al ottimizzazione kernel Linux e l'uso di FPGA per questi domini, che è al di fuori del campo di applicazione di questo articolo Costo - Molti degli ambienti software che è possibile programmare strategie di trading algoritmico con fonte sono completamente libero e aperto. In realtà, molti fondi hedge fanno uso di software open source per tutta la loro stack algo trading. Inoltre, Excel e MATLAB sono entrambi relativamente a buon mercato e ci sono anche alternative gratuite a ciascuno. Ora che abbiamo elencato i criteri con i quali abbiamo bisogno di scegliere la nostra infrastruttura software, voglio correre attraverso alcuni dei pacchetti più popolari e come si confronta: Nota: Sto solo andando a includere il software che è disponibile per la maggior parte degli operatori al dettaglio e gli sviluppatori di software, in quanto questo è il numero di lettori del sito. Mentre altri software è disponibile come ad esempio gli strumenti più grade istituzionale, mi sento questi sono troppo costosi per essere utilizzati in modo efficace in un ambiente di vendita al dettaglio e io personalmente non hanno alcuna esperienza con loro. Backtesting Software Confronto Descrizione: linguaggio di alto livello progettato per velocità di sviluppo. Vasta gamma di librerie per quasi ogni immaginabile compito programmatica. Guadagnando più ampia accettazione in hedge fund e comunità di banca d'investimento. Non abbastanza veloce come CC per velocità di esecuzione. Esecuzione: esistono plugin Python per i mediatori più grandi, come Interactive Brokers. Quindi backtest e sistema di esecuzione può essere tutti parte della stessa pila tecnologia. Personalizzazione: Python ha una comunità di sviluppo molto sano ed è un linguaggio maturo. NumPySciPy fornire strumenti veloci di calcolo scientifico e l'analisi statistica rilevanti per la negoziazione Quant. Strategia Complessità: Esistono molti plug-in per gli algoritmi principali, ma non abbastanza grande comunità quant come esiste per MATLAB. Bias Minimizzazione: Stesse problemi pregiudizi di minimizzazione esiste come per qualsiasi linguaggio di alto livello. Necessità di essere estremamente attenti a test. Velocità di sviluppo: vantaggio principale Pythons è la velocità di sviluppo, con una robusta nel costruito in capacità di test. Velocità di esecuzione: non abbastanza veloce come C, ma i componenti di calcolo scientifico sono ottimizzate e Python può parlare con codice nativo C con alcuni plugin. Costo: FreeOpen Fonte Descrizione: matura, linguaggio di alto livello progettato per velocità di esecuzione. Vasta gamma di finanza quantitativa e librerie numeriche. Più difficili da eseguire il debug e spesso richiede più tempo per implementare rispetto Python o MATLAB. Estremamente diffuso sia nel buy e sell-side. Esecuzione: La maggior parte delle API di intermediazione sono scritti in C e Java. Così esistono molti plugin. Personalizzazione: CC consente l'accesso diretto alla memoria di base, strategie quindi ultra-alta frequenza possono essere implementate. Strategia Complessità: C STL fornisce un'ampia gamma di algoritmi ottimizzati. Quasi ogni algoritmo matematico specializzato possiede una, implementazione open-source CC gratuitamente sul web. Bias Minimizzazione: Bias Look-ahead può essere difficile da eliminare, ma non più difficile di quanto altro linguaggio ad alto livello. Buone strumenti di debug, ma bisogna stare attenti quando si tratta di memoria sottostante. Velocità di sviluppo: C è abbastanza dettagliata rispetto a Python o MATLAB per lo stesso algorithmm. Ulteriori linee-di-codice (LOC) spesso porta ad una maggiore probabilità di errori. Velocità di esecuzione: CC ha velocità di esecuzione estremamente veloce e può essere ben ottimizzato per specifiche architetture computazionali. Questa è la ragione principale per utilizzarlo. Costo: vari compilatori: LinuxGCC è libero, MS Visual Studio ha diverse licenze. Differenti strategie richiederanno diversi pacchetti software. strategie HFT e UHFT saranno scritti in CC (in questi giorni sono spesso eseguite su GPU e FPGA), mentre le strategie direzionali azionari a bassa frequenza sono facili da implementare in TradeStation, a causa del tutto in una natura del softwarebrokerage. La mia preferenza personale è per Python in quanto fornisce il giusto grado di personalizzazione, velocità di sviluppo, capacità di test e velocità di esecuzione per le mie esigenze e strategie. Se ho bisogno di qualcosa di più veloce, posso cadere in C direttamente dai miei programmi Python. Un metodo favorito da molti commercianti quant è quello di prototipare le loro strategie in Python e quindi convertire sezioni di esecuzione più lenti a C in modo iterativo. Alla fine l'intera algo è scritto in C e può essere lasciato solo al commercio Nei prossimi articoli su backtesting ci sarà uno sguardo ad alcune particolari questioni che circondano l'implementazione di un sistema di trading backtesting algoritmico, così come il modo per incorporare gli effetti di scambi commerciali. Discuteremo la misurazione delle prestazioni di strategia e, infine, concludere con una strategia di esempio. Appena iniziato con Trading Quantitative

No comments:

Post a Comment