Перейти к содержимому

Глава 86: Предсказание рынка с малым количеством примеров (Few-Shot)

Обзор

Few-Shot Market Prediction решает задачу точного предсказания на новых или неизвестных рынках при минимальном количестве исторических данных. Это особенно важно на криптовалютных рынках, где постоянно появляются новые торговые пары, а традиционные модели машинного обучения требуют обширного переобучения. Используя техники мета-обучения, мы можем быстро адаптироваться к новым рыночным условиям всего с 5-20 примерами.

Содержание

  1. Введение
  2. Теоретические основы
  3. Подходы Few-Shot обучения
  4. Проектирование архитектуры
  5. Применение к предсказанию рынка
  6. Стратегия реализации
  7. Интеграция с Bybit
  8. Управление рисками
  9. Метрики производительности
  10. Ссылки

Введение

Традиционные модели машинного обучения для предсказания рынка сталкиваются с критическим ограничением: им требуются тысячи размеченных примеров для каждого рынка или актива для достижения приемлемой точности. Это становится проблемой когда:

  • Появляются новые активы: Новые криптовалюты, токены или торговые пары листятся ежедневно
  • Динамика рынка меняется: Статистические свойства рынков изменяются со временем
  • Кросс-рыночный перенос: Знания с одного рынка могут не применяться напрямую к другому
  • Ограниченные исторические данные: Некоторые рыночные условия (обвалы, сквизы) имеют мало исторических примеров

Решение Few-Shot обучения

┌─────────────────────────────────────────────────────────────────────────────┐
│ Традиционное ML vs Few-Shot обучение │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ТРАДИЦИОННОЕ ML: │
│ ──────────────── │
│ Обучение: 10,000+ примеров на актив │
│ Проблема: Новый актив листится → Нужны недели данных │
│ Результат: Невозможно прибыльно торговать на ранней стадии │
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ BTC │████████████████████████████████│ 50,000 примеров │ │
│ │ ETH │████████████████████████████████│ 45,000 примеров │ │
│ │ НОВЫЙ!│██ │ 500 примеров ❌ Мало │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ FEW-SHOT ОБУЧЕНИЕ: │
│ ────────────────── │
│ Обучение: Учимся "как учиться" на многих активах │
│ Инференс: Адаптация к новому активу с 5-20 примерами │
│ Результат: Прибыльная торговля в течение часов после листинга │
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Мета-обучение на: BTC, ETH, SOL, AVAX, DOT, LINK, UNI, ... │ │
│ │ Мета-тест на: НОВЫЙ_ТОКЕН с 10 примерами ✓ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

Ключевые преимущества для трейдинга

АспектТрадиционное MLFew-Shot обучение
Адаптация к новому активуНедели-месяцыЧасы
Требования к данным10,000+ примеров5-20 примеров
Кросс-рыночный переносОграниченныйОтличный
Адаптация к режимуМедленное переобучениеБыстрая адаптация
Поддержка моделиВысокаяНизкая
Охват рынковОграничен обученными активамиРасширяется на лету

Теоретические основы

Фреймворк мета-обучения

Few-shot предсказание рынка построено на мета-обучении, также известном как “обучение учиться”. Вместо обучения модели для конкретной задачи предсказания, мы обучаем модель, которая может быстро адаптироваться к новым задачам.

Математическая формулировка

Распределение задач: Пусть $p(\mathcal{T})$ - распределение над торговыми задачами (напр., разные активы, таймфреймы или цели предсказания).

Support Set: Для каждой задачи $\mathcal{T}_i$ у нас есть support set $\mathcal{S}i = {(x_j, y_j)}{j=1}^K$ с $K$ примерами (K-shot).

Query Set: Оцениваем на query set $\mathcal{Q}i = {(x_j, y_j)}{j=1}^Q$.

Цель мета-обучения:

$$\min_\theta \mathbb{E}_{\mathcal{T}_i \sim p(\mathcal{T})} \left[ \mathcal{L}(\mathcal{Q}i; f{\theta’_i}) \right]$$

где $\theta’_i = \text{adapt}(\theta, \mathcal{S}_i)$ представляет адаптированные параметры для задачи $i$.

Эпизодическое обучение

