Машинне навчання для генерації сигналів у криптовалютах

Машинне навчання кардинально змінило торгівлю криптовалютами. Те, що колись базувалося виключно на технічному аналізі та ручній інтерпретації, тепер отримує переваги від нейронних мереж, які можуть виявляти закономірності з мільйонів тиків цін, знімків стану ордерів та подій у блокчейні. Цей посібник розглядає, як створити ML-системи підтвердження для сигналів у криптовалютах — ті самі техніки, які ми використовуємо в Smart Money API для розрахунку наших оцінок впевненості.

Ключовий інсайт: ML-сигнали найкраще працюють у поєднанні з традиційними метриками. Нейронна мережа, яка передбачає напрямок ціни з точністю 52%, марна. Але та, яка підтверджує момент, коли фандінг-рейти позитивні, а консенсус китів є бичачим? Це система з показником успіху понад 60%.

Математичні основи

Перш ніж занурюватися в код, зрозумійте математику. Кожна нейронна мережа — це, по суті, апроксиматор функцій. Враховуючи вхідні параметри (ціна, обсяг, фандінг-рейт, консенсус китів), вона вивчає ваги, які мінімізують похибку прогнозу на історичних даних.

Фреймворк навчання з учителем

Почніть з розмічених даних: історичних пар ціна/сигнал.

Python — Підготовка даних
# Підготовка даних для навчання з учителем
import numpy as np
import pandas as pd
# Завантаження OHLCV-даних для BTC
df = pd.read_csv('btc_5m.csv')
# Параметри: [open, high, low, close, volume, funding_rate, whale_long_pct]
features = df[['open', 'high', 'low', 'close', 'volume', 'fr', 'whale_long']].values
# Ціль: ціна зросла (1) чи впала (0) у наступних 5 свічках
targets = (df['close'].shift(-5) > df['close']).astype(int).values
# Нормалізація параметрів до [0,1]
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X = scaler.fit_transform(features)

Інженерія параметрів для криптовалют

Сирих OHLCV-даних недостатньо. Вам потрібні:

Ключовий момент — це виявлення інформаційної асиметрії — сигналів, які більшість трейдерів не бачить. Наш Smart Money API поєднує всі три рівні (похідні, ончейн, кити) в єдиний показник, який перевершує будь-який окремий метрик.

Архітектура нейронної мережі

Багатошаровий перцептрон (MLP) для класифікації

Проста пряма мережа несподівано добре працює для бінарної класифікації (купити/продати):

Python — PyTorch MLP
import torch
import torch.nn as nn
class CryptoMLP(nn.Module):
def __init__(self, input_size=7):
super().__init__()
self.fc1 = nn.Linear(input_size, 128)
self.fc2 = nn.Linear(128, 64)
self.fc3 = nn.Linear(64, 32)
self.fc4 = nn.Linear(32, 1)
self.dropout = nn.Dropout(0.3)
def forward(self, x):
x = torch.relu(self.fc1(x))
x = self.dropout(x)
x = torch.relu(self.fc2(x))
x = self.dropout(x)
x = torch.relu(self.fc3(x))
x = torch.sigmoid(self.fc4(x))
return x

Ця архітектура має 7 вхідних ознак, які проходять через шари, що звужуються (128 → 64 → 32 → 1), з функціями активації ReLU та dropout для регуляризації. Сигмоїдний вихід стискає останній шар до [0,1], що відображає ймовірність покупки.

LSTM для прогнозування послідовностей

Чому рекурентні мережі?

Рухи цін не є незалежними — вони мають пам'ять. Мережа LSTM (Long Short-Term Memory) може вивчати часові залежності: "Якщо імпульс зростає, а ставка фінансування щойно перейшла в позитивну зону після 3 годин негативних значень, наступна 5-хвилинна свічка з ймовірністю 58% буде бичачою."

Python — LSTM для криптовалют
class CryptoLSTM(nn.Module):
def __init__(self, input_size=7, hidden_size=64, num_layers=2):
super().__init__()
self.lstm = nn.LSTM(input_size, hidden_size, num_layers, batch_first=True, dropout=0.3)
self.fc1 = nn.Linear(hidden_size, 32)
self.fc2 = nn.Linear(32, 1)
def forward(self, x):
# x shape: (batch, seq_len, features)
lstm_out, _ = self.lstm(x)
# Беремо останній крок часу
last_hidden = lstm_out[:, -1, :]
x = torch.relu(self.fc1(last_hidden))
x = torch.sigmoid(self.fc2(x))
return x

Ця LSTM приймає послідовності з 60 кроків часу (5 годин 5-хвилинних свічок) та прогнозує наступний напрямок. Стан комірки визначає, які характеристики є найважливішими у різних точках послідовності.

Підготовка послідовностей

Перетворіть ваші плоскі дані у ковзні вікна:

Python — Створення послідовностей для LSTM
def create_sequences(data, seq_len=60):
X, y = [], []
for i in range(len(data) - seq_len):
X.append(data[i:i+seq_len])
y.append(data[i+seq_len, -1]) # наступна ціль
return np.array(X), np.array(y)
X, y = create_sequences(X)
# X.shape: (n_samples, 60, 7)

