Перейти к содержанию
Версия: 0.5.0 Обновлено: 2026-02-02

ТЗ: Crypto Back-Office

Статус: Черновик для согласования OKR: O4 — Перевести учёт и операционное управление крипто-инвестициями из ручного процесса в единый автоматизированный back-office


1. Обзор проекта

1.1. Цель

Создание единой системы автоматизированного учёта крипто-инвестиций, которая:

  • Заменяет ручной процесс сбора данных из блокчейнов
  • Автоматически классифицирует транзакции и формирует операционные объекты (сделки, позиции, стратегии)
  • Предоставляет единый источник корректной отчётности
  • Интегрируется с app.saga.fund для отображения пользователям куда вложены их средства

1.2. Архитектурное размещение

Компонент Домен Описание
Back-Office back.saga.fund Административный интерфейс + Investor Portal (разграничение по ролям)
User App app.saga.fund Интерфейс для обычных клиентов (ограниченный функционал)
API Общий backend Единая система данных для всех интерфейсов

1.3. Целевая аудитория

  1. Внутренняя команда — менеджеры инвестиций, операторы, аналитики
  2. Внешние клиенты — инвесторы, партнёры (ограниченный доступ к отчётности)

2. Целевые метрики (KR)

KR4-1: Автоматический сбор данных (Q1)

Метрика Целевое значение
Блокчейны подключены к системе 100%
Кошельки с автоматическим сбором 100%
Время получения актуальных данных ≤ 15 минут

KR4-2: Автоматическая классификация транзакций (Q1)

Метрика Целевое значение
Транзакции автоматически классифицированы ≥ 95%
Транзакции требующие ручной коррекции ≤ 25%
Операционные объекты формируются автоматически ≥ 90%

KR4-3: Единый источник отчётности (Q2)

Метрика Целевое значение
Время формирования ключевого отчёта ≤ 5 минут
Отчёты доступны и корректны 100%
Расхождение с ручной сверкой 0%

3. Функциональные модули

3.1. Модуль сбора остатков (Balances)

Приоритет: Высокий · Срок: Фаза 1 (3 мес.)

Требования

Задача Детали
1 Сбор остатков по сети Tron Автоматический polling
2 Сбор остатков по сети Solana Автоматический polling
3 Сбор остатков по ETH Mainnet + основные L2
4 Сбор остатков по иным EVM Arbitrum, Optimism, Base, Polygon и др.
5 Единый дашборд остатков Обновление каждые 30 минут
6 Конвертация в USD По актуальному курсу
7 Отображение в оригинальной валюте Показывать крипто-баланс + USD эквивалент
8 Отделение остатков от позиций Чистые остатки без сумм открытых позиций

Дополнительные дашборды

  • Кастомные монеты — отдельный дашборд
  • Суммы сделок — отдельный дашборд

Конфигурация

Фиксированный список кошельков для отслеживания через конфигурационный файл с возможностью добавления/обновления без деплоя.


3.2. Модуль истории транзакций (Transactions)

Приоритет: Высокий · Срок: Фаза 1 (3 мес.)

Требования

Задача Детали
1 Сбор транзакций со всех сетей Все поддерживаемые блокчейны
2 Единое отображение Хронологический порядок
3 Выгрузка в CSV + возможность других форматов
4 Загрузка исторических данных Полный pull истории из блокчейнов

Отображаемые данные

  • Дата/время транзакции
  • Блокчейн/сеть
  • Хеш транзакции (ссылка на explorer)
  • Адреса отправителя/получателя
  • Сумма (оригинальная валюта + USD)
  • Комиссия (gas fee)
  • Статус
  • Назначение (автоматическое правило или ручной мэппинг)

3.3. Модуль классификации транзакций (Categories)

Приоритет: Высокий · Срок: Фаза 1 (3 мес.)

Категории транзакций

Финансовые категории (до 5):

  • Рост AUM (вход в сделку)
  • Выход из сделки
  • Доход от сделки
  • Заработная плата
  • Операционные расходы

DeFi категории (до 5):

  • Стратегия
  • Коллатерал
  • Займ
  • Ликвидность
  • Прочее

Правила автоматической классификации

Система правил на основе паттернов:

Если пришло с кошелька A → прибыль от сделки X
Если ушло на кошелёк B → Заработная плата
Если ушло на кошелёк C → частная сделка Y