┌────────────────────────────────────────────────────────────────────────────┐
│ Эпизодическое обучение для предсказания рынка │
├────────────────────────────────────────────────────────────────────────────┤
│ │
│ Генерация эпизодов: │
│ ────────────────── │
│ │
│ Шаг 1: Выбираем N задач (напр., N разных активов) │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Задача 1: Предсказание направления цены BTC │ │
│ │ Задача 2: Прогнозирование волатильности ETH │ │
│ │ Задача 3: Классификация тренда SOL │ │
│ │ Задача 4: Определение режима AVAX │ │
│ │ Задача 5: Предсказание поддержки/сопротивления DOT │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ Шаг 2: Для каждой задачи создаём support и query наборы │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Задача BTC: │ │
│ │ Support: [Признаки дней 1-5 → метки] (5-shot) │ │
│ │ Query: [Признаки дней 6-10 → метки] (5 query примеров) │ │
│ │ │ │
│ │ Задача ETH: │ │
│ │ Support: [Признаки дней 1-5 → метки] (5-shot) │ │
│ │ Query: [Признаки дней 6-10 → метки] (5 query примеров) │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ Шаг 3: Мета-обновление │
│ • Адаптируем модель к каждой задаче используя support set │
│ • Оцениваем на query set │
│ • Обновляем мета-параметры для улучшения адаптации │
│ │
└────────────────────────────────────────────────────────────────────────────┘

Формулировка N-way K-shot задачи

Для предсказания рынка мы обычно формулируем задачи как:

  • N-way классификация: Классифицировать в N категорий (напр., Вверх/Вниз/Боковик)
  • K-shot: Использовать K примеров на категорию в support set
  • Регрессия: Предсказывать непрерывные значения (цена, волатильность)

Типичные конфигурации для трейдинга:

  • 3-way 5-shot: Вверх/Вниз/Боковик с 5 примерами каждый
  • 5-way 10-shot: Пять рыночных режимов с 10 примерами каждый
  • 1-shot регрессия: Предсказание доходности с 1 референсным примером

Подходы Few-Shot обучения

1. Метрические методы

Изучаем метрическое пространство, где похожие рыночные условия группируются вместе.

┌────────────────────────────────────────────────────────────────────────────┐
│ Метрическое Few-Shot обучение │
├────────────────────────────────────────────────────────────────────────────┤
│ │
│ Основная идея: Изучить эмбеддинги, где расстояние = похожесть │
│ │
│ Визуализация пространства эмбеддингов: │
│ │
│ ↑ Измерение 2 │
│ │ │
│ │ ★ Query (новый актив) │
│ │ / │
│ │ / расстояние │
│ │ / │
│ ●─●─●────●────────● │
│ Support примеры │ │
│ (тот же класс) │ │
│ │ ○──○──○ │
│ │ Support примеры │
│ │ (другой класс) │
│ └────────────────────────→ Измерение 1 │
│ │
│ Методы: │
│ ──────── │
│ • Сиамские сети: Изучают попарную похожесть │
│ • Прототипные сети: Сравнение с прототипами классов (центроидами) │
│ • Matching Networks: Attention-взвешенная похожесть │
│ • Relation Networks: Изучение функции похожести нейросетью │
│ │
└────────────────────────────────────────────────────────────────────────────┘

2. Оптимизационные методы (семейство MAML)

Изучаем начальные параметры, которые можно быстро дообучить.

┌────────────────────────────────────────────────────────────────────────────┐
│ Model-Agnostic Meta-Learning (MAML) │
├────────────────────────────────────────────────────────────────────────────┤
│ │
│ Основная идея: Найти инициализацию θ, которая быстро адаптируется │
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ θ (начальные параметры) │ │
│ │ │ │ │
│ │ ┌─────┼─────┬─────────┐ │ │
│ │ │ │ │ │ │ │
│ │ ↓ ↓ ↓ ↓ │ │
│ │ θ'₁ θ'₂ θ'₃ ... θ'ₙ (параметры для задач) │ │
│ │ │ │ │ │ │ │
│ │ Зад.1 Зад.2 Зад.3 Зад.N (внутр. цикл: несколько шагов град.) │ │
│ │ │ │ │ │ │ │
│ │ └─────┴─────┴─────────┘ │ │
│ │ │ │ │
│ │ ↓ │ │
│ │ Мета-обновление θ (внешний цикл: оптимизация для быстрой адапт.) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ Алгоритм: │
│ ───────── │
│ 1. Выбираем батч задач │
│ 2. Для каждой задачи: │
│ - Адаптируем θ → θ' используя support set (1-5 шагов градиента) │
│ - Вычисляем loss на query set с θ' │
│ 3. Обновляем θ используя сумму query losses │
│ │
└────────────────────────────────────────────────────────────────────────────┘

