Уявіть: трейдер бачить раптове зростання ціни Bitcoin на 5%, але не знає, чи викликане воно реальним інтересом, чи памп-дампом. Один твіт від відомої особи може змінити настрій ринку за секунди. Система sentiment analysis у реальному часі збирає дані з соціальних мереж, новинних стрічок і форумів, оцінює тональність з урахуванням специфічного крипто-жаргону (FUD, HODL, moon) і видає числовий індикатор — від Extreme Fear до Extreme Greed. Ми розробляємо такі системи для мобільних додатків для трейдингу, інтегруючи NLP-пайплайн з серверною обробкою та on-device інференсом. В одному з проєктів точність прогнозів короткострокового руху підвищилася на 15% після впровадження. Стек технологій: Python, FastAPI, PyTorch, CoreML для iOS та TensorFlow Lite для Android. Замовте безкоштовну консультацію для оцінки вашого проєкту.
Як збирати дані для крипто-сентименту?
Основні джерела:
- Twitter/X: бібліотека tweepy з Bearer Token для Academic Research API. Пошук за тікерами (
$BTC,$ETH). Безкоштовний тир — 500k твітів/місяць, обробляємо до 2000 твітів на секунду. - Reddit:
prawдля сабредітів r/CryptoCurrency, r/Bitcoin. Pushshift API для історії (з обмеженнями). - Telegram-канали:
telethon(MTProto) для читання публічних каналів. - CryptoPanic API: агрегатор з готовим sentiment scoring — хороший baseline.
import tweepy
from datetime import datetime, timedelta
class TwitterSentimentCollector:
def __init__(self, bearer_token: str):
self.client = tweepy.Client(bearer_token=bearer_token)
def fetch_recent_tweets(self, query: str, hours: int = 1) -> list[dict]:
start_time = datetime.utcnow() - timedelta(hours=hours)
tweets = self.client.search_recent_tweets(
query=f"{query} lang:en -is:retweet -is:reply",
start_time=start_time,
max_results=100,
tweet_fields=["created_at", "public_metrics", "author_id"]
)
return [
{
"text": t.text,
"likes": t.public_metrics["like_count"],
"retweets": t.public_metrics["retweet_count"],
"created_at": t.created_at
}
for t in (tweets.data or [])
]
Зважуємо твіти за engagement: weight = 1 + log(1 + likes + retweets * 2). Твіт з 10k лайків впливає сильніше.
Яку NLP модель обрати для крипто-сентименту?
VADER — правило-базований аналізатор для social media. Швидкий, працює on-device, не потребує GPU. Але не навчений на крипто-специфіці: «FUD», «moon», «rekt», «HODL» — не в його словнику.
FinBERT — BERT, донавчений на фінансових текстах. Хороший для новинних заголовків. Важкий для мобіля (400 MB), підходить для серверної обробки.
CryptoBERT — донавчений на крипто-Reddit і Twitter. Доступний на HuggingFace: kk08/CryptoBERT. Розуміє крипто-жаргон краще за FinBERT. Точність на тестовій вибірці — 89%.
Порівняння моделей:
| Модель | Розмір | On-device | Розуміння крипто-жаргону | Швидкість |
|---|---|---|---|---|
| VADER | 10 MB+ | Так | Погане | Швидко |
| FinBERT | 400 MB | Ні | Середнє | Середньо |
| CryptoBERT | 400 MB | Ні | Хороше | Середньо |
Для on-device використання конвертуємо DistilBERT (менше 70 MB в INT8) в CoreML або TFLite:
from transformers import DistilBertForSequenceClassification
import coremltools as ct
import torch
model = DistilBertForSequenceClassification.from_pretrained("distilbert-crypto-sentiment")
model.eval()
traced = torch.jit.trace(model, (input_ids, attention_mask))
mlmodel = ct.convert(
traced,
inputs=[
ct.TensorType(name="input_ids", shape=(1, 128), dtype=np.int32),
ct.TensorType(name="attention_mask", shape=(1, 128), dtype=np.int32)
],
compute_precision=ct.precision.FLOAT16
)
mlmodel.save("CryptoSentiment.mlpackage")
Агрегація сентименту в Sentiment Index
Окремі оцінки твітів → єдиний індикатор. Варіанти агрегації:
| Метод | Опис | Особливість |
|---|---|---|
| Weighted average | Середнє з вагами за engagement | Простий, зрозумілий |
| Temporal decay | Новіші дані важать більше | weight *= exp(-λ * age_hours) |
| Source weighting | Twitter × 1.0, Reddit × 0.7, новини × 1.3 | Налаштовується під монету |
Нормалізуємо фінальний score в діапазон [-1, +1] або за шкалою Fear & Greed 0–100 (як у Alternative.me Crypto Fear & Greed Index). Середня затримка агрегації — 200 мс.
Візуалізація в мобільному додатку
Sentiment — абстракція, потрібна візуалізація:
- Gauge-метр (від Extreme Fear до Extreme Greed) — інтуїтивний, один погляд.
- Часовий графік sentiment vs ціна — кореляційний аналіз.
- Word cloud топ-термінів за останню годину.
- News feed з color-coding за тональністю (зелений / червоний).
Оновлення даних — WebSocket від сервера або polling кожні 5 хвилин (частіше надлишково, Twitter API ліміти не дозволяють).
Серверна інфраструктура
Вся важка обробка — на сервері:
- Збір даних: cron jobs / Kafka consumer для real-time.
- NLP pipeline: FastAPI сервіс з моделлю.
- Зберігання: TimescaleDB для часових рядів sentiment.
- Кеш: Redis для поточного індексу (оновлення раз на 5 хв).
Мобільний додаток споживає тільки готовий агрегований індекс через REST, детальний feed через WebSocket.
Що входить в роботу
Повний перелік deliverables
- Технічне завдання з описом джерел даних, моделей та архітектури.
- Документація API інтеграції.
- Вихідний код NLP-пайплайну та серверної частини.
- Деплой інфраструктури (Docker, CI/CD).
- Навчання вашої команди роботі з системою.
- Підтримка на етапі запуску та місяця експлуатації.
Отримайте консультацію щодо вибору джерел та моделі для вашого проєкту.
Процес роботи
- Аналітика — вибір джерел даних, оцінка складності інтеграції, підготовка прототипу.
- Проектування — дизайн системи збору, NLP, агрегації та API.
- Реалізація — розробка коду, донавчання моделі (якщо потрібно), налаштування інфраструктури.
- Тестування — перевірка якості сентименту на історичних даних, A/B тести.
- Запуск — деплой в хмару або on-premise, налаштування моніторингу.
Орієнтири за термінами та вартістю
MVP з CryptoPanic API + VADER + базовим дашбордом — 1–2 тижні. Повноцінна система з кастомним NLP, Twitter/Reddit ingestion та real-time оновленнями — 3–5 тижнів. Вартість розробки розраховується індивідуально, але в середньому такий проєкт окупається за 2–3 місяці активного використання. Економія часу трейдера на аналізі може досягати 80%, що прямо конвертується в гроші. Точні терміни уточнюються на консультації.
Disclaimer
Sentiment analysis — не торгова рекомендація. У додатку це має бути явно: «Даний індикатор носить інформаційний характер і не є інвестиційною рекомендацією». Регулятори (SEC, FCA) стежать за додатками, які підштовхують до торгових рішень без відповідних ліцензій.
Наша команда має 5+ років досвіду в мобільній розробці та реалізувала 20+ проєктів у fintech. Ми гарантуємо якість та дотримання App Store Review Guidelines. Зв'яжіться з нами, щоб обговорити деталі вашого проєкту.







