Specifikace projektu FauStock Specifikace projektu 1 1) Vymezení dokumentu 2 2) Motivace k projektu 2 3) Současný stav 2 4) Cíle projektu 4 5) Rizika projektu 4 6) Požadavky 5 7) Upřesnění funkčních požadavků 6 8) Použité Technologie 6 9) Technické řešení 7 10) Use-Case 9 11) Scénáře 10 12) Databázový model 13 13) Class Diagram 13 14) Slovníček pojmů 14 15) Dodatky 15
Peníze až na prvním místě. 1) Vymezení dokumentu Tento dokument vymezuje základní informace k projektu faustock jeho rozsah a působnost. Obsahuje důvody k realizaci projektu a shrnutí současného stavu v dané oblasti. Vymezuje cíle projektu, předpokládaný cílový stav, uvádí rizika a reflektuje jejich minimalizaci 2) Motivace k projektu Zadavatel projektu obchoduje na burze. Pro svá rozhodnutí k nákupu a prodeji akcii využívá informace dostupné z jednotlivých burz. Za svou obchodní praxi sestavil řadu postupů pro predikci vývoje hodnoty akcii v budoucím čase. Informace poskytované jednotlivými burzami se nacházejí na různých mediích a mají rozdílný formát. Jednotlivé úkony spojené s rozhodováním a predikcí zpracovává ručně. Přitom jednotlivé informace by mohly být soustředěny do jednoho datového centra a řada úkonů vykonávána v souvislosti s obchodováním může být zpracovávána automaticky. Můžeme se zodpovědně domnívat, že v případě využití programu, disponujícími těmito vlastnostmi dojde ke zkvalitnění a zefektivnění obchodování na burze. Sestavení tohoto programu je předpokládaným cílem našeho týmu. Zadavatel doposud žil v neznalosti a nedůvěře v nové technologie. Příchod globalizace a vzestup moderní společnosti založené na informacích ho přiměly k myšlence zda lze za pomocí informačních technologii dosáhnout většího zisku? Cílem našeho projektu je nejenom naplnit očekávání zadavatele ale, a to především odpovědět na jeho otázku ano. Rozhodovací proces je velmi náročný v praxi velmi často pracujeme nejen s jediným grafem, ale mnohem častěji se skupinou grafů. Snažíme se vyšetřovat jejich vzájemnou závislost. K tomu musíme mít odpovídající matematický model, který dokáže takové závislosti vyhledávat a z těchto závislostí predikovat růst nebo pokles cen. 3) Současný stav Obchodování na burze patří z pohledu klienta k relativně málo technicky náročným úkonům. Existuje několik společností, které se zabývají obchodováním s akciemi tzv. burzy a společnosti které poskytují informace. Na internetu lze nalézt celou řadu webových i desktopových aplikací, které podporují proces rozhodování. Důležitým faktorem procesu rozhodování je jedinečnost metody a případná cena za jeji poskytnutí. Nevýhodou současných programů spočívá ve zpoplatnění služby anebo v jejím velkém rozšíření. Metoda, která je obecně známá, má omezený účinek. V české republice mají v oblasti organizování trhu s cennými papíry dominantní postavení dva subjekty. Jedná se o Burzu cenných papírů Praha a RM Systém.
Mezi významné české poskytovatele informací patří Akcie.cz, ipoint.cz a finančnínoviny.cz. Do jisté míry většina klasických informačních medii typu hospodářské noviny, mladá fronta dnes apod. Burza cenných papírů Praha Jedná se o nejvetšího organizátora na trhu s cennými papíry v ČR, kde mají právo ochodovat pouze licencovaní obchodníci. Pokud si tedy chceme pořídit akcie, musíme se obrátit na člena burzy. Pokud se členem burzy uzavřete smlouvu a stanete se jeho zákazníkem, bude za vás tento člen obchodník vkládat do obchodního systému burzy vaše pokyny. S akcimeni se zde pak obchoduje buďto v rámci systému pro podporu trhu akcií a dluhopisů (SPAD), a to za předpokladu, že bude vaše investice směřovat do akcií, které mají na burze hodnotu přes mil. korun. Nebo v rámci automatických obchodů v případě, že pro první seznámení se s obchodováním na burze hodláte uvolnit investice pouze v rozsahu několika tisíc či desítek tisíc korun. Systém pak nabízí zobrazování výsledků emise na trzích, jejich rozpoložení ve vybraném časovém horizontu,statistiky báze indexu PX a grafický kurzovní lístek. RM-Systém Burza cenných papírů, pro obchod s akciemi českých i zahraničních společností. Burza nabízí jedinečnou možnost on-line vypořádání v čase T+0, kdy jsou cenné papíry připisovány na majetkový účet již v době realizace obchodu.je zaměře na střední a drobné investory, kterým nabízí možnost pohybu s akciemi, které se dokonce nevyskytují ani na Pražské burze. Obchod zde probíha pomocí aplikace e-broker(viz. níže). Akcie Dodavatelem dat je Burza cenných papírů Praha a RM-Systém. Akcie.cz slouží jako informační portál pro klienty bez nutnosti registracese pro obchod s cennými papíry. Podává především celkový přehled rozdílů mezi Pražskou burzou a děním v RM-Systému. Aplikace umožňuje zpětné dohledávání historie stavu akcie na trzích a jejich hodnotu v určitém časovém okamžiku e-broker Funkce aplikace e-broker: On-line přístup na burzu Zpravodajství o dění na trhu Technická analýza - jedná se především o grafy, související především pro spekulativním a krátkodobém obchodování s akciemi. Mezi nabízenými grafy jsou např. grafy typu: o CANDLESTICS(Využívá s především pro zobrazení kurzu za desítky obchodních dní) o MOVING AVERAGE(Několikadenní průměrná cena s indikací nákupu/prodeje) o BOLLINGER BANDS(Pásmo ohraničující klouzavý průměr akcie) o MOVING AVERAGE CONVERGENCE DIVERGENCE(Počítá se odčítáním dlouhodobého 26denního klouzavého průměru od krátkodobého 12denního)
o MONEY FLOW INDEX(Indikátor momentu, měří sílu proudění peněz do/z akcie) o RATE OF CHANGE(Procentní změna ceny za zvolené období) o VOLUME OSCILATOR(Rozdíl mezi dvěma MA objemu dané akcie) o STOCHASTIC OSCILLATOR(Udává, kde se nachází poslední uzavírací kurz vzhledem k cenovému rozpětí) o RELATIVE STRENGTH INDEX(Index relativní síly, počítá se pomocí průměrných kladných a záporných změn v ceně za určité zvolené období) Fundamentální analýza - tržní kapitalizace, účetní hodnota na akcii, cena/účetní hodnota, tržby, cena/tržby, zisk na akcii, P/E, zisková marže, rentabilita vlastního jmění, rentabilita aktiv, dividendový výnos Inteligentní pokyny - jedná se o automatické pokyny pro určité situace, které mohou probíhat na trhu aniž byste jej museli skutečně sledovat. Chování parametrů, zadané uživatelem, ovlivňuje dění účastníků na trhu. 4) Cíle projektu Všeobecné zadání projektu Cílem projektu je sestavit program pro efektivní obchodování s akciemi na burze. Aplikace poskytne uživateli souhrnné informace získané od jednotlivých burz v normalizované podobě. Umožní výsledky obchodování zobrazovat pomocí grafů a dalších názorných prostředků. Aplikace nabídne uživateli doporučení, zda danou akcii podržet, koupit nebo prodat. Prostředky pro toto rozhodnutí budou analýza průběh grafu a matematického modelu vyhledává závislosti v jeho průběhu. Cílový stav projektu Úkolem vývojového týmu je v první fázi analýza, návrh projektu dle zadaného cíle. V druhé fázi implementace aplikace - modulů pro sběr dat a analýzu dat. Matematický model pro predikci vývoje cen dodá zadavatel projektu. 5) Rizika projektu Obecné vymezení rizik Projekt je svým charakterem a rozsahem relativně vysoce náchylný na změny v zadaní zadavatele, případně na nedodání potřebných informací jako jsou matematické modely a algoritmy pro predikci. Relativně nízké riziko způsobuje lidské selhání, případně softwarová a hardware rizika.
Seznam jednotlivých rizik Kategorie Rizika Pravděp. Dopad Řešení Řešitel Zákazník požadavky změní procesní 80 % 1 Dohoda se zákazníkem a úprava specifikace Tým průběžné předvádění Odklon od požadavků procesní 10% 2 Průběžné předvádění Vedoucí Tester Fluktuace členů týmu projektový tým 10 % 3 Záložní pracovníci Vedoucí Nízký odhad velikosti velikost produktu 35 % 3 Více lidí nebo její lepší rozdělení Testér, Vedoucí Nedorozumění anebo špatná komunikace mezi členy týmu projektový tým 10 % 2 Záložní pracovníci Pravidelné schůze Vedoucí Testér Změny, úpravy, softwarová a hardwarová podpora rizikové komponent y 10 % 3 Rychlé a správné a včasné reakce na požadavky Programátor Nedostatečné školení práce ve vývojovém prostředí vývojové prostředí 3 % 3 Záložní pracovníci s většími zkušenostmi Vedoucí Testér Minimalizace rizik Z uvedených rizik vyplývá, že největší hrozbou pro projekt je nepřesně definované zadání, případně jeho změny v průběhu analýzy a návrhu. Z tohoto důvodu je potřeba být trvale v kontaktu se zadavatelem, konzultovat jednotlivé pokroky a změny v projektu. Důležitým faktorem pro minimalizaci tohoto rizika je rovněž důsledné vedení záznamů projektových schůzek a dokumentace zásahů do projektu. 6) Požadavky - Funkční požadavky 1. Získání výsledku obchodování z jednotlivých burz a jejich archivace
Možnost zadaní zdrojů dat Možnost zadání stáří dat pro archivaci 2. Zobrazení aktuálního stavu na burze Výběr burzy 3. Zobrazení výsledku obchodování formou grafu Určení období pro zobrazovaná data Výběr množiny zobrazovaných akcii Porovnávání s jinými grafy 4. Možnost komentovat jednotlivé body grafu výsledku obchodování 5. Predikce 6. Uživatel si muže definovat profil a nastavení zobrazování výsledků - Nefunkční požadavky 1. Serverová část bude dostupná v 95 % 2. Serverová část bude obsluhovat jednoho klienta 7) Upřesnění funkčních požadavků 1. Výsledek obchodování je cenový údaj a množství dané akcie za časový interval zadaný v nastavení. Archivované akcie jsou zadávané v nastavení. Akcie jsou určené ISINem a názvem burzy. 2. Aktuální stav na burze je cenový údaj a množství dané akcie v aktuálním čase. 3. Zobrazování grafů i) Zobrazí dva na sobě závislé grafy. V prvním grafu bude zobrazena závislost ceny na čase a v druhém grafu bude zobrazeno množství na čase. ii) Porovnávání 4. 5. Predikce 8) Použité Technologie Zdůvodnění volby technologii Volba vývojových technologii vycházela především z požadavku vývojového týmu. Všichni členové mají zkušenosti s modelovacím jazykem UML. UML modelujeme v EnterpriseArchitectu, který nabízí významnou podporu analýzy a návrhu. Pro dokumentační činnost používáme MS Office. Pro fázi implementace jsme zvolili vývojové prostředí Visual Studio, důvodem je jeho vysoká kvalita. Systém pro provoz systému vycházel z požadavků klienta, který pracuje v systému MS Windows a nemá důvod přecházet na jiný systém. Proto jsme zvolili i platformu dotnet.
Prostředky pro analýzu a návrh - UML v 2.0 - MS Office - Enterprisearchitect - PowerDesigner Prostředky pro implementaci - Visual studio 2008 SP1 - Jazyk C# Prostředky pro provoz aplikace - Serverová část Windows server 2008 SQL Server - Klientská část.net Framework 3.5 SP1.NET Framework S.5 SP1 9) Technické řešení Aplikace se skládá ze dvou nezávislých modulů. Modulu pro sběr dat a modulu pro analýzu dat. Modul pro sběr dat získává z veřejně dostupných zdrojů výsledky obchodování jednotlivých akcii na daných burzách. Výsledky v pevně daných intervalech archivuje. Modul pro analýzu dat vyhodnocuje grafy jednotlivých akcii a na základě matematického modelu vyhledává závislosti v jeho průběhu. Výstupem modulu je předpokládaná cena akcie v daném budoucím časovém horizontu. Tento výstup se použije jako doporučení pro uživatele zda danou akcii podržet, koupit nebo prodat.
deployment Deployment Mo... «device» ClientPC «device» WindowsServ erpc «execution environ... WinForm Aplikace TCP/IP «execution environ... Serv erov á aplikace TCP/IP «device» Zdroj dat «execution environ... SQL Serv er
10) Use-Case UC:Uživatel UC:Čas uc Actors Serverová aplikace Získání v ýsledků obchodov ání Čas Archiv ace v ýsledků obchodov ání
11) Scénáře Aktér Uživatel Uživatel systému Aktér Čas Skript v serverové aplikaci, který v daných intervalech spouští úlohy UC1. Přihlášení uživatele Uživatel spustí aplikaci 1) Uživatel zadá přihlašovací jméno a heslo 2) Uživatel volbu potvrdí 3) Systém ověří, zda uživatel zadal parametry a. Systém zobrazí hlášení o nezadání hesla b. Systém vyzve ke znovu zadání údajů 4) Systém ověří identitu uživatele a. Systém zobrazí hlášení o zadání neplatných údajů b. Systém vyzve ke znovu zadání údajů 5) Uživatel je přihlášen do systému 3a. Uživatel nezadal některý z údajů 4a. Uživatel zadal neplatné údaje Uživatel je přihlášen do systému UC2. UC3. Odhlášení uživatele Uživatel je přihlášen v systému 1) Uživatel zadá volbu odhlášení ze systému 2) Uživatel je odhlášen Uživatel je odhlášen ze systému Nastavení zdroje dat Uživatel je přihlášen v systému 1) Uživatel zadá volbu zdroje dat 2) Uživatel zadá cestu ke zdroji dat a volbu potvrdí a. Systém zobrazí hlášení o neplatné cestě b. Vyzve ke znovu zadání zdroje dat 3) Uživatel vybere z nabídky akcií akcie, které se budou stahovat a volbu potvrdí 4) Systém odešle změněnu do serverové aplikace 2a. Uživatel zadá neplatný zdroj dat Dojde k aktualizaci nastavení
UC4. UC5. UC6. UC7. UC8. Zobrazení aktuálního stavu Filtr akcií Uživatel je přihlášen v systému 1) Uživatel zadá volbu Zobrazení aktuálního stavu a. UC5. Filtr akcií 2) Systém načte ze serverové aplikace aktuální stav na burze 3) Systém zobrazí aktuální stav na burze formou tabulky 1a. Uživatel zvolí filtr akcií Systém zobrazí aktuální stav na burze Je UC4 a uživatel zadal volbu filtr akcií 1) Systém zobrazí seznam akcií 2) Uživatele vybere ze seznamu akcie a potvrdí 3) Systém zaktualizuje zobrazované akcie Dojde k aktualizaci zobrazovaných akcií Zobrazení výsledku obchodování Uživatel je přihlášen v systému 1) Uživatel zadá volbu Zobrazení výsledků obchodování a. Určení období b. Výběr zobrazovaných akcií c. Porovnávání grafů d. Predikce e. Přidání komentáře grafu f. Smazání komentáře grafu g. Editace komentáře grafu 2) Systém zobrazí výsledky obchodování formou grafu Systém zobrazí výsledky obchodování Určení období Je UC6 a uživatel zadal volbu Určení období 1) Uživatel zadá období a potvrdí 2) Systém zaktualizuje zobrazované výsledky obchodování Dojde k aktualizaci zobrazovaných výsledků obchodování Výběr zobrazovaných akcií Je UC6 a uživatel zadal volbu Výběr zobrazovaných akcií 1) Systém zobrazí seznam akcií 2) Uživatele vybere ze seznamu akcie a potvrdí 3) Systém zaktualizuje zobrazované výsledky obchodování Dojde k aktualizaci zobrazovaných výsledků obchodování
UC9. UC10. Porovnávání grafů Predikce UC11. Spuštění scénáře: UC12. Spuštění scénáře: UC13. Je UC6 a uživatel zadal volbu porovnání grafů 1) Systém zobrazí seznam grafů 2) Uživatele vybere ze seznamu grafů a potvrdí 3) Systém zobrazí výsledek porovnání grafů Systém zobrazí výsledek porovnávání grafů Je UC6 a uživatel zadal volbu Predikce 1) Systém zobrazí seznam akcií 2) Uživatele vybere ze seznamu akcie a potvrdí 3) Systém zobrazí výsledek predikce Systém zobrazí výsledek predikce Získání výsledků obchodování Zdroj dat je dostupný Pravidelně každých 5 sec. 1) Systém získá aktuální výsledky obchodování ze zdroje dat 2) Systém uloží stažené výsledky obchodování do databáze Dojde k získání výsledků obchodování Archivace výsledků obchodování Přidání akcie Žádná Pravidelně každých 3 měsíce 1) Systém uloží výsledky obchodování sekundární databáze Dojde k archivaci výsledků obchodování Uživatel musí být přihlášen 1) Uživatel vybere přidání akcie a potvrdí 2) Zadá ISIN akcie a vybere burzu ze seznamu a potvrdí a. Systém zobrazí hlášení o neplatné akcii b. Vyzve ke znovu zadání údajů o akcii 3) Systém přidá akcie do databáze 2a. Uživatel zadal neplatné údaje o akcii Dojde k přidání akcie
12) Databázový model class Data Mo... globsettings TradeHistory InstrumentKinds *PK Id: int * InstrumentTitle: varchar(50) 1 (InstrumentKind_ID = Id) *PK Name: nvarchar(50) Value: varchar(50) (Issue_ID = Id) 0..* *FK Issue_ID: int *PK DateTime: datetime * Price: money TradeVolume: varchar(50) TradeValue: varchar(50) Issues (Market_ID = Id) 0..* 0..* *PK Id: int * ISIN *FK InstrumentKind_ID: int *FK Market_ID: int Issuer 1 1 (Issue_ID = Id) Markets *PK Id: int * MarketTitle: varchar(50) 1 (id = Id) 0..* 1 (id = Id) 0..* TradeCurrent *FK Issue_ID: int *PK Time: datetime * Price: money TradeVolume: varchar(50) TradeValue: varchar(50) Currency *pfk id: int CurrencyName: varchar(50) 1 0..* Comment *pfk id: int *PK DateTime: datetime Text: varchar(50) 13) Class Diagram class Class Mo... Issue + id: int + CurrrencyName: Currency + InstrumentTitle: IntrumentalKind + ISIN: string + MarketTitle: Market + Comment: List<DateTime,String> + AddIssue(string, Market) : void + RemoveIssue(int) : void + AddComment(DateTime, string, int) : void + EditComment(DateTime, string, int) : void + RemoveComment(int) : void + GetTimeSeries(DateTime, DateTime, int) : List<Trade> 1 «enumeration» Currency «enumeration» Market «enumeration» IntrumentalKind 0..* Trade + Time: DateTime + Price: decimal + TradeVolume: decimal + TradeValue: decimal Prediction + CompareTimeSeries() : void + Prediction(int) : void
14) Slovníček pojmů Pojem Akcie Výsledky obchodování Graf Zdroj dat Databáze Sekundární databáze ISIN Definice Jednotlivé emise cenných papírů Cena akcie v daném období Grafická reprezentace výsledku obchodování Server obchodníka s cennými papíry Úložiště výsledků obchodování Záložní úložiště výsledků obchodování
15) Dodatky Rozdělení kompetencí Jméno Kompetence Margarita Komunikace se zadavatelem Andrei Získávání vstupních dat Tom Analýza a návrh Jirka Dokumentace a webové stránky, Tester Egor Implementace