3. Гибридный подход для предсказания рынка

┌────────────────────────────────────────────────────────────────────────────┐
│ Гибридный Few-Shot предиктор рынка │
├────────────────────────────────────────────────────────────────────────────┤
│ │
│ Вход: Признаки рынка │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Ценовые признаки: доходности, волатильность, моментум │ │
│ │ Объёмные признаки: объём, VWAP, поток ордеров │ │
│ │ Технические индикаторы: RSI, MACD, Bollinger Bands │ │
│ │ Крипто-специфичные: funding rate, OI, ликвидации │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ↓ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Временной энкодер (общий для всех задач) │ │
│ │ ────────────────────────────────────── │ │
│ │ • 1D-CNN для локальных паттернов │ │
│ │ • LSTM/Transformer для моделирования последовательностей │ │
│ │ • Механизм внимания для важных признаков │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ↓ │
│ ┌────────────────────────┴────────────────────────┐ │
│ │ │ │
│ ↓ ↓ │
│ Метрический путь Оптимизационный путь │
│ ┌────────────────────┐ ┌────────────────────┐ │
│ │ Прототип. матчинг │ │ MAML адаптация │ │
│ │ (быстро, без град.)│ │ (точно, с град.) │ │
│ └────────────────────┘ └────────────────────┘ │
│ │ │ │
│ └───────────────┬──────────────────────────┘ │
│ │ │
│ ↓ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Ансамбль / Взвешенный по уверенности выход │ │
│ │ ──────────────────────────────────────── │ │
│ │ Высокая уверенность: Использовать метрический (быстрее) │ │
│ │ Низкая уверенность: Использовать оптимизационный (точнее) │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ↓ │
│ Выход: Предсказание + Оценка уверенности │
│ │
└────────────────────────────────────────────────────────────────────────────┘

Проектирование архитектуры

Модуль извлечения признаков

/// Типы рыночных признаков для few-shot обучения
#[derive(Debug, Clone)]
pub struct MarketFeatures {
/// Ценовые признаки
pub price_features: PriceFeatures,
/// Объёмные признаки
pub volume_features: VolumeFeatures,
/// Технические индикаторы
pub technical_features: TechnicalFeatures,
/// Крипто-специфичные признаки
pub crypto_features: CryptoFeatures,
}
#[derive(Debug, Clone)]
pub struct PriceFeatures {
/// Доходности на разных горизонтах
pub returns: Vec<f32>, // [1м, 5м, 15м, 1ч, 4ч, 24ч]
/// Логарифмические доходности
pub log_returns: Vec<f32>,
/// Реализованная волатильность
pub volatility: Vec<f32>, // Несколько окон
/// Нормализованный диапазон high-low
pub range: f32,
/// Позиция close в диапазоне [0, 1]
pub close_position: f32,
/// Ценовой моментум
pub momentum: Vec<f32>,
}
#[derive(Debug, Clone)]
pub struct VolumeFeatures {
/// Нормализованный объём
pub volume_normalized: f32,
/// Скорость изменения объёма
pub volume_change: f32,
/// Соотношение Buy/Sell объёма
pub buy_sell_ratio: f32,
/// Отклонение от VWAP
pub vwap_deviation: f32,
/// Признаки профиля объёма
pub volume_profile: Vec<f32>,
}
#[derive(Debug, Clone)]
pub struct TechnicalFeatures {
/// RSI на разных периодах
pub rsi: Vec<f32>,
/// MACD линия, сигнал, гистограмма
pub macd: [f32; 3],
/// Позиция в Bollinger Band
pub bb_position: f32,
/// Сигналы пересечения скользящих средних
pub ma_signals: Vec<f32>,
/// Нормализованный ATR
pub atr: f32,
}
#[derive(Debug, Clone)]
pub struct CryptoFeatures {
/// Ставка финансирования (для перпетуалов)
pub funding_rate: f32,
/// Изменение открытого интереса
pub oi_change: f32,
/// Соотношение Long/Short
pub long_short_ratio: f32,
/// Недавний объём ликвидаций
pub liquidation_volume: f32,
/// Базис Spot-Futures
pub basis: f32,
}

