VF Code: Торговые роботы | Алготрейдинг | ML
2.14K subscribers
101 photos
28 videos
66 links
Обсуждаем:
▪️ Торговые боты и автоматизацию
▪️ Бэктестинг и анализ стратегий
▪️ Применение ИИ и машинного обучения в торговле
▪️ Работа с API бирж и терминалами брокеров
▪️ Индикаторы, риск-менеджмент, оптимизацию
Все рынки. Все методы. Все технологии
Download Telegram
🧠 Можно ли использовать индекс страха и жадности в стратегии?


На одном из потоков VesperfinCode ученица спросила:

«А можно в стратегиях использовать индекс страха по криптовалюте через CoinMarketCap? Ну чтобы это было не “на глаз”, а в коде».


Чтобы ответить не теорией — мы собрали готовый скрипт на Python, который:
– тянет данные с CoinMarketCap API,
– считает несколько рыночных индикаторов,
– по желанию шлёт алерты в Telegram,
– и даёт сводку по рынку, которую уже можно встраивать в стратегию.


Код ниже, а вот что он делает 👇
7
ЧТО ДЕЛАЕТ КОД

Индекс страха и жадности (Fear & Greed)
Функция check_fear_greed_index():
– обращается к CoinMarketCap для индекса страха и жадности,
– получает значение индекса (от 0 до 100) и текстовую классификацию,
– выводит, например:
«Индекс страха и жадности: 18 (Extreme Fear)».
Внутри заложены алерты:
– если значение ≤ 20 — «ЭКСТРЕМАЛЬНЫЙ СТРАХ»,
– если значение ≥ 80 — «ЭКСТРЕМАЛЬНАЯ ЖАДНОСТЬ».

Эти события можно не только печатать в консоль, но и отправлять в Telegram (в коде уже есть вызовы send_telegram, их достаточно раскомментировать).

Как использовать в стратегиях:
индекс можно применять как фильтр режима рынка — например, ограничивать агрессивные входы при экстремальной жадности или искать точки для аккуратных входов при экстремальном страхе.

Доминация BTC
Функция check_btc_dominance():
– забирает метрики (global metrics) с CoinMarketCap,
– выводит:
• доминацию BTC (%),
• доминацию ETH (%),
• общую капитализацию рынка,
• объём торгов за 24 часа.

Пример:
«Доминация BTC: 52.34%
Доминация ETH: 17.89%
Общая капитализация: $2.35T
Объём 24ч: $86.12B».

Дополнительно вшит алерт, если доминация BTC падает ниже 50% — сигнал, что рынок начинает сильнее смещаться в сторону альтов.

Как использовать:
можно менять набор стратегий в зависимости от того, идёт ли рынок под BTC или начинается фаза, когда лучше смотреть на альты.

Индекс “сезона альткоинов”
Функция check_altcoin_season_index():
– берет список топ-100 монет по капитализации,
– находит доходность BTC за 90 дней,
– считает, сколько альткоинов обогнали BTC по доходности за те же 90 дней (стейблкоины игнорируются),
– рассчитывает процент:

«X из Y альтов обогнали BTC за 90 дней → индекс Z%».
Если индекс ≥ 75%, скрипт считает, что наступает «сезон альткоинов» и формирует соответствующий алерт.

Как использовать:
это готовый режимный индикатор — одни стратегии можно включать в “альтсезон”, другие — когда он не активен.

Топ растущих и падающих монет
Функция check_top_movers():
– берет топ-100 монет по капитализации,
– убирает стейблкоины,
– считает изменение цены:
• за последние 24 часа,
• за последние 7 дней.
– выводит ТОП-5 растущих и ТОП-5 падающих за 24 часа,
– и отдельный ТОП-5 за неделю.

Это быстрый индикатор того:
– какие монеты сейчас перегреты,
– что сильно просело,
– где вообще происходит существенное движение.

Категории и сектора (DeFi, AI, Gaming и др.)
Функция check_categories():
– запрашивает список категорий/секторов на CoinMarketCap (DeFi, AI, GameFi, Layer-2 и т.п.),
– считает среднее изменение цены по каждой категории,
– выводит ТОП-5 растущих и ТОП-5 падающих с указанием капитализации и числа токенов в секторе.

