Продолжаем цикл «Аллокация капитала».
Сегодня — финальная, самая практическая статья. Разбираем полный путь: от файлов с позициями до реальных объёмов позиций у работающих роботов.
Разберём каждый шаг.
Дальше всё уже в модуле «Аллокация капитала»:
Шаг 2. На вкладке «Подгрузка данных» добавляем файлы из шага 1 — по одному или целой папкой.
Шаг 3. На «Базовой доходности» смотрим график и выбираем точность (неделя/месяц) и диапазон дат.
Шаг 4. На «Расчётах» выбираем алгоритм — равновесную кластеризацию (#4) или HRP (#5) — и жмём «Рассчитать».
Шаг 5. Смотрим результат: таблица кластеров и веса, рядом — граф или дендрограмма.
Всё это уже разобрано в статьях №3 ,№4 и №5, повторяться не будем.
Результат расчёта живёт только внутри модуля. Чтобы перенести его в тестер или терминал, его нужно сохранить. Кнопка «Сохранить результат» пишет файл с весами.
Формат простой, через точку с запятой. Первая строка — заголовки:
Num cluster;Num in cluster;Name robot;100%;200%;300%;400%;500%;600%;Journal;
Дальше — по кластерам: строка с номером кластера, затем строки роботов. Колонки 100%–600% — это веса с плечами. Именно этот файл читает следующий шаг.
В тестере или боевом терминале (TesterLite / RobotUiLite) в таблице роботов, внизу, есть кнопка «Загр. аллокацию». Жмём её — открывается окно «Загрузка аллокации» с двумя вкладками:
«Загрузка данных» — выбираем файл (шаг 6) и видим таблицу кластеров и роботов из него;
«Установка данных» — выбираем плечо (1–6) и видим, что будет установлено, а что пропущено. Жмём «Применить».
Главная формула — как вес превращается в объём позиции. Робот обычно умеет держать несколько позиций сразу, поэтому объём одной позиции — это доля капитала, делённая на число позиций:
объём = значение плеча / число позиций
«Значение плеча» — это число из колонки 100%–600% для выбранного плеча, а «число позиций» — параметр робота (в OsEngine он называется Max positions или Positions count).
Если у робота нет параметра Volume или его нет в файле — он попадает в список «Пропущено» с причиной, и объём не меняется.
Модуль при применении ищет запущенного робота по имени. Имя он берёт из файла сохранения — то есть из имени файла позиций без суффикса _Deals.txt.
Поэтому имя робота в тестере или терминале должно совпадать с именем в сохранении. Если робот называется по-другому, модуль его не найдёт и объём не выставит.
Весь цикл можно прогнать без кликов, через MCP API:
terminal_open_mode { mode: «allocation» } — открыть режим аллокации;
allocation_bots_set / allocation_settings_set — загрузить ботов и настройки;
allocation_clustering_calculate или allocation_hrp_calculate — рассчитать;
allocation_result_save { file_path } — сохранить результат в файл;
allocation_load_apply { file_path, shoulder } — прочитать файл, применить объёмы к запущенным роботам, вернуть списки applied / skipped;
bot_get_params — проверить, что параметр Volume у робота реально изменился.
Так ИИ может сам, без человека, провести исследование и выставить объёмы.
Первый шаг — подготовка данных — тоже автоматизируется. Через MCP можно самому прогнать роботов в тестере (terminal_open_mode { mode: «testerlight» }, tester_data_set_config, bot_create, bot_set_config_tab_simple, tester_start) и забрать закрытые позиции из журнала (bot_journal_get_closed_positions). Нюансов там много — от имён бумаг с расширением .txt до таймаутов подключения, поэтому расписывать не будем: полные сценарии лежат в репозитории, в CONTEXT_MCP_SCENARIO_V2.md (Сценарий 12 «Журнал робота после теста» и Сценарий 14 «Прогон робота в тестере»).
На этом цикл «Аллокация капитала» заканчивается. Все алгоритмы, интерфейсы и MCP-инструменты — в OsEngine, код открыт на GitHub.
Удачных алгоритмов!
Комментарии открыты для друзей!

https://smart-lab.ru/company/os_engine/blog/1024149.php
Скачать OsEngine: https://github.com/AlexWan/OsEngine
Официальная поддержка OsEngine в MAX: https://max.ru/join/Yar1c0k41XMwbnBXWutnmj4rWMk3RrhXIUqpGl8wOog
Канал Научный трейдинг в MAX: https://max.ru/id2373023082_biz
Поддержка OsEngine в Телеграм: https://t.me/osengine_official_support
Канал Научный трейдинг (Bad Quant) в Телеграм: https://t.me/bad_quant