Uvod

V okviru mentorstev zaključnih del sem na voljo za naslednja vsebinska področja:

  • semantični splet,
  • relacijske in NoSQL podatkovne baze,
  • merljivost kakovosti informacij,
  • razvoj naprednih spletnih aplikacij,
  • analiza finančnih informacij.

Posamezne teme so podrobneje predstavljene v nadaljevanju po posameznih stopnjah:

1. stopnja, UNI, BSc

Podrobnosti v zvezi s pripravo zaključnega dela na 1. stopnji se nahajajo na spletni strani fakultete, kjer najdete pravilnik, navodila za izdelavo, vzorec, izjavo o avtorstvu idr.

Trenutno so na voljo proste teme:

naslednje teme pa so zasedene :

Sistem za samodejno trgovanje finančnih inštrumentov

Implementacija naprednega trgovalnega sistema v okolju R z naslednjimi funkcionalnimi zahtevami:

  • priprava in čiščenje podatkov (pridobivanje finančnih podatkov, obvladovanje manjkajočih podatkov, vpliv dividend in razdelitev delnic itd.),
  • indikatorji (prekrivanje, osciliranje, kopičenje, vzorci itd),
  • pravila,
  • simulacija in backtesting (uporaba različnih metrik (Sharpe Ratio, Maximum Drawdown Ratio, Partial Moment Ratio idr.) povezanih s tveganjem in donosom),
  • optimizacija parametrov (npr. iskanje vzorcev, Nelder-Mead itd.).
Gibanje vrednosti finančnih inštrumentov

Slika 1: Gibanje vrednosti finančnih inštrumentov

Razvoj naprednega trgovalnega sistema v okolju R je podrobno opisan v Automated Trading with R: Quantitative Research and Platform Development (Conlan 2016).

Opis obstoječega sistema QSTrader in opis številnih naprednih metod za finančno trgovanje pa je na voljo tudi v Advanced Algorithimc Trading - Bayesian Statistics, Time Series Analysis and Machine Learning for Profitable Trading Strategies (Halls-Moore 2017). Predstavljene so različne metode (npr. ARIMA + GARCH, CADF, Kalman filter itd.), kjer bi bilo izbrane smiselno implementirati.

V okviru diplomske naloge bi bilo potrebno razviti takšen sistem za samodejno trgovanje finančnih inštrumentov in njegovo učinkovitost preveriti na manj izpostavljenih trgih (npr. LJSE1, HOSE2 ipd.) v okviru primerjave s strategijo Buy-and-Hold.

Na FRI je bilo zagovorjenih že kar nekaj diplomskih del (Gregorc 2018; Kovač 2018; Rebernik 2017; Fortuna 2016; Rutar 2016; Brvar 2015; Turšič 2014; Klepič 2013; Brvar 2012) z omenjenega področja, zato jih je potrebno pred začetkom dela podrobno pregledati.

Poizvedovanje po porazdeljenih povezanih podatkov

Na spletu je na voljo ogromna količina povezanih podatkov. Ali jih lahko neposredno uporabljamo v dejanskih aplikacijah? SPARQL dostopne točke so drage rešitve na strani strežnika in niso vedno na voljo za vse nabore podatkov. Prenos celotnih podatkovnih zbirk pa je draga rešitev za odjemalca in name ne omogočajo neposrednega poizvedovanja preko spleta.

S pomočjo delcev povezanih podatkov (LDF3) želimo raziskati prerazporeditev obremenitve pri poizvedovanju med odjemalci in strežniki (glej sliko 2). Pri tem poskušamo izmeriti vpliv takšnega delovanja na odjemalce, strežnike in predpomnilnike.

Vse spletne vmesnike, ki ponujajo trojčke RDF, si lahko predstavljamo kot ponudnike delcev vzorcev trojčkov

Slika 2: Vse spletne vmesnike, ki ponujajo trojčke RDF, si lahko predstavljamo kot ponudnike delcev vzorcev trojčkov

Avtorji so pristop (Verborgh 2018) zelo dobro dokumentirali, na voljo je tudi več implementacij na strani strežnika, za gostovanje delcev povezanih podatkov, in na strani odjemalca. Eden izmed zanimivih odjemalcev, ki predstavlja modularno ogrodje za poizvedovanje po povezanih podatkih na spletu, je tudi Comunica (Ghent University 2018).

