Diplomatervezés 1 (BMEVIIIM914)



Hasonló dokumentumok
4. Használati útmutatás

Túlreagálás - Az átlaghoz való visszatérés

Projekt beszámoló. NEWSIT News basedearlywarning System forintradaytrading: Hír alapú Korai Figyelmeztető Rendszer Napon belüli Kereskedéshez

A Markowitz modell: kvadratikus programozás

TŐZSDEI STRATÉGIÁK TESZTELÉSÉHEZ VALÓ GRIDES KERETRENDSZER FEJLESZTÉSE

GráfRajz fejlesztői dokumentáció

Programozás alapjai Bevezetés

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

A tudás alapú társadalom iskolája

Társadalmi és gazdasági hálózatok modellezése

Gépi tanulás és Mintafelismerés

BetBulls Opciós Portfolió Manager

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

INTERNETES HIRDETMÉNY Portfolio Online Tőzsde, Portfolio Online Tőzsde Pro, Portfolio Online Tőzsde mobil és táblagép applikáció

L'Hospital-szabály március 15. ln(x 2) x 2. ln(x 2) = ln(3 2) = ln 1 = 0. A nevez határértéke: lim. (x 2 9) = = 0.

A Ket. végrehajtási rendeletei

Macsinka Klára. Doktori értekezés (tervezet) Témavezető: Dr. habil. Koren Csaba CSc egyetemi tanár

Dr. Saxné Dr. Andor Ágnes Márta. Immateriális javak a számviteli gyakorlatban

nednim kidötö iapórue lekkegészéhen dzük a sétrégevözs nételüret

TÁJÉKOZTATÓ. K&H többször termő 4 származtatott zártvégű alap

Első Kötet Közszolgálat 3.2 K ÖZSZOLGÁLAT

Helyi Esélyegyenlőségi Program. Dorogháza Község Önkormányzata

A Reálszisztéma Értékpapír-forgalmazó és Befektető Zrt évről szóló nyilvánosságra hozatali kötelezettségének teljesítése

Taylor-polinomok. 1. Alapfeladatok április Feladat: Írjuk fel az f(x) = e 2x függvény másodfokú Maclaurinpolinomját!

INFORMATIKA 1-4. évfolyam

Tervezett erdőgazdálkodási tevékenységek bejelentése

A C programozási nyelv III. Pointerek és tömbök.

MAGYAR POSTA TAKARÉK HARMÓNIA VEGYES BEFEKTETÉSI ALAP

Tűgörgős csapágy szöghiba érzékenységének vizsgálata I.

Online algoritmusok. Algoritmusok és bonyolultságuk. Horváth Bálint március 30. Horváth Bálint Online algoritmusok március 30.

Általános statisztika II. Kriszt, Éva Varga, Edit Kenyeres, Erika Korpás, Attiláné Csernyák, László

JEGYZŐKÖNYV. Készült: Szentbékkálla Község Önkormányzata Képviselő-testületének november 26-án 16:00 órakor megtartott nyilvános üléséről.

A C programozási nyelv III. Pointerek és tömbök.

MemoLuX Kft. MINİSÉGÜGYI KÉZIKÖNYV. Jelen példány sorszáma: 0. Verzió: Lapszám: Fájlnév: 4/0 1/30 MMKv4.doc

Az AAA AUTO csoport 2008 során több mint gépkocsit értékesített, most pedig összegzi 2008 piaci folyamatait

MUNKATERV A MÉLIUSZ JUHÁSZ PÉTER KÖNYVTÁR KÖNYVTÁRELLÁTÁSI SZOLGÁLTATÓ RENDSZERBEN VÉGZETT MUNKÁJÁHOZ

Szakmai program 2015

Az AEGON Magyarország Önkéntes és Magánnyugdíjpénztár önkéntes pénztári ágazatának évi gazdálkodásáról nyilvánosságra hozandó adatok

Gráfokkal megoldható hétköznapi problémák

A tervezésben résztvevő döntéshozóknak szóló ajánlások a TÁMOP as program tapasztalatai alapján

P-GRADE fejlesztőkörnyezet és Jini alapú GRID integrálása PVM programok végrehajtásához. Rendszerterv. Sipos Gergely

