dquant — это Python-библиотека с открытым исходным кодом для автоматического прогнозирования волатильности финансовых временных рядов. Она берёт на себя все этапы построения модели: от сырых цен до готового прогноза.
Project description
dquant
Автоматическое прогнозирование волатильности для трейдеров и аналитиков
Прогноз волатильности с помощью dquant
О проекте
dquant — это Python-библиотека с открытым исходным кодом для автоматического прогнозирования волатильности финансовых временных рядов. Она берёт на себя все этапы построения модели: от сырых цен до готового прогноза.
Ключевая идея
Трейдеру не нужно знать машинное обучение, чтобы использовать ИИ для прогнозирования волатильности.
Возможности
| Автоматический feature engineering | Из сырых цен (open, high, low, close, volume) создаются десятки признаков |
| Целевая переменная без look-ahead bias | Корректный расчёт реализованной волатильности |
| 3 модели на выбор | Градиентный бустинг, XGBoost, LightGBM с ранней остановкой |
| Визуализация обучения | График ошибок на train/validation для контроля переобучения |
| Сохранение и загрузка | Обучил один раз — используй всегда |
| Гибкая кастомизация | Свои признаки, параметры модели, источники данных |
| Интеграция с любыми данными | Yahoo Finance, MetaTrader 5 |
Для кого это
- Алгоритмические трейдеры — для калибровки моделей и управления рисками
- Дискреционные трейдеры — для оценки рыночного режима и размера позиции
- Количественные аналитики — для быстрого прототипирования
- Разработчики — для встраивания в торговые системы
- Студенты — как готовый бенчмарк и учебный пример
Установка
Требования
- Python 3.7 или выше
- pip
pip install dquant
Проверка установки
import dquant
print(dquant.__version__) # Должно вывести версию
Быстрый старт
Минимальный рабочий пример с Bitcoin
import pandas as pd
import yfinance as yf
from dquant.models import VolClustXGB
from dquant.visual import Visualization
# 1. Загружаем данные
df = yf.download("BTC-USD", start="2020-01-01", interval='1d')
df = pd.DataFrame({
'open': df[('Open', 'BTC-USD')].values,
'high': df[('High', 'BTC-USD')].values,
'low': df[('Low', 'BTC-USD')].values,
'close': df[('Close', 'BTC-USD')].values,
'volume': df[('Volume', 'BTC-USD')].values
}, index=df.index)
# 2. Создаем модель
model = VolClustXGB({}, default=True, early_stopping=True)
# 3. Обучаем модель
model.fit(df, input_bars=70, horizon=20, trees_count=200, show_results=True)
# 4. Делаем прогноз
rez = model.forecast(df.iloc[-70:].copy(), show=True)
Результат выполнения
[0.0016554 0.0018979 0.0015921 0.0014239 0.0013767 0.0011586 0.0013139
0.0009813 0.0007931 0.0012909 0.0013664 0.0016466 0.0014836 0.0011577
0.0008737 0.0007213 0.0008084 0.0012699 0.0015358 0.0014748]
Красным показана волатильность за предыдущие свечи, а зеленым - будущая волатильность.
Документация
| Ресурс | Описание |
|---|---|
| Полная документация | Все классы, методы, параметры |
Примеры использования
С Yahoo Finance
import pandas as pd
import yfinance as yf
from dquant.models import VolClustXGB
from dquant.visual import Visualization
# 1. Загружаем данные
df = yf.download("BTC-USD", start="2020-01-01", interval='1d')
df = pd.DataFrame({
'open': df[('Open', 'BTC-USD')].values,
'high': df[('High', 'BTC-USD')].values,
'low': df[('Low', 'BTC-USD')].values,
'close': df[('Close', 'BTC-USD')].values,
'volume': df[('Volume', 'BTC-USD')].values
}, index=df.index)
# 2. Создаем модель
model = VolClustXGB({}, default=True, early_stopping=True)
# 3. Обучаем модель
model.fit(df, input_bars=70, horizon=20, trees_count=200, show_results=True)
# 4. Делаем прогноз
rez = model.forecast(df.iloc[-70:].copy(), show=True)
С MetaTrader 5
import pandas as pd
import MetaTrader5 as mt5
from dquant.models import VolClustXGB
from dquant.visual import Visualization
symbol = "EURUSD" # какой символ смотреть
timeframe = mt5.TIMEFRAME_H1 # M1, M5, M15, H1, D1 и т.д.
days_back = 1000 # сколько дней истории загрузить
# Подключаемся к MT5
if not mt5.initialize():
print("Не удалось подключиться к MetaTrader5")
quit()
# Проверяем, что символ доступен
if not mt5.symbol_select(symbol, True):
print(f"Символ {symbol} не найден или не включён")
mt5.shutdown()
quit()
# Вычисляем даты
to_date = dt.datetime.now() + dt.timedelta(hours=3)
from_date = to_date - dt.timedelta(days=days_back)
# Загружаем бары
rates = mt5.copy_rates_range(symbol, timeframe, from_date, to_date)
mt5.shutdown() # больше не нужен терминал
if rates is None or len(rates) == 0:
print("Нет данных!")
quit()
# Превращаем в DataFrame
df = pd.DataFrame(rates)
df['time'] = pd.to_datetime(df['time'], unit='s')
df.set_index('time', inplace=True)
df.rename(columns={
'tick_volume': 'volume'
}, inplace=True)
# Создаем модель
model = VolClustXGB({}, default=True, early_stopping=True)
# Обучаем модель
model.fit(df, input_bars=70, horizon=20, trees_count=200, show_results=True)
# Делаем прогноз
rez = model.forecast(df.iloc[-70:].copy(), show=True)
Лицензия
Проект распространяется под лицензией MIT. Подробнее в файле LICENSE.
Контакты
Автор: Денис Макаров
- Telegram: @Denchik_ai
- GitHub: @artrdon
- Сайт проекта: dquant.space
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dquant-0.1.2.tar.gz.
File metadata
- Download URL: dquant-0.1.2.tar.gz
- Upload date:
- Size: 17.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8fb5fcce474866baaab02d8fba75d4f2794560000382def59f6f66c9fc9b4540
|
|
| MD5 |
08c2aaa0352c9338c7024091a339c49a
|
|
| BLAKE2b-256 |
4397403a6c2573a11d70e34ba7f354999a3ce87bf0a204ec14fa0da77f380146
|
File details
Details for the file dquant-0.1.2-py3-none-any.whl.
File metadata
- Download URL: dquant-0.1.2-py3-none-any.whl
- Upload date:
- Size: 12.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
58a51c07bfa59d58e8c540bd166d6568faffa7613d0a5726f0197bc51ddbcbae
|
|
| MD5 |
7f9a7ce71464ca41b08054e7a81d71f7
|
|
| BLAKE2b-256 |
a552c034dd493aed7dc04fecca96a9c2044bcd0e01f0a9a0c3ff49a401dba6e1
|