Перейти к содержимому
Все стратегии

Стратегии

Сезонность доходности в одном календарном месяце, доллар-нейтральный кросс-секционный портфель из 18 секторальных и страновых ETF (USEQ 1-DAY, ежемесячная ребалансировка на закрытии месяца, длинные позиции в топ-k / короткие в нижних k по сезонной избыточной доходности)

Итог: Отменено

SameMonthSeasonalityEtfLS

Сводка по итогам

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

Гипотеза

Это стратегия сезонности доходности на поперечном срезе. Источники: Heston & Sadka (2008, JFE) и Keloharju, Linnainmaa & Nyberg (2016, JF); они обнаружили этот эффект в индексах стран, секторах и других классах активов. Набор инструментов — заданная правилами панель из FIXED 18 ETF с листингом на US, включённых в каталог USEQ и имеющих длинную историю дневных данных: 9 исходных Select Sector SPDRs (XLB, XLE, XLF, XLI, XLK, XLP, XLU, XLV, XLY; с 1998-12) и 9 страновых/региональных iShares (EWJ, EWG, EWU с 1996;……Показать большеСвернуть

Это стратегия сезонности доходности на поперечном срезе. Источники: Heston & Sadka (2008, JFE) и Keloharju, Linnainmaa & Nyberg (2016, JF); они обнаружили этот эффект в индексах стран, секторах и других классах активов. Набор инструментов — заданная правилами панель из FIXED 18 ETF с листингом на US, включённых в каталог USEQ и имеющих длинную историю дневных данных: 9 исходных Select Sector SPDRs (XLB, XLE, XLF, XLI, XLK, XLP, XLU, XLV, XLY; с 1998-12) и 9 страновых/региональных iShares (EWJ, EWG, EWU с 1996; EWZ, EWT, EWY с 2000; EFA 2001; EEM 2003; FXI 2004). Поскольку это ETF, проблемы с составом индекса на конкретный момент времени нет (L190). ETF ETF допускается к торгам, если у него есть не менее min_years (5) полных календарных лет истории. Сигнал для ETF i и предстоящего месяца m: seasonal_excess = средняя доходность i в календарном месяце m за последние lookback_years лет минус средняя доходность в остальные месяцы этих лет (форма «сезонность минус несезонность» KLN, устраняющая общий дрейф доходности ETF). В последнюю торговую сессию каждого месяца (из src/data/market_calendar.py, включая сокращённые сессии) ETF, прошедшие отбор, ранжируются. Открываются длинные позиции по top_k и короткие по bottom_k с нейтральностью по долларовой стоимости. Размер каждой позиции определяется обратной величиной волатильности за 60 дней, а валовая экспозиция составляет 100% капитала на счёте типа 2x Reg-T. Ордера исполняются по цене закрытия месяца. Механизма входа на открытии следующей сессии нет, поэтому сделки совершаются по цене закрытия этой сессии, а позиции удерживаются весь следующий месяц. Для каждой стороны также предусмотрен защитный стоп внутри бара на уровне 15% (сопоставимый с платформой ордер reduce-only stop_market). Этот механизм не запускался в корпусе. В предыдущих запусках сезонности использовались таймеры для отдельных активов по дням недели и на стыке месяцев для BTC, QQQ и SPY. Стратегия основана только на OHLCV, без BTC и без Binance.

Это заполняет недостаточно представленные сегменты (long_short 18.8%, USEQ 6.6%, несколько инструментов) механизмом, отсутствующим в корпусе. Панель ETF позволяет избежать ловушки состава индекса, характерной для вселенной акций-компонентов (L190). Дополнительные данные не нужны (L189); стратегия нацелена на движения в несколько процентов в месяц, а десятилетия дневной истории дают сотни ребалансировок.

verification_loop: Проверка не пройдена (уровень 4 — проверка QA) [класс=hypothesis_mismatch]: - [edge_concern] В песочнице зафиксировано отрицательное математическое ожидание, особенно в стрессовых режимах. Результат носит рекомендательный характер и не определяет вердикт о корректности. - [критично] Гипотеза прямо требует, чтобы ордера ребалансировки на конец месяца исполнялись по цене закрытия этой сессии. _reconcile отправляет обычные рыночные ордера через _submit_entry_instrument и _submit_exit_position. В……Показать большеСвернуть

verification_loop: Проверка не пройдена (уровень 4 — проверка QA) [класс=hypothesis_mismatch]: - [edge_concern] В песочнице зафиксировано отрицательное математическое ожидание, особенно в стрессовых режимах. Результат носит рекомендательный характер и не определяет вердикт о корректности. - [критично] Гипотеза прямо требует, чтобы ордера ребалансировки на конец месяца исполнялись по цене закрытия этой сессии. _reconcile отправляет обычные рыночные ордера через _submit_entry_instrument и _submit_exit_position. В этой конфигурации USEQ с обработкой по барам эти ордера исполняются на открытии следующей сессии, что подтверждается src/backtesting/next_open.py и execution_capabilities из краткого описания. Следовательно, входы, сокращения позиций и развороты не могут соответствовать указанному времени исполнения. В самой заявке признаётся это несоответствие. (строка 292) — исправление: Получи обновлённую спецификацию исследования, где явно требуется принимать решения на конец месяца с исполнением на открытии следующей сессии, а затем соответственно обнови документацию стратегии. Для сохранения текущей спецификации платформе необходима поддержка исполнения на закрытии текущей сессии; код стратегии этого обеспечить не может.

Реализация

Ежемесячное ранжирование фиксированной панели 18-ETF USEQ по сезонной избыточной доходности; длинные позиции в топ-k и короткие в нижних k с весами по обратной волатильности, валовая экспозиция 100% и внутрибараные защитные стопы 15%. Существующая реализация сохранена для проверки; требуемое исполнение по цене закрытия месяца не поддерживается.

Сохраняет прежние сигнал, универсум, определение размера позиций, сверку и защитные стопы. QA указывает на реальное несоответствие контракту исполнения. Явное правило разработчика USEQ требует отказаться от реализации, если гипотеза требует исполнения по цене закрытия; изменения инфраструктуры и подмена на исполнение в следующей сессии нарушили бы рамки этой задачи. Отрицательное матожидание в песочнице носит рекомендательный характер и не является причиной отказа.

Результаты верификации

Проверка не пройдена (уровень 4 — проверка QA) [класс=hypothesis_mismatch]: - [edge_concern] В песочнице выявлено отрицательное математическое ожидание, особенно в стрессовых режимах. Это замечание носит рекомендательный характер и не определяет вердикт о корректности. - [критично] Гипотеза прямо требует, чтобы ордера ребалансировки на конец месяца исполнялись по цене закрытия этой сессии. _reconcile отправляет обычные рыночные ордера через _submit_entry_instrument и _submit_exit_position. Эта конфигурация USEQ,……Показать большеСвернуть

Проверка не пройдена (уровень 4 — проверка QA) [класс=hypothesis_mismatch]: - [edge_concern] В песочнице выявлено отрицательное математическое ожидание, особенно в стрессовых режимах. Это замечание носит рекомендательный характер и не определяет вердикт о корректности. - [критично] Гипотеза прямо требует, чтобы ордера ребалансировки на конец месяца исполнялись по цене закрытия этой сессии. _reconcile отправляет обычные рыночные ордера через _submit_entry_instrument и _submit_exit_position. Эта конфигурация USEQ, управляемая барами, исполняет их на открытии следующей сессии, что подтверждается src/backtesting/next_open.py и документом execution_capabilities в техническом задании. Поэтому входы, сокращения позиций и развороты не могут соответствовать заданному времени исполнения. В самой заявке признана эта несовместимость. (строка 292) — исправление: получи пересмотренную исследовательскую спецификацию с явным требованием принимать решения на закрытии месяца, а исполнять их на открытии следующей сессии, затем обнови документацию стратегии. Для сохранения текущей спецификации платформе необходима поддержка исполнения по цене закрытия той же сессии; код стратегии обеспечить её не может.

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

Гипотеза прямо требует, чтобы ордера ребалансировки на конец месяца исполнялись по цене закрытия этой сессии. _reconcile отправляет обычные рыночные ордера через _submit_entry_instrument и _submit_exit_position. Эта конфигурация USEQ, управляемая барами, исполняет их на открытии следующей сессии, что подтверждается src/backtesting/next_open.py и документом execution_capabilities в техническом задании. Поэтому входы, сокращения позиций и развороты не могут соответствовать заданному времени исполнения. В самой заявке признана эта несовместимость.

История итераций

Проверка не пройдена (уровень 4 — проверка QA) [класс=code_defect]: - [edge_concern] В закрытых позициях песочницы средний показатель после учтённых издержек составил -0.1545% от номинала. Оцени сезонный спред, спред/импакт и стоимость заимствования за весь исторический период; убытки песочницы не определяют этот вердикт о корректности. - [критично] Защитные стопы синхронизируются до исполнения входных ордеров, поставленных в очередь. Поэтому у вновь открытых позиций нет стопа, а у существующих позиций с……Показать большеСвернуть

Проверка не пройдена (уровень 4 — проверка QA) [класс=code_defect]: - [edge_concern] В закрытых позициях песочницы средний показатель после учтённых издержек составил -0.1545% от номинала. Оцени сезонный спред, спред/импакт и стоимость заимствования за весь исторический период; убытки песочницы не определяют этот вердикт о корректности. - [критично] Защитные стопы синхронизируются до исполнения входных ордеров, поставленных в очередь. Поэтому у вновь открытых позиций нет стопа, а у существующих позиций с изменённым размером остаются устаревшие значения объёма стопа. Колбэка исполнения для синхронизации нет. Следующая синхронизация происходит после обработки исполнения следующего дневного бара, оставляя всю эту сессию без защиты или под неполной защитой. Это нарушает требование о защитном стопе внутри бара 15%. (строка 416) — исправление: Устанавливай и синхронизируй стоп с параметром reduce-only для каждого плеча сразу после исполнения входа или изменения размера, используя события исполнения/позиции, либо применяй поддерживаемые условные ордера. Убедись, что защита действует до исполнения в следующей сессии OHLC. - [критично] Плечо, для которого меняется знак, закрывается в колбэке на конец месяца, но вход в противоположную сторону откладывается, поскольку поставленный в очередь ордер на закрытие ещё не исполнен, когда _net_qty считывается повторно. _reconcile вызывается снова только на следующем синхронизированном дневном баре. В результате противоположная позиция открывается на закрытии следующей сессии, а не на требуемом закрытии месяца, и первая сессия месяца удержания пропускается. (строка 339) — исправление: Выполняй развороты посредством сверки по событиям исполнения на исходный момент ребалансировки либо отправляй корректно управляемый ордер на разворот с неттингом. Проверь, что старый риск снят, а новая целевая позиция установлена на конец месяца. - [предупреждение] Допуск изменения размера 20% для каждого плеча может привести к тому, что исполненная позиция существенно отличается от её долларово-нейтральных целей с валовой экспозицией 100%. Например, сохранённая длинная экспозиция может составить 120% целевого значения своего плеча, а сохранённая короткая — 80%, создавая чистую экспозицию примерно 20% до округления. Одних целевых весов недостаточно, чтобы подтвердить фактическую нейтральность. (строка 345) — исправление: Проверяй совокупный номинал исполненных длинных и коротких позиций после применения допуска и устраняй остаточный дисбаланс в рамках явно утверждённого допуска портфеля. - [предупреждение] Проверки допуска используют 60 завершённых месячных доходностей вместо пяти полных календарных лет. ETF, размещённый в середине года, может получить допуск до завершения пяти полных лет с января по декабрь. (строка 224) — исправление: Отслеживай покрытие полных календарных лет и применяй правило допуска гипотезы либо явно уточни, что допуск означает 60 завершённых месячных доходностей.

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

Защитные стопы синхронизируются до исполнения поставленных в очередь входных ордеров. Поэтому у новых позиций нет стопа, а количества стопов существующих позиций с изменённым размером остаются устаревшими. Обратного вызова при исполнении для синхронизации защиты нет. Следующая синхронизация происходит после обработки исполнения на следующем дневном баре, оставляя всю эту сессию без защиты или с неполной защитой. Это нарушает заданный внутрибараный защитный стоп 15%.

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

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

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

Допуск изменения размера позиции 20% на каждую ногу может привести к тому, что исполненная книга существенно отклонится от доллар-нейтральных целей с валовой экспозицией 100%. Например, сохранённая длинная экспозиция может составить 120% от целевого значения своей стороны, а сохранённая короткая — 80%, что до округления даст чистую экспозицию примерно 20%. Одни лишь целевые веса не подтверждают фактическую нейтральность.

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

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

Проверка не пройдена (уровень 4 — проверка QA) [класс=code_defect]: - [edge_concern] В песочнице среднее значение составило -0.10027% от номинала по 312 закрытым позициям с учётом моделируемых издержек. Оцени сезонный разброс доходности, спред, рыночное воздействие и стоимость заимствования за всю историю; эти убытки не определяют вердикт о корректности. - [критично] _reconcile возвращает True после отправки ордеров, не проверяя, достигнуты ли целевые позиции. Это некорректно взаимодействует с фактическим……Показать большеСвернуть

Проверка не пройдена (уровень 4 — проверка QA) [класс=code_defect]: - [edge_concern] В песочнице среднее значение составило -0.10027% от номинала по 312 закрытым позициям с учётом моделируемых издержек. Оцени сезонный разброс доходности, спред, рыночное воздействие и стоимость заимствования за всю историю; эти убытки не определяют вердикт о корректности. - [критично] _reconcile возвращает True после отправки ордеров, не проверяя, достигнуты ли целевые позиции. Это некорректно взаимодействует с фактическим разогревом бэктеста: исполнитель задаёт _no_entries_before_ns, а базовый класс вызывает calculate_signal в этот период, подавляя отправку ордеров на вход. На конец месяца в период разогрева calculate_signal записывает _rebal_target_mk наступающего месяца, формирует целевые позиции и сбрасывает _rebal_pending, хотя портфель остаётся без позиций. Если оценка начинается в наступившем месяце, резервная логика на его начало также пропускает ребалансировку, поскольку _rebal_target_mk уже равен mk. Поэтому стратегия пропускает портфель этого месяца и не держит экспозицию вплоть до конца следующего месяца. Отклонённые или подавленные заявки при обычном исполнении также могут привести к неполному, не нейтральному портфелю, который будет помечен как завершённый. (строка 320) — исправление: В период заморозки до оценки загружай историю, но не продвигай состояние исполненной ребалансировки и не сверяй ордера. Определяй завершение сверки по фактическим позициям с учётом знака и открытым ордерам, а не по попыткам отправки. Явно задай политику для границы оценки, сохраняющую семантику исполнения на конец месяца, и обрабатывай отклонённые заявки, не объявляя портфель завершённым без уведомления. - [предупреждение] Стратегия дублирует календарь USEQ вместо использования указанного src/data/market_calendar.py. В её календаре отсутствуют исключительные закрытия рынка, предусмотренные репозиторием. Например, он считает 2 января 2007 торговой сессией, поэтому январь 3 не распознаётся резервной логикой как фактическая первая сессия. Дневные бары с сокращённой сессией обрабатываются по предоставленным временным меткам закрытия. (строка 83) — исправление: Используй функции торговых дней календаря репозитория для определения конца и начала месяца, сохраняя фактические временные метки закрытия сессии дневных баров.

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

_reconcile возвращает True после отправки ордеров, не проверяя достижение целевых значений. Это неправильно работает с фактическим прогревом бэктеста: исполнитель задаёт _no_entries_before_ns, а базовый класс вызывает calculate_signal во время этого предварительного этапа, подавляя отправку ордеров на вход. На конец месяца прогрева calculate_signal записывает _rebal_target_mk предстоящего месяца, строит целевые значения и сбрасывает _rebal_pending, хотя позиции остаются нулевыми. Если оценка начинается в этом следующем месяце, резервная логика начала месяца также пропускает ребалансировку, поскольку _rebal_target_mk уже равен mk. Поэтому стратегия пропускает портфель на этот месяц и не держит позиций до конца следующего месяца. Отклонённые или подавленные отправки ордеров при обычном исполнении также могут оставить неполную, ненейтральную позицию, ошибочно отмеченную как завершённую.

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

Стратегия дублирует календарь USEQ вместо использования src/data/market_calendar.py, как указано в спецификации. В её календаре отсутствуют исключительные нерабочие дни репозитория. Например, он считает 2, 2007 января торговой сессией, поэтому резервная логика не распознаёт 3 января как фактическую первую сессию. Дневные бары с укороченной сессией обрабатываются по переданным временным меткам закрытия.

Проверка не пройдена (уровень 1 — статический анализ): - Запрещённый импорт: src.data.market_calendar — стратегиям разрешено импортировать только базовые классы и вспомогательные средства фреймворка (src.strategies.base_template, src.strategies.rolling_options_template, src.strategies.polymarket_series_template, src.strategies.helpers); сборщики данных, база данных, движок бэктеста и реестр находятся за пределами песочницы. (строка 20)

Проверка не пройдена (уровень 4 — проверка QA) [класс=code_defect]: - [edge_concern] В песочнице получено отрицательное чистое математическое ожидание, но этот усечённый неоптимизированный результат носит рекомендательный характер и не определяет вердикт. - [критично] Гипотеза требует исполнения по цене закрытия месяца. В этих обычных рыночных заявках используется стандартный путь исполнения USEQ: venue_configs.py задаёт latency_ms=100, а runner.py устанавливает эту LatencyModel до добавления торговой площадки.……Показать большеСвернуть

Проверка не пройдена (уровень 4 — проверка QA) [класс=code_defect]: - [edge_concern] В песочнице получено отрицательное чистое математическое ожидание, но этот усечённый неоптимизированный результат носит рекомендательный характер и не определяет вердикт. - [критично] Гипотеза требует исполнения по цене закрытия месяца. В этих обычных рыночных заявках используется стандартный путь исполнения USEQ: venue_configs.py задаёт latency_ms=100, а runner.py устанавливает эту LatencyModel до добавления торговой площадки. Поэтому ордера, отправленные после получения согласованных баров на конец месяца, исполняются позже закрытия; стратегия/конфигурация не предусматривает политику исполнения по той же цене закрытия. Это также касается сокращения позиций при ребалансировке и разворотов. Успешное прохождение теста песочницы не подтверждает требуемые временные метки или цены исполнения. (строка 283) — исправление: реализуй в инфраструктуре исполнения явную политику исполнения по цене закрытия в рамках исследовательского контракта и передавай её в песочницу, полные бэктесты и оптимизацию. Сверяй фактическую временную метку исполнения каждого ордера ребалансировки с закрытием месячной сессии, а цену исполнения — с ценой закрытия этого инструмента, учитывая предусмотренные издержки. Сохраняй спред, ценовое воздействие и внутрибараные защитные стопы; не заменяй исполнение на следующую сессию.

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

Гипотеза требует исполнения по цене закрытия месяца. В этих обычных рыночных заявках используется стандартный путь исполнения USEQ: venue_configs.py задаёт latency_ms=100, а runner.py устанавливает эту LatencyModel до добавления торговой площадки. Поэтому ордера, отправленные после получения согласованных баров на конец месяца, исполняются позже закрытия; стратегия/конфигурация не предусматривает политику исполнения по той же цене закрытия. Это также касается сокращения позиций при ребалансировке и разворотов. Успешное прохождение теста песочницы не подтверждает требуемые временные метки или цены исполнения.

Сводка по итогам

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

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

Ранжируй секторальные и страновые ETF 18 по сезонной избыточной доходности за тот же календарный месяц; покупай лидеров и открывай короткие позиции по отстающим в доллар-нейтральном портфеле с ребалансировкой на закрытии месяца.

Метрики результатов бэктеста и отчёт об оптимизации не предоставлены. QA указал отрицательное математическое ожидание в песочнице, особенно в стрессовых режимах, как замечание рекомендательного характера.

Причина отказа

verification_loop: Проверка не пройдена (уровень 4 — проверка QA) [класс=hypothesis_mismatch]: - [edge_concern] В песочнице выявлено отрицательное математическое ожидание, особенно в стрессовых режимах. Это замечание носит рекомендательный характер и не определяет вердикт о корректности. - [критично] Гипотеза прямо требует, чтобы ордера ребалансировки на конец месяца исполнялись по цене закрытия этой сессии. _reconcile отправляет обычные рыночные ордера через _submit_entry_instrument и _submit_exit_position. Эта……Показать большеСвернуть

verification_loop: Проверка не пройдена (уровень 4 — проверка QA) [класс=hypothesis_mismatch]: - [edge_concern] В песочнице выявлено отрицательное математическое ожидание, особенно в стрессовых режимах. Это замечание носит рекомендательный характер и не определяет вердикт о корректности. - [критично] Гипотеза прямо требует, чтобы ордера ребалансировки на конец месяца исполнялись по цене закрытия этой сессии. _reconcile отправляет обычные рыночные ордера через _submit_entry_instrument и _submit_exit_position. Эта конфигурация USEQ, управляемая барами, исполняет их на открытии следующей сессии, что подтверждается src/backtesting/next_open.py и документом execution_capabilities в техническом задании. Поэтому входы, сокращения позиций и развороты не могут соответствовать заданному времени исполнения. В самой заявке признана эта несовместимость. (строка 292) — исправление: получи пересмотренную исследовательскую спецификацию с явным требованием принимать решения на закрытии месяца, а исполнять их на открытии следующей сессии, затем обнови документацию стратегии. Для сохранения текущей спецификации платформе необходима поддержка исполнения по цене закрытия той же сессии; код стратегии обеспечить её не может.

Stratmill — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.