MAGYARORSZÁG NYUGDÍJRENDSZERE ( ) Október 5-7.

Penta Unió Zrt. Az Áfa tükrében a zárt illetve nyílt végű lízing. Név:Palkó Ildikó Szak: forgalmi adó szakirámy Konzulens: Bartha Katalin

Egyedi megjelenési és reklám / hirdetési lehet ségek a Gazdivonal.hu portálon

Pénzügyi matematika. Vizsgadolgozat I. RÉSZ. 1. Deniálja pontosan, mit értünk amerikai vételi opció alatt!

Üzleti lehetőségek a fenntartható építés terén

Szimulációs technikák

Random Capital Zrt. Végrehajtási politika. Hatályba lépés dátuma: április 1.

Széchenyi István Szakképző Iskola

Alkalmazások fejlesztése A D O K U M E N T Á C I Ó F E L É P Í T É S E

INFORMATIKA HELYI TANTERV

TÁJÉKOZTATÓJA CONCORDE NEMZETKÖZI RÉSZVÉNY ALAPOK ALAPJA. Alapkezelő: Concorde Alapkezelő zrt. (1123 Budapest, Alkotás utca 50.) január 15.

MATEMATIKA évfolyam

Érdekes informatika feladatok

Závodni Zsolt PTP alkalmazásgazda. WebBróker Online kereskedési rendszer

Tehát a jelenlegi gondolkodási mód (paradigma) alapja hibás, ezért nem lehet azt változtatással (reformmal) továbbéltetni. Ezért II.

Budaörs BUDAÖRS VÁROS ÖNKORMÁNYZATA ÉVI KÖLTSÉGVETÉSE

Diverzifikáció Markowitz-modell MAD modell CAPM modell 2017/ Szegedi Tudományegyetem Informatikai Intézet

NYÍLTVÉGŰ INGATLAN ALAPOK ALAPJA

alkalmas automatikus módszer kidolgozása a Hat Szigma módszerével

Programozás I gyakorlat

Az egyetemi publikációs adatbázis

FELHASZNÁLÓI ÚTMUTATÓ

Rövid távú modell III. Pénzkereslet, LM görbe

FELHASZNÁLÓI LEÍRÁS a DIMSQL Integrált Számviteli Rendszer Készlet moduljának használatához

ACCORDE PRÉMIUM ALAPOK ALAPJA TÁJÉKOZTATÓJA ÉS KEZELÉSI SZABÁLYZATA

BIZOTTSÁGI SZOLGÁLATI MUNKADOKUMENTUM A HATÁSVIZSGÁLAT ÖSSZEFOGLALÁSA. amely a következő dokumentumot kíséri. Javaslat A TANÁCS IRÁNYELVE

ÁRAMKÖRÖK SZIMULÁCIÓJA

INFORMATIKA Emelt szint

Irinyi József Általános Iskola 4274 Hosszúpályi Szabadság tér HELYI TANTERV Informatika 4. osztály 2013

A technikai elemzések értelmezése

TİKEPIACI TÁJÉKOZTATÁS PÉNZÜGYI ESZKÖZ EGYES ADATAIRÓL+

Random Capital Zrt. EL ZETES TÁJÉKOZTATÓ

Önálló labor beszámoló Képek szegmentálása textúra analízis segítségével. MAJF21 Eisenberger András május 22. Konzulens: Dr.

PANNÓNIA NYUGDÍJPÉNZTÁR ITÖ-51 SZABÁLYZAT. Befektetési Politika ÖNKÉNTES ÁGAZAT. Módosítás dátuma

OEP Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat. Elemzés 1

Digitális stratégia 2025

Dr. Ábrahám István * A BOLOGNAI FOLYAMAT ÉS A TANKÖNYVEK

Konjunktúrajelentés 2004/1.

Javaslat AZ EURÓPAI PARLAMENT ÉS A TANÁCS RENDELETE

Szimuláció RICHARD M. KARP és AVI WIGDERSON. (Készítette: Domoszlai László)

Szeged Megyei Jogú Város Smart City Jövőképe

Energiaipar: a jég hátán is megél?

