Розробка системи алертів за smart money movements

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Розробка системи алертів за smart money movements
Складний
~5 днів
Часті запитання

Напрямки блокчейн-розробки

Етапи блокчейн-розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1288
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    902
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1122
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    589
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    859

Розробка системи алертів по smart money movements

Smart money — термін для позначення крупних професійних учасників ринку: хедж-фондів, маркет-мейкерів, інсайдерів. Ідея моніторингу їх руху проста: якщо крупні гравці починають накопичувати або розпродавати позиції, це корисний сигнал для звичайних трейдерів. Проблема — ідентифікація цих учасників у псевдоанонімному блокчейні.

Що вважається "smart money"

On-chain сигнали:

  • Адреси гаманців, асоційовані з відомими фондами (a16z, Paradigm, Multicoin Capital) — публічно відомі з інвестиційних оголошень
  • Накопичення маловідомих токенів за 1–2 тижні до мейджорних оголошень (листинг, партнерство)
  • Активність крупних LP-позицій у DeFi протоколах

On-exchange сигнали:

  • Крупні limit orders у стакані
  • Необична активність у опціонних контрактах (large OI buildup, unusual options flow)
  • Funding rate + OI розходження (smart money накопичує проти роздрібного тренду)

Архітектура системи

class SmartMoneyTracker:
    def __init__(self, address_db, chain_client, alert_engine):
        self.known_wallets: dict[str, WalletProfile] = {}  # address → profile
        self.chain = chain_client
        self.alerts = alert_engine

    async def load_known_wallets(self):
        """Завантажуємо базу відомих гаманців з кількох джерел"""
        # 1. Ручна база даних (фонди, відомі трейдери)
        manual = await self.load_manual_database()

        # 2. Nansen Smart Money API (комерційний сервіс)
        nansen = await self.load_nansen_labels()

        # 3. Arkham Intelligence API
        arkham = await self.load_arkham_labels()

        self.known_wallets = {**manual, **nansen, **arkham}

    async def monitor_ethereum(self):
        """Мониторинг трансакцій Ethereum у реальному часі"""
        async for block in self.chain.subscribe_blocks():
            for tx in block.transactions:
                await self.analyze_transaction(tx)

    async def analyze_transaction(self, tx: EthTransaction):
        from_profile = self.known_wallets.get(tx.from_address.lower())
        to_profile = self.known_wallets.get(tx.to_address.lower())

        if not from_profile and not to_profile:
            return  # Звичайна трансакція, не цікава

        # Класифікуємо дію
        if tx.to_address == UNISWAP_V3_ROUTER:
            await self.analyze_dex_trade(tx, from_profile)
        elif await self.is_token_transfer(tx):
            await self.analyze_token_movement(tx, from_profile, to_profile)
        elif await self.is_defi_interaction(tx):
            await self.analyze_defi_position(tx, from_profile)

Інтеграція Nansen API

Nansen — комерційний сервіс з найбільшою базою labeled гаманців:

class NansenClient:
    BASE_URL = "https://api.nansen.ai/v1"

    def __init__(self, api_key: str):
        self.session = httpx.AsyncClient(
            headers={"n-api-key": api_key}
        )

    async def get_wallet_labels(self, address: str) -> list[str]:
        """Отримати ярлики гаманця (Smart Money, Exchange, Whale, і т.д.)"""
        resp = await self.session.get(
            f"{self.BASE_URL}/labels/address/{address}"
        )
        if resp.status_code == 404:
            return []
        data = resp.json()
        return data.get("labels", [])

    async def get_token_god_mode(self, token_address: str) -> dict:
        """Аналіз утримувачів токену: хто накопичує, хто продає"""
        resp = await self.session.get(
            f"{self.BASE_URL}/token/godMode",
            params={"token_address": token_address}
        )
        return resp.json()

    async def get_smart_money_flows(
        self,
        token_address: str,
        days: int = 7
    ) -> dict:
        """Net flow smart money по токену за період"""
        resp = await self.session.get(
            f"{self.BASE_URL}/token/smartMoney",
            params={"token_address": token_address, "days": days}
        )
        data = resp.json()
        return {
            "net_flow_usd": data["netFlowUSD"],
            "buyers": data["smartMoneyBuyers"],
            "sellers": data["smartMoneySellers"],
            "unique_wallets": data["uniqueWallets"],
        }

