XTester Studio alpha.4: исследование стратегий и планы портфельного управления

XTester Studio alpha.4: исследование стратегий и планы портфельного управления

У стратегии быстро появляется собственная история. Сначала меняется правило входа, затем добавляется фильтр, потом приходится разбираться, почему после переноса кода иначе закрылась позиция. Если часть работы выполняет ИИ, вариантов становится ещё больше. Через несколько итераций важно понимать, какой код дал результат и почему именно этот вариант оставили.

XTester Studio 1.0.0-alpha.4 уже доступна для Windows, macOS и Linux. В этом выпуске у каждого исследования появился отдельный разговор с Copilot, доработаны графики, проверки переноса стратегий и исполнение ордеров. Вместе с ними обновились доставка релизов, диагностика и профили роботов.

В сентябре мы отдельно писали о проекте стратегии, фазах рынка, ветках эксперимента и портфельном управлении. Теперь можно собрать эти темы в одну рабочую последовательность: разработать стратегию, разобраться в её поведении, сохранить основания для выбора версии и затем проверить, что произойдёт рядом с другими алгоритмами. Первые этапы уже доступны в Studio. Программируемый портфельный управляющий и совместная проверка нескольких стратегий на общем счёте пока остаются направлением проработки, а не функциями alpha.4.

Что уже можно делать в Studio

Studio объединяет редактор, исторические данные, симуляцию и AI Lab. Стратегия хранится проектом: с исходниками, модулями и настройками, к которым можно вернуться после очередного эксперимента. Скачанная история, тесты и отчёты работают локально. Для загрузки данных, обновлений и облачных ИИ-моделей нужна сеть; для ИИ можно подключить и локальную модель.

Это более широкая среда, чем прежний Windows-клиент. Сейчас в Studio есть инструменты для десяти языков: C#, Python, JavaScript, TypeScript, Pine Script, Java, C++, Rust, Go и R. При этом возможности языков различаются. У C# наиболее полная поддержка разработки, исполнения и AI Lab. Для других языков предусмотрены адаптеры запуска и бэктеста; часть требует языкового пакета или установленного инструментария.

Pine Script v5/v6 исполняется собственным интерпретатором XTester. Ордера и издержки считает движок XTester, поэтому совпадение результата с TradingView нельзя предполагать заранее. Импорт библиотек и часть других возможностей Pine не поддерживаются. Выбирать язык стоит с учётом нужных API и библиотек, а перенос проверять по поведению стратегии.

Это возможности Studio в целом; изменения именно alpha.4 собраны в коротких релизных заметках.

У каждого исследования свой разговор

В alpha.4 чат Copilot привязан к конкретному исследованию AI Lab. Разговор можно открыть, когда понадобится; вопросы возвращают пользователя к соответствующему исследованию. Когда одновременно проверяются разные идеи, это помогает держать обсуждение рядом с той задачей, к которой оно относится.

Например, в одном исследовании вы проверяете фильтр входа, а в другом меняете выход из позиции. Исходные версии и вопросы различаются. Отдельные разговоры дают каждому исследованию своё место, без необходимости продолжать обе темы в общем чате.

Сама лаборатория уже работает с версиями, экспериментами, сравнением результатов и применением выбранной версии к проекту. В статье о ветках эксперимента мы разбирали эти операции и показывали макет будущего интерфейса.

За этой работой стоит более длинная задача: сохранять ход поиска, включая неудачные попытки. Если агент принёс удачную стратегию, полезно знать, сколько раз он менял гипотезу после просмотра истории. Какие фильтры отверг? Почему сменил период? В какой момент стал решать уже другую задачу?

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

График и перенос кода: где искать расхождение

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

В alpha.4 на короткой истории сохраняется нормальное расстояние между свечами, а при быстром тиковом прогоне отображается формирующаяся свеча. Во время запуска и компиляции остаётся видимым индикатор загрузки. Повторный запуск сохраняет выбранный период симуляции.

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

