Будь ласка, використовуйте цей ідентифікатор, щоб цитувати або посилатися на цей матеріал: https://er.chdtu.edu.ua/handle/ChSTU/8840
Повний запис метаданих
Поле DCЗначенняМова
dc.contributor.advisorГолуб, Сергій Васильович-
dc.contributor.authorКосточка, Даніїл Віталійович-
dc.date.accessioned2026-03-19T12:30:05Z-
dc.date.available2026-03-19T12:30:05Z-
dc.date.issued2025-06-07-
dc.identifier.urihttps://er.chdtu.edu.ua/handle/ChSTU/8840-
dc.description.abstractАНОТАЦІЯ Косточка Данило Віталійович, кваліфікаційна робота бакалавра на тему «Програмна реалізація синтезатора прогнозних моделей». Напрям підготовки 121 "Інженерія програмного забезпечення", ЧДТУ, Черкаси 2025. Метою виконання кваліфікаційної роботи бакалавра є програмна реалізація агентного синтезатора прогрнозних моделей з використанням алгоритмів машинного навчання та аналізу великих даних. Головні завдання: − визначити існуючі методи та засоби виконання завдання, аналіз результатів та формалізація завдання проектування; − визначення та використання технології проектування програмного комплексу; − визначення та використання технології конструювання програмного комплексу; − визначення та використання технології тестування програмного комплексу; − виявлення особливостей впровадження та супроводження програмного продукту. Для розробки програмного комплексу для синтезу прогнозних моделей виконано аналіз предметної області, розроблено логічну структуру системи, спроектовано інтерфейс користувача, використано компоненти Python та бібліотеки для роботи з великими даними, створено базу даних, проведено модульне, інтеграційне, системне та приймальне тестування. Об'єктом роботи є процес проектування, конструювання, тестування програмного комплексу для синтезу прогнозних моделей.uk_UA
dc.description.abstractANNOTATION D.V. Kostochka, Bachelor's thesis on "Software implementation of a predictive model synthesizer". Field of study 121 "Software Engineering", ChSTU, Cherkasy, 2025. The purpose of the bachelor's qualification work is the software implementation of an agent synthesizer of predictive models using machine learning algorithms and big data analysis. Main tasks: − determine existing methods and means of task execution, analyze results, and formalize the design task; − identify and utilize technologies for designing the software complex. − identify and utilize technologies for constructing the software complex. − identify and utilize technologies for testing the software complex. − identify features of implementation and maintenance of the software product. To develop the software complex for cryptocurrency rate forecasting, an analysis of the subject area was conducted, the logical structure of the system was developed, the user interface was designed, Python components and libraries for big data processing were used, a database was created, and module, integration, system, and acceptance testing were conducted. The object of the work is the process of designing, constructing, and testing the software complex for cryptocurrency rate forecasting.uk_UA
dc.language.isoukuk_UA
dc.subjectПРОГНОЗУВАННЯuk_UA
dc.subjectПРОГНОЗУЮЧИЙ ФІЛЬТРuk_UA
dc.subjectЧАСОВИЙ РЯДuk_UA
dc.subjectІСТОРИЧНІ ДАНІuk_UA
dc.subjectПРОГРАМНЕ ЗАБЕЗБПЕЧЕННЯuk_UA
dc.subjectFORECASTINGuk_UA
dc.subjectFORECAST FILTERuk_UA
dc.subjectTIME SERIESuk_UA
dc.subjectHISTORICAL DATAuk_UA
dc.subjectSOFTWAREuk_UA
dc.titleПрограмна реалізація синтезатора прогнозних моделейuk_UA
dc.typeBachelor Thesisuk_UA
Розташовується у зібраннях:121 Інженерія програмного забезпечення (Інженерія програмного забезпечення)

Файли цього матеріалу:
Файл Опис РозмірФормат 
кваліфікаційна робота бакалавра Косточка Даніїл Віталійович.pdf
  Restricted Access
2.58 MBAdobe PDFПереглянути/Відкрити    Запит копії


Усі матеріали в архіві електронних ресурсів захищено авторським правом, усі права збережено.

Extracted text
1 
 
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ 
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ 
Факультет інформаційних технологій і систем 
Кафедра програмного забезпечення автоматизованих систем 
ПОЯСНЮВАЛЬНА ЗАПИСКА 
до кваліфікаційної роботи 
бакалавра 
на тему:  «Програмна реалізація синтезатора прогнозних моделей» 
Виконав: студент 4 курсу, групи ПЗ-2104  
спеціальності     
F2 «Інженерія програмного забезпечення» 
(шифр і назва) 
Студент                 Косточка Д. В.  
(прізвище та ініціали) 
Керівник                   Голуб С. В.   
(прізвище та ініціали) 
Рецензент                                                 .  
(прізвище та ініціали) 
Черкаси 2025 
  
  
2 
 
 
                                Черкаський державний технологічний університет                                           
.. 
повне найменування вищого навчального закладу 
Факультет  інформаційних технологій і систем   . 
Кафедра   програмного забезпечення автоматизованих систем   . 
Освітній рівень  бакалавр    
Спеціальність  121 «Інженерія програмного забезпечення»    
Освітня програма Інженерія програмного забезпечення   . 
  
ЗАТВЕРДЖУЮ  
Зав. кафедри ПЗАС, професор 
 __ Голуб С.В. ________  
«___» _______________ 2025 року  
  
З А В Д А Н Н Я НА КВАЛІФІКАЦІЙНУ РОБОТУ СТУДЕНТУ  
   Косточці Даніїлу Віталійовичу    
(прізвище, ім’я, по батькові)  
1. Тему проекту (роботи) Програмна реалізація синтезатора прогнозних моделей  
Керівник проекту (роботи) Голуб Сергій Васильович д.т.н., професор    
(прізвище, ім’я , по батькові, науковий ступінь, вчене звання)  
Затверджені наказом Черкаського державного технологічного університету від « 26 » 
лютого 2025 року №60/04  
2. Строк подання студентом проекту (роботи) 31 травня 2025  
3. Вхідні дані до проекту (роботи) стандарти програмного забезпечення; процеси 
управління; вимоги до проекту; календарне планування проекту; управління ризиками 
проекту; управління ресурсами 
4. Зміст розрахунково-пояснювальної записки (перелік питань, які потрібно розробити) 
Вступ;  
Існуючі методи та засоби розв’язання поставлених завдань;   
Впровадження результатів досліджень у практику проектування програмного забезпечення  
інформаційних систем;    
Розробка та тестування програмного забезпечення;    
Висновки  . 
Список використаних джерел;    
Додатки    
5. Перелік графічного матеріалу (з точним зазначенням обов’язкових робіт проекту);  
Слайд 1; Слайд 2; Слайд 3; Слайд 4; Слайд 5; Слайд 6; Слайд 7; Слайд 8; Слайд 9; Слайд 
10;    
Слайд 11; Слайд 12; Слайд 13; Слайд 14; Слайд 15; Слайд 16; Слайд 17; Слайд 18;    
 
 Дата видачі завдання 02 грудня 2024 р. 
3 
 
КАЛЕНДАРНИЙ ПЛАН  
 Строк виконання 
етапів  
№  
Назва етапів випускної роботи  кваліфікаційної Примітки  
п/п  
роботи  
 1  Постановка задачі  05.12.2024 виконано  
 2  Підготовка завдання  13.12.2024  виконано  
 3  Погодження завдання  16.12.2024  виконано  
 4  Затвердження завдання  19.02.2025  виконано  
   Основна стадія      
 1  Підбір матеріалів  27.02.2025  виконано  
 2  Аналіз шляхів вирішення поставленої 04.02.2025  виконано  
задачі  
 3  Розрахунок основних параметрів 10.03.2025  виконано  
роботи  
 4  Вибір кінцевого варіанту проектного 17.03.2025  виконано  
рішення  
 5  Оформлення первісної редакції роботи  25.03.2025  виконано  
   Заключна стадія      
 1  Узгодження прийнятих проектних 31.04.2025  виконано  
рішень з керівником  
 2  Оформлення пояснювальної записки 13.05.2025 виконано  
роботи в кінцевій редакції  
 3  Попередній захист роботи  15.05.2025  виконано  
 4  Затвердження роботи  02.06.2025  виконано  
 5  Рецензування роботи  03.06.2025  виконано  
 6  Захист роботи  04.06.2025  виконано  
    
Студент  _____________________  Косточка Д.В.  
    (підпис)      (прізвище та 
  ініціали)  
Керівник роботи  _____________________  Голуб С. В.  
   (прізвище та 
  (підпис)    ініціали)  
 
  
4 
 
 
АНОТАЦІЯ  
Косточка Данило Віталійович, кваліфікаційна робота бакалавра на тему  
«Програмна реалізація синтезатора прогнозних моделей». Напрям підготовки  
121 "Інженерія програмного забезпечення", ЧДТУ, Черкаси 2025.  
Метою виконання кваліфікаційної роботи бакалавра є програмна 
реалізація агентного синтезатора прогрнозних моделей з використанням  
алгоритмів машинного навчання та аналізу великих даних.  
Головні завдання:  
− визначити існуючі методи та засоби виконання завдання, аналіз  
результатів та формалізація завдання проектування;  
− визначення та використання технології проектування програмного  
комплексу;  
− визначення та використання технології конструювання програмного  
комплексу;  
− визначення та використання технології тестування програмного  
комплексу;  
− виявлення особливостей впровадження та супроводження 
програмного  продукту.  
Для розробки програмного комплексу для синтезу прогнозних моделей 
виконано аналіз предметної області, розроблено логічну  структуру системи, 
спроектовано інтерфейс користувача, використано компоненти Python та 
бібліотеки для роботи з великими даними, створено базу  даних, проведено 
модульне, інтеграційне, системне та приймальне тестування.  
Об'єктом роботи є процес проектування, конструювання, тестування  
програмного комплексу для синтезу прогнозних моделей.  
Ключові слова. ПРОГНОЗУВАННЯ,  ПРОГНОЗУЮЧИЙ ФІЛЬТР, 
ЧАСОВИЙ РЯД, ІСТОРИЧНІ ДАНІ, ПРОГРАМНЕ  ЗАБЕЗБПЕЧЕННЯ. 
  
5 
 
ANNOTATION  
D.V. Kostochka, Bachelor's thesis on "Software implementation of a 
predictive model synthesizer". Field of study 121 "Software Engineering", ChSTU, 
Cherkasy, 2025.  
The purpose of the bachelor's qualification work is the software 
implementation of an agent synthesizer of predictive models using machine 
learning algorithms and big data analysis. 
 Main tasks:  
− determine existing methods and means of task execution, analyze results, 
and  formalize the design task;  
− identify and utilize technologies for designing the software complex. − 
identify and utilize technologies for constructing the software complex. − 
identify and utilize technologies for testing the software complex. − identify 
features of implementation and maintenance of the software product. To 
develop the software complex for cryptocurrency rate forecasting, an 
analysis   
of the subject area was conducted, the logical structure of the system was developed, 
the  user interface was designed, Python components and libraries for big data 
processing  were used, a database was created, and module, integration, system, and 
acceptance  testing were conducted.  
The object of the work is the process of designing, constructing, and testing 
the  software complex for cryptocurrency rate forecasting.  
Keywords: FORECASTING, FORECAST FILTER,  TIME SERIES, 
HISTORICAL DATA, SOFTWARE. 
  
6 
 
ЗМІСТ 
ПЕРЕЛІК УМОВНИХ СКОРОЧЕНЬ І ПОЗНАЧЕНЬ ................................ 8 
ВСТУП ............................................................................................................ 9 
РОЗДІЛ 1. ІСНУЮЧІ МЕТОДИ ТА ЗАСОБИ РОЗВ’ЯЗАННЯ  
ПОСТАВЛЕНИХ ЗАВДАНЬ. .....................................................................11 
1.1 Аналіз наукової та технічної інформації ..........................................11 
1.2 Актуальність задачі побудови програмного комплексу з  синтезу 
прогнозних моделей ..................................................................................11 
1.3 Аналіз існуючих програмних засобів вирішення завдання  
прогнозування ...........................................................................................12 
1.4 Методи прогнозування та засоби аналізу часових рядів ................14 
Висновки до розділу 1 ..............................................................................22 
РОЗДІЛ 2. ВПРОВАДЖЕННЯ РЕЗУЛЬТАТІВ ДОСЛІДЖЕНЬ У  
ПРАКТИКУ ПРОЕКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ  
ІНФОРМАЦІЙНИХ СИСТЕМ ...................................................................22 
2.1.1 Предметна область моделювання. ..............................................24 
2.1.2 Елементи моделювання предметної області ..............................26 
2.2.1 Формування вимог до програмного забезпечення. Первинні і 
детальні  вимоги. Вимоги замовника і розробника. Функціональні та 
нефункціональні  вимоги ......................................................................29 
2.2.2 Формування вимог за допомогою діаграми прецедентів .........32 
2.3 Проектування логічної структури програмного комплексу ...........32 
2.3.1 Діаграми класів .............................................................................33 
2.3.2 Діаграми пакетів ...........................................................................38 
2.4 Архітектурне проектування ...............................................................40 
2.4.2 Розгортання програмної системи на апаратних засобах. Діаграма  
розгортання .............................................................................................43 
2.5 Моделювання поведінки системи .....................................................44 
2.5.1 Діаграма діяльності .......................................................................44 
2.5.2 Діаграма послідовності ................................................................46 
2.5.3 Діаграма комунікації ....................................................................49 
2.5.4 Діаграма скінченого автомату .....................................................50 
3.1.2 Опис структурної (функціональної) схеми ................................57 
7 
 
3.1.3 Опис логічної схеми системи ......................................................59 
3.1.4 Розробка бази даних .....................................................................62 
3.1.5 Розробка інтерфейсу користувача ...............................................68 
3.2.2 Інтеграційне тестування ...............................................................75 
3.2.3 Системне тестування ....................................................................78 
3.2.4 Приймальне тестування ...............................................................79 
3.3 Приклади впровадженого програмного комплексу ........................81 
Висновки до третього розділу .................................................................84 
ВИСНОВКИ ..................................................................................................85 
 
  
8 
 
ПЕРЕЛІК УМОВНИХ СКОРОЧЕНЬ І ПОЗНАЧЕНЬ  
ІС – Інформаційна система  
СКВ – Середнє квадратичне  відхилення  
ПКПКК – Програмний комплекс  прогнозування курсу валют  
API – Application Programming  Interface (прикладний програмний 
інтерфейс)  
БД – База даних 
  
9 
 
ВСТУП  
Актуальність теми визначається потребою у програмній реалізації  
інформаційної технології ситнезу прогнозних моделей 
Метою розробки є програмна реалізація інформаційної технології у 
формі  інформаційної системи синтезу прогнозних моделей. Для досягнення 
мети необхідно виконати такі завдання:  
1 Визначити існуючі методи та засоби виконання завдання, аналіз  
результатів та формалізація завдання проектування.  
2 Визначення та використання технології проектування програмного  
комплексу.  
3 Визначення та використання технології конструювання програмного  
комплексу.  
4 Визначення та використання технології тестування програмного  
комплексу.  
5 Виявлення особливостей впровадження та супроводження 
програмного  продукту.  
Об’єктом розробки є програмне забезпечення інформаційної технології 
прогнозування.  
Предметом розробки є процес програмної реалізації інформаційної 
технології синтезу прогнозних моделей. 
 Методи проектування та конструювання  
