Python Algorithmic Trading Library PyAlgoTrade är ett Python Algorithmic Trading Library med fokus på backtesting och support för pappershandel och live-trading. Låt oss säga att du har en idé för en handelsstrategi och du vill utvärdera den med historiska data och se hur den fungerar. PyAlgoTrade gör det möjligt för dig att göra det med minimal ansträngning. Huvudfunktioner Helt dokumenterad. Händelsestyrd . Stöder marknadsför, Limit, Stop och StopLimit order. Stödjer Yahoo Finance, Google Finance och NinjaTrader CSV-filer. Stöder alla typer av tidsseriedata i CSV-format, till exempel Quandl. Bitcoin trading stöd genom Bitstamp. Tekniska indikatorer och filter som SMA, WMA, EMA, RSI, Bollinger Bands, Hurst exponent och andra. Prestandametri som Sharpe-förhållande och drawdown-analys. Hantering av Twitter-händelser i realtid. Händelseprofiler. TA-Lib integration. Mycket lätt att skala horisontellt, det vill säga med hjälp av en eller flera datorer för att backtest en strategi. PyAlgoTrade är gratis, öppen källkod och licensierad enligt Apache License, Version 2.0. Läs mer Kvant kompetens Om du är en näringsidkare eller en investerare och skulle vilja förvärva en uppsättning kvantitativa handelsförmåga, är du på rätt ställe. Trading med Python-kursen kommer att ge dig de bästa verktygen och rutinerna för kvantitativ handelsforskning, inklusive funktioner och skript som skrivits av experter med kvantitativa handlare. Kursen ger dig maximal effekt för din investerade tid och pengar. Det fokuserar på praktisk tillämpning av programmering till handel snarare än teoretisk datavetenskap. Kursen kommer att betala sig snabbt genom att spara tid vid manuell behandling av data. Du kommer att spendera mer tid på att undersöka din strategi och genomföra lönsamma affärer. Kursöversikt Del 1: Grunderna Du lär dig varför Python är ett idealiskt verktyg för kvantitativ handel. Vi börjar genom att skapa en utvecklingsmiljö och introducera dig sedan till de vetenskapliga biblioteken. Del 2: Hantera data Lär dig hur du hämtar data från olika fria källor som Yahoo Finance, CBOE och andra webbplatser. Läs och skriv flera dataformat inklusive CSV och Excel-filer. Del 3: Att undersöka strategier Lär dig att beräkna PL och åtföljande prestandametri som Sharpe och Drawdown. Bygg en handelsstrategi och optimera prestanda. Flera exempel på strategier diskuteras i denna del. Del 4: Kommer att leva Denna del är centrerad kring Interactive Brokers API. Du kommer lära dig hur du får realtids lagerdata och placera live order. Massor av exempelkod Kursmaterialet består av anteckningsböcker som innehåller text tillsammans med interaktiv kod som den här. Du kommer att kunna lära dig genom att interagera med koden och ändra den efter eget tycke. Det kommer att vara en bra utgångspunkt för att skriva egna strategier Medan vissa ämnen förklaras i stor detalj för att hjälpa dig att förstå de underliggande koncepten, behöver du i de flesta fall inte ens skriva en egen lågnivåkod på grund av stöd från befintliga öppna - källa bibliotek. TradingWithPython-biblioteket kombinerar mycket av funktionaliteten som diskuteras i kursen som färdiga funktioner och kommer att användas under hela kursen. Pandas kommer att ge dig all den kraftiga lyftkraften som behövs vid datakrypning. Alla koden tillhandahålls under BSD-licensen, vilket tillåter användningen i kommersiella tillägg. Kursbetyg En kurs i kursen hölls våren 2013, så här fick studenterna att säga: Matej väl utformad kurs och bra tränare. Definitivt värt sitt pris och min tid Lave Jev visste självklart hans grejer. djupet av täckningen var perfekt. Om Jev kör något liknande här igen, är jag den första som registrerar mig. John Phillips Din kurs fick mig verkligen att hoppa och började överväga python för stocksystemanalys. Bakprovning av en Moving Average Crossover i Python med pandas I den tidigare artikeln om Research Backtesting Environments I Python With Pandas skapade vi en objektorienterad forskningsbaserad backtestingmiljö och testades det på en slumpmässig prognosstrategi. I den här artikeln kommer vi att använda sig av den maskin som vi introducerade för att utföra forskning om en faktisk strategi, nämligen Moving Average Crossover på AAPL. Flyttande genomsnittlig Crossover-strategi Den Moving Average Crossover-tekniken är en extremt välkänd förenklad momentumstrategi. Det anses ofta Hello World-exemplet för kvantitativ handel. Strategin som beskrivs här är långsiktig. Två separata enkla glidande medelfilter skapas, med varierande återkänningsperioder, för en viss tidsserie. Signaler för att köpa tillgången inträffar när det kortare återgåande glidande medlet överstiger det längre återkommande glidmedlet. Om det längre genomsnittet därefter överstiger det kortare genomsnittet säljs tillgången tillbaka. Strategin fungerar bra när en tidsserie går in i en period med stark trend och sedan sakta tillbaka trenden. I det här exemplet har jag valt Apple, Inc. (AAPL) som tidsserier, med en kort lookback på 100 dagar och en lång återgång på 400 dagar. Detta är exemplet från zipline algoritmiska handelsbiblioteket. Således, om vi vill implementera vår egen backtester måste vi se till att den matchar resultaten i zipline, som ett grundläggande sätt att validera. Genomförande Se till att du följer den tidigare handledningen här. som beskriver hur den ursprungliga objekthierarkin för backtesteren är konstruerad, annars fungerar inte koden nedan. För detta specifika genomförande har jag använt följande bibliotek: Implementeringen av macross. py kräver backtest. py från föregående handledning. Det första steget är att importera de nödvändiga modulerna och objekten: Som i föregående handledning kommer vi att subklassera abstraktionsklassen Strategi för att producera MovingAverageCrossStrategy. som innehåller alla detaljer om hur man genererar signalerna när de rörliga medelvärdena av AAPL passerar över varandra. Objektet kräver en shortwindow och en longwindow att fungera för. Värdena har ställts till standardvärden på 100 dagar respektive 400 dagar, vilka är samma parametrar som används i huvudexemplet för zipline. De glidande medelvärdena skapas genom att använda pandas rollingmean-funktionen på staplarna. Slutkursen för AAPL-aktien. När de individuella rörliga medeltalen har konstruerats genereras signalen Serie genom att kolumnen är lika med 1,0 när det korta glidande medlet är större än det långa glidande medlet eller 0,0 annars. Från detta kan positioneringsorder genereras för att representera handelssignaler. MarketOnClosePortfolio är subclassed från Portfolio. som finns i backtest. py. Det är nästan identiskt med det genomförande som beskrivs i föregående handledning, med det undantaget att handeln nu utförs på nära håll, snarare än en öppen till öppen basis. Mer information om hur Portfolio-objektet definieras finns i föregående handledning. Ive lämnade koden för fullständighet och för att hålla denna handledning fristående: Nu när klasserna MovingAverageCrossStrategy och MarketOnClosePortfolio har definierats kommer en huvudfunktion att kallas för att binda alla funktioner tillsammans. Dessutom kommer strategins resultat att undersökas via en kurva av aktiekurvan. Pandas DataReader-objekt laddar ner OHLCV-priser på AAPL-lager för perioden 1 januari 1990 till 1 januari 2002, vid vilken tidpunkt signalerna DataFrame skapas för att generera de långsiktiga signalerna. Därefter genereras portföljen med en initialkapital på 100 000 USD och avkastningen beräknas på egenkapitalkurvan. Det slutgiltiga steget är att använda matplotlib för att rita en tvåsiffrigt plot av båda AAPL-priserna, överlagrade med de glidande medelvärdena och buysell-signalerna, såväl som kapitalkurvan med samma buysell-signaler. Plottingskoden tas (och modifieras) från exempelsegmentet för zipline. Kodens grafiska utgång är enligt följande. Jag använde kommandot IPython-klistra för att placera detta direkt i IPython-konsolen i Ubuntu, så att den grafiska produktionen förblev i sikte. De pink upticksna representerar att köpa beståndet, medan de svarta downtickarna representerar att sälja tillbaka: Som det kan ses, förlorar strategin pengar under perioden, med fem rundturer. Detta är inte förvånande med tanke på AAPL: s beteende under perioden, vilket var en liten nedåtgående trend följt av en signifikant uppgång som började 1998. Utsläppsperioden för de rörliga genomsnittssignalerna är ganska stor och detta påverkade slutproduktens vinst , vilket annars kan ha gjort strategin lönsam. I efterföljande artiklar kommer vi att skapa ett mer sofistikerat sätt att analysera prestanda, samt beskriva hur man optimerar utkikningsperioderna för de individuella rörliga genomsnittssignalerna. Just Komma igång med Kvantitativ TradingTrading med Python Ive läste nyligen ett bra inlägg av turinginance bloggen om hur man ska vara en quant. Kortfattat beskriver det ett vetenskapligt sätt att utveckla handelsstrategier. För mig personligen, observera data, tänker med modeller och bildar hypotes är en andra natur, som det borde vara för någon bra ingenjör. I det här inlägget kommer jag att illustrera detta tillvägagångssätt genom att uttryckligen gå igenom ett antal steg (bara ett par, inte alla) som är involverade i utvecklingen av en handelsstrategi. Låt oss titta på det vanligaste handelsinstrumentet, SampP 500 ETF SPY. Jag börjar med observationer. Observationer Det förekommit mig att det för det mesta är mycket att prata i media om att marknaden kraschar (efter stora förluster under flera dagar), följer en ganska stor återhämtning ibland. Tidigare gjorde Ive ett par misstag genom att stänga mina positioner för att minska förlusterna korta, för att missa en återhämtning under de följande dagarna. Allmän teori Efter en period av konsekutiva förluster kommer många handlare att likvida sina positioner ur rädsla för ännu större förlust. Mycket av detta beteende styrs av rädsla, snarare än beräknad risk. Smarterare handlare kommer in då för fynd. Hypotes: SPY: s återkommande avkastning kommer att uppvisa en uppåtrikad bias efter ett antal förluster i följd. För att testa hypotesen beräknade Ive antalet på varandra följande neddagar. Allt under -0,1 dagliga avkastning kvalificerar som en neddag. Returserierna är nära slumpmässiga, så som man förväntar sig är risken för 5 eller flera på varandra följande neddagar låga, vilket resulterar i ett mycket begränsat antal händelser. Lågt antal händelser kommer att leda till opålitliga statistiska uppskattningar, så Ill slutar vid 5. Nedan visas en visualisering av nex-tday-avkastningen som en funktion av antalet nedåtgående dagar. Ive ritade också 90 konfidensintervall för avkastningen mellan linjerna. Det visar sig att den genomsnittliga avkastningen är positivt korrelerad med antalet nedgångar. Hypotesen bekräftades. Men du kan tydligt se att denna extra alfa är väldigt liten jämfört med bandet av de troliga avkastningsresultaten. Men även en liten kant kan utnyttjas (hitta en statistisk fördel och upprepa så ofta som möjligt). Nästa steg är att undersöka om denna kant kan ändras i en handelsstrategi. Med tanke på uppgifterna ovan kan en handelsstrategi vara forumlated: Efter konsekutiva 3 eller fler förluster, gå lång. Avsluta på nästa stäng. Nedan följer ett resultat av denna strategi jämfört med rent buy-and-hold. Det ser inte ut dåligt alls. Se på de skarpa förhållandena får strategin en nedgång 2,2 mot 0,44 för BampH. Det här är faktiskt ganska bra (bli inte alltför upphetsad, eftersom jag inte tog hänsyn till kostnader för kommission, glidning etc). Även om strategin ovan inte är något som jag skulle vilja handla helt enkelt på grund av den långa tidsperioden, provar teorin ytterligare tankar som kan ge något användbart. Om samma princip gäller för intradagdata, kan en form av scalping-strategi byggas. I exemplet ovan har Ive överskattat världen lite genom att bara räkna antalet nedgångar, utan att uppmärksamma djupet av drawdownen. Positionsavgången är också en grundläggande nästa dag-nära. Det finns mycket att förbättra, men kärnan enligt min mening är det här: SPY: s framtida avkastning påverkas av drawdown och drawdown-varaktighet under de senaste 3 till 5 dagarna. En erfaren trader vet vad beteende som förväntas från marknaden utifrån en uppsättning indikatorer och deras tolkning. Det senare görs ofta baserat på hans minne eller någon form av modell. Att hitta en bra uppsättning indikatorer och bearbeta informationen utgör en stor utmaning. Först måste man förstå vilka faktorer som är korrelerade med framtida priser. Data som inte har någon förutsägbar kvalitet medför bara ljud och komplexitet, minskar strategins prestanda. Att hitta bra indikatorer är en egen vetenskap, som ofta kräver djup förståelse för marknadsdynamiken. Denna del av strategisk design kan inte enkelt automatiseras. Lyckligtvis, när en bra uppsättning indikatorer har hittats kan handelsminnet och intuitionen enkelt ersättas med en statistisk modell, vilket sannolikt kommer att fungera mycket bättre eftersom datorer har felfritt minne och kan göra perfekta statistiska uppskattningar. När det gäller volatilitetshandel tog det mig ganska lång tid att förstå vad som påverkar dess rörelser. Jag är speciellt intresserad av variabler som förutspår framtida avkastning av VXX och XIV. Jag kommer inte att gå in i full längd förklaring här, men bara presentera en slutsats. Mina två mest värdefulla indikatorer för volatilitet är terminsstrukturhöjningen och nuvarande volatilitetspremie. Min definition av dessa två är: volatilitetspremie VIX-realizedVol delta (terminsstrukturhöjning) VIX-VXV VIX amp VXV är de framåtriktade 1 och 3 månaders implicita volatiliteterna hos SampP 500. realiseradVol här är en 10-dagars realiserad volatilitet i SPY, beräknad med Yang-Zhang formel. delta har ofta diskuterats på VixAndMore blogg, medan premium är känt från options trading. Det är vettigt att gå kort volatilitet när premien är hög och terminer är i contango (delta lt 0). Detta kommer att orsaka en svängvind från både premium och daglig rulle längs terminsstrukturen i VXX. Men det här är bara en grov uppskattning. En bra handelsstrategi skulle kombinera information från både premium och delta för att komma med en förutsägelse på handelsriktningen i VXX. Jag har kämpat mycket länge för att komma fram till ett bra sätt att kombinera bullriga data från båda indikatorerna. Ive försökte de flesta av de vanliga tillvägagångssätten, som linjär regression, skriva en massa om-thens. men alla med mycket mindre förbättringar jämfört med att endast använda en indikator. Ett bra exempel på en sådan indikatorstrategi med enkla regler finns på TradingTheOdds blogg. Ser inte ut dålig, men vad som kan göras med flera indikatorer Jag börjar med några exakta VXX-data som jag fick från MarketSci. Observera att det här är simulerade data innan VXX skapades. Indikatorerna för samma period anges nedan: Om vi tar en av indikatorerna (premium i det här fallet) och plottar den mot framtida avkastning på VXX, kan det ses en viss korrelation, men dataen är extremt högljudd. Det är fortfarande klart den negativa premien kommer sannolikt att ha positiv VXX-avkastning nästa dag. Att kombinera både premium och delta i en modell har varit en utmaning för mig, men jag ville alltid göra en statistisk approximation. I huvudsak, för en kombination av (delta, premium), Id tycker om att hitta alla historiska värden som ligger närmast nuvärdena och göra en uppskattning av framtida avkastning baserat på dem. Ett par gånger började jag skriva mina egna närmaste granninterpolationsalgoritmer, men varje gång jag var tvungen att ge upp. tills jag kom över scikit närmaste grannregression. Det gjorde det möjligt för mig att snabbt bygga en prediktor baserad på två ingångar och resultaten är så bra att jag är lite orolig för att Ive gjort ett misstag någonstans. Här är vad jag gjorde: skapa en dataset för delta, premium - gt VXX nästa dag tillbaka (in-of-sample) skapa en närmaste grannpredikator baserat på datasetet ovanför handelsstrategin (out of sample) med reglerna: gå länge om förutspådd retur gt 0 gå kort om det förutspås returnera lt0 Strategin kunde inte vara enklare. Resultaten verkar vara mycket bra och blir bättre när fler nigborer används för uppskattning. Först med 10 poäng är strategin utmärkt i provet, men är platt utanför provet (den röda linjen i figuren nedan är den sista punkten i provet) Sedan blir resultatet bättre med 40 och 80 poäng: I det sista två tomter verkar strategin utföra samma in-och ut-ur-prov. Sharpe-förhållandet är cirka 2,3. Jag är väldigt nöjd med resultaten och har en känsla av att jag bara har skratt ytan på vad som är möjligt med denna teknik. Min sökning på ett idealverktyg för backtesting (min definition av ideal beskrivs i tidigare Backtesting-dilemma-inlägg) resulterade inte i något som jag kunde använda genast. Men genom att granska de tillgängliga alternativen hjälpte jag mig att förstå bättre vad jag verkligen vill ha. Av de alternativ som jag såg på, pybacktest var den jag gillade mest på grund av sin enkelhet och hastighet. Efter att ha gått igenom källkoden fick jag några idéer för att göra det enklare och lite mer elegant. Därifrån var det bara ett litet steg att skriva min egen backtester, som nu är tillgänglig i TradingWithPython-biblioteket. Jag har valt ett tillvägagångssätt där backtesteren innehåller funktionalitet som alla handelsstrategier delar och som ofta kopieras in. Saker som beräkningspositioner och pnl, prestandamätningar och plottar. Strategispecifik funktionalitet, som att bestämma in - och utgångspunkter, bör göras utanför backtesteren. Ett typiskt arbetsflöde skulle vara: hitta inmatning och utgångar - beräkna pnl och göra plottar med backtester - gt strategidata efter processen För tillfället är modulen mycket minimal (kolla källan här), men i framtiden planerar jag på att lägga till vinst - och förlustavgångar och flera tillgångsportföljer. Användning av backtesting-modulen visas i det här exemplet Anteckningsbok Jag organiserar mina IPython-bärbara datorer genom att spara dem i olika kataloger. Detta ger emellertid ett besvär, för att komma åt notebooksna behöver jag öppna en terminal och skriva ipython anteckningsbok - pylabinline varje gång. Jag är säker på att ipythonlaget kommer att lösa detta på lång sikt, men under tiden finns det ett ganska avstängnings sätt att snabbt komma åt notebooksna från filutforskaren. Allt du behöver göra är att lägga till en snabbmeny som startar ipython-servern i önskad katalog: Ett snabbt sätt att lägga till kontextobjektet är att köra den här registret. (Obs! Plåten förutsätter att du har din pythoninstallation i C: Anaconda. Om inte, måste you8217ll öppna. reg-filen i en textredigerare och ställa in rätt sökväg på den sista raden). Instruktioner för att lägga till registernycklarna manuellt finns på Frolians blogg. Många tror att leveranserna av etfs på lång sikt underpresterar sina riktmärken. Detta gäller för hakiga marknader, men inte i fråga om trending villkor, antingen upp eller ner. Hävstångseffekt har endast effekt på det mest troliga resultatet, inte på det förväntade resultatet. För mer bakgrund, vänligen läs detta inlägg. 2013 har varit ett mycket bra år för aktier, som tränade upp för det mesta av året. Låt oss se vad som skulle hända om vi kortade några av de hyrda ETFS exakt ett år sedan och säkrade dem med deras riktmärke. Att veta det hanterade ETF-beteendet jag förväntar mig att leveranserade ETFS överträffade deras riktmärke, så skulle strategin som skulle försöka dra nytta av förfallet förlora pengar. Jag kommer att överväga dessa par: SPY 2 SSO -1 SPY -2 SDS -1 QQQ 2 QLD -1 QQQ -2 QID -1 IYF -2 SKF -1 Varje levererad ETF hålls kort (-1) och säkras med en 1x etf. Observera att för att säkra en invers etf hålls en negativ position i 1x etf. Här är ett exempel: SPY vs SSO. När vi normaliserar priserna till 100 i början av backtestperioden (250 dagar) är det uppenbart att 2x etf överträffar 1x etf. Nu resultaten av backtest på paren ovan: Alla 2x etfs (inklusive inversa) har överträffat sitt riktmärke under 2013. Enligt förväntningarna skulle strategin som utnyttjar betaförfall inte vara lönsam. Jag skulle tro att att spela en levererad etfs mot sin oleverantörda motsvarighet inte ger någon kant, om du inte känner till marknadsförutsättningarna på förhand (trending eller range-bound). Men om du känner till den kommande marknadsregimen finns det mycket enklare sätt att dra nytta av det. Tyvärr har ingen ännu varit riktigt framgångsrik när det gäller att förutsäga marknadsregimen även på kort sikt. Fullständiga källkod för beräkningarna är tillgängliga för abonnenterna i Trading With Python-kursen. Anteckningsbok 307 Här är mitt skott på Twitter-värdering. Jag gillar att börja med en ansvarsfriskrivning: för närvarande består en stor del av min portrolio av kort TWTR-position, så min åsikt är ganska skevad. Anledningen till att jag har gjort min egen analys är att min insats inte fungerade bra och Twitter gjorde ett paraboliskt drag i december 2013. Så frågan som jag försöker svara här är att jag ska ta min förlust eller hålla fast vid mina shorts. TWTR handlar i skrivande stund kring 64 mark, med en marknadsandel på 34,7 B. Hittills har företaget inte gjort någon vinst och förlorar 142M i 3013 efter att ha gjort 534M i intäkter. De sista två siffrorna ger oss årliga företagsutgifter på 676M. Pris härrör från användarvärde Twitter kan jämföras med Facebook, Google och LinkedIn för att få en uppfattning om användarnummer och deras värden. I tabellen nedan sammanfattas användarnummer per företag och ett värde per användare som härrör från marknadslocken. (källa för antal användare: Wikipedia, antal för Google är baserat på antal unika sökningar) Det är uppenbart att marknadsvärderingen per användare är mycket likartad för alla företag, men min personliga uppfattning är att TWTR är för närvarande värdefullare per användare som FB eller LNKD. Detta är inte logiskt eftersom båda konkurrenterna har mer värdefulla personuppgifter till deras förfogande. GOOG har utmärkt sig vid att extrahera annonsintäkter från sina användare. För att göra det har den en uppsättning mycket diversifierade erbjudanden, från sökmotor till Google. Docs och Gmail. TWTR har inget som liknar det, medan dess värde per användare är bara 35 lägre än den hos Google. TWTR har ett begränsat rum för att öka sin användarbas eftersom det inte erbjuder produkter som kan jämföras med FB eller GOOG-erbjudanden. TWTR har funnits i sju år nu och de flesta som vill ha en accout har fått chansen. Resten bryr sig bara inte. TWTR användarbas är flyktig och kommer sannolikt att flytta till nästa heta när den blir tillgänglig. Jag tror att den bästa referensen här skulle vara LNKD, som har en stabil nisch på den professionella marknaden. Med denna metriska TWTR skulle det vara övervärderat. Inställning av användarvärde vid 100 för TWTR skulle ge ett rättvist TWTR-pris på 46. Pris härrör från framtida intäkter Det finns tillräckligt med data för framtida resultatberäkningar. En av de mest användbara som jag har hittat är här. Använda dessa siffror medan du subtraherar företagsutgifter, vilket jag antar att förbli konstant. producerar detta nummer: Slutsats Baserat på tillgänglig information bör optimistisk värdering av TWTR vara i 46-48-serien. Det finns inga tydliga skäl att det bör handlas högre och många operativa risker för att handla mindre. Min gissning är att under programplaneringen har tillräckligt många experter granskat priset och ställt det till en rättvis prisnivå. Vad som hände därefter var ett irrationellt marknadsrörelse inte motiverat av ny information. Titta bara på den hausse frenesen på stocktwits. med människor som hävdar att saker som denna fågel kommer att flyga till 100. Ren känsla, som aldrig fungerar bra. Det enda som vilar mig nu är att sätta mina pengar där min mun är och hålla fast vid mina shorts. Tiden får avgöra. Kortslutning av den kortsiktiga volatiliteten etn VXX kan verka som en bra idé när man tittar på diagrammet från ganska avstånd. På grund av kontango i volatilitetsterminerna, upplever etninet en del huvudvindar mestadels och förlorar lite värdet varje dag. Detta händer på grund av daglig ombalansering, för mer information kolla in utsikterna. I en ideal värld, om du håller den tillräckligt länge, garanteras en vinst som orsakas av tidsfördröjning i framtiden och etn-ombalansering, men på kort sikt måste du gå igenom några ganska tunga drawdowns. Bara titta tillbaka på sommaren 2011. Jag har varit olycklig (eller dum) nog att hålla en kort VXX-position strax innan VIX gick upp. Jag har nästan blivit mitt konto redan då: 80 utbetalningar på bara några dagar, vilket resulterar i ett hot om marginalanrop från min mäklare. Marginalanrop skulle innebära att förlusten ersätts. Det här är inte en situation Id vill alltid vara in igen. Jag visste att det inte vore lätt att hålla huvudet coolt hela tiden, men att uppleva stress och tryck på situationen var något annorlunda. Lyckligtvis visste jag hur VXX tenderar att beter sig, så jag gjorde inte panik, men bytte sida till XIV för att undvika ett marginalanrop. Historien slutar bra, 8 månader senare var min portfölj tillbaka i styrka och jag har lärt mig en mycket värdefull lektion. För att börja med ett varningstecken här: Var inte handel med volatilitet om du inte vet exakt hur stor risk du tar. Med detta sagt kan vi titta på en strategi som minimerar några av riskerna genom att endast korta VXX när det är lämpligt. Strategiuppsats: VXX upplever mest dra när futurekurven ligger i en brant kontango. Terminskurvan approximeras av VIX-VXV-förhållandet. Vi kommer att korta VXX när VXV har en ovanligt hög premie över VIX. Låt oss först titta på VIX-VXV-förhållandet: Diagrammet ovan visar VIX-VXV-data sedan januari 2010. Datapunkter från förra året visas i rött. Jag har valt att använda en kvadratisk passform mellan de två approximativa VXV f (VIX). F (VIX) är ritad som en blå linje. Värdena ovanför linjen representerar situationen när futuresna är starkare än normala kontango. Nu definierar jag en deltaindikator, som är avvikelsen från passformen: delta VXV-f (VIX). Nu kan vi titta på priset på VXX tillsammans med delta: Ovan: Pris på VXX på loggskala. Nedan: delta. Gröna markörer anger delta gt 0. röda markörer deltalt0. Det är uppenbart att gröna områden motsvarar en negativ avkastning i VXX. Låt oss simulera en strategi med dessa dessa antaganden: Kort VXX när delta gt 0 Konstant kapital (satsning på varje dag är 100) Inga glid - eller transaktionskostnader Denna strategi jämförs med den som handlar kort varje dag men tar inte hänsyn till delta . Den gröna linjen representerar vår VXX-kortstrategi, den blå linjen är den dumma. Sharpe på 1,9 för en enkel slutändad strategi är inte alls dålig enligt min åsikt. Men ännu viktigare är att tarmutsläppningarna i stor utsträckning undviks genom att uppmärksamma framtidskurven. Att bygga denna strategi steg för steg kommer att diskuteras under den kommande Trading With Python-kursen. Pris på en tillgång eller ETF är givetvis den bästa indikatorn där det finns, men tyvärr finns det bara enbart så mycket information som finns i den. Vissa människor tycks tro att de fler indikatorerna (rsi, macd, glidande genomsnittliga crossover etc). desto bättre, men om alla är baserade på samma underliggande prisserier, kommer de alla att innehålla en delmängd av samma begränsade information som ingår i priset. Vi behöver mer information utöver vad som ingår i priset för att göra en mer informerad gissning om vad som kommer att hända inom en snar framtid. Ett utmärkt exempel på att kombinera all sorts information till en smart analys finns på The Short Side of Long blog. Att producera denna typ av analys kräver mycket arbete, för vilket jag helt enkelt inte har tid eftersom jag bara handlar deltid. Så jag byggde min egen marknadsdashboard som automatiskt samlar in information till mig och presenterar den i en lätt smältbar form. I det här inlägget ska jag visa hur man bygger en indikator baserad på kortvolymdata. Detta inlägg kommer att illustrera processen för datainsamling och bearbetning. Steg 1: Sök datakälla. BATS-utbyte ger daglig volyldata gratis på deras webbplats. Steg 2: Få data manuellt inspektera Korta volyldata för BATS-utbytet finns i en textfil som är zippad. Varje dag har sin egen zip-fil. När du har hämtat och lossat txtfilen är det här inuti (första flera rader): Totalt innehåller en fil cirka 6000 symboler. Dessa data behöver lite arbete innan det kan presenteras på ett meningsfullt sätt. Steg 3: Få automatiskt data Det jag vill ha är inte bara data för en dag, men ett förhållande av kort volym till total volym under de senaste åren, och jag tycker inte riktigt om att ladda ner 500 zip-filer och kopiera dem i excel manuellt. Lyckligtvis är full automation bara ett par kodlinjer borta: Först måste vi dynamiskt skapa en webbadress där en fil kommer att hämtas: Nu kan vi ladda ner flera filer på en gång: Steg 4. Analysera nedladdade filer Vi kan använda zip och pandor bibliotek för att analysera en enda fil: Den returnerar ett förhållande av kort volym total volym för alla symboler i zip-filen: Steg 5: Skapa ett diagram: Nu är det enda kvar att analysera alla nedladdade filer och kombinera dem med ett enda bord och tomt resultatet: I figuren ovan har jag ritat det genomsnittliga kortvolymprocentet för de senaste två åren. Jag kunde också ha använt en delmängd av symboler om jag ville titta på en viss sektor eller lager. Snabb titt på data ger mig ett intryck av att höga kortvolymen oftast motsvarar marknadens botten och låga förhållanden tycks vara bra ingångspunkter för en lång position. Från och med här kan detta korta volymförhållande användas som grund för strategisk utveckling. Handel med Python-kurs Om du är en näringsidkare eller en investerare och skulle vilja förvärva en uppsättning kvantitativa handelsförmågor kan du överväga att ta Trading With Python couse. Online-kursen kommer att ge dig de bästa verktygen och rutinerna för kvantitativ handelsforskning, inklusive funktioner och skript som skrivits av expertkvantitativa handlare. Du kommer lära dig att få och bearbeta otroliga mängder data, design och backteststrategier och analysera handelsprestanda. Detta hjälper dig att fatta välgrundade beslut som är avgörande för en framgångsrik handlare. Klicka här för att fortsätta till Trading With Python kurswebbplats Mitt namn är Jev Kuznetsov, under dagen är jag forskare i ett företag som är inblandat i trycksaker. Resten av tiden är jag en näringsidkare. Jag studerade tillämpad fysik med specialisering i mönsterigenkänning och artificiell intelligens. Mitt dagliga arbete involverar allt från snabb algoritm prototypning i Matlab och andra språk till programmering av hårddiskdesigners ampere. Sedan 2009 har jag använt mina tekniska färdigheter på finansmarknaderna. Innan jag slutsatsen att Python är det bästa verktyget, jobbar jag i stor utsträckning i Matlab, som är täckt på min andra blogg.
No comments:
Post a Comment