You are on page 1of 16

nll laboratrium

A tma megnevezse:
Morgan Stanley: Ktvnyrazsi hibk intelligens javtalgoritmusnak tervezse s fejlesztse

Kls konzulens:
Szllsi Lornd (Morgan Stanley)

Bels konzulens:
Dr. Kiss Blint

Ksztette:
Gelln gnes
(IUFQ58)

Tartalomjegyzk
Bevezets ................................................................................................................... 3 Ezen flves teendk .................................................................................................. 3 Elmleti httr............................................................................................................. 4 A ktvnyrazsrl ltalban ......................................................................................... 4 A binris fkrl .......................................................................................................... 4 A rekurzirl ............................................................................................................. 5 Genetikus algoritmus .................................................................................................. 5 Az A* algoritmus ...................................................................................................... 5 Technikai httr ........................................................................................................... 6 A JAVA programozsi nyelv ........................................................................................... 6 Az XML jellnyelv ..................................................................................................... 6 JAXB, avagy az sszekt technolgia .............................................................................. 6 Az implementci elmleti httere .................................................................................... 6 A binris fa tulajdonsgainak felhasznlsa a program sorn .................................................. 6 A program ................................................................................................................... 7 A program clja ......................................................................................................... 7 A programnyelv vlasztsnak oka .................................................................................. 8 Megvalsts ................................................................................................................ 8 Osztlyhierarchia bemutatsa ........................................................................................ 8 A program httr mkdshez szksges osztlyok a kvetkezk: ....................................... 8 A fbb programmveleteket vgz osztlyok ................................................................... 9 Algoritmusok bemutatsa ........................................................................................... 10 Specilis esetek .................................................................................................... 11 A binris ft kiolvas algoritmus ................................................................................ 12 A program futsnak bemutatsa egy konkrt pldn keresztl ............................................. 12 sszefoglal .............................................................................................................. 14 brajegyzk .............................................................................................................. 15 Irodalomjegyzk ......................................................................................................... 16

Ksznetnylvnts
Ezen a tmacsoporton ketten dolgozunk. Trsam, Vajsz Kornl a hibaszrssel s hibajavtssal foglalkozik. Szeretnm megksznni a munkt konzulenseimnek, Szllsi Lorndnak, aki a Morgan Stanley munkatrsaknt a flv sorn folyamatos felgyelettel s segtsggel ksrte munknkat, Kornlnak, akivel igaz, hogy a problma msik terletn dolgoztunk, de mgis tudtuk segteni egyms munkjt, tovbb Harkai Alexandrnak, aki a flv elejn Lorndot helyettestve tmogatott minket a feladatok elvgzsben.

Bevezets
A mai rohan vilgunkban nem mindig jut id a pnzgyeinkkel kapcsolatos feladatok nll elvgzsre, mint pldul egy kedvez hitel, bankszmla konstrukci vagy akr a szmunka legmegfelelbb befektets kivlasztsra, ezrt gyakran kls segtsget (pldul szemlyi bankrokat) krnk meg arra, hogy vegyk kezkbe ezen gyeink intzst. Ez viszont nem mindig a megfelel vlaszts, hiszen k igen gyakran a szerzdtt partnerek befolysa alatt llnak s a jutalk szempontjbl is rdekeltek abban, hogy melyik konstrukcit ratjk velnk al. Ezrt a legtbb ember jobban szereti maga intzni a pnzgyeit. A megfelel partner (legyen az egy bank vagy brmilyen ms befektetsi partner) abban segtheti gyfeleit - mellyel egyben maghoz is csalogathatja ket -, hogy ezt az elbb emltett rfordtott idt s utnajrst minl jobban leegyszersti. A Morgan Stanley tbbek kzt ebben nyjt segtsget az gyfelei szmra egy olyan, gynevezett black box segtsgvel, amely bizonyos ktvnyadatok, paramterek mellett az adott idpontban sajt becslst ad egy megadott rtkpapr rra. Ez a fekete doboz olyan clbl kszlt, hogy a mg napjainkban is hasznlt Bloomberg L.P. cg tulajdonban lv, arnylag lass reakciidej monitor ltal kiadott becslsek megjslsa, illetve ennl pontosabb becsls ellltsa egy nagysgrendekkel kisebb szmtsi id mellett. Azonban ms cgek (pl. Bank of America, Citibank, IBM) is rendelkeznek ehhez hasonl fekete dobozokkal, melyekben a cg a sajt maga ltal implementlt algoritmus alapjn hatrozza meg az elbb emltett becslst. Ezen algoritmusok azonban nem minden esetben nyilvnosak, viszont a tzsdei spekulci cljbl hasznos lenne ezek mkdsnek ismerete. Ez kpezi a f motivcijt az nll laboratrium munkmnak.