Архитектура сети эмбеддинга

/// Конфигурация сети эмбеддинга
#[derive(Debug, Clone)]
pub struct EmbeddingConfig {
/// Размерность входных признаков
pub input_dim: usize,
/// Длина последовательности (число временных шагов)
pub seq_length: usize,
/// Скрытая размерность временного энкодера
pub hidden_dim: usize,
/// Размерность выходного эмбеддинга
pub embedding_dim: usize,
/// Число голов внимания
pub num_heads: usize,
/// Коэффициент dropout
pub dropout: f32,
}
impl Default for EmbeddingConfig {
fn default() -> Self {
Self {
input_dim: 48, // Общее число признаков
seq_length: 96, // 96 временных шагов (напр., 96 часов)
hidden_dim: 256,
embedding_dim: 128,
num_heads: 8,
dropout: 0.1,
}
}
}

Модуль Few-Shot предиктора

/// Конфигурация few-shot предиктора рынка
#[derive(Debug, Clone)]
pub struct FewShotConfig {
/// Число классов/категорий
pub n_way: usize,
/// Число support примеров на класс
pub k_shot: usize,
/// Число query примеров для оценки
pub n_query: usize,
/// Конфигурация эмбеддинга
pub embedding_config: EmbeddingConfig,
/// Тип метрики расстояния
pub distance_type: DistanceType,
/// Температура для softmax
pub temperature: f32,
/// Использовать ли MAML адаптацию
pub use_maml: bool,
/// Learning rate внутреннего цикла MAML
pub maml_inner_lr: f32,
/// Число шагов внутреннего цикла MAML
pub maml_inner_steps: usize,
}
impl Default for FewShotConfig {
fn default() -> Self {
Self {
n_way: 3, // Вверх, Вниз, Боковик
k_shot: 5, // 5 примеров на класс
n_query: 15, // 15 query примеров
embedding_config: EmbeddingConfig::default(),
distance_type: DistanceType::SquaredEuclidean,
temperature: 1.0,
use_maml: false, // Начинаем с метрического
maml_inner_lr: 0.01,
maml_inner_steps: 5,
}
}
}
/// Типы метрик расстояния
#[derive(Debug, Clone, Copy)]
pub enum DistanceType {
Euclidean, // Евклидово
SquaredEuclidean, // Квадрат евклидова
Cosine, // Косинусное
Learned, // В стиле Relation Network
}
/// Результат предсказания с уверенностью
#[derive(Debug, Clone)]
pub struct PredictionResult {
/// Предсказанный класс/категория
pub prediction: usize,
/// Вероятности классов
pub probabilities: Vec<f32>,
/// Оценка уверенности (макс. вероятность)
pub confidence: f32,
/// Расстояние до каждого прототипа
pub distances: Vec<f32>,
}

Применение к предсказанию рынка

Задачи предсказания

┌────────────────────────────────────────────────────────────────────────────┐
│ Задачи Few-Shot предсказания рынка │
├────────────────────────────────────────────────────────────────────────────┤
│ │
│ Тип задачи 1: ПРЕДСКАЗАНИЕ НАПРАВЛЕНИЯ (Классификация) │
│ ────────────────────────────────────────────────────── │
│ Предсказать: Направление цены в следующие N периодов │
│ Классы: [Вверх, Вниз, Боковик] │
│ N-way: 3 │
│ K-shot: 5-10 │
│ │
│ Пример Support Set: │
│ ┌────────────────────────────────────────────────────────────────────┐ │
│ │ Класс "Вверх": │ │
│ │ • Период 1: признаки → доходность +2.3% │ │
│ │ • Период 2: признаки → доходность +1.8% │ │
│ │ • Период 3: признаки → доходность +3.1% │ │
│ │ ... │ │
│ │ Класс "Вниз": │ │
│ │ • Период 1: признаки → доходность -2.1% │ │
│ │ • Период 2: признаки → доходность -1.5% │ │
│ │ ... │ │
│ └────────────────────────────────────────────────────────────────────┘ │
│ │
│ Тип задачи 2: ОПРЕДЕЛЕНИЕ РЕЖИМА (Классификация) │
│ ───────────────────────────────────────────────── │
│ Предсказать: Текущий рыночный режим │
│ Классы: [Бычий, Медвежий, Боковик, Выс_Вол, Низ_Вол] │
│ N-way: 5 │
│ K-shot: 5-10 │
│ │
│ Тип задачи 3: ПРОГНОЗ ВОЛАТИЛЬНОСТИ (Регрессия) │
│ ─────────────────────────────────────────────── │
│ Предсказать: Будущую реализованную волатильность │
│ Выход: Непрерывное значение │
│ K-shot: 5-20 референсных периодов │
│ │
│ Тип задачи 4: ПОДДЕРЖКА/СОПРОТИВЛЕНИЕ (Классификация) │
│ ────────────────────────────────────────────────────── │
│ Предсказать: Цена отскочит или пробьёт? │
│ Классы: [Отскок, Пробой] │
│ N-way: 2 │
│ K-shot: 5-10 │
│ │
│ Тип задачи 5: КРОСС-АКТИВНЫЙ ПЕРЕНОС │
│ ───────────────────────────────────── │
│ Обучение на: BTC, ETH, SOL, AVAX │
│ Адаптация к: Новому токену с 5 примерами │
│ Применение: Прибыльная торговля новыми листингами │
│ │
└────────────────────────────────────────────────────────────────────────────┘