SZOLNOKI FŐISKOLA Ú T M U T A T Ó

A kiválasztási kritériumokat tartalmazó tanulmány és az online kérdőív kialakítása

ÖSSZEVONT TÁJÉKOZTATÓ. a KEG Közép-európai Gázterminál Nyilvánosan Működő Részvénytársaság

Az AEGON Magyarország Önkéntes és Magánnyugdíjpénztár önkéntes pénztári ágazatának évi gazdálkodásáról nyilvánosságra hozandó adatok

Gyakornoki szabályzata

Grafikonrajzoló. Felhasználói kézikönyv. UNIQA Biztosító Zrt.

Java és web programozás

Felügyeletet ellátó szerv neve és elérhetősége: Pénzügyi Szervezetek Állami Felügyelete, 1013 Budapest, Krisztina krt. 39.

1. K ORLÁTLAN SÁVSZÉLESSÉG ÉS

Indexált betét az FHB Bankban

ERSTE NYÍLTVÉGŰ INGATLAN BEFEKTETÉSI ALAP

Munkaügyi Központja I. NEGYEDÉV

ALPOLGÁRMESTER. Javaslat. a Budapest XXI. Kerület Csepel Önkormányzata Lakóépület felújítási programja (2005) módosítására

MATEMATIKA 5 8. ALAPELVEK, CÉLOK

Hosszú Zsuzsanna Körmendi Gyöngyi Tamási Bálint Világi Balázs: A hitelkínálat hatása a magyar gazdaságra*

PEDAGÓGUSOK ÉS AZ IKT KOMPETENCIATERÜLET

Átírás:

Diplomatervezés 1 (BMEVIIIM914) T zsdei stratégiák teszteléséhez való grides keretrendszer fejlesztés Sali Dániel Attila M0EPW3 Mérnök Informatikus MSc. II.évf. vakond1@gmail.com Konzulens: Kápolnai Richárd IRÁNYÍTÁSTECHNIKA ÉS INFORMATIKA TANSZÉK 2010. május 14. 1

1. Bevezetés A t zsde, mint nyitott, központosított és könnyen hozzáférhet piac, a befektet k legkülönböz bb fajtái számára jelenti a meggazdagodás lehet ségét. A t zsde hasonlóan vonzó egyéni, százezer-millió Forint nagysárgrendben kockáztató befektet k és az akár milliárd dolláros nagyságrendben ügyleteket lebonyolító pénzintézetek és vállaltok számára. Ezen befeketet k mind alkalmaznak egyfajta kereskedési stratégiát, befektetéseiknek és lehet ségeiknek megfelel en, egyszer ökölszabályoktól, intuitív stratégiáktól kezdve bonyolult pénzügyi modellekig és számításokig. Mivel ez az eltér súlycsoportú befektet k egy közös piacon kereskednek, ezért elért eredményeik a kereskedési stratégiáik eredményességét mutatják. 1.1. Feladatkiírás A féléves feladatom egy t zsdei, kisbefektet i stratégiák elemzését lehet vé tev keretrendszer fejlesztése volt, amely lehet vé teszi új stratégiák könny hozzáadását, és azok felparaméterezését. Ezzel a keretrendszerrel lehet ség nyílna a kisbefektet k egyszer bb, sokszor jótanácsként szerzett stratégiáinak kvantitatív elemzésére, összehasonlítására, optimalizására a paraméterválasztás tekintetében. A keretrendszer a stragégiák elemzéséhez historikus t zsdei adatokat használna fel (ez a folyamat az ún. backtesting), ezeket az adatokat és a futtató felhasználó által megadott paramétereket átadva a tesztelend stratégiának. Ezt a keretrendszert szeretném a következ félévben továbbfejleszteni úgy, hogy a stratégiák ellen rzését nem a stratégiákat értékel felhasználó számítógépe végzi, hanem egy HPC (High Performance Computing, nagyteljesítmény számítástechnika) központ, a tervek szerint egy Grid végzi majd. 1.2. Részvény értékelés, backtesting A befektet k, részvényesek által alkalmazott kereskedési stratégiákat alapvet en két csoportba lehet sorolni[1]: Fundamentális elemzés: Az elemzés során az értékpapír valós, fundamentális értékét próbálja meg az elemz meghatározni, a múltbéli és jelenlegi piaci áraktól függetlenül, a kibocsátó pénzügyi beszámolói, eredménykimutatásai és a kibocsátóhoz kötheth hírek alapján. A fundamentális elemzést választó befektet azokkal az értékpapírokkal kereskedik, melynek jelenlegi piaci ára eltér az elemzése során megállapított fundamentális értékt l. Technikai elemzés: A technikai elemzés során a befektet feltételezi, hogy az értékpapírról ismert minden információ tükröz dik az értékpapír árában, ezért az értékpapír historikus kereskedési adatait, mint id sorokat elemzik, különböz trendeket és mintákat keresve. A technikai elemzés egyik fajtája a backtesting, a historikus adatokon végzett stratégia-szimuláció. 2