В Studio стратегия также может сама запросить более подробную историю, заметив событие, например последние три минуты с шагом в одну секунду. Тестер ставит время симуляции на паузу, получает данные из локального кэша или с биржи и продолжает расчёт. Доступность зависит от источника и периода. Если реальных секундных данных нет, синтетические можно использовать только с явного согласия пользователя и с пометкой об их происхождении: это не реальные биржевые наблюдения. В alpha.4 исправлено чтение ограниченного участка данных при таком уточнении на длинной истории.

Мастер конвертации теперь проверяет больше ошибок, связанных с объёмом, направлением, пересечениями и обработкой выходов, прежде чем принять перенос. В исполнении исправлены проскальзывание рыночных ордеров на границе минуты, несколько случаев частичных и трейлинг-выходов в Pine и обработка отмены ордеров в Live. Закрытие окна Studio завершает относящуюся к нему сессию отладки F5.

Для автора стратегии из этого следует конкретный следующий шаг: если ваш код использует затронутую механику, повторите прежний расчёт на тех же данных и сравните соответствующие сделки. Изменение результата после исправления движка не обязательно связано с улучшением торговой идеи. Причиной мог быть другой расчёт исполнения.

Успешная компиляция перенесённого кода тоже не означает равенства стратегий. Нужно сопоставить условия входа, объёмы, выходы и издержки. Даже совпадение времени и направления сделок не доказывает одинаковый финансовый результат.

Фазы рынка и правила риска

В сентябрьской статье о стратегии как проекте анализатор фаз ещё относился к предстоящему релизу. Сейчас он описан среди возможностей Studio: направление, волатильность, переходы и события определяются по закрытым барам и доступны стратегии через C# API.

Для исследования это способ задать более точный вопрос. Скажем, правило входа осталось прежним, но нас интересует, как оно ведёт себя в направленном движении и в боковике. Проверка устойчивости позволяет рассматривать поведение на рыночных фазах и при изменённых комиссиях и проскальзывании. Эпизоды фаз берутся из той же истории, что и основной тест. Это дополнительный разбор выбранного периода, а не независимая проверка на новых данных.

Следующая идея, которую мы рассматриваем, состоит в изменении допустимого риска по мере изменения условий. Например, для трендовой стратегии можно было бы снижать лимит риска, когда её правила указывают на переход к боковому рынку.

Проверять такое правило нужно вместе с моментом принятия решения. Какие данные были доступны тогда? Что послужило основанием для нового лимита? Если фазу определили по более позднему движению цены, в тест попало знание будущего. Затем можно сравнить фиксированный и изменяемый риск на одинаковых данных и условиях исполнения, а выбранный вариант проверить на новом периоде. Усложнение правил само по себе ничего не говорит об их полезности.

Несколько стратегий и один счёт

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

Представим, что одна стратегия уже заняла часть маржи, а другая получила сигнал на тот же рынок. Во втором отдельном тесте денег достаточно. В совместном расчёте заявка может оказаться слишком большой или вообще не пройти ограничение. Третья стратегия способна добавить ещё одну позицию в ту же сторону. Разные названия алгоритмов ещё не означают разный риск.

Над стратегиями должен работать управляющий модуль, или оркестратор. Стратегии определяли бы торговые действия по своим правилам, а управляющий распределял бы допустимый риск с учётом рынка, истории работы алгоритмов, открытых позиций и просадки всего портфеля. Правила можно было бы писать кодом или подключать готовым модулем. В одном портфеле мы хотим объединить собственные и сторонние стратегии; ещё одним их источником в будущем мог бы стать маркетплейс.

Выделенный капитал и допустимый риск требуют раздельного учёта. Одинаковые суммы у двух стратегий могут давать разную нагрузку из-за плеча, волатильности и размера позиций. Поэтому в будущей панели нужны выделенный и использованный риск, статистика и журнал решений: когда лимит изменился и на каком основании.

В alpha.4 уже есть более узкая функция: необязательный дневной лимит убытка в профиле робота, в том числе в процентах от капитала счёта. Пакеты роботов включают нужные их настройкам коннекторы и компоненты среды, а мастер оценивает соответствующий размер. Дневной лимит отдельного робота не следует принимать за готовое распределение риска между несколькими стратегиями.

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

Ручное управление и роль ассистента