Для проектування ІС було використано об'єктно-орієнтований підхід 
(ООП). Основні принципи ООП, такі як інкапсуляція, наслідування та  
поліморфізм, забезпечили створення гнучкої та модульної архітектури 
системи.  ООП дозволяє організувати код у вигляді об'єктів, які представляють 
реальні  сутності, що спрощує розробку, підтримку та масштабування ІС.  
Одним з ключових методів, використаних у розробці, став метод  
прогнозування на основі полінома Колмогорова-Габора. Цей метод дозволяє  
будувати математичні моделі для прогнозування складних систем на основі їх  
історичних даних.  
10 
 
Мова програмування була обрана Python, що використовується для  
створення серверного середовища. Для серверного рішення використано 
Django  REST Framework, що забезпечує створення та підтримку REST API. 
Крім того,  використовувалися PostgreSQL для роботи з базою даних.  
Для клієнтської частини було обрано Angular з використанням 
TypeScript,  HTML5, CSS. Ці технології дозволяють створювати 
інтерактивний та зручний  інтерфейс користувача, що забезпечує ефективну 
взаємодію з серверною  частиною системи.  
Конструювання програмного продукту передбачає ітераційний 
процес, що  включає прототипування, тестування, виправлення помилок та 
постійне  вдосконалення алгоритмів на основі зворотного зв’язку з 
аналітичними модулями.  Ключову роль відіграють методи обробки 
історичних даних ціни валют .  
Опис отриманих результатів  
У процесі розробки було досягнуто результатів, які забезпечують  
досягнення поставленої мети. Було створено інформаційну систему (ІС)  
синтезу прогнозних моделей. У ході розробки були виконані наступні етапи: 
 − сформульовано вимоги до програмного забезпечення;  
− спроектовано базу даних;  
− розроблено клієнтську частину для взаємодії із сервером;  
− створено серверну частину, яка відповідає за бізнес-логіку ІС.  
На основі розробленого програмного забезпечення створено діаграми. 
Під  час тестування інформаційної системи були пройдені всі етапи, що 
підтвердили  відповідність програмного забезпечення встановленим вимогам.  
Практичне значення отриманих результатів  
Розроблено інформаційну систему прогнозування, яка дозволяє 
аналізувати  історичні дані валют и за допомогою різних моделей 
прогнозування та  отримувати характеристику проведених прогнозувань. 
Система має практичну  цінність завдяки своїй здатності створювати та 
11 
 
описувати моделі прогнозування,  шо дозволяє дослідити ефективність їх 
застосування за різних умов.  
Особистий внесок автора 
У процесі розробки інформаційної системи синтезу прогнозних 
моделей було застосовано об'єктно-орієнтоване програмування, що значно 
полегшило  структурування бази даних та класів. Автор активно займався 
усіма етапами  проекту, починаючи з детального аналізу історичних даних 
та  дослідження методів прогнозування, таких як поліном Колмогорова-
Габора, і  завершуючи інтеграцією та тестуванням різних моделей 
прогнозування в єдину  систему. 
РОЗДІЛ 1. ІСНУЮЧІ МЕТОДИ ТА ЗАСОБИ РОЗВ’ЯЗАННЯ  
ПОСТАВЛЕНИХ ЗАВДАНЬ 
1.1 Аналіз наукової та технічної інформації  
Волатильність цін на валюти може бути зумовлена різноманітними  
факторами, включаючи регуляторні новини, зміни в технології, ринкові 
настрої та  глобальні економічні умови. Торгівельні стратегії на ринку 
валют  варіюються від довгострокового інвестування до активної торгівлі,  
використовуючи технічний аналіз та дослідження впливових подій і новин  
криптоіндустрії для прогнозування рухів цін [7 ]. 
1.2 Актуальність задачі побудови програмного комплексу з  
синтезу прогнозних моделей   
Синтезу прогнозних моделей  стає все більш важливим в міру  
зростання цього ринку, оскільки воно дозволяє інвесторам, трейдерам і  
фінансовим аналітикам приймати обґрунтовані рішення. Для інвесторів,  
можливість передбачити зміни у вартості валют може означати значну  
різницю між вигідними угодами та втратою інвестицій. Трейдери, у свою 
чергу,  використовують прогнози для розробки стратегій купівлі та 
12 
 
продажу, прагнучи  максимізувати прибутки та мінімізувати ризики. Для 
фінансових аналітиків,  здатність аналізувати та передбачати тенденції на 
ринку валют є ключовою  для надання точних рекомендацій і стратегічних 
порад своїм клієнтам [8].  
Виклики та можливості. Синтезу прогнозних моделей  постає з 
низкою  викликів, зокрема, через високу волатильність цих активів, 
непередбачуваність  ринкових настроїв, та вплив зовнішніх економічних і 
політичних подій. Оскільки  валют ні ринки ще відносно молоді, вони 
можуть демонструвати швидкі та  інтенсивні коливання цін, які 
ускладнюють точне прогнозування. Водночас, ці  самі фактори створюють 
унікальні можливості для розробки інноваційних  підходів, зокрема 
технологій прогнозування, що може стати додатковим  фактором оцінки 
точності і надійності прогнозів. Таким чином, розвиток та вдосконалення 
методів синтезу прогнозних моделей  може принести значні  переваги для 
різних учасників ринку, допомагаючи їм приймати обґрунтовані та  
ефективні рішення [9]. 
1.3 Аналіз існуючих програмних засобів вирішення завдання  
прогнозування  
Аналізуючи існуючі програмні засоби для синтезу прогнозних 
моделей , ми зосередимось на огляді різних типів доступних інструментів,  
їхніх методологіях та ефективності.  
Традиційні фінансові аналітичні інструменти. Перші програмні 
засоби  включають традиційні фінансові аналітичні платформи, які 
використовують  класичні методики аналізу, такі як технічний аналіз, 
фундаментальний аналіз та  аналіз часових рядів. Ці методи зосереджені на 
вивченні цінових даних,  історичних трендів та макроекономічних 
показників для визначення потенційних  рухів ринку [10]. 
Сучасні аналітичні платформи. Наступну групу складають сучасні  
аналітичні платформи, які інтегрують методи машинного навчання та 
штучного  інтелекту для вдосконалення точності прогнозів. Вони 
13 
 
аналізують великі обсяги  даних, включаючи соціальні медіа, новини, 
торговельні об'єми та інші зовнішні  індикатори, щоб визначити вплив на 
ціни валют  [11]. 
Спеціалізоване програмне забезпечення для синтезу прогнозних 
моделей . До цієї категорії належать інструменти, розроблені спеціально для  
крипторинку, які враховують його унікальні характеристики та 
волатильність. Ці  програми часто поєднують різні аналітичні методи, 
включаючи алгоритмічну  торгівлю, та пропонують автоматизовані 
торговельні боти, які можуть виконувати  угоди на основі визначених 
алгоритмічних правил.  
Для аналізу існуючих програмних засобів вирішення завдання  
синтезу прогнозних моделей  можна розглянути наступні платформи та  
інструменти: 
TradingView: Це один з найвідоміших аналітичних інструментів, який  
пропонує розширені можливості для технічного аналізу, включаючи 
графіки в  реальному часі, індикатори та різні інструменти для аналізу 
трендів на ринку  валют  [12]. 
Coinigy: Це платформа, яка забезпечує доступ до більш ніж 45 бірж і  
дозволяє вести торгівлю безпосередньо через свій інтерфейс, забезпечуючи  
універсальну платформу для аналізу та торгівлі валютою [13].  
CryptoCompare: Вебсайт, який надає детальну інформацію про різні  
валют и, включаючи ціни, графіки, аналіз ринку та новини, що може бути  
використано для інформованого прийняття рішень щодо інвестицій [14].  
Messari: Платформа, яка забезпечує глибокий аналіз, дані та інсайти 
по  ринку валют , дозволяючи користувачам проводити комплексні  
дослідження та оцінку ринкових трендів [15].  
TensorFlow з плагінами для фінансового аналізу: Для розробників та  
дослідників, які хочуть створити власні алгоритми прогнозування, 
TensorFlow  може бути використаний разом з плагінами та бібліотеками для 
обробки  фінансових даних, щоб розробляти складні моделі машинного 
навчання для  синтезу прогнозних моделей  [16].  
14 
 
QuantConnect: Платформа для квантового аналізу, що дозволяє 
розробникам  та квантовим аналітикам створювати, тестувати та 
впроваджувати алгоритмічні  торгові стратегії з використанням даних з 
різних активів, включаючи  валют и [17].   
1.4 Методи прогнозування та засоби аналізу часових рядів  
Прогнозування – це метод передбачення майбутнього значення або 
зміни  стану досліджуваного об'єкта, використовуючи наявні знання про 
об'єкт, такі як  історичні дані та відомості про будь які події у майбутньому, 
що можуть вплинути  на результат прогнозу.  
Організація процесу інтелектуального аналізу даних визначається  
стандартами, які містять покрокові рекомендації, завдання та цілі для всіх 
етапів цього процесу. Консорціум компаній NCR, SPSS та DaimlerChrysler 
розробив  широко відомий стандарт The Cross Industry Standard Process for 
Data Mining  (CRISP-DM), що є продовженням методів Knowledge Discovery 
in Databases  (KDD) та SEMMA (Sample – збір даних, Explore – дослідження 
зв’язків, Modify – модифікування, Model – моделювання, Assess – 
оцінювання).   
На рисунку 1.1 показано життєвий цикл проекту інтелектуального 
аналізу  даних у вигляді структурної моделі CRISP-DM. На початковому 
етапі "Розуміння  бізнес-контексту" досліджуються бізнес-цілі та вимоги, 
приймається рішення про  доцільність застосування інтелектуального 
аналізу для задоволення бізнес-цілей і  визначаються дані, необхідні для 
побудови відповідної аналітичної моделі. На  наступному етапі "Підготовка 
даних" формується та вивчається початковий набір  даних, щоб оцінити 
його придатність для подальшої обробки. У разі недостатньої  кількості 
даних може виникнути потреба у зборі нових даних за більш строгими  
критеріями. Аналіз даних, отриманих на цьому етапі, також може призвести 
до  перегляду бізнес-контексту, що може вимагати перегляду мети 
застосування  інтелектуального аналізу даних [2, ст. 15]:  
15 
 
 
Рисунок 1.1 Структурна модель CRISP-DM [2, ст. 16] 
 
Етап «Передобробки даних» включає первинну обробку сирих даних, 
щоб  методи машинного навчання могли побудувати аналітичну модель, яка  
відображає структурний опис інформації, прихованої в навчальних даних. 
На  етапі «Побудова моделі» створюється робоча (внутрішня) модель даних 
для  подальшої перевірки. Етапи «Підготовка даних» і «Побудова моделі» 
часто  виконуються паралельно. Зазвичай їх необхідно повторювати, 
оскільки  результати моделювання надають краще розуміння вимог до 
методів попередньої  обробки. Важливим є етап «Тестування моделі», що 
включає перевірку  побудованої аналітичної моделі. Тестування дозволяє 
визначити, чи може  аналітична модель, створена за навчальними даними, 
бути застосована для  класифікації тестових даних або ж вона відображає 
хибні закономірності. Існує  безліч методів тестування аналітичних 
моделей. Якщо етап тестування показує,  що модель незадовільна, можливо, 
буде потрібно переглянути весь проект з  аналізу даних і повернутися до 
етапу «Розуміння бізнес-контексту», щоб уточнити  бізнес-цілі або способи 
збору даних. Якщо точність моделі досить висока, далі  виконується етап 
«Розгортання моделі» в програмній системі, і модель  передається 
інженерам з програмного забезпечення для впровадження.  
16 
 
Метою прогнозування є науково обґрунтований висновок щодо  
майбутнього стану заданого об’єкта моніторингу[3, ст. 46]. Серед 
необхідних для  такого обґрунтування аналітичних засобів - метод 
найменших квадратів оцінки  детермінованої компоненти, що характеризує 
основну тенденцію.  
Метою інтелектуального аналізу даних є побудова аналітичних 
моделей,  оптимізованих для вирішення конкретних класів прикладних 
задач. Аналітичні  моделі будуються для навчальних екземплярів даних з 
певної проблемної області.  Як тільки модель побудована, вона 
перевіряється на тестових екземплярах даних.  Після підтвердження 
адекватності та точності побудованої аналітичної моделі, її  можна 
застосовувати до нових некласифікованих даних [2, ст. 17]. 
Характеристики моделі розраховуються для визначення її придатності 
до  використання в даних умовах. Складність визначення характеристик 
прогнозуючих моделей пов’язана з тим, що характеризується властивість 
цих  моделей описувати події, які ще не відбулися.   
При дослідженні моделі розраховується середнє квадратичне 
відхилення  (СКВ) результатів моделювання від експериментальних 
значень, за якими вона  вчилась  
 1.1 
де — експериментальні значення модельованої характеристики в 
даній  точці;  
 — розраховані значення модельованої характеристики;  
n — кількість спостережень..  
Ми можемо визначити найбільш оптимальну модель за допомогою  
обчислення середньоквадратичної похибки прогнозу, яка необхідна для 
перевірки  прогнозованої послідовності. Чим менший показник похибки у 
відсотках, тим  кращою є навчена модель серед усіх прогнозованих 
17 
 
послідовностей [1, ст. 348]. 
В прикладній діяльності для прогнозування застосовуються якісні та  
кількісні методи.  
Якісні методи залежать від думок експертів, інтуїції та суджень, не  
базуючись на виключно числових даних. Ці методи часто зосереджені на  
розумінні того, як різні фактори можуть впливати на настрої інвесторів і,  
відповідно, на цінові показники валют и. Оскільки валют ні ринки  часто 
демонструють волатильність, що частково викликана реакцією на новини,  
аналіз цих новин вимагає певного рівня інтерпретації та судження, що 
характерно  для якісних методів  [18]. 
Кількісні методи базуються на числових даних та статистичному 
аналізі. Вони використовуються для визначення тенденцій, шаблонів та 
взаємозв'язків у минулих даних з метою прогнозування майбутніх значень. 
Серед кількісних методів, розглянемо такі засоби аналізу часових рядів, 
що використовують історичні дані для прогнозування майбутніх трендів. 
Серед них – авторегресійні моделі ARMA / ARIMA, моделіі середнь та 
методи регресійного аналізу [19]. 
Ковзне середнє (англ. Moving Average - MA) – засіб згладжування 
часових рядів, визначається як середнє значення даних за певний часовий 
проміжок. Це вираховується як сума значень функції за "вікном" поділена 
на кількість точок у вікні [20]:  
 
��−1
1
������ = ∑����−��  (1.2) 
��
��=0
Де MAt- рухоме середнє у часовий момент t, n — кількість періодів у 
вікні  (довжина згладжування), X t-i значення функції в часовий момент t-i. 
MA – найбільш розповсюджений інструмент технічного аналізу…  
Лінійна регресія (англ. Linear Regression - LR) – модель, що шукає 
18 
 
лінійний  зв'язок між залежною змінною Y та однією або декількома 
незалежними змінними [21]:  
 
Y = 0 – 1X +  (1.3) 
де Y — залежна змінна, X — незалежна змінна, 0 — перехід 
(intercept), 1 — кут нахилу (slope), і  — помилка моделі.  
Лінійна регресія є одним із найпростіших і найбільш широко  
використовуваних методів для прогнозування та аналізу причинно-
наслідкових  відносин між змінними.  
Модель ARIMA (Autoregressive Integrated Moving Average) - 
Авторегресійна  інтегрована модель ковзного середнього є популярним 
статистичним методом  аналізу та прогнозування часових рядів [22]: 
 ���� 1.4  