Ezen flves teendk


Azzal tisztban vagyunk, hogy ezek a ktvnyraz algoritmusok, tulajdonkppen nem msok, mint matematikai mveletek.

Erre a flvre azt tztk ki clul, hogy adott bemen paramterek s adott kimen parameter mellett az ltalam megrt program kpes legyen a kztk lv mveletek feldertsre. Els krben ez az egyszerbb mveletekre korltozdott.

Elmleti httr
A ktvnyrazsrl ltalban
A ktvny elmleti rfolyamt a benne foglal ktelezettsgek, azaz a jvben vrhat pnzramok jelenrtke adja. A ktelezettsgek az rtkpaprban jl meghatrozottak (nvrtk, kamat, trleszts). Ez bizonyos felttelek mellett a vltoz kamatozs formra is igaz, hiszen a pnzgyi s gazdlkodsi mutatk alakulsnak j rsze elre prognosztizlhat. Ezen ktvnyrazsi mveletek az albbihoz hasonl alakot ltenek:

Ahol:

= [ / (1 + )]
PV jelenrtk, elmleti rfolyam, Ci az i-edik idpontban esedkes pnzram, r hasonlt hozam, az alternatv befektetsek kamatlba, vagy az tlagos piaci kamatlb.

A binris fkrl
A ksbbiekben ismertetni fogom, hogy mirt lesz szksg a binris fkra a feladat sorn. Ebben a fejezetben a binris fk ltalnos jellemzire trek ki. A binris fa a lncolt listhoz hasonlan dinamikus adatszerkezet megvalstsra hasznlhat. Segtsgvel lehet olyan adatszerkezetet ltrehozni, amelyben tetszleges szm elemet trolhatunk, s hatkonyan lehet megvalstani egy rendezett halmaz trolst. A rendezett lncolt listhoz kpest a binris keresfban egy elem megkeresse, j elem beszrsa, elem trlse (keresssel egytt) sokkal hatkonyabb lehet. A binris fa teht nem ms, mint egy olyan gykeres irnytott fa (grf), amelyre teljesl, hogy a gykr kivtelvel minden cscsnak egy szlje van s legfeljebb kt gyereke: egy jobboldali s/vagy egy baloldali. A cscsokban adatokat trolhatunk. A binris fk esetn beszlhetnk tovbb az adott fa szintjeirl. A szint megmutatja az adott elem gykrelemtl vett tvolsgt. A szint teht nem ms, mint a gykrelemtl azonos tvolsgra lv elemek halmaza. Ezek alapjn a 0. szintet a gykrelem, az 1. szintet a gykrelem gyerekei, a msodikat azok gyerekei, stb. alkotjk.

A rekurzirl
A rekurzi matematikai hasznlatban gyakran elkerl fggvnyeknl, halmazoknl, s kifejezetten a vgtelenl nhasonl fraktlok esetben. Fggvnyek rekurzijra kivl plda a Fibonacci -sorozat, ahol a fggvny rszben nmaga egy vltozatt hvja meg: F(n) = F(n 1) + F(n 2). A Fibonacci-szmok rekurzv defincijnl azonban fontos kiktni kt, a rekurzibl nem kvetkez kittelt, miszerint F(0) = 0, valamint F(1) = 1. Egyes defincikat rendszerint rekurzv alakban adnak meg, gy pldul a logikai formula fogalmt is rekurzvan definiljk. Kimondjk, hogy a logikai vltozk s konstansok formulk, majd megadjk az eszkzket, amikkel az egyszerbb formulkbl lpsenknt bonyolultabb formulk pthetk fel. Ilyen eszkzk pldul a logikai mveletek, kvantorok, zrjelek. Vgl kimondjk, hogy az gy felpthet formulkon kvl nincs ms logikai formula.