Это даёт понимание, какие сегменты рынка “на ходу”, а какие сейчас под давлением.

Конвертер цен
Функция convert_price(amount, from_symbol, to_symbol="USD"):
– простая обёртка над price-conversion API,
– позволяет быстро узнать, сколько стоит N единиц монеты в нужной валюте (по умолчанию в USD).
Например:
1 BTC → USD, 0.5 ETH → USDT и т.д.

Чтобы скрипт заработал у вас:

– в переменную CMC_API_KEY нужно подставить свой ключ API CoinMarketCap (выпускаем на сайте https://coinmarketcap.com/api/pricing/ - Free),
– в send_telegram() — токен Telegram-бота и id своего канала/чата,
– при желании раскомментировать строчки send_telegram(...) там, где нужны алерты.

Дальше каждую функцию уже можно подключать к своим стратегиям: использовать индексы и метрики как фильтры режима рынка, как условия включения/выключения стратегий или как источник ежедневной сводки по крипторынку.
🔥20👍4❤‍🔥31
This media is not supported in your browser
VIEW IN TELEGRAM
Вчера на эфире VF Code: Поддержка обсуждали важную вещь: почему один бэктест на всей длине истории данных не делает стратегию надёжной.


Почему так?

Рынок:
– меняет режимы (тренд → флэт);
– ломает ваши идеальные параметры;
– наказывает за подгонку под прошлые данные.

Если хотим, чтобы стратегия жила дольше одного красивого отчёта, нужен другой подход к проверке.

WALK-FORWARD / TIME-BASED CV
Идея простая:
не смотреть на рынок как на один отрезок, а разбить данные на последовательные куски и проверять стратегию по шагам.

Берём первый отрезок истории
– придумываем идею,
– подбираем параметры,
– проверяем, что стратегия вообще имеет смысл.
Это наш train.
Берём следующий отрезок вперёд по времени
– торгуем с уже найденными параметрами,
– по результатам этого куска ничего не дорабатываем.
Это наш test.
Дальше сдвигаем окно вперёд и повторяем:
– новый train-отрезок,
– новые параметры,
– новый test-кусок.
👍186🔥1
🔥 Открытый эфир VesperfinCode: Вопросы–Ответы + разбор IDE, в которых можно писать или открыть код, который мы публикуем в этой группе — 3 февраля, 19:00 (мск). Не пропустите!
Что это за эфиры Вопросы и Ответы?
На курсе VesperfinCode у нас есть специальные эфиры — разборы вопросов и ответов.

Мы собираем вопросы заранее не просто чтобы “ответить словами”, а чтобы подготовить нормальный разбор: показать код, примеры, подсказать подход и правильную логику.

Какие вопросы обычно разбираем?
Алготрейдинг и торговые роботы
— логика стратегий, вход/выход, риск-менеджмент, архитектура бота, подключение к биржам/QUIK, стабильность, ошибки и отладка.
Материалы курса
— если что-то не поняли, запутались в теме, не сходится результат, “почему код не работает”, “почему в бэктесте одно, а на реале другое”.
Машинное обучение, данные, стратегии
— подготовка данных, признаки, валидация, переобучение, правильные тесты, идеи стратегий на данных.
Python в целом и применение вне трейдинга
— медицина, проектная деятельность, нефтехимия, автоматизация, отчёты, аналитика, пайплайны данных — и любые кейсы, где Python помогает.
И вообще всё, что вас интересует
— если вопрос вам важен и он про развитие, код, аналитику, процессы.

Если вы проходили материал у нас в курсе или видели разборы в канале, но остались вопросы — обязательно отправляйте.

Зачем нужна форма и почему важно её заполнить
Мы используем форму, чтобы:
👉 собрать вопросы структурно, без хаоса в чате
👉 заранее понять, какие темы “провисают”
👉 подготовить доп. материалы или поставить тему в план эфира
👉 сделать эфир максимально полезным, а не “болталкой”

Очень просим не пропускать заполнение формы и писать даже “простые” вопросы — часто именно они мешают двигаться дальше.

___
📌 Запись эфира будет выложена и будет доступна для повторного просмотра.
🔥17
Media is too big
VIEW IN TELEGRAM
Запись эфира "Первый торговый робот — от установки Python до стратегии. Вопросы и ответы - 4.02.26"


2:02 – Про ошибку No module
9:07 – Про запуск роботов у всех брокеров
16:40 – Установка Anaconda для запуска кода
18:13 – Замена тикера в коде
20:32 – Установка библиотеки для скачивания данных из TradingView
22:50 – Простой пример тестирования стратегии
29:35 – Про ARIMA и ML для трейдинга
38:48 – Есть ли готовые прибыльные боты, можно ли их купить и как с ними работать
1:10:00 – Про использование LLM Perplexity
1:11:10 – Про курс
1:12:06 – Про характеристики компьютера для торговых роботов
1:14:49 – Про машинное обучение в трейдинге
1:22:00 – Про торговых роботов
12👍3
🧠 Как запустить код из эфира? (пошагово)



Вчера на эфире мы разобрали:
— как поставить Anaconda (таймкод 16:40)
— как запустить простой пример тестирования стратегии (таймкод 22:50)
Ссылка на эфир: https://t.me/vesperfincode/656

К этому разбору добавили уроки по установке Anaconda из нашего курса.

Если вы хотите:
попробовать код из нашего сообщества
подготовиться к курсу
или просто познакомиться с Python
— держите простой план действий 👇

1) Устанавливаем Anaconda
Anaconda — это набор инструментов для Python со встроенным JupyterLab.
Windows:
https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Windows-x86_64.exe
macOS (M1–M5):
https://repo.anaconda.com/archive/Anaconda3-2024.06-1-MacOSX-arm64.pkg
Скачиваем установщик → запускаем → ставим по стандартным шагам (как на видео ниже).