DEX-активність smart money

Мониторинг торговельної активності у Uniswap/Curve/Balancer:

class DEXActivityMonitor:
    UNISWAP_V3_SUBGRAPH = "https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v3"

    async def get_recent_large_swaps(
        self,
        min_usd: float = 100_000,
        hours: int = 24
    ) -> list[dict]:
        query = """
        query LargeSwaps($minUSD: String!, $since: Int!) {
          swaps(
            where: {amountUSD_gt: $minUSD, timestamp_gt: $since}
            orderBy: amountUSD
            orderDirection: desc
            first: 100
          ) {
            id
            timestamp
            token0 { symbol }
            token1 { symbol }
            amountUSD
            origin
            transaction { id }
          }
        }
        """
        since = int((datetime.now() - timedelta(hours=hours)).timestamp())

        resp = await self.graphql_client.query(self.UNISWAP_V3_SUBGRAPH, query, {
            "minUSD": str(min_usd),
            "since": since
        })

        swaps = resp["data"]["swaps"]

        # Обогащаємо даними про гаманці
        enriched = []
        for swap in swaps:
            labels = await self.nansen.get_wallet_labels(swap["origin"])
            if "Smart Money" in labels or "Fund" in labels:
                enriched.append({**swap, "labels": labels})

        return enriched

Паттерни накопичення

Детектор накопичення: адреса послідовно купує токен невеликими порціями:

class AccumulationDetector:
    async def detect_accumulation(
        self,
        address: str,
        token: str,
        days: int = 14
    ) -> AccumulationPattern:
        transfers = await self.get_token_transfers(address, token, days)

        # Лише вхідні
        incoming = [t for t in transfers if t.to_address == address]

        if len(incoming) < 3:
            return None

        total_accumulated = sum(t.value for t in incoming)
        avg_interval = self.avg_time_between(incoming)
        is_consistent = self.is_consistent_buying(incoming)

        if is_consistent and len(incoming) >= 5:
            return AccumulationPattern(
                address=address,
                token=token,
                transactions=len(incoming),
                total_value_usd=total_accumulated,
                avg_interval_hours=avg_interval,
                start_date=incoming[0].timestamp,
                strength="STRONG" if len(incoming) >= 10 else "MODERATE",
            )

Форматування та доставка алертів

def format_smart_money_alert(event: SmartMoneyEvent) -> str:
    labels = ", ".join(event.wallet_labels) or "Smart Money"

    action_map = {
        "BUY": "🟢 накопичує",
        "SELL": "🔴 продає",
        "DEPOSIT_TO_EXCHANGE": "📤 вносить на біржу",
        "WITHDRAW_FROM_EXCHANGE": "📥 виводить з біржи",
    }
    action = action_map.get(event.action, event.action)

    return f"""🧠 Smart Money Alert

{labels} {action} {event.token}

Сума: ${event.usd_value:,.0f}
{f"Всього за 7д: ${event.rolling_7d_usd:,.0f}" if event.rolling_7d_usd else ""}
Гаманець: {event.address[:6]}...{event.address[-4:]}

🔗 {event.explorer_url}"""

Система smart money мониторингу — не срібна куля. Smart money помиляється, інсайдерська активність не завжди передбачає ріст. Це один з багатьох сигналів, який потрібно аналізувати в контексті інших даних. Але при правильній реалізації він дає інформаційну перевагу, недоступну користувачам без подібних інструментів.