Trading system databasdesign


Jag har nyligen fått uppdraget att modellera en databas som passar för att lagra aktiekurser för över 140 företag. Uppgifterna samlas varje 15 min i 8 5 h varje dag från alla dessa företag. Det problem jag står inför just nu är hur man konfigurerar databas för att uppnå snabb sökning hämtad med denna data. En lösning skulle vara att lagra allt i ett bord med följande kolumner. Eller kunde jag skapa ett bord för varje företag och bara lagra priset och datumet för när uppgifterna samlades in och andra parametrar som inte är kända atm. What är din tanke om dessa typer av lösningar Jag hoppas att problemet förklarades i tillräcklig detalj, annars snälla låt mig veta. En annan lösning skulle vara uppskattat. Jag tar det du är oroad över prestanda med tanke på det stora antalet av register som du sannolikt kommer att generera - 140 företag 4 datapunkter timme 8 5 timmar 250 handelsdagar år innebär att du tittar på cirka 1 2 miljoner datapunkter per år. Moderna relationsdatabasystem kan enkelt hanteras det antal register - med vissa viktiga överväganden - i ett enda bord - jag ser inte ett problem med att lagra 100 års datapunkter. Så, din initiala design är förmodligen det bästa namnet Pris Datum Etc. Create indexes on Company namn och datum som låter dig svara på frågor som. vad var det högsta aktiekursen för företaget x. what var aktiekursen för företag x på datum y. on datum y, vad var det högsta aktiekursen. För att förhindra prestandaproblem , Jag bygger en testdatabas och fyller den med exempeldataverktyg som dbMonster gör det enkelt och sedan bygga de frågor du tror att du kommer att köra mot det verkliga systemet använder stämningsverktygen för ditt databassystem för att optimera dessa frågor och eller index. answered mar 23 13 på 15 08.Till dem i ett bord. Moderna DB-motorer kan enkelt hantera de volymer du angav. Wide StockCode priceTimeInUTC PriceCode AskPrice BidPrice Volume. rowid Identitet UniqueIdentifier. StockCode istället för Company Companie s har flera typer av strumpor. PriceTimeInUTC är att standardisera vilken datetime i en viss tidszon. Även datetime2 mer precise. PriceCode används för att identifiera vad av priset det är Alternativ Futures CommonStock, PreferredStock, etc. AskPrice är köpeskillingen. BidPrice är den Försäljningspris. Volym för köpförsäljning kan vara användbart för dig. Särskilt har du ett StockCode-bord och ett PriceCode-bord. Ansvarat mar 23 13 på 15 19. Den första viktigaste frågan är vilka typer och användningsmönster av frågorna som kommer att utföras mot den här tabellen Är det här ett OLTP-program för online transaktionsbehandling, där de flesta frågorna är emot en enda post eller högst en liten uppsättning poster eller till en applikation för online analytisk behandling, där de flesta frågor kommer att behöva läsa och bearbeta, betydligt stora uppsättningar data för att generera aggregeringar och göra analys. Dessa två mycket olika typer av system bör modelleras på olika sätt. Om det är den första typen av app, O LTP, ditt första alternativ är en bättre, men användningsmönstren och typerna av frågor skulle fortfarande vara viktiga för att bestämma vilka typer av index som ska placeras på bordet. Om det är en OLAP-applikation, och ett system som lagrar miljarder börskurser låter mer som en OLAP-app kan den datastruktur du har konfigurerat vara bättre organiserad för att lagra föraggregerade datavärden, eller till och med gå hela vägen att använda en multidimensionell databas som en OLAP-kub baserat på en stjärnschema. 13 på 15 01. På toppen av det som redan sagts, vill jag säga följande: Använd inte företagsnamn eller något som Ticker Symbol som din primära nyckel. Som du sannolikt kommer ta reda på har aktiekurserna två viktiga egenskaper som ofta ignoreras. Vissa företag kan noteras på flera börser och har därför olika priser på varje börs. Vissa företag är noterade flera gånger på samma börs, men i olika valutor. Som ett resultat är en korrekt generi c-lösning ska använda ISIN, valuta, börs triplet som identifierare för ett citat. ansvarat 6 jan 14 på 13 56. Det är ett Brute Force-tillvägagångssätt Den andra du lägger till sökbara faktorer kan det förändra allt Ett mer flexibelt och elegant alternativ är en stjärna schema som kan skala till vilken mängd data jag är en privat part som arbetar med det här själv. svarade den 12 juni 13 kl 20 26. Ditt svar.2017 Stack Exchange, Inc. Trading Systems Coding. Trading-system är helt enkelt uppsättningar regler som handlare använder för att bestämma sina poster och utgångar från en position Utveckling och användning av handelssystem kan hjälpa handlare att uppnå jämn avkastning samtidigt som riskbegränsning I en idealisk situation bör handlare känna sig som robotar, genomföra affärer systematiskt och utan känslor. Så kanske du frågade dig själv Vad s för att stoppa en robot från att handla mitt system Svaret Inget Denna handledning kommer att introducera dig till de verktyg och tekniker som du kan använda för att skapa ditt eget automatiserade handelssystem. Hur är Automated Trading System skapade Automatiserade handelssystem skapas genom att konvertera ditt handelssystem s regler till kod som din dator kan förstå Dina datorer kör sedan dessa regler genom din handelsprogramvara, som söker efter affärer som följer dina regler Slutligen placeras handlarna automatiskt med din mäklare. Denna handledning kommer att fokusera på den andra och tredje delen av den här processen där dina regler omvandlas till en kod som din handelsprogramvara kan förstå och använda. Vad handelsprogramvara stöder automatiserade handelssystem Det finns många handelsprogram som stöder automatiserade handelssystem Vissa kommer automatiskt att generera och placera affärer med din mäklare. Andra kommer automatiskt att hitta affärer som passar dina kriterier men kräver att du lägger orderna med din mäklare manuellt. Dessutom kräver helt automatiska handelsprogram att du använder specifika mäklare som stöder sådana funktioner du kan måste också fylla i ett ytterligare tillståndsformulär. Tillägg och Nackdelar Automatiserade handelssystem har flera fördelar, men de har också sina nackdelar Trots allt, om någon hade ett handelssystem som automatiskt tjänade pengar hela tiden, skulle han eller hon bokstavligen ha en penningmaskin. Ett automatiskt system tar känslan och upptagen - work out of trading, vilket gör att du kan fokusera på att förbättra dina strategier och regler för hantering av pengar. När ett lönsamt system utvecklas krävs det inget arbete för din del förrän det bryts eller marknadsförhållanden kräver en förändring. Om systemet inte är korrekt kodad och testad kan stora förluster uppstå väldigt snabbt. Ibland är det omöjligt att sätta vissa regler i kod vilket gör det svårt att utveckla ett automatiserat handelssystem. I denna handledning lär du dig att planera och designa ett automatiserat handelssystem, hur man översätter denna design till kod som din dator kommer att förstå, hur man testar din plan för att säkerställa optimal prestanda och slutligen hur du ska använda ditt system. Ta reda på om du tar patet h mindre reste kommer att fungera till din fördel - eller mot det. Ett handelssystem kan spara tid och ta emot känslorna ur handel, men adoptera en tar skicklighet och resurser - läs mer här. De flesta mäklare kommer att förse dig med handelsrekord, men det s också viktigt att hålla reda på din egen. Dessa steg kommer att göra dig en mer disciplinerad, smartare och i slutändan rikare näringsidkare. Ofta ställda frågor. När du gör en hypotekslån, är det betalda beloppet en kombination av en ränteavgift och huvudstol återbetalning över the. Learn att skilja mellan kapitalvaror och konsumtionsvaror och se varför kapitalvaror kräver besparingar och investeringar. Ett derivat är ett avtal mellan två eller flera parter vars värde baseras på en överenskommen underliggande finansiell tillgång. Termen ekonomisk vallgrav, myntade och populariserad av Warren Buffett, hänvisar till en affärsförmåga att behålla konkurrensfördelar. Frågor om frågan. När du gör en hypotekslån är det betalda beloppet en kombination av ett inter uppskattning och huvudbetalning över. Läs om att skilja mellan kapitalvaror och konsumtionsvaror och se varför kapitalvaror kräver besparingar och investeringar. Ett derivat är ett avtal mellan två eller flera parter vars värde baseras på en överenskommen underliggande finansiell tillgång . Termen ekonomisk vallgrav, myntade och populariserad av Warren Buffett, hänvisar till en affärsförmåga att behålla konkurrensfördelar. Algorithmic Trading System Architecture. Tidigare på denna blogg har jag skrivit om den konceptuella arkitekturen i ett intelligent algoritmiskt handelssystem såväl som den funktionella och icke-funktionella krav i ett produktionsalgoritmiskt handelssystem Sedan dess har jag utformat en systemarkitektur som jag tror kan tillgodose de arkitektoniska kraven I det här inlägget kommer jag att beskriva arkitekturen enligt riktlinjerna för ISO IEC IEEE 42010-system och programvaruteknik arkitekturbeskrivning standard Enligt denna standard beskrivs en arkitektur iption måste. Konfigurera flera standardiserade arkitektoniska vyer, t. ex. i UML och. Maintain spårbarhet mellan designbeslut och arkitektoniska krav. Software arkitektur definition. Det finns fortfarande ingen överenskommelse om vad en system s arkitektur I samband med denna artikel är den definierad som infrastruktur inom vilken applikationskomponenter som uppfyller funktionella krav kan specificeras, distribueras och exekveras Funktionskrav är systemets förväntade funktioner och dess komponenter Icke-funktionella krav är åtgärder genom vilka systemets kvalitet kan mätas. Ett system som fullt ut uppfyller dess funktionskrav kan fortfarande misslyckas att uppfylla förväntningarna om icke-funktionella krav lämnas otillfredsställda. För att illustrera detta koncept, överväga följande scenario. Ett algoritmiskt handelssystem som du just har köpt byggt gör utmärkta handelsbeslut, men är helt oanvändbart med organisationerna riskhantering och ackreditering ounting systems Skulle detta system uppfylla dina förväntningar. Konceptuell arkitektur. En konceptuell vy beskriver högkoncept och mekanismer som finns i systemet på högsta nivå av granularitet. På den här nivån följer det algoritmiska handelssystemet en händelsesdriven arkitektur EDA uppdelad över fyra lager och två arkitektoniska aspekter För varje lager och aspekt används referens arkitekturer och mönster Arkitektoniska mönster är beprövade, generiska strukturer för att uppnå specifika krav Arkitektoniska aspekter är tvärgående problem som spänner över flera komponenter. Event driven arkitektur - en arkitektur som producerar, detekterar , konsumerar och reagerar på händelser Händelser inkluderar realtidsmarknadsrörelser, komplexa händelser eller trender och handelshändelser, t. ex. att skicka en order. Detta diagram illustrerar den konceptuella arkitekturen i det algoritmiska handelssystemet. Referensarkitekturer. För att använda en analogi, en referensarkitektur liknar ritningarna för en belastning bärvägg Detta blåtryck kan återanvändas för flera byggnadsdesigner oberoende av vilken byggnad som byggs, eftersom den uppfyller en uppsättning vanliga krav. På liknande sätt definierar en referensarkitektur en mall som innehåller generiska strukturer och mekanismer som kan användas för att konstruera en konkret mjukvaruarkitektur som uppfyller specifika krav Arkitekturen för det algoritmiska handelssystemet använder en rymdbaserad arkitektur SBA och en modellvisningskontroll MVC som referenser Goda metoder som operativdatabutiken ODS, extraktransformationen och laddning ETL-mönstret och en data warehouse DW används också. Model view controller - ett mönster som skiljer representationen av information från användarens interaktion med den. Spacebaserad arkitektur - specificerar en infrastruktur där löst kopplade processorer samverkar med varandra genom ett gemensamt associerat minne som kallas utrymme visas nedan. Space-based architectural conceptual view Model V iew Controller original image. Structural View. Den strukturella bilden av en arkitektur visar komponenterna och delkomponenterna i det algoritmiska handelssystemet. Det visar också hur dessa komponenter distribueras på fysisk infrastruktur. UML-diagrammen som används i denna vy inkluderar komponentdiagram och installationsdiagram Nedan finns ett galleri av installationsdiagrammen för det övergripande algoritmiska handelssystemet och bearbetningsenheterna i SBA-referensarkitekturen, liksom relaterade komponentdiagram för var och en av lagren. Algoritmiskt handelssystem med hög nivåutbyggnadsdiagram SBA-bearbetningsenheter Distributionsschema Orderbehandlingsskikt komponentdiagram Automatiserad komponentdiagram för databehandlingshantering Datakälla och förbehandlingsskikt komponentdiagram MVC-baserad användargränssnittskomponentdiagram. Arkitekturtaktik. Enligt programvaruutvecklingsinstitutet är en arkitektonisk taktik ett sätt att uppfylla ett kvalitetskrav genom att manipulera en del av en kvalitet Attributmodell genom arkitektoniska designbeslut Ett enkelt exempel som används i den algoritmiska handelssystemarkitekturen manipulerar en operativ datalager ODS med en kontinuerlig frågekomponent Denna komponent skulle kontinuerligt analysera ODS för att identifiera och extrahera komplexa händelser Följande taktik används i arkitekturen. Disruptor-mönstret i händelse - och beställningskön. Delat minne för händelse - och beställningskön. Kontinuerligt frågande språk CQL på ODS. Data som filtrerar med filterdesignmönstret på inkommande data. Konkurrens undvikande algoritmer på alla inkommande och utgående anslutningar. Aktiv kö hantering av AQM och explicit information om överbelastning av anmälningsmoduler med kapacitet för uppgradering av skalbar. Aktiv redundans för alla enskilda punkter av fel. Indexering och optimerade persistensstrukturer i ODS. Schedule regelbunden säkerhetskopiering av data och rengöringsskript för ODS. Transaction-historier på alla databaser. Kontrollsumma för alla beställningar för att upptäcka fel nnotate händelser med tidsstämplar för att hoppa över vanliga händelser. Order validering regler, t. ex. maximala handelsmängder. Automated traderkomponenter använder en in-memory databas för analysis. Two scen autentisering för användargränssnitt anslutning till ATs. Encryption på användargränssnitt och anslutningar till ATs. Observera designmönster för MVC för att hantera visningar. Ovanstående lista är bara några designbeslut som jag identifierade under arkitekturens utformning. Det är inte en komplett lista över taktik. Eftersom systemet utvecklas bör ytterligare taktik användas över flera nivåer av granularitet för att uppfylla funktionella och icke-funktionella krav Nedan finns tre diagram som beskriver disruptor designmönstret, filterdesignmönstret och den kontinuerliga frågekomponenten. Kontinuerlig Querying-komponentdiagram Disruptor designmönster klassdiagramkälla Filterdesignmönsterklassdiagram. Behavioural View. This view av en arkitektur visar hur komponenterna och lagren ska interagera med en anot henne Detta är användbart när man skapar scenarier för att testa arkitekturmönster och för att förstå systemet från slutet till slutet. Denna vy består av sekvensdiagram och aktivitetsdiagram. Aktivitetsdiagram som visar det interna processen för det algoritmiska handelssystemet s och hur handlarna ska interagera med algoritmiska handelssystemet visas nedan. Algoritmisk näringsidkare-interaktion End-to-end-algoritmisk handelsprocess. Teknik och ramverk. Det sista steget i utformningen av en programarkitektur är att identifiera potentiella teknologier och ramar som kan användas för att realisera arkitekturen. Som ett generellt princip det är bättre att utnyttja befintlig teknik, förutsatt att de tillräckligt uppfyller både funktionella och icke-funktionella krav. En ram är en realiserad referensarkitektur, t. ex. JBoss är en ram som realiserar JEE-referensarkitekturen. Följande tekniker och ramar är intressanta och bör beaktas när genomföra en algoritm thmic trading system. CUDA - NVidia har ett antal produkter som stöder högpresterande beräkningsmodellmodellering. Det går att uppnå upp till 50x prestandaförbättringar när man kör Monte Carlo-simuleringar på GPU istället för CPU. Apache River - River är ett verktygssats som används att utveckla distribuerade system Det har använts som ett ramverk för att bygga applikationer baserade på SBA-mönstret. Apache Hadoop - Om en genomgripande loggning är ett krav, erbjuder användningen av Hadoop en intressant lösning på det stora dataproblemet Hadoop kan implementeras i en grupperad miljö som stöder CUDA technologies. AlgoTrader - en öppen källkods algoritmisk handelsplattform AlgoTrader kan eventuellt utnyttjas i stället för de automatiserade näringsidkomponentema. FIX Engine - en fristående applikation som stöder Financial Information Exchange FIX-protokoll, inklusive FIX, FAST , och FIXatdl. Även om ingen teknik eller ramverk ska komponenter byggas med en applikationsprogrammering gränssnitt API för att förbättra driftskompatibiliteten hos systemet och dess komponenter. Den föreslagna arkitekturen har utformats så att den uppfyller mycket generella krav som identifieras för algoritmiska handelssystem. Generellt sett kompliceras algoritmiska handelssystem av tre faktorer som varierar med varje implementering. Däremot på externt företag och utbyte systems. Continuous nonfunctional requirements. Evolving architectural constraints. Den föreslagna mjukvaruarkitekturen skulle därför behöva anpassas från fall till fall för att uppfylla specifika organisatoriska och regelbundna krav samt att övervinna regionala hinder. Det algoritmiska handelssystemet arkitektur bör ses som bara en referenspunkt för individer och organisationer som vill utforma sina egna algoritmiska handelssystem. För en fullständig kopia och källor används, ladda ner en kopia av min rapport tack.

Comments