2) Скачиваем наш код
Открываем новую вкладку и переходим по ссылке с эфира:
https://disk.yandex.ru/d/HX75HPfsaLQssA
Скачиваем файл Demo.ipynb.
Обычно он попадает в папку Загрузки / Downloads или Desktop / Рабочий стол.

3) Открываем JupyterLab через Anaconda
Запускаем Anaconda Navigator
В списке программ выбираем JupyterLab → нажимаем Launch
Откроется браузер с JupyterLab. Слева будет файловый менеджер (User, Downloads, Desktop и т.д.)
Дальше:
— заходим в папку, куда скачиваются файлы (Downloads или Desktop)
— находим Demo.ipynb
— кликаем по нему → откроется ноутбук с инструкцией по тестированию стратегии

4) Устанавливаем библиотеки через Anaconda PowerShell Prompt (Windows)
Внутри ноутбука есть текстовые инструкции с командами для установки библиотек.
Делаем так:
Открываем Пуск → в поиске пишем: Anaconda PowerShell Prompt
Запускаем — откроется терминал
Смотрим, как это делается в видео: https://t.me/vesperfincode/656
(примерно 20:58 — показано, что копировать и как вставлять)
В терминале:
Ctrl+C — копируем команду из видео или ноутбука
Ctrl+V — вставляем в терминал
Enter — запускаем установку

Дополнительно ставим библиотеку, которую не успели озвучить на эфире:
pip install vectorbt
Ждём, пока всё установится.

5) Запускаем код в ноутбуке
Возвращаемся в JupyterLab, где открыт Demo.ipynb.
Дальше:
👉 выбираем первую ячейку
👉 жмём Shift+Enter на клавиатуре (или кнопку Run)
👉 ждём выполнение
переходим к следующей ячейке → снова Shift+Enter

⚠️ Важно: код выполняется строго сверху вниз. Если пропустить первую ячейку и запустить вторую — будет ошибка.

Когда все ячейки выполнятся, вы получите тот же результат, что и на эфире: графики доходности, расчёты и результаты теста стратегии.
👍10🔥7
Где ещё можно запустить .ipynb, кроме Anaconda?

Мы не староверы и не привязаны только к одному инструменту 🙂

Если вам удобнее работать не в локальном JupyterLab, а в облаке или в классической IDE, вот варианты, где можно запускать ноутбуки .ipynb.

Облако
Google Colab
Онлайн-среда от Google, где можно запускать ноутбуки прямо в браузере, без установки Python на компьютер.

Мы отдельно разбирали Colab тут:
https://t.me/vesperfincode/569