Predhodna magistrska naloga (Robas and Lavbič 2018) je predlagal tudi izboljšava enega izmed algoritmov za porazdeljeno poizvedovanje po povezanih podatkih.

V okviru te diplomske naloge se pričakuje implementacija modularnega sistema za poizvedovanje po porazdeljenih povezanih podatkih s pomočjo obstoječih odprtokodnih rešitev na strani strežnika in odjemalca.

Prednosti in slabosti pristopa brez strežnika

Pri razvoju API-jev v okolju Node.js pogosto uporabimo obstoječa ogrodja, ki nam olajšajo delo. Eno najbolj priljubljenih je zagotovo Express.js, ki nam omogoča enostaven razvoj mikrostoritev, ki jih lahko nato gostimo v oblaku ali v okolju Docker. Obstaja pa pri razvoju programske opreme tudi pristop brez strežnika4, kjer izdelamo aplikacijo, sestavljeno iz mikrostoritev, ki se izvaja kot odziv na dogodke, se samodejno prilagaja in obračunava samo takrat, ko se dejansko izvaja. To močno znižua skupne stroške vzdrževanja aplikacij, kar nam omogoča, da hitreje zgradimo več programske logike.

Eno izmed bolj priljubljenih ogrodij je Node.js ogrodje serverless (Serverless Inc. 2019), ki uporablja najnovejše dogodkovno usmerjene storitev, kot so AWS Lambda, Google Cloud Functions idr.

V prispevku (Woodhead 2018) avtor kritično predstavi svoje izkušnje pri razvoju API-jev v okolju Node.js z uporabo Express.js in Serverless. To lahko uporabite za vaše izhodišče pri pripravi kritične primerjave omenjenih pristopov na praktičnem primeru, kjer izmerite učinke enega in drugega pristopa.

Razvoj dodatnega modula za pametno ogledalo

Izdelava poceni pametnega ogledala s pomočjo RPi je zelo zanimiv projekt, kjer obstaja veliko dodatnih modulov, ki jih je razvila odprtokodna skupnost razvijalcev. Najbolj zanimive so opisane v članku The 6 Best Raspberry Pi Smart Mirror Projects You Can Make (Patkar 2018), postopek izdelave pa je mogoče najti v Make Your Own Smart Mirror for Under $80 Using Raspberry Pi (Piratla 2019). Najbolj obetaven je večkrat nagrajeni projekt MagicMirror2 (Teeuw 2019), ki ima tudi največjo podporo skupnost in zelo modularno zasnovo pri izdelavi dodatnih modulov.

Primer pametnega ogledala

Slika 3: Primer pametnega ogledala

Vgrajena varnostna zaščita API dostopne točke v Node.js

Na trgu obstaja kar nekaj implementacij za celostno obvladovanje API-jev, ki poskrbijo za omejevanje dostopa do API dostopne točke, obvladovanje žetonov za dostop, analitiko idr. Med njimi so tudi številne odprtokodne rešitve (Doerrfeld 2018):

  • API Umbrella (National Renewable Energy Laboratory 2019),
  • Gravitee.io (GraviteeSource 2019),
  • APIman.io (Red Hat, Inc. 2019a),
  • WSO2 API Manager (WSO2 2019),
  • Kong Community Edition (Kong Inc. 2019),
  • Tyk.io (Tyk Technologies 2019),
  • Swagger (SmartBear Software 2019),
  • Apigility (Zend 2019),
  • Fusio (Apioo 2019),
  • API Axle (Exicon 2019),
  • Repose (Rackspace 2019)
  • idr.

V enem izmed prejšnjih diplomskih del (Šnuderl 2018) je nastala tudi prilagojena rešitev za omejevanje dostopa do API-jev v okolju z zelo velikim številom dostopa.

V okviru te diplomske naloge je potrebno razviti nov Node.js modul, kjer se z vidika funkcionalnosti zgledujemo po prej omenjenih odprtokodnih rešitvah. Cilj novega predloga je enostavna vključitev v obstoječo Express Node.js aplikacijo, kjer ni potrebno uporabiti ločenih komponent, kot so prej omenjene odprtokodne rešitve.

