Чесне попередження: передбачення цін криптовалют — задача з високим шумом. Академічні роботи показують accuracy 54–60% на напрямок руху для LSTM моделей на BTC — це трохи краще випадкового вгадування на 4–10%. Цінність системи не в точності передбачення, а в тому, що вона обробляє більше сигналів швидше, ніж людина вручну. Наприклад, наша модель аналізує 168 годинних OHLCV свічок з Binance, 20+ on-chain метрик від Glassnode і 15 технічних індикаторів — всього понад 50 фіч. Це дозволяє виявляти патерни, які людина просто не помітить. Однак навіть при такому обсязі даних абсолютна точність недосяжна. Тому ми робимо акцент на ймовірнісний прогноз з довірчим інтервалом.
Наша команда має 8+ років досвіду в машинному навчанні та реалізувала 30+ проектів з інтеграції AI в мобільні додатки. Ми допомагаємо від ідеї до деплою в App Store та Google Play.
Чому AI прогнозування криптовалют у мобільному додатку?
Ми розробляємо AI-моделі для прогнозування криптовалютних ринків, інтегруючи їх у мобільні додатки. Команда має досвід у машинному навчанні та мобільній розробці, включаючи проекти для криптовалютних бірж та аналітичних платформ. Результат — система, яка допомагає приймати рішення на основі аналізу сотень фіч. Оцінимо ваш проект безкоштовно — зв'яжіться з нами.
Як інтегрувати AI модель у мобільний додаток?
Інтеграція відбувається через REST API з кешуванням: модель приймає 168 годинних свічок, повертає ймовірності напрямку. Мобільний додаток лише відображає результат. Деталі дивіться у FAQ.
Дані та фічі: OHLCV через CCXT, on-chain метрики та технічні індикатори
OHLCV через CCXT
CCXT — Python бібліотека з єдиним API для 100+ бірж. Стандарт для отримання історичних даних:
import ccxt
import pandas as pd
exchange = ccxt.binance()
ohlcv = exchange.fetch_ohlcv(
symbol="BTC/USDT",
timeframe="1h",
since=exchange.parse8601("2023-01-01T00:00:00Z"),
limit=1000
)
df = pd.DataFrame(ohlcv, columns=["timestamp", "open", "high", "low", "close", "volume"])
df["timestamp"] = pd.to_datetime(df["timestamp"], unit="ms")
Binance віддає до 1000 свічок за запит. Для повної історії — пагінація через параметр since.
On-chain дані
Для BTC і ETH on-chain метрики додають сигнали, яких немає в OHLCV:
- Glassnode API: SOPR (Spent Output Profit Ratio), NVT, NUPL, Exchange Net Flow. Платний, але є безкоштовний тир з денними даними.
- Etherscan API: обсяг транзакцій, gas fees, активні адреси.
- CoinGecko / CoinMarketCap: market cap, dominance, total market volume.
import requests
class GlassnodeCollector:
BASE_URL = "https://api.glassnode.com/v1/metrics"
def get_sopr(self, api_key: str, since: int, until: int) -> pd.DataFrame:
response = requests.get(
f"{self.BASE_URL}/indicators/sopr",
params={
"a": "BTC",
"i": "24h",
"s": since,
"u": until,
"api_key": api_key
}
)
data = response.json()
return pd.DataFrame(data).rename(columns={"t": "timestamp", "v": "sopr"})
SOPR > 1 на ринку в зростанні = держателі продають в прибуток. SOPR < 1 на падінні = капітуляція. Це додатковий контекст для ML-моделі.
Приклад збору on-chain даних
Вище показано приклад отримання SOPR. Аналогічно збираються NVT, NUPL та інші метрики.Технічні індикатори
Сирі OHLCV → технічні індикатори через pandas-ta або ta-lib:
import pandas_ta as ta
df.ta.rsi(length=14, append=True) # RSI_14
df.ta.macd(append=True) # MACD_12_26_9, MACDh, MACDs
df.ta.bbands(length=20, append=True) # BBL, BBM, BBU, BBB, BBP
df.ta.atr(length=14, append=True) # ATRr_14
df.ta.obv(append=True) # OBV
df.ta.vwap(append=True) # VWAP_D
Всі індикатори нормалізуємо. RSI вже в [0, 100]. MACD — нормалізуємо Z-score або min-max по ковзному вікну. Сині ціни в модель не подаємо — даємо returns (відсоткова зміна) і нормалізовані фічі.
Temporal Fusion Transformer для покращення прогнозу: на 2–5% краще за LSTM
Temporal Fusion Transformer (TFT) від Google — state-of-the-art для фінансових часових рядів. Підтримує кілька часових горизонтів, static і dynamic covariates, інтерпретовність через attention. Реалізований в pytorch-forecasting. Важчий за LSTM (в 1.5–2 рази повільніше навчання), але точніший при правильно підготовлених даних. Згідно з дослідженням Google, TFT кращий за LSTM на 2–5% по точності на однакових даних. У наших тестах TFT перевершує LSTM на 3% в середньому.
Переваги ансамблю моделей: комбінація LSTM, TFT, XGBoost
LSTM для часових рядів
Стандартний вибір. Приймає послідовність з N свічок, передбачає наступну:
import tensorflow as tf
def build_lstm_model(sequence_length: int, n_features: int) -> tf.keras.Model:
inputs = tf.keras.Input(shape=(sequence_length, n_features))
x = tf.keras.layers.LSTM(128, return_sequences=True, dropout=0.2)(inputs)
x = tf.keras.layers.LSTM(64, dropout=0.2)(x)
x = tf.keras.layers.Dense(32, activation="relu")(x)
outputs = tf.keras.layers.Dense(3, activation="softmax")(x) # up/down/sideways
return tf.keras.Model(inputs, outputs)
Класифікація напрямку (up/down/sideways) надійніша за регресію точної ціни. Метрика — accuracy і F1 на out-of-sample даних.
XGBoost як baseline
Не недооцінюйте gradient boosting на правильних фічах. XGBoost без temporal context часто конкурує з LSTM. Швидко навчається — в 10 разів швидше за LSTM, легко конвертується в TFLite. Відмінний baseline для порівняння.
Порівняння моделей з використанням крос-валідації та backtesting
| Модель | Переваги | Недоліки |
|---|---|---|
| LSTM | Враховує часовий контекст, підходить для sequence-to-sequence | Повільне навчання, вразливий до overfitting на малих даних |
| TFT | Інтерпретовність, точність (на 2–5% краще LSTM), вбудована квантільна регресія | Складна конфігурація, навчання в 1.5 рази повільніше за LSTM |
| XGBoost | Швидкість (в 10 разів швидше LSTM), простота, feature importance | Немає temporal memory, потребує ручного feature engineering |
| Ensemble | Компенсація слабкостей, приріст accuracy до 3%, зменшення гетероскедастичності | Складніший деплой, потрібен моніторинг covariance shift |
Деплой в мобільному додатку: REST API з кешуванням
Інференс — на сервері. Модель приймає 168 годинних свічок (7 днів), повертає ймовірності напрямку на 4/8/24 години. REST endpoint з кешуванням: прогноз перераховується раз на годину.
На мобільному — лише відображення результату:
struct PricePrediction: Codable {
let symbol: String
let horizon4h: PredictionOutcome
let horizon8h: PredictionOutcome
let horizon24h: PredictionOutcome
let updatedAt: Date
}
struct PredictionOutcome: Codable {
let direction: String // "up", "down", "sideways"
let probability: Double // 0.0 - 1.0
let confidenceInterval: ClosedRange<Double> // ціновий діапазон
}
Довірчий інтервал (quantile regression) показує діапазон замість точкового передбачення: «BTC через 24 год: 55 000–61 000 USDT з ймовірністю 70%» — чесніше, ніж «57 432 USDT».
Моніторинг деградації моделі: rolling accuracy, KL-дивергенція, Sharpe ratio
Криптовалютний ринок змінюється: bull/bear режими, нові активи, регуляторні події. Модель, навчена на бичачому ринку, погано працює в ведмежий.
Метрики моніторингу:
- rolling accuracy за останні 30 днів
- distribution shift вхідних фіч (KL-дивергенція train vs recent data)
- Sharpe ratio якщо використовується в торгівлі
При degrade (accuracy впала на 5%+ від baseline) — автоматичне перенавчання на свіжих даних.
Що входить в роботу: 7 етапів
- Збір та очищення даних (OHLCV + on-chain)
- Feature engineering та normalization
- Навчання та валідація кількох моделей (LSTM, TFT, XGBoost)
- Вибір найкращої, конвертація та деплой REST API
- Мобільний UI: графік з прогнозом, довірчий інтервал
- Налаштування моніторингу та автоперенавчання
- Документація та навчання команди
Орієнтири за термінами
LSTM-модель з базовим набором фіч та мобільним дашбордом — від 2 до 4 тижнів. Ансамбль з on-chain даними, multi-horizon прогнозом та моніторингом — від 5 до 10 тижнів.
Вартість розраховується індивідуально після аналізу вимог. Отримайте консультацію з вибору архітектури — зв'яжіться з нами для оцінки вашого проекту. Ми допомагаємо від ідеї до деплою в App Store та Google Play.
Дисклеймер: У додатку обов'язково: «Прогнози носять інформаційний характер. Минула точність не гарантує майбутньої. Не є інвестиційною рекомендацією.»







