Чому ручне ребалансування криптопортфеля неефективне?
Уявіть: ваш фонд тримає 20 токенів на 5 біржах і в 10 DeFi протоколах. Ринок робить різкий стрибок — ваги активів ідуть на 15% від цільових. Ручне ребалансування займає три дні, протягом яких ви втрачаєте дохідність, ризикуєте порушити інвестиційний мандат і залишаєте слід для MEV-атак. Між цільовими вагами та виконанням угод стоїть цілий комплекс проблем: прослизання на неліквідних активах, податкові наслідки кожної угоди, compliance-перевірки та необхідність аудиторського сліду. Ми спеціалізуємося на розробці систем ребалансування для фондів понад п'ять років і знаємо кожен підводний камінь. Наша система під ключ включає повний цикл — від агрегації позицій до аудит-трейлу, гарантуючи прозорість і відповідність вимогам. Оцінимо ваш проєкт і запропонуємо оптимальне рішення.
Архітектура системи: п'ять ключових шарів
Система ребалансування складається з незалежних модулів, кожен з яких закриває критичну функціональність:
- Portfolio State Engine — відстежує поточні позиції з усіх джерел (on-chain, CEX, DeFi)
- Rebalancing Trigger — визначає момент для ребалансування
- Order Computation Engine — розраховує мінімальний набір угод з урахуванням витрат
- Execution Layer — виконує угоди оптимально за ціною та з MEV-захистом
- Risk & Compliance Layer — перевіряє угоди на відповідність мандату
Усі рішення логуються в Audit Trail.
Portfolio State Engine: агрегація позицій — розробка системи ребалансування
Найнедооціненіша частина. Фонд тримає активи в різних місцях — це фундаментальна складність. Ми інтегруємося з усіма популярними джерелами: on-chain баланси ERC-20, Uniswap V3 LP позиції, Aave/Compound lending, CEX (Binance, Coinbase) та стейкінг (Lido). Зведена інформація збирається із затримкою не більше одного блоку.
DeFi позиції — найскладніша частина. Liquidity position в Uniswap V3 — не просто "X токенів ETH + Y токенів USDC". Реальні суми залежать від поточної ціни та range: якщо ціна вийшла за межі range — позиція на 100% в одному активі. Ми чесно рахуємо через SDK:
import { Pool, Position } from '@uniswap/v3-sdk'; import { Token, CurrencyAmount } from '@uniswap/sdk-core'; function getLiquidityAmounts(position: Position, currentPrice: Price) { const { amount0, amount1 } = position.mintAmounts; // Повертає реальні amounts з урахуванням поточного tick return { token0Amount: amount0, token1Amount: amount1 }; } Особливості ціноутворення позицій
Для розрахунку ваг потрібні ціни в USD. Проблеми: - Неліквідні токени: spot price з тонкого стакану не репрезентативна. Використовуємо TWAP (Uniswap V3 30-min TWAP) або geometric mean of multiple DEX prices. - Yield-bearing assets (stETH, aUSDC): враховуємо accumulated yield. - LP позиції: impermanent loss змінює ефективну вартість.Порівняння типів тригерів ребалансування
| Тип тригера | Частота спрацьовувань | Витрати | Складність |
|---|---|---|---|
| Threshold | Висока (при волатильності) | Середні | Низька |
| Periodic | Фіксована (раз на N днів) | Низькі | Низька |
| Hybrid | Оптимальна (не частіше 1 разу на N днів) | Мінімальні | Середня |
Threshold-based тригер простіший, але генерує в 3 рази більше зайвих угод порівняно з гібридним при волатильності >5% за день. Гібрид — найпопулярніший вибір серед фондів.
Cost-aware перевірка
Ключова оптимізація — ребалансування тільки коли вигода перевищує витрати. Ми математично визначаємо момент:
def should_rebalance(current_weights, target_weights, trade_costs) -> bool: tracking_error = np.sqrt(np.sum((current_weights - target_weights) ** 2)) estimated_trade_volume = compute_trade_volume(current_weights, target_weights) total_cost = estimated_trade_volume * trade_costs.avg_cost_bps / 10000 return tracking_error > THRESHOLD and tracking_error / total_cost > MIN_BENEFIT_COST_RATIO Як ми захищаємо угоди від MEV-атак?
Для ліквідних активів на CEX застосовуємо TWAP або VWAP ордери через CCXT. Для on-chain — агрегатори (1inch, Paraswap, 0x) із захистом:
import axios from 'axios'; import { ethers } from 'ethers'; async function executeSwapVia1inch( tokenIn: string, tokenOut: string, amount: bigint, slippageBps: number ) { const quote = await axios.get(`https://api.1inch.dev/swap/v6.0/1/swap`, { params: { src: tokenIn, dst: tokenOut, amount: amount.toString(), from: FUND_ADDRESS, slippage: slippageBps / 100, }, headers: { Authorization: `Bearer ${ONEINCH_API_KEY}` } }); const tx = await signer.sendTransaction({ to: quote.data.tx.to, data: quote.data.tx.data, value: quote.data.tx.value, }); return tx; } Використовуємо private mempool (Flashbots Protect RPC) або batch-аукціони CoW Protocol — це обов'язковий захід для фондів, щоб уникнути сендвіч-атак і фронтраннінгу.
Risk & Compliance Layer: контроль мандату
Перед кожною угодою виконуються перевірки: ліміти на актив, концентрація, liquidity impact, санкційні списки, інвестиційний мандат. Приклад чекера на Python:
class RiskChecks: def pre_trade_checks(self, proposed_trades: list[Trade]) -> list[CheckResult]: checks = [ self.check_position_limits(proposed_trades), self.check_concentration_risk(proposed_trades), self.check_liquidity_impact(proposed_trades), self.check_counterparty_limits(proposed_trades), self.check_blacklisted_assets(proposed_trades), self.check_investment_mandate(proposed_trades), ] return checks Наша платформа гарантує, що жодна угода не порушить мандат фонду. Детальніше про стандарти перевірки контрактів — у документації OpenZeppelin.
Технологічний стек та інфраструктура
| Компонент | Технологія |
|---|---|
| Backend | Python (pandas/numpy, asyncio) |
| Планувальник | Apache Airflow або Prefect |
| Сховище | PostgreSQL + TimescaleDB |
| CEX підключення | CCXT |
| On-chain | viem/ethers.js + Flashbots |
| Моніторинг | Grafana + Prometheus |
| Secrets | HashiCorp Vault |
Безпека ключів: HSM або KMS, multi-sig для великих операцій.
Що входить у проєкт і терміни
- Документація архітектури та API
- Вихідний код з коментарями та тестами
- Інтеграції з джерелами позицій (до 10+)
- Розгортання та налаштування моніторингу
- Навчання команди (2-3 сесії)
- Технічна підтримка 3 місяці після запуску
Етапи:
- Portfolio tracking (3-4 тижні)
- Rebalancing engine (2-3 тижні)
- Execution layer (3-4 тижні)
- Моніторинг та compliance (2 тижні)
Разом: 2.5–3.5 місяці до production. Терміни можуть бути скорочені при обмеженні кількості джерел.
Готові обговорити ваш проєкт — зв'яжіться з нами для консультації. Наші інженери мають понад 5 років досвіду в DeFi та реалізували 15+ систем для криптофондів.