Интеграция торговой стратегии

┌────────────────────────────────────────────────────────────────────────────┐
│ Пайплайн Few-Shot торговой стратегии │
├────────────────────────────────────────────────────────────────────────────┤
│ │
│ Фаза 1: ПОСТРОЕНИЕ SUPPORT SET (Онлайн) │
│ ──────────────────────────────────────── │
│ • Мониторинг последних рыночных данных для актива │
│ • Разметка последних периодов на основе реализованных исходов │
│ • Создание support set со сбалансированным представительством классов │
│ • Обновление support set по мере поступления данных (скользящее окно) │
│ │
│ ┌────────────────────────────────────────────────────────────────────┐ │
│ │ Скользящий Support Set для BTC: │ │
│ │ ┌──────────────────────────────────────────────────────────────┐ │ │
│ │ │ t-48ч │ t-47ч │ ... │ t-25ч │ ... │ t-1ч │ Текущий │ │ │
│ │ │ Вверх │ Вверх │ │ Вниз │ │ Бок │ ? │ │ │
│ │ └──────────────────────────────────────────────────────────────┘ │ │
│ │ Support: Последние 48 размеченных периодов │ │
│ │ Query: Текущий период (для предсказания) │ │
│ └────────────────────────────────────────────────────────────────────┘ │
│ │
│ Фаза 2: ПРЕДСКАЗАНИЕ (Реальное время) │
│ ───────────────────────────────────── │
│ • Извлечение признаков для текущего периода │
│ • Вычисление эмбеддинга │
│ • Сравнение с прототипами/адаптированной моделью │
│ • Генерация предсказания с уверенностью │
│ │
│ Фаза 3: ГЕНЕРАЦИЯ СИГНАЛОВ │
│ ────────────────────────── │
│ ┌────────────────────────────────────────────────────────────────────┐ │
│ │ Предсказание → Маппинг торгового сигнала │ │
│ │ │ │
│ │ ВВЕРХ (увер. > 0.7) → ЛОНГ сигнал, размер = увер. × баз_размер │ │
│ │ ВНИЗ (увер. > 0.7) → ШОРТ сигнал, размер = увер. × баз_размер │ │
│ │ БОКОВИК → Без сделки или торговля в диапазоне │ │
│ │ Низкая уверенность → Уменьшить размер или пропустить │ │
│ └────────────────────────────────────────────────────────────────────┘ │
│ │
│ Фаза 4: УПРАВЛЕНИЕ ПОЗИЦИЕЙ │
│ ──────────────────────────── │
│ • Вход в позицию на основе сигнала │
│ • Установка stop-loss и take-profit на основе режима │
│ • Непрерывный мониторинг уверенности предсказания │
│ • Выход при: достижении цели, стопа или падении уверенности │
│ │
└────────────────────────────────────────────────────────────────────────────┘

Протокол адаптации к новому активу