Podpreti je treba naslednje funkcionalnosti:

  • avtentikacijo, kot je npr. Passport.js (Hanson 2019),
  • omejevanje dostopa glede na IP naslov, uporabnika in po storitvi ter operaciji, kot je npr. Express Rate Limit (Friedly 2018),
  • medpomnjenje vsebine,
  • obvladovanje žetonov, kot je npr. Keycloak (Red Hat, Inc. 2019b) in
  • enostavno analitiko.

Pri razvoju je treba upoštevati OWASP varnostna priporočila (OWASP Foundation 2017), kjer se omenjena rešitev predvsem nanašana na drugo najbolj pogosto varnostno tveganje neustreznega preverjanja istovetnosti identitete.

Izdelava prototipa porazdeljene Solid aplikacije

Solid (The Solid Project 2017) (izpeljano iz “Social Linked Data”) je množica predlogov in orodij za izgradnjo porazdeljenih socialnih aplikacij, ki temeljijo na načelih povezanih podatkov. Solid je modularen in razširljiv ter je v največji meri odvisen od obstoječih standardov in protokolov organizacije W3C.

Celoten pristop je na voljo v odprtokodni obliki (The Solid Project 2018a), z vsemi pripadajočimi komponentami. Specifikacija (The Solid Project 2019) vključuje opis vseh predvidenih komponent Solid aplikacije, in sicer identiteta, profili, avtentikacija, avtorizacija in nadzor dostopa, predstavitev vsebine, dostop do virov, protokoli socialnega spleta, priporočila za implementacijo na strani strežnika (The Solid Project 2018b) in odjemalca, primer, trenutne implementeacije itd.

V okviru diplomske naloge bi bilo potrebno izdelati prototip aplikacije, ki temelji na priporočilih iz Solid specifikacije.

Implementacija arhitekture za spletno označevanje

S strani organizacije W3C v okviru delovne skupine za spletnih oznake so pripravljena priporočila za označevanje spletnih dokumentov (glej sliko 4), kjer je ključna ideja, da se metapodatki hranijo neodvisno in ločeno od podatkov na spletni strani.

**Arhitektura spletnih oznak** [@W3C-Web-Annotation-Architecture]

Slika 4: Arhitektura spletnih oznak (W3C 2017a)

Pri tem je omogočen prikaz javnih in zasebnih komentarjev na določeni strani ter omogočeno sodelovanje uporabnikov v zvezi z določeno vsebino. Gre za nadgradnjo ideje, ki je že prisotna npr. na novičarskih spletnih portalih, kjer lahko uporabniki komentirajo novice.

Najnovejši W3C predlog priporoča podatkovni model (W3C 2017b), slovar (W3C 2017d) in protokol (W3C 2017c), ki omogoča takšno funkcionalnost na poljubni spletni strani. Obstaja tudi že nekaj obstoječih implementacij, ki jih je mogoče najti na wikiju (Wikipedia 2018), kot sta npr. hypothes.is (The Hypothesis project 2019) in Annotator (The Annotator project 2019).

V okviru diplomske naloge je treba pripraviti kritični pregled rešitev omenjenega W3C priporočila in na podlagi obstoječih implementacij izbrati, prilagoditi in implementirati Proof-of-Concept (PoF), kjer demonstrirate praktično vrednost omenjenega koncepta na spletni strani ter omogočite enostavno interacijo v poljubno spletišče. Predlagano rešitev na koncu tudi kritično ovrednotite.

2. stopnja, MAG, MSc

Podrobnosti v zvezi s pripravo zaključnega dela na 2. stopnji se nahajajo na spletni strani fakultete, kjer najdete prijavo teme, vlogo za odobritev teme, navodila za pripravo, izdelavo in zagovor, vzorec idr.

Trenutno ni na voljo prostih tem,

naslednje teme pa so zasedene :

Uporaba tehnologije NoSQL za učinkovitejše izračunavanje regulatornih poročil v zavarovalništvu