Облачные Jupyter-среды
Есть и другие варианты облачных Jupyter-серверов (аналог Colab, но с разными ограничениями и тарифами).
Обзор мы собирали здесь:
https://t.me/vesperfincode/629

Локальные Jupyter-интерфейсы
Jupyter Notebook (классический интерфейс)
Более старый, но до сих пор популярный вариант. Тоже ставится вместе с Anaconda. Если вам ближе классический формат “страницы с ячейками”, можно использовать его.


Универсальные IDE и редакторы
Это среды, где можно писать обычный код и (с плагинами) запускать ноутбуки.

VS Code
По сути стандарт индустрии. Ставите VS Code, добавляете расширение “Python” и “Jupyter” – после этого можно открывать и .py, и .ipynb в одном месте.

PyCharm (Professional / Community)
IDE именно под Python. В версии Professional есть нормальная поддержка ноутбуков, дебаггера, виртуальных окружений и больших проектов.

IntelliJ IDEA
Если вы уже Java-разработчик и привыкли к IDEA, можно добавить плагин Python и использовать её для анализа/редактирования кода и ноутбуков.

Zed
Новый очень быстрый редактор (на Rust), уже с поддержкой Jupyter-файлов. Подходит тем, кто хочет “лёгкий” и быстрый инструмент вместо тяжёлой IDE.

AI-редакторы и форки VS Code / PyCharm
Это инструменты со встроенным ИИ-помощником, которые умеют работать с кодом и часто основаны на VS Code или собственных движках.

Cursor
Редактор, похожий на VS Code, но с глубокой интеграцией ИИ: можно просить переписать, объяснить или дополнить код прямо в редакторе.

Windsurf (от Codeium)
Ещё один “умный” редактор, который помогает дописывать код и объяснять ошибки. Подходит, если хотите больше авто-подсказок при разработке.

Trae (от ByteDance)
Редактор с фокусом на ИИ-поддержку и автодополнение кода, особенно если вы привыкли к “умным” ассистентам.

Antigravity (Google)
Экспериментальный редактор/инструмент с ИИ-поддержкой от Google (для тех, кто любит всё новое и не боится тестировать).

PearAI
Open-source альтернатива Cursor. Идея та же: редактор + ИИ, но с открытым кодом и возможностью настроить под себя.

Void
Форк VS Code с упором на приватность (privacy-focused). Для тех, кому важно минимум телеметрии и контроль над данными.

GigaCode (решение от Сбера)
Российское решение: IDE/плагин с ИИ-подсказками, хорошей поддержкой русского языка и сценариями “объясни/исправь код”.

и др.

Дальше уже дело вкуса: главное, чтобы вы могли спокойно открыть .ipynb, запустить код из наших примеров и шаг за шагом двигаться к своим торговым роботам.
18🔥5
🧱 Yield Pickup Bond Swap: делаем облигации эффективнее



Пока рынки штормит, облигации часто остаются единственной зоной относительной стабильности. Но даже в облигациях деньги легко “застревают” в уставших бумагах: цена уже выросла, купон скромный, а доходность — не радует.

Чтобы это исправить, мы сделали YieldPickup.ipynb — код, который помогает переезжать из слабых облигаций в более доходные аналоги без лишнего героизма по риску.

Идея стратегии
👉 у вас есть облигация, которая подорожала и теперь даёт скромный купон / низкую доходность;
👉 на рынке есть похожая по сроку и риску, но дешевле и с выше YTM.

Логичный шаг:
👉 продать дорогую низкодоходнуюкупить более доходную и сопоставимую.

Что делает YieldPickup.ipynb
1) Сканирует рынок Мосбиржи
Берёт по всем доступным бумагам:
👉 цены и котировки,
👉 купоны,
👉 доходность к погашению (YTM),
👉 обороты / ликвидность.

2) Ищет кандидатов на продажу
Подсвечивает бумаги, которые имеет смысл продать, если они у вас уже есть:
👉 торгуются выше номинала,
👉 имеют низкую YTM ( доходность к погашению) относительно рынка,
👉 дают слабый текущий купон (и/или выглядят “дорого” по соотношению риск/доходность).

3) Ищет кандидатов на покупку
Отбирает бумаги, которые выглядят лучше:
👉 торгуются ниже 100% от номинала,
👉 имеют выше YTM,
👉 обладают нормальной ликвидностью (по ним реально проходят сделки).

