Ментори:
Димитрије Д. Чвокић
Славиша Дојчиновић (CEO, ElevateBits)
Студенти:
Анђела Пантош
Армин Кочановић
Блокчејн-технологија је заснована на дистрибуираном мрежном рачунарству и комбиновању структура података, с циљем постизања веће транспарентности у раду, вођењу трансакција, и заобилажењу проблема који карактеришу централизована окружења ("уско грло" је у позицији својеврсног манипулатора). Укратко, ријеч је о начину да се формира расути дигитални и јавни записник (рачуноводствена књига у ширем смислу) што више отпоран на неовлаштену (зло)употребу. Обично се доводи у везу са криптовалутама, као што су биткоин или етереум, иако су криптовалуте у ствари примјена ове технологије. Штавише, блокчејн као идеја налази примјену у управљању ланцима снадбјевања, гласачким системима, вођењу здравства, и много чему другом.
Укратко гледано из угла структура података, у свом основном облику, блокчејн можемо представити на сљедећи начин:
блок: структура података која представља криптографски информациони контејнер са записима о трансакцијама, или било чему другом о чему желимо да водимо рачуна;
ланац: растућа листа блокова, на шта указује и сам назив (енг. blockchain – ланац блокова);
безбједност/сигурност: сваки блок садржи јединствен код (хеш-вриједност) претходног блока, што ланац блокова чини хешираним ланцем, а то умногоме отежава измјену садржаја како се иде уназад по временској оси;
јавни увид и општепозната ствар: читави умношци записника се дијеле путем мреже свим странкама, тако да свако може да буде упознат са историјом трансакција и да провјери ваљаност своје верзије записника;
самоизвршни уговори (опционо): услови склапања уговора су уткани непосредно у сам програмски код, те се извршавају чим се испуне, аутоматски, без потребе за посредником (агенцијом, општином, нотаром, итд.).
У наредним редовима навешћемо неке од примјена блокчејн-технологије, а које се не односе на децентрализоване криптовалуте:
Управљање ланцем снадбјевања. Праћење производа кроз ланац снадбјевања. Омогућује јавни увид, провјеру вјеродостојности, и смањује ризик од кријумчарења робе.
Гласачки системи. Омогућују се електронско гласање са већим степеном безбједности и транспарентности, смањујући ризик од изборних манипулација и обезбјеђујући интегритет гласачког процеса. Циљ је да се свако питање око којег треба да се колектив/друштво изјасни сведе ефикасно на референдум, што је једино математички прихватљив (фер) облик колективног одлучивања (остало је у супротности са теоремама Ароуа и Гибард-Сатервајта).
Здравство. Боље обезбјеђен приступ и рад са здравственим досијеом пацијента, стављајући фокус на приватности и интегритет података, прије свега на неизмјенљивост картона уназад.
Заштита интелектуалних права. Временско етикетирање и провјера права на интелектуалну својину као што су патенти и права на умножавање.
Инострани трансфери и плаћања. Трансфери и плаћања међу клијентима у иностранству се могу обављати брже, транспарентније, и са мањом провизијом у односу на уобичајене банковне канале.
Имајући у виду поменуте примјене, очекивано, криптовалуте су доживјеле берзански процват у посљедње вријеме. Све више и више се у трговини криптовалутама на берзама користе ботови. .
Замисао пројекта је да се осмисли демонстративни мали информациони систем који би имао улогу бота за трговину криптовалутма на различитим берзама.
Циљ:
Циљ је да се развије софтверски бот који користи историјске податке и техничке индикаторе како би корисницима давао препоруке за куповину или продају криптовалута. Бот ће разматрати дугорочне трендове и пружати сигнале на основу дефинисаних критеријума, али неће самостално вршити трансакције.
Технички захтјеви:
Изражена модуларност: Прикупљање података у стварном времену
Модул за тржишне податке: (1) Преузимање и похрана историјских података у одговарајућем облику (повољном са становишта даљег искоришћавања). Конкретно open, high, low, close цијене. (2) Прикупљање података у стварном времену (цијене, обим, капитализација, итд.). (3) Похрана сигнала "купи" и "продај". (4) Похрана допунских података добијених на основу историје, а који би требали да помогну у анализи и сигнализацији. Рецимо, за цијене, просјечна цијена или просјечна имајући у виду high и low (или нека друга варијанта).
Модул за трговачке алгоритме;
Разматрање основних техничких индикатора: (1) Индикатори тренда: EMA, MACD, Parabolic SAR (2) Индикатори моментума: RSI, Stochastic Oscillator, Rate of Change; (3) Индикатори обима: OBV, VWAP; (4) Индикатори волатилности: Bollinger Bands, Average True Range; (5) Индикатори "дисања тржишта": A/D Line, CMF
Формулисање сопствених индикатора;
Модул за сигнализацију;
Модул за руковање ризиком: (1) Управљање портфељеом, те праћење успјешности. (2) Статистичко предвиђање успјешности на основу података о досадашњој. (3) Диверзификација. (4) Спрјечавање превеликих и дугих узастопних губитака. Индикатори грамзивости.
...
Програмирање: Пајтон (или Гоу). Препорука је да се Гоу користи за други план (backend), а Пајтон за анализу и предвиђање.
Анализа података: Коришћење пакета као што су CCXT (за АПИове), TA-Lib (основну техничку анализу), PyTorch, TensorFlow, Pandas, NumPy, и Matplotlib (за сопствену анализу и визуелизацију података).
АПИ за криптоберзе:
Користити API-е популарних криптоберзи (нпр. Binance, Kraken, Coinbase) за преузимање историјских и тренутних цена.
Коришћење сигурне похране АПИ кључева.
Узимање у обзир АПИ лимита, провизија, и антиботовских регулација.
Технички индикатори:
Осмишљавање и конструкција индикатора за предвиђање кретања цена.
Формирање сигнала "купи" и "продај";
Могућност аутоматског побољшавања параметара како би се максимизовао профит (имајући у виду досадашње податке);
База података: Коришћење SQLite или друге начина за похрану историјских података о цијенама и смјерницама за куповину и продају.
GUI или CLI прочеље:
Једноставанo прочеље за приказивање сигнала кориснику.
Редовна калкулација метрике као што је, рецимо, Шарпов однос, стопа добити, укупни поврат и сл.
Аларми уколико се уоче (или предвиде) битна трговачка дешавања, или ако бот престане са радом.
Функционалности:
Прикупљање података: Бот преузима податке са криптоберзи (цена, волумен и слично) и ажурира базу података у стварном времену.
Анализа, предвиђање, и сигнализација: Бот врши анализу на основу дугорочних техничких индикатора и генерише сигнале "купи" или "продај". Поред тога, бот у реланом времену даје предвиђање могуће добити на основу праћења његових индикатора и текућег учинка његових сигнала.
Извештавање: Корисник добија обавјештења или комплетне извештаје о препорукама у одређеним временским интервалима.
Историјски подаци и симулација: Могућност тестирања бота на историјским подацима ради провере учинковитости (Backtrader пакет).
Дугорочни фокус:
Бот ће бити конфигурисан да анализира податке у на дуже временске стазе (нпр. дневни, недељни, па и мјесечни графикони) како би корисницима дао дугорочне индикације за трговину, уместо краткорочних спекулативних препорука.
Процјена резултата:
Пројекат би требало да се заврши демонстрацијом бота који генерише препоруке за куповину или продају, на основу унапред дефинисаних параметара и историјских података.
Примјер радног тока (угрубо): (1) Освјежавање историјских података; (2) Прорачуни који се односе на допунске цјеновне карактеристике; (3) Предвиђање цијена на основу статистике, ВНМа, и индикатора; (4) Сигнализација; (5) Предвиђање успјешности; (6) Повратна информација о испуњењу сугестија које је дао бот (да ли смо куповали или продавали нешто); (7) Разматрање потенцијалних ризика по учињеном кораку; (8) Прорачуни који се односе на побољшање стратегије на основу постојећих информација.
Овај пројекат би омогућио студентима да савладају основне концепте трговања криптовалутама, рада са API-јима и примене техничке анализе, као и рад са базама података и обрадом великих сетова података.
Саставити SRS. Имати у виду да је циљ пројектног задатка готов функционалан производ, али демонстративан! Ништа више од тога! Стога, треба бити обазрив да се у састављању SRS-a не оде далеко, превише у ширину, у разноразне варијанте и детаље, у такорећи мегаломански подухват који превазилази наше снаге. С друге стране, не треба се рад свести на нешто банално, нити нешто што је у нивоу испитног задатка. Такође, у састављању SRS-a имати превасходно у виду тестирање (ТDD). (3 бода)
Одабрати с обзиром на међусобна познанства и ресурсе са којима се располаже одговарајући модел развоја софтвера. (1 бод)
Саставити на основу одабраног модела план рада (a.k.a. roadmap) и окачити га на гит-хаб. (2 бод)
Програмирати према SRS-у. Сваку завршену цјелину према одабраном моделу развоја испратити објавама унутар тима. Другим ријечима, објаве су својеврсни записници испуњавања плана рада, као и разматрања колико је план добар, да ли је шта поребно мијењати у самој идеји, у спецификацији, у плану рада, итд. (14 бодова)
За сваку фазу (према одабраном моделу) извршити одговарајуће тестирање. (10 бодова)