Thursday 28 September 2017

Ta Lib Bollinger Bands


Questo è un wrapper Python per TA-LIB sulla base di Cython invece di SWIG. Dalla home page: TA-Lib è ampiamente utilizzato dagli sviluppatori di software di trading che necessitano di effettuare l'analisi tecnica di dati finanziari. Comprende 150 indicatori quali ADX, MACD, RSI, stocastico, le bande di Bollinger, ecc Candlestick pattern recognition API open-source per CC, Java, Perl, Python e 100 gestito il binding Python originali utilizzare SWIG che sono purtroppo difficili da installare e arent efficienti come potrebbero essere. Quindi questo progetto utilizza Cython e Numpy di impegnare in modo efficiente e in modo pulito per TA-Lib - produrre risultati 2-4 volte più veloce l'interfaccia SWIG. Installare TA-Lib o leggere la documentazione Simile a TA-Lib, la funzione di interfaccia fornisce un involucro leggero degli indicatori TA-Lib esposti. Ogni funzione restituisce un array di uscita e hanno valori di default per i loro parametri, se non specificato come argomenti chiave. Tipicamente, queste funzioni avranno un periodo lookback iniziale (un numero richiesto di osservazioni prima un'uscita viene generato) impostato su NaN. Tutti i seguenti esempi utilizzare la funzione API: Calcolare una media mobile dei prezzi di chiusura: Calcolo bande di Bollinger, con tripla media mobile esponenziale: Calcolo slancio dei prezzi di chiusura, con un periodo di tempo di 5: Estratto API Quick Start Se sei già familiarità con l'utilizzo della funzione API, si dovrebbe sentire come a casa utilizzando l'API astratto. Ogni funzione ha lo stesso ingresso, passato come un dizionario di array NumPy: Le funzioni possono sia essere importati direttamente o istanziati per nome: Da lì, chiamare funzioni è fondamentalmente la stessa della funzione API: Scopri di utilizzo su più avanzato di TA-Lib qui . Gli indicatori supportati Possiamo mostrare tutte le funzioni TA supportate da TA-Lib, sia come elenco o come dict ordinati per gruppo (ad esempio Overlap Studi, indicatori di momentum, etc.): Funzione GroupsPython Algorithmic Trading Biblioteca PyAlgoTrade è un Trading libreria Python algoritmico con concentrarsi su backtesting e il supporto per la carta-trading e live-trading. Diciamo che avete un'idea per una strategia di trading e youd piace di valutare con i dati storici e vedere come si comporta. PyAlgoTrade permette di farlo con il minimo sforzo. Principali caratteristiche completamente documentato. Evento guidato . Supporta Mercato, Limite, Stop e ordini StopLimit. Supporta i file di Yahoo Finance, Google Finance e NinjaTrader CSV. Supporta qualsiasi tipo di dati di serie temporali in formato CSV, ad esempio Quandl. supporto commerciale Bitcoin attraverso Bitstamp. Indicatori tecnici e filtri come SMA, WMA, EMA, RSI, le bande di Bollinger, Hurst esponente e altri. metriche di performance come indice di Sharpe e analisi drawdown. Gestione degli eventi di Twitter in tempo reale. profiler evento. Integrazione TA-Lib. Molto facile da scalare orizzontalmente, cioè, utilizzando uno o più computer di backtest una strategia. PyAlgoTrade è gratuito, open source, ed è rilasciato sotto la licenza Apache, versione 2.0.Release Notes 8 settembre 2016 Miglioramenti Aggiunge avanti compilare tabelle di checkpoint per il nucleo loader fiammata. Questo permette il caricatore in modo più efficiente in avanti riempire i dati dalla tappatura la data in basso si deve cercare quando l'interrogazione dei dati. I posti di blocco devono avere nuovi delta applicati (1276). Aggiornato VagrantFile per includere tutti i requisiti dev e utilizzare una immagine più recente (1310). Consentire correlazioni e regressioni a essere calcolati tra i due fattori 2D facendo calcoli asset-saggio (1307). I filtri sono stati fatti windowsafe per impostazione predefinita. Ora possono essere passati come argomenti ad altri filtri, Fattori e Classificatori (1338). Aggiunto un parametro GroupBy opzionale di rango (). superiore(). e inferiore (). (1349). Aggiunti nuovi filtri gasdotti, ogni e qualsiasi. che prende un altro filtro e restituisce true se un bene prodotto un Vero per anyall giorni nei giorni precedenti windowlength (1358). Aggiunto nuovo filtro AtLeastN pipeline. che prende un altro filtro e un int N e restituisce true se un bene prodotto un vero su N o più giorni nei precedenti giorni windowlength (1367). Utilizzare empyrical libreria esterna per i calcoli di rischio. unifica Empyrical rischiano computi metrici tra pyfolio e zipline. Empyrical aggiunge opzioni annualizzazione personalizzate per i ritorni di frequenze personalizzati. (855) Aggiungi fattore Aroon. (1258) Aggiungere fattore oscillatore stocastico veloce. (1255) Aggiungi un Dockerfile. (1254) Nuovo calendario commerciale che supporta le sessioni che si estendono attraverso midnights, ad esempio 24 ore 06:01 sessioni PM-6:00PM per il trading dei futures. zipline. utils. tradingcalendar è ora sconsigliato. (1138) (1312) consentono affettare una singola colonna di un FactorFilterClassifier. (1267) Fornire fattore Ichimoku Cloud (1263) Consentire parametri di default a condizioni Pipeline. (1263) Fornire tasso del fattore di variazione percentuale. (1324) Fornire lineare ponderata movimento fattore medio. (1325) Aggiungi NotNullFilter. (1345) Consentire variazioni di capitale da definire con un valore obiettivo. (1337) Aggiungi fattore TrueRange. (1348) Aggiungere punto in ricerche di tempo per assets. db. (1361) Fai Cantrade a conoscenza dello scambio asset8217s. (1346) Aggiungi metodo downsample a tutti i termini calcolabili. (1394) Aggiungi QuantopianUSFuturesCalendar. (1414) abilitare la pubblicazione di versioni vecchie assets. db. (1430) Enable schedulefunction per il calendario Futures trading. (1442) Non consentire regressioni di lunghezza 1. (1466), Sperimentale aggiungere il supporto per comingled futuri e storia equità finestre, e consentire ad altri l'accesso ai dati futuro tramite il portale di dati. (1435) fattore di built-in (1432) Bug Fixes Modifiche AverageDollarVolume trattare mancante valori prossimi o di volume come 0. In precedenza, NaNs erano semplicemente scartato prima media, dando i restanti valori troppo peso (1309). Rimuovere tasso privo di rischio da calcolo Sharpe Ratio. Il rapporto è ora la media dei rendimenti risk adjusted oltre violatility dei rendimenti rettificati. (853) rapporto di Sortino restituirà calcolo anziché np. nan quando rendimenti richiesti sono uguali a zero. Il rapporto ora restituisce la media dei rendimenti risk adjusted sopra rischio di ribasso. Corretto API mislabeled convertendo Mar a downsiderisk. (747) il rischio di ribasso ora restituisce la radice quadrata della media dei quadrati di differenza al ribasso. (747) rapporto di Informazioni aggiornate al rendimento medio dei rendimenti risk adjusted oltre deviazione standard dei rendimenti risk adjusted. (1322) l'Alfa e l'Indice di Sharpe sono ora annualizzati. (1322) Fissare le unità durante la lettura e la scrittura di un attributo quotidiano bar firsttradingday. (1245) moduli invio facoltativo, quando mancano, non causano più un NameError. (1246) Trattare argomenti schedulefunction come regola momento in cui viene fornita una regola di tempo, ma nessuna regola data. (1221) Proteggere contro le condizioni al contorno all'inizio e alla fine giorno di negoziazione in funzione di programmazione. (1226) Applicare adattamenti giorno precedente quando si utilizza la storia con una frequenza di 1d. (1256) Fail veloce su colonne della pipeline non validi, invece di tentare di accedere colonna inesistente. (1280) Fissare la gestione AverageDollarVolume NaN. (1309) il miglioramento delle prestazioni a tracciare loader nucleo. (1227) Consentire le query Blaze simultanee. (1323) Prevenire mancante che porta i dati bcolz minute da fare ricerche inutili ripetuti. (1451) Cache future ricerche catena. (1455) Manutenzione e refactoring rimossi restante menzioni di addhistory. (1287) La documentazione Aggiungi dispositivo di prova che le fonti di dati dei prezzi giornalieri da infissi dati relativi ai prezzi al minuto. (1243) Formato dati Modifiche BcolzDailyBarReader e l'uso BcolzDailyBarWriter esempio il calendario di trading, invece di giorni di negoziazione serializzate a JSON. (1.330) Variazione formato assets. db per supportare punto in ricerche di tempo. (1.361) Variazione BcolzMinuteBarReaderand BcolzMinuteBarWriter per supportare varie dimensioni tick. Release (1428) 1.0.1 Si tratta di un minore bug-fix release da 1.0.0 e comprende un piccolo numero di correzioni di bug e miglioramenti della documentazione. Miglioramenti aggiunto il supporto per i modelli di commissione definiti dall'utente. Vedere la classe zipline. financemissionmissionModel per maggiori dettagli sull'implementazione di un modello di commissione. (1213) Aggiunto il supporto per le colonne non galleggiante a set di dati Pipeline Blaze-backed (1201). Aggiunto zipline. pipeline. slice. Slice. un nuovo termine gasdotto progettato per estrarre una singola colonna da un altro termine. Fette possono essere creati da indicizzare in un termine, digitato da bene. Correzioni (1267) errori È stato risolto un bug per cui caricatori Pipeline non erano adeguatamente inizializzati da zipline. runalgorithm (). Questo invocazioni anche colpite del zipline eseguiti dalla CLI. Corretto un bug che causava la magia delle cellule IPython zipline a fallire (533233fae43c7ff74abfb0044f046978817cb4e4). Corretto un bug nel modello commissione PerTrade cui commissioni sono state erroneamente applicate a ciascun parziale riempimento di un ordine piuttosto che l'ordine stesso, con conseguente algoritmi in fase di ricarica troppo nelle commissioni se grossi quantitativi. PerTrade ora si applica correttamente commissioni su una base per-ordine (1213). Attributo accede su CustomFactors definiscono uscite multiple sarà ora tornare correttamente una fetta d'uscita quando l'uscita è anche il nome di un metodo Factor (1214). utilizzo Sostituito deprecato di pandas. io. data con pandasdatareader (1218). Risolto un problema in cui i file stub. pyi per zipline. api sono stati accidentalmente esclusi dalla distribuzione sorgente PyPI. gli utenti Conda non dovrebbe essere modificata (1230). Documentazione Aggiunto un nuovo esempio, zipline. examples. momentumpipeline. che esercita l'API Pipeline (1230). In evidenza Zipline 1,0 Rewrite (1105) Abbiamo riscritto un sacco di Zipline e dei suoi concetti di base, al fine di migliorare le prestazioni di esecuzione. Allo stesso tempo, we8217ve introdotto diverse nuove API. Ad alto livello, le versioni precedenti di Zipline simulazioni tirato da un flusso multiplex di fonti di dati, che sono stati fusi via heapq. Questa corrente è stata alimentata al ciclo della simulazione, guidando l'orologio avanti. Questa forte dipendenza leggere tutti i dati ha reso difficile per ottimizzare le prestazioni di simulazione perché non vi era alcun legame tra la quantità di dati che abbiamo recuperato e la quantità di dati effettivamente utilizzati dall'algoritmo. Ora, noi recuperare i dati solo quando l'algoritmo ha bisogno. Una nuova classe, DataPortal. dispacci richieste di dati di varie fonti di dati e restituisce i valori richiesti. Questo rende il tempo di esecuzione di una simulazione scala molto più strettamente con la complessità dell'algoritmo, piuttosto che con il numero di risorse fornite dalle sorgenti di dati. Invece del flusso di dati di guida l'orologio, ora simulazioni scorrere un set pre-calcolata del giorno o timestamp minuto. I timestamp sono emessi da MinuteSimulationClock e DailySimulationClock. e consumata dal ciclo in main trasformata (). We8217ve in pensione l'datasid (N) e le API di storia, la loro sostituzione con diversi metodi sull'oggetto BarData: corrente (). storia(). Cantrade (). e isstale (). I vecchi API continuerà a lavorare per ora, ma emetterà warning di deprecazione. A questo punto è possibile passare a una fonte di aggiustamenti al DataPortal. e noi applicare le regolazioni ai dati sui prezzi quando guardando indietro a dati. Prezzi e volumi per l'esecuzione e presentato l'algoritmo in data. current sono il valore in borsa del bene. Nuovi punti di entrata (1173 e 1178) in modo da rendere più facile l'uso zipline abbiamo aggiornato i punti di ingresso per un backtest. I tre modi supportati per eseguire un backtest ora sono: zipline. runalgo run () zipline zipline (IPython magia) I dati Bundle (1173 e 1178) 1.0.0 introduce fasci di dati. pacchetti di dati sono gruppi di dati che devono essere precaricati e utilizzati per eseguire backtests tardi. Ciò consente agli utenti di non hanno bisogno di specificare quale ticker sono interessati ad ogni volta che corrono un algoritmo. Questo ci permette anche di memorizzare nella cache i dati tra piste. Per impostazione predefinita, il bundle quantopian-quandl verrà utilizzato che estrae i dati da Quantopian8217s specchio del set di dati quandl WIKI. I nuovi pacchetti possono essere registrati con zipline. data. bundles. register () come: Questa funzione deve recuperare i dati di cui ha bisogno e poi utilizzare gli scrittori che sono stati passati a scrivere che i dati su disco in una posizione che zipline possa trovare in seguito. Questi dati possono essere utilizzati in backtests passando il nome come argomento --bundle - b alla Zipline correre o come argomento fascio di zipline. runalgorithm (). Per ulteriori informazioni vedi Dati Bundle per ulteriori informazioni. String supporto a Pipeline (1174) Aggiunto il supporto per i dati di stringa in pipeline. zipline. pipeline. data. Column ora accetta oggetto come DTYPE, che significa che caricatori per quella colonna dovrebbe emettere iteratori finestrate sulla nuova classe sperimentale LabelArray. Diversi nuovi metodi Classificatore sono stati aggiunti per la costruzione di istanze di filtraggio basate su operazioni sulle stringhe. I nuovi metodi sono: elementof è definito per tutti i classificatori. I restanti metodi sono definiti solo per classificatori stringa DTYPE. Miglioramenti apportati nel caricamento dei dati classi hanno interfacce più consistenti. Questo include la barra scrittori azionari, scrittore di regolazione, e scrittore di asset db. La nuova interfaccia è che la risorsa da scrivere è passato in fase di costruzione ed i dati da scrivere è previsto in seguito al metodo di scrittura come dataframes o qualche iteratore di dataframes. Questo modello ci permette di passare oggetti questi scrittore intorno come una risorsa per le altre classi e funzioni per consumare (il 1109 e il 1149). Aggiunto adesivo per zipline. pipeline. CustomFactor. fattori personalizzati possono ora essere passati un filtro su di istanze. Questo dice il fattore per calcolare solo su stock per i quali il filtro restituisce true, piuttosto che sempre calcolare sull'intero universo delle scorte. (1095) Aggiunto zipline. utils. cache. ExpiringCache. Una cache che avvolge le voci in un zipline. utils. cache. CachedObject. che gestisce scadenza di voci basate sulla dt fornita al metodo get. (1130) Implementato zipline. pipeline. factors. RecarrayField. un nuovo termine gasdotto progettato per essere il tipo di uscita di un CustomFactor con uscite multiple. (1119) Aggiunto parametro uscite opzionali a zipline. pipeline. CustomFactor. fattori personalizzate sono ora in grado di calcolo e ritorno più uscite, ciascuna delle quali sono a loro volta un fattore. (1119) Aggiunto il supporto per le colonne della pipeline stringhe DTYPE. Caricatori per thse colonne devono produrre istanze di zipline. lib. labelarray. LabelArray quando attraversate. ultima () su colonne di stringhe produce una stringa di zipline. pipeline. Classifier-DTYPE. (1174) ha aggiunto diversi metodi per la conversione di classificatori in filtri. I nuovi metodi sono: - elementof () - startswith () - endswith () - hassubstring) (- partite () elementof è definito per tutti i classificatori. I restanti metodi sono definiti solo per le stringhe. (1174) Fetcher è stata spostata dal codice interno Quantopian in Zipline (1105). Caratteristiche sperimentali caratteristiche sperimentali sono soggette a modifiche. Aggiunta una nuova classe zipline. lib. labelarray. LabelArray per la rappresentazione e di elaborazione su dati di tipo stringa con NumPy in modo efficiente. Questa classe è concettualmente simile a pandas. Categorical. in quanto rappresenta gli array di stringhe come array di indici in un (piccolo) array di valori stringa univoca. (1174) Bug Fixes evidenza aggiunto un nuovo set di dati EarningsCalendar per l'uso nel API Pipeline. (905). incrementi nella velocità AssetFinder (830 e 817). Migliorato il supporto per dtypes non galleggiare in pipeline. In particolare, ora supportiamo datetime64 e Int64 dtypes per Factor. e BoundColumn. latest ora restituisce un oggetto filtro adeguato quando la colonna è di DTYPE bool. Zipline ora supporta NumPy 1.10, panda 0,17, e SciPy 0,16 (969). trasforma batch sono stati deprecati e saranno rimossi in una versione futura. Utilizzando la storia è raccomandato come alternativa. Miglioramenti aggiunge un modo per gli utenti di fornire un manager contesto da utilizzare durante l'esecuzione delle funzioni previste (tra cui handledata). Questo gestore contesto verrà passato l'oggetto BarData per la barra e verrà utilizzata per la durata di tutte le funzioni pianificati per l'esecuzione. Questo può essere passato a TradingAlgorithm dal createeventcontext argomento chiave (828). Aggiunto il supporto per le istanze zipline. pipeline. factors. Factor con datetime64ns dtypes. (905) ha aggiunto un nuovo set di dati EarningsCalendar per l'uso nel API Pipeline. Questo set di dati fornisce un'interfaccia astratta per l'aggiunta di dati di guadagni l'annuncio di un nuovo algoritmo. Una implementazione di riferimento panda-based per questo insieme di dati può essere trovato in zipline. pipeline. loaders. earnings. ed una implementazione sperimentale fiammata-based può essere trovato in zipline. pipeline. loaders. blaze. earnings. (905). Aggiunte nuove Fattori built-in, zipline. pipeline. factors. BusinessDaysUntilNextEarnings e zipline. pipeline. factors. BusinessDaysSincePreviousEarnings. Questi fattori utilizzano il nuovo insieme di dati EarningsCalendar. (905). Aggiunto isNaN (). notnan () e isFinite () per zipline. pipeline. factors. Factor (861). zipline. pipeline. factors. Returns aggiunto. un fattore integrato che calcola la variazione percentuale in stretta prezzi nel data windowlength. (884). Aggiunto un nuovo fattore di built-in: AverageDollarVolume. (927). Fattori Aggiunto ExponentialWeightedMovingAverage e ExponentialWeightedMovingStdDev. (910). Lasciare le classi DataSet da sottoclassi dove sottoclassi ereditano tutte le colonne dal genitore. Queste colonne saranno nuove sentinelle in modo da poter registrarli un caricatore personalizzato (924). Aggiunto coerce () per costringere gli ingressi da un tipo ad un altro prima di passarli alla funzione (948). Aggiunto opzionalmente () per avvolgere le altre funzioni del preprocessore per consentire esplicitamente Nessuno (947). Aggiunto ensuretimezone () per consentire argomenti stringa per ottenere convertiti in datetime. tzinfo oggetti. Questo permette anche tzinfo oggetti da passare direttamente (947). Aggiunto due argomenti opzionali, dataquerytime e dataquerytz a BlazeLoader e BlazeEarningsCalendarLoader. Questi argomenti consentono all'utente di specificare un certo tempo di taglio per i dati durante il caricamento della risorsa. Per esempio, se voglio simulare l'esecuzione di mia funzione beforetradingstart alle 8:45 USEastern allora potrei passare datetime. time (8, 45) e USEastern per il caricatore. Ciò significa che i dati che si timestamped il, o dopo 8:45 non sarà visto in quel giorno nella simulazione. I dati saranno resi disponibili il giorno successivo (947). BoundColumn. latest ora restituisce un filtro per le colonne di DTYPE bool (962). Aggiunto il supporto per le istanze Factor con Int64 DTYPE. Colonna ora richiede un missingvalue quando DTYPE è integrale. (962) E 'inoltre ora possibile specificare i valori missingvalue personalizzato per galleggiante. appuntamento. e termini bool Pipeline. (962) Aggiunto il supporto chiusura automatica per i titoli azionari. Le posizioni detenute in una capitale che raggiunge il suo autoclosedate saranno liquidati per contanti secondo il equity8217s Ultimo prezzo di vendita. Inoltre, tutti gli ordini aperti per che l'equità saranno cancellati. Entrambi i futures e le azioni sono ora automaticamente chiusa la mattina della loro autoclosedate. immediatamente prima beforetradingstart. Caratteristiche (982) Caratteristiche sperimentali sperimentali sono soggette a modifiche. Aggiunto il supporto per le sottoclassi Factor parametri. Fattori che possono specificare params come un attributo a livello di classe che contiene una tupla di nomi di parametro. Questi valori vengono poi accettate dal costruttore e inoltrate in base al nome alla funzione di calcolo factor8217s. Questa API è sperimentale, e potrebbe cambiare nelle versioni future. Bug Fixes correggere un problema che potrebbe causare il metodo di caching dailyminutely per modificare la lunghezza di un oggetto SIDData. Questo ci causerebbe a pensare che l'oggetto non era vuota anche quando era (826). Risolve un errore di rilievo nel calcolo beta quando i dati di riferimento sono scarne. Invece numpy. nan viene restituito (859). Corretto un problema sentinella decapaggio () oggetti (872). avvertenze spuri fissi sul primo download dei dati proprie (: emissione 922). Corretti i messaggi di errore per setcommission () e setslippage () quando viene utilizzato al di fuori della funzione di inizializzazione. Questi errori chiamate le funzioni prevalgono invece di set. Questo anche rinominato i tipi di eccezione sollevate da OverrideSlippagePostInit e OverrideCommissionPostInit a SetSlippagePostInit e SetCommissionPostInit (923). Risolto un problema nella CLI che causerebbe beni da aggiungere due volte. Ciò mappare lo stesso simbolo per due SIDS diversi (942). Risolto un problema in cui il PerformancePeriod riportato in modo errato il totalpositionsvalue durante la creazione di un account (950). Problemi risolti intorno KeyErrors provenienti dalla storia e BarData a 32 bit di pitone, in cui le attività non si confrontano correttamente con int64s (959). Corretto un bug in cui gli operatori booleani non sono state attuate correttamente il filtro (991). Installazione di zipline non retrocede NumPy a 1.9.2 in silenzio e senza condizioni (969). Prestazioni Velocità fino lookupsymbol () con l'aggiunta di una estensione, AssetFinderCachedEquities. che carica i titoli azionari in dizionari e poi dirige lookupsymbol () per questi dizionari per trovare corrispondenti titoli azionari (830). Miglioramento delle prestazioni di lookupsymbol () eseguendo query batch. (817). database di manutenzione e refactoring Asset ora contengono informazioni sulla versione per garantire la compatibilità con la versione Zipline corrente (815). Aggiornamento versione richieste di 2.9.1 (2ee40db) versione logbook aggiornamento a 0.12.5 (11465d9). Aggiornamento versione Cython a 0.23.4 (5f49fa2). Rende zipline installare requisiti più flessibili (825). Utilizzare versioneer per gestire la versione del progetto e la versione setup. py (829). Fisso integrazione tute su Travis build (840). Fisso costruire Conda, che ora utilizza sorgente git come sua fonte e legge i requisiti utilizzando setup. py, invece di copiare loro e permettendo loro di ottenere fuori sincrono (937). Richiede setuptools gt 18,0 (951). Documentazione documento il processo di rilascio per gli sviluppatori (835). Documenti di riferimento aggiunto per l'API Pipeline. (864). Documenti di riferimento aggiunto per asset metadati API. (864). documentazione generata ora include collegamenti a codice sorgente di molte classi e funzioni. (864). Aggiunta documentazione specifica per la piattaforma che descrive come trovare le dipendenze binarie. (883). Varie Aggiunto un metodo showgraph () per rendere un Pipeline come immagine (836). Aggiunge subtest () decoratrice per la creazione di prove secondarie senza noseparameterized. expand (), che contribuisce ad appesantire l'uscita di test (833). Limiti rapporto timer in uscita di test a 15 prove più lunghe (838). Tesoro e download di riferimento ora attendere fino a un'ora per scaricare di nuovo se i dati restituiti da una fonte remota non si estende alla data prevista. (841). Aggiunto uno strumento di declassare le attività db alle versioni precedenti (941). Rilasciare 0.8.3 In evidenza sistema di documentazione con un nuovo sito web zipline. io importanti miglioramenti delle prestazioni. la storia dinamica. Nuovo utente metodo definito: beforetradingstart. Nuova funzione API: schedulefunction (). Nuova funzione API: getEnvironment (). Nuova funzione API: setmaxleverage (). Nuova funzione API: setdonotorderlist (). Pipeline API. Il supporto per i futures trading. Miglioramenti oggetto account: aggiunge un oggetto account per contesto per tenere traccia delle informazioni relative al conto di trading. Esempio: restituisce il valore in denaro costante che viene memorizzato sul oggetto account. Questo valore viene aggiornato di conseguenza come algoritmo viene eseguito (396). HistoryContainer ora può crescere in modo dinamico. Chiamate alla storia () saranno ora in grado di aumentare le dimensioni o modificare la forma del contenitore storia per essere in grado di servire la chiamata. addhistory () ora agisce come un suggerimento preformance di pre-allocare spazio sufficiente nel contenitore. Questo cambiamento è compatibile con la storia. tutti gli algoritmi esistenti dovrebbero continuare a funzionare come previsto (412). trasforma semplici porting dalla storia quantopian e utilizzo. SIDData ha ora metodi per: Questi metodi, tranne per i ritorni. accettare un certo numero di giorni. Se si esegue con i dati minuto, allora questo calcolerà il numero di minuti in quei giorni, la contabilità per i primi si chiude e l'ora corrente e applicare la trasformazione sul set di minuti. i rendimenti non accetta parametri e restituirà i rendimenti giornalieri del bene dato. Esempio: I nuovi campi in Periodo di performance. Periodo di Performance ha nuovi campi accessibili nel valore di ritorno della todict. - Leva lordo - leva finanziaria netta - breve esposizione - lunga esposizione - contano corti - contano anela (464). Lasciare orderpercent () per lavorare con diversi valori di mercato (da Geremia Lowin). Attualmente, orderpercent () e ordertargetpercent () sia operare come percentuale del self. portfolio. portfoliovalue. Questo PR permette loro di operare come percentuali di altri MV importanti. aggiunge anche context. getmarketvalue (). che consente questa funzionalità. Per esempio: l'opzione di comando linea per la stampa algo stdout (di Andrea D8217Amore) (545). Nuovo utente definito funzione beforetradingstart. Questa funzione può essere sovrascritta dall'utente per essere chiamata una volta prima che il mercato si apre tutti i giorni (389). Nuova funzione API schedulefunction (). Questa funzione consente all'utente di programmare una funzione da chiamare in base a regole più complicate circa la data e l'ora. Ad esempio, chiamare la funzione di 15 minuti prima che la chiusura del mercato rispettando primi chiude (411). Nuova funzione API setdonotorderlist (). Questa funzione accetta un elenco di beni e aggiunge una guardia di trading che impedisce l'algoritmo da loro negoziazione. Aggiunge un punto di lista in lista tempo di ETF leveraged che le persone possono desidera contrassegnare come 8216do non trade8217 (478). Aggiunge una classe per rappresentare i titoli. ordine () e altre funzioni di ordine ora richiedono un caso di sicurezza, invece di un int o una stringa (520). Generalizzare la classe di protezione di asset. Questo è in preperation di aggiungere il supporto per altri tipi di asset (535). Nuova funzione API getEnvironment (). Questa funzione di default restituisce la zipline stringa. Questo è usato in modo che gli algoritmi possono avere un comportamento diverso su Quantopian e zipline locale (384). Estende getEnvironment () per esporre più dell'ambiente per l'algoritmo. La funzione ora accetta un argomento che è il campo di tornare. Per impostazione predefinita, questa è la piattaforma che restituisce il vecchio valore di zipline, ma i seguenti nuovi campi può essere richiesto: Arena. È questo live di trading o backtesting datafrequency. È questa modalità minuto o di avvio della modalità giornaliera. Simulazione data di inizio. fine. Simulazione fine data. capitalbase. Il capitale iniziale per la simulazione. piattaforma. La piattaforma che l'algoritmo è in esecuzione. . Un dizionario contenente tutti questi campi. Nuova funzione API setmaxleveraged (). Questo metodo aggiunge una guardia di trading che impedisce l'algoritmo da oltre leva stessa (552). Caratteristiche sperimentali caratteristiche sperimentali sono soggette a modifiche. Aggiunge nuova API Pipeline. L'API pipeline è un API dichiarativa di alto livello per la rappresentazione finali calcoli finestra su grandi serie di dati (630). Aggiunge il supporto per la negoziazione dei futures (637). Aggiunge Pipeline loader per le espressioni fiammata. Ciò consente agli utenti di estrarre i dati da qualsiasi formato fiammata capisce e lo usano nelle API Pipeline. (775). Correzioni di bug correggere un bug in cui i rendimenti riportati potrebbero drasticamente immergere per lunghi periodi di tempo casuali (378). Correggere un bug che impediva debugger dal risolvere il file di algoritmo (431). Correttamente valere argomenti alla funzione di inizializzazione definito dall'utente (687). Correggere un bug che causerebbe i dati di tesoreria da redownloaded ogni backtest tra mezzanotte EST e il momento in cui i dati di tesoreria erano disponibili (793). Correggere un bug che causerebbe l'utente definito funzione di analisi di non essere chiamato se fosse passata come un argomento parola chiave per TradingAlgorithm (819). Prestazioni importanti miglioramenti delle prestazioni per la storia (di Dale Jung) (488). Manutenzione e refactoring Togliere semplice trasformare il codice. Questi sono disponibili come metodi SIDData (550). interfaccia a riga di evidenza Comando da eseguire direttamente algoritmi. zipline IPython magia che gira algoritmo definito in una cella notebook IPython. Metodi API per garanzie edificio contro l'ordinazione di instabilità e di posizioni corte indesiderate. Nuova funzione di cronologia () per ottenere un dataframe mobile di dati di mercato del passato (sostituisce BatchTransform). Un nuovo tutorial per principianti. Miglioramenti CLI: aggiunge un CLI e magia IPython per zipline. Esempio: Grabs i dati provenienti da Yahoo Finance, corre il file dualmovingavg. py (e cerca dualmovingavganalyze. py che, se trovato, sarà eseguito dopo l'algoritmo è stato eseguito), ed emette il dataframe perf a dma. pickle (325) . IPython comando magico (nella parte superiore di una cella notebook IPython). Esempio: Fa lo stesso come sopra, tranne invece di eseguire il file sembra per l'algoritmo nella cella e, invece di emettere il perf df in un file, crea una variabile nello spazio dei nomi chiamato perf (325). Aggiunge controlli di negoziazione per l'API algoritmo. Le seguenti funzioni sono ora disponibili sul TradingAlgorithm e per algo script: setmaxordersize (self, sidNone, maxsharesNone, maxnotionalNone) Impostare un limite alla grandezza assoluta, in azioni Andor valore totale in dollari, di ogni singolo ordine da questo algoritmo per un dato sid . Se sid è None, allora la regola viene applicata a qualsiasi ordine effettuato dall'algoritmo. Esempio: setmaxpositionsize (self, sidNone, maxsharesNone, maxnotionalNone) - Impostare un limite alla grandezza assoluta, sia in azioni o valore in dollari, di qualsiasi posizione detenuta dal algoritmo per un dato sid. Se sid è None, allora la regola viene applicata a qualsiasi posizione detenuta dall'algoritmo. Esempio: setlongonly (auto) Impostare una regola che specifica che l'algoritmo non può detenere posizioni corte. Esempio: Aggiunge un classmethod allapimethods su TradingAlgorithm che restituisce un elenco di tutti i metodi TradingAlgorithm API (333). record di espanso () funzionalità per la denominazione dinamica. La funzione di registrazione () può ora prendere args posizionali prima dei kwargs. Tutti uso originale e la funzionalità è la stessa, ma ora questi usi aggiuntivi funzionano: I requisiti sono semplicemente che i args poritional si verificano solo prima che i kwargs (355). la storia () è stato portato da Quantopian a zipline e fornisce la finestra di dati di mercato in movimento. storia () sostituisce BatchTransform. E 'più veloce, funziona per i dati di livello minuto ed ha un'interfaccia superiore. Per usarlo, chiamare addhistory () all'interno di initialize () e poi riceverà un dataframe panda chiamando storia () dall'interno handledata (). Controlla il tutorial e un esempio. (345 e 357). Storia () supporta ora le lunghezze delle finestre 1m (345). Correzioni Bug fix allineamento dei giorni di negoziazione e aperta e si chiude in ambiente di trading (331). RollingPanel risolvere quando addingdropping nuovi campi (349). Prestazioni Manutenzione e refactoring rimossi HDF5 non documentata e non testato e fonti di dati CSV (267). simparams refactoring (352). Refactoring della storia (340). Le seguenti dipendenze sono stati aggiornati (zipline potrebbe funzionare anche con altre versioni troppo): evidenziare i principali fissa rischiare calcoli, vedere la sezione Bug Fixes. Porto di funzione di cronologia (), vedere la sezione Miglioramenti Inizio di supporto per Quantopian algoritmo script sintassi, vedere la sezione ENH. Conda gestore di pacchetti di supporto, vedi Costruire sezione. Miglioramenti elaborano sempre nuovi ordini cioè su bar dove handledata isn8217t chiamato, ma non vi sono dati 8216clock8217 es un punto di riferimento costante, gli ordini di processo. posizioni vuote sono ora filtrati dal contenitore portafoglio. Per aiutare a prevenire gli algoritmi di operare su posizioni che non sono nell'universo attuale delle scorte. In precedenza, l'iterazione di posizioni sarebbe tornato posizioni per gli stock oggetto avuto zero azioni possedute. (Dove un controllo esplicito nel codice algoritmo per pos. amount 0 potrebbe impedire di utilizzare una posizione inesistente.) Aggiungere il calendario di negoziazione per BMFampBovespa. Aggiungere all'inizio del supporto di script algo. Inizia il percorso di parità con la sintassi di script in Quantopian8217s IDE Esempio quantopian: Add fonti HDF5 e CSV. Limitare handledata a volte con dati di mercato. Per evitare che i casi in cui i tipi di dati personalizzati avevano timestamp non allineati, solo chiamare handledata quando i dati di mercato passa attraverso. dati personalizzati che viene prima di dati di mercato saranno ancora aggiornare la barra dati. Ma il trattamento di tali dati sarà fatto solo quando vi è dati di mercato attuabili. Estesa commissione metodo PerShare per consentire un costo minimo per il commercio. Aggiungere la funzione simbolo API Una funzione di ricerca simbolo () è stato aggiunto al Quantopian. Aggiungendo la stessa funzione API alla Zipline possiamo fare copyamppasting di un Zipline algo a Quantopian più facile. Aggiungere simulato fonte commercio casuale. Aggiunta una nuova fonte di dati che emette gli eventi con certa frequenza specificato dall'utente (minuto o giornaliera). Ciò consente agli utenti di backtest ed eseguire il debug di un algoritmo in modalità minuto per fornire un percorso più pulito verso Quantopian. Rimuovere dipendenza da punto di riferimento per il calendario giorno di negoziazione. Invece dell'indice benchmarks8217, il calendario di negoziazione è ora utilizzato per popolare i giorni di negoziazione environment8217s. Rimuovere campo extradate, dal momento che a differenza della lista di riferimento, il calendario di trading in grado di generare le date future, in modo da le date per il commercio di giorno corrente non hanno bisogno di essere aggiunto. Motivazioni: La sorgente per il calendario aperto e closeearly vicino e il calendario giorno di negoziazione è ora lo stesso, che dovrebbe aiutare a prevenire potenziali problemi dovuti al disallineamento. Consente configurazioni in cui il punto di riferimento è fornito come fonte di dati generatore basato al bisogno di fornire un secondo elenco di riferimento solo per popolare le date. Storia Port () metodo API da Quantopian. Apre il nucleo della funzione di cronologia (), che in precedenza era disponibile solo sulla piattaforma Quantopian. Il metodo la storia è analoga aperta al functiondecorator batchtransform, ma con una specifica si spera più precisa della frequenza e del periodo dei dati barra precedente che viene catturato. Esempio di utilizzo: N. B. questa versione della storia manca della capacità di riempimento che permette il ritorno a dataframe completo al primo bar. Bug Fixes Regolare eventi di riferimento per soddisfare le ore di mercato (241). In precedenza gli eventi di riferimento sono stati emessi alle 0:00 il giorno in cui il punto di riferimento relativi a: nella modalità di emissione 8216minute8217 questo ha fatto sì che i parametri di riferimento sono stati emessi prima di ogni attività intra-day sono stati elaborati. Assicurarsi statistiche perf vengono generati per tutti i giorni Quando si esegue con emissioni minuziosamente il simulatore dovrebbe riferire per l'utente che ha simulato 8216n - 18,217 mila giorni (dove n è il numero di giorni di cui al params simulazione). Ora il numero corretto di giorni di negoziazione sono segnalati come essere simulato. Fix repr for cumulative risk metrics. The repr for RiskMetricsCumulative was referring to an older structure of the class, causing an exception when printed. Also, now prints the last values in the metrics DataFrame. Prevent minute emission from crashing at end of available data. The next day calculation was causing an error when a minute emission algorithm reached the end of available data. Instead of a generic exception when available data is reached, raise and catch a named exception so that the tradesimulation loop can skip over, since the next market close is not needed at the end. Fix pandas indexing in trading calendar. This could alternatively be filed under Performance. Index using loc instead of the inefficient index-ing of day, then time. Prevent crash in vwap transform due to non-existent member. The WrongDataForTransform was referencing a self. fields member, which did not exist. Add a self. fields member set to price and volume and use it to iterate over during the check. Fix max drawdown calculation. The input into max drawdown was incorrect, causing the bad results. i. e. the compoundedlogreturns were not values representative of the algorithms total return at a given time, though calculatemaxdrawdown was treating the values as if they were. Instead, the algorithmperiodreturns series is now used, which does provide the total return. Fix cost basis calculation. Cost basis calculation now takes direction of txn into account. Closing a long position or covering a short shouldn8217t affect the cost basis. Fix floating point error in order(). Where order amounts that were near an integer could accidentally be floored or ceilinged (depending on being postive or negative) to the wrong integer. per esempio. an amount stored internally as -27.99999 was converted to -27 instead of -28. Update perf period state when positions are changed by splits. Otherwise, self. positionamounts will be out of sync with position. amount, etc. Fix misalignment of downside series calc when using exact dates. An oddity that was exposed while working on making the return series passed to the risk module more exact, the series comparison between the returns and mean returns was unbalanced, because the mean returns were not masked down to the downside data points however, in most, if not all cases this was papered over by the call to. valid() which was removed in this change set. Check that self. logger exists before using it. self. logger is initialized as None and there is no guarantee that users have set it, so check that it exists before trying to pass messages to it. Prevent out of sync market closes in performance tracker. In situations where the performance tracker has been reset or patched to handle state juggling with warming up live data, the marketclose member of the performance tracker could end up out of sync with the current algo time as determined by the performance tracker. The symptom was dividends never triggering, because the end of day checks would not match the current time. Fix by having the tradesimulation loop be responsible, in minuteminute mode, for advancing the market close and passing that value to the performance tracker, instead of having the market close advanced by the performance tracker as well. Fix numerous cumulative and period risk calculations. The calculations that are expected to change are: cumulative. beta cumulative. alpha cumulative. information cumulative. sharpe period. sortino How Risk Calculations Are Changing Risk Fixes for Both Period and Cumulative Use sample instead of population for standard deviation. Add a rounding factor, so that if the two values are close for a given dt, that they do not count as a downside value, which would throw off the denominator of the standard deviation of the downside diffs. Standard Deviation Type Across the board the standard deviation has been standardized to using a 8216sample8217 calculation, whereas before cumulative risk was mostly using 8216population8217. Using ddof1 with np. std calculates as if the values are a sample. Cumulative Risk Fixes Use the daily algorithm returns and benchmarks instead of annualized mean returns. Use sample instead of population with standard deviation. The volatility is an input to other calculations so this change affects Sharpe and Information ratio calculations. The benchmark returns input is changed from annualized benchmark returns to the annualized mean returns. The benchmark returns input is changed from annualized benchmark returns to the annualized mean returns. Period Risk Fixes Now uses the downside risk of the daily return vs. the mean algorithm returns for the minimum acceptable return instead of the treasury return. The above required adding the calculation of the mean algorithm returns for period risk. Also, uses algorithmperiodreturns and tresauryperiodreturn as the cumulative Sortino does, instead of using algorithm returns for both inputs into the Sortino calculation. Performance Removed aliasdt transform in favor of property on SIDData. Adding a copy of the Event8217s dt field as datetime via the aliasdt generator, so that the API was forgiving and allowed both datetime and dt on a SIDData object, was creating noticeable overhead, even on an noop algorithms. Instead of incurring the cost of copying the datetime value and assigning it to the Event object on every event that is passed through the system, add a property to SIDData which acts as an alias datetime to dt. Eventually support for datafoo. datetime may be removed, and could be considered deprecated. Remove the drop of 8216null return8217 from cumulative returns. The check of existence of the null return key, and the drop of said return on every single bar was adding unneeded CPU time when an algorithm was run with minute emissions. Instead, add the 0.0 return with an index of the trading day before the start date. The removal of the null return was mainly in place so that the period calculation was not crashing on a non-date index value with the index as a date, the period return can also approximate volatility (even though the that volatility has high noise-to-signal strength because it uses only two values as an input.) Maintenance and Refactorings Allow simparams to provide data frequency for the algorithm. In the case that datafrequency of the algorithm is None, allow the simparams to provide the datafrequency . Also, defer to the algorithms data frequency, if provided. Added support for building and releasing via conda For those who prefer building with conda. pydata. org to compiling locally with pip. The following should install Zipline on many systems.

No comments:

Post a Comment