4) Подбирает пары “свопов”
Формирует идеи в стиле:
👉 «продай А → купи Б»,
с ограничениями, чтобы не получилось “улучшили доходность ценой вечности”:
👉 без резкого увеличения срока до погашения,
👉 без ненужного роста риска (в рамках выбранного профиля).

5) Считает выгоду обмена
Для каждой пары считает:
👉 прирост купонного потока,
👉 улучшение YTM,
👉 “сдачу” — когда после свопа остаются деньги, на которые можно докупить ещё бумаг.

Профили риска в коде
Вы выбираете режим — и фильтры подстраиваются под него:
👉 conservative — только ОФЗ и максимально надёжные бумаги
👉 balanced — крепкие корпораты, разумный баланс риска/доходности
👉 aggressive — ВДО и повышенный риск ради максимальной доходности

Код формирует два файла:
1 yield_pickup_sell_candidates.csv
Список облигаций, которые имеет смысл продавать, если они есть в портфеле.
2 yield_pickup_pairs.csv
Готовые идеи обменов в формате:
«продай эту → купи вот эту → +к доходности ≈ столько-то»

Важно 🚨
👉 Комиссии учитываются ориентировочно — итог зависит от вашего тарифа/брокера.
👉 Неликвидные и “мертвые” бумаги отсекаются.
Флоатеры и сложные структурные продукты по умолчанию игнорируются, чтобы не рисовать доходность “с потолка”.


YieldPickup подсвечивает, где вы держите объективно слабые облигации, и предлагает варианты, куда можно переехать ради более высокой доходности без лишнего риска.
Решение — как всегда — за вами.

Можно пойти ещё дальше
Подключить код к роботу, чтобы он:
👉 сам отслеживал ваш портфель,
👉 по расписанию пересматривал позиции,
👉 и выполнял такие свопы автоматически.

Доработать под “ручной портфель”:
👉загружаете список своих облигаций (тикеры/ISIN/кол-во),
👉код проверяет только ваши позиции,
👉 и выдаёт swap-идеи строго под ваш портфель.
🔥273👍2
Данные для тестов: Binance-фьючерсы криптовалюты с 2018 года