Z namenom enotnega poročanja in obvladovanja tveganj vlagateljev, je bila na področju zavarovalništva nedavno sprejeta evropska direktiva, imenovana IFRS17. Ta predvideva poenotena poročila o posameznih finančnih instrumentih. Tako bodo lahko investitorji brez težav primerjali dve popolnoma različni naložbi in imeli informacije o tem, katera je boljša. Za zavarovalnice ta poročila niso bistvenega pomena – omogočajo jim delovanje na trgu (ker so obvezna) in primerjavo s konkurenco, ne omogočajo pa boljšega upravljanja s tveganji. Izvajanje računov na obstoječih sistemih nevarno posega v delovanje za zavarovalnico bistvenih sistemov. Namestitev novih sistemov, ki omogočajo izračun te količine podatkov v primernem času, pa predstavlja dodaten strošek, ki zavarovalnici ne predstavlja izboljšave njenega poslovanja in ga zato ta smatra kot dajatev. S tega razloga iščemo načine, kako zmanjšati stroške, potrebne za zadovoljitev regulacijskih zahtev.

Glavni prispevek magistrske naloge je razvoj prototipa rešitve, ki bo omogočal hitro in učinkovito nalaganje podatkov, ki jih zavarovalnice potrebujejo za obdelavo in pripravo poročil. Prototip bo konkuriral že obstoječim rešitvam in bo omogočal kreiranje poročil na cenovno ugodni strojni opremi, kar si tako zavarovalnice, kot ostale ustanove, ki se soočajo s podobnimi problemi, želijo. Predlagano rešitev bo moč razširiti in uporabiti tudi na drugih področjih s podobnimi lastnosti - kjer se podatki obdelujejo na strežniku, shranjujejo pa se v nekih ločenih celotah in ne nujno v tabelah.

Reference

Apioo. 2019. “Fusio.” https://www.fusio-project.org/.

Brvar, Anže. 2012. “Strojno učenje in razvoj sistema za avtomatsko trgovanje na valutnem trgu.” Diploma, Univerza v Ljubljani, Fakulteta za računalništvo in informatiko. http://eprints.fri.uni-lj.si/1816.

———. 2015. “Elektronsko trgovanje na valutnem trgu s pomočjo Twitterja.” Diploma, Univerza v Ljubljani, Fakulteta za računalništvo in informatiko. http://eprints.fri.uni-lj.si/3217.

Conlan, Christopher. 2016. Automated Trading with R: Quantitative Research and Platform Development. 1st ed. Berkely, CA, USA: Apress. https://www.apress.com/gp/book/9781484221778.

Doerrfeld, Bill. 2018. “You Need Api Management Help: 11 Open-Source Tools to Consider.” November 1. https://techbeacon.com/you-need-api-management-help-11-open-source-tools-consider.

Exicon. 2019. “ApiAxle.” http://apiaxle.com.

Fortuna, Rok. 2016. “Sistem za avtomatizirano trgovanje z uporabo strojnega učenja, rudarjenja podatkovnih tokov in tehnične analize trgovanja.” Diploma, Univerza v Ljubljani, Fakulteta za računalništvo in informatiko. http://eprints.fri.uni-lj.si/3552.

Friedly, Nathan. 2018. “Express Rate Limit.” https://www.npmjs.com/package/express-rate-limit.

Ghent University. 2018. “Comunica.” http://comunica.linkeddatafragments.org/.

GraviteeSource. 2019. “Gravitee.io.” https://gravitee.io.

Gregorc, Anže. 2018. “Uporaba strojnega učenja za kvantitativne trgovalne strategije.” Diploma, Univerza v Ljubljani, Fakulteta za računalništvo in informatiko. http://eprints.fri.uni-lj.si/4166.

Halls-Moore, Michael L. 2017. Advanced Algorithimc Trading - Bayesian Statistics, Time Series Analysis and Machine Learning for Profitable Trading Strategies. 7th ed. https://www.quantstart.com/advanced-algorithmic-trading-ebook.

Hanson, Jared. 2019. “Passport.js.” http://www.passportjs.org/.

Klepič, Igor. 2013. “Tehnična analiza gibanja valutnega trga in algoritmi trgovanja.” Diploma, Univerza v Ljubljani, Fakulteta za računalništvo in informatiko. http://eprints.fri.uni-lj.si/2216.

Kong Inc. 2019. “Kong Community Edition (CE).” https://konghq.com/kong.

Kovač, Urban. 2018. “Primerjava najpogosteje uporabljenih odprtokodnih sistemov za e-trgovanje.” Diploma, Univerza v Ljubljani, Fakulteta za računalništvo in informatiko. http://eprints.fri.uni-lj.si/4089.

