Skip to main content

Trading System Arkitekt


Algoritmisk Trading System Architecture. Tidligere på denne bloggen har jeg skrevet om den konseptuelle arkitekturen til et intelligent algoritmisk handelssystem, samt de funksjonelle og ikke-funksjonelle kravene til et produksjonsalgoritmisk handelssystem. Siden da har jeg designet en systemarkitektur som jeg tror kunne tilfredsstille disse arkitektoniske kravene I dette innlegget vil jeg beskrive arkitekturen i henhold til retningslinjene i ISO IEC IEEE 42010-systemene og programvare engineering arkitektur beskrivelse standard Ifølge denne standarden en arkitektur beskrivelse må. Opprettholde flere standardiserte arkitektoniske visninger f. eks i UML og. Maintain sporbarhet mellom designbeslutninger og arkitektoniske krav. Programvarearkitekturdefinisjon. Det er fortsatt ingen konsensus om hva en systemets arkitektur er. I sammenheng med denne artikkelen er det definert som den infrastrukturen der applikasjonskomponenter som tilfredsstiller funksjonelle krav kan spesifiseres, distribuert og utført Funksjonskrav er systemets forventede funksjoner og dens komponenter Ikke-funksjonelle krav er tiltak der kvaliteten på systemet kan måles. Et system som fullt ut tilfredsstiller funksjonskravene, kan fortsatt ikke oppfylle forventningene dersom ikke-funksjonelle krav For å illustrere dette konseptet, vurder følgende scenario et algoritmisk handelssystem som du nettopp har kjøpt bygget gjør gode handelsbeslutninger, men er helt ubrukelig med organisasjonene risikostyring og regnskapssystemer. Dette systemet vil oppfylle dine forventninger. Konceptuell arkitektur. En konseptuell visning beskriver høyt nivå konsepter og mekanismer som eksisterer i systemet på høyeste nivå av granularitet På dette nivået følger det algoritmiske handelssystemet en eventdrevet arkitektur EDA brutt opp over fire lag og to arkitektoniske aspekter For hvert lag og aspekt referanse arkitekturer og mønstre ar e brukt Arkitektoniske mønstre er bevist, generiske strukturer for å oppnå spesifikke krav Arkitektoniske aspekter er tverrgående bekymringer som spenner over flere komponenter. Eventyrd arkitektur - en arkitektur som produserer, oppdager, forbruker og reagerer på hendelser Hendelser inkluderer realtidsbevegelser, komplisert hendelser eller trender, og handelshendelser, for eksempel å sende inn en bestilling. Dette diagrammet illustrerer den konseptuelle arkitekturen til det algoritmiske handelssystemet. Referansearkitekturer. For å bruke en analogi, er en referansearkitektur ligner tegningene for en bærende vegg. Denne blåutskriften kan brukes til flere byggedesigner uavhengig av hvilken bygning som bygges ettersom den tilfredsstiller et sett av vanlige krav. Tilsvarende definerer en referansearkitektur en mal som inneholder generiske strukturer og mekanismer som kan brukes til å konstruere en konkret programvarearkitektur som tilfredsstiller spesifikke krav Arkitekturen for algoritmisk tr addering system bruker en plassbasert arkitektur SBA og en modellvisningskontroll MVC som referanser God praksis som operativ datalager ODS, ekstrakttransformatoren og last ETL-mønster og et datalager DW benyttes også. Modelleringsvisningskontrollen - et mønster som separerer representasjonen av informasjon fra brukerens interaksjon med det. Mellombasert arkitektur - spesifiserer en infrastruktur hvor løst koblede behandlingsenheter samhandler med hverandre gjennom et felles associativt minne som kalles mellomrom vist nedenfor. Spaces-based arkitektonisk konseptbilde Modellvisning Controller original image. Strukturell visning. Strukturvisningen av en arkitektur viser komponentene og delkomponentene i det algoritmiske handelssystemet. Det viser også hvordan disse komponentene distribueres på fysisk infrastruktur. UML-diagrammene som brukes i denne visningen, inkluderer komponentdiagrammer og distribusjonsdiagrammer. distribusjonsdiagrammer for det generelle algoritmiske handelssystemet og p prosesseringsenheter i SBA-referansearkitekturen, samt relaterte komponentdiagrammer for hver enkelt lag. Algoritmisk handelssystem høyt distribusjonsdiagram SBA-behandlingsenheter distribusjonsdiagram Bestil bearbeidingskomponentdiagram Automatisert handlerbegivenhetsbehandlingskomponentdiagram Datakilde og forbehandlingslag komponent diagram MVC basert brukergrensesnitt komponent diagram. Architectural Tactics. According til programvare engineering instituttet en arkitektonisk taktikk er et middel til å tilfredsstille et kvalitetskrav ved å manipulere noe aspekt av en kvalitet attributt modell gjennom arkitektoniske design beslutninger Et enkelt eksempel brukt i den algoritmiske trading systemarkitektur manipulerer en operativ datalager ODS med en kontinuerlig spørringskomponent Denne komponenten vil kontinuerlig analysere ODS for å identifisere og trekke ut komplekse hendelser Følgende taktikker brukes i arkitekturen. Disruptor-mønsteret i hendelses - og ordrekøene. Delet minne for hendelses - og ordrekøene. Kontinuerlig spørringssprog CQL på ODS. Data filtrerer med filterdesignmønsteret på innkommende data. Konkurransebegreperingsalgoritmer på alle innkommende og utgående tilkoblinger. Aktivkøsstyring AQM og eksplisitte overbelastningsvarslingsmoditets databehandlingsressurser med kapasitet til oppgradering skalerbar. Aktiv redundans for alle enkle punkter av feil. Indexasjon og optimaliserte utholdenhet strukturer i ODS. Schedule regelmessige data backup og opprydding skript for ODS. Transaction historier på alle databaser. Checksums for alle ordrer for å oppdage feil. Endre hendelser med tidsstempler til hopp over stale hendelser. Order validering regler, f. eks maksimal handel quantities. Automated trader komponenter bruker en in-memory database for analysis. Two stadium autentisering for brukergrensesnitt kobler til ATs. Encryption på brukergrensesnitt og tilkoblinger til ATs. Observer design mønster for MVC for å administrere visninger. Ovenstående liste er bare noen få designbeslutninger jeg identifiserte under design av arkitekturen Det er ikke en komplett liste over taktikk Når systemet utvikles, bør flere taktikker brukes på flere nivåer av granularitet for å møte funksjonelle og ikke-funksjonelle krav. Nedenfor er tre diagrammer som beskriver disruptor design mønster, filter design mønster, og den kontinuerlige spørrekomponenten. Kontinuerlig Querying-komponentdiagram Disruptor designmønster klassediagramkilde Filterdesignmønster klassediagram. Opphavsrettvisning. Dette syn på en arkitektur viser hvordan komponentene og lagene skal samhandle med hverandre Dette er nyttig når du lager scenarier for testing av arkitektur design og for å forstå systemet fra ende til slutt Denne visningen består av sekvensdiagrammer og aktivitetsdiagrammer Aktivitetsdiagrammer som viser den interne prosessen for det algoritmiske handelssystemet s og hvordan handelsmenn skal interagere med det algoritmiske handelssystemet, vises nedenfor. Algoritmisk handelsvirksomhet End-to-end algoritmisk handel prosess. Technologies og rammer. Det siste trinnet i å designe en programvarearkitektur er å identifisere potensielle teknologier og rammer som kan brukes til å realisere arkitekturen. Som et generelt prinsipp er det bedre å utnytte eksisterende teknologi, forutsatt at de tilfredsstillende tilfredsstiller både funksjonelle og ikke-funksjonelle krav Et rammeverk er en realisert referansearkitektur, for eksempel JBoss er et rammeverk som realiserer JEE-referansearkitekturen. Følgende teknologier og rammer er interessante og bør vurderes ved implementering av et algoritmisk handelssystem. CUDA - NVidia har en rekke produkter som støtter høy ytelse beregningsmessig finansiering modellering En kan oppnå opptil 50x ytelse forbedringer i å kjøre Monte Carlo simuleringer på GPU i stedet for CPU. Apache River - River er et verktøy-sett som brukes til å utvikle distribuerte systemer. Det har blitt brukt som et rammeverk for å bygge applikasjonsbaserte på SBA-mønsteret. Apache Hadoop - i e vent at den gjennomgripende logging er et krav, da har bruken av Hadoop en interessant løsning på det store dataproblemet Hadoop kan distribueres i et klynget miljø som støtter CUDA technologies. AlgoTrader - en algoritmisk handelsplatform med åpen kildekode AlgoTrader kan potensielt bli distribuert i stedet for de automatiserte handelsdeler. FIX Engine - en frittstående applikasjon som støtter Financial Information Exchange FIX-protokollene, inkludert FIX, FAST og FIXatdl. Selv om det ikke er en teknologi eller et rammeverk, bør komponenter bygges med et programmeringsgrensesnitt API for å forbedre interoperabiliteten av systemet og dets komponenter. Den foreslåtte arkitekturen er utformet for å tilfredsstille meget generiske krav som er identifisert for algoritmiske handelssystemer. Generelt sett er algoritmiske handelssystemer komplisert av tre faktorer som varierer med hver implementering. Forhold på eksterne virksomhets - og utvekslingssystemer. Utløpende ikke-funksjonelle krav and. Ev olving arkitektoniske begrensninger. Den foreslåtte programvarearkitekturen vil derfor måtte tilpasses fra tilfelle til sak for å tilfredsstille spesifikke organisatoriske og regulatoriske krav, samt å overvinne regionale begrensninger. Den algoritmiske handelssystemarkitekturen bør ses som bare en referansepunkt for enkeltpersoner og organisasjoner som ønsker å designe sine egne algoritmiske handelssystemer. For en fullstendig kopi og kilder som brukes, vennligst last ned en kopi av rapporten min. Takk. Bestprogrammeringsspråk for algoritmiske handelssystemer. Et av de hyppigste spørsmålene jeg mottar i QS mailbag er Hva er det beste programmeringsspråket for algoritmisk handel Det korte svaret er at det ikke er noe beste språk Strategi parametere, ytelse, modularitet, utvikling, fleksibilitet og kostnad må alle vurderes. Denne artikkelen vil skissere de nødvendige komponentene i en algoritmisk handel systemarkitektur og hvordan beslutninger om implementering påvirker valget av språk. For det første vil hovedkomponentene i et algoritmisk handelssystem bli vurdert, for eksempel forskningsverktøy, porteføljeoptimerer, risikostyring og utførelsesmotor. Deretter undersøkes ulike handelsstrategier og hvordan de påvirker systemets utforming. frekvensen av handel og det sannsynlige handelsvolumet vil begge bli diskutert. Når handelsstrategien er valgt, er det nødvendig å arkivere hele systemet. Dette inkluderer valg av maskinvare, operativsystem s og systemresistens mot sjeldne, potensielt katastrofale hendelser. Mens arkitektur vurderes, med tanke på ytelse - både til forskningsverktøyene og i live-utførelsesmiljøet. Hva er handelssystemet som prøver å gjøre. Før du bestemmer deg for det beste språket som du skal skrive et automatisert handelssystem på, er det er nødvendig for å definere kravene Er systemet skal være rent utførelsesbasert Vil systemet kreve en risikostyring nt - eller porteføljekonstruksjonsmodul Vil systemet kreve en høypresterende backtester For de fleste strategier kan handelssystemet deles inn i to kategorier Forskning og signalgenerering. Forskning er opptatt av evaluering av en strategisk ytelse over historiske data Prosessen med å evaluere en handelsstrategi over tidligere markedsdata kalles backtesting Datastørrelse og algoritmisk kompleksitet vil ha stor innvirkning på beregningsintensiteten til backtesteren CPU-hastighet og samtidighet er ofte begrensende faktorer for optimalisering av utførelseshastigheten for forskning. Signalgenerering er opptatt av å generere et sett med handel signaler fra en algoritme og sende slike ordrer til markedet, vanligvis via en megling For visse strategier er et høyt ytelsesnivå nødvendig. IO-problemer som nettverksbåndbredde og latens er ofte begrensende faktor for optimalisering av kjøringssystemer. Valg av språk for Hver komponent i hele systemet kan være ganske forskjellig rent. Type, Frekvens og Volum av Strategi. Type anvendt algoritmisk strategi vil ha betydelig innvirkning på systemets utforming. Det vil være nødvendig å vurdere markedene som handles, tilkoblingen til eksterne dataleverandører, frekvensen og volumet av strategien, avstanden mellom enkel utvikling og ytelsesoptimalisering, samt hvilken som helst tilpasset maskinvare, inkludert samleplasserte egendefinerte servere, GPUer eller FPGAer som måtte være nødvendige. Teknologifallene for en lavfrekvent amerikansk aksjestrategi vil være vesentlig forskjellig fra en høyfrekvent statistisk arbitragestrategi handel på futures markedet Før valg av språk må mange dataleverandører evalueres som angår en strategi for hånden. Det vil være nødvendig å vurdere tilkobling til leverandøren, strukturen av eventuelle APIer, aktualitet av dataene, lagringskrav og fleksibilitet i møte med en leverandør som går frakoblet. Det er også lurt å ha rask tilgang til flere leverandører Va rike instrumenter har alle sine egne lagringsbehov, eksempler på hvilke inkluderer flere tickersymboler for aksjer og utløpsdatoer for futures, for ikke å nevne noen spesifikke OTC-data. Dette må innarbeides i plattformen. Frekvensen av strategien er sannsynligvis en av de største driverne for hvordan teknologibakken vil bli definert Strategier som bruker data hyppigere enn små eller andre linjer, krever betydelig vurdering med hensyn til ytelse. En strategi som overskrider andre streker, dvs. tick-data fører til en ytelsesdrevet design som det primære kravet. For høy frekvens strategier en betydelig mengde markedsdata må lagres og evalueres Programvare som HDF5 eller kdb brukes ofte for disse rollene. For å behandle de omfattende datamengder som trengs for HFT-applikasjoner, må en omfattende optimalisert backtester og kjøresystem være brukt CC muligens med noen assembler er sannsynligvis den sterkeste språkkandidaten Ultra-high frekvensstrategier vil nesten absolutt kreve tilpasset maskinvare som FPGAer, bytte samlokalisering og kjerne nettverk grensesnitt tuning. Research Systems. Research systemer involverer vanligvis en blanding av interaktiv utvikling og automatisert skripting Den tidligere finner ofte sted innenfor en IDE som Visual Studio, MatLab eller R Studio Sistnevnte innebærer omfattende numeriske beregninger over mange parametere og datapunkter. Dette fører til et språkvalg som gir et rettferdig miljø for å teste koden, men gir også tilstrekkelig ytelse til å evaluere strategier over flere parameter dimensjoner. Typiske IDEer i dette rommet inkluderer Microsoft Visual CC, som inneholder omfattende feilsøkingsverktøy, kodegjennomføringsfunksjoner via Intellisense og enkle oversikter over hele prosjektstakken via databasen ORM, LINQ MatLab, som er designet for omfattende numerisk lineær algebra og vektoriserte operasjoner, men på en interaktiv konsoll måte R Studio som wraps R statistisk språkkonsoll i en fullverdig IDE Eclipse IDE for Linux Java og C og semi-proprietære IDEer som Enthought Canopy for Python, som inkluderer databehandlingsbiblioteker som NumPy SciPy scikit-lær og pandas i en enkelt interaktiv konsollmiljø . For numerisk backtesting er alle de ovennevnte språkene egnet, selv om det ikke er nødvendig å bruke en GUI IDE som koden vil bli utført i bakgrunnen. Hovedprinsippet på dette stadiet er det for utførelseshastighet Et kompilert språk som C er ofte nyttig hvis dimensjonene for backtesting-parametrene er store. Husk at det er nødvendig å være forsiktig med slike systemer hvis det er tilfelle. Interpreterte språk som Python bruker ofte høypresterende biblioteker som NumPy pandas for backtesting-trinnet, i rekkefølge å opprettholde en rimelig grad av konkurranseevne med kompilerte ekvivalenter. Til slutt vil språket som er valgt for backtesting, bestemmes av bestemte algoritmiske behov samt utvalg av biblioteker tilgjengelig på språket mer på det under. Språket som brukes til backtester og forskningsmiljøer kan imidlertid være helt uavhengig av de som brukes i porteføljekonstruksjon, risikostyring og utførelseskomponenter, slik det blir sett. Portefølje Konstruksjon og risikostyring. Porteføljebygging og risikostyringskomponenter blir ofte oversett av detaljistalgoritmiske forhandlere. Dette er nesten alltid en feil. Disse verktøyene gir mekanismen som kapital vil bli bevart. De forsøker ikke bare å lette antallet risikobete, men også redusere transaksjonskostnadene selv, og redusere transaksjonskostnadene. Avanserte versjoner av disse komponentene kan ha en betydelig effekt på lønnsomhet og konsistens. Det er greit å lage stabile strategier som porteføljekonstruksjonsmekanismen og risikostyringen lett kan endres til håndtere flere systemer Dermed bør de betraktes som essensielle komponenter i begynnelsen av utformingen av et algoritmisk handelssystem. Jobben til porteføljes konstruksjonssystemet er å ta et sett av ønskede bransjer og produsere settet av faktiske bransjer som minimerer kvelning, opprettholder eksponeringer mot ulike faktorer som sektorer, aktivaklasser , volatilitet osv. og optimalisere allokering av kapital til ulike strategier i en portefølje. Porteføljekonstruksjon reduserer ofte til et lineært algebraproblem som en matrisefaktorisering og derfor er ytelsen høyt avhengig av effektiviteten av den numeriske lineære algebraimplementasjonen tilgjengelig. Felles biblioteker inkluderer uBLAS LAPACK og NAG for C MatLab har også omfattende optimaliserte matrisoperasjoner. Python benytter NumPy SciPy for slike beregninger. En ofte gjenbalansert portefølje vil kreve et kompilert og godt optimalisert matrisebibliotek for å bære dette trinnet, for ikke å flaskehals handelssystemet. Risikostyring er En annen ekstremt viktig del av et algoritmisk handelssystem Ris k kan komme i mange former Økt volatilitet, selv om dette kan bli sett på som ønskelig for bestemte strategier, økte korrelasjoner mellom aktivaklasser, motpartsstandard, serverbrudd, svarte svanehendelser og uoppdagede feil i handelskoden, for å nevne noen. Risk ledelseskomponenter forsøker å forutse virkningene av overdreven volatilitet og korrelasjon mellom aktivaklasser og deres påfølgende effekt på handelskapital. Dette reduserer ofte til et sett med statistiske beregninger som Monte Carlo stresstester. Dette ligner veldig på beregningsbehovene til derivatprisene motoren og som sådan vil være CPU-bundet Disse simuleringene er svært parallelliserbare se nedenfor, og i en viss grad er det mulig å kaste maskinvare på problemet. Ekspedisjonssystemer. Oppdraget i kjøringssystemet er å motta filtrerte handelssignaler fra porteføljekonstruksjon og risikostyringskomponenter og sende dem videre til megling eller annen form for markedsadgang For de fleste detaljhandel algoritmiske trading strategier dette innebærer en API eller FIX tilkobling til en megling som Interactive Brokers De primære hensyn når du bestemmer deg for et språk inkluderer kvalitet API, språk-wrapper tilgjengelighet for en API, eksekveringsfrekvens og forventet slippage. Kvaliteten på API-en refererer til hvor godt dokumentert det er, hvilken type ytelse det gir, om det er behov for frittstående programvare som skal nås, eller om en gateway kan etableres på en hodeløs måte, dvs. ingen GUI. For Interactive Brokers er Trader WorkStation-verktøyet må kjøre i et GUI-miljø for å få tilgang til API-en. Jeg måtte en gang installere en Desktop Ubuntu-utgave på en Amazon Cloud-server for å få tilgang til Interactive Brokers eksternt, bare av denne grunn. De fleste APIer vil gi et C - eller Java-grensesnitt. er vanligvis opp til samfunnet for å utvikle språkspesifikke wrappers for C, Python, R, Excel og MatLab. Merk at med hver ekstra plugin utnyttes espe API wrappers er det mulig for feil å krype inn i systemet. Test alltid plugins av denne typen, og sørg for at de holdes aktivt. En verdifull måling er å se hvor mange nye oppdateringer en kodebase har blitt gjort i de siste månedene. Ekspansjonsfrekvensen er av den ytterst viktig i utførelsesalgoritmen Merk at hundrevis av ordrer kan sendes hvert minutt, og som sådan er ytelsen kritisk. Slippage vil bli pådratt gjennom et dårlig utførelseseksjonssystem, og dette vil ha en dramatisk innvirkning på lønnsomheten. Statisk skrevet språk se nedenfor da C Java generelt er optimal for utførelse, men det er en avgang i utviklingstid, testing og vedlikehold. Dynamisk typede språk, for eksempel Python og Perl, er nå generelt raske nok. Sørg alltid for at komponentene er designet på en modulær måte se nedenfor slik at de kan byttes ut som systemet skalerer. Arkitekturplanlegging og utviklingsprosessen. Komponentene i et handelssystem, dets freq uensitets - og volumkrav er omtalt ovenfor, men systeminfrastruktur har ennå ikke blitt dekket. De som handler som en detaljhandler eller arbeider i et lite fond, vil trolig ha på seg mange hatter. Det vil være nødvendig å dekke alfa-modellen, risikostyring og utførelse parametere, og også den endelige implementeringen av systemet Før du drar inn i bestemte språk, vil utformingen av en optimal systemarkitektur bli diskutert. Separasjon av bekymringer. En av de viktigste beslutningene som må gjøres i begynnelsen er hvordan å skille bekymringene fra et handelssystem I programvareutvikling betyr dette i hovedsak hvordan man bryter opp de ulike aspektene av handelssystemet i separate modulære komponenter. Ved å utstede grensesnitt på hver av komponentene er det enkelt å bytte ut deler av systemet for andre versjoner som hjelper ytelse , pålitelighet eller vedlikehold uten å endre ekstern avhengighetskode Dette er den beste praksisen for slike systemer For strategier på lavere frekvenser slik praksis anbefales. For ultrahøyfrekvenshandel må regelboken ignoreres på bekostning av å tilpasse systemet for enda bedre ytelse. Et mer tett koblet system kan være ønskelig. Å lage et komponentkart av et algoritmisk handelssystem er verdt en artikkel i seg selv En optimal tilnærming er imidlertid å sørge for at det finnes separate komponenter for de historiske og sanntidsmarkedsdatainngangene, datalagring, dataadgang API, backtester, strategiparametere, porteføljekonstruksjon, risikostyring og automatiserte eksekveringssystemer. For eksempel , hvis datalageret som brukes, for tiden er underpresterende, selv ved betydelige optimaliseringsnivåer, kan det byttes ut med minimal omskrivning til datainntaket eller datatilgangsprosjektet. Så langt som backtesteren og de etterfølgende komponentene er det ingen forskjell . En annen fordel med separerte komponenter er at det tillater at en rekke programmeringsspråk brukes i det generelle systemet der er ikke nødvendig å være begrenset til et enkelt språk hvis kommunikasjonsmetoden til komponentene er språk uavhengig Dette vil være tilfelle hvis de kommuniserer via TCP IP, ZeroMQ eller noen annen språkavhengig protokoll. Som et konkret eksempel, vurder saken av et backtesting system som skrives i C for antall crunching ytelse, mens porteføljeadministrator og kjøringssystemer er skrevet i Python ved hjelp av SciPy og IBPy. Performance Considerations. Performance er et vesentlig hensyn til de fleste handelsstrategier. For høyere frekvensstrategier er det viktigst faktor ytelse dekker et bredt spekter av problemer, for eksempel algoritmisk eksekveringshastighet, nettverkslatens, båndbredde, data IO, parallell parallellitet og skalering. Hver av disse områdene er individuelt dekket av store lærebøker, så denne artikkelen vil bare skrape overflaten av hvert emne. Arkitektur og språkvalg vil nå bli diskutert med hensyn til deres effekt på ytelse. Den rådende visdom som fremgår av Donald Knuth, en av fedrene til datalogi, er at for tidlig optimalisering er roten til alt ondt. Dette er nesten alltid tilfelle - unntatt når man bygger en høyfrekvent handelsalgoritme For de som er interessert i lavere frekvensstrategier, er det vanlig tilnærming er å bygge et system på den enkleste måten og bare optimalisere etter hvert som flaskehalser begynner å vises. Profilverktøy brukes til å bestemme hvor flaskehalser oppstår. Profiler kan gjøres for alle faktorene som er oppført ovenfor, enten i et MS Windows - eller Linux-miljø. er mange operativsystem og språkverktøy tilgjengelig for dette, samt tredjepartsverktøy. Språkvalg vil nå bli diskutert i sammenheng med ytelse. C, Java, Python, R og MatLab inneholder alle høyytelsesbiblioteker enten som en del av deres standard eller eksternt for grunnleggende datastruktur og algoritmisk arbeid C-skip med Standard Template Library, mens Python inneholder NumPy SciPy Vanlige matematiske oppgaver skal være funnet i disse bibliotekene, og det er sjelden gunstig å skrive en ny implementering. Et unntak er at svært tilpasset maskinvarearkitektur kreves, og en algoritme gjør omfattende bruk av proprietære utvidelser som tilpassede caches. Men ofte gjenoppfinnelse av hjulavfallet tid som kunne være bedre brukt til å utvikle og optimalisere andre deler av handelsinfrastrukturen. Utviklingstiden er ekstremt verdifull, spesielt i sammenheng med eneste utviklere. Latency er ofte et problem med utførelsessystemet som forskningsmiddelene vanligvis ligger på samme maskin. Tidligere er latens kan forekomme på flere punkter langs utførelsesbanen. Databaser må konsulteres med diskenettverkets latens, signaler må genereres operativsystem, kjernalmeldingsforsinkelse, handelssignaler sendt NIC-latens og ordrer behandlet utvekslingssystem intern latens. For høyere frekvensoperasjoner er det nødvendig å bli nært kjent med kernaloptimalisering samt optimalisering av nettverksoverføring Dette er et dypt område og er betydelig utenfor artikkelen, men hvis en UHFT-algoritme er ønsket, så vær oppmerksom på dybden av kunnskap som kreves. Caching er veldig nyttig i verktøykassen til en kvantitativ handelsutvikler. Caching refererer til konsept for lagring av ofte tilgangsdata på en måte som tillater høyere ytelse tilgang på bekostning av potensiell stallhet av dataene En vanlig brukstilfelle skjer i webutvikling når du tar data fra en diskbasert relationsdatabase og legger den i minnet. Enhver etterfølgende Forespørsler om dataene behøver ikke å treffe databasen, og prestasjonsgevinstene kan derfor være signifikante. For handelssituasjoner kan caching være ekstremt gunstig. For eksempel kan dagens status i en strategiportel lagres i en cache til den er rebalansert slik at listen trenger ikke å bli regenerert på hver krets av handelsalgoritmen. Slike regenerering er sannsynligvis en høy CPU eller disk IO-operasjon. Men cachi ng er ikke uten sine egne problemer. Regenerering av hurtigbufferdata på en gang, på grunn av volatiliseringen av hurtiglagringsplassen, kan stille betydelig etterspørsel etter infrastruktur. Et annet problem er hundespann hvor flere generasjoner av en ny hurtigbufferkopi utføres under ekstremt høy belastning, noe som fører til kaskadefeil. Dynamisk minneallokering er en dyr operasjon i programvareutførelse. Det er derfor viktig at høyere prestasjonshandelsapplikasjoner skal være godt klar over hvordan minne blir tildelt og fordelt under programflyten. Nyere språkstandarder som Java, C og Python alle utfører automatisk søppelkolleksjon som refererer til deallokering av dynamisk tildelt minne når gjenstander går utenfor omfanget. Innsamling av gjenvinning er ekstremt nyttig under utvikling, da det reduserer feil og hjelpevennlighet. Det er imidlertid ofte suboptimal for visse høyfrekvente handelsstrategier Tilpasset søppelkolleksjon er ofte ønsket for disse tilfellene I Java, for eksempel ved å tune på søppel aldringssamler og haugkonfigurasjon, er det mulig å oppnå høy ytelse for HFT-strategier. C gir ikke en innfødt søppelkollektor, og det er derfor nødvendig å håndtere all minneallokering som en del av en objekt s implementering. Mens potensielt feilproblemer potensielt fører til dangling pointers det er ekstremt nyttig å ha finkornet kontroll over hvordan objekter vises i bunken for bestemte applikasjoner. Når du velger språk, må du kontrollere hvordan søppelkollektor fungerer, og om det kan modifiseres for å optimalisere for en bestemt brukstilfelle. Mange Operasjoner i algoritmiske handelssystemer kan brukes til parallellisering. Dette refererer til konseptet med å utføre flere programmatiske operasjoner samtidig, dvs. parallelt. Såkalte skremmende parallelle algoritmer inkluderer trinn som kan beregnes helt uavhengig av andre trinn. Visse statistiske operasjoner, slik som som Monte Carlo simuleringer, er et godt eksempel på embarassingly parallelle algoritmer som hver tilfeldig trekk og påfølgende baneoperasjon kan beregnes uten kjennskap til andre baner. Andre algoritmer er bare delvis parallelliserbare Fluiddynamiske simuleringer er et eksempel der domenet til beregning kan deles opp, men i siste rekke må disse domenene kommunisere med hverandre og Dermed er operasjonene delvis sekvensielle. Paralleliserbare algoritmer er underlagt Amdahl s Law som gir en teoretisk øvre grense for ytelsesøkningen av en parallellisert algoritme når de er underlagt N separate prosesser, f. eks. på en CPU-kjerne eller - drage. Parallellisering er blitt stadig viktigere som et middel av optimalisering siden prosessorens klokkeslett har stagnert, da nyere prosessorer inneholder mange kjerner for å utføre parallelle beregninger. Stigningen av forbrukergrafikkhardware hovedsakelig for videospill har ført til utviklingen av grafiske prosesseringsenheter GPUer, som inneholder hundrevis av kjerner for høyt samtidige operasjoner Slike GPUer er nå v ery rimelig høyt nivå rammer, for eksempel Nvidia s CUDA har ført til utbredt adopsjon i akademia og finance. Such GPU maskinvare er generelt bare egnet for forskning aspektet av kvantitative finans, mens andre mer spesialisert maskinvare inkludert Field-Programmable Gate Arrays - FPGAs brukes for U HFT I dag støtter de fleste moderne langauges en grad av samtidighet multithreading. Det er derfor greit å optimalisere en backtester, siden alle beregninger er generelt uavhengige av de andre. Skalering i programvare engineering og operasjoner refererer til systemets evne til å håndtere consistently increasing loads in the form of greater requests, higher processor usage and more memory allocation In algorithmic trading a strategy is able to scale if it can accept larger quantities of capital and still produce consistent returns The trading technology stack scales if it can endure larger trade volumes and increased latency, without bottlenecking. While systems must be desig ned to scale, it is often hard to predict beforehand where a bottleneck will occur Rigourous logging, testing, profiling and monitoring will aid greatly in allowing a system to scale Languages themselves are often described as unscalable This is usually the result of misinformation, rather than hard fact It is the total technology stack that should be ascertained for scalability, not the language Clearly certain languages have greater performance than others in particular use cases, but one language is never better than another in every sense. One means of managing scale is to separate concerns, as stated above In order to further introduce the ability to handle spikes in the system i e sudden volatility which triggers a raft of trades , it is useful to create a message queuing architecture This simply means placing a message queue system between components so that orders are stacked up if a certain component is unable to process many requests. Rather than requests being lost they are si mply kept in a stack until the message is handled This is particularly useful for sending trades to an execution engine If the engine is suffering under heavy latency then it will back up trades A queue between the trade signal generator and the execution API will alleviate this issue at the expense of potential trade slippage A well-respected open source message queue broker is RabbitMQ. Hardware and Operating Systems. The hardware running your strategy can have a significant impact on the profitability of your algorithm This is not an issue restricted to high frequency traders either A poor choice in hardware and operating system can lead to a machine crash or reboot at the most inopportune moment Thus it is necessary to consider where your application will reside The choice is generally between a personal desktop machine, a remote server, a cloud provider or an exchange co-located server. Desktop machines are simple to install and administer, especially with newer user friendly operati ng systems such as Windows 7 8, Mac OSX and Ubuntu Desktop systems do possess some significant drawbacks, however The foremost is that the versions of operating systems designed for desktop machines are likely to require reboots patching and often at the worst of times They also use up more computational resources by the virtue of requiring a graphical user interface GUI. Utilising hardware in a home or local office environment can lead to internet connectivity and power uptime problems The main benefit of a desktop system is that significant computational horsepower can be purchased for the fraction of the cost of a remote dedicated server or cloud based system of comparable speed. A dedicated server or cloud-based machine, while often more expensive than a desktop option, allows for more significant redundancy infrastructure, such as automated data backups, the ability to more straightforwardly ensure uptime and remote monitoring They are harder to administer since they require the abi lity to use remote login capabilities of the operating system. In Windows this is generally via the GUI Remote Desktop Protocol RDP In Unix-based systems the command-line Secure SHell SSH is used Unix-based server infrastructure is almost always command-line based which immediately renders GUI-based programming tools such as MatLab or Excel to be unusable. A co-located server, as the phrase is used in the capital markets, is simply a dedicated server that resides within an exchange in order to reduce latency of the trading algorithm This is absolutely necessary for certain high frequency trading strategies, which rely on low latency in order to generate alpha. The final aspect to hardware choice and the choice of programming language is platform-independence Is there a need for the code to run across multiple different operating systems Is the code designed to be run on a particular type of processor architecture, such as the Intel x86 x64 or will it be possible to execute on RISC process ors such as those manufactured by ARM These issues will be highly dependent upon the frequency and type of strategy being implemented. Resilience and Testing. One of the best ways to lose a lot of money on algorithmic trading is to create a system with no resiliency This refers to the durability of the sytem when subject to rare events, such as brokerage bankruptcies, sudden excess volatility, region-wide downtime for a cloud server provider or the accidental deletion of an entire trading database Years of profits can be eliminated within seconds with a poorly-designed architecture It is absolutely essential to consider issues such as debuggng, testing, logging, backups, high-availability and monitoring as core components of your system. It is likely that in any reasonably complicated custom quantitative trading application at least 50 of development time will be spent on debugging, testing and maintenance. Nearly all programming languages either ship with an associated debugger or possess well-respected third-party alternatives In essence, a debugger allows execution of a program with insertion of arbitrary break points in the code path, which temporarily halt execution in order to investigate the state of the system The main benefit of debugging is that it is possible to investigate the behaviour of code prior to a known crash point. Debugging is an essential component in the toolbox for analysing programming errors However, they are more widely used in compiled languages such as C or Java, as interpreted languages such as Python are often easier to debug due to fewer LOC and less verbose statements Despite this tendency Python does ship with the pdb which is a sophisticated debugging tool The Microsoft Visual C IDE possesses extensive GUI debugging utilities, while for the command line Linux C programmer, the gdb debugger exists. Testing in software development refers to the process of applying known parameters and results to specific functions, methods and objects wit hin a codebase, in order to simulate behaviour and evaluate multiple code-paths, helping to ensure that a system behaves as it should A more recent paradigm is known as Test Driven Development TDD , where test code is developed against a specified interface with no implementation Prior to the completion of the actual codebase all tests will fail As code is written to fill in the blanks , the tests will eventually all pass, at which point development should cease. TDD requires extensive upfront specification design as well as a healthy degree of discipline in order to carry out successfully In C , Boost provides a unit testing framework In Java, the JUnit library exists to fulfill the same purpose Python also has the unittest module as part of the standard library Many other languages possess unit testing frameworks and often there are multiple options. In a production environment, sophisticated logging is absolutely essential Logging refers to the process of outputting messages, with var ious degrees of severity, regarding execution behaviour of a system to a flat file or database Logs are a first line of attack when hunting for unexpected program runtime behaviour Unfortunately the shortcomings of a logging system tend only to be discovered after the fact As with backups discussed below, a logging system should be given due consideration BEFORE a system is designed. Both Microsoft Windows and Linux come with extensive system logging capability and programming languages tend to ship with standard logging libraries that cover most use cases It is often wise to centralise logging information in order to analyse it at a later date, since it can often lead to ideas about improving performance or error reduction, which will almost certainly have a positive impact on your trading returns. While logging of a system will provide information about what has transpired in the past, monitoring of an application will provide insight into what is happening right now All aspects of the system should be considered for monitoring System level metrics such as disk usage, available memory, network bandwidth and CPU usage provide basic load information. Trading metrics such as abnormal prices volume, sudden rapid drawdowns and account exposure for different sectors markets should also be continuously monitored Further, a threshold system should be instigated that provides notification when certain metrics are breached, elevating the notification method email, SMS, automated phone call depending upon the severity of the metric. System monitoring is often the domain of the system administrator or operations manager However, as a sole trading developer, these metrics must be established as part of the larger design Many solutions for monitoring exist proprietary, hosted and open source, which allow extensive customisation of metrics for a particular use case. Backups and high availability should be prime concerns of a trading system Consider the following two questions 1 If an entire production database of market data and trading history was deleted without backups how would the research and execution algorithm be affected 2 If the trading system suffers an outage for an extended period with open positions how would account equity and ongoing profitability be affected The answers to both of these questions are often sobering. It is imperative to put in place a system for backing up data and also for testing the restoration of such data Many individuals do not test a restore strategy If recovery from a crash has not been tested in a safe environment, what guarantees exist that restoration will be available at the worst possible moment. Similarly, high availability needs to be baked in from the start Redundant infrastructure even at additional expense must always be considered, as the cost of downtime is likely to far outweigh the ongoing maintenance cost of such systems I won t delve too deeply into this topic as it is a large area, but make sure it is one of the first considerations given to your trading system. Choosing a Language. Considerable detail has now been provided on the various factors that arise when developing a custom high-performance algorithmic trading system The next stage is to discuss how programming languages are generally categorised. Type Systems. When choosing a language for a trading stack it is necessary to consider the type system The languages which are of interest for algorithmic trading are either statically - or dynamically-typed A statically-typed language performs checks of the types e g integers, floats, custom classes etc during the compilation process Such languages include C and Java A dynamically-typed language performs the majority of its type-checking at runtime Such languages include Python, Perl and JavaScript. For a highly numerical system such as an algorithmic trading engine, type-checking at compile time can be extremely beneficial, as it can eliminate many bugs that would otherwise lead to numerical errors However, type-checking doesn t catch everything, and this is where exception handling comes in due to the necessity of having to handle unexpected operations Dynamic languages i e those that are dynamically-typed can often lead to run-time errors that would otherwise be caught with a compilation-time type-check For this reason, the concept of TDD see above and unit testing arose which, when carried out correctly, often provides more safety than compile-time checking alone. Another benefit of statically-typed languages is that the compiler is able to make many optimisations that are otherwise unavailable to the dynamically - typed language, simply because the type and thus memory requirements are known at compile-time In fact, part of the inefficiency of many dynamically-typed languages stems from the fact that certain objects must be type-inspected at run-time and this carries a performance hit Libraries for dynamic languages, such as NumPy SciPy alleviate this issue due to enforc ing a type within arrays. Open Source or Proprietary. One of the biggest choices available to an algorithmic trading developer is whether to use proprietary commercial or open source technologies There are advantages and disadvantages to both approaches It is necessary to consider how well a language is supported, the activity of the community surrounding a language, ease of installation and maintenance, quality of the documentation and any licensing maintenance costs. The Microsoft stack including Visual C , Visual C and MathWorks MatLab are two of the larger proprietary choices for developing custom algorithmic trading software Both tools have had significant battle testing in the financial space, with the former making up the predominant software stack for investment banking trading infrastructure and the latter being heavily used for quantitative trading research within investment funds. Microsoft and MathWorks both provide extensive high quality documentation for their products Furthe r, the communities surrounding each tool are very large with active web forums for both The software allows cohesive integration with multiple languages such as C , C and VB, as well as easy linkage to other Microsoft products such as the SQL Server database via LINQ MatLab also has many plugins libraries some free, some commercial for nearly any quantitative research domain. There are also drawbacks With either piece of software the costs are not insignificant for a lone trader although Microsoft does provide entry-level version of Visual Studio for free Microsoft tools play well with each other, but integrate less well with external code Visual Studio must also be executed on Microsoft Windows, which is arguably far less performant than an equivalent Linux server which is optimally tuned. MatLab also lacks a few key plugins such as a good wrapper around the Interactive Brokers API, one of the few brokers amenable to high-performance algorithmic trading The main issue with proprietary p roducts is the lack of availability of the source code This means that if ultra performance is truly required, both of these tools will be far less attractive. Open source tools have been industry grade for sometime Much of the alternative asset space makes extensive use of open-source Linux, MySQL PostgreSQL, Python, R, C and Java in high-performance production roles However, they are far from restricted to this domain Python and R, in particular, contain a wealth of extensive numerical libraries for performing nearly any type of data analysis imaginable, often at execution speeds comparable to compiled languages, with certain caveats. The main benefit of using interpreted languages is the speed of development time Python and R require far fewer lines of code LOC to achieve similar functionality, principally due to the extensive libraries Further, they often allow interactive console based development, rapidly reducing the iterative development process. Given that time as a developer is extremely valuable, and execution speed often less so unless in the HFT space , it is worth giving extensive consideration to an open source technology stack Python and R possess significant development communities and are extremely well supported, due to their popularity Documentation is excellent and bugs at least for core libraries remain scarce. Open source tools often suffer from a lack of a dedicated commercial support contract and run optimally on systems with less-forgiving user interfaces A typical Linux server such as Ubuntu will often be fully command-line oriented In addition, Python and R can be slow for certain execution tasks There are mechanisms for integrating with C in order to improve execution speeds, but it requires some experience in multi-language programming. While proprietary software is not immune from dependency versioning issues it is far less common to have to deal with incorrect library versions in such environments Open source operating systems such as Linu x can be trickier to administer. I will venture my personal opinion here and state that I build all of my trading tools with open source technologies In particular I use Ubuntu, MySQL, Python, C and R The maturity, community size, ability to dig deep if problems occur and lower total cost ownership TCO far outweigh the simplicity of proprietary GUIs and easier installations Having said that, Microsoft Visual Studio especially for C is a fantastic Integrated Development Environment IDE which I would also highly recommend. Batteries Included. The header of this section refers to the out of the box capabilities of the language - what libraries does it contain and how good are they This is where mature languages have an advantage over newer variants C , Java and Python all now possess extensive libraries for network programming, operating system interaction, GUIs, regular expressions regex , iteration and basic algorithms. C is famed for its Standard Template Library STL which contains a wealt h of high performance data structures and algorithms for free Python is known for being able to communicate with nearly any other type of system protocol especially the web , mostly through its own standard library R has a wealth of statistical and econometric tools built in, while MatLab is extremely optimised for any numerical linear algebra code which can be found in portfolio optimisation and derivatives pricing, for instance. Outside of the standard libraries, C makes use of the Boost library, which fills in the missing parts of the standard library In fact, many parts of Boost made it into the TR1 standard and subsequently are available in the C 11 spec, including native support for lambda expressions and concurrency. Python has the high performance NumPy SciPy Pandas data analysis library combination, which has gained widespread acceptance for algorithmic trading research Further, high-performance plugins exist for access to the main relational databases, such as MySQL MySQL C , J DBC Java MatLab , MySQLdb MySQL Python and psychopg2 PostgreSQL Python Python can even communicate with R via the RPy plugin. An often overlooked aspect of a trading system while in the initial research and design stage is the connectivity to a broker API Most APIs natively support C and Java, but some also support C and Python, either directly or with community-provided wrapper code to the C APIs In particular, Interactive Brokers can be connected to via the IBPy plugin If high-performance is required, brokerages will support the FIX protocol. As is now evident, the choice of programming language s for an algorithmic trading system is not straightforward and requires deep thought The main considerations are performance, ease of development, resiliency and testing, separation of concerns, familiarity, maintenance, source code availability, licensing costs and maturity of libraries. The benefit of a separated architecture is that it allows languages to be plugged in for different aspects o f a trading stack, as and when requirements change A trading system is an evolving tool and it is likely that any language choices will evolve along with it. Just Getting Started with Quantitative Trading. Trading Floor Architecture. Trading Floor Architecture. Executive Overview. Increased competition, higher market data volume, and new regulatory demands are some of the driving forces behind industry changes Firms are trying to maintain their competitive edge by constantly changing their trading strategies and increasing the speed of trading. A viable architecture has to include the latest technologies from both network and application domains It has to be modular to provide a manageable path to evolve each component with minimal disruption to the overall system Therefore the architecture proposed by this paper is based on a services framework We examine services such as ultra-low latency messaging, latency monitoring, multicast, computing, storage, data and application virtualization, tra ding resiliency, trading mobility, and thin client. The solution to the complex requirements of the next-generation trading platform must be built with a holistic mindset, crossing the boundaries of traditional silos like business and technology or applications and networking. This document s main goal is to provide guidelines for building an ultra-low latency trading platform while optimizing the raw throughput and message rate for both market data and FIX trading orders. To achieve this, we are proposing the following latency reduction technologies. High speed inter-connect InfiniBand or 10 Gbps connectivity for the trading cluster. High-speed messaging bus. Application acceleration via RDMA without application re-code. Real-time latency monitoring and re-direction of trading traffic to the path with minimum latency. Industry Trends and Challenges. Next-generation trading architectures have to respond to increased demands for speed, volume, and efficiency For example, the volume of options market data is expected to double after the introduction of options penny trading in 2007 There are also regulatory demands for best execution, which require handling price updates at rates that approach 1M msg sec for exchanges They also require visibility into the freshness of the data and proof that the client got the best possible execution. In the short term, speed of trading and innovation are key differentiators An increasing number of trades are handled by algorithmic trading applications placed as close as possible to the trade execution venue A challenge with these black-box trading engines is that they compound the volume increase by issuing orders only to cancel them and re-submit them The cause of this beh avior is lack of visibility into which venue offers best execution The human trader is now a financial engineer, a quant quantitative analyst with programming skills, who can adjust trading models on the fly Firms develop new financial instruments like weather derivatives or cross-asset class trades and they need to deploy the new applications quickly and in a scalable fashion. In the long term, competitive differentiation should come from analysis, not just knowledge The star traders of tomorrow assume risk, achieve true client insight, and consistently beat the market source IBM. Business resilience has been one main concern of trading firms since September 11, 2001 Solutions in this area range from redundant data centers situated in different geographies and connected to multiple trading venues to virtual trader solutions offering power traders most of the functionality of a trading floor in a remote location. The financial services industry is one of the most demanding in terms of IT requirements The industry is experiencing an architectural shift towards Services-Oriented Architecture SOA , Web services, and virtualization of IT resources SOA takes advantage of the increase in network speed to enable dynamic binding and virtualization of software components This allows the creation of new applications without losing the investment in existing systems and infrastructure The concept has the potential to revolutionize the way integration is done, enabling significant reductions in the complexity and cost of such integration. Another trend is the consolidation of servers into data center server farms, while trader desks have only KVM extensions and ultra-thin clients e g SunRay and HP blade solutions High-speed Metro Area Networks enable market data to be multicast between different locations, enabling the virtualization of the trading floor. High-Level Architecture. Figure 1 depicts the high-level architecture of a trading environment The ticker plant and the algorithmi c trading engines are located in the high performance trading cluster in the firm s data center or at the exchange The human traders are located in the end-user applications area. Functionally there are two application components in the enterprise trading environment, publishers and subscribers The messaging bus provides the communication path between publishers and subscribers. There are two types of traffic specific to a trading environment. Market Data Carries pricing information for financial instruments, news, and other value-added information such as analytics It is unidirectional and very latency sensitive, typically delivered over UDP multicast It is measured in updates sec and in Mbps Market data flows from one or multiple external feeds, coming from market data providers like stock exchanges, data aggregators, and ECNs Each provider has their own market data format The data is received by feed handlers, specialized applications which normalize and clean the data and then send it to data consumers, such as pricing engines, algorithmic trading applications, or human traders Sell-side firms also send the market data to their clients, buy-side firms such as mutual funds, hedge funds, and other asset managers Some buy-side firms may opt to receive direct feeds from exchanges, reducing latency. Figure 1 Trading Architecture for a Buy Side Sell Side Firm. There is no industry standard for market data formats Each exchange h as their proprietary format Financial content providers such as Reuters and Bloomberg aggregate different sources of market data, normalize it, and add news or analytics Examples of consolidated feeds are RDF Reuters Data Feed , RWF Reuters Wire Format , and Bloomberg Professional Services Data. To deliver lower latency market data, both vendors have released real-time market data feeds which are less processed and have less analytics. Bloomberg B-Pipe With B-Pipe, Bloomberg de-couples their market data feed from their distribution platform because a Bloomberg terminal is not required for get B-Pipe Wombat and Reuters Feed Handlers have announced support for B-Pipe. A firm may decide to receive feeds directly from an exchange to reduce latency The gains in transmission speed can be between 150 milliseconds to 500 milliseconds These feeds are more complex and more expensive and the firm has to build and maintain their own ticker plant. Trading Orders This type of traffic carries the actual trades It is bi-directional and very latency sensitive It is measured in messages sec and Mbps The orders originate from a buy side or sell side firm and are sent to trading venues like an Exchange or ECN for execution The most common format for order transport is FIX Financial Information The applications which handle FIX messages are called FIX engines and they interface with order management systems OMS. An optimization to FIX is called FAST Fix Adapted for Streaming , which uses a compression schema to reduce message length and, in effect, reduce latency FAST is targeted more to the delivery of market data and has the potential to become a standard FAST can also be used as a compression schema for proprietary market data formats. To reduce latency, firms may opt to establish Direct Market Access DMA. DMA is the automated process of routing a securities order directly to an execution venue, therefore avoiding the intervention by a third-party glossaryId 383 DMA requires a direct connection to the execution venue. The messaging bus is middleware software from vendors such as Tibco, 29West, Reuters RMDS, or an open source platform such as AMQP The messaging bus uses a reliable mechanism to deliver messages The transport can be done over TCP IP TibcoEMS, 29West, RMDS, and AMQP or UDP multicast TibcoRV, 29West, and RMDS One important concept in message distribution is the topic stream, which is a subset of market data defined by criteria such as ticker symbol, industry, or a certain basket of financial instruments Subscribers join topic groups mapped to one or multiple sub-topics in order to receive only the relevant information In the past, all traders received all market data At the current volumes of traffic, this would be sub-optimal. The network plays a critical role in the trading environment Market data is carried to the trading floor where the human traders are located via a Campus or Metro Area high-speed net work High availability and low latency, as well as high throughput, are the most important metrics. The high performance trading environment has most of its components in the Data Center server farm To minimize latency, the algorithmic trading engines need to be located in the proximity of the feed handlers, FIX engines, and order management systems An alternate deployment model has the algorithmic trading systems located at an exchange or a service provider with fast connectivity to multiple exchanges. Deployment Models. There are two deployment models for a high performance trading platform Firms may chose to have a mix of the two. Data Center of the trading firm Figure 2 This is the traditional model, where a full-fledged trading platform is developed and maintained by the firm with communication links to all the trading venues Latency varies with the speed of the links and the number of hops between the firm and the venues. Figure 2 Traditional Deployment Model. Co-location at the trading venue exchanges, financial service providers FSP Figure 3.The trading firm deploys its automated trading platform as close as possible to the execution venues to minimize latency. Figure 3 Hosted Deployment Model. Services-Oriented Trading Architecture. We are proposing a services-oriented framework for building the next-generation trading architecture This approach provides a conceptual framework and an implementation path based on modularization and minimization of inter-dependencies. This framework provides firms with a methodology to. Evaluate their current state in terms of services. Prioritize services based on their value to the business. Evolve the trading platform to the desired state using a modular approach. The high performance trading architecture relies on the following services, as defined by the services architecture framework represented in Figure 4.Figure 4 Service Architecture Framework for High Performance Trading. Ultra-Low Latency Messaging Service. This service is provided by the messaging bus, which is a software system that solves the problem of connecting many-to-many applications The system consists of. A set of pre-defined message schemas. A set of common command messages. A shared application infrastructure for sending the messages to recipients The shared infrastructure can be based on a message broker or on a publish subscribe model. The key requirements for the next-generation messaging bus are source 29West. Lowest possible latency e g less than 100 microseconds. Stability under heavy load e g more than 1 4 million msg sec. Control and flexibility rate control and configurable transports. There are efforts in the industry to standardize the messaging bus Advanced Message Queueing Protocol AMQP is an example of an open standard championed by J P Morgan Chase and supported by a group of vendors such as Cisco, Envoy Technologies, Red Hat, TWIST Process Innovations, Iona, 29West, and iMatix Two of the main goals are to provide a more simple path to inter-operability for applications written on different platforms and modularity so that the middleware can be easily evolved. In very general terms, an AMQP server is analogous to an E-mail server with each exchange acting as a message transfer agent and each message queue as a mailbox The bindings define the routing tables in each transfer agent Publishers send messages to individual transfer agents, which then route the messages into mailboxes Consumers take messages from mailboxes, which creates a powerful and flexible model that is simple source. Latency Monitori ng Service. The main requirements for this service are. Sub-millisecond granularity of measurements. Near-real time visibility without adding latency to the trading traffic. Ability to differentiate application processing latency from network transit latency. Ability to handle high message rates. Provide a programmatic interface for trading applications to receive latency data, thus enabling algorithmic trading engines to adapt to changing conditions. Correlate network events with application events for troubleshooting purposes. Latency can be defined as the time interval between when a trade order is sent and when the same order is acknowledged and acted upon by the receiving party. Addressing the latency issue is a complex problem, requiring a holistic approach that identifies all sources of latency and applies different technologies at different layers of the system. Figure 5 depicts the variety of components that can introduce latency at each layer of the OSI stack It also maps each source of latency with a possible solution and a monitoring solution This layered approach can give firms a more structured way of attacking the latency issue, whereby each component can be thought of as a service and treated consistently across the firm. Maintaining an accurate measure of the dynamic state of this time interval across alternative routes and destinations can be of great assistance in tactical trading decisions The ability to identify the exact location of delays, whether in the customer s edge network, the central processing hub, or the transaction application level, significantly determines the ability of service providers to meet their trading service-level agreements SLAs For buy-side and sell-side forms, as well as for market-data syndicators, the quick identification and removal of bottlenecks translates directly into enhanced trade opportunities and revenue. Figure 5 Latency Management Architecture. Cisco Low-Latency Monitoring Tools. Traditional network monitoring tools operate with minutes or seconds granularity Next-generation trading platforms, especially those supporting algorithmic trading, require latencies less than 5 ms and extremely low levels of packet loss On a Gigabit LAN, a 100 ms microburst can cause 10,000 transactions to be lost or excessively delayed. Cisco offers its customers a choice of tools to measure latency in a trading environment. Bandwidth Quality Manager BQM OEM from Corvil. Cisco AON-based Financial Services Latency Monitoring Solution FSMS. Bandwidth Quality Manager. Bandwidth Quality Manager BQM 4 0 is a next-generation network application performance management product that enables customers to monitor and provision their network for controlled levels of latency and loss performance While BQM is not exclusively targeted at trading networks, its microsecond visibility combined with intelligent bandwidth provisioning features make it ideal for these demanding environments. Cisco BQM 4 0 implements a broad set of patented and patent-pending traffic measurement and network analysis technologies that give the user unprecedented visibility and understanding of how to optimize the network for maximum application performance. Cisco BQM is now supported on the product family of Cisco Application Deployment Engine ADE The Cisco ADE product family is the platform of choice for Cisco network management applications. BQM Benefits. Cisco BQM micro-visibility is the abilit y to detect, measure, and analyze latency, jitter, and loss inducing traffic events down to microsecond levels of granularity with per packet resolution This enables Cisco BQM to detect and determine the impact of traffic events on network latency, jitter, and loss Critical for trading environments is that BQM can support latency, loss, and jitter measurements one-way for both TCP and UDP multicast traffic This means it reports seamlessly for both trading traffic and market data feeds. BQM allows the user to specify a comprehensive set of thresholds against microburst activity, latency, loss, jitter, utilization, etc on all interfaces BQM then operates a background rolling packet capture Whenever a threshold violation or other potential performance degradation event occurs, it triggers Cisco BQM to store the packet capture to disk for later analysis This allows the user to examine in full detail both the application traffic that was affected by performance degradation the victims and th e traffic that caused the performance degradation the culprits This can significantly reduce the time spent diagnosing and resolving network performance issues. BQM is also able to provide detailed bandwidth and quality of service QoS policy provisioning recommendations, which the user can directly apply to achieve desired network performance. BQM Measurements Illustrated. To understand the difference between some of the more conventional measurement techniques and the visibility provided by BQM, we can look at some comparison graphs In the first set of graphs Figure 6 and Figure 7 , we see the difference between the latency measured by BQM s Passive Network Quality Monitor PNQM and the latency measured by injecting ping packets every 1 second into the traffic stream. In Figure 6 we see the latency reported by 1-second ICMP ping packets for real network traffic it is divided by 2 to give an estimate for the one-way delay It shows the delay comfortably below about 5ms for almost all of the time. Figure 6 Latency Reported by 1-Second ICMP Ping Packets for Real Network Traffic. In Figure 7 we see the latency reported by PNQM for the same traffic at the same time Here we see that by measuring the one-way latency of the actual application packets, we get a radically different picture Here the latency is seen to be hovering around 20 ms, with occasional bursts far higher The explanation is that because ping is sending packets only every second, it is completely missing most of the application traffic latency In fact, ping results typically only indicate round trip propagation delay rather than realistic application latency across the network. Figure 7 Latency Reported by PNQM for Real Network Traffic. In the second example Figure 8 , we see the difference in reported link load or saturation levels between a 5-minute average view and a 5 ms microburst view BQM can report on microbursts down to about 10-100 nanosecond accuracy The green line shows the average utilization at 5-minut e averages to be low, maybe up to 5 Mbits s The dark blue plot shows the 5ms microburst activity reaching between 75 Mbits s and 100 Mbits s, the LAN speed effectively BQM shows this level of granularity for all applications and it also gives clear provisioning rules to enable the user to control or neutralize these microbursts. Figure 8 Difference in Reported Link Load Between a 5-Minute Average View and a 5 ms Microburst View. BQM Deployment in the Trading Network. Figure 9 shows a typical BQM deployment in a trading network. Figure 9 Typical BQM Deployment in a Trading Network. BQM can then be used to answer these types of questions. Are any of my Gigabit LAN core links saturated for more than X milliseconds Is this causing loss Which links would most benefit from an upgrade to Etherchannel or 10 Gigabit speeds. What application traffic is causing the saturation of my 1 Gigabit links. Is any of the market data experiencing end-to-end loss. How much additional latency does the failover data center experience Is this link sized correctly to deal with microbursts. Are my traders getting low latency updates from the market data distribution layer Are they seeing any delays greater than X milliseconds. Being able to answer these questions simply and effectively saves time and money in running the trading network. BQM is an essential tool for gaining visibility in market data and trading environments It provides granular end-to-end latency measurements in complex infrastructures that experience high-volume data movement Effectively detecting microbursts in sub-millisecond levels and receiving expert analysis on a particular event is invaluable to trading floor architects Smart bandwidth provisioning recommendations, such as sizing and what-if analysis, provide greater agility to respond to volatile market conditions As the explosion of algorithmic trading and increasing message rates continues, BQM, combined with its QoS tool, provides the capability of implementing QoS policies that can protect critical trading applications. Cisco Financial Services Latency Monitoring Solution. Cisco and Trading Metrics have collaborated on latency monitoring solutions for FIX order flow and market data monitoring Cisco AON technology is the foundation for a new class of network-embedded products and solutions that help merge intelligent networks with application infrastructure, based on either service-oriented or traditional architectures Trading Metrics is a leading provider of analytics software for network infrastructure and application latency monitoring purposes. The Cisco AON Financial Services Latency Monitoring Solution FSMS correlated two kinds of events at the point of observation. Network events correlated directly with coincident application message handling. Trade order flow and matching market update events. Using time stamps asserted at the point of capture in the network, real-time analysis of these correlated data streams permits precise identification of bottlenecks across the infrastructure while a trade is being executed or market data is being distributed By monitoring and measuring latency early in the cycle, financial companies can make better decisions about which network service and which intermediary, market, or counterparty to select for routing trade orders Likewise, this knowledge allows more streamlined access to updated market data stock quotes, economic news, etc , which is an important basis for initiating, withdrawing from, or pursuing market opportunities. The components of the solution are. AON hardware in three form factors. AON Network Module for Cisco 2600 2800 3700 3800 routers. AON Blade for the Cisco Catalyst 6500 series. AON 8340 Appliance. Trading Metrics M A 2 0 software, which provides the monitoring and alerting application, displays latency graphs on a dashboard, and issues alerts when slowdowns occur. Figure 10 AON-Based FIX Latency Monitoring. Cisco IP SLA. Cisco IP SLA is an embedded network management tool in Cisco IOS which allows routers and switches to generate synthetic traffic streams which can be measured for latency, jitter, packet loss, and other criteria. Two key concepts are the source of the generated traffic and the target Both of these run an IP SLA responder, which has the responsibility to timestamp the control traffic before it is sourced and returned by the target for a round trip measurement Various traffic types can be sourced within IP SLA and they are aimed at different metrics and target different services and applications The UDP jitter operation is used to measure one-way and round-trip delay and report variations As the traffic is time stamped on both sending and target devices using the resp onder capability, the round trip delay is characterized as the delta between the two timestamps. A new feature was introduced in IOS 12 3 14 T, IP SLA Sub Millisecond Reporting, which allows for timestamps to be displayed with a resolution in microseconds, thus providing a level of granularity not previously available This new feature has now made IP SLA relevant to campus networks where network latency is typically in the range of 300-800 microseconds and the ability to detect trends and spikes brief trends based on microsecond granularity counters is a requirement for customers engaged in time-sensitive electronic trading environments. As a result, IP SLA is now being considered by significant numbers of financial organizations as they are all faced with requirements to. Report baseline latency to their users. Trend baseline latency over time. Respond quickly to traffic bursts that cause changes in the reported latency. Sub-millisecond reporting is necessary for these customers, since many campus and backbones are currently delivering under a second of latency across several switch hops Electronic trading environments have generally worked to eliminate or minimize all areas of device and network latency to deliver rapid order fulfillment to the business Reporting that network response times are just under one millisecond is no longer sufficient the granularity of latency measurements reported across a network segment or backbone need to be closer to 300-800 micro-seconds with a degree of resolution of 100 seconds. IP SLA recently added support for IP multicast test streams, which can measure market data latency. A typical network topology is shown in Figure 11 with the IP SLA shadow routers, sources, and responders. Figure 11 IP SLA Deploymentputing Servicesputing services cover a wide range of technologies with the goal of elim inating memory and CPU bottlenecks created by the processing of network packets Trading applications consume high volumes of market data and the servers have to dedicate resources to processing network traffic instead of application processing. Transport processing At high speeds, network packet processing can consume a significant amount of server CPU cycles and memory An established rule of thumb states that 1Gbps of network bandwidth requires 1 GHz of processor capacity source Intel white paper on I O acceleration. Intermediate buffer copying In a conventional network stack implementation, data needs to be copied by the CPU between network buffers and application buffers This overhead is worsened by the fact that memory speeds have not kept up with increases in CPU speeds For example, processors like the Intel Xeon are approaching 4 GHz, while RAM chips hover around 400MHz for DDR 3200 memory source Intel. Context switching Every time an individual packet needs to be processed, the CPU performs a context switch from application context to network traffic context This overhead could be reduced if the switch would occur only when the whole application buffer is complete. Figure 12 Sources of Overhead in Data Center Servers. TCP Offload Engine TOE Offloads transport processor cycles to the NIC Moves TCP IP protocol stack buffer copies from system memory to NIC memory. Remote Direct Memory Access RDMA Enables a network adapter to transfer data directly from application to application without involving the operating system Eliminates intermediate and application buffer copies memory bandwidth consumption. Kernel bypass Direct user-level access to hardware Dramatically reduces application context switches. Figure 13 RDMA and Kernel Bypass. InfiniBand is a point-to-point switched fabric bidirectional serial communication link which implements RDMA, among other features Cisco offers an InfiniBand switch, the Server Fabric Switch SFS. Figure 14 Typical SFS Deployment. Trading applications benefit from the reduction in latency and latency variability, as proved by a test performed with the Cisco SFS and Wombat Feed Handlers by Stac Research. Application Virtualization Service. De-coupling the application from the underlying OS and server hardware enables them to run as network services One application can be run in parallel on multiple servers, or multiple applications can be run on the same server, as the best resource allocation dictates This decoupling enables better load balancing and disaster recovery for business continuance strategies The process of re-allocating computing resources to an a pplication is dynamic Using an application virtualization system like Data Synapse s GridServer, applications can migrate, using pre-configured policies, to under-utilized servers in a supply-matches-demand process. There are many business advantages for financial firms who adopt application virtualization. Faster time to market for new products and services. Faster integration of firms following merger and acquisition activity. Increased application availability. Better workload distribution, which creates more head room for processing spikes in trading volume. Operational efficiency and control. Reduction in IT complexity. Currently, application virtualization is not used in the trading front-office One use-case is risk modeling, like Monte Carlo simulations As the technology evolves, it is conceivable that some the trading platforms will adopt it. Data Virtualization Service. To effectively share resources across distributed enterprise applications, firms must be able to leverage data across multiple sources in real-time while ensuring data integrity With solutions from data virtualization software vendors such as Gemstone or Tangosol now Oracle , financial firms can access heterogeneous sources of data as a single system image that enables connectivity between business processes and unrestrained application access to distributed caching The net result is that all users have instant access to these data resources across a distributed network. This is called a data grid and is the first step in the process of creating what Gartner calls Extreme Transaction Processing XTP id 500947 Technologies such as data and applications virtualization enable financial firms to perform real-time complex analytics, event-driven applications, and dynamic resource allocation. One example of data virtualization in action is a global order book application An order book is the repository of active orders that is published by the exchange or other market makers A global order book aggregates orders from around the world from markets that operate independently The biggest challenge for the application is scalability over WAN connectivity because it has to maintain state Today s data grids are localized in data centers connected by Metro Area Networks MAN This is mainly because the applications themselves have limits they have been developed without the WAN in mind. Figure 15 GemStone GemFire Distributed Caching. Before data virtualization, applications used database clustering for failover and scalability This solution is limited by the performance of the underlying database Failover i s slower because the data is committed to disc With data grids, the data which is part of the active state is cached in memory, which reduces drastically the failover time Scaling the data grid means just adding more distributed resources, providing a more deterministic performance compared to a database cluster. Multicast Service. Market data delivery is a perfect example of an application that needs to deliver the same data stream to hundreds and potentially thousands of end users Market data services have been implemented with TCP or UDP broadcast as the network layer, but those implementations have limited scalability Using TCP requires a separate socket and sliding window on the server for each recipient UDP broadcast requires a separate copy of the stream for each destination subnet Both of these methods exhaust the resources of the servers and the network The server side must transmit and service each of the streams individually, which requires larger and larger server farms On th e network side, the required bandwidth for the application increases in a linear fashion For example, to send a 1 Mbps stream to 1000recipients using TCP requires 1 Gbps of bandwidth. IP multicast is the only way to scale market data delivery To deliver a 1 Mbps stream to 1000 recipients, IP multicast would require 1 Mbps The stream can be delivered by as few as two servers one primary and one backup for redundancy. There are two main phases of market data delivery to the end user In the first phase, the data stream must be brought from the exchange into the brokerage s network Typically the feeds are terminated in a data center on the customer premise The feeds are then processed by a feed handler, which may normalize the data stream into a common format and then republish into the application messaging servers in the data center. The second phase involves injecting the data stream into the application messaging bus which feeds the core infrastructure of the trading applications The larg e brokerage houses have thousands of applications that use the market data streams for various purposes, such as live trades, long term trending, arbitrage, etc Many of these applications listen to the feeds and then republish their own analytical and derivative information For example, a brokerage may compare the prices of CSCO to the option prices of CSCO on another exchange and then publish ratings which a different application may monitor to determine how much they are out of synchronization. Figure 16 Market Data Distribution Players. The delivery of these data streams is typically over a reliable multicast transport protocol, traditionally Tibco Rendezvous Tibco RV operates in a publish and subscribe environment Each financial instrument is given a subject name, such as Each application server can request the individual instruments of interest by their subject name and receive just a that subset of the information This is called subject-based forwarding or filtering Subject-based f iltering is patented by Tibco. A distinction should be made between the first and second phases of market data delivery The delivery of market data from the exchange to the brokerage is mostly a one-to-many application The only exception to the unidirectional nature of market data may be retransmission requests, which are usually sent using unicast The trading applications, however, are definitely many-to-many applications and may interact with the exchanges to place orders. Figure 17 Market Data Architecture. Design Issues. Number of Groups Channels to Use. Many application developers consider using thousand of multicast groups to give them the ability to divide up products or instruments into small buckets Normally these applications send many small messages as part of their information bus Usually several messages are sent in each packet that are received by many users Sending fewer messages in each packet increases the overhead necessary for each message. In the extreme case, sending onl y one message in each packet quickly reaches the point of diminishing returns there is more overhead sent than actual data Application developers must find a reasonable compromise between the number of groups and breaking up their products into logical buckets. Consider, for example, the Nasdaq Quotation Dissemination Service NQDS The instruments are broken up alphabetically. This approach allows for straight forward network application management, but does not necessarily allow for optimized bandwidth utilization for most users A user of NQDS that is interested in technology stocks, and would like to subscribe to just CSCO and INTL, would have to pull down all the data for the first two groups of NQDS Understanding the way users pull down the data and then organize it into appropriate logical groups optimizes the bandwidth for each user. In many market data applications, optimizing the data organization would be of limited value Typically customers bring in all data into a few machines a nd filter the instruments Using more groups is just more overhead for the stack and does not help the customers conserve bandwidth Another approach might be to keep the groups down to a minimum level and use UDP port numbers to further differentiate if necessary The other extreme would be to use just one multicast group for the entire application and then have the end user filter the data In some situations this may be sufficient. Intermittent Sources. A common issue with market data applications are servers that send data to a multicast group and then go silent for more than 3 5 minutes These intermittent sources may cause trashing of state on the network and can introduce packet loss during the window of time when soft state and then hardware shorts are being created. PIM-Bidir or PIM-SSM. The first and best solution for intermittent sources is to use PIM-Bidir for many-to-many applications and PIM-SSM for one-to-many applications. Both of these optimizations of the PIM protocol do not ha ve any data-driven events in creating forwarding state That means that as long as the receivers are subscribed to the streams, the network has the forwarding state created in the hardware switching path. Intermittent sources are not an issue with PIM-Bidir and PIM-SSM. Null Packets. In PIM-SM environments a common method to make sure forwarding state is created is to send a burst of null packets to the multicast group before the actual data stream The application must efficiently ignore these null data packets to ensure it does not affect performance The sources must only send the burst of packets if they have been silent for more than 3 minutes A good practice is to send the burst if the source is silent for more than a minute Many financials send out an initial burst of traffic in the morning and then all well-behaved sources do not have problems. Periodic Keepalives or Heartbeats. An alternative approach for PIM-SM environments is for sources to send periodic heartbeat messages to the mu lticast groups This is a similar approach to the null packets, but the packets can be sent on a regular timer so that the forwarding state never expires. S,G Expiry Timer. Finally, Cisco has made a modification to the operation of the S, G expiry timer in IOS There is now a CLI knob to allow the state for a S, G to stay alive for hours without any traffic being sent The S, G expiry timer is configurable This approach should be considered a workaround until PIM-Bidir or PIM-SSM is deployed or the application is fixed. RTCP Feedback. A common issue with real time voice and video applications that use RTP is the use of RTCP feedback traffic Unnecessary use of the feedback option can create excessive multicast state in the network If the RTCP traffic is not required by the application it should be avoided. Fast Producers and Slow Consumers. Today many servers providing market data are attached at Gigabit speeds, while the receivers are attached at different speeds, usually 100Mbps This creates the potential for receivers to drop packets and request re-transmissions, which creates more traffic that the slowest consumers cannot handle, continuing the vicious circle. The solution needs to be some type of access control in the application that limits the amount of data that one host can request QoS and other network functions can mitigate the problem, but ultimately the subscriptions need to be managed in the application. Tibco Heartbeats. TibcoRV has had the ability to use IP multicast for the heartbeat between the TICs for many years However, there are some brokerage houses that are still using very old versions of TibcoRV that use UDP broadcast support for the resiliency This limitation is often cited as a reason to maintain a Layer 2 infrastructure between TICs located in different data centers These older versions of TibcoRV should be phased out in favor of the IP multicast supported versions. Multicast Forwarding Options. PIM Sparse Mode. The standard IP multicast forwarding protoco l used today for market data delivery is PIM Sparse Mode It is supported on all Cisco routers and switches and is well understood PIM-SM can be used in all the network components from the exchange, FSP, and brokerage. There are, however, some long-standing issues and unnecessary complexity associated with a PIM-SM deployment that could be avoided by using PIM-Bidir and PIM-SSM These are covered in the next sections. The main components of the PIM-SM implementation are. PIM Sparse Mode v2. Shared Tree spt-threshold infinity. A design option in the brokerage or in the exchange.