┌────────────────────────────────────────────────────────────────────────────┐
│ Протокол адаптации к новому активу │
├────────────────────────────────────────────────────────────────────────────┤
│ │
│ Когда листится новый актив (напр., новый токен на Bybit): │
│ │
│ Час 0-1: СБОР ДАННЫХ │
│ ──────────────────── │
│ • Начинаем сбор данных OHLCV │
│ • Мониторинг динамики книги ордеров │
│ • Запись funding rates (если перпетуал) │
│ │
│ Час 1-4: НАЧАЛЬНЫЙ SUPPORT SET │
│ ───────────────────────────── │
│ • Разметка первых периодов на основе реализованных доходностей │
│ • Создание минимального support set (3-5 примеров на класс) │
│ • Консервативные предсказания (высокий порог уверенности) │
│ │
│ Час 4-24: АКТИВНОЕ ОБУЧЕНИЕ │
│ ─────────────────────────── │
│ • Расширение support set новыми размеченными примерами │
│ • Снижение порога уверенности по мере накопления данных │
│ • Начинаем с малых размеров позиций │
│ │
│ После 24ч: ПОЛНАЯ АДАПТАЦИЯ │
│ ─────────────────────────── │
│ • Support set достигает целевого размера (20-50 примеров) │
│ • Включены полные размеры позиций │
│ • Непрерывное обновление support set (скользящее окно) │
│ │
│ ┌────────────────────────────────────────────────────────────────────┐ │
│ │ Расписание порога уверенности │ │
│ │ │ │
│ │ 100% ───────────────────────────────────────── │ │
│ │ 95% ▓▓▓▓▓ │ │
│ │ 90% ▓▓▓▓▓▓▓▓▓ │ │
│ │ 85% ▓▓▓▓▓▓ │ │
│ │ 80% ▓▓▓▓▓▓▓▓ │ │
│ │ 75% ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ │ │
│ │ 70% ▓▓▓▓▓▓▓▓▓▓▓ │ │
│ │ ────┬────┬────┬────┬────┬────┬────┬────┬────┬────→ Часы │ │
│ │ 1 4 8 12 16 20 24 36 48 72 │ │
│ └────────────────────────────────────────────────────────────────────┘ │
│ │
└────────────────────────────────────────────────────────────────────────────┘

Стратегия реализации

Структура модулей

86_few_shot_market_prediction/
├── Cargo.toml
├── README.md # Основная документация (English)
├── README.ru.md # Русский перевод
├── readme.simple.md # Упрощённое объяснение
├── readme.simple.ru.md # Упрощённое на русском
├── src/
│ ├── lib.rs # Корень библиотеки
│ ├── config.rs # Типы конфигурации
│ ├── features/
│ │ ├── mod.rs # Модуль признаков
│ │ ├── extractor.rs # Извлечение признаков
│ │ ├── normalizer.rs # Нормализация признаков
│ │ └── types.rs # Типы признаков
│ ├── embedding/
│ │ ├── mod.rs # Модуль эмбеддинга
│ │ ├── network.rs # Сеть эмбеддинга
│ │ ├── temporal.rs # Временное кодирование
│ │ └── attention.rs # Механизмы внимания
│ ├── fewshot/
│ │ ├── mod.rs # Few-shot модуль
│ │ ├── prototypical.rs # Прототипные сети
│ │ ├── maml.rs # Реализация MAML
│ │ ├── episode.rs # Генерация эпизодов
│ │ └── predictor.rs # Интерфейс предсказания
│ ├── data/
│ │ ├── mod.rs # Модуль данных
│ │ ├── bybit.rs # Клиент API Bybit
│ │ ├── dataset.rs # Обработка датасетов
│ │ └── support_set.rs # Управление support set
│ ├── trading/
│ │ ├── mod.rs # Модуль трейдинга
│ │ ├── signals.rs # Генерация сигналов
│ │ ├── strategy.rs # Торговая стратегия
│ │ └── risk.rs # Управление рисками
│ └── utils/
│ ├── mod.rs # Утилиты
│ ├── metrics.rs # Метрики оценки
│ └── math.rs # Математические утилиты
├── examples/
│ ├── basic_fewshot.rs # Базовый пример few-shot
│ ├── direction_prediction.rs # Демо предсказания направления
│ ├── new_asset_trading.rs # Адаптация к новому активу
│ └── backtest.rs # Пример бэктестинга
├── python/
│ ├── few_shot_predictor.py # Реализация на PyTorch
│ ├── train.py # Скрипт обучения
│ ├── evaluate.py # Скрипт оценки
│ └── requirements.txt # Python зависимости
└── tests/
├── integration.rs # Интеграционные тесты
└── unit_tests.rs # Unit тесты

Интеграция с Bybit

Пайплайн сбора данных