Навчання та оцінка

Стратегія розділення на навчання та тестування

Для часових рядів ніколи не перемішуйте. Витік майбутніх даних перебільшить точність.

Python — Правильне розділення часових рядів
# Розділення: 70% навчання, 20% валідація, 10% тестування
n = len(X)
train_idx = int(n * 0.7)
val_idx = int(n * 0.9)
X_train, y_train = X[:train_idx], y[:train_idx]
X_val, y_val = X[train_idx:val_idx], y[train_idx:val_idx]
X_test, y_test = X[val_idx:], y[val_idx:]

Цикл навчання

Використовуйте бінарну втрату перехресної ентропії та оптимізатор Adam:

Python — Навчання
model = CryptoLSTM()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
loss_fn = nn.BCELoss()
for epoch in range(100):
model.train()
optimizer.zero_grad()
preds = model(X_train_tensor)
loss = loss_fn(preds, y_train_tensor)
loss.backward()
optimizer.step()
model.eval()
with torch.no_grad():
val_preds = model(X_val_tensor)
val_loss = loss_fn(val_preds, y_val_tensor)
print(f"Epoch {epoch}: train={loss:.4f}, val={val_loss:.4f}")

Інтеграція з Smart Money API

Наші ML-моделі не замінюють традиційні метрики — вони їх посилюють. Ось як Smart Money API їх поєднує:

Python — Ансамбльова оцінка
def compute_confirmation_score(symbol, direction):
# 1. Отримати оцінку деривативів (ставка фінансування, LSR)
deriv_score = get_derivatives_score(symbol, direction)
# 2. Отримати оцінку ончейну (MVRV, SOPR, потік на біржі)
onchain_score = get_onchain_score(symbol)
# 3. Отримати оцінку китів (консенсус напрямку, pnl)
whale_score = get_whale_score(symbol, direction)
# 4. Запустити ML-модель на характеристиках
features = [deriv_score, onchain_score, whale_score, volatility, volume_trend]
ml_signal = lstm_model.predict(features)
# 5. Зважений ансамбль
composite = (deriv_score * 0.35 + onchain_score * 0.25 + whale_score * 0.25 + ml_signal * 0.15)
return {
"composite": composite,
"confidence": classify_confidence(composite),
"components": {"deriv": deriv_score, "onchain": onchain_score, "whale": whale_score "ml": ml_signal}
}

Найкращі практики

1. Уникайте перенавчання

2. Обробка дисбалансу класів

Якщо у вас більше "вгору" днів, ніж "вниз", модель частіше передбачатиме вгору. Використовуйте зважені втрати:

Python — Зважена BCE
# Якщо 60% випадків — це вгору, випадки вниз повинні бути зважені більше
pos_weight = (len(y_train) - y_train.sum()) / y_train.sum()
loss_fn = nn.BCEWithLogitsLoss(pos_weight=torch.tensor(pos_weight))

3. Нормалізація ознак

Нейронні мережі чутливі до масштабу ознак. Завжди нормалізуйте вхідні ознаки до [0,1] або [-1,1]. Переобчислюйте нормалізатор лише на тренувальних даних, а потім застосовуйте до валідації/тесту.

4. Валідація з ковзним вікном

Замість одного тестового набору використовуйте ковзні вікна: тренуйтеся на даних за 1 рік, тестуйте на наступний місяць, потім перетренуйтеся на 13 місяцях і тестуйте на 14-му місяці тощо. Це імітує умови реального трейдингу.

5. Слідкуйте за реальною продуктивністю

Точність на бектесті ніколи не дорівнює реальній точності. Розгорніть свою модель, відстежуйте реальні результати торгівлі та перетренуйтеся щомісяця з новими даними. Використовуйте Коефіцієнт Шарпа та частоту перемог як ваші реальні метрики, а не F1-оцінку.

Просунуті техніки

Механізми уваги

Трансформерні моделі (наприклад, Attention Is All You Need) дозволяють вашій мережі "зосереджуватися" на найважливіших моментах у послідовності. Для криптовалют це допомагає зважувати недавні спайки волатильності вище, ніж старі дані.

Методи ансамблю

Тренуйте кілька архітектур (MLP, LSTM, XGBoost) та усереднюйте прогнози. Ансамбльові моделі зазвичай перевершують одиничні моделі на 2-5% точності.

Навчання з підкріпленням

Замість передбачення напрямку ціни, тренуйте агента для максимізації кумулятивного PnL. Агент навчається розміщувати позиції на основі впевненості та ринкових умов. Це передовий край AI у криптотрейдингу.

Застосуйте ML з Smart Money API

Наша композитна система оцінювання поєднує інтелект деривативів, аналіз ончейн-даних та відстеження китів — все готове для інтеграції у ваші ML-моделі як додаткові ознаки. Додайте їх до вхідних ознак LSTM і спостерігайте за зростанням точності на 3-5%.

Отримайте безкоштовний API ключ →