Раньше мы выкладывали наборы по срочному рынку РФ (Algopack: https://t.me/vesperfincode/365 и архивы фьючерсов РФ: https://t.me/vesperfincode/403).

Теперь очередь крипты — исторические данные по Binance Futures (USDT-M) с 2018 года.
👍11
По ссылке лежат два больших архива 👇

1️⃣ futures_metrics_5m.csv.gz
Интервал: 5 минут, фьючерсы Binance USDT-M
Колонки:
create_time — время метрики (UTC)
symbol — тикер (например, BTCUSDT)
sum_open_interest — открытый интерес в монетах
sum_open_interest_value — открытый интерес в USDT
count_toptrader_long_short_ratio — L/S по количеству аккаунтов топ-трейдеров
sum_toptrader_long_short_ratio — L/S по объёму позиций топ-трейдеров (куда стоят «умные деньги»)
count_long_short_ratio — глобальный L/S всех аккаунтов (толпа)
sum_taker_long_short_vol_ratio — отношение объёма рыночных покупок к продажам (>1 — доминируют покупатели)
Техполя (можно не трогать): exchange, source, is_closed, ingested_at, updated_at.

2️⃣ candles_1m.csv.gz
Интервал: 1 минута, фьючерсы Binance USDT-M
Основные OHLCV-поля:
bucket_ts — время начала свечи (UTC)
symbol — тикер (BTCUSDT, ETHUSDT и т.п.)
open, high, low, close — цены O/H/L/C
volume — объём в базовой валюте (например, в BTC)
Полезные дополнительные:
quote_volume — объём в USDT (денежный оборот)
trade_count — число сделок за минуту (активность)
taker_buy_volume — объём рыночных покупок (в монетах)
taker_buy_quote_volume — объём рыночных покупок (в USDT)
Техполя: exchange, is_closed, source, ingested_at, updated_at.

💡 Что с этим можно делать:
👉 строить модели и фичи для ML-стратегий;
👉 тестировать стратегии без ограничений по глубине истории;
👉 работать с открытым интересом, L/S-метриками, агрессией покупателей/продавцов.

Чтобы это были не просто «файлы на десятки миллионов строк», а удобный источник данных, мы собрали всё в SQL-базу DuckDB.

🛠 Как подключиться к базе



1️⃣ Ставим DuckDB:

!pip install duckdb


2️⃣ Скачиваем файл market_data.duckdb по ссылке и указываем путь к нему в коде:

📌 Читаем свечи (таблица candles, список тикеров любой длины - от 1 до любого):

import duckdb

db_path = 'ВАШ_ПУТЬ_К_ФАЙЛУ/market_data.duckdb'

tickers = ['BTCUSDT', 'ETHUSDT', 'SOLUSDT']

with duckdb.connect(db_path, read_only=True) as con:
placeholders = ', '.join(['?'] * len(tickers))

df = con.execute(f"""
SELECT *
FROM candles
WHERE symbol IN ({placeholders})
ORDER BY bucket_ts DESC
""", tickers).df()

print(df)

Данные тут минутные, если торгуете на старших таймфреймах — их нужно агрегировать (resample по времени).

📌 Читаем открытый интерес и метрики «кто доминирует — покупатели или продавцы» (таблица metrics):

import duckdb

db_path = 'ВАШ_ПУТЬ_К_ФАЙЛУ/market_data.duckdb'

tickers = ['BTCUSDT', 'ETHUSDT', 'SOLUSDT'] # любое количество

with duckdb.connect(db_path, read_only=True) as con:
placeholders = ', '.join(['?'] * len(tickers))

df = con.execute(f"""
SELECT
symbol,
create_time,
sum_open_interest_value,
sum_toptrader_long_short_ratio,
sum_taker_long_short_vol_ratio
FROM metrics
WHERE symbol IN ({placeholders})
ORDER BY create_time DESC
""", tickers).df()

print(df)



Дальше — ваша очередь 🚀
🔥112
Данных очень много

🕯 Свечи (OHLCV, 1 минута)
Строк: 373.5 миллиона
Период: с 2018 по 2026 год
Тикеров: 615

📈 Метрики (настроение рынка, 5 минут)
Строк: 94.6 миллиона
Период: с конца 2021 по 2026 год
Тикеров: 612
🔥5
🔥 Эфир: «ChatGPT торгует лучше трейдера?» LLM-модели торгуют сами

📅 Вторник, 10 февраля в 19:00 МСК

Вы наверняка видели заголовки вроде: «Дал ИИ $1000 — он сам торговал и обогнал рынок».

Факты из реальных экспериментов:
🎓 Университет Флориды (2023): GPT-3.5 и GPT-4 анализировали новости и торговали акциями. GPT-3.5 превратил $1 в $6.12 (+512%), GPT-4 показал +276%.

🏟 Alpha Arena (октябрь–ноябрь 2025): 6 топовых LLM получили по $10,000 на крипторынке (BTC, ETH, SOL, BNB, DOGE, XRP).

Победители:
Qwen 3 MAX: +22.3% ($12,230)
DeepSeek V3.1: +4.89% ($10,489)

Проигравшие:
Claude Sonnet 4.5: -30.81% (~$6,919)
Grok 4: -45.3% (~$5,470)
Gemini 2.5 Pro: -56.71% (~$4,329)
GPT-5: -62.66% (~$3,734)

И такое доступно каждому — без команды разработчиков и миллионных бюджетов.
🔥8
На эфире разберём:
— Что на самом деле делают LLM в таких экспериментах
— В чём сила моделей: анализ новостей, генерация идей, разбор отчётов
— Где ограничения: исполнение, риск-менеджмент, смена режимов рынка
— Почему генеративный ИИ «не дотягивает» до поиска альфы
— Как собрать такой эксперимент самому
— Как с помощью ИИ генерировать и отбраковывать стратегии
— Как получить черновой код для бэктеста и робота
— Что ещё можно делать с агентами — на примере Clawdbot (OpenClaw)
— Как искать акции и строить стратегии «в стиле» известных инвесторов (библиотека Dexter)


Приходите — покажем, как это работает изнутри.

Если не хотите пропустить эфир, пройдите простую регистрацию на нашем сайте 👇
🔥17