Цель: До 70% транзакций классифицируются автоматически по правилам.

Ручная классификация

  • UI для присвоения/изменения категорий
  • Возможность создания новых правил на основе ручных классификаций
  • Выгрузка классифицированных данных в CSV

3.4. Модуль позиций/сделок (Positions & Deals)

Приоритет: Высокий · Срок: Фаза 1-2 (3 мес.)

Типы позиций

  1. DeFi позиции — стратегии в DeFi протоколах
  2. Private deals — частные сделки между кошельками
  3. Market positions — рыночные позиции (спот, derivatives)

Атрибуты позиции

Поле Описание
Название/идентификатор Уникальное имя позиции
Тип DeFi / Private deal / Market position
Статус active / closed / loan / collateral / stop
Дата открытия Первая транзакция (OUT)
Дата закрытия Зеркальная транзакция (IN)
Сумма входа (Start) USD на момент входа
Текущая стоимость (Current) USD по актуальному курсу
Стоимость при закрытии (Close) USD на момент выхода
Прибыль (Profit) Рассчитывается по формуле
Доходность 1W% Недельная доходность
APY Годовая доходность
APY средневзвешенный С учётом веса в портфеле
Вес в портфеле (Weight) Доля от общего портфеля

Формирование позиций из транзакций

  1. После маркировки транзакций как часть сделки → формируется позиция
  2. Операторы могут связывать транзакции с позициями вручную
  3. Возможность ручного ввода позиции (для off-chain сделок)

Расчёт прибыли

  • По формуле при закрытии позиции
  • Курс фиксируется на дату закрытия
  • Возможность ручного ввода прибыли

Формула APY

APY = (Current / Start - 1) * (365 / (DateEnd - DateStart))

3.5. Модуль Cash Flow (CF)

Приоритет: Средний · Срок: Фаза 2 (3 мес.)

Структура Cash Flow

Валюта: EUR для операционных расходов, USD для крипто-операций

OCF (Операционный поток):

  • Total Payroll (Payroll Net, Tax + SSC)
  • Outsource (Legal, Tech, Scouting)
  • Administrative (Set up entities, Monthly providers, G&A, Office, Bank&Crypto fees, Consulting, Others)
  • IT (DB subscriptions, CRM/Software, Hardware, Others)
  • Commercial (MICE, PR & Marketing, Travel & Representation, Others)
  • Contingency

ICF (Инвестиционный поток):

  • New investments (VC/PE) — Target №1, №2, ...
  • Loans (Outbound, Inbound)
  • Proceeds

FFCF (Финансовый поток):

  • Займы от UBO
  • Прочие источники фондирования
  • Дивиденды

Функциональность

Задача Детали
1 Сбор CF из классифицированных транзакций Автоматическая агрегация
2 Ежедневный пересчёт По текущему расчётному периоду (месяц)
3 Фиксация закрытых периодов По среднему курсу месяца (x-rates.com) или по курсу на дату
4 Ручной ввод и корректировка UI для операторов
5 Корректировка по старым периодам С сохранением audit trail
6 Выгрузка в CSV Для внешней отчётности

Представление

  • Помесячная разбивка с колонками факт/план
  • Поквартальная агрегация
  • TOTAL за год

3.6. Модуль доходности (APY/ROI)

Приоритет: Средний · Срок: Фаза 2 (3 мес.)

Требования

Задача Детали
1 Расчёт APY По формулам из образца (см. ниже)
2 Пересчёт за периоды День, неделя, месяц, кастомный период
3 APY по портфелю в целом Агрегированный показатель
4 APY по каждой позиции Индивидуальные показатели
5 Ручной ввод и корректировка Для исключительных случаев
6 Выгрузка в CSV

Формулы расчёта

Простой APY (для позиции):

1W% = (Current / Start - 1) * 100
APY = (Current / Start - 1) * (365 / (DateEnd - DateStart))
APY средневзвешенный = SUM(APY[i] * Weight[i])

Time-Weighted Return (TWR) — для портфеля в целом:

TWR исключает влияние денежных потоков (депозитов/выводов) на расчёт доходности.

Зачем нужен TWR (простой пример):

Этап 1: $100, рынок +10% → $110
Этап 2: Довложили $100 → $210
Этап 3: Рынок -5% → $199.50