1.2.1. A Backtesting A backtesting során egy stratégiát, elméletet elemeznek, ellen riznek historikus adatokra, nem csak pénzügyi területen, hanem a zikában és a mérnöki tudományokban is, pénzügyi területen az értékpapír kereskedelem mellett a bankok alkalmazzák Value-at-risk (kockáztatott érték) analízishez, hogy meg tudják határozni az el írásoknak megfelel t ketartalékokat[2]. T zsdei historikus adatok és kereskedési stratégiák esetén az eljárás alapvet kérdése az, hogy: Milyen eredményt értem volna el, ha a ezt a stratégiát alkalmaztam volna?. Egy ilyen stratégia historikus elemzésénél törekedni kell az eredeti körülmények és környezet lehet legjobb visszaadására, de ezt tökéletesen megtenni nyilvánvalóan lehetetlen, a szerepl k száma, a tranzakciók mennyisége és s r sége miatt, ez hatalmas feldolgozandó és visszajátsszandó adatmennyiség lenne. A másik ok, amiért nem lehet tökéletes szimulációt végezni, az, hogy a historikus adatok visszajátszásával nem lehet a stratégia hatását érzékelni a környezetére, azaz nem lehet érzékelni a vizsgált porfólió változásainak a piacra fejtett hatását. Ez a hatás piac méretéhez képest elhanyagolható portfólió esetében a valóságban is gyelmen kívül hagyható, de egy nagybefektet esetén egy tranzakció már jelent s hatásokat idézhet el a piacon, amelyet backtesting eljárás esetén nem lehet szimulálni, a rögzített piaci viszonyok miatt. 1.2.2. Létez backtesting szoftverek A backtesting-et, mint stratégia elemzést a számítástechnika fejl dése tette lehet vé, jelenleg már bármilyen asztali PC-re vannak id sorelemzésre alkalmas szoftverek fejlesztve. Azonban e szoftverek tudása és ára is jelent sen eltér egymástól, az ingyenesen hozzáférhet szoftverek általában nem képesek több értékpapírból álló portfóliót kezelni, korlátozott a futtatható algoritmusok halmaza és a paraméterezés lehet sége[3]. A drágább (többszáz, többezer) USD árú szoftverek már képesek több értékpapírból álló portfólió elemzésére, a felhasználó deniálhat saját algoritmusokat és képesek nagyfelbontású historikus adatok kezelésére is, illetve optimalizálva vannak a modern, többmagos processzorokra[?, 5]. Az álatlam fejlesztett keretrendszer képes kezelni portfóliókat, illetve a felhasználó a biztosított interfészeket felhasználva szabadon fejleszthet algoritmusokat is, amelyeket szabadon paraméterezhet. Sajnos mivel a nagyfelbontású adatsorok csak nagyon drágán elérhet ek, ezért meg kellett elégedjek a szabadon hozzáférhet, napi felbontású adatokkal. 1.2.3. Fontosabb algoritmusok A backtest során a befektet k különböz bonyolultságú, jellemz en trend- vagy mintakeres algoritmusát szimuláljuk egy historikus id soron. Az algoritmusok az évek során egyre összetettebbek lettek, egyre elvontabb mintákat és trendeket kerestek. Az alábbiakban ismertetem a napjainkban leggyakrabban használt stratégiákat[6]: 3