В этой концепции пользователь должен иметь возможность изменить лимит, приостановить новые входы отдельной стратегии и позже вернуть её под автоматическое управление. Запрет входов и закрытие открытых позиций требуют разных команд. Ручное ограничение должно сохранять силу, пока пользователь его не отменит, а не исчезать при следующем пересчёте управляющего.

ИИ-ассистента через MCP рассматриваем как участника этого процесса: разобрать состояние, объяснить принятое решение, предложить изменение. Возможность действовать должна зависеть от выданных пользователем разрешений. Сам MCP задаёт способ обращения к функциям программы, но не заменяет ограничения риска в исполнении.

Для работы с проектом, данными, тестами и результатами внешнего агента можно подключить к Studio уже сейчас. Подключение подтверждается в окне Studio, доступ можно ограничить чтением, а изменять состояние одновременно может только одна сессия.

Для работы агента с растущим набором функций мы планируем Progressive Tool Discovery: поиск нужного инструмента и подгрузку его описания и параметров по мере надобности. Например, при разборе входа агенту нужны график и сделки, а инструменты экспорта в этот момент только занимают место в контексте. Вместо полного каталога в каждом запросе он получал бы описания функций для текущего шага.

Обновление, диагностика и установка alpha.4

Studio теперь может узнать о новой версии через резервный канал сайта, если GitHub временно недоступен. Сами установочные файлы по-прежнему скачиваются по версионным ссылкам GitHub, с проверкой размера и SHA-256. Поэтому резервный канал помогает получить сведения о релизе, но не превращает сайт в независимое зеркало установщиков.

Необязательная диагностика охватывает проверку обновлений, показ предложения, проверенную загрузку и результат установки, а также ограниченный набор категорий сбоев запуска и процессов. Успех установки фиксируется только после запуска ожидаемой версии с готовыми движком и ядром.

Текст согласия обновлён до версии 4 и объясняет в том числе код страны, определяемый принимающим сервером. Прежние ответы «Разрешить» и «Спросить позже» требуют нового согласия; отказ сохраняется. Выключение диагностики очищает очередь отчётов. Сырые логи, локальные пути и учётные данные в неё не включаются.

Выпущены семь дистрибутивов: установщик и portable-архив для Windows x64, архивы для Mac на Apple Silicon и Intel, а также DEB, RPM и tar.gz для Linux x64. Это ранний публичный выпуск. Для Intel Mac нужна macOS 14 или новее; для Apple Silicon на странице загрузки указана macOS 12 или новее. Прежняя Windows-версия 0.0.91 остаётся в архиве релизов.

Сертификатов пока не хватает: Windows-пакеты не имеют подписи Authenticode, macOS-пакеты подписаны ad-hoc, без Apple Developer ID и нотаризации Apple. При запуске возможны предупреждения операционной системы. Для российских разработчиков получение нужных сертификатов сейчас затруднено; мы занимаемся этим вопросом. Срок решения пока не объявляем. Подписанный список контрольных сумм подтверждает отдельную проверку файлов, но не заменяет доверенную подпись приложения для Windows или macOS.

В полном описании релиза перечислены проведённые проверки и их границы. В частности, нативный запуск macOS и принятие Gatekeeper ещё не подтверждены; Linux проверялся в Ubuntu под WSL2/Xvfb, а не на всех перечисленных дистрибутивах. Наличие пакета для платформы и объём проверки на ней нужно различать.

Есть известная особенность обновления: помощник перезапускает Studio со стандартными параметрами. Если вы используете --user-data-dir, --extensions-dir или --shared-data-dir, после обновления откройте Studio своим исходным ярлыком. Файлы сохраняются, но эти параметры в автоматический перезапуск не переносятся.

Скачать XTester Studio можно уже сейчас. Для знакомства с alpha.4 подойдёт существующая стратегия, поведение которой вы знаете: сохраните условия прежнего расчёта, разберите затронутые исполнения и заведите отдельное исследование для следующей гипотезы. Портфельную часть пока полезно обсуждать через конкретный сценарий: какие стратегии должны делить счёт, по какому правилу ограничивать их риск и что пользователь должен иметь возможность изменить вручную.

Материал носит информационный характер и не является инвестиционной рекомендацией. Результаты бэктеста не гарантируют будущую доходность.