┌────────────────────────────────────────────────────────────────────────────┐
│ Пайплайн данных Bybit для Few-Shot обучения │
├────────────────────────────────────────────────────────────────────────────┤
│ │
│ 1. ИСТОРИЧЕСКИЕ ДАННЫЕ (Мета-обучение) │
│ ────────────────────────────────────── │
│ Цель: Обучение базовой модели на многих активах │
│ │
│ API Endpoints: │
│ • GET /v5/market/kline → OHLCV свечи для нескольких символов │
│ • GET /v5/market/tickers → Текущее состояние рынка │
│ • GET /v5/market/funding/history → История funding rate │
│ • GET /v5/market/open-interest → История открытого интереса │
│ │
│ Стратегия сбора данных: │
│ ┌────────────────────────────────────────────────────────────────────┐ │
│ │ Символы: BTC, ETH, SOL, AVAX, DOT, LINK, UNI, ATOM, ... │ │
│ │ Таймфрейм: 1ч свечи │ │
│ │ История: 1 год на символ │ │
│ │ Семплирование задач: Разные окна как разные задачи │ │
│ └────────────────────────────────────────────────────────────────────┘ │
│ │
│ 2. ДАННЫЕ РЕАЛЬНОГО ВРЕМЕНИ (Инференс/Адаптация) │
│ ──────────────────────────────────────────────── │
│ Цель: Построение support sets и предсказания │
│ │
│ WebSocket подписки: │
│ • kline.1.{symbol} → 1-минутные свечи для обновления признаков │
│ • ticker.{symbol} → Цены реального времени для исполнения │
│ • liquidation.{symbol} → События ликвидаций для признаков │
│ │
│ ┌────────────────────────────────────────────────────────────────────┐ │
│ │ Цикл реального времени: │ │
│ │ 1. Получаем новую свечу через WebSocket │ │
│ │ 2. Обновляем буфер признаков │ │
│ │ 3. Каждый час: Размечаем предыдущий период, обновляем support set │ │
│ │ 4. Делаем предсказание на следующий период │ │
│ │ 5. Генерируем торговый сигнал если уверенность > порога │ │
│ └────────────────────────────────────────────────────────────────────┘ │
│ │
│ 3. ИСПОЛНЕНИЕ ОРДЕРОВ │
│ ───────────────────── │
│ • POST /v5/order/create → Размещение market/limit ордеров │
│ • GET /v5/position/list → Проверка текущих позиций │
│ • POST /v5/order/cancel → Отмена ожидающих ордеров │
│ │
└────────────────────────────────────────────────────────────────────────────┘

Управление рисками

Размер позиции на основе уверенности