Trend Following (trendkövet ): A trendkövet stratégiák akkor lépnek a piacra (vesznek értékpapírjaikat), mikor kialakul egy trend, majd a trend borulásánál hagyják el a piacot (adják el értékpapírjaikat). Ilyen stratégia például a mozgó átlagok stratégiája, mikor azt vizsgálják, mikor lép át vagy megy alá egy rövidebb id intervallumra vett mozgó átlag értékpapírérték egy hosszabb id intervallumra vett mozgó átlagértéket, az ilyen változásoknál vesz vagy ad el értékpapírokat. Counter Trend (trend ellen men ): A trend ellen men stratégiák az átlagosnál nagyobb árbeli eltéréseket keresik, az olyan helyzeteket, mikor egy értékpapírból túl sokat vesznek vagy adnak el. Dip Buyer (esésnél vásárló): Az esésnél vásárló stratégia a hirtelen és rendkívül gyors eladások pillanatában vásárolnak, bízva abban, hogyn visszaáll a az értékpapír hirtelen leesett árfolyama. Breakout (kitörés): A kitöréses stratégiánál egy meghatározott id intervallum árminimumát és maximumát véve gyelik, mint ársávot, tranzakciókat akkor végeznek, mikor a részvény árfolyama kilép ebb l a sávból. Gap (hézag): A hézag-stratégia alkalmazásánál hírek keltette éles árfolyamváltozásokat próbálnak meg kihasználni. 1.2.4. Rendelkezésre álló adatsorok A backtesting eljárás eredményessége és értelme múlik az eljáráshoz használt historikus adatsoron, hiszen a cél a múltbéli piaci viszonyok minél pontosabb szimulációja, ehhez pedig a lehet legrészletesebb értékpapír árfolyam adatsorok kellenek. Sajnos azonban a teljes részletesség adatsor (egy adott értékpapír összes tranzakciójával, ajánlatával) csak jelent s (990 euro) összegért cserében érhet el[7], ami sajnos e diplomamunka megírása céljából számomra megzethetetlen. Az ingyenesen, különböz, internetes keres k által elérhet vé tett adatok napi felbontásúak, azaz a napi nyitó-, minimum-, maximum- és osztalékkizetéssel kompenzált záróárfolyamot és a kereskedett részvények számát tartalmazza, ami csak egyszer, nap eleji vagy végi kereskedést tesz lehet vé a szimuláció során. Ezeket az adatokat részvényenként egy.csv fájlban (vessz vel elválasztott adatsorokat tartalmazó szövegfájlban) tudtam letölteni. Az általam elemzett részvényeknek pedig az S&P 500 indexet egy adott napon (2010. márc. 17) alkotó 500 legjelent sebb amerikai részvényeit választottam, mivel ezekhez a részvényekhez könnyen találtam több évre visszamen leg adatokat, illetve ezen részvényeknek magas a napi kereskedett volumene. Azonban ezek az részvényárfolyamok a letöltés után nem használhatóak fel azonnal, mivel sok olyan részvény van ezen az 500-as listán, melyhez nincs árdolyamadat a vizsgált id tartalom (2007. márc. 17-2010. márc. 17) minden napjára. Ennek több oka is lehet, lehet, hogy az adott társaság még nem volt t zsdére bevezetve a hiányzó napokon, lehet, hogy aznap valamilyen oknál fogva 4

