Crypto Portfolio Dashboard

Title

Crypto Portfolio Dashboard

Context

Проєкт створено для особистого моніторингу криптовалютного портфеля. Потрібно було об'єднати облік придбаних активів, відстеження актуальних ринкових цін, розрахунок прибутку та збитку, а також контроль інвестиційних цілей в одному зручному вебінтерфейсі.

Застосунок розроблено для роботи без підключення особистого акаунта криптобіржі та без передавання приватних API-ключів.

Problem

Відстеження криптовалютних інвестицій вручну створює кілька проблем:

  • Після повторних покупок одного активу складно швидко визначити середню ціну придбання та точку беззбитковості.
  • Ринкова вартість портфеля постійно змінюється, тому ручний перерахунок прибутку та збитку швидко стає неактуальним.
  • Потрібно окремо враховувати монети, отримані через стейкінг, і їхній вплив на загальний баланс.
  • Для оцінки можливого прибутку за цільовими цінами доводиться виконувати додаткові розрахунки.

Solution

Я розробив Crypto Portfolio Dashboard — вебзастосунок із Python-бекендом та SQLite для обліку й моніторингу криптовалютного портфеля.

Користувач вручну додає інформацію про придбані монети: кількість, ціну покупки або витрачену суму в USDT. Застосунок зберігає ці дані та автоматично розраховує фінансові показники.

Актуальні ринкові котирування надходять із публічного Bybit API. Початкові ціни завантажуються через REST API, а подальші оновлення отримуються через WebSocket V5.

На основі цих даних застосунок відображає поточну вартість активів, прибуток або збиток (PnL), середню ціну придбання, цільові ціни та потенційну вартість портфеля.

Додатково реалізовано облік монет зі стейкінгу, редагування позицій і відображення поточної ціни BTC/USDT зі зміною за 24 години.

Process

  • Архітектура застосунку (Python & SQLite): Реалізовано HTTP-сервер на Python із власними API-ендпоїнтами для отримання, збереження та видалення криптоактивів. Дані зберігаються в локальній базі SQLite (portfolio_v3.db), що дозволяє зберігати стан портфеля між перезапусками застосунку.
  • Отримання ринкових даних (Bybit REST API & WebSocket V5): Реалізовано початкове завантаження цін через публічний ендпоїнт Bybit Spot Market Tickers. Для подальшого оновлення котирувань використано WebSocket із підпискою на потрібні торгові пари. Це дозволяє перераховувати вартість портфеля при надходженні нових цін без ручного оновлення.
  • Облік покупок і стейкінгу (Portfolio Accounting): Реалізовано два способи реєстрації покупок: за кількістю монет і ціною придбання або за кількістю монет і загальною витраченою сумою USDT. Повторні покупки підсумовуються, а середня ціна розраховується на основі загальних інвестицій і кількості активів. Окремий режим дозволяє оновити баланс із врахуванням монет, отриманих через стейкінг, без збільшення суми вкладених коштів.
  • Фінансові розрахунки (JavaScript): Реалізовано автоматичний розрахунок поточної вартості кожної позиції, абсолютного та відсоткового PnL, загального результату портфеля, а також потенційної вартості активів за заданими цільовими цінами. Додано візуальний індикатор наближення поточної ціни до встановленої цілі.
  • Інтерфейс і керування активами (Tailwind CSS): Створено темну вебпанель із фінансовими картками та деталізованою таблицею монет. Передбачено додавання, редагування та видалення позицій, відображення логотипів криптовалют, кількості покупок, стейкінгових надходжень і статусу WebSocket-з'єднання.

Results

  • Автоматичне відстеження ринкових цін: після внесення інформації про покупки застосунок отримує котирування з Bybit і оновлює розрахункову вартість портфеля при надходженні нових даних.
  • Єдиний облік інвестицій: усі зареєстровані криптоактиви, повторні покупки, вкладені суми та монети зі стейкінгу відображаються в одному інтерфейсі.
  • Автоматичний розрахунок PnL: застосунок визначає прибуток або збиток у USDT та відсотках для кожного активу й портфеля загалом.
  • Контроль інвестиційних цілей: можна встановлювати цільові ціни та переглядати розрахункову вартість і потенційний фінансовий результат за цими цінами.
  • Збереження даних: інформація про портфель зберігається в SQLite і доступна після перезапуску сервера.

Tech Stack

Python 3 • Python HTTPServer • SQLite • JavaScript (Vanilla JS) • HTML5 • Tailwind CSS • Bybit Public REST API V5 • Bybit Public WebSocket V5 • JSON

Screenshots/Workflow

Crypto Portfolio Dashboard — вебінтерфейс моніторингу криптовалютного портфеля.

На скриншоті представлено фінансову панель із загальною сумою інвестицій, поточною вартістю активів, PnL, цільовими показниками, ціною BTC/USDT та деталізованою таблицею криптовалют.

assets/projects/crypto-dashboard/crypto-portfolio-demo-dashboard.png

Інші проєкти аналітики

Потрібне схоже рішення?

Розкажіть, який процес хочете автоматизувати або яке рішення плануєте створити. Обговоримо можливий підхід до реалізації.

Обговорити задачу