Monday, 9 October 2017

Bygge Høyfrekvente Trading System


Grunnleggende om Algoritmisk handel: Konsepter og eksempler En algoritme er et spesifikt sett med klart definerte instruksjoner som skal utføre en oppgave eller prosess. Algoritmisk handel (automatisert handel, svart bokhandel eller ganske enkelt algo-trading) er prosessen med å bruke datamaskiner som er programmert til å følge et definert sett med instruksjoner for å sette en handel for å generere fortjeneste med en hastighet og frekvens som er umulig for en menneskelig næringsdrivende. De definerte settene av regler er basert på timing, pris, kvantitet eller hvilken som helst matematisk modell. Bortsett fra profittmuligheter for næringsdrivende, gjør algo-trading markeder mer likvide og gjør handel mer systematisk ved å utelukke følelsesmessige menneskelige konsekvenser for handelsaktiviteter. Anta at en næringsdrivende følger disse enkle handlekriteriene: Kjøp 50 aksjer på en aksje når 50-dagers glidende gjennomsnitt går over 200-dagers glidende gjennomsnitt. Selg aksjer på aksjene når 50-dagers glidende gjennomsnitt går under 200-dagers glidende gjennomsnitt Ved å bruke dette settet med to enkle instruksjoner, er det enkelt å skrive et dataprogram som automatisk overvåker aksjekursen (og de bevegelige gjennomsnittlige indikatorene) og legger kjøps - og salgsordrene når de definerte betingelsene er oppfylt. Trafikken trenger ikke lenger å holde øye med livepriser og grafer, eller legge inn ordrene manuelt. Det algoritmiske handelssystemet gjør det automatisk for ham ved korrekt å identifisere handelsmuligheten. (For mer om å flytte gjennomsnitt, se: Enkle bevegelige gjennomsnittsverdier Gjør utfordringer.) Algo-trading gir følgende fordeler: Handler utført til best mulig pris Øyeblikkelig og nøyaktig handelsordreplassering (derved høye muligheter for utførelse på ønsket nivå) Handler tidsbestemt korrekt og øyeblikkelig for å unngå betydelige prisendringer. Reduserte transaksjonskostnader (se gjennomføringsbristeksemplet nedenfor) Samtidig automatisert kontroll av flere markedsforhold. Redusert risiko for manuelle feil i å plassere bransjene. Teste algoritmen basert på tilgjengelige historiske og sanntidsdata Redusert Mulighet for feil av menneskelige handelsfolk basert på følelsesmessige og psykologiske faktorer Den største delen av dagens algo-trading er HFT (High Frequency Trading), som forsøker å kapitalisere seg på å plassere et stort antall bestillinger med svært høye hastigheter på tvers av flere markeder og flere beslutninger parametere, basert på forhåndsprogrammerte instruksjoner. (For mer om handel med høyfrekvent handel, se: Strategier og hemmeligheter for høyfrekvenshandelsvirksomhet). Algo-trading brukes i mange former for handels - og investeringsaktiviteter, blant annet: Midtre til langsiktige investorer eller kjøpsselskaper (pensjonskasser , fond, forsikringsselskaper) som kjøper i aksjer i store mengder, men ikke vil påvirke aksjekursene med diskrete, store voluminvesteringer. Kortsiktige forhandlere og selger sidedeltakere (markedstakere, spekulanter og arbitragerer) drar nytte av automatisert handelstiltak i tillegg, algo-trading hjelpemidler for å skape tilstrekkelig likviditet for selgere i markedet. Systematiske handelsfolk (trendfølgere, parhandlere, hedgefond etc.) finner det mye mer effektivt å programmere handelsreglene og la programmet handle automatisk. Algoritmisk handel gir en mer systematisk tilnærming til aktiv handel enn metoder basert på en menneskelig handlende intuisjon eller instinkt. Algoritmiske handelsstrategier Enhver strategi for algoritmisk handel krever en identifisert mulighet som er lønnsom når det gjelder bedre inntjening eller kostnadsreduksjon. Følgende er vanlige handelsstrategier som brukes i algo-trading: De vanligste algoritmiske handelsstrategiene følger trender i flytende gjennomsnitt. kanalutbrudd. prisnivåbevegelser og tilhørende tekniske indikatorer. Dette er de enkleste og enkleste strategiene for å implementere gjennom algoritmisk handel fordi disse strategiene ikke innebærer å gjøre noen spådommer eller prisprognoser. Handler er initiert basert på forekomsten av ønskelige trender. som er enkle og enkle å implementere gjennom algoritmer uten å komme inn i kompleksiteten av prediktiv analyse. Ovennevnte eksempel på 50 og 200 dagers glidende gjennomsnitt er en populær trend-strategi. (For mer om trend trading strategier, se: Enkle strategier for kapitalisering på trender.) Å kjøpe en dobbelt børsnotert aksje til en lavere pris i ett marked og samtidig selge den til en høyere pris i et annet marked, tilbyr prisforskjellen som risikofri gevinst eller arbitrage. Samme operasjon kan replikeres for aksjer kontra futures instrumenter, da prisforskjeller eksisterer fra tid til annen. Implementering av en algoritme for å identifisere slike prisforskjeller og å plassere ordrene gir lønnsomme muligheter på en effektiv måte. Indeksfondene har definert perioder med rebalansering for å bringe sine beholdninger på nivå med sine respektive referanseindekser. Dette skaper lønnsomme muligheter for algoritmiske handelsmenn, som utnytter forventede bransjer som tilbyr 20-80 basispoeng fortjeneste avhengig av antall aksjer i indeksfondet, like før indeksfondets rebalansering. Slike handler initieres via algoritmiske handelssystemer for rettidig utførelse og beste priser. Mange påviste matematiske modeller, som delta-nøytral handelsstrategi, som tillater handel på kombinasjon av opsjoner og underliggende sikkerhet. hvor handler er plassert for å kompensere positive og negative deltakere slik at porteføljens delta blir opprettholdt til null. Gjennomsnittlig reverseringsstrategi er basert på ideen om at høye og lave priser på en eiendel er et midlertidig fenomen som regelmessig vender tilbake til gjennomsnittlig verdi. Identifisere og definere et prisklasse og en implementeringsalgoritme basert på det tillater handel å bli plassert automatisk når prisen på aktivet bryter inn og ut av sitt definerte område. Volumvektet gjennomsnittsprisstrategi bryter opp en stor ordre og frigjør dynamisk bestemte mindre biter av ordren til markedet ved hjelp av aksjespesifikke historiske volumprofiler. Målet er å gjennomføre bestillingen nær Volumvektet Gjennomsnittlig Pris (VWAP), og derved nytte gjennomsnittlig pris. Tidsvektet gjennomsnittsprisstrategi bryter opp en stor ordre og frigjør dynamisk bestemte mindre biter av ordren til markedet ved å bruke jevnt fordelte tidsluker mellom en start og sluttid. Målet er å gjennomføre bestillingen nær gjennomsnittlig pris mellom start - og sluttider, og dermed minimere markedsvirkningen. Inntil handelsordren er fullstendig, fortsetter denne algoritmen å sende partielle ordrer, i henhold til definert deltakelsesforhold og i henhold til volumet som handles på markedene. Den relaterte trinnstrategien sender ordrer til en brukerdefinert prosentandel av markedsvolumer og øker eller reduserer denne deltakelsesraten når aksjekursen når brukerdefinerte nivåer. Strategien for gjennomføring av mangler har til hensikt å minimere eksekveringsprisen for en ordre ved å avregne realtidsmarkedet, og dermed spare på kostnadene for ordren og dra nytte av mulighetskostnaden ved forsinket utførelse. Strategien vil øke den målrettede deltakelsesraten når aksjekursen beveger seg gunstig og reduserer den når aksjekursen beveger seg negativt. Det er noen spesielle klasser av algoritmer som forsøker å identifisere hendelser på den andre siden. Disse sniffingsalgoritmene, som for eksempel brukes av en selger side markedsfører, har den innebygde intelligensen for å identifisere eksistensen av noen algoritmer på kjøpssiden av en stor ordre. Slik gjenkjenning gjennom algoritmer vil hjelpe markedsmakeren til å identifisere store ordre muligheter og gjøre det mulig for ham å få fordel ved å fylle ordrene til en høyere pris. Dette er noen ganger identifisert som high-tech front-running. (For mer om høyfrekvent handel og bedragerisk praksis, se: Hvis du kjøper aksjer på nettet, er du involvert i HFT.) Tekniske krav til algoritmisk handel Implementering av algoritmen ved hjelp av et dataprogram er den siste delen, klubbbedret med backtesting. Utfordringen er å omdanne den identifiserte strategien til en integrert datastyrt prosess som har tilgang til en handelskonto for å plassere ordrer. Følgende er nødvendige: Programmeringskunnskap for å programmere den nødvendige handelsstrategien, innleid programmører eller ferdigstillet handelsprogramvare Nettverkstilkobling og tilgang til handelsplattformer for å plassere ordrene Tilgang til markedsdata feeds som vil bli overvåket av algoritmen for muligheter til plassering ordrer Evnen og infrastrukturen til å sikkerhetskopiere systemet en gang bygget, før den går live på ekte markeder Tilgjengelig historisk data for backtesting, avhengig av kompleksiteten av regler implementert i algoritmen Her er et omfattende eksempel: Royal Dutch Shell (RDS) er notert på Amsterdam Børs (AEX) og London Stock Exchange (LSE). Lar bygge en algoritme for å identifisere arbitrage muligheter. Her er noen interessante observasjoner: AEX handler i euro, mens LSE handler i Sterling Pounds På grunn av en times tidsforskjell åpner AEX en time tidligere enn LSE, etterfulgt av begge børser som handler samtidig for de neste par timene og deretter handler kun i LSE under Den siste timen når AEX lukkes Kan vi undersøke muligheten for arbitragehandel på Royal Dutch Shell-børsen som er oppført på disse to markedene i to forskjellige valutaer. Et dataprogram som kan lese nåværende markedspriser. Prisene fra både LSE og AEX. A forex rate feed for GBP-EUR-vekslingskurs Bestill plasseringskapasitet som kan ordne bestillingen til riktig utveksling Tilbakestillingskapasitet på historiske prisfeeder Dataprogrammet bør utføre følgende: Les innkommende prisfôr av RDS-lager fra begge børser Ved hjelp av tilgjengelige valutakurser . konvertere prisen på en valuta til andre Hvis det eksisterer en stor nok prisavvik (rabatt på meglerkostnadene) som fører til en lønnsom mulighet, legger du kjøpsordren på lavere prissentral og salgsordre på høyere prissentral Hvis ordrene utføres som Ønsket, arbitrage fortjeneste vil følge Simple and Easy Imidlertid er praksis med algoritmisk handel ikke så enkelt å vedlikeholde og utføre. Husk at hvis du kan plassere en algo-generert handel, så kan de andre markedsdeltakere. Følgelig varierer prisene i milli - og til og med mikrosekunder. I eksemplet ovenfor, hva skjer hvis kjøpekjøpet ditt blir henrettet, men selger handel, da selgerprisene endrer seg når bestillingen din treffer markedet. Du vil ende opp med å sitte med en åpen stilling. gjøre arbitrage-strategien din verdiløs. Det er flere risikoer og utfordringer: for eksempel systemfeil, nettverkstilkoblingsfeil, tidsforsinkelse mellom handelsordre og utførelse, og viktigst av alt, ufullkomne algoritmer. Jo mer komplekse en algoritme, desto strengere backtesting er nødvendig før den blir satt i gang. Kvantitativ analyse av en algoritmeprestasjon spiller en viktig rolle og bør undersøkes kritisk. Det er spennende å gå for automatisering hjulpet av datamaskiner med en ide å tjene penger uten problemer. Men man må sørge for at systemet er grundig testet og at det stilles krav om grenser. Analytiske handelsfolk bør vurdere å lære programmerings - og byggesystemer alene, for å være sikre på å implementere de riktige strategiene på idiotsikker måte. Forsiktig bruk og grundig testing av algo-handel kan skape lønnsomme muligheter. Den totale dollarverdien av alle selskapets utestående aksjer. Markedsverdien beregnes ved å multiplisere. Frexit kort for quotFrench exitquot er en fransk spinoff av begrepet Brexit, som dukket opp da Storbritannia stemte til. En ordre som er plassert hos en megler som kombinerer funksjonene til stoppordre med grensene. En stoppordre vil. En finansieringsrunde hvor investorer kjøper aksjer fra et selskap til lavere verdsettelse enn verdsettelsen plassert på. En økonomisk teori om total utgifter i økonomien og dens effekter på produksjon og inflasjon. Keynesian økonomi ble utviklet. En beholdning av en eiendel i en portefølje. En porteføljeinvestering er laget med forventning om å tjene en avkastning på den. Dette. Dette innlegget vil detaljere hva jeg gjorde for å lage ca. 500k fra høyfrekvent handel fra 2009 til 2010. Siden jeg handlet helt uavhengig og ikke lenger kjører, vil Irsquom gjerne fortelle alt. Min handel var hovedsakelig i Russel 2000 og DAX futures kontrakter. Nøkkelen til min suksess tror jeg ikke var i en sofistikert finansiell ligning, men heller i den generelle algoritmenes design som bundet sammen mange enkle komponenter og brukt maskinlæring for å optimalisere for maksimal lønnsomhet. Du behøver ikke å vite noen sofistikert terminologi her fordi når jeg satte opp programmet mitt, var det alt basert på intuisjon. (Andrew Ngrsquos fantastiske maskinopplæringskurs var ikke tilgjengelig ennå - btw hvis du klikker på linken dinsquoll blir tatt til mitt nåværende prosjekt: CourseTalk, et vurderingssted for MOOCs) Først vil jeg bare vise at suksessen min ikke bare var resultatet av flaks. Mitt program gjorde 1000-4000 handler per dag (halv lang, halv kort) og kom aldri inn i stillinger på mer enn noen få kontrakter om gangen. Dette betydde tilfeldig flaks fra en bestemt handel i gjennomsnitt ganske raskt. Resultatet var at jeg aldri mistet mer enn 2000 på en dag og aldri hatt en miste måned: (EDIT. Disse tallene er etter å betale provisjoner) Og herersquos et diagram for å gi deg en følelse av den daglige variasjonen. Merk dette utelukkende de siste 7 månedene fordi - som tallene sluttet å gå opp - mistet jeg motivasjonen min for å komme inn i dem. Min handelsbakgrunn Før jeg satte opp mitt automatiserte handelsprogram, hadde Irsquod 2 års erfaring som en ldquomanualrdquo day trader. Dette var tilbake i 2001 - det var de tidlige dagene med elektronisk handel og det var muligheter for ldquoscalpersrdquo å tjene gode penger. Jeg kan bare beskrive hva jeg gjorde som besluttet å spille et videospill gambling med en antatt kant. Å være vellykket mente å være rask, være disiplinert og ha en god intuitiv mønstergenkjenningsevne. Jeg var i stand til å lage rundt 250k, betale av studielånene mine og ha penger igjen. Vinn I løpet av de neste fem årene vil jeg starte to oppstart, og ta opp noen programmeringsevner underveis. Det ville ikke vært før slutten av 2008 at jeg ville komme tilbake til handel. Med penger som gikk lavt fra salget av min første oppstart, tilbød handel håp om litt raske penger mens jeg skjønte meg neste skritt. I 2008 var jeg ldquomanuallyrdquo dag trading futures ved hjelp av programvare kalt T4. Irsquod hadde lyst på noen tilpassede ordreoppføring hurtigtaster, så etter å ha oppdaget at T4 hadde en API, tok jeg utfordringen med å lære C (programmeringsspråket som kreves for å bruke API) og gikk videre og bygde meg noen hurtigtaster. Etter å få føttene mine våte med API hadde jeg snart større forhåpninger: Jeg ønsket å lære datamaskinen å handle for meg. API-en ga både en strøm av markedsdata og en enkel måte å sende ordre til utvekslingen - alt jeg måtte gjøre var å lage logikken i midten. Nedenfor er et skjermbilde av et T4-handelsvindu. Det som var kult er at når jeg fikk jobbet med programmet, var jeg i stand til å se på datahandelen på dette nøyaktig samme grensesnittet. Å se ekte ordre som hopper inn og ut (av seg selv med mine ekte penger) var både spennende og skummelt. Utformingen av min algoritme Fra begynnelsen var målet mitt å sette opp et system slik at jeg kunne være rimelig trygg på at Irsquod tjene penger før han noen gang utførte noen levende handler. For å oppnå dette trengte jeg å bygge et handelssimuleringsramme som ville - så nøyaktig som mulig - simulere live trading. Mens handel i live-modus kreves behandling av markedsoppdateringer strømmet gjennom API, krevde simuleringsmodus å lese markedsoppdateringer fra en datafil. For å samle inn disse dataene, konfigurerer jeg den første versjonen av programmet mitt for å bare koble til API og registrere markedsoppdateringer med tidsstempler. Jeg endte opp med å bruke 4 uker av nyere markedsdata for å trene og teste systemet mitt på. Med et grunnleggende rammeverk på plass, hadde jeg fortsatt oppgaven med å finne ut hvordan jeg kunne skape et lønnsomt handelssystem. Som det viser seg, vil algoritmen bryte seg ned i to forskjellige komponenter, som Irsquoll undersøker i sin tur: Predikere prisbevegelser og tjene lønnsomme handler Predikere prisbevegelser Kanskje en åpenbar komponent i et handelssystem kan forutsi hvor prisene skal flytte. Og min var ikke noe unntak. Jeg definerte nåværende pris som gjennomsnittet av innsiden bud og innside tilbud og jeg satte målet om å forutsi hvor prisen ville være i de neste 10 sekunder. Min algoritme vil trenge å komme opp med denne prediksjonen øyeblikk for øyeblikk gjennom hele handelsdagen. Opprette ampoptimaliseringsindikatorer Jeg opprettet en håndfull indikatorer som viste seg å ha en meningsfylt evne til å forutsi kortsiktige prisbevegelser. Hver indikator produserte et tall som var enten positivt eller negativt. En indikator var nyttig hvis oftere enn ikke et positivt tall korresponderte med at markedet gikk opp og et negativt tall korresponderte med at markedet gikk ned. Systemet tillot meg å raskt bestemme hvor mye prediktiv evne noen indikator hadde, så jeg var i stand til å eksperimentere med mange forskjellige indikatorer for å se hva som fungerte. Mange av indikatorene hadde variabler i formlene som produserte dem, og jeg var i stand til å finne de optimale verdiene for de variablene ved å gjøre side om side sammenligninger av resultater oppnådd med varierende verdier. Indikatorene som var mest nyttige var alle relativt enkle og var basert på nylige hendelser i markedet jeg var trading, samt markedene for korrelerte verdipapirer. Gjøre nøyaktige prisbevegelsesutsikter Å ha indikatorer som bare forutslo en opp - eller nedprisbevegelse var ikke nok. Jeg trengte å vite nøyaktig hvor mye prisbevegelse var spådd av hver mulig verdi for hver indikator. Jeg trengte en formel som ville konvertere en indikatorverdi til en prisforutsigelse. For å oppnå dette spores jeg spådde prisbevegelser i 50 buketter som avhenger av området som indikatorverdien falt inn. Dette ga unike spådommer for hver bøtte som jeg da kunne grave i Excel. Som du ser, øker forventet prisendring som indikatorverdien øker. Basert på en graf som dette var jeg i stand til å lage en formel som passer til kurven. I begynnelsen gjorde jeg dette ldquocurve fittingrdquo manuelt, men jeg skrev snart opp noen kode for å automatisere denne prosessen. Merk at ikke alle indikatorkurvene hadde samme form. Legg merke til at bøtter ble logaritmisk fordelt slik at dataene spredes jevnt ut. Endelig merk at negative indikatorverdier (og tilhørende nedadgående prisforutsigelser) ble vendt og kombinert med de positive verdiene. (Min algoritme behandles opp og ned akkurat det samme.) Kombinere indikatorer for en enkelt prediksjon En viktig ting å vurdere var at hver indikator ikke var helt uavhengig. Jeg couldnrsquot bare legge opp alle spådommer som hver indikator laget individuelt. Nøkkelen var å finne ut den ekstra prediktive verdien som hver indikator hadde utover det som allerede var spådd. Dette var ikke vanskelig å implementere, men det betydde at hvis jeg var ldquocurve fittingrdquo flere indikatorer samtidig måtte jeg være forsiktig med å endre en ville påvirke spådommene til en annen. For å ldquocurve fitrdquo alle indikatorene på samme tid, installerer jeg optimisatoren for å trekke bare 30 av veien mot de nye prediksjonskurverne med hvert pass. Med dette 30 hoppet fant jeg ut at prediksjonskurverne ville stabilisere seg innenfor noen få pass. Med hver indikator som nå gir oss det, er det ytterligere prisutsikt, jeg kunne bare legge dem opp for å produsere en enkelt prediksjon av hvor markedet vil være om 10 sekunder. Hvorfor forutsi priser er ikke nok Du tror kanskje at med denne kanten på markedet var jeg gylden. Men du må huske på at markedet består av bud og tilbud - det er ikke bare en markedspris. Suksess i høyfrekvent handel kommer ned til å få gode priser og itrsquos ikke så lett. Følgende faktorer gjør det vanskelig å skape et lønnsomt system: Ved hver handel måtte jeg betale provisjoner til både megler og bytte. Spredningen (forskjellen mellom høyeste bud og laveste tilbud) betydde at hvis jeg bare skulle kjøpe og selge tilfeldig, ville Irsquod miste massevis av penger. Mesteparten av markedsvolumet var andre bots som bare ville utføre en handel med meg hvis de trodde de hadde noen statistisk kanten. Å se et tilbud garanterte ikke at jeg kunne kjøpe det. Da kjøpsordren kom til utvekslingen var det veldig mulig at tilbudet hadde blitt kansellert. Som en liten markedsaktør var det ingen måte jeg kunne konkurrere på hastighet alene. Bygg en full handelssimulering Så jeg hadde et rammeverk som tillot meg å teste og optimalisere indikatorer. Men jeg måtte gå utover dette - jeg trengte et rammeverk som tillot meg å teste og optimalisere et fullhandelssystem en hvor jeg sendte ordrer og kom på stillinger. I dette tilfellet skal Irsquod optimalisere for total PampL og til en viss grad gjennomsnittlig PampL per handel. Dette ville være vanskeligere og på noen måter umulig å modellere nøyaktig, men jeg gjorde så godt som mulig. Her er noen av problemene jeg måtte håndtere: Når en ordre ble sendt til markedet i simulering måtte jeg modellere lagtid. Det faktum at systemet mitt så et tilbud, betyr ikke at det kunne kjøpe det med en gang. Systemet ville sende bestillingen, vent ca 20 millisekunder, og da bare hvis tilbudet fortsatt var der, ble det vurdert som en henrettet handel. Dette var uakseptabelt fordi den virkelige forsinkelsestiden var inkonsekvent og urapportert. Når jeg plasserte bud eller tilbud, måtte jeg se på handelsutførelsesstrømmen (levert av API) og bruke dem til å måle når bestillingen min ville ha blitt henrettet mot. For å gjøre dette riktig måtte jeg spore plasseringen av bestillingen min i køen. (Itrsquos et første-i-først-ut system.) Igjen, jeg couldnrsquot gjøre dette perfekt, men jeg gjorde en god tilnærming. For å finjustere bestillingseksempleringen jeg gjorde var å ta loggfilene mine fra live trading via API og sammenligne dem med loggfilene som ble produsert ved simulert handel fra nøyaktig samme tidsperiode. Jeg var i stand til å få simuleringen min til det punktet at det var ganske nøyaktig og for de delene som var umulige å modellere nøyaktig, sørget jeg i hvert fall for å produsere resultater som var statistisk liknende (i beregningene jeg trodde var viktig). Å tjene lønnsomme handler Med en ordreimuleringsmodell på plass kunne jeg nå sende ordrer i simuleringsmodus og se en simulert PampL. Men hvordan ville systemet vite når og hvor jeg skulle kjøpe og selge? Prissettingsspådommer var et utgangspunkt, men ikke hele historien. Det jeg gjorde var å skape et scoring system for hvert av 5 prisnivåer på bud og tilbud. Disse inkluderte ett nivå over innsiden bud (for en kjøpsordre) og ett nivå under innsiden tilbud (for en salgsordre). Hvis poengsummen til et gitt prisnivå var over en viss terskel, ville det bety at systemet mitt skulle ha et aktivt tilbud der - under terskelen skulle eventuelle aktive bestillinger bli kansellert. Basert på dette var det ikke uvanlig at systemet mitt ville blinke et bud i markedet, og deretter avbryte det umiddelbart. (Selv om jeg prøvde å minimere dette som itrsquos irriterende for alle som så på skjermen med menneskelige øyne - inkludert meg.) Prisnivåpoengene ble beregnet ut fra følgende faktorer: Prisforskjellen forutsigelsen (som vi diskuterte tidligere). Prisnivået i spørsmålet. (Inner nivå betydde større prisbevegelsesutsikter var påkrevd.) Antall kontrakter foran bestillingen min i køen. (Mindre var bedre.) Antall kontrakter bak bestillingen min i køen. (Mer var bedre.) Vesentlig disse faktorene tjente til å identifisere ldquosaferdquo steder å by på. Prisforskjellen forutsigelsen alene var ikke tilstrekkelig fordi den ikke gjorde rede for det faktum at når jeg satte et bud, ble jeg ikke fylt automatisk - jeg ble bare fylt hvis noen solgte meg der. Virkeligheten var at det faktum at noen som solgte meg til en viss pris, forandret statistiske oddsene for handelen. Variablene som ble benyttet i dette trinnet var alle gjenstand for optimalisering. Dette ble gjort på nøyaktig samme måte som jeg optimaliserte variabler i prisbevegelsesindikatorene, bortsett fra i dette tilfellet, optimaliserte jeg for bunnlinjen PampL. Hva jeg tenker på når jeg handler som mennesker, har vi ofte sterke følelser og forstyrrelser som kan føre til mindre enn optimale beslutninger. Klart ønsket jeg ikke å kodifisere disse forstyrrelsene. Her er noen faktorer som min system ignorerte: Prisen som en stilling ble oppgitt - I et handelskontor er det ganske vanlig å høre samtale om prisen som noen er lange eller korte som om det skulle påvirke deres fremtidige beslutningstaking. Selv om dette har noen gyldighet som en del av en risikoreduserende strategi, har det ingen betydning for det fremtidige kurset i markedet. Derfor ignorert programmet mitt denne informasjonen. Itrsquos samme konsept som å ignorere reduserte kostnader. Går kort vs forlater en lang posisjon - Vanligvis vil en næringsdrivende ha forskjellige kriterier som bestemmer hvor man skal selge en lang stilling versus hvor man skal gå kort. Men fra algoritmenes perspektiv var det ingen grunn til å skille. Hvis min algoritme forventet en nedadgående flytting, var det en god ide, uansett om den var for tiden lang, kort eller flat. En ldquodoubling uprdquo strategi - Dette er en felles strategi hvor handelsmenn vil kjøpe flere aksjer i tilfelle at den opprinnelige handel går imot dem. Dette resulterer i at gjennomsnittskjøpsprisen din er lavere og det betyr at når (eller om) lageret slår seg rundt, blir din saldo satt til å gjøre pengene dine tilbake på kort tid. Etter min mening er dette virkelig en fryktelig strategi, med mindre du er Warren Buffet. Yoursquore lurte på å tro at du har det bra fordi de fleste av dine handler vil bli vinnere. Problemet er at når du mister deg, mister du stor. Den andre effekten er at det gjør det vanskelig å bedømme om du faktisk har en kant på markedet eller bare blir heldig. Å kunne overvåke og bekrefte at mitt program faktisk hadde en kant var et viktig mål. Siden algoritmen min tok beslutninger på samme måte, uansett hvor det gikk inn i en handel, eller om det for øyeblikket var lenge eller kort, var det noen ganger i store og små tapende bransjer (i tillegg til noen store vinnende handler). Men du burde ikke tro at det ikke var noen risikostyring. For å håndtere risiko håndhevet jeg en maksimal posisjonsstørrelse på 2 kontrakter om gangen, noen ganger stødte opp på høyvolumsdager. Jeg hadde også en maksimal daglig tapgrense for å beskytte mot uventede markedsforhold eller en feil i min programvare. Disse grensene ble håndhevet i koden min, men også i backend gjennom megleren. Som det skjedde, møtte jeg aldri noen betydelige problemer. Kjører algoritmen Fra det øyeblikket jeg begynte å jobbe med programmet mitt, tok det meg ca 6 måneder før jeg fikk det til lønnsomhet og begynte å kjøre det live. Selv om det var rettferdig, var det betydelig tid å lære et nytt programmeringsspråk. Da jeg jobbet for å forbedre programmet, så jeg økt fortjeneste for hver av de neste fire månedene. Hver uke vil jeg omskole systemet mitt basert på de fire foregående ukers verdiene av data. Jeg fant dette traff den rette balansen mellom å ta vare på nyere markedsadferdstrender og å forsikre min algoritme hadde nok data til å etablere meningsfulle mønstre. Etter hvert som treningen begynte å ta mer og mer tid, splittet jeg det slik at det kunne utføres av 8 virtuelle maskiner ved hjelp av Amazon EC2. Resultatene ble deretter coalesced på min lokale maskin. Høydepunktet i min handel var oktober 2009 da jeg lagde nesten 100k. Etter dette fortsatte jeg å tilbringe de neste fire månedene, og prøvde å forbedre mitt program til tross for redusert fortjeneste hver måned. Dessverre på dette punktet antar jeg at Irsquod implementerte alle mine beste ideer fordi ingenting jeg prøvde syntes å hjelpe mye. Med frustrasjonen om å ikke kunne gjøre forbedringer og ikke ha en følelse av vekst, begynte jeg å tenke på en ny retning. Jeg sendte 6 forskjellige high frequency trading firmaer for å se om theyrsquod er interessert i å kjøpe min programvare og ansette meg til å jobbe for dem. Ingen svarte. Jeg hadde noen nye oppstartsidéer jeg ønsket å jobbe med, så jeg aldri fulgte opp. UPDATE - Jeg postet dette på Hacker News, og det har fått mye oppmerksomhet. Jeg vil bare si at jeg ikke fortaler noen som prøver å gjøre noe som dette selv nå. Du vil trenge et team av virkelig smarte mennesker med en rekke erfaringer å ha noe håp om å konkurrere. Selv når jeg gjorde dette, tror jeg det var svært sjelden at enkeltpersoner skulle oppnå suksess (selv om jeg hadde hørt om andre.) Det er en kommentar øverst på siden som nevner manipulert statistikk og refererer til meg som en ldquoretail investorrdquo som quants ville ldquogleefully plukke offrdquo. Dette er en ganske uheldig kommentar thatrsquos rett og slett ikke basert i virkeligheten. Innstilling som til side therersquos noen interessante kommentarer: news. ycombinatoritemid4748624 UPDATE 2 - Irsquove postet en follow-up FAQ som svarer på noen vanlige spørsmål Irsquove mottatt fra handelsmenn om dette innlegget. XENON har brakt ytelsesberegning til det høyt spesialiserte feltet av genomics. Hele teknologipunktet er å muliggjøre nye fremskritt for samfunnet så rimelig som mulig. Når disse gevinster blir brukt på det biomedisinske yrket, har vi alle fordeler med enhver forbedring, hver dag. En NVMe-basert Intel SSD DC P3700-serie og ny Intel Cache Acceleration Software for Windows arbeidsstasjoner (Intel CAS-W) teknologi for raskere gjengivelse og overføring av modelleringsdata. Enten det er en SUV, en bykjøring, en hybrid eller en luksusmodell etterpå, har du aldri vært et større utvalg av biler tilgjengelig for forbrukeren. Hvert merke har mange modeller, og hver modell er spesifisert annerledes i henhold til formålet og driverne ønsket utseende og kjøring. I Australia alene er det for tiden rundt 65 SUV å velge mellom Å velge en bil er en svært følelsesmessig beslutning. Selv om vi kan velge en bil basert på overkommelighet, merkevare, estetikk eller håndtering, vil en stor del av vår beslutning falle ned fferently i henhold til formålet og drivere ønsket. XENON vil bygge FlashLite-datamaskinen og forhåndskonfigurere operativsystemene og cluster middleware på hovedkontoret i Melbourne. Den fullt funksjonelle FlashLite-datamaskinen, den første av sitt slag i Australia, er planlagt å være oppe på University of Queensland i juli i år.

No comments:

Post a Comment