де:  
��  
(�� −∑�� ������  ��=��  
��  
)(�� − ��)������ = (�� + ∑�� ��
����  ��=��  
 
p — порядок авторегресійної частини, d — ступінь різниці, 
необхідний для  досягнення стаціонарності, q — порядок частини 
ковзного середнього, ϕ — коефіцієнти авторегресії, ����— 
коефіцієнти ковзного середнього, ����— оператор зсуву 
(затримки), ���� — часовий ряд, ���� — випадкова помилка  в 
часі t.  
"Метод гусениці" або Singular Spectrum Analysis (SSA) - метод широко  
19 
 
використовується для аналізу та прогнозування часових рядів. SSA — це  
непараметричний метод, який можна використовувати для декомпозиції 
часового  ряду на суму інтерпретованих компонентів, таких як тренд, 
осциляторні  компоненти та шум. Це ефективний інструмент для 
прогнозування, заповнення  відсутніх даних, згладжування і навіть 
виявлення аномалій у даних [6, ст. 240]. 
Мета SSA полягає в розкладі вихідного ряду на суму невеликої 
кількості  незалежних і зрозумілих компонентів, таких як повільно 
змінюваний тренд,  коливальні компоненти та структурний шум.  
SSA є дуже корисним інструментом, який може бути використаний 
для  вирішення наступних проблем:   
1 виявлення трендів різної роздільної здатності;   
2 згладжування;   
3 вилучення компонентів сезонності;   
4 одночасне вилучення циклів з малими та великими 
періодами;  5 вилучення періодичностей зі змінною 
амплітудою;   
6 одночасне вилучення складних трендів та 
періодичностей;  7 виявлення структури в коротких 
часових рядах; та   
8 виявлення точок зміни. 
Метод найменших квадратів (англ. Least Squares Method) – це 
статистичний  метод, що використовується для знаходження лінії регресії 
або найкращої лінії  для даного набору даних. Цей метод мінімізує суму 
квадратів різниць між  спостережуваними та прогнозованими значеннями, 
щоб знайти найкраще  відповідне рівняння для даних [23].  
Тобто, використовуючи описаний алгоритм методу найменших 
квадратів  для обчислення системи нормалізованих рівнянь ми знайшли 
конкретні значення  невідомих а0, а1, а2, …., аn при обраному вигляді 
полінома. Тобто отримали  навчену модель на основі полінома 
Колмогорова-Габора:  
20 
 
 
 1.5 
1.5 Постановка задачі   
Процес розробки прогнозуючої моделі складається з наступних 
етапів [1, с.  348]:  
Визначення масиву вхідних даних:  
Перший етап полягає у визначенні об’єму експериментальних точок. 
Це  означає, що відбувається завантаження повного діапазону 
експериментальних  даних, які підлягають обробці інструментом 
прогнозування. Набір обраних  вхідних даних не може бути менше ніж 6 
значень для найменшого поліному з  трьома невідомими.  
Отримання навчених моделей різної складності:  
Цей етап вимагає побудови математичної моделі складного процесу,  
необхідної для автоматичного оптимального управління в подальшому. 
Модель  має вигляд системи рівнянь, яка приводиться до нормалізації після 
складання  системи умовних рівнянь згідно обраного полінома з певною 
кількістю невідомих.  
Обчислення похибки:  
Визначення найбільш оптимальної моделі здійснюється завдяки  
обчисленню середньоквадратичної похибки прогнозу. Чим менший 
показникпохибки у відсотках, тим краща навчена модель зі всіх 
прогнозованих  послідовностей.  
Розробка автоматизованої інформаційної системи прогнозуючого 
фільтра: Автоматизована інформаційна система дозволяє зручно працювати  
користувачу завдяки інтерфейсній частині, що має візуально просту форму з  
управлінськими кнопками. Користувач завантажує необхідний набір  
експериментальних точок з, визначає кількість невідомих при поліномі, і 
система  автоматично обчислює поліном за методом найменших квадратів. 
Для вирішення задачі прогнозування курсів валют визначено  наступні умови 
21 
 
та вихідні дані:  
Об'єкт розробки: Програмне забезпечення інформаційної технології  
прогнозування курсів валют .  
Предмет розробки: Процес програмної реалізації технології  
короткотривалого прогнозування курсів валют .  
Мета розробки: Програмна реалізація інформаційної технології у формі  
інформаційної системи, здатної здійснювати короткотривале прогнозування  
курсів валют .  
Вихідні дані: Історичні дані щодо курсів валют , необхідні для  навчання 
та перевірки моделей прогнозування.  
Для досягнення мети розробки необхідно виконати наступні 
завдання: Аналіз існуючих методів та засобів:  
− дослідження та аналіз сучасних методів прогнозування курсів  валют ;  
− формалізація завдання проектування на основі отриманих 
результатів. Проектування програмного комплексу:  
− визначення технологій та інструментів, які будуть використовуватись 
у  проекті;  
− створення модульної архітектури системи з використанням принципів  
об'єктно-орієнтованого програмування.  
Конструювання програмного комплексу: 
− розробка клієнтської частини, що забезпечує інтерактивний та зручний  
інтерфейс користувача;  
− створення серверної частини, яка реалізує бізнес-логіку системи та  
забезпечує взаємодію з базою даних.  
Тестування програмного комплексу:  
− визначення методів тестування аналітичних моделей;  
− проведення тестування для перевірки коректності роботи системи та  
відповідності програмного забезпечення встановленим вимогам. 
Впровадження та супроводження програмного продукту:  
− виявлення особливостей впровадження інформаційної системи; − 
22 
 
організація процесу супроводження програмного продукту після його  
впровадження. 
Висновки до розділу 1  
У першому розділі було розглянуто існуючі методи та засоби 
прогнозування  курсів валют . Проведений аналіз наукової та технічної 
інформації щодо  валют дозволив виявити основні фактори, що впливають 
на волатильність  цін цих активів. Актуальність задачі побудови 
програмного комплексу з  синтезу прогнозних моделей  обґрунтована 
необхідністю прийняття  обґрунтованих рішень інвесторами, трейдерами та 
фінансовими аналітиками.  
Аналіз існуючих програмних засобів показав, що сучасні аналітичні  
платформи використовують як традиційні методи, так і інноваційні підходи,  
зокрема методи машинного навчання та штучного інтелекту. Це створює 
основу  для розробки спеціалізованого програмного забезпечення, яке 
враховує унікальні  характеристики ринку валют .  
Окрім того, було розглянуто різні методи прогнозування та засоби 
аналізу  часових рядів, що дозволяють підвищити точність прогнозів. 
Зокрема,  використання полінома Колмогорова-Габора та інших 
математичних моделей на  основі історичних даних.  
Необхідність проведення досліджень у цій галузі зумовлена швидким  
зростанням ринку валют та потребою в ефективних інструментах для  
прогнозування їхніх курсів. Подальші дослідження та розробки в цій сфері  
дозволять створювати більш точні моделі, що допомагатимуть учасникам 
ринку  приймати зважені рішення та мінімізувати ризики. 
РОЗДІЛ 2. ВПРОВАДЖЕННЯ РЕЗУЛЬТАТІВ ДОСЛІДЖЕНЬ У  
ПРАКТИКУ ПРОЕКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ  
ІНФОРМАЦІЙНИХ СИСТЕМ  
2.1 Моделювання предметної області  
23 
 
Моделювання предметної області є ключовим етапом у процесі  
проектування програмного забезпечення для інформаційних систем. У 
цьому  розділі аналізуються результати моделювання з метою їх детального 
розуміння та  адаптації до специфічних вимог проекту, спрямованого на 
розробку програмного  комплексу для прогнозування валют .  
Моделювання в контексті веб-сервісу  
В контексті веб-сервісу для синтезу прогнозних моделей ,  
моделювання предметної області включатиме створення інформаційної 
моделі,  яка відображає ключові дані та їх взаємозв'язки. Ця модель 
допоможе визначити,  які дані потрібно збирати, як їх обробляти та 
аналізувати для генерування точних  прогнозів.  
− структура даних: визначення і структурування даних, які необхідні 
для  аналізу, таких як цінові точки, часові маркери, обсяги торгів, 
індекси  настроїв ринку та інші фінансові показники;  
− інтерфейси взаємодії: розробка інтерфейсів для збору історичних 
даних  з валютних бірж, збереження та управління даними, а також  
демонстрація їх користувачу;  
− логіка обробки: встановлення правил і процедур для обробки і 
аналізу  зібраних даних, включаючи очищення даних, 
нормалізацію, та  використання статистичних та машинних 
алгоритмів для виявлення  закономірностей і трендів;  
− модуль прогнозування: розробка спеціалізованого модуля, який  
використовує аналітичні методи та машинне навчання для 
створення  прогнозів на основі аналізу даних. цей модуль також 
повинен включати  в себе оцінку точності прогнозів; 
− візуалізація даних та звітність: розробка інструментів для 
візуалізації  результатів аналізу і прогнозування, які дозволять 
користувачам легко  інтерпретувати інформацію та приймати 
рішення на її основі.  
Враховуючи ці елементи, моделювання предметної області веб-
24 
 
сервісу для  синтезу прогнозних моделей  допоможе створити комплексну 
та ефективну  систему, здатну надавати точні та актуальні прогнози.  
2.1.1 Предметна область моделювання  
Предметна область моделювання для програми синтезу прогнозних 
моделей  охоплює всі елементи, які безпосередньо пов’язані з аналізом і  
прогнозуванням вартості валют . Це включає історичні дані про курси  
валют , інструменти їх аналізу та обробки, методи та моделі прогнозування.  
У термінології UML, ці об’єкти будуть представлені як класи на 
діаграмі  класів, де відносини між класами показують взаємозв'язки в 
предметній області.  
Модель предметної області 
Модель предметної області для ПКПКК буде включати візуальне 
подання  ключових абстракцій, які відіграють роль в аналізі та синтезу 
прогнозних моделей Основні доменні об’єкти включають:  
1 Валют и:  
Визначення: Цифрові або віртуальні валюти, що використовують  
криптографію для забезпечення безпеки транзакцій.  
Характеристики: Назва валют и, ринкова капіталізація, поточна ціна,  
історичні дані.  
2 Історичні дані:  
Визначення: Масиви даних про минулі ціни, обсяги торгів та інші 
ринкові  показники у вигляді часових рядів.  
Характеристики: Ціна відкриття, найвища ціна, найнижча ціна, ціна  
закриття, обсяг торгів, часові мітки.  
3 Модель прогнозування:  
Визначення: Алгоритми та моделі, що використовуються для 
передбачення  майбутніх цін на основі історичних даних та інших 
факторів. 
Характеристики: Вид опорної моделі, визначення моделі, точність  
25 
 
прогнозів.  
4 Аналізатор моделей  
Визначення: Інструменти та методи, що використовуються для 
оцінки  ефективності моделей прогнозування.  
Характеристики: Метрики точності, середнє квадратичне відхилення,  
середня абсолютна похибка.  
5 Ринки  
Визначення: Платформи, де зберігаються дані про валют и, з  
можливістю завантаження користувачем по API.  
Характеристики: Назва ринку, посилання на запит історичних даних,  
параметри запиту.  
Словник предметної області слугуватиме як детальний перелік та 
опис  всіх ключових термінів, пов’язаних з системою:  
− ринкові дані: інформація, яка відображає торговельну активність на  
ринку валют , включаючи ціну, обсяг торгів та часові маркери; − ohlcv: 
акронім, що означає open (ціна відкриття), high (максимальна   
ціна), low (мінімальна ціна), close (ціна закриття) та volume (обсяг  
торгів). використовується як модель представлення історичних даних  валют 
и для детального аналізу цінових коливань і обсягу торгів  за певний період;  
− часовий інтервал: проміжок часу, протягом якого збираються і  
відображаються ринкові дані. приклади: хвилина (m1), година (h1), день  (d1), 
тиждень (w1);  
− ціна закриття: остання зафіксована ціна валют и на завершення  
торговельного періоду;  
− трейдер: особа або організація, яка купує та продає валют и з  метою 
отримання прибутку;  
− біржа: організований ринок, на якому здійснюються купівля та 
продаж  фінансових інструментів, а також зберігаються та відображаються  
ринкові дані валют ;  
− прогноз: очікуване значення майбутньої ціни валют и, отримане  за 
допомогою аналізу та моделювання ринкових даних;  
26 
 
− часовий ряд: послідовність даних, зібраних або записаних через рівні  
інтервали часу;  
− прогнозуюча модель: математична або статистична модель, яка  
використовується для передбачення майбутніх цін валют и на  основі 
історичних даних та інших змінних;  
− характеристики прогнозуючої моделі: властивості та параметри, які  
визначають точність і надійність прогнозів;  
− середнє квадратичне відхилення: статистичний показник, який 
вимірює  відхилення фактичних значень від прогнозованих, використовується 
для  оцінки точності прогнозуючої моделі;  
− горизонт прогнозування: часовий інтервал у майбутньому, на який  
здійснюється прогноз;  
− похибка: різниця між фактичним значенням і прогнозованим 
значенням  моделі.  
2.1.2 Елементи моделювання предметної області  
Для створення елементів моделювання предметної області для веб-
сервісу  синтезу прогнозних моделей , можемо визначити наступні ключові  
елементи:  
У об'єктно-орієнтованих системах структура коду визначається 
класами, які  представляють узагальнені об'єкти. Класифікація означає, що 
об'єкти з  однаковими структурами даних (атрибутами) і поведінкою 
(операціями)  групуються у класи. Для правильного проектування системи 
необхідно спочатку  визначити, які класи знадобляться, та створити 
діаграми класів. Це перший крок  до отримання справжньої діаграми класів, 
що представляє систему в цілому.  Надалі, у процесі роботи над 
прецедентами, ці діаграми уточнюються, і в  результаті формується 
детальна статична модель системи. 
Модель предметної області повинна бути побудована до складання  
варіантів використання, щоб уникнути дублювання понять. Якщо схожі 
назви  потраплять у тексти варіантів використання, їх набагато складніше 
27 
 
знайти, ніж у  словнику проекту. Модель предметної області, яка є 
діаграмою класів  аналітичного рівня, є першим наближенням до статичної 
структури системи.  
У термінології UML, ці об'єкти будуть представлені як класи на діаграмі  
класів, де відносини між класами показують взаємозв'язки в предметній 
області.  
Рисунок 2.1 - Елементи мови UML 
 
28 
 
 
Рисунок 2.2 - Зв’язки мови UML  
2.1.3 Робоча область моделювання  
Для того, щоб коректно створити систему, що відповідає всім 
вимогам,  необхідно абсолютно чітко уявити її основні бізнес-функції та 
з'ясувати вимоги  до системи. Для цього необхідно провести обстеження 
продукту і побудувати  його повну бізнес-модель.  
Основні бізнес-функції системи включають:  
Збір даних: Інтерфейси для збору історичних даних з валют них 
бірж,  збереження та управління даними.  
Аналіз даних: Правила і процедури для обробки і аналізу зібраних 
даних,  включаючи очищення даних, нормалізацію та використання 
статистичних та  машинних алгоритмів для виявлення закономірностей і 
трендів.  
Прогнозування: Використання аналітичних методів та машинного 
навчання  для створення прогнозів на основі аналізу даних, а також оцінка 
точності  прогнозів. 
Візуалізація та звітність: Інструменти для візуалізації результатів 
аналізу і  прогнозування, які дозволять користувачам легко інтерпретувати 
інформацію та  приймати рішення на її основі.  
29 
 
 
Рисунок 2.3 – Модель предметної області ПКПКК  
2.2 Формування та аналіз вимог  
2.2.1 Формування вимог до програмного забезпечення. Первинні і 
детальні  вимоги. Вимоги замовника і розробника. Функціональні 
та нефункціональні  вимоги  
Для формування вимог до програмного забезпечення, потрібно 
виконати  проаналізувати і структурувати первинні вимоги, які будуть 
відображати основні  функціональні та нефункціональні аспекти 
програмного комплексу  синтезу прогнозних моделей .   
Розглянемо первинні вимоги:  
1. Збір та зберігання даних: Система повинна мати можливість 
інтеграції з  основними валют ними біржами для збору історичних даних про 
курси валют . Дані повинні зберігатися у базі даних з можливістю  швидкого 
доступу та обробки великих обсягів інформації.  
2. Аналіз та обробка даних: Система повинна мати модулі для 
очищення та  нормалізації зібраних даних, включаючи обробку відсутніх або  
аномальних значень. Необхідно реалізувати алгоритми машинного  навчання 
30 
 
для аналізу історичних даних та визначення тенденцій і  патернів.  
3. Синтезу прогнозних моделей : Користувачі повинні мати  
можливість отримувати синтез прогнозних моделей на основі обраних  
моделей машинного навчання. Система повинна підтримувати кілька  моделей 
прогнозування з можливістю порівняння їх результатів.  Прогнози повинні 
супроводжуватися оцінками точності та довірчими  інтервалами.  
4. Візуалізація даних та результатів прогнозування: Інтерфейс 
користувача  повинен включати інструменти для візуалізації історичних даних 
та  прогнозів у вигляді графіків і діаграм.  
Вимоги замовника:  
1 Функціональність: Замовник може визначити функціональні вимоги  
щодо того, які можливості повинен мати програмний комплекс. Це може  
включати можливість отримання точних прогнозів, швидке та зручне  
збирання та обробку даних, можливість порівняння результатів різних  
моделей прогнозування тощо.  
2 Дизайн та користувацький досвід: Замовник може висунути вимоги  
щодо дизайну та користувацького досвіду.  
3 Прогнозуюча модель: замовник визначає конкретний метод  
моделювання для створення прогнозуючого фільра, а також висуває  вимоги 
щодо визначення створених моделей.   
Вимоги розробника:  
1 Технічні вимоги: Розробник може визначити технічні вимоги до  
програмного забезпечення, такі як використання певних технологій та 
інструментів розробки, структура бази даних, архітектура програмного  
комплексу тощо.  
2 Сумісність та тестування: Розробник може вимагати забезпечення  
сумісності системи з різними веб-браузерами та операційними  системами, а 
також вимоги до тестування, включаючи автоматизовані  тести та модульне 
тестування.  
3 Деталі реалізації прогнозуючого фільтра: Розробник аналізує та  
підбирає прийнятний варіант реалізації алгоритму моделювання та  аналізу 
31 
 
результатів, висуває вимоги щодо функціональних та описових  можливостей 
прогнозуючого фільтра.  
Функціональні вимоги:  
1. Програмний комплекс реалізувати у вигляді клієнт-серверної  
архітектури.  
2. Провести необхідне тестування системи.  
3. Збір даних: Система повинна мати можливість збирати дані з  валют 
них бірж та інших джерел.  
4. Аналіз та обробка даних: Система повинна забезпечувати аналіз та  
обробку зібраних даних, включаючи їх очищення, нормалізацію та  підготовку 
до використання в моделях прогнозування.  
5. Синтезу прогнозних моделей : Система повинна реалізувати різні  
моделі синтезу прогнозних моделей  та забезпечити можливість  порівняння 
результатів.  
6. Візуалізація даних: Система повинна забезпечувати візуалізацію  
історичних даних та результатів прогнозування у вигляді графіків і  діаграм.  
7. Генерація звітів: Система повинна забезпечувати генерацію звітів з  
результатами прогнозування та аналізом.  
Нефункціональні вимоги:  
1. Програмний комплекс реалізувати у вигляді клієнт-серверної  
архітектури. 
2. Провести необхідне тестування системи.  
3. Продуктивність: Система повинна бути швидкою та ефективною, з  
низьким часом завантаження сторінок та швидким відгуком на запити  
користувачів.  
4. Сумісність: Система повинна бути сумісною з різними веб-
браузерами,  забезпечуючи однакову якість користувацького досвіду для всіх  
користувачів.  
5. Інтерфейс: Користувацький інтерфейс системи повинен бути зручним 
та  інтуїтивно зрозумілим, забезпечуючи комфортну навігацію та взаємодію  з 
32 
 
користувачем.  
2.2.2 Формування вимог за допомогою діаграми прецедентів  
Опис діаграми прецедентів (Рис. 2.4):  
1 Перегляд прогнозу:  
Актори: Користувач  
Опис: Користувач має можливість переглядати прогнози. Прецедент  
включає виконання та виведення прогнозу, яке відбувається щоразу при 
відкритті  сторінки відповідного прогнозу.  
2 Перегляд історичних даних:  
Актори: Користувач  
Опис: Користувач може переглядати збережені історичні 
дані. 3 Редагування історичних даних:  
Актори: Користувач  
Опис: Користувач може редагувати збережені історичні дані. 
Прецедент  включає видалення збережених даних та зміну збережених даних. 
4 Додати історичні дані:  
Актори: Користувач  
Опис: Користувач може додавати нові історичні дані. 
 
Рисунок 2.4 – Діаграма прецедентів  
2.3 Проектування логічної структури програмного комплексу  
Проведемо проектування логічної структури системи, розробивши 
33 
 
логічну  модель у вигляді моделі класів і пакетів, які вказують на складові 
системи. Логічне  проектування також відоме як детальне проектування 
класів.  
2.3.1 Діаграми класів  
Діаграми класів є різновидом структурної діаграми, яка 
використовується  для моделювання об'єктно-орієнтованих систем. Вони 
показують класи, їхні  атрибути, методи та зв'язки між класами. За 
допомогою діаграм класів можна  розглянути систему на рівні окремих 
компонентів і зрозуміти, як ці компоненти  взаємодіють між собою.  
Діаграма класів (Рис. 2.5) відображає структуру моделі предметної 
області  для системи прогнозування та аналізу даних валют . Основні класи  
представляють різні типи OHLCV (відкриття, максимум, мінімум, закриття,  
обсяг) даних, такі як годинні, денні та хвилинні дані. Клас BtcHourlyOHLCV 
є  базовим класом для BtcDailyOHLCV та BtcMinuteOHLCV, відображаючи  
спадковість між різними часовими інтервалами.  
Крім того, діаграма включає класи для серіалізації даних, такі як  
BtcHourlyOHLCVSerializer, BtcDailyOHLCVSerializer та  
BtcMinuteOHLCVSerializer. Ці класи відповідають за перетворення даних 
між форматами, які використовуються в додатку та форматами, які 
використовуються  для збереження або передачі.  
Інший важливий аспект діаграми - це класи для аналізу помилок та  
прогнозування, такі як ErrorAnalyzerDaily, ErrorAnalyzerHourly та  
ErrorAnalyzerMinute. Ці класи взаємодіють з моделями прогнозування часу,  
такими як TimeSeriesForecastDaily, TimeSeriesForecastHourly та  
TimeSeriesForecastMinute, що дозволяє їм визначати основні моделі, 
оцінювати їх  і робити прогнози на основі даних.  
Також присутній клас ModelType, який представляє типи моделей, 
що  використовуються для прогнозування.  
Остання група класів типу View відображає взаємодію з веб-сервісом. 
Ці  класи забезпечують доступ до різних даних та прогнозів через веб-
34 
 
інтерфейс,  взаємодіючи з відповідними аналізаторами помилок та 
провайдерами даних.  
Рисунок 2.5 – Діаграма класів   
Опис сутностей, представлених в діаграмах класів (Рис. 2.6 та 2.7):  
1. BtcHourlyOHLCV (Клас OHLCV за годинами): має атрибути часу 
(time), максимального (high), мінімального (low), відкритого (open), закритого  
(close) значень, об'єму з (volumefrom) та в (volumeto), типу конверсії  
(conversiontype) та символу конверсії (conversionsymbol). Цей клас має  
відношення наслідування з класами BtcDailyOHLCV та  BtcMinuteOHLCV.  
2. BtcDailyOHLCV (Клас OHLCV за днями): наслідує 
BtcHourlyOHLCV.  
3. BtcMinuteOHLCV (Клас OHLCV за хвилинами): наслідує  
BtcHourlyOHLCV.  
4. BtcHourlyOHLCVSerializer (Серіалізатор OHLCV за годинами): 
включає  метаклас (Meta) та поле (fields). Має зв'язок композиції з  
BtcHourlyOHLCV.  
5. BtcDailyOHLCVSerializer (Серіалізатор OHLCV за днями): включає  
метаклас (Meta) та поле (fields). Має зв'язок композиції з  BtcDailyOHLCV.  
35 
 
6. BtcMinuteOHLCVSerializer (Серіалізатор OHLCV за хвилинами):  
включає метаклас (Meta) та поле (fields). Має зв'язок композиції з  
BtcMinuteOHLCV.  
7. ModelType (Тип Моделі): це перерахувальний тип (enum) з різними  
значеннями моделей.  
8. BtcDataFrameProvider (Постачальник DataFrame): містить метод  
provideHourlyData(), який надає дані OHLCV за годинами.  Використовується 
у всіх класах ForecastView та ChartView.  
9. ErrorAnalyzerDaily (Аналізатор помилок за днями): містить атрибути  
acceptable_error (допустима помилка), model_main (головна модель),  models 
(словник моделей) та last_date (остання дата). Має методи  setup_models(), 
determine_main_model(), evaluate_models() та  prognose_chart(). Зв'язаний з 
TimeSeriesForecastDaily через композицію  та з ModelType через агрегацію.  
10. TimeSeriesForecastDaily (Прогнозування часових рядів за днями): 
містить  атрибути data_interval, time_series_predicted, data_frame, coefficients, 
forecast_horizon та standard_deviation. Має методи setup_model(),  
solve_for_coefficients(), calculate_standard_deviation() та  make_predictions(). 
Використовується в ErrorAnalyzerDaily.  
11. ErrorAnalyzerHourly (Аналізатор помилок за годинами): аналогічний 
до  ErrorAnalyzerDaily, але працює з TimeSeriesForecastHourly. Має  
композиційний зв'язок з TimeSeriesForecastHourly та агрегаційний з  
ModelType.  
12. TimeSeriesForecastHourly (Прогнозування часових рядів за 
годинами):  аналогічний до TimeSeriesForecastDaily. Використовується в  
ErrorAnalyzerHourly.  
13. ErrorAnalyzerMinute (Аналізатор помилок за хвилинами): 
аналогічний  до ErrorAnalyzerDaily, але працює з TimeSeriesForecastMinute. 
Має  композиційний зв'язок з TimeSeriesForecastMinute та агрегаційний з  
ModelType.  
14. TimeSeriesForecastMinute (Прогнозування часових рядів за 
хвилинами):  аналогічний до TimeSeriesForecastDaily. Використовується в  
36 
 
ErrorAnalyzerMinute.  
15. BtcDailyForecastView (Прогнозний перегляд за днями): містить 
метод  get(). Використовує ErrorAnalyzerDaily та BtcDataFrameProvider.  
16. BtcDailyForecastChartView (Прогнозний перегляд діаграм за днями):  
містить метод get(). Використовує ErrorAnalyzerDaily та  
BtcDataFrameProvider.  
17. BtcDailyDataView (Перегляд даних за днями): містить метод get().  
Використовує BtcDataFrameProvider.  
18. BtcDailyDataChartView (Перегляд діаграм даних за днями): містить  
метод get(). Використовує BtcDataFrameProvider.  
19. BtcHourlyForecastView (Прогнозний перегляд за годинами): містить  
метод get(). Використовує ErrorAnalyzerHourly та BtcDataFrameProvider.  
20. BtcHourlyForecastChartView (Прогнозний перегляд діаграм за  
годинами): містить метод get(). Використовує ErrorAnalyzerHourly та 
BtcDataFrameProvider.  
21. BtcHourlyDataView (Перегляд даних за годинами): містить метод 
get().  Використовує BtcDataFrameProvider.  
22. BtcHourlyDataChartView (Перегляд діаграм даних за годинами): 
містить  метод get(). Використовує BtcDataFrameProvider.  
23. BtcMinuteForecastView (Прогнозний перегляд за хвилинами): 
містить  метод get(). Використовує ErrorAnalyzerMinute та 
BtcDataFrameProvider.  
24. BtcMinuteForecastChartView (Прогнозний перегляд діаграм за  
хвилинами): містить метод get(). Використовує ErrorAnalyzerMinute та  
BtcDataFrameProvider.  
25. BtcMinuteDataView (Перегляд даних за хвилинами): містить метод 
get().  Використовує BtcDataFrameProvider.  
26. BtcMinuteDataChartView (Перегляд діаграм даних за хвилинами):  
містить метод get(). Використовує BtcDataFrameProvider. 
37 
 
 
Рисунок 2.6 – Діаграма класів сценарію формування та представлення 
прогнозів 
 
38 
 
 
Рисунок 2.7 – Діаграма класів сценарію виведення даних   
2.3.2 Діаграми пакетів  
Діаграма пакетів - це тип діаграми, який використовується для 
візуалізації  структури програмного забезпечення шляхом групування його 
компонентів у  логічні пакети або модулі. Кожен пакет представляє собою 
колекцію класів,  інтерфейсів або інших елементів програми, які мають 
спільний функціонал або  пов'язані між собою. Діаграми пакетів 
допомагають візуально організувати  програму, щоб полегшити розуміння 
та управління її складовими частинами.  
У нашому випадку, діаграма пакетів відображає структуру та зв'язки 
між  різними компонентами проекту веб-сервісу для синтезу прогнозних 
моделей . Нижче наведено опис діаграми пакетів, що використовується у  
проекті. 
39 
 
Опис діаграми пакетів  
Діаграма пакетів показує взаємодію між наступними 
компонентами: 1 Frontend – Angular Framework (FRONT)  
− інтерфейс користувача (gui);  
− home: пакет, що містить компоненти для головної сторінки веб-
додатку; − import_btc_data: пакет, що містить компоненти для імпорту 
історичних  даних про курс валют ;  
− btc_forecast: пакет, що містить компоненти для відображення 
прогнозу  курсу валют ;  
− services (s): пакет, що містить сервіси для обробки даних і взаємодії з  
бекендом.  
2 Backend - Django Framework (BACK)  
− об’єкти-обробки api запитів (api): пакет, що містить контролери та 
інші  об'єкти, що обробляють api запити;  
− об'єкти управління даними (datac): пакет, що містить моделі та інші  
об'єкти, які відповідають за управління даними;  
− об'єкти прогнозуючих (forecast): пакет, що містить об'єкти та 
алгоритми  для синтезу прогнозних моделей .  
3 Database (DB): Пакет, що представляє базу даних, в якій зберігаються 
всі  дані проекту.  
Зв'язки між пакетами  
− gui використовує сервіси з пакету services (s) для обробки даних і  
взаємодії з бекендом;  
− frontend (front) взаємодіє з backend (back) для обробки запитів та  
отримання даних;  
− services (s) обмінюється даними з api в backend (back); − api взаємодіє 
з пакетами forecast та datac для обробки прогнозів та  управління даними;  
− forecast використовує datac для отримання та збереження даних; − 
datac взаємодіє з database (db) для зберігання та отримання інформації. 
40 
 
 
Рисунок 2.8 – Діаграма пакетів  
2.4 Архітектурне проектування  
Архітектурне проектування описує перший етап процесу розробки, на  
якому визначаються підсистеми, управління структурою та їх взаємодія. 
Основна  мета полягає в створенні опису архітектури програмного 
забезпечення, що  служить містком між процесом проектування та розробки 
вимог до системи.  
Існують різні підходи до архітектурного проектування, які 
варіюються в  залежності від досвіду та інтуїції розробників. Однак, можна 
виділити кілька  загальних етапів для всіх процесів архітектурного 
проектування [24]: 
41 
 
− структурування: представлення системи як сукупності незалежних  
підсистем та визначення їх взаємодії;  
− моделювання управління: розроблення базової моделі управління  
взаємодіями між компонентами системи;  
− модульна декомпозиція: розділення підсистеми на окремі модулі,  
визначення їх типів та взаємозв'язків.  
2.4.1 Діаграма компонентів  
Ця діаграма компонентів відображає архітектуру системи, що 
складається з  трьох основних частин: Frontend, Backend та Database. Кожен 
компонент  представлений прямокутниками з підписами, що вказують на їхню 
роль та  взаємодії між ними. Деталізуємо ці частини та їх взаємодію:  
Frontend – Angular Framework:  
Angular: Використовується як основний фреймворк для фронтенд-
розробки.  Він забезпечує структуровану основу для створення динамічних 
веб-додатків. Import Data: Компонент, що відповідає за імпорт даних. Він 
взаємодіє з  основним фреймворком Angular.  
Make Prognosis: Компонент, що відповідає за створення прогнозів. Він  
також взаємодіє з Angular.  
Інтерфейси та компоненти:  
IHistoricalData: Інтерфейс для взаємодії з компонентом "Historical Data". 
IForecast: Інтерфейс для взаємодії з компонентом "Forecast".  
IReport: Інтерфейс для взаємодії з компонентом "Report".  
Backend – Django Framework:  
Django: Основний фреймворк для бекенд-розробки. Він забезпечує  
структуру для обробки HTTP запитів, управління даними та взаємодії з базою  
даних.  
Model: Компонент, який представляє інфраструктуру моделі даних у  
Django. Він взаємодіє з інтерфейсом IModel для збереження та отримання 
даних. View: Компонент, що представляє інфраструктуру для обробки  
представлень у Django. Взаємодіє з IView і потребує IModel для доступу до 
42 
 
даних. 
Інтерфейси:  
IModel -: Інтерфейс для збереження даних у моделі.  
IView: Інтерфейс для представлень у бекенді.  
Database – ПКПКК DB:  
ПКПКК DB: Представляє базу даних, що використовується для 
збереження  даних. Вона забезпечує інтерфейс QuerySetAPI (IDB) для 
взаємодії з бекендом. Інтерфейс QuerySetAPI : Використовується моделлю 
для виконання запитів  до бази даних.  
Рисунок 2.9 – Діаграма компонентів 
43 
 
2.4.2 Розгортання програмної системи на апаратних засобах. Діаграма  
розгортання  
Діаграма розгортання (Рис. 2.10) представлена у вигляді чотирьох 
вузлів: 1 Користувацький пристрій (User's Device)  
Web Browser: Веб-браузер, встановлений на пристрої користувача, 
який  використовується для доступу до веб-застосунку.  
2 Веб-сервер (Web Server)  
Frontend: Сервер, який обслуговує Angular застосунок. Цей сервер  
відповідає за відправку статичних файлів (HTML, CSS, JavaScript) до веб-
браузера  користувача.  
3 Сервер додатків (Application Server)  
Backend: Сервер, який обробляє логіку додатку. Використовує Django  
фреймворк для обробки запитів від фронтенду, виконання бізнес-логіки та  
взаємодії з базою даних.  
4 Сервер бази даних (Database Server)  
Database: Сервер бази даних, який використовує PostgreSQL для 
зберігання  даних. Цей сервер обробляє запити на читання, редагування та 
запис даних, які  надходять від бекенду.  
Процес взаємодії продемонстрований за допомогою направлених 
зв’язків  між вузлами:  
− користувач взаємодіє з веб-застосунком через веб-браузер на 
своєму  пристрої;  
− веб-браузер надсилає запити до веб-сервера, який обслуговує 
фронтенд  (angular);  
− фронтенд надсилає запити до бекенду (django), що розташований 
на  сервері додатків;  
− бекенд обробляє ці запити, взаємодіє з базою даних на сервері баз 
даних  (postgresql) для отримання або збереження даних;  
− база даних надсилає відповіді назад до бекенду;  
− бекенд надсилає оброблені дані назад до фронтенду; 
44 
 
− фронтенд оновлює веб-сторінку у веб-браузері користувача 
відповідно  до отриманих даних.  
 
Рисунок 2.10 – Діаграма розгортання  
2.5 Моделювання поведінки системи  
Моделювання поведінки системи дозволяє зрозуміти, як система 
взаємодіє  з користувачами та іншими компонентами, які процеси 
відбуваються всередині  системи та як вони впливають на її 
функціонування. Це важливий аспект розробки  програмного забезпечення, 
який допомагає виявити та вирішити потенційні  проблеми до фактичного 
впровадження системи.  
2.5.1 Діаграма діяльності  
Діаграма діяльності - це графічний інструмент для моделювання  
послідовності дій або процесів у системі. Основна мета такої діаграми 
полягає у  візуалізації послідовності дій та рішень, які приймаються в 
рамках конкретного  процесу. 
45 
 
У даній діаграмі діяльності (Рис. 2.11) представлено процес взаємодії  
користувача з програмою, яка має три основні сторінки: Головна, Імпорт  
історичних даних та Прогноз BTC.  
1 Головна сторінка:  
Користувач заходить на головну сторінку програми.  
На головній сторінці користувач бачить привітання та 
інструкції. 2 Сторінка Імпорту історичних даних:  
Користувач може перейти на сторінку імпорту історичних 
даних. Система відображає поточні дані.  
Користувач може вибрати завантаження нових даних або видалення 
всіх  поточних даних:  
Якщо користувач вибирає завантаження нових даних, система 
завантажує  дані та виводить повідомлення про успіх або невдачу.  
Якщо користувач вибирає видалення всіх поточних даних, система 
видаляє  дані та виводить повідомлення про успіх або невдачу.  
3 Сторінка прогнозу BTC:  
Користувач може перейти на сторінку прогнозу BTC.  
Система запитує прогнозний звіт.  
Система виводить опис результатів прогнозу та відображає діаграму 
з  результатами прогнозування.  
Якщо виникає помилка, система обробляє виняток.  
4 Повернення до початку:  
Після перегляду даних або результатів прогнозу користувач може  
повернутися на головну сторінку для вибору іншого розділу або виконання 
інших  дій. 
46 
 
 
 
Рисунок 2.11 –Діаграма діяльності  
2.5.2 Діаграма послідовності  
Діаграма послідовності (Рис. 2.12) представляє взаємодію 
користувача з  системою, а також взаємодію між елементами системи.  
Основні етапи взаємодії в системі:  
1 Користувач входить на головну сторінку:  
Користувач ініціює запит на завантаження головної сторінки 
47 
 
веб-сайту. FrontEnd обробляє запит і повертає користувачу 
завантажену сторінку. 
2 Запит на сторінку імпорту даних:  
Користувач переходить на сторінку імпорту даних.  
FrontEnd надсилає запит до BackEnd на перегляд історичних даних. 
BackEnd звертається до бази даних для пошуку історичних даних валюти.  
Database повертає історичні дані валют и до BackEnd.  
BackEnd створює демонстраційний графік і повертає FrontEnd масив  
історичних даних та графічне представлення.  
FrontEnd завантажує відповідну сторінку користувачу.  
3 Видалення історичних даних:  
Користувач натискає кнопку видалення історичних даних.  
FrontEnd надсилає запит на видалення до BackEnd.  
BackEnd звертається до бази даних для видалення історичних даних. 
Database підтверджує видалення і повертає відповідь до BackEnd. BackEnd 
підтверджує видалення до FrontEnd, який відображає  підтвердження 
користувачу.  
4 Додавання історичних даних:  
Користувач натискає кнопку додавання історичних даних.  
FrontEnd надсилає запит на додавання до BackEnd.  
BackEnd звертається до бази даних для додавання історичних даних. 
Database підтверджує додавання і повертає відповідь до BackEnd. BackEnd 
підтверджує додавання до FrontEnd, який відображає  підтвердження 
користувачу.  
5 Зміна історичних даних:  
Користувач натискає кнопку зміни історичних даних.  
FrontEnd надсилає запит на зміну до BackEnd.  
BackEnd звертається до бази даних для зміни історичних 
даних. Database підтверджує зміну і повертає відповідь 
до BackEnd.  
48 
 
BackEnd підтверджує зміну до FrontEnd, який відображає 
підтвердження  користувачу. 
6 Перегляд прогнозу:  
Користувач запитує сторінку перегляду прогнозу.  
FrontEnd надсилає запит на виконання прогнозу та демонстрацію  
результатів до BackEnd.  
BackEnd збирає дані з бази даних, проводить прогнозування та 
формує  графік.  
BackEnd повертає результати та їх графічне зображення до FrontEnd. 
FrontEnd завантажує сторінку з результатами прогнозування 
користувачу. Діаграма послідовності відображає взаємодію між 
користувачем, FrontEnd,   
BackEnd і БД, а також основні етапи обробки запитів та відповідей у 
системі. Вона  забезпечує чітке розуміння процесів, що відбуваються під час 
роботи з даними, їх  додавання, видалення, зміни та перегляду прогнозів.  
49 
 
 
Рисунок 2.12 – Діаграма послідовності 
2.5.3 Діаграма комунікації  
Діаграма комунікації (Рис. 2.13) візуалізує зв'язки між різними  
компонентами системи та показує, як користувач взаємодіє з системою для  
отримання прогнозів, даних та їх обробки. Вона демонструє взаємодії між  
компонентами, що забезпечують виконання запитів користувача та обробку  
даних.  
Основні етапи взаємодії:  
Користувач:  
Ініціює різні запити для перегляду прогнозів та даних.  
1 Взаємодія користувача з системою:  
Користувач надсилає запит на перегляд прогнозу до компонента  
BtcForecastView.  
Користувач надсилає запит на перегляд графіку прогнозу до 
50 
 
компонента  BtcForecastChartView.  
Користувач надсилає запит на перегляд даних до компонента  
BtcOhlcvDataView.  
Користувач надсилає запит на перегляд графіку даних до компонента  
BtcDataChartView.  
2 Отримання даних:  
Компоненти BtcOhlcvDataView та BtcDataChartView отримують дані 
від  BtcHistoricalOHLCV.  
3 Обробка прогнозів:  
ErrorAnalyzer використовується TimeSeriesForecast для 
налаштування  моделей прогнозування.  
Компоненти BtcForecastChartView, BtcDataChartView та 
BtcForecastView  надсилають запити до ErrorAnalyzer для отримання 
прогнозних моделей. 4 Побудова моделей:  
ErrorAnalyzer виконує налаштування моделей внутрішнім викликом  
setupModels().  
5 Отримання DataFrame:  
Компоненти BtcForecastView, BtcForecastChartView, 
BtcOhlcvDataView та  BtcDataChartView надсилають запити до 
BtcDataframeProvider для отримання  DataFrame.  
 
Рисунок 2.13 – Діаграма комунікації  
 
2.5.4 Діаграма скінченого автомату  
Діаграма скінченого автомату (Рис 2.14) візуалізує основні стани та  
51 
 
переходи у програмному комплексі прогнозування.  
Опис діаграми станів:  
1 Головна Сторінка:  
Початковий стан, де користувач знаходиться на головній сторінці 
веб-сайту. 2 Сторінка Імпорту історичних даних:  
Користувач може перейти на сторінку імпорту історичних даних з 
головної  сторінки.  
Система відображає поточні дані на цій сторінці.  
Користувач може завантажити нові дані або видалити всі поточні 
дані. Після виконання дії система виводить результат (успіх чи невдачу). 
Користувач може повернутися на головну сторінку або перейти на 
сторінку  прогнозу BTC.  
3 Сторінка прогнозу BTC:  
Користувач може перейти на сторінку прогнозу BTC з головної 
сторінки або  зі сторінки імпорту даних.  
Користувач може запитати демонстрацію прогнозу.  
Система виконує запит на прогнозування, відображає опис 
результатів та  графічний опис результатів прогнозування.  
Після виконання дії система виводить результат.  
Користувач може повернутися на головну сторінку або перейти на 
сторінку  імпорту даних.  
4 Відображення поточних даних:  
Система відображає поточні дані після запиту з сторінки імпорту  
історичних даних.  
Користувач може завантажити нові дані або видалити всі поточні 
дані. Після виконання дії система виводить результат і повертається до  
відображення поточних даних.  
5 Завантаження нових даних:  
Користувач може завантажити нові дані на сторінці імпорту 
історичних  даних.  
52 
 
Після завантаження нових даних система повертається до 
відображення  поточних даних.  
6 Видалення даних:  
Користувач може видалити всі поточні дані на сторінці імпорту 
історичних  даних.  
Після видалення даних система повертається до відображення 
поточних  даних.  
7 Прогнозуча модель:  
Після запиту прогнозування система створює модель прогнозування. 
Система повертає опис моделі до стану відображення результатів  
прогнозування.  
8 Графічний опис результатів:  
Після запиту на виведення графічного опису система відображає 
діаграму з  результатами прогнозування.  
Система запитує опис моделі для створення графіку. 
Система повертає створений графік до стану відображення 
результатів  прогнозування.  
9 Відображення результатів прогнозування:  
Система відображає результати прогнозування після запиту 
користувача. Користувач може повернутися на головну сторінку після 
перегляду  результатів прогнозування.  
 
Рисунок 2.14 – Діаграма скінченого автомату 
53 
 
 
Висновки до розділу 2  
У цьому розділі було розглянуто та проаналізовано процес 
моделювання  предметної області для проектування програмного 
забезпечення інформаційної  системи прогнозування валют . Було створено 
інформаційну модель, яка  визначає структуру даних, інтерфейси взаємодії, 
логіку обробки даних, модуль  прогнозування та засоби візуалізації і 
звітності. Ця модель забезпечує основну  основу для створення комплексної 
та ефективної системи, здатної надавати точні  та актуальні прогнози.  
Процес формування вимог до програмного забезпечення включав  
визначення функціональних та нефункціональних вимог замовника і 
розробника,  а також створення діаграми прецедентів. Це допомогло 
визначити основні  сценарії використання системи, зокрема перегляд та 
редагування історичних  даних, а також перегляд прогнозів. Такий підхід 
дозволяє чітко визначити  очікувану поведінку системи та її взаємодію з 
користувачами.  
Було розроблено логічну структуру системи за допомогою діаграм 
класів та  пакетів. Діаграми класів відображають структуру основних 
сутностей системи та  їхні взаємозв'язки, тоді як діаграми пакетів 
демонструють логічні групи  компонентів системи та їхню взаємодію. Це 
сприяє полегшенню розуміння та  управління складовими частинами 
програмного забезпечення.  
Архітектурне проектування охоплювало створення діаграм 
компонентів і  розгортання, що визначають основні частини системи 
(Frontend, Backend,  Database) та їхню взаємодію. Діаграма розгортання 
ілюструє процеси взаємодії  між користувацькими пристроями, веб-
серверами, серверами додатків і базами  даних, що забезпечує надійне 
функціонування системи.  
Моделювання поведінки системи було виконано за допомогою 
діаграм  діяльності, послідовності, комунікації та скінченого автомату. Ці 
54 
 
діаграми  надають чітке уявлення про процеси, що відбуваються всередині 
системи, її  взаємодію з користувачами та іншими компонентами, що 
дозволяє виявити і  вирішити потенційні проблеми до фактичного 
впровадження системи. 
  
55 
 
РОЗДІЛ 3. РОЗРОБКА ТА ТЕСТУВАННЯ ПРОГРАМНОГО  
ЗАБЕЗПЕЧЕННЯ  
У цьому розділі буде розглянуто процес розробки та тестування  
програмного забезпечення для виявлення ймовірного розвитку тенденцій  
заданого явища в майбутньому. Розробка включатиме вибір програмного  
середовища, розробку алгоритмів та кодування.   
Цей розділ описує всі етапи розробки програмного забезпечення,  
включаючи вибір технологій, розробку алгоритмів, створення бази даних та  
проектування користувацького інтерфейсу, а також тестування та валідацію  
кінцевого продукту.  
3.1 Розробка програмного комплексу  
3.1.1 Обгрунтування вибору засобів реалізації  
Для розробки програмного комплексу, що здатен виявляти ймовірний  
розвиток тенденцій заданого явища в майбутньому, було обрано сучасні та  
перевірені технології розробки web-додатків. Нижче наведено детальне  
обґрунтування вибору кожної з них:  
Python: Python є однією з найпопулярніших мов програмування, 
відомою  своєю простотою у вивченні та використанні. Вона забезпечує 
високу  продуктивність і багатий вибір бібліотек для обробки даних та 
машинного  навчання. Python було обрано для реалізації основної логіки 
обробки даних та  розробки серверної частини додатка завдяки його 
універсальності та потужним  можливостям [25]. 
Django: Django – це високорівневий веб-фреймворк для Python, який 
сприяє  швидкому розвитку веб-додатків з акцентом на автоматизацію та 
чистий код. Він  надає набір інструментів для створення безпечних і 
масштабованих додатків.  Django обрано для реалізації бекенду, оскільки він 
забезпечує швидкий розвиток  та підтримку різних інтеграцій [26]. 
PostgreSQL: PostgreSQL – це потужна та надійна об'єктно-реляційна 
система  керування базами даних (СКБД), яка підтримує розширений набір 
56 
 
функцій та можливостей. Використання PostgreSQL дозволяє ефективно 
зберігати та  управляти великими обсягами історичних даних. Його 
надійна та масштабована  архітектура забезпечує стабільну роботу бази 
даних навіть при великих  навантаженнях [27].  
Angular: Angular – це платформа та фреймворк для розробки 
динамічних  веб-додатків. Вона дозволяє створювати інтерактивні 
інтерфейси користувача з  використанням компонентів, які легко 
підтримувати та повторно  використовувати. Angular обрано для реалізації 
фронтенду, оскільки він  забезпечує високу продуктивність і зручність 
використання [28]. 
TypeScript: TypeScript – це мова програмування, що є надмножиною  
JavaScript, яка додає статичну типізацію. Використання TypeScript в Angular  
дозволяє забезпечити більш надійний код, зменшуючи кількість помилок 
під час  компіляції. Це сприяє покращенню якості коду та полегшує 
підтримку великих  проектів [29]. 
HTML: HTML (HyperText Markup Language) є стандартною мовою 
розмітки  для створення веб-сторінок. HTML визначає структуру веб-
контенту, включаючи  заголовки, абзаци, списки, посилання та інші 
елементи. Використання HTML  дозволяє створити зрозумілу та 
організовану структуру веб-інтерфейсу [30]. 
CSS: CSS (Cascading Style Sheets) використовується для оформлення 
та  стилізації веб-сторінок. CSS дозволяє визначати вигляд і відображення 
елементів  HTML, включаючи кольори, шрифти, відступи, рамки та інші 
властивості.  Використання CSS забезпечує привабливий та узгоджений 
дизайн веб  
інтерфейсу [31 ].  
Інтегровані середовища розробки (IDE):  
WebStorm: WebStorm – це потужне IDE для розробки фронтенду, яке  
підтримує JavaScript, TypeScript, HTML та CSS. WebStorm надає 
інструменти для  автоматичного доповнення коду, відлагодження та 
управління версіями, що  значно підвищує продуктивність розробки. Його 
57 
 
інтуїтивний інтерфейс та  широкий набір функцій роблять його ідеальним 
вибором для розробки інтерфейсу  користувача на Angular [32]. 
PyCharm: PyCharm – це потужне IDE для розробки на Python, яке 
забезпечує  широкий набір інструментів для написання, відлагодження та 
тестування коду.  PyCharm підтримує інтеграцію з Django та іншими веб-
фреймворками, що робить  його ідеальним вибором для розробки бекенду. 
Його функції автоматичного  доповнення, перевірки синтаксису та 
інтеграції з системами контролю версій  забезпечують високу якість коду та 
зручність розробки [33]. 
3.1.2 Опис структурної (функціональної) схеми  
Програмний комплекс синтезу прогнозних моделей  побудований на  
основі клієнт-серверної архітектури, що дозволяє ефективно розподіляти  
завдання між клієнтською та серверною частинами. Сервер обробляє запити 
від  клієнтів, виконує необхідні обчислення та взаємодіє з базою даних, 
після чого  надсилає відповіді назад клієнту. Така архітектура забезпечує 
гнучкість,  масштабованість та зручність управління даними, оскільки 
складна обробка і  зберігання даних виконуються на сервері, а клієнт 
відповідає за відображення  даних та взаємодію з користувачем.  
 
Рисунок 3.1 - Структурна схема ПКПКК 
58 
 
 
Рисунок 3.2 - Функціональна схема ПКПКК  
 
Опис компонентів схеми:  
1 Програмний комплекс синтезу прогнозних моделей  2 Цей 
компонент є основною системою, яка об'єднує всі підсистеми для  
забезпечення функціональності синтезу прогнозних моделей . 3 
Система клієнтського веб-додатку на базі фреймворку Angular 4 Ця 
система відповідає за взаємодію з користувачем і включає в себе такі  
підсистеми:  
5 Підсистема графічного інтерфейсу користувача: Забезпечує  
відображення інформації та взаємодію користувача з додатком 
через  веб-інтерфейс.  
6 Підсистема формування та обробки запитів до серверної частини:  
Відповідає за відправку запитів до серверної частини додатка і 
обробку  отриманих відповідей.  
7 Система серверного веб-додатку на базі фреймворку Django: 8 Ця 
система відповідає за серверну логіку та обробку даних. Включає  
наступні підсистеми:  
9 Підсистема API для обміну даними з клієнтським додатком: 
Забезпечує  взаємодію між клієнтським веб-додатком та 
59 
 
серверною частиною через API.  
10 Підсистема прогнозуючого фільтра: Відповідає за обробку даних 
та  формування прогнозів.  
11 Підсистема ведення бази даних: Відповідає за управління даними 
у базі  даних, забезпечуючи їх збереження, оновлення та 
видалення.  
12 База Даних.  
Цей компонент використовується для збереження та управління 
даними,  пов'язаними з прогнозами та історичними курсами валют . 
Введення та зміна історичних даних  
Цей компонент дозволяє вводити та змінювати історичні дані, що  
використовуються для синтезу прогнозних моделей .  
Загальна архітектура  
Ця схема демонструє загальну архітектуру програмного комплексу,  
показуючи основні компоненти системи та їх взаємодію. Основна увага  
приділяється розподілу обов'язків між клієнтською частиною (frontend) та  
серверною частиною (backend), а також організації збереження даних у базі 
даних.  
3.1.3 Опис логічної схеми системи  
Опис логічної схеми поданий у вигляді текстового опису алгоритму  
функціонування системи, а також графічно представлений у вигляді блок-
схеми. Для складних структур об'єкта надається узагальнена блок-схема 
алгоритму всієї  системи, а також блок-схеми алгоритмів її окремих 
компонентів. Логічна  структура однозначно описує основні інформаційні 
процеси в системі,  включаючи операції зі зберігання, обробки, відображення 
та передачі даних,  циклічні структури та переходи за умовою, що забезпечує 
чітке розуміння роботи  системи.  
Логічна схема системи для веб-сайту прогнозування (Рис. 3.3) описує  
основні інформаційні процеси, які відбуваються на сайті:  
60 
 
1 Перейти на головну сторінку: Користувач починає роботу з веб-сайтом  
з головної сторінки.  
2 Перевірка необхідності імпорту історичних даних: Система перевіряє, 
чи потрібно користувачеві перейти на сторінку імпорту історичних  даних.  
3 Перехід на сторінку імпорту історичних даних: Якщо користувач  
підтверджує необхідність, система перенаправляє його на сторінку  імпорту 
історичних даних.  
4 Відображення поточних даних: На сторінці імпорту історичних даних  
користувач може переглядати поточні дані.  
5 Перевірка необхідності завантаження нових даних: Система запитує, 
чи  потрібно користувачеві завантажувати нові дані.  
6 Завантаження нових даних: Якщо користувач підтверджує, система  
дозволяє завантажити нові дані.  
7 Відображення результату запиту: Після завантаження нових даних  
система відображає результат виконання запиту.  
8 Перевірка необхідності видалення поточних даних: Якщо користувач 
не  хоче завантажувати нові дані, система запитує, чи потрібно видалити всі  
поточні дані.  
9 Видалення всіх поточних даних: Якщо користувач підтверджує, 
система  видаляє всі поточні дані.  
10 Відображення результату запиту: Після видалення поточних даних  
система відображає результат виконання запиту.  
11 Перевірка необхідності переходу на сторінку прогнозу BTC: Система  
запитує, чи потрібно користувачеві перейти на сторінку прогнозу BTC.  
12 Перехід на сторінку прогнозу BTC: Якщо користувач підтверджує  
необхідність, система перенаправляє його на сторінку прогнозу BTC.  
13 Запит прогнозного звіту: На сторінці прогнозу BTC користувач може  
запитати прогнозний звіт.  
14 Відображення опису результатів: Система відображає опис 
результатів  прогнозування.  
15 Відображення діаграми з результатами прогнозування: Система  
61 
 
відображає діаграму з результатами прогнозування.  
16 Перехід на головну сторінку: Якщо користувач не підтверджує  
необхідність переходу на сторінку імпорту історичних даних або на  сторінку 
прогнозу BTC, система автоматично перенаправляє його на  головну сторінку 
веб-сайту.  
Ця логічна схема дозволяє чітко розуміти послідовність дій, які виконує  
система для задоволення запитів користувачів та надання їм необхідної  
інформації.  
 
62 
 
Рисунок 3.3 - Блок-схема роботи веб-додатку ПКПКК 
3.1.4 Розробка бази даних  
Розробка бази даних для веб-сервісу, що призначений для аналізу та  
прогнозування даних валют , включає створення структури даних,  
визначення зв'язків між таблицями та забезпечення ефективного доступу до  
інформації. У цій секції детально розглянуто процес проектування бази 
даних.  
Для даного проекту використовується реляційна база даних 
PostgreSQL.  Вибір PostgreSQL обумовлений тим, що я маю досвід роботи з 
цією системою і  вона для мене вирізняється поміж інших СУБД високою 
продуктивністю,  надійністю та підтримкою складних запитів.  
Для розробки бази даних для зберігання характеристик прогнозуючих  
моделей і даних OHLCV (відкриття, максимум, мінімум, закриття, обсяг), 
було  спроектовано 7 взаємопов'язаних таблиць (Рис. 3.4). Нижче наведено 
детальну  структуру кожної таблиці, включаючи їх призначення та поля.  
 
Рисунок 3.4 – ERD діаграма бази даних 
Таблиця 3.1 btc_daily_forecast_report зберігає дані про щоденні прогнози.  
63 
 
  
64 
 
 
Таблиця 3.1  
Структура таблиці btc_daily_forecast_report  
Поле  Тип  Опис  
last_known_date Остання відома дата  
timestamp with time zone  
time_series_size Розмір тимчасового 
forecast_horizon integer  ряду Горизонт 
standard_deviati прогнозу  
integer  
on  Стандартне 
double precision  
model_type_id  відхилення Тип 
model_id  integer  моделі  
Ідентифікатор моделі 
integer  
 
Таблиця 3.2 btc_daily_ohlcv зберігає щоденні дані про відкриття, 
закриття, найвищу та найнижчу ціну:  
Таблиця 3.2  
Структура таблиці btc_daily_ohlcv 
Поле  Тип  Опис  
high  Найвища ціна  
double precision  
low  Найнижча ціна  
open  double precision  Ціна відкриття  
volumefrom  double precision  Об'єм з  
volumeto  Об'єм до  
double precision  
close  Ціна закриття  
conversionType double precision  Тип конверсії  
65 
 
conversionSymb double precision  
Символ конверсії  
ol time  
varchar(50)  Час 
varchar(10)  
timestamp with time zone  
 
Таблиця 3.3 btc_hourly_forecast_report зберігає дані про годинні прогнози.  
Таблиця 3.3  
Структура таблиці btc_hourly_forecast_report  
Поле  Тип  Опис  
last_known_date Остання відома дата  
timestamp with time zone  
time_series_size Розмір тимчасового 
forecast_horizon integer  ряду Горизонт 
standard_deviati прогнозу  
integer  
on  Стандартне відхилення  
double precision  
model_type_id  Тип моделі  
model_id  integer  Ідентифікатор моделі 
integer  
 
Таблиця 3.4 btc_hourly_ohlcv зберігає годинні дані про відкриття, 
закриття,  найвищу та найнижчу ціну.  
  
66 
 
 
Таблиця 3.4  
Структура таблиці btc_hourly_ohlcv 
Поле  Тип  Опис  
high  Найвища ціна  
double precision  
low  Найнижча ціна  
open  double precision  Ціна відкриття  
volumefrom  double precision  Об'єм з  
volumeto  Об'єм до  
double precision  
close  Ціна закриття  
conversionType double precision  Тип конверсії  
conversionSymb Символ конверсії  
double precision  
ol Time  Час 
varchar(50)  
varchar(10)  
timestamp with time zone  
 
Таблиця 3.5 btc_minute_forecast_report зберігає дані про хвилинні прогнози.  
Таблиця 3.5  
Структура таблиці btc_minute_forecast_report  
Поле  Тип  Опис  
last_known_date Остання відома дата  
timestamp with time zone  
67 
 
time_series_size integer  
Розмір 
forecast_horizon 
integer  тимчасового ряду 
standard_deviati
Горизонт 
on  double precision  
прогнозу  
model_type_id  
integer  Стандартне відхилення  
model_id  
Тип моделі  
integer  
Ідентифікатор моделі 
 
 
Таблиця 3.6 btc_minute_ohlcv зберігає хвилинні дані про відкриття,  
закриття, найвищу та найнижчу ціну.  
Таблиця 3.6  
Структура таблиці btc_minute_ohlcv 
Поле  Тип  Опис  
high  Найвища ціна  
double precision  
low  Найнижча ціна  
open  double precision  Ціна відкриття  
volumefrom  double precision  Об'єм з  
volumeto  Об'єм до  
double precision  
close  Ціна закриття  
conversionType double precision  Тип конверсії  
conversionSymb Символ конверсії  
double precision  
ol time  Час 
varchar(50)  
varchar(10)  
68 
 
timestamp with time zone  
Таблиця 3.7 forecast_model_type зберігає типи моделей прогнозування.  
Таблиця 3.7  
Структура таблиці forecast_model_type  
Поле  Тип  Опис  
high  Найвища ціна  
double precision  
low  Найнижча ціна  
open  double precision  Ціна відкриття 
double precision  
 
Така структура бази даних забезпечує зберігання даних про прогнози 
та  історичні ціни валют , дозволяючи ефективно оперувати великими  
об'ємами даних та проводити складні запити.  
3.1.5 Розробка інтерфейсу користувача  
При розробці інтерфейсу користувача я намагався створити  
мінімалістичний дизайн із забезпеченням базового функціоналу програми. 
На  рисунку 3.5 відображено початкову сторінку веб-сайту:  
 
Рисунок 3.5 – Головна сторінка ПКПКК 
69 
 
На рисунках 3.6 та 3.7 зображені частини інтерфейсу сторінки 
Import-BTC Data, на яких ми бачимо інструменти керування даними а 
також кнопку запуску  прогнозування  
 
Рисунок 3.6 – Інтерфейс сторінки Import-BTC-Data  
 
70 
 
Рисунок 3.7 – Інтерфейс сторінки Import-BTC-Data 
 
Після імпорту необхідного обсягу даних, вибору режиму та запуску  
прогнозування, відбувається перехід на сторінку прогнозу відповідного  
таймфрейму (Рис. 3.8 та 3.9):  
 
Рисунок 3.8 – Інтерфейс сторінки Hourly Forecast Report  
 
71 
 
Рисунок 3.9 – Інтерфейс сторінки Hourly Forecast Report  
3.1.6 Опис розробки програмних компонентів  
У даному підрозділі представлено опис розроблених модулів та  
структурних компонентів системи, зокрема їх призначення, зв’язки з 
іншими  
компонентами, особливості реалізації алгоритмів, використані методи та  
технології.   
Клієнтська частина веб-сервісу для синтезу прогнозних моделей   
реалізована на базі фреймворку Аngular. При розробці використані такі  
технології: HTML для створення структури сторінок, CSS для їх стилізації, 
а  також Typescript для додавання інтерактивності. Основні компоненти 
включають:  
Головна сторінка: містить загальну інформацію про сервіс, а також  
навігацію до інших розділів.  
Сторінка імпорту даних: забезпечує можливість завантаження 
історичних  даних з біржі в режимі реального часу.  
Сторінка прогнозів: дозволяє користувачам переглядати результати  
синтезу прогнозних моделей з описом характеристик визначеної моделі  
прогнозування.  
Серверна частина (Back-end) Технології: Python, Django  
Модуль імпорту даних (DataImportModule)  
− призначення: модуль імпорту даних відповідає за завантаження та  
обробку даних про погодинні цінові показники валюти з 
зовнішнього  джерела (api). цей модуль забезпечує отримання 
даних та їх збереження  в базі даних;  
− зв’язки з іншими компонентами: модуль імпорту даних взаємодіє з  
базою даних для збереження завантажених даних та з іншими 
модулями,  які використовують ці дані для подальшого аналізу та 
прогнозування;  
72 
 
− особливості реалізації алгоритму: модуль використовує бібліотеку  
requests для отримання даних з api та orm django для взаємодії з 
базою  даних.  
Модуль прогнозування (ForecastModule)  
− призначення: модуль прогнозування відповідає за побудову 
моделей  прогнозування на основі історичних даних та генерацію 
прогнозів для  майбутніх цін біткоїну;  
− зв’язки з іншими компонентами: модуль використовує дані з бази 
даних, які були завантажені модулем імпорту даних. результати 
прогнозування  можуть використовуватися іншими компонентами 
для відображення або  подальшого аналізу;  
− особливості реалізації алгоритму: модуль використовує бібліотеку  
sklearn для побудови моделі та генерації прогнозів.  
Представлення даних (Data Presentation Module)  
− призначення: модуль представлення даних відповідає за відображення  
отриманих та прогнозованих даних у вигляді графіків та таблиць; − зв’язки з 
іншими компонентами: модуль використовує дані з бази даних  та результати 
прогнозування для створення графіків та таблиць, які  потім відображаються 
користувачам;  
− особливості реалізації алгоритму: модуль використовує бібліотеку  
matplotlib для побудови графіків та pandas для обробки даних. Основний 
додаток Django (DjangoApplication)  
− призначення: основний додаток django відповідає за координацію  
роботи всіх модулів, маршрутизацію запитів, аутентифікацію  користувачів та 
забезпечення загальної логіки програми;  
− зв’язки з іншими компонентами: основний додаток взаємодіє з усіма  
іншими модулями, забезпечуючи їх координацію та інтеграцію в єдину  
систему;  
− особливості реалізації алгоритму: основний додаток використовує  
фреймворк django для управління моделями, представленнями та  
73 
 
маршрутизацією запитів.  
База даних: PostgreSQL  
База даних зберігає інформацію про прогнози та історичні дані  
валют . Основні компоненти:  
− таблиця btc_daily_forecast_report: зберігає інформацію про щоденні  
прогнози валют (остання відома дата, розмір тимчасового ряду,  горизонт 
прогнозу, стандартне відхилення, тип моделі, ідентифікатор  моделі);  
− таблиця btc_daily_ohlcv: зберігає щоденні дані (таймфрейм - день) про  
відкриття, закриття, найвищу та найнижчу ціну валют (найвища  ціна, 
найнижча ціна, ціна відкриття, об'єм з, об'єм до, ціна закриття, тип  конверсії, 
символ конверсії, час);  
− таблиця btc_hourly_forecast_report: зберігає інформацію про годинні  
прогнози валют (остання відома дата, розмір тимчасового ряду,  горизонт 
прогнозу, стандартне відхилення, тип моделі, ідентифікатор  моделі);  
− таблиця btc_hourly_ohlcv: зберігає годинні дані (таймфрейм - година)  
про відкриття, закриття, найвищу та найнижчу ціну валют  (найвища ціна, 
найнижча ціна, ціна відкриття, ціна закриття, об'єм з,  об'єм до, тип конверсії, 
символ конверсії, час);  
− таблиця btc_minute_forecast_report: зберігає інформацію про хвилинні  
прогнози валют (остання відома дата, розмір тимчасового ряду,  горизонт 
прогнозу, стандартне відхилення, тип моделі, ідентифікатор  моделі);  
− таблиця btc_minute_ohlcv: зберігає хвилинні дані (таймфрейм - 
хвилина)  про відкриття, закриття, найвищу та найнижчу ціну валют  (найвища 
ціна, найнижча ціна, ціна відкриття, об'єм з, об'єм до, ціна  закриття, тип 
конверсії, символ конверсії, час);  
− таблиця forecast_model_type: зберігає інформацію про типи моделей  
прогнозування (ідентифікатор, назва моделі).  
3.2 Тестування системи  
Тестування програмного забезпечення є ключовим етапом у розробці  
74 
 
програмних продуктів, що забезпечує виявлення дефектів, помилок і 
недоліків до  моменту введення в експлуатацію або випуску на ринок. Цей 
процес включає  запуск програмного комплексу з різними вхідними даними 
та умовами, що  імітують реальні сценарії використання, а також аналіз 
реакції програми на ці  дані. Основна мета тестування — підтвердити 
відповідність роботи програмного комплексу вимогам, забезпечити високу 
якість і надійність програмного  продукту.  
3.2.1 Модульне тестування  
Модульне тестування - це процес тестування окремих компонентів  
програмного забезпечення в ізольованому середовищі, яке штучно створене 
для  цього. Метою модульного тестування є підтвердження коректності 
виконання  своїх функцій кожною окремою частиною системи.  
Для модульного тестування Django-додатків використовуються 
наступні  технології:  
− unittest: вбудована в python бібліотека для створення та запуску  
модульних тестів;  
− django testcase: клас, який надає методи для створення тестових  
випадків, специфічних для django, включаючи роботу з тестовою базою  
даних;  
− mock: бібліотека для створення mock-об'єктів, які дозволяють 
ізолювати  тести від зовнішніх залежностей.  
У цьому розділі представлено приклади модульного тестування 
різних  компонентів Django-додатку: алгоритм імпорту даних, 
серіалізаторів і моделей. − тест створення запису BtcMinuteOHLCV: Тест 
перевіряє можливість  створення об'єкта BtcMinuteOHLCV з валідними 
даними і збереження  його в базі даних;  
− тест серіалізації BtcHourlyOHLCV: Тест перевіряє коректність  
серіалізації об'єкта BtcHourlyOHLCV за допомогою серіалізатора  
BtcHourlyOHLCVSerializer;  
− тест серіалізації BtcMinuteOHLCV: Тест перевіряє коректність  
75 
 
серіалізації об'єкта BtcMinuteOHLCV за допомогою серіалізатора  
BtcMinuteOHLCVSerializer;  
− тест функції fetch_and_insert_hourly_ohlcv з mock: Тест перевіряє  
функцію fetch_and_insert_hourly_ohlcv з використанням mock для HTTP  
запитів для імітації відповіді API; 
− тест функції fetch_and_insert_minute_ohlcv з mock: Тест перевіряє  
функцію fetch_and_insert_minute_ohlcv з використанням mock для HTTP  
запитів для імітації відповіді API.  
Таблиця 3.8   
Модульне тестування  
Тестовий сценарій  Результат 
Тест створення запису   Успішний запуск 
BtcMinuteOHLCV 
Тест методу str для   Успішний запуск 
BtcMinuteOHLCV 
Тест серіалізації   Успішний запуск 
BtcHourlyOHLCV 
Тест серіалізації   Успішний запуск 
BtcMinuteOHLCV 
Тест функції   Успішний запуск 
fetch_and_insert_hourly_ohlc
v  з mock 
Тест функції   Успішний запуск 
fetch_and_insert_minute_ohlc
v  з mock 
 
3.2.2 Інтеграційне тестування  
Інтеграційне тестування - це вид тестування, де перевіряється 
взаємодія  модулів та підсистем, об'єднаних в єдину систему. Це включає 
76 
 
перевірку того, як  різні компоненти співпрацюють між собою, а також 
перевірку інтерфейсів між  ними. Метою інтеграційного тестування є 
виявлення помилок, які можуть  виникнути при інтеграції різних модулів, 
та забезпечення їх коректної взаємодії в  реальних умовах експлуатації.  
Інтеграційне тестування спрямоване на перевірку взаємодії між 
різними  компонентами системи. У нашому випадку це включає тестування 
API ендпоінтів,  які взаємодіють з базою даних та іншими компонентами 
додатку. 
 − тест отримання списку всіх записів BtcHourlyOHLCV: 
Перевіряється робота ендпоінту BtcHourlyOHLCVListView, який повинен 
повертати  список всіх записів BtcHourlyOHLCV;  
− тест видалення всіх записів BtcHourlyOHLCV: Перевіряється робота  
ендпоінту erase_all_hourly_data, який повинен видаляти всі записи  
BtcHourlyOHLCV;  
− тест імпорту даних для BtcHourlyOHLCV: Перевіряється робота  
ендпоінту import_hourly_ohlcv_data, який повинен імпортувати дані для  
BtcHourlyOHLCV;  
− тест отримання всіх записів BtcHourlyOHLCV: Перевіряється 
робота  ендпоінту BtcHourlyOHLCVView, який повинен повертати всі 
записи  BtcHourlyOHLCV;  
− тест отримання графіку BtcHourlyOHLCV: Перевіряється робота  
ендпоінту BitcoinHourlyChartView, який повинен повертати графік цін  
BtcHourlyOHLCV.  
Таблиця 3.9   
Інтеграційне тестування 
Тестовий сценарій  Результат 
BtcHourlyOHLCVView Успішне завантаження залежностей 
+  BtcHourlyOHLCV 
77 
 
BitcoinHourlyChartView Успішне завантаження залежностей 
+  BtcHourlyOHLCV +   
matplotlib 
BtcHourlyOHLCVListView Успішне завантаження залежностей 
+  BtcHourlyOHLCV 
erase_all_hourly_data +   Успішне завантаження залежностей 
BtcHourlyOHLCV 
import_hourly_ohlcv_data +  Успішне завантаження залежностей 
fetch_and_insert_hourly_ohl
cv 
 
− btcHourlyOHLCVView + BtcHourlyOHLCV: Успішне завантаження  
залежностей - Перевірка взаємодії між представленням  
BtcHourlyOHLCVView та моделлю BtcHourlyOHLCV. Тест перевіряє, чи  
правильно повертаються всі записи погодинних даних біткоїну;  
− bitcoinHourlyChartView + BtcHourlyOHLCV + matplotlib: Успішне  
завантаження залежностей - Перевірка взаємодії між представленням  
bitcoinHourlyChartView, моделлю BtcHourlyOHLCV та бібліотекою для  
побудови графіків matplotlib. Тест перевіряє, чи правильно будується  
графік погодинних даних біткоїну;  
− btcHourlyOHLCVListView + BtcHourlyOHLCV: Успішне 
завантаження  залежностей - Перевірка взаємодії між представленням  
BtcHourlyOHLCVListView та моделлю BtcHourlyOHLCV. Тест  перевіряє, 
чи правильно повертаються всі записи погодинних даних  біткоїну;  
− erase_all_hourly_data + BtcHourlyOHLCV: Успішне завантаження  
залежностей - Перевірка взаємодії між функцією erase_all_hourly_data та  
моделлю BtcHourlyOHLCV. Тест перевіряє, чи правильно видаляються  всі 
записи погодинних даних біткоїну;  
− import_hourly_ohlcv_data + fetch_and_insert_hourly_ohlcv: Успішне  
78 
 
завантаження залежностей - Перевірка взаємодії між функцією  
import_hourly_ohlcv_data та зовнішньою функцією  
fetch_and_insert_hourly_ohlcv. Тест перевіряє, чи правильно  імпортуються 
дані погодинних OHLCV.  
3.2.3 Системне тестування  
Системне тестування - це процес перевірки програмного забезпечення 
на  відповідність вихідним вимогам, як функціональним, так і 
нефункціональним, на  повній, інтегрованій системі.  
Пояснення результатів системного тестування для кожного сценарію 
 − dataImportModule (Модуль імпорту даних): Виконання успішне - Це  
означає, що підсистема або модуль імпорту даних у програмі пройшов 
тестування і працює належним чином. Всі дані успішно завантажуються  та 
обробляються без помилок;  
− forecastModule (Модуль прогнозування): Виконання успішне - Це  
показує, що модуль прогнозування виконує свої функції правильно,  
генеруючи точні прогнози на основі вхідних даних. Прогнози  відображаються 
коректно і без помилок;  
− djangoApplication (Додаток Django): Успішний запуск - Це 
підтверджує,  що весь додаток Django, включаючи всі його компоненти та 
маршрути,  успішно запускається та працює без помилок. Всі залежності  
завантажуються коректно, і додаток відповідає на запити.  
Таблиця 3.10   
Системне тестування  
Функціональність/Сценарій  Результат 
DataImportModule  Виконання успішне 
ForecastModule  Виконання успішне 
DjangoApplication  Успішний запуск 
79 
 
 
3.2.4 Приймальне тестування   
Приймальне тестування є важливим етапом у передачі завершеного  
продукту або його частини клієнту. Його мета полягає в перевірці 
відповідності  продукту вимогам, зазначеним у специфікаціях програмного 
забезпечення,  шляхом виконання тестових сценаріїв та випадків.  
Таблиця 3.11  
Приймальне тестування 
Тестовий ендпоінт  Результат 
GET /api/btc-hourly-chart/  200 
GET /api/btc-hourly-price/  200 
GET/api/btc-forecast-hourly-chart/  200 
 
Продовження таблиці 3.11  
GET /api/btc-forecast-hourly/  200 
GET /api/hourly/ohlcv/  200 
GET /api/hourly/ohlcv/time-bound/  200 
DELETE /api/hourly/erase/  200 
DELETE /api/hourly/erase-before-date/  200 
GET /api/hourly/table-info/  200 
 
Результати по кожному ендпоінту:  
1 GET /api/btc-hourly-chart/:  
Очікуваний результат - 200. Це означає, що при надсиланні запиту на  
80 
 
отримання годинного графіку Bitcoin очікується успішна обробка запиту  
сервером і повернення статусу 200, що підтверджує успішне виконання 
операції. 2 GET /api/btc-hourly-price/:  
Очікуваний результат - 200. При запиті на отримання годинної ціни 
на  Bitcoin очікується успішне отримання даних і повернення статусу 200. 3 
GET /api/btc-forecast-hourly-chart/:  
Очікуваний результат - 200. При запиті на отримання прогнозу 
годинного  графіку Bitcoin очікується успішне створення прогнозу і 
повернення статусу 200. 4 GET /api/btc-forecast-hourly/:  
Очікуваний результат - 200. При запиті на отримання годинного 
прогнозу  для Bitcoin очікується успішне створення прогнозу і повернення 
статусу 200. 5 GET /api/hourly/ohlcv/:  
Очікуваний результат - 200. При запиті на отримання годинних даних  
OHLCV для Bitcoin очікується успішне отримання даних і повернення 
статусу  200.  
6 GET /api/hourly/ohlcv/time-bound/: 
Очікуваний результат - 200. При запиті на отримання годинних даних  
OHLCV за певний проміжок часу очікується успішне отримання даних і  
повернення статусу 200.  
7 DELETE /api/hourly/erase/:  
Очікуваний результат - 200. При запиті на видалення всіх годинних 
даних  OHLCV очікується успішне видалення даних і повернення статусу 
200. 8 DELETE /api/hourly/erase-before-date/:  
Очікуваний результат - 200. При запиті на видалення годинних даних  
OHLCV до певної дати очікується успішне видалення даних і повернення 
статусу  200.  
9 GET /api/hourly/table-info/:  
81 
 
Очікуваний результат - 200. При запиті на отримання інформації про  
таблицю годинних даних OHLCV очікується успішне отримання інформації 
і  повернення статусу 200.  
10 POST /api/hourly/ohlcv/import/:  
Очікуваний результат - 200. При запиті на імпорт годинних даних 
OHLCV  очікується успішний імпорт даних і повернення статусу 200.  
Усі ці результати свідчать про те, що функціонал веб-застосунку 
відповідає  вимогам і може бути прийнятий замовником або користувачем.  
3.3 Приклади впровадженого програмного комплексу  
При розробці інтерфейсу користувача я намагався створити  
мінімалістичний дизайн із забезпеченням базового функціоналу програми. 
На  головній сторінці знаходиться опис програмного комплексу, також 
наявна бічна  панель навігації з кнопками переходу на сторінку імпорту 
даних та повернення на  головну сторінку. На рисунку 3.10 відображено 
початкову сторінку веб-сайту: 
 
Рисунок 3.10 – Головна сторінка ПКПКК  
82 
 
На рисунках 3.11 та 3.12 зображені частини інтерфейсу сторінки 
Import BTC-Data, на яких ми бачимо інструменти керування даними а 
також кнопку  запуску прогнозування:  
 
Рисунок 3.11 – Інтерфейс сторінки Import-BTC-Data 
77  
 
83 
 
 
Рисунок 3.12 – Інтерфейс сторінки Import-BTC-Data  
Після імпорту необхідного обсягу даних, вибору режиму та запуску  
прогнозування, відбувається перехід на сторінку прогнозу відповідного  
таймфрейму (Рис. 3.13 та 3.14):  
 
84 
 
 
Рисунок 3.13 – Інтерфейс сторінки Hourly Forecast Report 
 
Рисунок 3.14 – Інтерфейс сторінки Hourly Forecast Report 
Висновки до третього розділу  
Під час виконання третього розділу було детально описано процес 
розробки  та тестування програмного забезпечення, призначеного для 
прогнозування  тенденцій у майбутньому. Розробка включала 
обґрунтування вибору технологій,  таких як Python, Django, PostgreSQL, 
Angular та інші. Ці технології було обрано за  їх високу продуктивність, 
надійність та зручність у використанні, що сприяло  ефективній реалізації 
85 
 
системи.  
В ході розробки було створено базу даних, що зберігає інформацію 
про  історичні дані та прогнози валют . Було визначено структуру бази 
даних,  зв'язки між таблицями та забезпечено ефективний доступ до 
інформації.  Структурна та логічна схеми системи описували основні 
компоненти та  інформаційні процеси, що забезпечило чітке розуміння 
функціонування системи.  
Було розроблено користувацький інтерфейс на базі Angular, що 
забезпечив  зручний та інтуїтивно зрозумілий доступ до функціональності 
системи. Розробка  інтерфейсу включала використання HTML та CSS для 
створення привабливого та  узгодженого дизайну.  
Модульне тестування дозволило виявити та виправити помилки на 
ранніх  етапах розробки, що підвищило надійність кінцевого продукту. 
Інтеграційне  тестування забезпечило коректну взаємодію між різними 
компонентами системи,  а системне тестування підтвердило відповідність 
всіх функцій та модулів  вихідним вимогам.  
Загалом, результати третього розділу відображають всю структуру та  
ефективність програмного комплексу для прогнозування курсів валют .  
Система була ретельно протестована на всіх рівнях, що забезпечило високу 
якість  та надійність кінцевого продукту. 
ВИСНОВКИ  
У даній кваліфікаційній роботі було розв'язано наукову задачу 
створення  інформаційної системи для синтезу прогнозних моделей. 
Актуальність теми визначається необхідністю розробки  ефективних 
інструментів для прогнозування ринкових тенденцій, що дозволяє  
інвесторам та трейдерам приймати обґрунтовані рішення на основі аналізу 
історичних даних.  
У першому розділі було проведено детальний аналіз існуючих методів 
та  засобів прогнозування курсів валют. Досліджено технічну інформацію  
щодо валют , визначено фактори, що впливають на їх волатильність, та  
86 
 
обґрунтовано актуальність задачі прогнозування. Було розглянуто сучасні  
аналітичні платформи, що використовують традиційні методи аналізу, а 
також  інноваційні підходи, такі як машинне навчання та штучний інтелект.  
У другому розділі проведено моделювання предметної області, 
формування  та аналіз вимог до програмного забезпечення, а також 
проектування логічної  структури та архітектури системи. Було розроблено 
діаграми класів, пакетів,  компонентів та розгортання, що відображають 
основні компоненти системи та їх  взаємодію. Моделювання поведінки 
системи за допомогою діаграм діяльності,  послідовності, комунікації та 
скінченого автомату дозволило чітко уявити  процеси, що відбуваються 
всередині системи.  
У третьому розділі детально описано процес розробки та тестування  
програмного забезпечення. Було обґрунтовано вибір технологій, таких як 
Python,  Django, PostgreSQL, Angular, що забезпечують високу 
продуктивність та  надійність системи. Створено базу даних для зберігання 
історичних даних та  прогнозів, розроблено користувацький інтерфейс, 
проведено модульне,  інтеграційне та системне тестування, що підтвердило 
відповідність системи  встановленим вимогам.  
Результати роботи:  
Було розроблено інформаційну систему, яка використовує методи 
аналізу  даних та прогнозування, що дозволяє підвищити точність прогнозів 
курсів валют. Використання об'єктно-орієнтованого підходу (ООП) та 
методів  машинного навчання забезпечило гнучкість та модульність 
архітектури системи. Практична значущість: Створена інформаційна 
система дозволяє  аналізувати історичні дані валют за допомогою різних 
моделей  прогнозування та отримувати точні прогнози. Це може сприяти 
інвесторам, трейдерам та фінансовим аналітикам в прийнятті обґрунтованих 
рішень,  зменшуючи ризики та підвищуючи прибутковість операцій. 
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ 
87 
 
1. СВ Голуб, СЮ Куницька. Інформаційна система короткочасного 
прогнозування / СВ Голуб, СЮ Куницька. – Черкаси: Черкаський державний 
технологічний університет, 2017. – [Електронний ресурс]. – Точка доступу: 
URL: http://itcm.comp-sc.if.ua/2018/golub.pdf – Short-term Forecasting 
Information System  
2. О. О. Сергеєв-Горчинський, Г. В. Іщенко. Інтелектуальний аналіз 
даних: Комп’ютерний практикум / О. О. Сергеєв-Горчинський, Г. В. Іщенко. – 
Київ: Національний технічний університет України «Київський політехнічний 
інститут імені Ігоря Сікорського», 2018. – 73 с. – [Електронний  ресурс]. –
Режим  доступу:  URL: https://ela.kpi.ua/server/api/core/bitstreams/53cc4098-
de84-4297-862fd9ae3a586546/content. 
3. Голуб С.В., Куницька С.Ю. Побудова ешелонів у поліагентних 
функціоналах для прогнозування кількості захворювань на COVID-19 в 
Україні / С.В. Голуб, С.Ю. Куницька // Математичні машини і системи. – 2021. 
–  №  2.  –  С. 45-51.  –  Режим  доступу:  URL: 
http://www.immsp.kiev.ua/publications/articles/2021/2021_2/02_21_Holub. pdf       
4. Т.А. Бубнова, В.І. Корнієнко. Адаптивне вейвлет-нейронне 
прогнозування нелінійних стохастичних процесів / Т.А. Бубнова, В.І. 
Корнієнко // Системні технології. – 2009. – Вип. 2(61). – С. 120-127. – Режим 
доступу: URL: https://st.nmetau.edu.ua/journals/61/14_a_ua.pdf        
5. Гуціна І.Г., Удовік І.М., Мартиненко А.А. Інтелектуальна оцінка 
стану об'єктів керування на основі прогнозуючих фільтрів / І.Г. Гуціна, І.М. 
Удовік, А.А. Мартиненко // Національний гірничий університет. – Дніпро, 
[Дата  публікації]. – Режим  доступу:  URL: 
https://ir.nmu.org.ua/bitstream/handle/123456789/157788/%D0%9A%D0% 
BE%D0%BD%D1%84%20300517%201%20CD%20962-55-57.pdf  
6. Hassani H. Singular spectrum analysis: methodology and comparison / H. 
Hassani. – MPRA Paper No. 4991. – Munich Personal RePEc Archive, 2007. – 
[Електронний ресурс]. – Режим доступу: URL: 
https://mpra.ub.unimuenchen.de/4991/2/mpra_paper_4991.pdf   
88 
 
7. What Is Volatility in Crypto? [Електронний ресурс]. - Режим доступу: 
https://crypto.com/university/what-is-volatility-in-crypto  
8. Transaction Costs and Price Volatility in Cryptocurrency Markets 
[Наукова робота].– Режим доступу: 
https://www.researchgate.net/publication/379893559_Transaction_Costs_an 
d_Price_Volatility_in_Cryptocurrency_Markets . 
9. What Is Crypto Volatility: A Comprehensive Guide [Електронний 
ресурс]. - Режим доступу: https://blog.whitebit.com/en/what-is-crypto-volatility  
10. On Forecasting Cryptocurrency Prices: A Comparison of Machine 
Learning and Time Series Models [Наукова робота, с. 10]. - Режим доступу: 
https://www.mdpi.com/2571-9394/5/1/10  
11. Artificial Intelligence for Cryptocurrency Price Prediction [Електронний 
ресурс]. - Режим доступу: https://unicsoft.com/portfolio/ai-forcryptocurrency-
price-prediction/  
12. Examining TradingView's Cryptocurrency Trading Tools [Електронний 
ресурс]. - Режим доступу: 
https://www.tradingview.com/news/cryptodaily:5e74ae99e094b:0examining-
tradingview-s-cryptocurrency-trading-tools/  
13. Coinigy Review: The Ultimate Cryptocurrency Trading Platform 
[Електронний ресурс]. - Режим доступу: https://www.coinigy.com  
14. Cryptocurrency Market Data | CryptoCompare [Електронний ресурс]. - 
Режим доступу: https://www.cryptocompare.com  
15. Messari | Bitcoin & Crypto Research, Data, and Tools [Електронний 
ресурс]. - Режим доступу: https://messari.io  
16. TensorFlow for Finance [Електронний ресурс]. - Режим доступу: 
https://www.tensorflow.org/finance  
17. QuantConnect | Revolutionize Your Trading [Електронний ресурс]. - 
Режим доступу: https://www.quantconnect.com  
89 
 
18. What is cryptocurrency value analysis? [Електронний ресурс]. - Режим 
доступу: https://learncrypto.com/knowledge-base/how-to-trade-crypto/whatis-
cryptocurrency-value-analysis  
19. Prediction of Cryptocurrency Price using Time Series Data and Deep 
Learning  [Наукова  робота,  с.  27].  -  Режим  доступу: 
https://thesai.org/Downloads/Volume14No8/Paper_37-
Prediction_of_Cryptocurrency_Price_using_Time_Series_Data.pdf  
20. What Is a Moving Average (MA)? [Електронний ресурс]. - Режим 
доступу: https://www.investopedia.com/terms/m/movingaverage.asp  
21. Linear regression model | Mathematics and matrix notation [Електронний 
ресурс]. - Режим доступу: https://www.statlect.com/fundamentals-
ofstatistics/linear-regression  
22. What is an ARIMA Model? [Електронний ресурс]. - Режим доступу: 
https://towardsdatascience.com/what-is-an-arima-model-9e200f06f9eb  
23. Least Square Method - Formula, Definition, Examples [Електронний 
ресурс]. - Режим доступу: https://www.cuemath.com/data/least-squares/  
24. How to design software architecture [Електронний ресурс]. - Режим 
доступу:  https://medium.com/tradeling/how-to-design-softwarearchitecture-
c39eb5481a07 . 
25. Документація Python [Електронний ресурс]. - Режим доступу: 
https://www.python.org/doc/ . 
26. Django Documentation [Електронний ресурс]. - Режим доступу: 
https://docs.djangoproject.com . 
27. PostgreSQL: The world's most advanced open source database 
[Електронний ресурс]. - Режим доступу: https://www.postgresql.org  
28. Angular - The modern web developer's platform [Електронний ресурс]. 
- Режим доступу: https://angular.io  
29. TypeScript Documentation [Електронний ресурс]. - Режим доступу: 
https://www.typescriptlang.org HTML Living Standard [Електронний ресурс]. - 
Режим доступу: https://html.spec.whatwg.org  
90 
 
30. CSS: Cascading Style Sheets [Електронний ресурс]. - Режим доступу: 
https://www.w3.org/Style/CSS.  
31. WebStorm - The smartest JavaScript IDE [Електронний ресурс]. - 
Режим доступу: https://www.jetbrains.com/webstorm/features/ . 
32. PyCharm - Python IDE for Professional Developers [Електронний 
ресурс]. - Режим доступу: https://www.jetbrains.com/pycharm/features/ .