Thursday, 26 October 2017

Forex sektionen 988


Valutakurser Vad är Valutakursen Valutakurser är utbyte av en valuta för en annan eller omräkning av en valuta till en annan valuta. Valutakurs hänvisar också till den globala marknaden där valutor handlas nästan dygnet runt. De största handelscentren är London, New York, Singapore och Tokyo. Termen utländsk valuta brukar förkortas som forex och ibland som FX. FRÅGOR Valutakurs Valutakursförbindelser omfattar allt från omräkning av valutor av en resenär till en flygplatskiosk till betalningar på miljard dollar från företag, finansinstitut och regeringar. Transaktionerna sträcker sig från import och export till spekulativa tjänster utan underliggande varor eller tjänster. Ökande globalisering har lett till en kraftig ökning av antalet valutatransaktioner under de senaste decennierna. Den globala valutamarknaden är den största finansmarknaden i världen, med genomsnittliga dagliga volymer i trillioner dollar. Valuta transaktioner kan göras för spot eller leverans framåt. Det finns ingen centraliserad marknad för valutatransaktioner, som utförs över disken och dygnet runt. Spot Market Spot för de flesta valutor är två arbetsdagar, det största undantaget är amerikanska dollar mot den kanadensiska dollar som avvecklas nästa arbetsdag. Andra par löser sig inom två arbetsdagar. Under perioder som har flera helgdagar, som påsk eller jul, kan spottransaktioner ta så lång tid som sex dagar att lösa. Priset fastställs på handelsdagen men pengarna byts ut på värderingsdagen. Amerikanska dollar är den mest omsatta valutan. De vanligaste paren är dollarn mot euron. Japansk yen, brittisk pund och schweizerfranc. Handelspar som inte inkluderar dollarn kallas korsningar. De vanligaste korsningarna är euron kontra pund och yen. Spotmarknaden kan vara mycket volatil. Förflyttning på kort sikt domineras av teknisk handel, som fokuserar på rörelsens riktning och hastighet. Människor som fokuserar på technicals kallas ofta som kartläggare. Långfristiga valutatransaktioner drivs av grundläggande faktorer som relativ ränta och ekonomisk tillväxt. Framåtmarknad En forward trade är någon handel som avvecklas vidare i framtiden än spot. Terminspriset är en kombination av spoträntorna plus eller minusposter som representerar räntedifferensen mellan de två valutorna. De flesta har en löptid mindre än ett år i framtiden men längre är möjligt. Liksom med en plats ställs priset på transaktionsdagen men pengar byts ut på förfallodagen. Ett terminskontrakt är skräddarsyddat mot motparternas krav. De kan vara för varje belopp och lösa sig på vilket datum som inte är en helg eller en semester i ett av länderna. Futures Market En futures transaktion liknar en forward genom att det avvecklas senare än en spot deal, men det gäller standard storlek och avvecklingsdatum och handlas på en råvarumarknad. Utbytet fungerar som motpart. § 988 DEFINITION AV Sektion 988 En finansiell transaktion med kapitalförlust eller vinst på en investering som hålls i utländsk valuta. En transaktion i 988-sektorn avser IRS-avsnitt 988, som tillämpades på alla skatteår efter den 31 december 1986. Enligt IRS-reglerna ska de flesta vinsterna från valutatransaktioner behandlas som vanligt inkomst, vare sig de förvärvs av en individ eller ett bolag. Vinster och förluster från dessa transaktioner ses vanligtvis utanför vinst eller förlust på grund av växelkursförändringar mellan amerikanska dollar och utländsk valuta. 988 Transaktioner inkluderar de som omger innehavare av utländska obligationer (som kommer att få intresse och princip i en inhemsk icke-funktionell valuta), valutaterminer eller andra derivat samt upplupna kostnader eller kvitton i utländsk valuta. NEDBRYDNING Sektion 988 De vanligaste värdepapper som berörs är: terminspositioner, valutapositioner och internationella obligationer. Till exempel, om en amerikansk bank utfärdar ett obligationslån som är euromynt. det anses vara en 988 transaktion. Om en investerare gör ett val innan transaktionen ingås, kan han eller hon kunna klassificera vinsten eller förlusten på en viss investering som en realisationsvinst snarare än den vanliga inkomsten. Detta gäller oftast för framtida kontraktstransaktioner, optioner och futures. Update: Jag uppdaterade koden så det fungerar med Oandas nya API. Hämta det här Tiden att prata om mäklare, hur man placerar en handel programmässigt och viktigast av allt hur man inte får scammed. En mäklare är inget annat än ett företag som låter dig handla (köpa eller sälja) tillgångar på en marknad genom sin plattform. Det som är mycket viktigt för algotrading är: Mäklaren erbjuder ett API för att vi ska kunna beställa. Du kan ha ett demokonto för att köra din scenmiljö och experimentera. Spridningen är så liten som möjligt. I vårt fall bryr vi oss inte riktigt om spridning som vi inte kommer att göra High Frequency Trading när som helst snart. Trots att mäklare är reglerade har det förekommit incidenter under de senaste åren, där mäklare vika på grund av vissa villkor. Var väldigt försiktig om det inte finns några recensioner av mäklaren på internet (eller de flesta är dåliga) Om mäklaren ger dig en galen hävstångseffekt (som 1: 200) Om mäklaren verkar vara i ett mycket konstigt land Vad kan hända är att du börjar tjäna lite pengar och du inte kan dra ut dem. Allvarligt. Super stressig situation. Men vi kan byta till en lyckligare anteckning som öppnar ett konto och placerar vår första programmatiska handel. Whooha Jag använder Oanda som mäklare (jag är inte ansluten till dem) och de erbjuder ett ganska anständigt API, bibliotek på github och ett gratis demokonto. När du loggar in på ditt demokonto går du till Hantera API-åtkomst. Där kan du hitta din API-nyckel som vi ska använda i vårt system för att placera affärer. Se till att du inte delar den här nyckeln. Koden för detta är och alla andra inlägg finns på github och du kan installera det och köra det ganska enkelt. Uppdatering: Oanda släppte en ny (kickass) exekveringsmotor som heter v20 och de har släppt ett nytt (förbättrat) API. Det här inlägget har uppdaterats för att använda det nya API, men om (av någon anledning) du vill kontrollera den gamla koden, är den här. Du är lycklig med Anslutning till Oanda behöver en conf-fil - som du kan generera med ett skript som Oanda tillhandahåller här eller du kan bara skapa det själv. Varför vill du ha det Först och främst när det gäller uppgifter (och mina pengar), föredrar jag att veta allt som händer. Och jag gillar inte att behöva installera PyYAML bara för att läsa en conf-fil. Använd gärna någon metod. Förbered dig nu för att bli förvånad. Koden är rakt framåt. Vi initierar API: n och nu kan vi göra en beställning (köp 5000 enheter EURUSD). Kontrollera nuvarande pris är lika enkelt. Oroa dig inte för vad EURUSD är eller hur många enheter vi köper eller vad en marknadsordnad är. För närvarande har vi lagt vår första handel från vår bärbara dator och vi ska bygga vårt eget API för att placera affärer. Spännande saker Du kan läsa Oandas dokumentation här för att se vad du kan göra med deras API och hitta Python-biblioteket här. Exempel på exempel finns på Oandas github-sida här. Kommer upp nästa, anslutning till ett riktigt LIVE algotrading-system, som körs från min RaspberryPI hemma. Du kommer att kunna se det (nästan) slutliga programmet som körs och väl prata mer om Forex och strategier. Om du har mer feedback, ping mig på jonromero eller anmäl dig till nyhetsbrevet. Legal outro. Detta är en teknikhandledning om hur man bygger en algotrading-plattform för experiment och FUN. Några förslag här är inte ekonomiska råd. Om du förlorar några (eller alla) pengar på grund av att du följde några handelsråd eller distribuerat detta system i produktion, kan du inte skylla på den här slumpmässiga bloggen (orör mig). Njut på egen risk. Det här är mer av en Hur man bygger din egen algotradingstrategi - Ethereum-upplagan och inte en snabbpengar för bloggpost. Det är också ett riktigt exempel med riktiga avkastningar (och reella produktionsfel som kostar mig pengar) där du kan se hur du identifierar möjligheter, varför algotrading är fantastisk och varför riskhanteringen kan rädda din röv. Jag får denna fråga nästan varje dag. Hur kan jag hitta en bra strategi Hur kan jag bygga min egen Behöver jag ha en doktorand i matematik Statistik Newsflash: Om jag kan skriva en strategi kan vem som helst skriva en strategi. Lita på mig på det. Det enda tricket är att leta efter en enkel. Uppdatering: Det här inlägget har skrivits om minst fem gånger (som DAO-drama eskaleras) och det är det perfekta exemplet på en strategi som gör en hel cirkel. Jag började bli involverad i Ethereum tidigt eftersom jag verkligen gillade att köra dina algoritmer på blockchain-saken. När TheDAO kom ut läste jag allt om det och älskade idén. Du behöver inte förstå vad Ethereum, theDAO, blockchain är vid denna punkt (jag lovar att jag kommer att ramla på en annan post). Samma idéer gäller för Forex, Lager även Pokemon bollar. Mitt fyra steg - kapten självklart - system Jag personligen har ett visst sätt att jag jobbar. Steg ett . Identifiera en idé. Min uppfattning är att det finns ett par utbyten som erbjuder Ethereum och DAO-symboler. Vad händer om det fanns en arbitrage mellan dessa steg två. Testa idén manuellt. Om någonting fungerar, är jag på något. Allt jag behövde är att genomföra alla steg manuellt och skriva ner eventuella avgifter, villkor eller något som ska dokumenteras. Steg tre. Automatisera Denna algoritm är inte en högfrekvent handelsalgoritm. Det finns en betydande tidrisiko (som du kan eliminera också se senare) men vad jag gjorde kunde göras manuellt. Problemet är att jag skulle behöva spendera all tid framför min dator, kontrollera om det finns ett arbitrageförhållande och om det var så var jag tvungen att agera snabbt och utan att röra sig upp. Åh och jag var tvungen att rekrytera fem av mina vänner för att skala upp det här. Lång historia kort, jag tillbringade presidentsdagen och skrev ett enkelt program som spelar upp alla mina manuella steg. Programmet skulle krascha och det var inte mer än 100 linjer kod. Detta är datainsamlingsstadiet där jag ser om det finns en fördel att algoritmer kan ge mig. Fördelar kan vara: Något som automatiseras och kör 1000 gånger per sekund eller 1000 gånger parallellt Något som tror snabbare än jag kan Något som inte har några känslor att skruva upp mitt system Om det finns minst en eller flera villkor uppfyllda, kommer jag att börja bygga och skriva om algoet. Steg fyra. Allt jag skojar och du ser lite av varför riskhanteringen är super viktig i den här verksamheten. Låt oss diskutera lite om vad denna arbitrage var. Tanken är: Jag undrar om Kraken och Shapeshift har olika priser för samma tillgångar. Detta är ett klassiskt arbitragefall (Kraken och Shapeshift är utbyten). Jag skulle kunna utbyta DAO för ETH på Kraken, överföra ETH till Shapeshift, byta ETH för DAO och skicka dem tillbaka till Kraken och på grund av prisintrång skulle jag sluta med mer DAO än jag ursprungligen började Riskfria pengar, den bästa typen pengar . Du kan tjäna pengar så länge som ETHDAO från Kraken DAOETH från ShapeShift gt 1 (avgifter gas). Mycket enkel formel, rätt Varje cykel var en 2 till 10 återkomst av min huvudstad. Efter ett tag började jag slå gränserna för Shapeshift och jag var tvungen att göra det här parallellt. Frågan är vad du skulle göra om du hade en algoritm som gör dig 10 av dina pengar var 20: e minut. Det dumaste du kan göra är att lägga massor av pengar på det. Om du inte är bekant med det grekiska ordet hybris. anser dig själv lycklig. Hybris är när du tror att du är oövervinnlig, bättre än gudar. Och det här är det största NEJ NEJ du kan göra i handel. Efter några veckor hackades theDAO. 160 miljoner dollar blev stulna (eller ska jag säga frusen) och ingen visste vad som skulle hända. För mig hände detta, 10 minuter innan du gick ombord på ett flygplan för att flyga till New York. Hybris. Eller som människor i USA säger: Fuck. Jag var smart (lycklig) nog att ha goda riskhanteringsvanor (tack Forex). Jag riskerar aldrig någonsin mer att 2 av min kapital, även om det verkar vara den bästa typen av affär. Lyckligtvis blev pengarna återställda och jag kunde dra tillbaka min DAO till Ethereum (men ja, jag köpte in-flight WiFi för att fortsätta med vad som händer). Hela denna erfarenhet är en påminnelse om att det alltid finns saker som du inte kan förutsäga. Saker som du inte kan kontrollera. Det här var en systematisk risk och jag kunde inte ha sett det som kommer. Tryckknappar och byggalgoritmer räcker inte. Korrekt riskhantering och att veta när du behöver ta ett chill-piller är vad som kan hålla dig i spelet. På nästa post lägger jag hela algoritmen och går efter rad. Jag planerar också att diskutera lite mer om theDAO och Ethereum. Om du inte vill sakna någon av dessa och få lite mer information, var god och registrera dig för nyhetsbrevet där jag pratar om fintech, algoritmer och marknaderna. Förresten, om du vill skapa din egen cryptocurrency och lära dig mer om Ethereum, har jag ett bra inlägg med koden som bokas här. Kommande nästa: Dykning in i ETHDAO algotrading-programmet Om du har mer feedback, ping mig på jonromero eller anmäl dig till nyhetsbrevet. Legal outro. Detta är en teknikhandledning om hur man bygger en algotrading-plattform för experiment och FUN. Några förslag här är inte ekonomiska råd. Om du förlorar några (eller alla) pengar på grund av att du följde några handelsråd eller distribuerat detta system i produktion, kan du inte skylla på den här slumpmässiga bloggen (orör mig). Njut på egen risk. Maskininlärning och handel är ett mycket intressant ämne. Det är också ett ämne där du kan spendera massor av tid att skriva kod och läsa papper och då kan ett barn slå dig när du spelar Mario Kart. I nexts inlägg kommer vi att prata om: Optimera poster och utgångar. Detta och bara detta kan göra en massa skillnader i din bankrulle. Beräkna positionsstorlek (om du inte gillar Kelly-kriteriet) Sök eventuell korrelation mellan olika par (parhandel). Jag älskar EURUSD vs GBPJPY korrelation Beräkna stödförstärkare motståndslängder Men vad är maskinlärning Maskininlärningsalgoritmer är algoritmer där en maskin kan identifiera mönster i dina data. Ja, det är så enkelt. Hitta till exempel alla djur i detta foto och rita en låda runt dem. Nämn det djuret. Galen jag vet. För handel som du kan tänka dig är det ganska likt: För att en maskin ska kunna lära måste du lära ut vad som är rätt eller fel (övervakat lärande) eller ge det en stor dataset och låt den bli vild (obesvarad). För att identifiera objekt är detta rakt framåt men vad handlar jag om att se om det finns något maskininlärningsprogram som kan identifiera SR-linjer men till ingen nytta. Så jag bestämde mig för att skriva det första maskinprogrammet i python som identifierar stöd och motståndslinjer i Python. En annan första Hooray Men hur kan en algoritm identifiera dessa områden Hoooooow Ladies and Gents (och robotar), låt mig presentera dig för MeanShift. en oövervakad algoritm som används mest för bildigenkänning och är ganska trivial för installation och körning (men också mycket långsam). Tanken är att denna algoritm låter mig partitionera mina data (forex ticks) i områden och då kan jag använda kanterna som stöd och motståndslinjer. Cool idé men fungerar det Vi analyserar omkring 12 miljoner datapoäng av EURUSD 2014 och ett par månader från 2015. Motståndsledningarna placeras automagiskt av en maskininlärningsalgoritm. Vad som är riktigt coolt (och spöklikt) är att algoritmen nästan spikar det. NAILS det svårt. Det blir väldigt skrämmande när vi ska använda algoritmen för att identifiera mikrostrukturer och börja scalping. Systemet kan hantera alla typer av timeseries-data (aktier, forex, guld, vad som helst) och det kommer att göra ett html-interaktivt diagram (som diagrammet ovan) med dina data och den maskin som genereras SL. Koden är så så galen. Nu kan vi gå igenom koden. När du har din uppsättning data måste du läsa dem och rengöra dem. Förbered dig för några pandaer magi. Vi släpper de tomma värdena (helger) och sedan samplar vi data till 24 timmars ljusstakar (ohcl). Detta gör det mycket lättare att plotta. Gruppdata är de data som vi kommer att mata in i ml-algoritmen. Då förbereder vi de data som vi ska använda i algo. Vid nästa inlägg diskutera hur du gör det här arbetet ännu bättre, diskutera några mycket intressanta resultat (kan algoritmen faktiskt förutsäga framtiden) och börja använda den i vår egen handel. Om du vill kolla nästa artikel och läsa mer om handel och investeringar med hjälp av algoritmer, anmäl dig till nyhetsbrevet. Komma upp nästa: Maskininlärning Gone Wild - Använda koden Om du har mer feedback, ping mig på jonromero eller anmäl dig till nyhetsbrevet. Legal outro. Detta är en teknikhandledning om hur man bygger en algotrading-plattform för experiment och FUN. Några förslag här är inte ekonomiska råd. Om du förlorar några (eller alla) pengar på grund av att du följde några handelsråd eller distribuerat detta system i produktion, kan du inte skylla på den här slumpmässiga bloggen (orör mig). Njut på egen risk. Uppdatering: Maskininlärningsinsatsen kommer att vara episk men det tar så mycket tid att göra koden presentabel. Bär med mig, coola saker kommer (som du läste på nyhetsbrevet) Ansvarsbegränsning: DETTA ÄR INTE SKATTANAD. Det som verkligen förvånar är att majoriteten av förfrågningarna i nyhetsbrevet är: Använd verktyg för att hjälpa Trading Machine Learning att optimera affärer Skatter De två första kan jag förstå. Alla vill bli en bättre näringsidkare. Jag fattar. Men skatter SKATTER Det här är din lyckodag. Forex skatt är super lätt. Allvarligt. Som standard (detta kallas avsnitt 988) kommer alla dina förluster att kompensera dina inkomstskatter utan gränsen på 3k per år. Detta är mycket bättre än aktiehandel där förluster kompenserar dina kapitalvinster. Men vad händer med vinster Varför tar du hand om varför Majoriteten av Forex-handlarna förlorar pengar (jag kallar det att betala undervisning) det första året, så du är bättre att hålla det enkelt tills du har en beprövad och konsekvent strategi. Med detta sagt, om du faktiskt gör en vinst, beskattas du på den kortsiktiga kapitalvinsten (ibland upp till 40). Lösningarna när du börjar tjäna pengar är att välja mellan avsnitt 988 och beskattas enligt avsnitt 1256 där 60 av vinsten beskattas som långsiktiga realisationsvinster och 40 på kort sikt (men nu kan förluster inte kompensera din inkomst). Det här är väldigt bra när du tjänar pengar, väldigt dåligt när du inte gör det. Starta en LLC För människor som just börjat experimentera med Forex och Algotrading, föreslår jag alltid att de stannar med avsnitt 988 (standard) och när de börjar tjäna lite pengar (konsekvent) eller de vill gå på heltid, prata med mig :) Allvarligt finns det så många saker att du kommer att börja göra annorlunda när du går från hobbystadiet till andra inkomster till heltidsjobb som det inte finns någon anledning att överoptimera detta. Kommer upp nästa: Maskininlärning Gone Wild Om du har mer feedback, ping mig på jonromero eller anmäl dig till nyhetsbrevet. Legal outro. Detta är en teknikhandledning om hur man bygger en algotrading-plattform för experiment och FUN. Några förslag här är inte ekonomiska råd. Om du förlorar några (eller alla) pengar på grund av att du följde några handelsråd eller distribuerat detta system i produktion, kan du inte skylla på den här slumpmässiga bloggen (orör mig). Njut på egen risk. Förra gången pratade vi om The for-looper backtester (som jag älskar att kalla dem). Nu är det dags att se någon kod Vi sa att vi har något liknande: python för varje element i readhistoricaldata (): applystrategy () howourstrategydid () Sweet, laddar laddar vår strategi, laddar lite historisk data, kör vår algoritm och skriver ut några resultat Jag föredrar att ha mina strategier i ett JSON-format som innehåller namnet på strategin och vissa specifikationer (som hur många pips för stoploss eller takeprofit etc). På det sättet, när vi väl börjar använda en händelsebaserad backtester, kan vi överföra strategin genom en maskininlärningsalgoritm och försöka optimera den. Nästa rad laddar in våra data. Jag vet att folk inte gillar pickle och det finns andra sätt att ladda data (och vi kommer att prata om BColz någon gång) men för nu bara nakna med mig. Nästa rad är självklarande. Vi skickar historiska data till vårt algo och vi får tillbaka statistik att skriva ut. Lets fokusera på algoritmen lite och vi kan diskutera plotting etc vid en senare tidpunkt. Det magiska av det enkla backtesting systemet Förbered dig för att bli förvånad över hur löjligt lätt att göra detta. Korta följder Vad händer med denna typ av backtesting är det 1. du kommer förmodligen göra misstag när du vill använda exakt samma algoritm 2. Du kan inte skriva en mycket komplex strategi (åtminstone så lätt) 3. Mycket svår att skala (jämfört med händelsebaserad) 4. Du måste ha din simulering och körning på samma språk, men kom ihåg att detta är det bästa och snabbaste sättet att börja ut och ta reda på hur alla dessa saker fungerar. Komma fram nästa, med hjälp av andra kända backtestrar i Python och lägga till egna bilder Om du har mer feedback, ping mig på jonromero eller anmäl dig till nyhetsbrevet. Legal outro. Detta är en teknikhandledning om hur man bygger en algotrading-plattform för experiment och FUN. Några förslag här är inte ekonomiska råd. Om du förlorar några (eller alla) pengar på grund av att du följde några handelsråd eller distribuerat detta system i produktion, kan du inte skylla på den här slumpmässiga bloggen (orör mig). Njut på egen risk. Vad är ett bra algotrading-system utan några snygga strategier att distribuera Nedan finns en lista över strategier som jag hittade online (eller skickade till mig av handlare som finns på nyhetsbrevet). Jag planerar att uppdatera listan som jag fortsätter att komma över till nya idéer. Konceptet är att när vi fortsätter att dyka mer och mer in i vårt algotrading-system, kommer jag att visa dig hur du kodar och distribuerar dessa strategier. Jag vet säkert att de flesta arbetar med minimala förändringar. Värsta fallet scenario, du har ett system för att testa dina antaganden. Här är listan (och skicka mig någon annan strategi som du tycker att den ska inkluderas): Komma upp nästa, dela och diskutera min enklaste (men mest framgångsrika) backtester Om du har mer feedback, ping mig på jonromero eller registrerar dig på nyhetsbrev. Legal outro. Detta är en teknikhandledning om hur man bygger en algotrading-plattform för experiment och FUN. Några förslag här är inte ekonomiska råd. Om du förlorar några (eller alla) pengar på grund av att du följde några handelsråd eller distribuerat detta system i produktion, kan du inte skylla på den här slumpmässiga bloggen (orör mig). Njut på egen risk. Att bygga ett backtest-system är faktiskt ganska enkelt. Lätt att skruva upp menar jag. Även om det finns massor av utmärkta bibliotek där ute (och väl gå igenom dem vid någon tidpunkt), gillar jag alltid att göra det själv för att finjustera det. Från alla backtesting-system som jag har sett kan vi anta att det finns två kategorier: The-loopers Event-generatorer Idag pratar vi väl om för-loopers. För-loopers är min favorit typ av backtesters. De är triviala att skriva och super kul att expandera men de har några viktiga flöden och tyvärr är de flesta backtestrarna där ute för loopers (ps: Jag behöver hitta ett bättre namn för detta). Hur för-loopers fungerar Använda en för loop (som du kanske har gissat). Det är något som här: Mycket enkelt rätt Så här fungerar ett backtesting system som driver en momentumstrategi: Så, vilket är problemet Mycket svårt att skala (horisontellt) Behöver mycket arbete för att hålla din applicationstrategy () som arbetar med backtesting och produktion Du måste ha allt på samma programmeringsspråk Låt oss dyka in i dessa, en efter en. Skalbarhet Jag experimenterade ett par för några veckor sedan med en bergklättringsalgoritm för att optimera en av mina strategier. Det kör fortfarande. Efter två veckor. Och jag bygger uber-skalbara system för att leva. Varför kör det fortfarande Du kan använda multiprocessing. Disko. producenten (med hjälp av ZeroMQ) eller bara trådar för att påskynda detta men vissa problem är inte pinsamt parallellt (ja det här är en faktisk term, inte en av mina färdiga ord). Mängden arbete att skala en backtester så här (speciellt när du vill göra samma maskininlärning ovanpå det) är enormt. Du kan göra det men det är fel sätt. Produktion och backtesting i sync Detta. De gånger jag har blivit biten av detta. Jag kan komma ihåg de förlorade affärer där jag var hm, varför jag gick in i den här handeln eller min gamla tid favorit VARFÖR TRAILING STOP WAS APPLIED NU. Story time: Jag hade en idé för att optimera min strategi, att köra en backtester för att se vad som skulle hända om jag kunde lägga ett efterföljande stopp efter att handeln var lönsam för att alltid säkra vinster. Backtesting fungerade som en charm vid en 13 ökning av vinst och produktion förlorade varje enskild handel. Jag tänkte ut det efter att min algo förlorat 3400 på ett par timmar (en mycket dyr lektion). Att hålla ansökningsstrategin i synkronisering är mycket svår och blir nästan omöjlig när du vill göra det på ett distribuerat sätt. Och du vill inte ha två versioner av din strategi som är nästan identiska. Om du inte har 3400 att spendera. Använda olika språk Jag älskar Python. Och Erlang. Och Clojure. Och J. Och C. Och R. Och Ruby (nej jag hatar verkligen Ruby). Jag vill kunna utnyttja styrkan på andra språk i mitt system. Jag vill prova strategier i R där det finns mycket välprövade bibliotek och det finns ett stort samhälle bakom det. Jag vill ha Erlang att skala min kod och C för att krossa data. Om du vill vara framgångsrik (inte bara i handel) måste du kunna använda alla tillgängliga resurser utan fördomar. Jag har lärt mig massor av att hänga med R-utvecklare om hur du kan delta i hedgeobligationer och visualisera dem eller varför Sharpe-förhållandet kan vara en lögn. Varje språk har en annan folkmassa och du vill att så många människor häller idéer in i ditt system. Om du försöker ha applicationstrategy på olika språk så lycka till med (2). Är du övertygad nu Tja, jag försöker inte övertyga dig som för-loopers är ett bra sätt att köra dina första tester. Det är hur jag började och för många strategier skickar jag dem inte ner till rörledningen. Ett bättre sätt (så att du kan sova på natten) är händelsegeneratorer. Komma upp nästa, dela och diskutera min enklaste (men mest framgångsrika) backtester Om du har mer feedback, ping mig på jonromero eller anmäl dig till nyhetsbrevet. Legal outro. Detta är en teknikhandledning om hur man bygger en algotrading-plattform för experiment och FUN. Några förslag här är inte ekonomiska råd. Om du förlorar några (eller alla) pengar på grund av att du följde några handelsråd eller distribuerat detta system i produktion, kan du inte skylla på den här slumpmässiga bloggen (orör mig). Njut på egen risk. Innan du kör ett live algotrading-system är det en bra metod att backtest (det vill säga köra en simulering) våra algoritmer. Tänk på att detta inte betyder att om ditt system dödar det för de senaste femårsdagarna, kommer det att göra en vinst men det är en bra indikator på att du kan vara på något. Det finns fyra saker som vi måste ta hänsyn till när vi gör vår backtesting: Kvaliteten på data Hur man laddar dem effektivt Hur bygger vi vårt backtesting system Försök att ha vår backtesting och vårt levande system delar lika mycket kod som vi kan idag , vi kommer att fokusera på (1) och (2). För Forex data använder jag GainCapital. Deras data finns i form av fästingar. För en fri källa är det tillräckligt bra. Jag brukade använda Oandas historiska datatjänst men det verkar som om de flyttade den till en premiumprodukt. Synd. Se till att du endast använder GainCapital data för experiment. För andra typer av betald historisk data (ETF, lager, alternativ stc) använder jag eoddata (de har också vissa forex historiska data men jag har inte använt dem). Låter ladda ner data i en vecka och experimentera lite. Länken till data är ratedata. gaincapital20151120NovemberEURUSDWeek1.zip för den första veckan i november 2015. Först måste vi pakka ut filen. python gtunzip EURUSDWeek1.zip och du får en 25MB-fil med namnet EURUSDWeek1.csv. Dessa är data för en vecka för ett valutapar. Du kan tänka dig hur mycket data du behöver för att bearbeta för alla valutor under de senaste fem åren (tips: mycket). Men oroa dig inte, vi ska optimera detta. För tillfället kan vi öppna filen och inspektera. de saker som vi bryr oss om är RateDateTime, RateBid och RateAsk. Som du kan understade varje rad har en tidstämpel och hur mycket var priset att köpa eller sälja. Formater som hämtas av andra tjänster är ganska lika. Det finns många sätt att ladda dessa data till Python, men det mest föredragna när det gäller datasnittning och manipulering använder Pandas. Vi kan alltid använda csv-biblioteket för att ladda data (och det kan bli snabbare) men vi behöver göra några optimeringar och bearbeta först att som du ser det är ganska enkelt med pandor. Ett annat bra verktyg för att ladda TONS of GBs ganska effektivt och mycket snabbt använder Bcolz. omfattas av ett mycket senare inlägg (eller du kan läsa en förhandsgranskning om du har anmält dig i nyhetsbrevet. Manipulera data med hjälp av Pandas De data vi laddade ner är i fästingar. Om inte vi bygger en UHFT-algoritm (ultrahögfrekvenshandel) mycket mer effektivt (minne, lagring och bearbetning) för att gruppera dessa fästingar i sekunder (eller minuter eller timmar beroende på din strategi). Detta kommer att göra vår nedladdningsskala ner från 25 MB till bara 35 KB som översätter till stora prestanda och minnesfördelar. Låt oss gruppera alla dessa data om 15 minuter. Hur tiden ska bli kär i resample. Den resamplerade dataseten ser ut så här: Detta kallas OHLC (Open High Low Close) - fältet för var 15: e minut. Du kan se nu att fästingarna är grupperas i 15 minuters segment och du har den högsta och lägsta punkten som priset uppnådde under de här 15 minuterna och även openclose för köp och försäljning. Rent guld Inte bara har du all information du behöver men nu är det extremt snabbt att ladda det . Du bara måste spara data: och då kan du återanvända den här 35kb-filen. Vi kan skriva en enkel momentumalgoritm som kontrollerar om det var en stor rörelse de senaste 15 minuterna och om så var fallet låter vi köpa. Vi kommer att dyka in i det här i ett senare inlägg. Du kan se koden som alltid på github. Om du har mer feedback, ping mig på jonromero eller anmäl dig till nyhetsbrevet. Legal outro. Detta är en teknikhandledning om hur man bygger en algotrading-plattform för experiment och FUN. Några förslag här är inte ekonomiska råd. Om du förlorar några (eller alla) pengar på grund av att du följde några handelsråd eller distribuerat detta system i produktion, kan du inte skylla på den här slumpmässiga bloggen (orör mig). Njut på egen risk. Innan du bygger några algotrading-system behöver du veta hur man handlar manuellt. Vad det egentligen innebär är att du behöver förlora pengar på egen hand innan du skyller på maskinen. Så enkelt som det. Så, kan vi prata om valutamarknaden eller Forex som de coola killarna kallar det. First of all, why do we choose Forex for algotrading Why dont we become millionaires trading like everybody else Why not just buy Tesla, Amazon, Google, Facebook, Twitter and hope for the best (PS: please read the legal outro at the end of this blog post before buying any stocks). Easy answer. You cannot win (or lose) money fast enough by buying stocks. Forex has a nice (or terrible, depending on which side of the coin you are) thing called leverage . Leverage can be 1:10, 1:50, 1:100, 1:200, 1:1000 depending on how suicidal you are or how sketchy your broker is (dont worry, well talk about brokers in the next post). Lets see an example. We want to place a trade of 1k. The logical thing is that in order to buy something that costs 1k, you need to have in your account 1k, right Nope. You can always get a loan. Oooooooor: Enter leverage. If we have a 1:100 leverage, we can place a trade and control 1k with just 10. For those that failed at math (dont be ashamed, I am one of you), 10 x 100 (leverage) 1,000. That means you can trade big and win big Actually 100 times more big . The catch is that you can actually go 100 times more small . Lets have another example. I just got my bonus (1k) and I want to play on Forex. Without any leverage, I can buy 1,000 Forex units that cost 1 (by the way, there are no Forex units but well talk about this later). How many units can I buy with 1:50 leverage If you answer if 100,000, you did something wrong. The answer is 50,000 (1,000 x 50 leverage). Där har du det. One of the reasons that we are doing Forex, is because you can lose win big. Well get back to leverage when we start placing trades. There are three more exciting reasons actually that are even more awesome (dare to say awesomer). Forex (almost) never sleeps. The markets are open ALL DAY, six days per week. To be more exact, there is not one market but four and they are overlapping providing the all day effect. Forex is very volatile and there are tons of money moving around (more than 5 trillion per day ). Crazy right No fees on trades. You dont pay 10 per trade like you are doing with stocks. Here you pay the spread which is just a fraction of a cent (again, well talk about this in another post). All these reasons (leverage, all-day, volatility, fees) make Forex the most exciting platform to build and deploy your algorithms. Coming up next, Forex brokers. How not to be scammed before even writing a line of code. If you have more feedback, ping me at jonromero or signup to the newsletter. Legal outro. This is an engineering tutorial on how to build an algotrading platform for experimentation and FUN. Any suggestions here are not financial advices. If you lose any (or all) you money because you followed any trading advices or deployed this system in production, you cannot blame this random blog (andor me). Enjoy at your own risk. Det är allt. Every week, I get at least 10 DMs on twitter asking on how to experiment with algotrading, Forex and portfolio analysis and Ive decided that its time to do something about it. Update: Find the posts here . So, I am planning to cover the basics of how to build your own trading platform, write your own strategies and go on vacations while electrons are making you money. Or zeroing your account. Either way, it is going to be fun The majority of the examples are going to be in Python even though there might be parts in Erlang and Ill try to keep it as easy as it can be. Lets talk now about what the final product will look like. We are building a system where you will be able to: Simulate your strategy (this is called backtesting ) Execute your strategy without supervision Alert you via smsemail for trades and errors Be scalable and trivial to deploy new updates Being able to run even from your home (from a raspberrypi for example) I assume this is going to be a total of 20 chapters, give or take. That is a system similar to the one that I am running the last year and includes a UI, sms alerts, backtesting pipeline, continuous delivery and all the cool stuff that us geeks love. All code will be on github and if everything goes well, Ill wrap it up in a book for everyone to enjoy. I have like three chapters almost done, so if you want early access just ping me at - jonromero . These are all the post that have been written up until now. I may addremove post as I get more feedback. I love Forex because: It has enormous amount of data (volume) These data are coming extremely fast (velocity) You need to consider multiple resources when you are building your strategy (variety) My definition of BigData is that you have volume-velocity-variety information and you need to react on it right now (realtime). It is one of the main reasons why I dont like Hadoop (ok, the other is because I dont like Java:). Forex is the best place if you want to start playing with BigData. You have (at least) one data channel, hitting you with data, you need to keep running algorithms on this stream (sometimes doing correlations up to a week) and you need be able to respond very fast. If a garbage collector kicks in or if you need to grab data from a database (even if this DB is in memory - long live Redis) then you will have issues. Thats the reason why most of the trading databases have all their data in the same memory space and have custom languages doing the analysis (like Kdb ). That was the inspiration for LDB. Millions of data sources (mobile phones), hitting your database and calculatingupdating for each one of the requests thousands of counters and running all sorts of algorithms. Per request. In realtime. But lets face it. The vast majority of userscompanies will never have millions (or even thousands) of requests hitting their servers. Thats why I started a new opensource database with codename: HybrisDB. HDB has the following characteristics: Simple to install (no moving parts) Simple to use (pre-defined dashboards) It will be perfect for the 99 of userscompanies but not for the 1 like Facebook or Google (sacrificing Enterprise features) The concept is to have a dashboard, to watch indicators going onoff and then (maybe) connect to a system to place an order. Sounds like an interesting cool hobby project and I still try to decide between using Erlang or Clojure for this. Ping me on twitter if you have any ideas One of my new years resolution was study one of your habits each month and I decided to focus on what activities I am spending my online time. So, I installed RescueTime which is a very cool app that sits on the background and creates reports about which apps and sites you are using the most. And no, it is not sending that info to NSA (you are not that important). Even though I spent most of my time working, writing and communicating, I also spent around 2 hours on average on Facebook (gasp). No biggie. What I hated was that for the majority of times I was scrollingrefreshing for new updates. Like opening your refrigirator every two minutes even though you know it is empty Damn you habits So, spending 2 hours every day (sometimes more) on Facebook, means 60 hours per month or 7 working days . 7 freaking working days each month. 7 days, each day with 8 full hours, to sleep, go out, exercise, write a book, learn something new. What I did was installing StayFocused. a free plugin for your browser that doesnt let you spent more than 10 minutes on specific sites everyday. And guess what. The I am just using facebook to communicate is such a lame excuse as I had no problem communicating with my friends, even by using facebook for 10 minutes. Now, give it a shot and tell me what you built in your spare time

No comments:

Post a Comment