Genetikus algoritmus
A hossz tv cl az, hogy a program bonyolultabb fggvnyek mkdst is kpes legyen kitallni. Annak rdekben, hogy ez vges idben bekvetkezzen, genetikus algoritmusok implementlsra lesz szksg. Genetikus algoritmusok alatt olyan keressi technikk egy osztlyt rtjk, melyekkel optimumot vagy egy adott tulajdonsg elemet lehet keresni. A genetikus algoritmusok specilis evolcis algoritmusok, technikikat az evolcibiolgibl klcsnztk. A genetikus algoritmusokat szmtgpes szimulcikkal implementljk. A keressi tr elemei alkotjk a populci egyedeit, melyeket keresztezni (ms szval rekombinlni) s mutlni lehet, gy j egyedek hozhatk ltre. A keressi tren rtelmezett clfggvnyt ebben a kontextusban szoksos fitness fggvnynek is nevezni. A genetikus algoritmus mkdse sorn egyrszt j egyedeket hoz ltre a rekombinci s a mutci opertorokkal, msrszt kiszri a rosszabb fitness fggvny rtkkel rendelkez egyedeket s eltvoltja a populcibl. Egyes esetekben az ilyen algoritmusok konverglnak az optimumhoz.

Az A* algoritmus
Ebben az eljrsban a kirtkel fggvnynk a heurisztikus fggvny s az aktulis cscsig megtett t kltsgnek ( () ) kombincija. Teht () = () + (). tfogalmazva () a legolcsbb, az n cscson keresztl vezet megolds becslt kltsge. Az A* optimalitst knny elemezni, ha () egy elfogadhat heurisztika. Fontos tudni, hogy () soha nem becsli fell a cl elrshez szksges kltsget.

Technikai httr
A JAVA programozsi nyelv
A JAVA programozsi nyelv modularitsa, objektumorientlt szemllete s a szmos elrecsomagolt, ill. bvthet API-ja miatt idelis MI technolgik kdolsra. Utbbit a cg vlasztotta a fekete doboza adatainak feldolgozshoz. Ennek mkdsre ksbb trek ki, lnyegben arrl van sz, hogy a fekete doboz bemenetre egy XML fjlt vrunk.

Az XML jellnyelv
Az XML technolgia egy szles krben hasznlt W3C ajnlsnak megfelel ltalnos jellnyelv, melyet elssorban adathordozsra hasznlnak. [1] nler tulajdonsggal rendelkezik, ami nagy flexibilitst biztost a programoz szmra, illetve megknnyti tovbbi technolgik definilst, szrmaztatst az XML ltal biztostott alapokbl. Ezltal olyan preczebb mkds jellnyelvek hasznlatt is lehetv teszi, mint pl. az ltalunk is alkalmazott FpML (Financial products Markup Language) ami gyakorlatilag egy szigorbb megktsekkel rendelkez piaci gyletekkel foglalkoz rszhalmaza az XML-nek.

JAXB, avagy az sszekt technolgia


A JAVA, illetve az XML programozsi komponenseket a JAXB (Java Architecture for XML Binding) technolgia segtsgvel ktttk ssze. Eme technolgia a JAVA objektumorientlt tulajdonsgt kihasznlva egy elre definilt sma alapjn objektumokk kpezi le a jellnyelv ltal lert entitsokat. Az elre definilt smrt a mr emltett XSD technolgia fog felelni, ami tovbbi, pontos megktseket szab meg a jellnyelvre, ami alapjn mr egzakt JAVA osztlyok is elllthatk fordulsi idben (compile time). Vgl az gy lefordult JAVA osztlyok egy-egy pldnynak fognak megfelelni a jellnyelvben meghatrozott elemek.

Az implementci elmleti httere


A binris fa tulajdonsgainak felhasznlsa a program sorn
Vltozk s konstansok kztt lv mveleteket egy binris fa is megvalsthat. Ezen binris fa jellemzje, hogy a level elemek fogjk reprezentlni a vltozkat s az egyes konstansokat, a tbbi nem level elem pedig az egyes mveleteket. Egy egyszer plda az elbb bemutatott binris fra:

* +
3 4
1. bra: plda egy binris fra

Ahogy az 1. brn is ltszik, a binris fa a kvetkez mveletet valstja meg: (3 + 4) 5 A feladathoz szksges binris fk kiolvassa s ptse a program futsnak s kdjnak leegyszerstse miatt rekurzv mdon trtnik. A rekurzit teht kt algoritmus: a ft felpt algoritmus s a fa rtkt kiolvas algoritmus fogja hasznlni.

A program
A program clja
A program egy (mr fentebb emltett) n. black-box mkdsnek algoritmust prblja kitallni, melynek mdszert a kvetkezkben trgyaljuk.

A programnyelv vlasztsnak oka