Простой расчёт: ($199.50 - $200) / $200 = -0.25% ❌ НЕПРАВИЛЬНО

TWR: (1 + 0.10) × (1 - 0.05) - 1 = +4.5% ✅ ПРАВИЛЬНО

Простой расчёт показывает убыток, хотя управляющий заработал +10% и потерял -5% = чистый плюс.

Почему это важно:

  • Управляющий не контролирует когда инвесторы вкладывают/выводят
  • TWR показывает качество управления, а не удачу тайминга инвестора
  • Если инвестор вложил перед падением — это его решение

Формула:

TWR = [(1 + R₁) × (1 + R₂) × ... × (1 + Rₙ)] - 1

Где Rᵢ = (Vend - Vstart - CF) / Vstart

Когда начинается новый подпериод:

  • Любой подтверждённый депозит
  • Любой подтверждённый вывод
  • Конец дня (daily snapshot)

Важно: Только подтверждённые (confirmed) денежные потоки влияют на расчёт TWR.


3.7. Модуль прибыльности направлений

Приоритет: Средний · Срок: Фаза 2 (3 мес.)

Требования

Задача Детали
1 Прибыльность направления за период На базе позиций и сделок
2 Загрузка исторических данных До запуска системы
3 Ручная корректировка
4 Ролевой доступ Ограничения по ролям

Направления

  • DeFi portfolio
  • Private deals portfolio
  • Market positions portfolio
  • TOTAL Crypto portfolio

3.8. Модуль управления инвесторами (Investor Management)

Приоритет: Средний · Срок: Фаза 2

Концепция

Система поддерживает учёт индивидуальных инвесторов (LP) с их датами входа, взносами и пропорциональной доходностью. Каждый инвестор видит доходность, рассчитанную от своей даты входа.

Профиль инвестора

Поле Описание
Имя Имя инвестора
Email Контактный email (для аутентификации)
Дата входа Дата присоединения к фонду
Начальная инвестиция Первоначальный взнос (USD)
Текущая доля Процент владения в фонде
Статус Active / Exited / Pending
Привязанный пользователь Ссылка на аккаунт в системе

События капитала (Capital Events)

Тип события Описание
Initial Первоначальный взнос
TopUp Дополнительный взнос
PartialExit Частичный выход
FullExit Полный выход

Для каждого события фиксируется: дата, сумма, NAV фонда на момент события, цена за долю.

Расчёт доли инвестора

Вход:       share% = investment_amount / fund_nav_at_entry × 100
Довложение: new_shares = topup_amount / current_nav_per_share
Выход:      exit_value = shares_sold × current_nav_per_share

Индивидуальный TWR

Доходность каждого инвестора рассчитывается от его даты входа:

Investor TWR = Fund TWR (от investor_entry_date до current_date)

Пример:

  • Фонд стартовал: 1 января 2025
  • Инвестор A присоединился: 15 марта 2025
  • Текущая дата: 30 января 2026
  • TWR фонда (Jan 1 - Jan 30): +45%
  • TWR инвестора A (Mar 15 - Jan 30): +28%

Инвестор-портал (часть back.saga.fund)

Ограниченный доступ для инвесторов (роль External Viewer):

  • Персональный дашборд с их метриками
  • График доходности от даты входа
  • Таблица помесячной доходности
  • Скачивание персональных отчётов
  • Нет доступа к данным других инвесторов и отдельным позициям

Реализуется через ролевую систему на back.saga.fund, не как отдельный поддомен.


3.9. Система уведомлений (Alerts)

Приоритет: Низкий · Срок: Фаза 2-3

Типы уведомлений

Тип Триггер
Price Alert Цена актива пересекает порог
Drawdown Alert Просадка портфеля превышает X%
Position Size Alert Одна позиция > X% портфеля
Chain Concentration Одна сеть > X% портфеля
Inactivity Alert Нет транзакций X дней
Large Transaction Депозит/вывод > X USD

Каналы уведомлений

  • Telegram Bot — основной канал
  • Email — для важных уведомлений
  • In-app notifications — в интерфейсе системы

4. Роли и безопасность

4.1. Система ролей

Роль Описание Доступ
Full Access Полный доступ Все модули, редактирование, настройки
Analytics Only Только аналитика Просмотр отчётов, дашбордов без редактирования
DeFi Only Только DeFi DeFi позиции, стратегии
Transactions & CF Транзакции и CF История транзакций, Cash Flow
External Viewer Внешний пользователь Ограниченные отчёты (для инвесторов в app.saga.fund)