Comments

Popular posts from this blog

Med Bevegelig Gjennomsnitt Gap

Hvis du har noen spørsmål eller forslag, er du velkommen til å bli med i vårt forum diskusjon om Gaps and Pullbacks til eksponentiell Moving Average EMA Bli med i forumet. Et gap betyr plass mellom to poeng på prisdiagrammet. I tilfelle den åpne prisen på dagens trading sesjon er over tett fra i går, dannes et mellomrom. Hvis dagens pris i dag overstiger det høye fra i går, vil gapet sannsynligvis være synlig, selv på et daglig diagram. Hvis den høye prisen på en bar forblir under eksponentiell glidende gjennomsnittlig EMA, Et gap er dannet mellom denne linjen og EMA. Ved en opptrend eller et handelsområde er det en sjanse for at markedet vil forsøke å fylle et gap over en stang, som dannet under EMA. I noen tilfeller vil en søyle overskride høy pris på den forrige linjen, etter hvilken innen 1-2 bar fortsetter tilbaketrekningen til ulempen. Hvis markedet igjen beveger seg over den høye prisen på den forrige linjen, danner en EMA Gap 2-bar. Dette er faktisk et nytt forsøk av markedet å

Amt Insentivaksjeopsjoner

Hvis du får et alternativ til å kjøpe aksjer som betaling for tjenestene dine, kan du få inntekt når du får opsjonen, når du utnytter opsjonen, eller når du avhenger av opsjonen eller aksjen mottatt når du utøver alternativet. Det finnes to typer opsjoner: Optjoner innvilget i henhold til en personalekjøpsplan eller en opsjonsopsjonsopsjon (ISO) - plan er lovbestemte opsjoner. Aksjeopsjoner som ikke er gitt hverken i henhold til en personalekjøpsplan eller en ISO-plan, er ikke-statlige aksjeopsjoner. Se publikasjon 525. Beskattbar og ikke-skattepliktig inntekt. for å få hjelp til å avgjøre om du har fått lovbestemt eller ikke-statutert aksjeopsjon. Lovbestemte opsjoner Hvis din arbeidsgiver gir deg lovfestet aksjeopsjon, inkluderer du vanligvis ikke beløp i bruttoinntekt når du mottar eller utøver opsjonen. Du kan imidlertid være underlagt en alternativ minimumsskatt i året du utøver en ISO. For mer informasjon, se Form 6251 Instruksjoner. Du har skattepliktig inntekt eller fradragsber

Flytte Gjennomsnittet Pris Historie Table Sap

Generelt er alle råvarer ROH, reservedeler ERSA, handelsvarer HAWA etc tilordnet som å flytte gjennomsnittlig pris MAP på grunn av regnskapsmessig praksis for nøyaktig vurdering av beholdningen av slike materialer. Disse materialene er gjenstand for kjøpesummen svingninger på regelmessig basis. gjennomsnitt på innkjøpte materialer med små kostnadsendringer Det er mest hensiktsmessig når varen er lett tilgjengelig. Effekten på marginer minimeres, noe som reduserer behovet for variansanalyse. Videre er den administrative innsatsen lav da det ikke er kostnadsberegninger å opprettholde. Kostnaden reflekterer avvik , som er nærmere de faktiske kostnadene. Halvfabrikatene HALB og ferdige produkter FERT er verdsatt med standardpris på grunn av produktkostningsvinkelen. Hvis disse skulle bli MAP kontrollert, ville ferdig halvfabrikat verdsettelse svinge på grunn av datainngang feil under tilbakespyling av materiale og arbeidskraft, produksjon ineffektivitet høyere kostnad eller ef Fikiencies l