A program adottsgaibl addan kzenfekv volt a Java nyelv hasznlata. A Java ltalnos cl, objektumorientlt programozsi nyelv, amelyet a Sun Microsystems fejlesztett a 90-es vek elejtl kezdve egszen addig, amg a cget fel nem vsrolta az Oracle 2009-ben. 2011-ben a Java 1.7-es verzijt az Oracle gondozsban adtk ki. A Java alkalmazsokat jellemzen bjtkd formtumra alaktjk, de kzvetlenl natv (gpi) kd is kszthet Java forrskdbl. A bjtkd futtatsa a Java virtulis gppel trtnik, ami vagy interpretlja a bjtkdot vagy natv gpi kdot kszt belle, s azt futtatja az adott opercis rendszeren. Ltezik kzvetlenl Java bjtkdot futtat hardver is, az gynevezett Java processzor. A Java nyelv szintaxist fleg a C s a C++ nyelvektl rklte, viszont a Jav a sokkal egyszerbb objektummodellel rendelkezik, mint a C++. A Javascript szintaxisa s neve hasonl ugyan a Javahoz, de nincs kzvetlen kze egymshoz a kt nyelvnek. Br a nyelv neve kezdetben Oak (tlgyfa) volt, (James Gosling, a nyelv atyja nevezte gy az irodja eltt nv tlgyfrl), de ksbb kiderlt, hogy ilyen elnevezs nyelv mr ltezik, ezrt vgl Java nven vlt ismertt. A Java sz a Sun Microsystems vdjegye. Ennlfogva engedlye nlkl ms nem hasznlhatja ms ltal kifejlesztett termkek megjellsre mg pldul Java-szer stb. sszettelekben sem, mert ez a vdjegyjogosult jogaiba tkzik.

Megvalsts
Osztlyhierarchia bemutatsa
Az osztlyhierarchia bemutatsakor rdemes kett vlasztani a program mkdshez szksges, n, httr osztlyokat s a program megvalstst, azaz az algoritmusokat megvalst osztlyokat.

A program httr mkdshez szksges osztlyok a kvetkezk:

interface Element

ElementClass

Variable

Operation

2. bra: UML reprezentci

Ahogy a 2. bra is mutatja, elszr is szksgnk lesz egy Element interfszre, mely magban foglalja a binris fa cscsainak halmazt. Az Element interfszt az ElementClass osztly valstja meg. Az ElementClass tartalmazza az alap metdusokat, tbbek kzt a getter, setter metdusokat s egyb, a program mkdshez szksges lekrdezseket. Az ElementClass osztlybl kt osztly szrmazik le, mveleteket reprezentl Operation s a vltozkat reprezentl Variable osztly.

A fbb programmveleteket vgz osztlyok

Az elbb emltett tpusokat a binris fa fogja felhasznlni, melyet a BinaryTree interfszen keresztl a BinaryTreeClass osztly valst meg. A BinaryTreeClass tartalmaz egy kiolvas algoritmust, mely a rekurzi lehetsgeit kihasznlva a dja vissza az adott binris fa rtkt. Ezeket a binris fkat viszont a program sajt maga pti a bemen paramterek alapjn. Ezt a folyamatot a Builder osztly build() metdusa valstja meg. Az algoritmus mkdsrl lentebb. Ha megtrtnt a bemen paramterek alapjn az sszes, adott konstrukciban felpthet fa ltrehozsa, mr nincs ms feladat, mint megtallni azt a binris ft, melynek a kiolvasott rtke megegyezik a megadott rtkkel. Miutn megtalltuk a megfelel ft, azt kiratjuk. Kitekints

A jvben ezeket a binris fkat egy grfban fogjuk trolni, melynek az egyes cscsai egy-egy binris ft fognak azonostani. Ekkor a grfon lefuttatott tanul algoritmus segtsgvel vges idn bell meghatrozhat lesz a keresett fggvnynek megfelel fa.

Algoritmusok bemutatsa
Ahogy az osztlyhierarchia bemutatsakor mr emltettem, a program kt f algoritmust tartalmaz. Az egyikre akkor van szksg, amikor felptjk a binris ft, a msikra pedig akkor, amikor kiolvassuk az adott ft. Mind a kt algoritmus a rekurzit hasznlja fel a mkdse sorn. A binris ft felpt algoritmus A binris fa felptst, az adott fa szintjeinek szmt befolysol tnyez a bemen paramterek szma: a vltozk s a mveletek szma, tovbb ezek viszonya. Adott vltoz szmhoz megfelel mveletszm kell, hogy tartozzon. Vegynk egy egyszer pldt. Ha pldul van 3 darab vltoznk, a mveletek szma viszont 1, akkor maximum 1 szint lehet a binris fa, viszont ha a mveletek szma 2, akkor az albbi kpen bemutatott binris fa is elllthat.

