Настройка и запуск FinRL для торгового агента
FinRL — готовый фреймворк для запуска DRL-агентов на финансовых данных без написания торговых сред с нуля. Columbia University open-source проект. pip install finrl → данные → обучение → бэктест за несколько часов.
Установка и первый запуск
pip install finrl
pip install stockstats wrds alpaca-trade-api # источники данных
Быстрый старт:
import finrl
from finrl.train import train
from finrl.test import test
from finrl.config_tickers import DOW_30_TICKER
from finrl.config import INDICATORS
# обучение на акциях Dow Jones 30
train(
start_date='2010-01-01',
end_date='2021-10-31',
ticker_list=DOW_30_TICKER,
data_source='yahoofinance',
technical_indicator_list=INDICATORS,
drl_lib='stable_baselines3',
env='stock_trading',
model_name='ppo',
if_store_account_value=True,
cwd='./trained_models/ppo_dow30'
)
test(
start_date='2021-11-01',
end_date='2023-12-31',
ticker_list=DOW_30_TICKER,
data_source='yahoofinance',
technical_indicator_list=INDICATORS,
drl_lib='stable_baselines3',
env='stock_trading',
model_name='ppo',
cwd='./trained_models/ppo_dow30'
)
Конфигурация среды
from finrl.meta.env_stock_trading.env_stocktrading import StockTradingEnv
env_kwargs = {
"hmax": 100, # max акций за транзакцию
"initial_amount": 1_000_000, # начальный капитал
"buy_cost_pct": [0.001] * n, # комиссия покупки
"sell_cost_pct": [0.001] * n, # комиссия продажи
"state_space": state_space,
"stock_dim": n_tickers,
"tech_indicator_list": INDICATORS,
"action_space": n_tickers,
"reward_scaling": 1e-4 # масштаб reward
}
env = StockTradingEnv(df=train_df, **env_kwargs)
Сравнение моделей
models = ['a2c', 'ddpg', 'ppo', 'td3', 'sac']
results = {}
for model_name in models:
train(model_name=model_name, cwd=f'./models/{model_name}', ...)
account_value = test(model_name=model_name, cwd=f'./models/{model_name}', ...)
results[model_name] = account_value
# визуализация
from finrl.plot import backtest_plot
backtest_plot(results, baseline_start='2022-01-01', baseline_end='2023-12-31',
baseline_ticker='^GSPC') # vs S&P500
Сроки: 1–2 недели
FinRL — самый быстрый способ получить working baseline. Первый агент: 2–3 дня. Сравнение 5 алгоритмов с бэктестом — 1 неделя.