┌────────────────────────────────────────────────────────────────────────────┐
│ Управление рисками для Few-Shot трейдинга │
├────────────────────────────────────────────────────────────────────────────┤
│ │
│ 1. РАЗМЕР ПОЗИЦИИ НА ОСНОВЕ УВЕРЕННОСТИ │
│ ──────────────────────────────────────── │
│ │
│ Размер позиции = Базовый размер × Уверенность × Мультипликатор режима │
│ │
│ ┌────────────────────────────────────────────────────────────────────┐ │
│ │ Пороги уверенности: │ │
│ │ │ │
│ │ Уверенность < 0.50: НЕ ТОРГОВАТЬ (слишком неопределённо) │ │
│ │ Уверенность 0.50-0.65: 25% от базового размера │ │
│ │ Уверенность 0.65-0.75: 50% от базового размера │ │
│ │ Уверенность 0.75-0.85: 75% от базового размера │ │
│ │ Уверенность 0.85-0.95: 100% от базового размера │ │
│ │ Уверенность > 0.95: 100% (ограничение против переобучения) │ │
│ └────────────────────────────────────────────────────────────────────┘ │
│ │
│ 2. ОЦЕНКА КАЧЕСТВА SUPPORT SET │
│ ────────────────────────────── │
│ │
│ Оценка качества = f(баланс_классов, свежесть, разнообразие) │
│ │
│ ┌────────────────────────────────────────────────────────────────────┐ │
│ │ Факторы качества: │ │
│ │ │ │
│ │ • Баланс классов: Все классы должны иметь ~ одинаково примеров │ │
│ │ • Свежесть: Недавние примеры должны весить больше │ │
│ │ • Разнообразие: Примеры должны охватывать разные условия │ │
│ │ • Согласованность: Похожие примеры должны иметь похожие метки │ │
│ └────────────────────────────────────────────────────────────────────┘ │
│ │
│ 3. STOP-LOSS И TAKE-PROFIT │
│ ────────────────────────── │
│ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ Предсказание │ Stop-Loss │ Take-Profit │ Макс. время удерж.│ │
│ │──────────────────┼───────────┼─────────────┼───────────────────│ │
│ │ ВВЕРХ (выс.ув.) │ -2.0% │ +3.0% │ 4 часа │ │
│ │ ВВЕРХ (ср.ув.) │ -1.5% │ +2.0% │ 2 часа │ │
│ │ ВНИЗ (выс.) │ -2.0% │ +3.0% │ 4 часа │ │
│ │ ВНИЗ (ср.) │ -1.5% │ +2.0% │ 2 часа │ │
│ │ БОКОВИК │ -1.0% │ +1.0% │ 1 час │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
│ 4. АВТОМАТИЧЕСКИЕ ВЫКЛЮЧАТЕЛИ │
│ ──────────────────────────── │
│ │
│ Автоматическое закрытие позиции когда: │
│ • Уверенность падает ниже 0.40 во время удержания позиции │
│ • Предсказание меняет направление (ВВЕРХ → ВНИЗ или наоборот) │
│ • Support set устарел (>4ч с последнего обновления) │
│ • Дневной убыток превышает 3% капитала │
│ • 5 убыточных сделок подряд │
│ │
│ 5. МАСШТАБИРОВАНИЕ РИСКА ДЛЯ НОВЫХ АКТИВОВ │
│ ────────────────────────────────────────── │
│ │
│ ┌────────────────────────────────────────────────────────────────────┐ │
│ │ Часов с листинга │ Макс. размер позиции │ │
│ │───────────────────────┼────────────────────────────────────────────│ │
│ │ 0-4 часа │ 10% от нормального │ │
│ │ 4-12 часов │ 25% от нормального │ │
│ │ 12-24 часа │ 50% от нормального │ │
│ │ 24-48 часов │ 75% от нормального │ │
│ │ 48+ часов │ 100% от нормального │ │
│ └────────────────────────────────────────────────────────────────────┘ │
│ │
└────────────────────────────────────────────────────────────────────────────┘

Метрики производительности

Метрики оценки модели

МетрикаОписаниеЦель
Few-Shot AccuracyТочность классификации с K примерами> 65%
1-Shot AccuracyТочность с одним примером на класс> 55%
5-Shot AccuracyТочность с 5 примерами на класс> 70%
Cross-Asset TransferТочность на невиденных активах> 60%
Скорость адаптацииЭпизодов до целевой точности< 10
Калибровка уверенностиНадёжность оценок уверенностиECE < 0.10

Метрики торговой производительности

МетрикаОписаниеЦель
Коэффициент ШарпаДоходность с поправкой на риск> 2.0
Коэффициент СортиноДоходность с поправкой на нисходящий риск> 2.5
Макс. просадкаНаибольшее падение от пика< 15%
Доля выигрышейПроцент прибыльных сделок> 55%
Profit FactorВаловая прибыль / Валовой убыток> 1.5
ROI на новых активахДоходность на новых листингах> 10% в месяц

Бюджет задержки

┌─────────────────────────────────────────────────┐
│ Требования к задержке │
├─────────────────────────────────────────────────┤
│ Извлечение признаков: < 5мс │
│ Вычисление эмбеддинга: < 15мс │
│ Расстояние до прототипов: < 3мс │
│ Предсказание: < 2мс │
├─────────────────────────────────────────────────┤
│ Общий инференс: < 25мс │
├─────────────────────────────────────────────────┤
│ Обновление Support Set: < 50мс │
│ MAML адаптация (если исп.): < 500мс │
└─────────────────────────────────────────────────┘

Ссылки

  1. Short-Term Stock Price-Trend Prediction Using Meta-Learning

  2. Prototypical Networks for Few-shot Learning

  3. Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks

  4. Matching Networks for One Shot Learning

  5. Meta-Learning: A Survey

  6. Few-Shot Learning for Time Series Forecasting

    • Последние достижения в применении мета-обучения к временным данным
  7. Cross-Asset Learning in Financial Markets

    • Подходы трансферного обучения для мульти-активной торговли

Следующие шаги


Глава 86 из Machine Learning for Trading