Настройка FinRL-Meta для мультирыночного обучения

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1Все 1566 услуг
Настройка FinRL-Meta для мультирыночного обучения
Средний
~2-3 дня
Часто задаваемые вопросы

Направления AI-разработки

Этапы разработки AI-решения

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1284
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1196
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    901
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1119
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    586
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    853

Настройка FinRL Meta для обучения на нескольких рынках

FinRL-Meta — расширение FinRL с поддержкой множества рынков: акции, крипто, форекс, фьючерсы. DataOps пайплайн для нормализации данных из разных источников. Meta-learning (MAML) для быстрой адаптации к новым рынкам.

Мультирыночная архитектура

from finrl.meta.data_processor import DataProcessor

# акции (Yahoo Finance)
dp_stocks = DataProcessor(data_source='yahoofinance',
                          start_date='2015-01-01',
                          end_date='2023-12-31')
df_stocks = dp_stocks.download_data(ticker_list=SP500_TICKERS)

# крипто (Binance)
dp_crypto = DataProcessor(data_source='binance',
                          start_date='2019-01-01',
                          end_date='2023-12-31')
df_crypto = dp_crypto.download_data(
    ticker_list=['BTCUSDT', 'ETHUSDT', 'SOLUSDT']
)

# нормализация: единый feature space
df_stocks = dp_stocks.clean_data(df_stocks)
df_crypto = dp_crypto.clean_data(df_crypto)

Meta-Learning для быстрой адаптации

MAML (Model-Agnostic Meta-Learning): Агент учится "как учиться" на новом рынке за минимум шагов. Полезно при выходе на новый актив с малой историей.

# FinRL-Meta MAML setup (упрощённо)
meta_tasks = [
    TradingTask(market='stocks', ticker='AAPL'),
    TradingTask(market='stocks', ticker='MSFT'),
    TradingTask(market='crypto', ticker='BTCUSDT'),
]

for meta_epoch in range(meta_epochs):
    task_grads = []
    for task in meta_tasks:
        # fast adaptation: K шагов на задаче
        adapted_params = inner_loop(task, K=5)
        # оценка adapted policy
        task_grads.append(compute_grad(task, adapted_params))
    # meta update
    meta_optimizer.step(sum(task_grads))

DataOps пайплайн

Нормализация между рынками:

  • Цены: log-returns вместо абсолютных значений
  • Объём: нормировка на скользящее среднее 20 дней
  • Индикаторы: z-score нормализация в рамках скользящего окна
def normalize_multi_market(df):
    df['log_return'] = np.log(df['close'] / df['close'].shift(1))
    df['vol_ratio'] = df['volume'] / df['volume'].rolling(20).mean()
    for col in ['rsi', 'macd', 'cci']:
        rolling_mean = df[col].rolling(252).mean()
        rolling_std = df[col].rolling(252).std()
        df[f'{col}_norm'] = (df[col] - rolling_mean) / (rolling_std + 1e-8)
    return df.dropna()

Обучение с несколькими рынками одновременно

from stable_baselines3 import PPO
from stable_baselines3.common.vec_env import SubprocVecEnv

def make_market_env(df, market_type):
    return lambda: FinRLMetaEnv(df, market_type=market_type)

envs = SubprocVecEnv([
    make_market_env(df_stocks_train, 'stocks'),
    make_market_env(df_crypto_train, 'crypto'),
    make_market_env(df_forex_train, 'forex'),
    make_market_env(df_futures_train, 'futures'),
] * 2)  # 8 параллельных сред

model = PPO("MlpPolicy", envs, verbose=1)
model.learn(total_timesteps=5_000_000)

Агент видит рыночный тип как feature → учится адаптировать поведение.

Оценка генерализации

Walk-forward по каждому рынку отдельно + общий агрегированный Sharpe. Критерий: агент не должен превосходить специализированного агента более чем на 20% на знакомом рынке, но быть в пределах 10% на новом.

Сроки: 3–5 недель

Мультирыночный датапайплайн — 1 неделя. Обучение + валидация на 3+ рынках — 2–3 недели. Meta-learning адаптация — дополнительно 1–2 недели.