* *
5 7
3. bra: egy 2 szint binris fa A mveleteket s a vltozkat is egy-egy Iterator fogja trolni: az operations s a variables nev Iterator.

Specilis esetek
Az sszes vltoz a binris fa legals szintjn helyezkedik el

* *
5 7 2 + 3

4. bra: Olyan binris fa, ahol az sszes vltoz a legals sziten helyezkedik el

Ekkor gyakorlatilag a 4.bra ltal reprezentlt frl beszlnk. Mivel minden vltoz az als szinten helyezkedik el, ezrt a szint szmbl lehet kvetkeztetni a vltozk szmra ezen tpus binris fk esetn. A vltozk s a szintek szmnak a viszonyt ekkor a kvetkez mvelet rja le: = 2^ ahol a vltozk szma pedig a szintek szma Szintek szma megegyezik a vltozk szmval Termszetesen a gykrelemet kivve. Ezen tpusra pldt az 5. bra mutat.

* *
/ * 5 7 7 7 3

5. bra: a szintek szma megegyezik a vltozk szmval Ekkor az als szinten 2 vltoz helyezkedik el, a gykr elem (0.szint) pedig termszetesen mvelet s minden tovbbi szint 1-1 vltozt tartalmaz.

A binris ft kiolvas algoritmus


A binris fa kiolvassakor mindig azt az elemet keressk a binris fban, melyre teljesl, hogy mind a kt gyereke vltoz. Ha megtalltuk ezt a szintet, akkor a szl elem rtke a kt gyerek (mint vltoz) s a szl ltal trolt opertor ltal meghatrozott rtk lesz. Ez a folyamat gy folytatdik addig, ameddig a gykr elemhez el nem rnk, azaz a gykr elem rtke is kiolvashat lesz.

A program futsnak bemutatsa egy konkrt pldn keresztl


Legyenek a vltozk s annak rtkei a kvetkezk:

A mveletek pedig az albbiak:

Ekkor az albbi binris fkat fogja felpteni a program:

* +
2 2
(2 + 2) 3 Ebben az esetben az eredmny: 12 Illetve a msik ilyen fa:

Melyet visszafejtve az albbi mveletet kapjuk:

* +
2 3 2

Melyet visszafejtve az albbi mveletet kapjuk: (2 + 3) 2 Ebben az esetben az eredny: 10 Ha konkrtan a szmunkra megfelel eredmny:

Ekkor a felptett fk kzl a msodik fa lesz az ltalunk keresett fa.

sszefoglal
Ebben a flvben teht az volt a feladat, hogy a program kpes legyen olyan egyszer mveletek kitallsra mint pldul: + vagy akr: (1 + ) Ez a fent lert mdszerekkel sikerlt megvalstani. A jvbeli cl az, bonyolultabb mveleteket is vges futsi idben vissza lehessen fejteni, illetve, hogy a program az FPML sma ltal reprezentlt adatstruktrbl kinyert rtkek alapjn futva hatrozza meg egy black box mkdst. A kvetkez flv munkja errl fog szlni.

brajegyzk
1. 2. 3. 4. 5. bra: plda egy binris fra .................................................................. 7 bra: UML reprezentci ...................................................................... 9 bra: egy 2 szint binris fa ................................................................ 10 bra: Olyan binris fa, ahol az sszes vltoz a legals sziten helyezkedik el ...... 11 bra: a szintek szma megegyezik a vltozk szmval ................................ 12

Irodalomjegyzk
Thomas H . Cormen: Algoritmusok

Podobni Katalin: Legrvidebb tkeres algoritmusok

Wikipdia: Java (programozsi nyelv) http://hu.wikipedia.org/wiki/Java_(programoz%C3%A1si_nyelv)

Infodoboz: Pnzgyi ismeretek http://penzugy.infodoboz.com/cikk/kotveny/

Siroki Lszl: Binris fk https://sites.google.com/site/sirokilaszlo/oktatas/c-programozas/binaris-fak

Wikipdia: Genetikus algoritmus http://hu.wikipedia.org/wiki/Genetikus_algoritmus

Wikipdia: Rekurzi a matematikban http://hu.wikipedia.org/wiki/Rekurzi%C3%B3#Rekurzi.C3.B3_a_matematik.C3.A1ban