4.2. Требования безопасности

  1. Аутентификация — интеграция с существующей системой Supabase Auth
  2. Авторизация — ролевая модель доступа (RBAC)
  3. Audit log — логирование всех действий пользователей
  4. Шифрование — TLS для всех соединений, шифрование чувствительных данных в БД
  5. Multi-tenant изоляция — клиенты видят только свои кошельки/позиции/отчёты; администраторы имеют полный доступ

5. Интеграции

5.1. Блокчейн API и агрегаторы

5.1.1. Сети для первой фазы (минимально необходимый список)

EVM-сети:

Сеть Приоритет
Ethereum Критичный
Avalanche Критичный
Arbitrum Критичный

Non-EVM сети (из TRD):

Сеть Приоритет Примечание
Solana Высокий 2 кошелька в TRD
SUI Средний 1 кошелёк в TRD
TON Средний 1 кошелёк в TRD

Исследование завершено (2026-02-02). Ни один сервис не покрывает все сети. Рекомендуется гибридный подход из 3 API.

Результаты практического тестирования кошельков

Проверены реальные балансы через публичные RPC:

Сеть Кошелёк Результат
BSC 0x72Ea177...6565 ~0.1 BNB
Arbitrum 0x72Ea177...6565 ~0.014 ETH
Base 0x72Ea177...6565 ~0.0037 ETH
Arbitrum 0x04F461A...021C ~0.005 ETH
Solana HWErhALt...DC1q ~0.078 SOL + 6 SPL токенов
SUI 0x729b23a...0e0b ~8.42 SUI
TON UQBrh14W...LD9w 0 (неактивирован)

Сравнение API агрегаторов

Сервис EVM Solana SUI TON Free Tier DeFi
Zerion 38+ chains 100K credits/мес 8000+ протоколов
Moralis 19+ chains 40K CU/день
DeBank 14+ chains ❌ Платный ✅ Лучшее
Zapper 50+ chains 10K points/мес
Sui RPC Бесплатно
tonapi.io 1 req/4s Jettons, NFT

Рекомендуемая архитектура (3 API)

┌─────────────────────────────────────────────────────────────┐
│                    WALLET AGGREGATION                       │
├───────────────────┬─────────────────┬───────────────────────┤
│  EVM + Solana     │     SUI         │        TON            │
│  ─────────────    │   ─────────     │     ──────────        │
│  Zerion API       │   Sui RPC       │     tonapi.io         │
│  (основной)       │   (бесплатный)  │     (основной)        │
│                   │                 │                       │
│  Moralis API      │   —             │     TON Center v2     │
│  (backup)         │                 │     (backup)          │
└───────────────────┴─────────────────┴───────────────────────┘

EVM + Solana

Приоритет Сервис Причина
Основной Zerion API Единый запрос на все EVM + Solana, 8000+ DeFi протоколов, NFT, PnL. Уже используется в Saga
Backup Moralis API Хорошее Solana покрытие, 40K CU/день бесплатно
Fallback Публичные RPC Для raw балансов (требует N запросов на N сетей)

SUI

Приоритет Сервис Причина
Основной Sui Official RPC (fullnode.mainnet.sui.io) Бесплатный, без лимитов, полные данные через suix_getAllBalances
Backup Ankr RPC Если официальный недоступен

TON

Приоритет Сервис Причина
Основной tonapi.io Богатые данные: jettons, NFT, DeFi позиции
Backup TON Center API v2 Официальный, стабильный

Вывод

Один сервис не покрывает все сети. Минимально необходимо 3 интеграции:

  1. Zerion API — EVM (38+ chains) + Solana
  2. Sui Official RPC — SUI (бесплатный, без API key)
  3. tonapi.io — TON (бесплатный tier с rate limit)

Ограничения исследования

⚠️ Требуется дополнительная проверка перед продакшном:

  • Zerion/Moralis — не тестировались с API key (рекомендация на основе документации)
  • DeFi позиции — проверены только балансы, не протоколы
  • Ethereum mainnet, Avalanche — не тестировались напрямую (только L2)
  • Tron — не тестировался (хотя упоминается в требованиях)
  • TON кошелёк — показал 0 баланс (возможно неактивирован или тестовый)

