Skip to content

Проектная работа "Анализ доходности инвестиционного портфеля"

Notifications You must be signed in to change notification settings

scoriss/OTUS-DE-IPA

Repository files navigation

Анализ доходности инвестиционного портфеля (Investment Portfolio Analysis)

Проектная работа по курсу Data Engineer от OTUS.

Система получения данных с API Московской биржи (MOEX ISS) и анализ доходности портфеля, на основе датасета c демонстрационными операциям. Визуализация данных в Yandex DataLens.
Yandex Cloud, Airflow, DBT, Docker, Yandex Object Storage, ClickHouse, Yandex DataLens

Оценка эффективности инвестиций с учетом комиссий, налогов, дивидендов и купонов.

Презентация проекта.

Анализ доходности инвестиционного портфеля - Демонстрация дашборда.
Данные материализованы на 19.11.2021 17:40, без последующего обновления.

ℹ️ На момент публикации проекта, в Yandex DataLens отсутствует возможность экспорта/импорта всех связанных объектов дашборда для переноса.

Архитектура проекта

project_architecture

Используемые технологии и продукты

  • Docker - Контейнеризация приложений проекта (Airflow, DBT, requirements).
  • Airflow - Получение и обработка данных с API Московской биржи (MOEX ISS). Оркестрация DBT.
  • Yandex Object Storage - Облачное объектное хранилище (AWS S3 API compatible).
    Хранение внешних данных для последующей обработки и загрузки в базу данных ClickHouse (S3 Table Engine).
  • DBT - Автоматизация обработки и трансформации данных проекта в СУБД ClickHouse.
  • Yandex Managed Service for ClickHouse - Колоночная аналитическая СУБД для хранения и обработки данных.
  • Yandex DataLens - Облачный сервис для визуализации данных и бизнес-аналитики.

Проект

Настройка проекта

  1. Для работы проекта необходимы:
  2. Настроить необходимые переменные окружения в файле .env
Инструкция по настройке необходимой инфраструктуры в Yandex Cloud ☁️
  1. Создать сервисный аккаунт необходимый для работы всех служб.
  2. Назначить роль сервисному аккаунту storage.editor.
  3. Создать статический ключ доступа ACCESS KEY для сервисного аккаунта.
  4. Создать бакет в Object Storage.
  5. Отредактировать ACL бакета - добавить сервисный аккаунт (Шаг 1) с правами FULL_CONTROL.
  6. Создать виртуальную машину Linux (Операционная система: Ubuntu 20.04).
  7. Установить docker и docker-compose на виртуальную машину:

    # Install docker
    sudo apt-get update
    sudo apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
    curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add --
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian buster stable"
    sudo apt-get update
    sudo apt-get install -y docker-ce docker-ce-cli containerd.io
    sudo usermod -a -G docker $USER
    
    # Install docker-compose
    sudo apt-get -y install wget
    sudo wget https://github.com/docker/compose/releases/download/v2.1.0/docker-compose-$(uname -s)-$(uname -m) -O /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    sudo chmod 666 /var/run/docker.sock
  8. Создать кластер ClickHouse (Версия: 21.8 LTS и выше).
    • Сервисный аккаунт - Выбрать сервисный аккаунт (Шаг 1).
    • Хосты -> Редактировать хост -> Включить опцию Публичный доступ (При необходимости подключения к кластеру из интернета)
    • Включить опцию Доступ из DataLens.

Запуск проекта

docker-compose up -d

Откройте интерфейс Airflow перейдя по адресу:

Последовательно выполните действия:

  1. Для первоначальной инициализации проекта запустить DAG - ipa_project_initialization
  2. Для дальнейшей работы и обновления данных снять с паузы DAG - ipa_project_workload

Генерация документации DBT

Для возможности просмотра документации DBT открыт порт 8090 в контейнере.

Выполните комманды:

docker exec -it airdbt bash

cd ipa_project/dbt/
dbt docs generate
dbt docs serve --port 8090 --no-browser

Откройте документацию DBT перейдя по адресу:

Завершение работы

docker-compose down -v
docker rmi otus-de-ipa:1.0

Визуализация данных в Yandex DataLens

Некоторые ограничения при визуализации данных:

  • Округление чисел до двух знаков после запятой при визуализации, без возможности выбора формата отображения.
  • Нет возможности выделения цветом отдельных ячеек таблицы в зависимости от условий или формулы.
  • Нет возможности настроить ширину колонок.

Портфель

Портфель

Операции

Операции

Графики

Графики

Торговый день

Торговый день

Полезные ресурсы

About

Проектная работа "Анализ доходности инвестиционного портфеля"

Topics

Resources

Stars

Watchers

Forks