National Renewable Energy Laboratory. 2019. “API Umbrella.” https://apiumbrella.io.

OWASP Foundation. 2017. “OWASP Top 10 Application Security Risks - 2017.” https://www.owasp.org/index.php/Top_10-2017_Top_10.

Patkar, Mihir. 2018. “The 6 Best Raspberry Pi Smart Mirror Projects You Can Make.” December 29. https://www.makeuseof.com/tag/6-best-raspberry-pi-smart-mirror-projects-weve-seen-far/.

Rackspace. 2019. “Repose.” http://www.openrepose.org.

Rebernik, Nejc. 2017. “Razvoj sistema za avtomatsko trgovanje na borzi.” Diploma, Univerza v Ljubljani, Fakulteta za računalništvo in informatiko. http://eprints.fri.uni-lj.si/3940.

Red Hat, Inc. 2019a. “APIman.io.” http://www.apiman.io.

———. 2019b. “Keycloak - Open Source Identity and Access Management.” https://www.keycloak.org.

Robas, Jan, and Dejan Lavbič. 2018. “Poizvedovanje Po Povezanih Podatkih S Porazdelitvijo Dela Med Strežnikom in Odjemalcem.” Uporabna Informatika 26 (2): 54–64. https://research.lavbic.net/2018/UI/.

Rutar, Sašo. 2016. “Empirična evalvacija procesa avtomatske klasifikacije sentimenta na finančni domeni.” Diploma, Univerza v Ljubljani, Fakulteta za računalništvo in informatiko. http://eprints.fri.uni-lj.si/3388.

Serverless Inc. 2019. “Serverless.” https://serverless.com.

SmartBear Software. 2019. “Swagger Open Source Tools.” https://swagger.io/tools/open-source.

Šnuderl, Matej. 2018. “Omejevanje dostopa pri obvladovanju API-jev.” Diploma, Univerza v Ljubljani, Fakulteta za računalništvo in informatiko. http://eprints.fri.uni-lj.si/4333.

Teeuw, Michael. 2019. “MagicMirro2.” https://magicmirror.builders/.

The Annotator project. 2019. “Annotator.” http://annotatorjs.org/.

The Hypothesis project. 2019. “Hypothes.is.” https://web.hypothes.is/.

The Solid Project. 2017. “Solid.” https://solid.mit.edu.

———. 2018a. “Solid.” https://github.com/solid/solid.

———. 2018b. “Solid Platform.” https://github.com/solid/solid-platform.

———. 2019. “Solid Specification.” https://github.com/solid/solid-spec.

Turšič, Samo. 2014. “Trgovalni sistem nad digitalno valuto Bitcoin.” Diploma, Univerza v Ljubljani, Fakulteta za računalništvo in informatiko. http://eprints.fri.uni-lj.si/2656.

Tyk Technologies. 2019. “Tyk.” https://tyk.io.

Verborgh, Ruben. 2018. “Linked Data Fragments.” http://linkeddatafragments.org.

W3C. 2017a. “Web Annotation Architecture.” February 23. https://www.w3.org/annotation/diagrams/annotation-architecture.svg.

———. 2017b. “Web Annotation Data Model.” February 23. https://www.w3.org/TR/annotation-model/.

———. 2017c. “Web Annotation Protocol.” February 23. https://www.w3.org/TR/annotation-protocol/.

———. 2017d. “Web Annotation Vocabulary.” February 23. https://www.w3.org/TR/annotation-vocab/.

Wikipedia. 2018. “Web Annotation.” October 16. https://en.wikipedia.org/wiki/Web_annotation.

Woodhead, William. 2018. “Node.js Apis on Aws - the Pros and Cons of Express Versus Serverless.” April 16. https://medium.freecodecamp.org/node-js-apis-on-aws-the-pros-and-cons-of-express-versus-serverless-a370ab7eadd7.

WSO2. 2019. “WSO2 Api Manager.” https://wso2.com/api-management.

Zend. 2019. “Apigility.” https://apigility.org.


  1. LJubljana Stock Exchange (LJSE)

  2. HO Chi Minh City Stock Exchange (HOSE)

  3. angl. Linked Data Fragments (LDF)

  4. angl. serverless