5.2. Курсы валют

Исследование завершено (2026-02-02). Рекомендуется DeFiLlama как основной источник.

Сравнение API

API Free Tier Rate Limits Исторические DeFi/LP токены API Key
DeFiLlama ✅ Да Без лимита ✅ Да ✅ Отлично Нет
CoinGecko ✅ Да 5-30 req/min ⚠️ Ограничено Частично Нет
CryptoCompare ✅ Да ~2000/день ✅ Да ❌ Нет Нет
CoinMarketCap ✅ Да 10K/месяц ❌ Платно Частично Да
Frankfurter ✅ Да Без лимита ✅ С 1999 N/A (EUR/USD) Нет

Рекомендуемая архитектура

Тип Основной Backup Примечание
Крипто → USD DeFiLlama CryptoCompare DeFiLlama поддерживает LP токены и DeFi
EUR/USD Frankfurter API ECB напрямую Данные ECB, обновление 1 раз/день
USDT/USDC/USD Фиксация = 1.00 DeFiLlama Для избежания паразитных искажений

Примеры запросов

DeFiLlama — текущие цены:

curl -s "https://coins.llama.fi/prices/current/coingecko:ethereum,coingecko:solana,coingecko:sui,coingecko:the-open-network"

DeFiLlama — исторические цены (timestamp):

# 1 января 2025 = 1735689600
curl -s "https://coins.llama.fi/prices/historical/1735689600/coingecko:ethereum"

DeFiLlama — по адресу контракта (LP токены):

curl -s "https://coins.llama.fi/prices/current/ethereum:0x0d4a11d5eeaac28ec3f61d100daf4d40471f1852"

Frankfurter — EUR/USD:

curl -s "https://api.frankfurter.app/2025-01-01?from=EUR&to=USD"

ID токенов для DeFiLlama

Токен DeFiLlama ID
ETH coingecko:ethereum
BNB coingecko:binancecoin
SOL coingecko:solana
SUI coingecko:sui
TON coingecko:the-open-network
ARB coingecko:arbitrum
USDC coingecko:usd-coin
USDT coingecko:tether

Особенности

  • DeFiLlama возвращает confidence score для каждой цены (0.99 = надёжно)
  • LP токены поддерживаются по адресу контракта
  • CoinGecko агрессивно лимитирует (часто 429 ошибки)
  • Frankfurter — обёртка над ECB, JSON формат (удобнее чем XML от ECB)

5.3. Интеграция с app.saga.fund

  • Единая система данных о позициях и балансах
  • API для отображения инвесторам куда вложены средства
  • Синхронизация в реальном времени

6. Отчёты и дашборды

6.1. Список дашбордов

Дашборд Содержание
1 Остатки Операционные остатки по счетам (крипта + USD)
2 Транзакции История всех транзакций в хронологическом порядке
3 Позиции Открытые позиции и их текущая стоимость
4 DeFi Portfolio Стратегии, доходность, статусы
5 Private Deals Частные сделки с APY и прибылью
6 Market Positions Рыночные позиции (ETH, TON и др.)
7 Cash Flow OCF/ICF/FFCF помесячно
8 Доходность (APY) APY по портфелю и позициям
9 Графики Pie chart состава портфеля + линейный график стоимости

6.2. Типы отчётов (согласно KR4-3)

Всего 9 типов отчётов:

  1. Остатки по кошелькам/счетам
  2. История транзакций
  3. Классификация транзакций
  4. Позиции/сделки
  5. DeFi доходность
  6. Cash Flow
  7. APY по портфелю
  8. Прибыльность направлений
  9. Состав портфеля (визуализация)

6.3. Визуализации

Pie Chart:

  • Состав портфеля по категориям транзакций
  • Состав по типам позиций (DeFi / Private / Market)
  • Распределение по блокчейнам

Линейные графики:

  • Изменение стоимости портфеля во времени
  • Изменение стоимости каждой позиции
  • Основные метрики CF

Таблицы:

  • Все дашборды с сортировкой и фильтрацией
  • Экспорт в CSV

6.4. Периоды отчётности

  • 1D, 7D, 1M, 3M, 6M, YTD, 1Y, ALL
  • Кастомный промежуток времени (любые даты)
  • Сравнение с benchmark (BTC, ETH, S&P 500) — опционально

