Scikits. timeseries-modulen genomgår inte längre aktiv utveckling. Det finns en enastående lista över fel som sannolikt inte kommer att lösas. Planen är att kärnfunktionen i denna modul ska implementeras i pandor. Om du vill se den här modulen leva på oberoende av pandor, var god att gaffla koden och ta den över. Scikits. timeseries-modulen ger klasser och funktioner för att manipulera, rapportera och plotta tidsserier av olika frekvenser. Fokus ligger på bekväm dataåtkomst och manipulation samtidigt som man utnyttjar den befintliga matematiska funktionaliteten i numpy och scipy. Om följande scenarier låter bekanta för dig så kommer du sannolikt att hitta scikits. timeseries modulen användbar: Jämför många tidsserier med olika dataområden (t. ex. aktiekurser) Skapa tidsserieplottor med tydligt åtskilda axelmarkeringar Konvertera en daglig tidsserie till månadsvis genom att ta medeltalet under varje månad Arbeta med data som saknar värden Bestäm sista arbetsdag för föregående månadskvartal för rapporteringsändamål Beräkna en rörlig standardavvikelse effektivt Det här är bara några av de scenarier som görs mycket enkla med scikitsna . DocumentationZipline är ett pythonalt algoritmiskt handelsbibliotek. Det är ett händelsestyrt system som stöder både backtesting och live-trading. Zipline används för närvarande i produktion som backtesting och live-trading motor som driver Quantopian 8211 en fri, community-centrerad, värd plattform för att bygga och genomföra handelsstrategier. Användarvänlighet: Zipline försöker komma ur vägen så att du kan fokusera på algoritmutveckling. Se nedan för ett kodexempel. Zipline kommer 8220batterier included8221 så många gemensamma statistik som glidande medelvärde och linjär regression kan lätt nås från en användarskriven algoritm. Inmatning av historiska data och resultat från prestationsstatistik baseras på Pandas DataFrames för att integrera snyggt i det befintliga PyData-ekosystemet. Statistik - och maskininlärningsbibliotek som matplotlib, scipy, statsmodeller och sklearn stödjer utveckling, analys och visualisering av toppmoderna handelssystem. Installation Installera med pip Om du antar att du har alla nödvändiga (se notering nedan), kan du installera Zipline med pip via: Obs! Installera Zipline via pip är lite mer involverad än det genomsnittliga Python-paketet. Helt enkelt kör pip installera zipline kommer sannolikt att misslyckas om you8217ve aldrig installerat några vetenskapliga Python-paket innan. Det finns två skäl till den extra komplexiteten: Zipline skickar flera C-tillägg som kräver åtkomst till CPython C API. För att bygga C-förlängningarna behöver pip ha tillgång till CPython-huvudfilerna för din Python-installation. Zipline beror på numpy. kärnbiblioteket för numerisk array-databehandling i Python. Numpy beror på att LAPACK linjära algebra rutiner finns tillgängliga. Eftersom LAPACK och CPython-topparna är binära beroenden varierar rätt sätt att installera dem från plattform till plattform. På Linux förvärvar användarna generellt dessa beroenden via en pakethanterare som apt. yum. eller pacman. På OSX är Homebrew ett populärt val som ger liknande funktioner. Se fullständig Zipline-installationsdokumentation för mer information om hur du köper binära beroenden för din specifika plattform. Ett annat sätt att installera Zipline är via conda-paketschefen, som kommer som en del av Anaconda eller kan installeras via pip install conda. När du har installerat kan du installera Zipline från vår Quantopian-kanal: För närvarande stöds plattformar: Quickstart ContributionsRelease Notes 8 september 2016 Förbättringar Lägger till framåtfyllnings kontrollpostbord för flaskkodsladaren. Detta gör det möjligt för lastaren att mer effektivt vidarebefordra fylla data genom att capping det lägre datumet som det måste söka efter när du frågar data. Kontrollpunkterna ska ha nya deltagare (1276). Uppdaterad VagrantFile för att inkludera alla dev-krav och använda en nyare bild (1310). Låt korrelationer och regressioner beräknas mellan två 2D-faktorer genom att göra beräkningar asset-wise (1307). Filter har som standard gjorts windowsafe. Nu kan de vidarebefordras som argument till andra filter, faktorer och klassificerare (1338). Lades till en valfri groupby parameter till rang (). topp(). och botten (). (1349). Lades till nya pipelinefilter, allt och alla. som tar ett annat filter och returnerar True om en tillgång producerade en True för några dagar under de föregående fönsterlängdsdagarna (1358). Tillagde nytt pipelinefilter AtLeastN. som tar ett annat filter och en int N och returnerar True om en tillgång producerade True på N eller flera dagar under de föregående fönsterlängdsdagarna (1367). Använd externt bibliotek empiriskt för riskberäkningar. Empyrical förenar riskmetriska beräkningar mellan pyfolio och ziplin. Empyrical lägger till anpassade årliga alternativ för avkastning av anpassade frekvenser. (855) Lägg till Aroon faktor. (1258) Lägg till snabb stokastisk oscillatorfaktor. (1255) Lägg till en Dockerfil. (1254) Ny handelskalender som stöder sessioner som sträcker sig över midnatt, t. ex. 24 timmar 6:01 - 6:00 PM sessioner för terminshandel. zipline. utils. tradingcalendar är nu avskriven. (1138) (1312) Tillåt skivning av en enda kolumn ur en FactorFilterClassifier. (1267) Ge Ichimoku Cloud-faktor (1263) Tillåt standardparametrar på pipeline villkor. (1263) Ange förändringsfrekvensfaktor. (1324) Ge en linjärt vägd rörlig medelfaktor. (1325) Lägg till NotNullFilter. (1345) Tillåt att kapitaländringar definieras av ett målvärde. (1337) Lägg till TrueRange-faktor. (1348) Lägg till punkt i tidsuppslag till tillgångar. db. (1361) Gör cantrade medveten om tillgång8217s utbyte. (1346) Lägg till downsample-metoden för alla beräknade villkor. (1394) Lägg till QuantopianUSFuturesCalendar. (1414) Aktivera publicering av gamla assets. db versioner. (1430) Aktivera schemaläggningsfunktion för Futures trading kalender. (1442) Tillåta regressioner av längd 1. (1466) Experimentellt Lägg till stöd för kommande Future och Equity historia fönster, och aktivera andra Framtida dataåtkomst via dataportalen. (1435) (1432) Buggfixar ändringar AverageDollarVolume inbyggd faktor för att behandla saknade slut - eller volymvärden som 0. Tidigare avlägsnades NaNs enkelt före medelvärdet, vilket gav de återstående värdena för mycket vikt (1309). Ta bort riskfri ränta från beräkning av skarpt förhållande. Kvoten är nu genomsnittet av riskjusterad avkastning över kränkbarhet av justerad avkastning. (853) Sortino-förhållandet kommer att returnera beräkningen istället för np. nan när den erfordrade avkastningen är lika med noll. Kvoten returnerar nu genomsnittet av riskjusterad avkastning mot nedåtrisk. Fasta misslabeled API genom att konvertera mar till downsiderisk. (747) Risken för nackdelen returnerar nu kvadratroten av medelvärdet av skillnaderna i nackdelen. (747) Informationskvot uppdaterad för att returnera medelvärdet av riskjusterad avkastning över standardavvikelsen för riskjusterad avkastning. (1322) Alfa och sharpe-förhållandet är nu årlig. (1322) Fix enheter under läsning och skrivning av den dagliga baren firsttradingday attributet. (1245) Valfria leveransmoduler, när de saknas, orsakar inte längre en NameError. (1246) Behandla schematfunktionsargument som en tidsregel när en tidsregel, men ingen datumregel levereras. (1221) Skydda mot gränsvillkor vid början och slutdagen i schemalagd funktion. (1226) Använd justeringar till föregående dag när du använder historia med en frekvens på 1d. (1256) Fel snabbt på ogiltiga pipeline kolumner, istället för att försöka komma åt den obefintliga kolumnen. (1280) Fix AverageDollarVolume NaN hantering. (1309) Prestandaförbättringar till flaskkärnlastare. (1227) Tillåt samtidiga blåsfrågor. (1323) Förhindra att du saknar ledande bcolz-minutdata från att göra upprepade onödiga uppslag. (1451) Cache framtida kedjans uppslag. (1455) Underhåll och refactorings Ta bort återstående anmärkningar av addhistory. (1287) Dokumentation Lägg till testfixtur som källar dagligen prissättning data från minut prissättning data fixtures. (1243) Ändringar av dataformat BcolzDailyBarReader och BcolzDailyBarWriter använder handelskalenderinstans istället för handelsdagar serialiserade till JSON. (1330) Ändra format för assets. db för att stödja tidpunktsuppslag. (1361) Byt BcolzMinuteBarReaderand BcolzMinuteBarWriter för att stödja olika tikstorlekar. (1428) Release 1.0.1 Detta är en mindre buggfix-release från 1.0.0 och innehåller ett litet antal buggfixar och dokumentationsförbättringar. Förbättringar Tillagt stöd för användardefinierade kommissionsmodeller. Se zipline. financemissionmissionModel-klassen för mer information om genomförande av en kommissionsmodell. (1213) Tillagt stöd för icke-flytande kolumner till Blaze-backed Pipeline dataset (1201). Lades till zipline. pipeline. slice. Slice. en ny pipeline term som är utformad för att extrahera en enda kolumn från en annan term. Skivor kan skapas genom att indexera till en term, som anges av tillgången. (1267) Buggfixar Fixade ett fel där pipelastare inte initialiserades korrekt av zipline. runalgorithm (). Detta påverkar också invokationer av zipline-körning från CLI. Fixat en bugg som orsakade zipline IPython cell magi att misslyckas (533233fae43c7ff74abfb0044f046978817cb4e4). Fixat ett fel i PerTrade-kommissionens modell där provisionerna felaktigt tillämpades på varje delfyllning av en order i stället för själva ordern, vilket resulterade i att algoritmer belastades för mycket i provisioner vid beställning av stora order. PerTrade tillämpar nu korrekt provisioner per order (1213). Attributstillgångar på CustomFactors som definierar flera utgångar kommer nu att returnera en utmatningsskiva korrekt när utdata också är namnet på en faktormetod (1214). Replaced deprecated användning av pandas. io. data med pandasdatareader (1218). Fixade ett problem där. pyi-stubfiler för zipline. api uteslutes av misstag från PyPI-källfördelningen. Conda-användare ska vara opåverkade (1230). Dokumentation Lades till ett nytt exempel, zipline. examples. momentumpipeline. som utövar pipeline API (1230). Höjdpunkter Zipline 1.0 Rewrite (1105) Vi har omskrivit mycket Zipline och dess grundläggande begrepp för att förbättra runtime prestanda. Samtidigt introducerade we8217ve flera nya API. På en hög nivå drog tidigare versioner av Zipline-simuleringar från en multiplexerad datakälla, som slogs samman via heapq. Denna ström matades till huvudsimuleringsslingan och kör klockan framåt. Detta starka beroende av att läsa all data gjorde det svårt att optimera simuleringsprestanda eftersom det inte fanns någon koppling mellan mängden data som vi hämtade och mängden data som faktiskt användes av algoritmen. Nu hämtar vi bara data när algoritmen behöver det. En ny klass, DataPortal. skickar dataförfrågningar till olika datakällor och returnerar de begärda värdena. Detta gör runtime för en simuleringsskala mycket närmare med algoritmens komplexitet, snarare än med antalet tillgångar som tillhandahålls av datakällorna. I stället för dataströmmen som kör klockan, simuleras nu simuleringar genom en förberäknad uppsättning dag - eller minuttidstämplar. Tidstämplarna avges av MinuteSimulationClock och DailySimulationClock. och förbrukas av huvudslingan i transformen (). We8217ve pensionerade datasidans (N) och History APIs, ersätter dem med flera metoder på BarData-objektet: Current (). historia(). cantrade (). och isstale (). Gamla API: er kommer att fortsätta att fungera för nu, men kommer att utfärda depreceringsvarningar. Du kan nu passera i en justeringskälla till DataPortal. och vi kommer att tillämpa justeringar av prisuppgifterna när vi tittar bakåt i data. Priser och volymer för utförande och presenteras för algoritmen i data. current är tillgångens as-traded värde. Nya inträdespunkter (1173 och 1178) För att göra det enklare att använda zipline har vi uppdaterat inmatningspunkterna för en backtest. De tre stödjande sätten att köra en backtest är nu: zipline. runalgo () zipline run zipline (IPython Magic) Data Bundles (1173 och 1178) 1.0.0 introducerar dataknippen. Dataknippen är datagrupper som bör förinstalleras och användas för att köra backtest senare. Detta gör att användare inte behöver ange vilka tickers de är intresserade av varje gång de kör en algoritm. Detta gör det också möjligt för oss att cache data mellan körningar. Som standard används quantopian-quandl-buntet som drar data från Quantopian8217s spegel av Quandl WIKI dataset. Nya buntar kan registreras med zipline. data. bundles. register () som: Den här funktionen ska hämta de data som behövs och använd sedan de skribenter som har skickats för att skriva den data till skivan på en plats som zipline kan hitta senare. Dessa data kan användas i backtests genom att skicka namnet som - b-bundle argument till zipline run eller som bunt argument till zipline. runalgorithm (). För mer information se Data Bundles för mer information. String Support in Pipeline (1174) Tillagt stöd för strängdata i Pipeline. zipline. pipeline. data. Column accepterar nu objekt som en dtyp, vilket innebär att laddare för den kolumnen ska avge fönsterhåriga iteratorer över den experimentella nya LabelArray-klassen. Flera nya klassificeringsmetoder har också lagts till för att konstruera filterinstanser baserat på strängoperationer. De nya metoderna är: elementof definieras för alla klassificatorer. De återstående metoderna definieras bara för string-dtype-klassificatorer. Förbättringar Gjorde dataladingsklasserna har mer konsekventa gränssnitt. Detta inkluderar aktiebarneförfattare, justeringsskrivare och tillgång db-författare. Det nya gränssnittet är att resursen som ska skrivas till överförs vid byggtiden och data som skrivs tillhandahålls senare till skrivmetoden som dataframe eller en del iterator av dataframe. Denna modell tillåter oss att skicka dessa författarobjekt runt som en resurs för andra klasser och funktioner att konsumera (1109 och 1149). Tillagd maskering till zipline. pipeline. CustomFactor. Anpassade faktorer kan nu skickas till ett filter vid instansiering. Detta berättar faktorn att endast beräkna över lagren för vilka filtret returnerar True, istället för att alltid beräkna över hela universum av lager. (1095) Lades till zipline. utils. cache. ExpiringCache. En cache som omsluter poster i en zipline. utils. cache. CachedObject. som hanterar utgången av poster baserat på den dt som levereras till get-metoden. (1130) Implementerade zipline. pipeline. factors. RecarrayField. en ny pipeline term som är utformad för att vara utgångstypen för en CustomFactor med flera utgångar. (1119) Tillagda valfria utdataparametrar till zipline. pipeline. CustomFactor. Anpassade faktorer kan nu beräkna och returnera flera utgångar, vilka var och en är själva en faktor. (1119) Tillagt stöd för pipeline-kolonner med strängdyp. Laddare för dessa kolumner ska producera instanser av zipline. lib. labelarray. LabelArray när de kryssas. senaste () på strängkolumner producerar en string-dtype zipline. pipeline. Classifier. (1174) Lades till flera metoder för att konvertera klassificeringsmedel till filter. De nya metoderna är: - elementof () - startswith () - endswith () - hassubstring () - matches () elementof definieras för alla klassificatorer. De återstående metoderna definieras bara för strängar. (1174) Fetcher har flyttats från Quantopian intern kod till Zipline (1105). Experimentella egenskaper Experimentella egenskaper kan komma att ändras. Lades till en ny zipline. lib. labelarray. LabelArray klass för att effektivt representera och beräkna på strängdata med numpy. Denna klass är begreppsmässigt lik pandas. Categorical. genom att det representerar strängarrayer som arrayer av index till en (mindre) grupp av unika strängvärden. (1174) Buggfixar Höjdpunkter Lades till ett nytt EarningsCalendar dataset för användning i Pipeline API. (905). AssetFinder Speedups (830 och 817). Förbättrat stöd för icke-flytande dtyp i pipeline. Mest viktigt, vi stöder nu datetime64 och int64 dtypes för Factor. och BoundColumn. latest returnerar nu ett korrekt filterobjekt när kolumnen är av dtype bool. Zipline stöder nu numpy 1,10, pandas 0,17 och scipy 0,16 (969). Batchtransformationer har avlägsnats och kommer att tas bort i en framtida release. Användning av historia rekommenderas som ett alternativ. Förbättringar Lägger till ett sätt för användare att tillhandahålla en kontexthanterare att använda när man utför de schemalagda funktionerna (inklusive hanteringsdata). Denna kontexthanterare kommer att passera BarData-objektet för stapeln och kommer att användas under hela tiden för alla funktioner som ska schemaläggas. Detta kan överföras till TradingAlgorithm med sökordet argument createeventcontext (828). Lagt till stöd för zipline. pipeline. factors. Factor instanser med datetime64ns dtypes. (905) Lades till ett nytt EarningsCalendar dataset för användning i Pipeline API. Denna dataset tillhandahåller ett abstrakt gränssnitt för att lägga till resultatinformation till en ny algoritm. En pandasbaserad referensimplementering för denna dataset finns i zipline. pipeline. loaders. earnings. och en experimentell brandbaserad implementering finns i zipline. pipeline. loaders. blaze. earnings. (905). Lades till nya inbyggda faktorer, zipline. pipeline. factors. BusinessDaysUntilNextEarnings och zipline. pipeline. factors. BusinessDaysSincePreviousEarnings. Dessa faktorer använder det nya EarningsCalendar datasetet. (905). Tillagt isnan (). notnan () och isfinit () metoder för zipline. pipeline. factors. Factor (861). Lades till zipline. pipeline. factors. Returns. en inbyggd faktor som beräknar den procentuella förändringen i nära pris över den givna fönsterlängden. (884). Lades till en ny inbyggd faktor: AverageDollarVolume. (927). Tillagt ExponentialWeightedMovingAverage och ExponentialWeightedMovingStdDev faktorer. (910). Tillåt datasetklasser att vara underklassificerade där underklasser ärver alla kolumnerna från föräldern. Dessa kolumner kommer att bli nya signaler så att du kan registrera dem som en anpassad lastare (924). Lades till () för att tvinga in ingångar från en typ till en annan innan de skickas till funktionen (948). Tillagt valfritt () för att pakka in andra preprocessorfunktioner för att uttryckligen tillåta None (947). Lades till ensuretimezone () för att tillåta att strängargument konverteras till datetime. tzinfo-objekt. Detta gör det också möjligt för tzinfo-objekt att skickas direkt (947). Lades till två valfria argument, dataquerytime och dataquerytz till BlazeLoader och BlazeEarningsCalendarLoader. Dessa argument tillåter användaren att ange en viss cutoff-tid för data när den laddas från resursen. Om jag till exempel vill simulera körning av min beforetradingstart-funktion vid 8:45 USEastern så kunde jag skicka datetime. time (8, 45) och USEastern till lastaren. Det innebär att data som är tidsstämplade på eller efter 8:45 inte kommer att ses den dagen i simuleringen. Uppgifterna kommer att bli tillgängliga nästa dag (947). BoundColumn. latest returnerar nu ett filter för kolumner av dtype bool (962). Tillagt stöd för Factor instanser med int64 dtype. Kolumn kräver nu en missingvalue när dt är integrerad. (962) Det är också möjligt att ange anpassade missingvalue-värden för float. datum Tid. och bool Pipeline villkor. (962) Tillagt auto-close stöd för aktier. Eventuella positioner som innehas i ett eget kapital som når sitt autokopi kommer att likvideras för kontanter enligt kapitalets 8282s sista försäljningspris. Vidare avbryts eventuella öppna order för det egna kapitalet. Både terminer och aktier är nu automatiskt stängda på morgonen på deras autokopi. omedelbart före förflyttningsstart. (982) Experimentella egenskaper Experimentella egenskaper kan komma att ändras. Tillagt stöd för parametrerade Factor-underklasser. Faktorer kan ange parametrar som en klassnivåattribut som innehåller ett tupel av parameternamn. Dessa värden accepteras sedan av konstruktören och vidarebefordras med namn till faktor8217s beräkningsfunktion. Detta API är experimentellt och kan komma att ändras i framtida versioner. Buggfixar Lös ett problem som skulle orsaka att den dagliga metoden cachar för att ändra länet i ett SIDData-objekt. Detta skulle få oss att tro att objektet inte var tomt även när det var (826). Fixar ett fel som höjdes vid beräkning av beta när referensdata var glesa. Istället returneras numpy. nan (859). Fixerade ett problem med betagande av sentinel () (872). Fasta falska varningar vid första nedladdning av treasury data (: issue 922). Rätta felmeddelandena för setcommission () och setslippage () när de används utanför initieringsfunktionen. Dessa fel kallade funktionerna åsidosätter istället för inställningen. Det här namngav också de undantagstyper som höjdes från OverrideSlippagePostInit och OverrideCommissionPostInit till SetSlippagePostInit och SetCommissionPostInit (923). Fixat ett problem i CLI som skulle leda till att tillgångar läggs till två gånger. Detta skulle kartlägga samma symbol för två olika sidor (942). Lös ett problem där PerformancePeriod felaktigt rapporterade totalpositionsvärdet när du skapade ett konto (950). Fasta problem runt KeyErrors kommer från historia och BarData på 32-bitars python, där tillgångar inte jämfördes korrekt med int64s (959). Fixat ett fel där booleska operatörer inte implementerades korrekt på Filter (991). Installation av zipline nedgraderar inte längre numpy till 1.9.2 tyst och ovillkorligt (969). Prestanda Snabbare upp lookupsymbol () genom att lägga till en förlängning, AssetFinderCachedEquities. som laddar aktier i ordböcker och sedan leder lookupsymbol () till dessa ordböcker för att hitta matchande aktier (830). Förbättrad prestanda för lookupsymbol () genom att utföra satsvisa frågor. (817). Underhåll och refactorings Kapitaldatabaser innehåller nu versionsinformation för att säkerställa kompatibilitet med nuvarande Zipline-version (815). Uppgradera förfrågningsversionen till 2.9.1 (2ee40db) Uppgradera loggbokversionen till 0.12.5 (11465d9). Uppgradera Cython-versionen till 0.23.4 (5f49fa2). Gör zipline installationsbehov mer flexibla (825). Använd versioneer för att hantera projektversionen och setup. py-versionen (829). Fixad överdrags integration på travis byggnad (840). Fast conda build, som nu använder git-källan som källa och läser krav med setup. py, istället för att kopiera dem och låta dem komma ur synkronisering (937). Kräv setuptools gt 18.0 (951). Dokumentation Dokumentationsprocessen för utvecklare (835). Tilläggsreferensdokument för Pipeline API. (864). Tilläggsreferensdokument för API-instrument för tillgångsmetadata. (864). Genererad dokumentation innehåller nu länkar till källkod för många klasser och funktioner. (864). Tillagt plattformsspecifik dokumentation som beskriver hur man hittar binära beroenden. (883). Diverse Tillagd en showgraph () metod för att göra en pipeline som en bild (836). Lägger till subtest () decorator för att skapa subtest utan noseparameterized. expand () som blockerar testutgången (833). Gränser timerns rapport i testutgången till 15 längsta tester (838). Treasury och benchmark nedladdningar kommer nu att vänta upp till en timme för att ladda ner igen om data som returneras från en fjärrkälla inte sträcker sig till det förväntade datumet. (841). Lades till ett verktyg för att nedgradera tillgångarna db till tidigare versioner (941). Release 0.8.3 Highlights Nytt dokumentationssystem med en ny webbplats vid zipline. io Viktiga prestandaförbättringar. Dynamisk historia. Ny användardefinierad metod: Beforetradingstart. Ny api-funktion: schemaläggfunktion (). Ny api-funktion: getenvironment (). Ny api-funktion: setmaxleverage (). Ny api-funktion: setdonotorderlist (). Pipeline API. Stöd för handelsterminer. Förbättringar Kontoobjekt: Lägger till ett kontoobjekt i kontext för att spåra information om handelskontot. Exempel: Returnerar det kontanta kontantvärdet som lagras i kontobjektet. Detta värde uppdateras i enlighet med algoritmen körs (396). HistoryContainer kan nu växa dynamiskt. Samtal till historik () kommer nu att kunna öka storleken eller ändra formen på historikbehållaren för att kunna betjäna samtalet. addhistory () fungerar nu som ett preformance-tips för att fördela tillräckligt med utrymme i behållaren. Denna ändring är bakåtkompatibel med historien. alla befintliga algoritmer ska fortsätta att fungera som avsedda (412). Enkla transformer portas från kvantopian och använd historia. SIDData har nu metoder för: Dessa metoder, förutom avkastning. acceptera ett antal dagar. Om du kör med minutdata kommer det att beräkna antalet minuter i dessa dagar, redo för tidig stängning och aktuell tid och tillämpa omvandlingen över uppsättningen minuter. avkastning tar inga parametrar och kommer att returnera den dagliga avkastningen för den givna tillgången. Exempel: Nya fält i prestationsperioden. Prestationsperiod har nya fält tillgängliga i returvärde av todict. - brutto hävstång - nettoförbrukning - kort exponering - lång exponering - shortsräkning - längdräkning (464). Tillåt orderingcent () att arbeta med olika marknadsvärden (av Jeremiah Lowin). För närvarande fungerar orderpercent () och ordertarget () båda som en procentandel av self. portfolio. portfoliovalue. Denna PR låter dem fungera som procentandelar av andra viktiga MV. Lägger också till context. getmarketvalue (). vilket möjliggör denna funktionalitet. Till exempel: Kommandoradsalternativ för att skriva ut algo to stdout (av Andrea D8217Amore) (545). Ny användardefinierad funktion beforetradingstart. Denna funktion kan överskridas av användaren som ska ringas en gång innan marknaden öppnar varje dag (389). Ny api funktion schema funktion (). Med den här funktionen kan användaren schemalägga en funktion som ska ringas utifrån mer komplicerade regler om datum och tid. Till exempel, ring funktionen 15 minuter innan marknaden nära respekterar tidigt stänger (411). Ny api funktion setdonotorderlist (). Den här funktionen accepterar en lista över tillgångar och lägger till ett handelsskydd som hindrar algoritmen från att handla dem. Lägger till en lista i tidsförteckning över levererade ETF-enheter som folk kanske vill markera som 8216 inte handla8217 (478). Lägger till en klass för att representera värdepapper. order () och andra orderfunktioner kräver nu en förekomst av Säkerhet istället för en int eller sträng (520). Generalisera säkerhetsklassen till tillgången. Detta är i förväg för att lägga till stöd för andra tillgångstyper (535). Ny api funktion getenvironment (). Den här funktionen returnerar som standard strängens zipline. Detta används så att algoritmer kan ha olika beteenden på Quantopian och Local Zipline (384). Utökar getenvironment () för att exponera mer för miljön till algoritmen. Funktionen accepterar nu ett argument som är fältet som ska returneras. Som standard är detta en plattform som returnerar det gamla värdet av zipline men följande nya fält kan beställas: arena. Är detta live trading eller backtesting datafrekvens. Är det här minutläge eller dagsläge start. Simulerings startdatum. slutet. Simulerings slutdatum. capitalbase. Startkapitalet för simuleringen. plattform. Plattformen som algoritmen körs på. . En ordbok som innehåller alla dessa fält. Ny api-funktion setmaxleveraged (). Denna metod lägger till ett handelsskydd som förhindrar att din algoritm överhinder sig själv (552). Experimentella egenskaper Experimentella egenskaper kan komma att ändras. Lägger till ett nytt pipeline-API. Rörledningen API är ett högtstående deklarativt API för att representera efterföljande fönsterberäkningar på stora dataset (630). Lägger till stöd för futureshandel (637). Lägger till Pipeline Loader för blaze uttryck. Detta gör det möjligt för användare att dra data från vilket format som helst som förstår och använder det i Pipeline API. (775). Buggfixar Fix ett fel där den rapporterade avkastningen kan dämpas kraftigt i slumpmässiga perioder (378). Fixa ett fel som hindrade debuggers från att lösa algoritmfilen (431). Riktigt vidarebefordra argument till användardefinierad initieringsfunktion (687). Lös en bugg som skulle orsaka att treasury-data omfördelas varje backtest mellan midnatt EST och den tid då skattemyndigheten var tillgänglig (793). Fixa ett fel som skulle leda till att användardefinierad analysfunktion inte kallas om den överfördes som ett nyckelordsargument till TradingAlgorithm (819). Prestanda Viktiga prestationsförbättringar till historia (av Dale Jung) (488). Underhåll och refactorings Ta bort enkel transformationskod. Dessa är tillgängliga som metoder för SIDData (550). Höjdpunkter Kommandoradsgränssnittet för att köra algoritmer direkt. IPython Magic zipline som kör algoritmen definierad i en IPython bärbar datorcell. API-metoder för att bygga säkerhetsåtgärder mot omedelbar beställning och oönskade korta positioner. Ny historik () - funktion för att få en rörlig DataFrame från tidigare marknadsdata (ersätter BatchTransform). En nybörjarmanual. Förbättringar CLI: Lägger till en CLI och IPython magi för zipline. Exempel: Hämtar data från yahoo finance, kör filen dualmovingavg. py (och letar efter dualmovingavganalyze. py som, om den hittas, kommer att utföras efter att algoritmen har körts) och matar ut dataFrame till dma. pickle (325) . IPython magic kommandot (överst på en IPython bärbara cell). Exempel: Samma som ovan utom i stället för att exekvera filen letar efter algoritmen i cellen och istället för att skriva ut perf df till en fil skapar du en variabel i namnytan som heter perf (325). Lägger till handelskontroller i algoritm API. Följande funktioner är nu tillgängliga på TradingAlgorithm och för algo scripts: setmaxordersize (self, sidNone, maxsharesNone, maxnotionalNone) Ange en gräns på absolut storlek, i aktier och eller totalt dollarvärde, av en enskild order placerad av denna algoritm för ett visst sid . Om sid är None, tillämpas regeln på vilken ordning som helst av algoritmen. Exempel: setmaxpositionsize (self, sidNone, maxsharesNone, maxnotionalNone) - Sätt en gräns på absolut storlek, i antingen aktier eller dollarvärde, av vilken position som algoritmen håller för ett visst sid. Om sid är None, tillämpas regeln på vilken position som algoritmen innehar. Exempel: setlongonly (self) Ange en regel som anger att algoritmen kanske inte har korta positioner. Exempel: Lägger till en allapimethods klassmetod på TradingAlgorithm som returnerar en lista över alla TradingAlgorithm API-metoder (333). Utökad rekord () - funktion för dynamisk namngivning. Funktionen record () kan nu ta positioner args före kwargs. All original användning och funktionalitet är desamma, men nu kommer dessa extraanvändningar att fungera: Kraven är helt enkelt att de poritionella argsen inträffar endast före kvargerna (355). historia () har portat från Quantopian till Zipline och ger rörliga fönstret av marknadsdata. historik () ersätter BatchTransform. Det är snabbare, fungerar för minutnivådata och har ett överlägset gränssnitt. För att använda det, ring tilläggshistorik () inuti initialiseringen () och sedan ta emot en pandas DataFrame genom att ringa historia () från insidan av handledata (). Kolla in handledningen och ett exempel. (345 och 357). historia () stödjer nu 1m fönsterlängder (345). Bugfixar Fixa justering av handelsdagar och öppna och stänga i handelsmiljö (331). RollingPanel fixar när man lägger till nya fält (349). Prestanda underhåll och refactorings Ta bort ookumenterade och otestade HDF5 och CSV datakällor (267). Refactor simparams (352). Refactoring av historia (340). Följande beroenden har uppdaterats (zipline kan fungera med andra versioner också): Huvudpunkter Viktiga korrigeringar för riskberäkningar, se avsnittet Felkorrigeringar. Funktionsporten () - funktionen, se avsnittet Förbättringar Starta stöd för Quantopian algoritm script-syntax, se ENH-sektionen. support för conda-pakethanterare, se Bygg sektion. Förbättringar Bearbeta alltid nya beställningar, dvs på staplar där handledata isn8217t heter, men det finns 8216clock8217 data, t. ex. en konsekvent riktmärke, processorder. Tom positioner filtreras nu från portföljbehållaren. För att förhindra att algoritmer fungerar på positioner som inte finns i det befintliga universum av aktier. Tidigare skulle iterering över positioner återge positioner för aktier som innehöll nollaktier. (Där en explicit inchecknings algoritmkod för pos. amount 0 kan förhindra att en icke-existerande position används.) Lägg till handelskalender för BMFampBovespa. Lägg till början på algo script-support. Börjar på paritetsbanan med manussyntaxen i Quantopian8217s IDE på quantopian Exempel: Lägg till HDF5 och CSV källor. Begränsa hanteringsdata till tider med marknadsdata. För att förhindra fall där anpassade datatyper hade oförändrade tidsstämplar, ring bara handledata när marknadsdata går igenom. Anpassade data som kommer före marknadsdata uppdaterar fortfarande datafältet. Men hanteringen av dessa data kommer endast att göras när det finns handlingsbara marknadsdata. Utökad Provisions PerShare-metod för att möjliggöra en minimikostnad per handel. Lägg till symbol api-funktion En symbol () uppslagningsfunktion sattes till Quantopian. Genom att lägga till samma API-funktion till zipline kan vi göra kopiering av en Zipline algo till Quantopian lättare. Lägg till simulerad slumpmässig handelskälla. Lades till en ny datakälla som avger händelser med viss användardefinierad frekvens (minut eller dagligen). Detta gör det möjligt för användare att backtest och felsöka en algoritm i minutläge för att ge en renare sökväg mot Quantopian. Ta bort beroendet av referensvärdet för handelsdagkalendern. Istället för benchmarks8217-indexet används handelskalendern nu för att fylla miljön8217s handelsdagar. Ta bort extradate-fältet, eftersom i motsats till referenslistan kan handelskalendern generera framtida datum, så datum för dagens handelsdag behöver inte bifogas. Motivationer: Källan för den öppna och närmast stängda kalendern och handelsdagskalendern är nu densamma, vilket bör bidra till att förhindra potentiella problem på grund av felinriktning. Tillåter konfigurationer där referensnumret tillhandahålls som en generatorbaserad datakälla för att behöva tillhandahålla en andra referenslista för att bara fylla i datum. Porthistorik () API-metod från Quantopian. Öppnar kärnan i historikfunktionen () som tidigare endast var tillgänglig på Quantopian-plattformen. Historikmetoden är analog med batchtransformfunktionsdekoratorn, men med en förhoppningsvis mer exakt specifikation av frekvensen och perioden för föregående stapeldata som fångas. Exempel användning: N. B. den här versionen av historien saknar återfyllningsfunktionen som gör det möjligt att returnera en fullständig DataFrame på första stapeln. Buggfixar Anpassa benchmarkhändelser för att matcha marknaden timmar (241). Tidigare skickades referenshändelser vid klockan 0:00 den dag som referensrelationen hänförde sig till: i 8216minute8217 utsläppsläge menade detta att riktmärkena emitterades innan några intradagda affärer behandlades. Se till att perf-statistik genereras för alla dagar När simuleringen skickas med minutiösa emissioner rapporterar användaren att den simulerade 8216n - 18217 dagar (där n är antalet dagar som anges i simuleringsparametrarna). Nu rapporteras rätt antal handelsdagar som simulerade. Fix repr för kumulativa riskvärden. Repen för RiskMetricsCumulative hänvisade till en äldre struktur av klassen, vilket medför ett undantag när det skrivs ut. Också, skriver nu de sista värdena i metriska dataFrame. Förhindra minututsläpp från att krascha vid slutet av tillgängliga 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. t. ex. 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