Thursday 12 October 2017

Clojure Trading System


Teknisk bibliotek Stor dataarkitektur og mønstre, Del 4: Forstå atom - og komposittmønstre for store dataløsninger Mønstrene som er dekket i denne artikkelen, hjelper deg med å definere parametrene til en stor dataløsning. Artikkelen adresserer de vanligste og gjentatte store dataproblemer og - løsninger. Atommønstrene beskriver de typiske tilnærmingene for å konsumere, behandle, få tilgang til og lagre store data. Sammensatte mønstre, som består av atommønstre, er klassifisert i henhold til omfanget av den store dataløsningen. Fordi hvert komposittmønster har flere dimensjoner, er det mange variasjoner av hvert mønster. Mønstrene gjør det mulig for forretnings - og tekniske brukere å anvende en strukturert tilnærming til å etablere omfanget og definere høynivåløsningen for et stort dataproblem. Stor dataarkitektur og mønstre Del 3: Forstå de arkitektoniske lagene i en stor dataløsning De logiske lagene i en stor dataløsning hjelper deg med å definere og kategorisere de ulike komponentene som kreves for en stor dataløsning som må adressere funksjonelle og ikke-funksjonelle krav til en gitt forretningssak. Dette settet med logiske lag beskriver de kritiske komponentene i en stor dataløsning fra det punktet der data er anskaffet fra ulike datakilder til analysen som kreves for å utlede forretningsinnsikt til prosesser, enheter og mennesker som trenger innsikt. Stor dataarkitektur og mønstre, Del 1: Introduksjon til stor dataklassifisering og arkitektur Store dataproblemer er ofte komplekse for å analysere og løse. Det store volumet, hastigheten og variasjonen av dataene gjør det vanskelig å trekke ut informasjon og forretningsinnsikt. Et godt første skritt er å klassifisere det store dataproblemet i henhold til formatet av dataene som må behandles, typen analyse som skal brukes, prosesseringsteknikkene på jobb og datakilder for dataene som målsystemet er påkrevet å anskaffe, laste, behandle, analysere og lagre. Stor dataarkitektur og mønstre, Del 2: Hvordan vite om en stor dataløsning passer for din organisasjon Denne artikkelen beskriver en dimensjonsbasert tilnærming for å vurdere levedyktigheten til en stor dataløsning. Ved å svare på spørsmål som undersøker hver dimensjon, bruk hva du vet om ditt eget miljø for å avgjøre om en stor dataløsning er hensiktsmessig. Et forsiktig blikk på hver dimensjon gir spor om hvorvidt tiden for de store datatjenestene dine skal utvikle seg. Stor dataarkitektur og mønstre, Del 5: Bruk et løsningsmønster for ditt store dataproblem og velg produktene for å implementere det. Ved hjelp av en scenariobasert tilnærming skisserer denne artikkelen løsningsmønstre som kan bidra til å definere din store dataløsning. Hvert scenario starter med et forretningsproblem og beskriver hvorfor en stor dataløsning kreves. Et bestemt løsningsmønster (består av atom - og sammensatte mønstre) brukes på forretningsscenariet. Denne trinnvise tilnærmingen bidrar til å identifisere komponentene som kreves for løsningen. I slutten av artikkelen er det foreslått noen typiske produkter og verktøy. Første inntrykk teller. Vær forsiktig når du fullfører søknaden. Opptakskomiteen møtes en gang i uken for å vurdere søkere. De fleste vellykkede søkere har en kombinasjon av sterke akademikere, ekstrakurselle interesser og en lidenskap for å skryte ut i deres fremtidige karriere. Steder på våre programmer er allokert på først til mølle. Vel, gi deg beskjed innen ti virkedager hvis du lykkes. Lev, jobb, studere ambulanse i utlandet. Ikke kompromiss. Intern, lære, lede, vokse amp utforske i en global by. Ta tak i dagens amp sikker i morgen. Ikke kompromiss. Opplevelsen av livet øker ferdighetene til å vare deg i livet. Utforsk forsterker akselerere karrieren din. Ikke kompromiss. Oppdag potensialet ditt på veien til å realisere det. Vi er stolte medlemmer av følgende foreninger: CI er en akselerert læringsleverandør. Vi tilbyr nedsenkende opplæringsprogrammer for studenter, nyutdannede og tidlige karrierevekslere. Oppdatering: Jeg oppdaterte koden slik at den fungerer med Oandas nye API. Få det her Tid til å snakke om meglere, hvordan du plasserer en handel programmatisk og viktigst hvordan du ikke blir lurt. En megler er ikke mer enn et selskap som lar deg handle (kjøpe eller selge) eiendeler på et marked gjennom plattformen. Det som er veldig viktig for algotrading er: Mekleren tilbyr en API for at vi skal kunne bestille. Du kan få en demo-konto for å kjøre scenemiljøet ditt og eksperimentere. Spredningen er så liten som mulig. I vårt tilfelle bryr vi oss ikke om spredning som vi ikke vil gjøre High Frequency Trading når som helst snart. Selv om meglere er regulert, har det vært hendelser de siste par årene, hvor meglere falt på grunn av visse forhold. Vær svært skeptisk hvis det ikke er noen vurderinger av megleren på internett (eller de fleste er dårlige) Hvis megleren gir deg litt gal innflytelse (som 1: 200) Hvis megleren ser ut til å være i et veldig merkelig land Hva kan skje er at du begynner å tjene penger og du ikke kan trekke dem ut. Alvor. Super stressende situasjon. Men vi kan bytte til et lykkeligere notat som åpner en konto og plasserer vår første programmatiske handel. Whooha Jeg bruker Oanda som megler (jeg er ikke tilknyttet dem), og de tilbyr en ganske anstendig API, biblioteker på github og en gratis demo-konto. Når du logger deg på demo-kontoen, går du til Administrer API-tilgang. Der kan du finne API-nøkkelen som vi skal bruke i vårt system for å plassere handler. Pass på at du ikke deler denne nøkkelen. Koden for dette er og alle andre innlegg er på github, og du kan installere det og kjøre det ganske enkelt. Oppdatering: Oanda utgitt en ny (kickass) utførelsesmotor kalt v20 og de har gitt ut en ny (forbedret) API. Dette innlegget har blitt oppdatert for å kunne bruke den nye API, men hvis (av en eller annen grunn) du vil sjekke den gamle koden, er den her. Du er heldig du Koble til Oanda trenger en conf-fil - som du kan generere ved hjelp av et skript som Oanda gir her, eller du kan bare lage det selv. Hvorfor vil du ha det Først av alt når det gjelder legitimasjon (og mine penger), foretrekker jeg å vite alt som skjer. Og jeg liker ikke å måtte installere PyYAML bare for å lese en conf-fil. Ta gjerne med hver metode. Nå, forberede deg til å bli overrasket. Koden er rett fram. Vi initialiserer API: og nå kan vi legge inn en bestilling (kjøp 5000 enheter EURUSD). Sjekk nåværende pris er like enkelt. Super enkelt. Ikke bekymre deg for hva EURUSD er, eller hvor mange enheter vi kjøper eller hva en markedsordre er. For nå har vi plassert vår første handel fra vår bærbare og vi skal bygge vår egen API for å plassere handler. Spennende ting Du kan lese Oandas dokumentasjon her for å se hva annet du kan gjøre med API-en, og finn Python-biblioteket her. Det finnes eksempler på Oandas github-side her. Kommer opp neste, koble til et ekte LIVE algotrading-system, som kjører fra min RaspberryPI hjemme. Du vil kunne se det (nesten) endelige programmet som kjører og godt snakke mer om Forex og strategier. Hvis du har mer tilbakemelding, ping meg på jonromero eller påmelding til nyhetsbrevet. Juridisk outro. Dette er en teknisk veiledning om hvordan man bygger en algotrading-plattform for eksperimentering og FUN. Eventuelle forslag her er ikke økonomiske råd. Hvis du mister noen (eller alle) pengene dine fordi du fulgte noen handelsråd eller distribuert dette systemet i produksjon, kan du ikke klandre denne tilfeldige bloggen (andor meg). Nyt på egen risiko. Dette er mer av en Slik bygger du din egen algotrading-strategi - Ethereum-utgaven og ikke en fortjeneste for fortjeneste. Det er også et reelt eksempel med reell avkastning (og ekte produksjonsfeil som koster meg penger) hvor du kan se hvordan du identifiserer muligheter, hvorfor alotrading er kjempebra og hvorfor risikostyring kan redde deg. Jeg får dette spørsmålet nesten daglig. Hvordan kan jeg finne en god strategi Hvordan kan jeg bygge mitt eget Må jeg ha PhD i matematikk Statistikk Newsflash: Hvis jeg kan skrive en strategi, kan noen skrive en strategi. Stol på meg på det. Det eneste trikset er å lete etter en enkel. Oppdatering: Dette innlegget har blitt omskrevet minst fem ganger (da The DAO drama escalated), og det er det perfekte eksempelet på en strategi som gjør en full sirkel. Jeg begynte å bli involvert i Ethereum tidlig da jeg virkelig likte å kjøre algoritmer på blockchain-tingen. Når TheDAO kom ut, leste jeg alt om det og elsket ideen. Du trenger ikke å forstå hva Ethereum, theDAO, blockchain er på dette punktet (jeg lover at jeg vil ramble på et annet innlegg). De samme ideene gjelder for Forex, aksjer selv Pokemon baller. Mine fire trinn - kaptein åpenbart - system Jeg personlig, har en bestemt måte at jeg jobber. Steg en . Identifiser en ide. Min ide i dette tilfellet er at det er et par utvekslinger som tilbyr Ethereum og DAO tokens. Hva om det var en arbitrage mellom de to trinnene. Test testen manuelt. Hvis noe fungerer, er jeg på noe. Alt jeg måtte gjøre er å utføre alle trinnene manuelt og skrive ned eventuelle avgifter, vilkår eller noe som skal dokumenteres. Trinn tre. Automatiser denne algoritmen er ikke en høyfrekvent handelsalgoritme. Det er en betydelig mengde tidsrisiko (som du kan eliminere så vel se senere), men det jeg gjorde kunne gjøres manuelt. Problemet er at jeg må bruke hele tiden foran datamaskinen min, sjekke om det er en arbitrage-tilstand, og hvis det var det, måtte jeg handle raskt og uten å rote opp. Åh, og jeg måtte rekruttere fem av vennene mine for å skille dette opp. Lang historie kort, jeg tilbrakte presidentens dag og skrev et enkelt program som vil spille av alle mine manuelle trinn. Programmet ville krasje og det var ikke mer enn 100 linjer med kode. Dette er datainsamlingsstadiet der jeg ser om det er en fordel at algoritmer kan gi meg. Fordelene kan være: Noe som blir automatisert og løper 1000 ganger per sekund eller 1000 ganger parallelt Noe som tenker raskere enn jeg kan Noe som ikke har noen følelser å skru opp systemet mitt Hvis det er minst en eller flere forhold oppfylt, vil jeg begynne å bygge og omskrive algoet. Trinn fire. Alt i jeg tuller og ser deg litt, hvorfor risikostyring er super viktig i denne virksomheten. La oss diskutere litt om hva dette arbitraget var. Tanken er: Jeg lurer på om Kraken og Shapeshift har forskjellige priser for de samme eiendelene. Dette er en klassisk arbitrage sak (Kraken og Shapeshift er utveksling). Jeg kunne bytte DAO til ETH på Kraken, overføre ETH til Shapeshift, bytte ETH til DAO og sende dem tilbake til Kraken, og på grunn av prissammenheng vil jeg ende opp med mer DAO enn jeg først startet. Risikofri penger, den beste typen penger . Du kan tjene penger så lenge ETHDAO fra Kraken DAOETH fra ShapeShift gt 1 (avgifter gass). Veldig enkel formel, rett Hver syklus, var en 2 til 10 retur av hovedstaden min. Etter en stund begynte jeg å treffe grensene for Shapeshift, og jeg måtte gjøre dette løp parallelt. Spørsmålet er hva du ville gjøre hvis du hadde en algoritme som gir deg 10 av pengene dine hvert 20. minutt. Den dumeste tingen du kan gjøre er å sette tonn penger inn i den. Hvis du ikke er kjent med det greske ordet hybris. anser deg selv heldig. Hybris er når du tror at du er uovervinnelig, bedre enn gud. Og dette er det største NEI NEI du kan gjøre i handel. Etter et par uker ble theDAO hacket. 160 millioner dollar ble stjålet (eller skal jeg si frossen) og ingen visste hva som skulle skje. For meg, dette skjedde, 10 minutter før ombordstigning et fly for å fly til New York. Hybris. Eller som folk i USA sier: Fuck. Jeg var smart (heldig) nok til å ha gode risikostyringsvaner (takk Forex). Jeg risikerer aldri mer enn 2 av hovedstaden min, selv om det virker som den beste typen avtale. Heldigvis ble pengene gjenopprettet, og jeg kunne trekke min DAO tilbake til Ethereum (men ja, jeg kjøpte WiFi i fly for å holde tritt med hva som skjer). Denne hele opplevelsen er en påminnelse om at det alltid finnes ting du ikke kan forutsi. Ting du ikke kan kontrollere. Dette var en systematisk risiko, og det var ingen måte jeg kunne ha sett den på. Pushing knapper og bygningsalgoritmer er ikke nok. Riktig risikostyring og vite når du trenger å ta en chill-pille, er det som kan holde deg i spillet. På neste innlegg vil jeg legge inn hele algoritmen og gå linje for linje. Jeg planlegger også å diskutere litt mer om theDAO og Ethereum. Hvis du ikke vil gå glipp av noen av disse og få litt mer informasjon, kan du registrere deg for nyhetsbrevet der jeg snakker om fintech, algoritmer og markedene. Forresten, hvis du vil lage din egen cryptocurrency og lære mer om Ethereum, har jeg et flott innlegg med koden som er lagt inn her. Kommer neste: Dykking i ETHDAO algotrading-programmet Hvis du har mer tilbakemelding, ping meg på jonromero eller påmelding til nyhetsbrevet. Juridisk outro. Dette er en teknisk veiledning om hvordan man bygger en algotrading-plattform for eksperimentering og FUN. Eventuelle forslag her er ikke økonomiske råd. Hvis du mister noen (eller alle) pengene dine fordi du fulgte noen handelsråd eller distribuert dette systemet i produksjon, kan du ikke klandre denne tilfeldige bloggen (andor meg). Nyt på egen risiko. Maskininnlæring og handel er et veldig interessant emne. Det er også et emne hvor du kan bruke mye tid på å skrive kode og lese papirer, og så kan et barn slå deg mens du spiller Mario Kart. I nexts innleggene, skal vi snakke om: Optimaliser oppføringer og utganger. Dette og bare dette kan gjøre en tonn forskjell i bankrullet ditt. Beregn stillingsstørrelse (hvis du ikke liker Kelly-kriterium) Finn mulig sammenheng mellom forskjellige par (parhandel). Jeg elsker EURUSD vs GBPJPY-korrelasjonen Beregn støtteforsterker motstands-linjer Men hva er maskinlæring Maskininnlæringsalgoritmer er algoritmer hvor en maskin kan identifisere mønstre i dataene dine. Yeap, det er så enkelt. Finn for eksempel alle dyrene i dette bildet og tegne en boks rundt dem. Også nevne det dyret. Galt jeg vet. For handel som du kan forestille deg, er det ganske like: For at en maskin skal lære, må du lære det som er riktig eller galt (veiledet læring) eller gi den et stort datasett og la det bli villt (uten tilsyn). For å identifisere objekter er dette rett fram, men hva med handel, jeg så meg rundt for å se om det er noe maskinlæringsprogram som kan identifisere SR-linjer, men til ingen nytte. Så jeg bestemte meg for å skrive det første maskinlæringsprogrammet i python som identifiserer støtte - og motstandslinjer i Python. En annen første Hooray Men hvordan kan en algoritme identifisere disse områdene Hoooooow Ladies og herrer (og roboter), la meg introdusere deg til MeanShift. En ikke-overvåket algoritme som brukes mest for bildegjenkjenning, og er ganske trivial å installere og kjøre (men også veldig sakte). Tanken er at denne algoritmen lar meg partisjonere dataene mine (forex ticks) i områder, og så kan jeg bruke kantene som støtte - og motstandslinjer. Kult ide, men fungerer det Vi analyserer rundt 12 millioner datapoints av EURUSD i 2014 og et par måneder av 2015. Modstandslinjene er plassert automagisk av en maskinlæringsalgoritme. Hva er virkelig kult (og uhyggelig) er at algoritmen ganske mye negler det. NAILS det vanskelig. Det blir veldig uhyggelig når vi skal bruke algoritmen for å identifisere mikrostrukturer og begynne å scalping. Systemet kan behandle alle slags timeseries-data (aksjer, forex, gull, uansett) og det vil gjengi et HTML-interaktivt diagram (som diagrammet ovenfor) med dataene dine og maskinen generert SL. Koden er her, så vær gal. Nå kan vi gå gjennom koden. Etter at du har ditt sett med data, må du lese dem og rense dem. Forbered deg på noen pandaer magi. Vi slipper de tomme verdiene (helgene), og vi samler dataene til 24 timer lysestaker (ohcl). Dette gjør det mye lettere å plotte. Gruppedata er de dataene som vi vil mate inn i ml-algoritmen. Da utarbeider vi dataene som vi skal bruke i algoen. På neste innlegg diskuterer du hvordan du gjør dette arbeidet enda bedre, diskuter noen svært interessante resultater (kan algoritmen faktisk forutsi om fremtiden) og begynne å bruke den i vår egen handel. Hvis du vil sjekke den neste artikkelen og lese mer om handel og investere ved hjelp av algoritmer, registrer deg på nyhetsbrevet. Kommer opp neste: Maskinopplæring Gone Wild - Bruk koden Hvis du har mer tilbakemelding, ping meg på jonromero eller registrerer deg på nyhetsbrevet. Juridisk outro. Dette er en teknisk veiledning om hvordan man bygger en algotrading-plattform for eksperimentering og FUN. Eventuelle forslag her er ikke økonomiske råd. Hvis du mister noen (eller alle) pengene dine fordi du fulgte noen handelsråd eller distribuert dette systemet i produksjon, kan du ikke klandre denne tilfeldige bloggen (andor meg). Nyt på egen risiko. Oppdatering: Maskinlæringsposten skal være episk, men det tar så mye tid å gjøre koden presentabel. Bær med meg, det kommer kule ting (som du har lest på nyhetsbrevet). Ansvarsfraskrivelse: DETTE ER IKKE TAX-RÅD. Det som virkelig er overraskende er at flertallet av forespørslene i nyhetsbrevet er: Bruk verktøy for å hjelpe Trading Machine Learning for å optimalisere handel Skatter De to første kan jeg forstå. Alle ønsker å være en bedre handelsmann. Jeg forstår. Men skatt SKATT Dette er din heldige dag. Forex skatt er super enkelt. Alvor. Som standard (dette kalles Seksjon 988), vil alle tapene motregne inntektsskattene uten 3k grensen per år. Dette er mye bedre enn aksjehandel hvor tap kompenserer kapitalgevinstene dine. Men hva skjer med gevinster HVORFOR BRUKER DU HVORFOR Flertallet av Forex-forhandlerne mister penger (jeg kaller det å betale undervisning) det første året, så du har det bedre å holde det enkelt før du har en bevist og konsistent strategi. Når det er sagt, hvis du faktisk tjener en fortjeneste, blir du beskattet til kortsiktig kapitalgevinst (noen ganger opptil 40). Løsningene til når du begynner å tjene penger er: Å velge fra § 988 og bli beskattet i henhold til § 1256 hvor 60 av fortjenesten er beskattet som langsiktige kapitalgevinster og 40 som kort sikt (men nå kan tap ikke kompensere inntektene dine). Dette er veldig bra når du tjener penger, veldig dårlig når du ikke. Start en LLC For folk som nettopp har begynt å eksperimentere med Forex og algotrading, foreslår jeg alltid at de forblir med Seksjon 988 (standard) og når de begynner å tjene penger (konsekvent) eller de vil gå på full tid, snakk med meg :) Alvorlig er det så mange ting som du vil begynne å gjøre annerledes når du går fra hobbystadiet til andre inntekter til heltidsjobb, at det ikke er grunn til å overoptimalisere dette. Kommer opp neste: Maskinlæring Gone Wild Hvis du har mer tilbakemelding, ping meg på jonromero eller påmelding til nyhetsbrevet. Juridisk outro. Dette er en teknisk veiledning om hvordan man bygger en algotrading-plattform for eksperimentering og FUN. Eventuelle forslag her er ikke økonomiske råd. Hvis du mister noen (eller alle) pengene dine fordi du fulgte noen handelsråd eller distribuert dette systemet i produksjon, kan du ikke klandre denne tilfeldige bloggen (andor meg). Nyt på egen risiko. Sist gang vi snakket om The for-looper backtester (som jeg elsker å kalle dem). Nå er det tid for å se noen kode Vi sa at vi har noe slikt: python for hvert element av readhistoricaldata (): applystrategy () howourstrategydid () Søt, la oss laste vår strategi, laste inn noen historiske data, kjøre vår algoritme og skrive ut noen resultater Jeg foretrekker å ha mine strategier i et JSON-format som inneholder navnet på strategien og noen spesifikasjoner (som hvor mange pips for stoploss eller takeprofit etc). På den måten, når du begynner å bruke en eventbasert backtester, kan vi passere strategien gjennom en maskinlæringsalgoritme og prøve å optimalisere den. Neste linje laster inn dataene våre. Jeg vet at folk ikke liker pickle og andre måter å laste inn data på (og vi skal snakke om BColz på et tidspunkt), men for nå, bare bare med meg. Neste linje er selvforklarende. Vi sender de historiske dataene til vårt algo, og vi får tilbake noen statistikk for å skrive ut. Lets fokusere på algoritmen litt, og vi kan diskutere plotting etc på et senere tidspunkt. Den magiske av det enkle backtesting systemet Forbered deg på å bli overrasket over hvor latterlig lett å gjøre dette. Korte komninger Hva skjer med denne typen backtesting er at 1. du vil sannsynligvis gjøre feil når du vil bruke nøyaktig samme algoritme 2. Du vil ikke kunne skrive en svært kompleks strategi (minst så lett) 3. Veldig vanskelig å skalere (i forhold til hendelsesbasert) 4. Du må ha simuleringen og utførelsen på samme språk, men husk at dette er den beste og raskeste måten å starte og finne ut hvordan alle disse tingene fungerer. Kommer opp neste, ved hjelp av andre kjente backtestere i Python og legger til grafer til vår egen. Hvis du har mer tilbakemelding, kan du ringe meg på jonromero eller registrere deg på nyhetsbrevet. Juridisk outro. Dette er en teknisk veiledning om hvordan man bygger en algotrading-plattform for eksperimentering og FUN. Eventuelle forslag her er ikke økonomiske råd. Hvis du mister noen (eller alle) pengene dine fordi du fulgte noen handelsråd eller distribuert dette systemet i produksjon, kan du ikke klandre denne tilfeldige bloggen (andor meg). Nyt på egen risiko. Hva er et godt algotrading-system uten noen ryddige strategier for å distribuere Nedenfor er det en liste over strategier jeg fant på nettet (eller sendt til meg av handelsmenn som er på nyhetsbrevet). Jeg planlegger å oppdatere listen som jeg fortsetter å komme over til nye ideer. Konseptet er at når vi fortsetter å dykke mer og mer inn i vårt algotrading-system, vil jeg vise deg hvordan du koder og distribuerer disse strategiene. Jeg vet sikkert at de fleste arbeider med små endringer. Verste tilfelle scenario, har du et system for å teste dine forutsetninger. Her er listen (og send meg en annen strategi som du tror at den skal inkluderes): Kommer opp neste, deling og diskusjon av min enkleste (men mest vellykkede) backtester Hvis du har mer tilbakemelding, ping meg på jonromero eller registrerer deg på nyhetsbrev. Juridisk outro. Dette er en teknisk veiledning om hvordan man bygger en algotrading-plattform for eksperimentering og FUN. Eventuelle forslag her er ikke økonomiske råd. Hvis du mister noen (eller alle) pengene dine fordi du fulgte noen handelsråd eller distribuert dette systemet i produksjon, kan du ikke klandre denne tilfeldige bloggen (andor meg). Nyt på egen risiko. Å bygge et backtest-system er faktisk ganske enkelt. Lett å skru opp, jeg mener. Selv om det er tonnevis med gode biblioteker der ute (og vel gå gjennom dem på et tidspunkt), liker jeg alltid å gjøre dette på egen hånd for å finjustere det. Fra alle backtesting-systemene jeg har sett, kan vi anta at det er to kategorier: For-loopers Event-generatorer I dag snakker godt om forløpere. For-loopers er min favoritt type backtesters. De er trivielle å skrive og super morsomme å utvide, men de har noen viktige strømmer og dessverre er flertallet av backtesters der ute forløpere (ps: Jeg må finne et bedre navn for dette). Hvordan forløpere jobber Bruk en forløp (som du kanskje har gjettet). Det er noe slikt: Veldig enkelt rett Slik fungerer det et backtesting system, som driver en momentumstrategi: Så, hva er problemet Svært vanskelig å skalere (horisontalt) Trenger mye arbeid for å holde søknadsstrategien din () jobber med backtesting og produksjon Du må ha alt i det samme programmeringsspråket Lar deg dykke inn i disse, en etter en. Skalerbarhet Jeg eksperimenterte et par for noen uker siden med en fjellklatringsalgoritme for å optimalisere en av mine strategier. Det kjører fortsatt. Etter to uker. Og jeg bygger uber-skalerbare systemer for å leve. Hvorfor kjører det fortsatt Du kan bruke multiprosessering. Disco. produsent (med ZeroMQ) eller bare tråder for å øke hastigheten på dette, men noen problemer er ikke pinlig parallelt (ja, dette er en faktisk term, ikke en av mine ferdige ord). Mengden arbeid for å skala en backtester som dette (spesielt når du vil gjøre samme maskinlæring på toppen av det) er enorm. Du kan gjøre det, men det er feil vei. Produksjon og backtesting i synkronisering Dette. Tider jeg har blitt bitt av dette. Jeg kan huske de tapte handlingene hvor jeg var hm, hvorfor jeg gikk inn i denne handelen eller min gamle tid favoritt HVOR TRAILING STOP WAS APPLIED NOW. Historie tid: Jeg hadde en ide for å optimalisere strategien min, for å kjøre en backtester for å se hva som ville skje hvis jeg kunne sette et stoppested etter at handelen var lønnsom for alltid å sikre fortjeneste. Backtesting fungerte som en sjarm på en 13 økning i inntjening og produksjon mistet hver eneste handel. Jeg skjønte det da min algo mistet 3400 om et par timer (en veldig dyr leksjon). Å holde applicationstrategy i synkronisering er svært vanskelig og blir nesten umulig når du vil gjøre det på en distribuert måte. Og du vil ikke ha to versjoner av strategien din som er nesten identiske. Med mindre du har 3400 til overs. Bruke forskjellige språk Jeg elsker Python. Og Erlang. Og Clojure. Og J. Og C. Og R. And Ruby (nei egentlig, jeg hater Ruby). Jeg vil være i stand til å utnytte styrken til andre språk i systemet mitt. Jeg vil prøve strategier i R hvor det er svært velprøvde biblioteker, og det er et stort samfunn bak det. Jeg vil ha Erlang å skala min kode og C for å knase data. Hvis du vil være vellykket (ikke bare i handel), må du kunne bruke alle tilgjengelige ressurser uten fordommer. Jeg har lært tonnevis av ting fra å henge ut med R-utviklere angående hvordan du kan delta på sikringsobligasjoner og visualisere dem eller hvorfor Sharpe-forholdet kan være en løgn. Hvert språk har en annen mengde, og du vil ha så mange folk som henter ideer inn i systemet ditt. Hvis du prøver å ha applicationstrategy på forskjellige språk, lykke til med (2). Er du overbevist nå Nå, jeg prøver ikke å overbevise deg som for-loopers er en fin måte å kjøre dine første tester på. Det er hvordan jeg startet og for mange strategier sender jeg dem ikke til rørledningen. En bedre måte (slik at du kan sove om natten) er hendelsesgeneratorene. Kommer opp neste, deling og diskusjon av min enkleste (men mest vellykkede) backtester Hvis du har mer tilbakemelding, ping meg på jonromero eller påmelding til nyhetsbrevet. Juridisk outro. Dette er en teknisk veiledning om hvordan man bygger en algotrading-plattform for eksperimentering og FUN. Eventuelle forslag her er ikke økonomiske råd. Hvis du mister noen (eller alle) pengene dine fordi du fulgte noen handelsråd eller distribuert dette systemet i produksjon, kan du ikke klandre denne tilfeldige bloggen (andor meg). Nyt på egen risiko. Før du kjører et live algotrading-system, er det en god praksis å backtest (det vil si kjøre en simulering) våre algoritmer. Husk at dette ikke betyr at hvis systemet ditt dreper det for de siste femårsdagene, vil det tjene penger, men det er en god indikator på at du kan være på noe. Det er fire ting vi må ta hensyn til når vi gjør vår backtesting: Kvaliteten på dataene Hvordan laste dem effektivt Hvordan bygge vårt backtesting system Prøv å ha vår backtesting og vårt live system dele så mye kode som vi kan i dag , vi skal fokusere på (1) og (2). For Forex data bruker jeg GainCapital. Deres data er i form av flått. For en fri kilde er det bra nok. Jeg pleide å bruke Oandas historiske datatjeneste, men det virker som om de flyttet det til et premiumprodukt. Synd. Kontroller at du kun bruker GainCapital data for eksperimentering. For andre typer betalt historisk data (ETFer, aksjer, opsjoner stc), bruker jeg eoddata (de har også noen forex historiske data, men jeg har ikke brukt dem). Lar laste ned data i en uke og eksperimentere litt. Lenken til dataene er ratedata. gaincapital20151120NovemberEURUSDWeek1.zip for den første uken i november 2015. Først må vi pakke ut filen. python gtunzip EURUSDWeek1.zip og du får en 25 MB fil med navnet EURUSDWeek1.csv. Dette er data for en uke for ett valutapar. Du kan forestille deg mengden data du trenger for å behandle for alle valutaer de siste fem årene (hint: mye). Men ikke bekymre deg, vi skal optimalisere dette. For nå kan vi åpne filen og inspisere. de tingene vi bryr oss om er RateDateTime, RateBid og RateAsk. Som du kan understade hver linje har en tidsstempel og hvor mye var prisen å kjøpe eller selge. Formatene som lastes ned av andre tjenester, er ganske like. Det er mange måter å laste disse dataene på i Python, men det mest foretrukne når det gjelder datasnitt og manipulering bruker Pandas. Vi kan alltid bruke csv biblioteket til å laste inn data (og det kan være raskere), men vi må gjøre noen optimaliseringer og behandling først, slik som du vil se det er ganske enkelt med pandas. Et annet flott verktøy for å laste TONS of GBs ganske effektivt og veldig fort, bruker Bcolz. dekket i et mye senere innlegg (eller du kan lese en forhåndsvisning hvis du har registrert deg i nyhetsbrevet. Manipulere data ved hjelp av Pandas Dataene vi lastet ned er i flått. Med mindre vi bygger en UHFT (ultra high frequency trading) algoritme, er det mye mer effektiv (minne, lagring og prosessering) for å gruppere disse flåttene i sekunder (eller minutter eller timer avhengig av strategien din). Dette vil gjøre nedlastingsskalaen din nede fra 25MB til bare 35KB som oversetter til store ytelser og minnefordeler. La oss gruppere alle disse dataene på 15 minutter. Hvordan tiden kommer til å bli forelsket i resample. Resampled datasettet ser slik ut: Dette kalles OHLC (Open High Low Close) - linjen for hvert 15. minutt. Du kan se nå at flåttene er gruppert i 15 minutters segmenter og du har det høyeste og laveste punktet som prisen nådde i løpet av disse 15 minuttene og også openclose for kjøp og salg. Rent gull Ikke bare har du all den informasjonen du trenger, men nå er det ekstremt raskt å laste det . Du bare må lagre dataene: og så kan du bruke denne 35 kb filen igjen. Vi kan skrive en enkel momentumalgoritme som sjekker om det var en stor bevegelse de siste 15 minuttene, og hvis det var tilfelle, lar vi kjøpe. Vi vil dykke inn i dette i et senere innlegg. Du kan se koden som alltid på github. Hvis du har mer tilbakemelding, ping meg på jonromero eller påmelding til nyhetsbrevet. Juridisk outro. Dette er en teknisk veiledning om hvordan man bygger en algotrading-plattform for eksperimentering og FUN. Eventuelle forslag her er ikke økonomiske råd. Hvis du mister noen (eller alle) pengene dine fordi du fulgte noen handelsråd eller distribuert dette systemet i produksjon, kan du ikke klandre denne tilfeldige bloggen (andor meg). Nyt på egen risiko. Før du bygger noen algotrading-systemer, må du vite hvordan du handler manuelt. Det som egentlig betyr er at du trenger å miste penger på egen hånd før du skylder på maskinen. Så enkelt som det. Så, kan vi snakke om valuta eller Forex som de kule gutta kaller det. Først og fremst, hvorfor velger vi Forex for algotrading Hvorfor blir vi ikke millionærer som alle andre? Hvorfor ikke bare kjøpe Tesla, Amazon, Google, Facebook, Twitter og håper det beste (PS: vær så snill å lese det juridiske utroet på slutten av dette blogginnlegget før du kjøper noen aksjer). Lett svar. Du kan ikke vinne (eller miste) penger raskt nok ved å kjøpe aksjer. Forex har en fin (eller forferdelig, avhengig av hvilken side av mynten du er) ting som kalles innflytelse. 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). La oss se et eksempel. 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). Der 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 er det. 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. Og gjett hva. 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