6.5. Экспорт в Excel (XLSX)

Структура файла Position Report

Лист Содержание
Summary Ключевые метрики, период, итоговые значения
Positions Полный список позиций со всеми колонками
Transactions История депозитов/выводов
Daily Performance Дата, NAV, дневная доходность

Фильтры перед экспортом

  • Диапазон дат (calendar picker)
  • Конкретные сети
  • Тип сделки (Public/Private)
  • Статус позиции

6.6. Отчёты для инвесторов

Индивидуальный отчёт инвестора (XLSX/PDF)

Страница 1: Summary

  • Имя инвестора
  • Дата входа
  • Начальная инвестиция
  • Дополнительные взносы
  • Текущая стоимость
  • Общая доходность (% и абсолютная)
  • TWR с даты входа
  • IRR (если несколько cash flows)

Страница 2: Monthly Performance

Месяц Начало Взносы Выводы Конец Доходность %
Mar 2025 $100,000 $0 $0 $103,500 +3.5%
... ... ... ... ... ...

Страница 3: Capital Events History

  • Все взносы и выводы
  • NAV на момент каждого события
  • Доля % после каждого события

Bulk-генерация отчётов

Администратор может сгенерировать отчёты для всех инвесторов:

  • Выбрать период (Q4 2025)
  • Получить ZIP с индивидуальными PDF
  • Или один XLSX с каждым инвестором на отдельном листе

7. Технические требования

7.1. Инфраструктура

Параметр Значение
Сервер TEST VPS (188.42.218.164, saga.surf) — для разработки и тестирования
Архитектура Расширение существующего Go backend + Next.js frontend
БД PostgreSQL (существующая)
Контейнеризация Docker (существующая инфраструктура)

7.2. Производительность

Метрика Целевое значение
Обновление балансов ≤ 30 минут
Обновление транзакций ≤ 15 минут
Генерация отчёта ≤ 5 минут
API response time ≤ 500ms (p95)

7.3. Конфигурация кошельков

# Пример структуры конфигурации
wallets:
  - address: "T..."
    network: tron
    label: "Main Operations"
    track_transactions: true
    track_balance: true

  - address: "0x..."
    network: ethereum
    label: "DeFi Strategies"
    track_transactions: true
    track_balance: true

Примеры кошельков из TRD

EVM:

  • 0x72Ea177FC9Ed87BdC17066256DffBbb0d65d6565
  • 0x04F461Af0894C871D3997B29EAc293260f68021C

Solana:

  • BpzisE51JpfBYJX7XCfLMyLYKhg675Nyjwum19TePpTH
  • HWErhALt5AnfdaQ53QruwX4ASBNnbt7cuqvu6L67DC1q

SUI:

  • 0x729b23ad4b02226c0ea1585bd45e5e550594afb9bd708d967e51e962a1d30e0b

TON:

  • UQBrh14WUt1Hx2NQfzw0Rk7FcC5WKAXMk8IgFWv6xry_LD9w

7.4. Оценка объёма данных

⚠️ Важно для планирования: Исторические данные из блокчейна могут занимать значительный объём. Текущая БД Saga маленькая, что позволяет хранить много бекапов. При большом объёме нужна стратегия хранения.

Прогноз объёма (консервативная оценка)

Данные Объём записи Записей/год Объём/год
Транзакции ~500 bytes 500K - 2M 250MB - 1GB
Daily portfolio snapshots ~200 bytes 365 ~100KB
Daily investor snapshots ~200 bytes 365 × N investors ~100KB × N
Позиции ~1KB 1K - 10K 1MB - 10MB
Audit log ~300 bytes 100K ~30MB

Итого за год: ~300MB - 1.5GB (без учёта индексов)

За 5 лет (требование retention): 1.5GB - 7.5GB

Стратегии оптимизации (если потребуется)

  1. Архивирование старых данных — перенос данных старше X лет в cold storage
  2. Агрегация — хранить детальные данные за последний год, агрегированные за предыдущие
  3. Партиционирование таблиц — по дате для быстрого удаления старых партиций
  4. Отдельная БД — вынести исторические данные back-office в отдельную БД

Append-only подход

Для обеспечения исторических срезов используется append-only архитектура:

  • Нет UPDATE на исторических данных
  • Новые версии создаются как новые записи
  • Soft-delete через статусы, не через DELETE
  • Полная история изменений доступна