nem kereskedtek a részvénnyel, lehet, hogy megsz nt vagy átalakult az adott társaság. Ezért a hiányzó napi adatok kezelésére fel kell készíteni a keretrendszert, ennek több módja lehetséges, lehet kijelölni érvénytelen értékkel hiánypótló napi adatokat, vagy, amennyiben csak 1-1 napra hiányoznak adatok, akkor valamilyen interpolációval megbecsülni a kiesett napok adatait. Mivel sajnos kevés id állt rendelkezésemre az adatbeolvasás tökéletesítéséhez, ezért dátumok helyett sorszámmal láttam el a napi adatokat és egy részvényen belül 0-tól kezdve kihagyás nélkül sorszámoztam az elérhet napi adatokat. Ez azt jelenti, hogy nem fog megfelelni az általam alkalmazott adathalmaz a valóságnak, de mivel egyel re a keretrendszer m ködésének tesztelése és nem a pontos szimulációk elvégzése a cél, ezért ez most elfogadható. 2. Fejlesztések A fejlesztés kezdete el tt, a félév els hónapjaiban, a feladatkiírás értelmezése után egyeztettük a konzulensemmel a fejlesztend rendszerrel kapcsolatos elképzeléseinket. Meghatároztuk a fejlesztend rendszer legfontosabb funkcióit: Mivel a fejlesztend rendszer keretrendszer, ezért legfontosabb funkciója, hogy a felhasználó képes legyen saját backtest eljárást deniálni, ezt a rendszer teljes forráskódjának ismerete nélkül megtehesse, A felhasználó az általa választott id sorokon futtathassa az általa megírt algoritmusokat, a rendszer képes legyen az id sorok betöltésére és felhasználására, A felhasználó tetsz leges, általa megadott paraméterekkel futtathassa az id sorelemzést, ezzel megállapíthassa az adott id sorhoz a választott algoritmus számára legeredményesebb paraméterhalmazt, A keretrendszer által elvégzett elemzés eredményeit a felhasználó az általa választott módon értékelhesse ki, amennyiben az egyszer bb mutatóknál (hozam) több információt szeretne az elemzésb l kinyerni, A keretrendszer az elemzést nagy számításteljesítmény környezetben, egy Grid-ben végezze, hogy lehetséges legyen egyszerre több algoritmust futtatni, illetve egy algoritmust különböz paraméterekkel vizsgálni, az optimális paramétereket keresve. A keretrendszer fejlesztését Java nyelven végeztem, a Java 6 SE SDK-t használva, NetBeans 6.8 fejleszt eszközzel. Azért esett a választásom a Java nyelvre, mert mind a felhasználói felület, mind az id sorelemzést végz algoritmikus rész könnyen fejleszthet, a jöv félévre tervezett fejlesztések is integrálhatóak lesznek az ebben a félévben elkészült kezdeti rendszerrel. 5

2.1. Kit zött cél a félévre A félév elején konzulensem javaslatára azt a célt t ztük ki, hogy a félév végére legyen a tervezett keretrendszernek egy csak a felhasználó számítógépén futtatható verziója, mely már lehet vé teszi a felhasználónak új backtest algoritmusok fejlesztését és alkalmazását, de a számítások elvégzéséhez még a felhasználó számítógépét használja. E cél megvalósításához els nek a rendszer által használt bels és küls adatszerkezetek megtervezésére volt szükség, kiindulva a rendelkezésre álló adatsorok adatszerkezetéb l, a portfólióértékeléshez megkívánt entitások (részvény entitás, portfólió entitás) szerkezetéb l. Meg kellett határozni a felhasználó számára algoritmusfejlesztéshez felkínált interfészt, illetve a felhasználó algoritmusától megkövetelt interfészt. Deniálni kellett továbbá a felhasználónak az eredmények kiértékeléséhez biztosított interfészt. Cél volt még a futáshoz szükséges id sorok kezelésének megvalósítása, elmezhéshez használható id sorok beszerzése. A rendszer számára deniálni kellett egy id sor adatformátumot és megírni az adatformátumnak megfelel fájlok feldolgozását, memóriában lev bels adatszerkezetbe töltését. 2.2. Megvalósított fejlesztések A kit zött célokat bizonyos esetekben egyszer sített formában sikerült elérnem a félév során, elkélszült egy futtatható rendszer, mely képes a felhasználó által megadott algoritmust a megadott paraméterekkel a kiválasztott adatsorokon futtatni, majd a futás eredményét megjeleníti a felhasználónak. A legfontosabb funkcionalitásbeli egyszer sítés az, hogy az alkalmazott id sorok esetén a dátumokat gyelmen kívül hagytam, dátum helyett sorszámokat osztottam minden sornak az id sorokban, folytonosan, tehát ha két egymást követ adatsor között több, mint egy nap különbség volt, akkor is egymást követ sorszámokat kaptak. Ezzel el tudtam kerülni a hiányzó árfolyamadatok okozta problémát a hitelesség rovására, mivel a különböz részvények azonos sorszámú napi adatsorai eredetileg más napra vonatkozhattak. A másik jelent sebb egyszer sítés az, hogy az elemzések eredménye nem dolgozható fel a felhasználó által, hanem csak egy tranzakciós listát jelenít meg a rendszer a felhasználói felületen, mely tartalmazza a kereskedés napját, kereskedett részvény nevét, a portfólió tranzakció utáni értékét és a kereskedett mennyiséget. A rendszert úgy alakítottam ki, hogy képes legyen párhuzamosan elemzéseket végezni, az elemzések külön szálban futnak, de még nincs automatikus paraméter kiosztás, ezért még nem képes a rendszer automatikus paraméter optimalizációra. A rendszer egy Swing-es felületen keresztül használható, de ez a felület egy gyors prototípus, a jöv félévre átdolgozásra kerül. 6