8. Фазы реализации

Фаза 1: Сбор данных и базовая классификация (Q1)

Срок: 3 месяца

Результат:

  • ✅ Подключены все целевые блокчейны
  • ✅ Автоматический сбор балансов и транзакций
  • ✅ Базовая система классификации с правилами
  • ✅ UI для ручной классификации
  • ✅ Дашборд остатков

Deliverables:

  • Модуль сбора остатков
  • Модуль истории транзакций
  • Модуль классификации
  • Базовая система ролей

Фаза 2: Позиции и отчётность (Q1-Q2)

Срок: 3 месяца

Результат:

  • ✅ Формирование позиций из транзакций
  • ✅ Расчёт APY и прибыльности
  • ✅ Cash Flow отчётность
  • ✅ Все 9 типов отчётов

Deliverables:

  • Модуль позиций/сделок
  • Модуль Cash Flow
  • Модуль доходности
  • Визуализации (графики)

Фаза 3: Интеграция с app.saga.fund (Q2)

Срок: 1-2 месяца

Результат:

  • ✅ Единая система данных
  • ✅ API для внешних пользователей
  • ✅ Отображение инвестиций в app.saga.fund

Deliverables:

  • API интеграция
  • Компоненты для app.saga.fund
  • Документация

9. Открытые вопросы

Вопросы, требующие уточнения у заказчика перед началом разработки

9.1. Бизнес-вопросы

Вопрос Контекст
1 Блокчейны для первой фазы Определено. EVM: Ethereum, Avalanche, Arbitrum. Non-EVM: Solana, SUI, TON. См. раздел 5.1.1.
2 Количество кошельков 6 кошельков из TRD (2 EVM, 2 Solana, 1 SUI, 1 TON). См. раздел 7.3.
3 Нужен ли multi-tenant? Да. Отдельные клиенты видят только свои кошельки/позиции. Администраторы имеют полный доступ ко всему.
4 Формат исторических данных? Откуда импортировать off-chain сделки до запуска системы
5 Какой домен для back-office? back.saga.fund

9.2. Функциональные вопросы

Вопрос Контекст
6 Полный список финансовых категорий В 3.3 указано "до 5" с примерами. Нужно подтверждение: это финальный список или примеры?
7 Полный список DeFi категорий В 3.3 указано "до 5" с примерами. Нужно подтверждение: это финальный список или примеры?
8 Примеры правил классификации Для формирования шаблонов (см. примеры в 3.3, нужно больше реальных кейсов)
9 Формула расчёта прибыли по сделке В требованиях "по предоставленной формуле". Предложение: Profit = Close - Start. Нужно подтверждение.
10 Таблица для сбора CF Определено в разделе 3.5 и Приложении C: OCF/ICF/FFCF структура

9.3. Интеграционные вопросы

Вопрос Контекст
11 Сервис для цен криптовалют Исследование завершено. DeFiLlama (основной) + CryptoCompare (backup). Бесплатные, без API key, поддержка DeFi/LP токенов. См. раздел 5.2.
12 Источник для исторических курсов Определено. Крипто: DeFiLlama /prices/historical/{timestamp}. EUR/USD: Frankfurter API (данные ECB). См. раздел 5.2.

9.4. Вопросы по ролям

Вопрос Контекст
13 Детальная матрица разрешений по ролям Что именно видит/редактирует каждая роль?
14 Нужны ли кастомные роли? Нет. Фиксированный набор ролей, настройка только через конфиг (не через UI).

9.5. Вопросы из TRD (новые)

Вопрос Контекст
15 Приоритет исследования API Исследование завершено. См. раздел 5.1. Рекомендация: Zerion (EVM+Solana) + Sui RPC + tonapi.io. Один сервис не покрывает все сети.
16 SUI и TON — нужны в первой фазе? Да, можно включить. API доступны и бесплатны: Sui Official RPC (без лимитов), tonapi.io (1 req/4s). Интеграция несложная.
17 Risk Metrics (Sharpe, Drawdown, VaR) — в какой фазе? В TRD помечены как PREMIUM. Нужны ли вообще? Если да — в Phase 1 или Phase 2?
18 Investor Portal — отдельный поддомен? Нет. Часть back.saga.fund с ограниченным доступом по ролям.
19 Benchmark comparison — нужен? Сравнение с BTC/ETH/S&P 500 на графиках. Требует дополнительных источников данных.
20 Vesting schedules для private deals — нужен учёт? В TRD есть поле vesting_schedule (JSON). Актуально для SAFT и подобных сделок.

Приложения

Приложение A: Структура CRYPTO portfolio (образец)

CRYPTO portfolio
├── DeFi ($170 → $189, APY 433.81%)
│   ├── Active positions
│   │   ├── Drift USDC ($10 → $11, APY 43.5%, active)
│   │   ├── PT-dUSD ($10 → $11, APY 43.5%, active)
│   │   ├── PT-syUSD (looped) ($10 → $12, APY 86.9%, loan)
│   │   └── ...
│   └── Closed positions
│       ├── PT-aIUSD ($10 → $10, APY 0%, closed)
│       └── PT-iUSD ($10 → $11, APY 521.4%, closed)
├── Private deals ($50 → $55, APY 14.96%)
│   ├── Ember ($10, APY fact 70.2%, closed)
│   ├── INK call option ($10, APY fact 39.7%, closed)
│   ├── Linea ($10, stop)
│   └── ...
└── Market positions ($20 → $60, ROI 200%)
    ├── ETH ($10 → $30, ROI 200%, active)
    └── TON ($10 → $30, ROI 200%, active)

TOTAL: $249, Weekly profit: $64

Приложение B: Глоссарий

Термин Определение
NAV Net Asset Value — общая стоимость портфеля
TWR Time-Weighted Return — доходность, исключающая влияние денежных потоков
APY Annual Percentage Yield — годовая доходность
PnL Profit and Loss — прибыль и убытки
SAFT Simple Agreement for Future Tokens — соглашение о будущих токенах
LP Limited Partner — инвестор фонда
IRR Internal Rate of Return — внутренняя норма доходности
Drawdown Просадка — максимальное падение от пика
VaR Value at Risk — стоимость под риском

Приложение C: Структура Cash Flow (образец)

Currency: EUR
X-rate EUR/USD: 1.03 (2024) → 1.15 (план 2025)

OCF (Операционный поток)
├── Total Payroll (Payroll Net, Tax + SSC)
├── Outsource (Legal, Tech, Scouting)
├── Administrative (Set up, Providers, G&A, Office, Fees, Consulting)
├── IT (DB, CRM, Hardware)
├── Commercial (MICE, PR, Travel)
└── Contingency

ICF (Инвестиционный поток)
├── New investments (VC/PE)
├── Loans (Outbound, Inbound)
└── Proceeds

FFCF (Финансовый поток)
├── Займы от UBO
├── Прочие источники фондирования
└── Дивиденды

История изменений

Версия Дата Автор Изменения
0.1.0 2026-01-29 Начальная версия на основе OKR и требований
0.2.0 2026-01-30 Интеграция TRD: TWR методология, Investor Management, оценка объёма данных, система уведомлений (Telegram + Email), расширенные отчёты, 6 новых вопросов
0.2.1 2026-01-30 Расширенный обзор API: Zerion (основной, уже в Saga), Moralis, Zapper, rotki. Добавлены API для SUI (Suiscan, gRPC) и TON (TON Center, TON Tracker). Понятное объяснение TWR с примером
0.3.0 2026-01-30 Убрана ручная секция Содержание (MkDocs генерирует автоматически), метаданные модулей в blockquote формате
0.3.1 2026-01-30 Убраны конкретные цифры из таблицы блокчейнов. Исправлено форматирование списков. Закрыты вопросы 6, 7, 9, 10 (ответы уже в документе)
0.4.0 2026-02-02 Исследование API агрегаторов. Тестирование кошельков через публичные RPC. Рекомендация: 3 API. Закрыты вопросы 15, 16. Добавлены ограничения исследования
0.4.1 2026-02-02 Критический пересмотр. Открыты обратно вопросы 6, 7, 9 (требуют подтверждения заказчика). Уточнён статус вопросов 11, 12. Итого открытых: 10
0.5.0 2026-02-02 Исследование API курсов завершено. DeFiLlama (крипто) + Frankfurter (EUR/USD). Примеры curl запросов. Закрыты вопросы 11, 12. Итого открытых: 8

Следующий шаг: Согласование открытых вопросов (раздел 9) с заказчиком перед детализацией спецификации.