2.3. Rendszer leírás 2.3.1. Felhasználónak felkínált interfész A rendszer fejlesztését a bels adatszerkezet deniálásával kezdtem, a rendelkezésre álló adatsorok adataiból kiindulva. Az adatszerkezet az alábbi entitásokból áll: DailyData: Egy részvény napi árfolyamadatát (nyitó-, maximum-, minimumés osztalékkizetéssel korrigált záróárfolyamot) tartalmazó entitásosztály. Stock: Egy részvényt reprezentáló entitásosztály, tartalmazza a részvény kódját és a részvény adatsorát, mint DailyData-k dátumindexelt tömbjét. StockData: Egy id sort reprezentáló osztály, tartalmazza az id sor nevét (pl.: S&P 500), az id sor kezd - és végdátumát,a tartalmazott napok számát és egy név-stock hash-táblát, hogy név alapján gyorsan hozzá lehessen férni a részvény objektumhoz. StockDataFactory: Az id sorok betöltéséhez használt interfész, mely lehet vé teszi, hogy többféle forrásból származó id sorokat egységesen tudjuk memóriába tölteni. Parameter: A felhasználó által specikált, egy elemz algoritmusnak átadott paramétert jelképez. A paraméternek van egy kódja, mely azonosítja funkcióját a rendszerben, egy leírása, mely a felhasználónak szól és egy egész típusú értéke. A rendszer egyel re csak egész érték paramétereket kezel az egyszer ség miatt (nem kell típusinformációt tárolni a paraméterhez), de ez a gyakorlatban nem okoz sok kénylemetlenséget, mivel a legtöbb esetben x tizedesjegy hosszúságú racionális számok lennének az algoritmusok paraméterei, melyek könnyen alakíthatóak és visszaalakíthatóak egész számmá. Portfolio: Egy befektet i részvényportfóliót reprezentál, mely tartalmazza a birtokolt részvényösszetételt (hashmapként), a rendelkezésre álló készpénzt és a portfólió összértékét. Ez az osztály tartalmazza a részvények adásvételét implementáló metódusokat: buystock: Az adott napon vesz az adott részvényb l a megadott darabszámot, amennyiben van elég készpénz. sellstock: Elad az adott napon az adott részvényb l a megadott darabszámot, készpénzre váltva értéküket. liquidate: Eladja az adott napon az összes birtokolt részvényt, készpénzre váltva értéküket. addstocks: Eladja az összes birtokolt részvényt, majd a megadott részvényekb l vásárol, egyenl értékben. Ezeket az osztályokat használhatja a felhasználó ahhoz, hogy a backtest algoritmusát kifejlessze, a pontos interfészek kés bb kerülnek leírásra. 7

1. ábra. A keretrendszer futás közben 2.3.2. A keretrendszer m ködése A keretrendszer az elemzést az id soradatok betöltésével és a felhasználó által adott backtest algoritmusosztály futás közbeni példányosításával kezdi, ehhez a StockDataFactory egy leszármazottját (jelen esetben a CSVStockDataFactory-t) használja. Ez után minden kereskedési napra (a kereskedési periódus hossza paraméterként megadandó, a kezel felületen beállítható) az alábbi lépéseket végzi a rendszer: 1. A felhasználó által megadott algoritmustól egy pontszámot kér minden egyes részvényhez, az adott napra. Minél magasabb a pontszám, annál nagyobb valószín séggel kerül bele a részvény a portfólióba. 2. A felhasználó által megadott n legmagasabb pontszámú részvényekb l egyenl értékben vesz, az addstocks függvényt meghívva. Mivel a rendszer nem foglalkozik a tranzakció költségeivel, ezért minden kereskedési nap eladja az összes birtokolt részvényt és újakat vásárol helyette. A tranzakciókat egy listában rögzíti, melyet majd a futás után megjelenít a felhasználói felületen. A felhasználó a rendszert a felhasználói felületén keresztül m ködtetheti, ahol megadhatja a csv fájlokat tartalmazó könyvtárat, a backtest algoritmust tartalmazó osztályt.jar és.class kiterjesztéssel, illetve a táblázatban megadhatja az algoritmusnak átadható paramétereket. 8

2.3.3. Felhasználótól elvárt komponensek A felhasználó feladata a backtest algoritmus kifejlesztése, az általa fejlesztett algoritmusnak a Backtest osztály leszármazottjának kell lennie. Implementálnia kell a score függvényt, mely paraméterként megkapja az értékelend részvény nevét, a StockData betöltött id sort, a felhasználó által a felületen beállított paraméterek listáját és a kereskedési napot. A függvény visszatérési értéke a részvényre adott pontszám. 3. Tervek következ félévre 3.1. Jelenlegi rendszer továbbfejlesztése A jelenlegi rendszert több területen is tovább kell fejleszteni, az alábbi fejlesztéseket tervezem a nyárra és a következ félévre: Egy robosztusabb, konvencióknak megfelel, átgondoltabb kezel felületet szeretnék fejleszteni, Az elemzés értékelését a felhasználó az általa írt osztállyal végezhesse, hasonlóan az algoritmus megadásához, A rendszer a Grid-et használja számításhoz, ehhez meg kell pontosan határozni, hogy a keretrendszerben hol húzodik a határ az interaktív, felhasználóval kommunikáló front-end és a számítást végz back-end között, hogyan lehet hatékonyan eljuttatni a Gridben a számítást végz géphez a használt id sorokat, A paraméteroptimalizálást, mint triviálisan párhuzamosítható problémát kezelni a továbbfejlesztett rendszerben. Összetettebb backtest algoritmusokat szeretnék fejleszteni (jelenleg csak egy véletlenszer pontozást végz algoritmus van implementálva, tesztelés céljából). 9

A. Munkanapló A.1. 1-4. hét: Konzulensemmel értelmeztük a feladatkiírást, kit ztük a féléves célt, a következ félévre tervezett módosításokat, adatsorokat gy jtöttem, kerestem hasonló szoftvereket. A.2. 5-8. hét: Backtest algoritmusokat kerestem tudományos cikkekben, elkezdtem az adatszerkezet deniálását és implementálását, az adatsorok betöltésének fejlesztését. A.3. 9-14. hét: Elkészítettem a keretrendszer els futtatható változatát, konzulensemmel rendszeresen egyeztetve. Megírtam a beszámolót. 10

Hivatkozások [1] Fundamental analysis, Wikipedia, http://en.wikipedia.org/wiki/ Fundamental_analysis [2] A Review of Backtesting and Backtesting Procedures, Finance and Economics Discussion Series Divisions of Research & Statistics and Monetary Aairs Federal Reserve Board, Washington, D.C., 2005. [3] Ashkon Software: Predictor id sorelemz szoftver, http://www.ashkon. com/predictor/ [4] Multicharts id sorelemz szoftver képességei, http://www.tssupport.com/ multicharts/compare/ [5] CompuVision id sorelemz szoftver képességei, http://www.compuvision. com.au/featurecomparison.htm [6] Backtest Trading Strategies, Fidelity Investments, http://eresearch. fidelity.com/backtesting/landing [7] TickDataMarket által forgalmazott id sorok árai, http://www. tickdatamarket.com/index.php?number=p070100&lg=gb [8] Yahoo! Finance, http://finance.yahoo.com/ 11