Стратегии
Возвратный к среднему портфель драгоценных металлов (конструкция Zhao et al. 2018 MRP): спред из 3 активов GDX/GLD/SLV, построенный по весам с минимальной предсказуемостью, нижним порогом дисперсии и лимитом плеча L1; вход и выход по z-оценке, явное нулевое состояние (USEQ DAILY, лонг-шорт)
Итог: Отменено
GdxGldSlvMinPredictabilityMRP
Сводка по итогам
GdxGldSlvMinPredictabilityMRP пыталась торговать спредом трёх активов из сектора драгоценных металлов (GDX/GLD/SLV). Использовались веса по собственному вектору с минимальной предсказуемостью, ежеквартальный пересчёт и входы по z-оценке; заранее зарегистрированная оценка — примерно 7-10 сделок в год. За 3 итераций код так и не прошёл проверку. Бэктест в песочнице Layer 3 продолжал превышать лимит в 300 с на дневном окне примерно в 20,000 баров. Запуск прекратили из-за тайм-аута песочницы на этапе проверки, поэтому проверка бэктеста, оптимизация, аналитическая и риск-проверка не проводились; метрик результатов нет.
Гипотеза
Итерация 3 сохраняет ранее прошедшую проверку логику стратегии и меняет только затратный способ доступа к дополнительной ноге. Цены дополнительных баров один раз кэшируются в on_extra_bar и считываются по точному времени закрытия за O(1), что устраняет повторный доступ к накопленной истории дополнительных баров во время запуска песочницы на 20,000 барах.
verification_loop: sandbox_timeout: Проверка не пройдена (слой 3 — бэктест в песочнице): тест smoke превысил лимит времени 300 с на окне примерно в 20000 баров (2400 дней по GDX.USEQ-1-DAY-LAST-EXTERNAL). Почти всегда это означает, что объём работы на бар растёт вместе с историей — например, полный просмотр ряда финансирования/дополнительных данных или повторное создание списка и вызов min()/sorted() внутри calculate_signal()/on_bar() на каждом баре. Предварительно создайте отсортированные массивы временных меток ONCE в __init__ и используйте bisect либо кэшируйте запросы по временной метке, чтобы стоимость работы на бар была O(log n), а не O(n).
Реализация
Ежедневный возвратный к среднему лонг-шорт портфель USEQ на инструментах GDX, GLD и SLV. Он периодически оценивает веса с минимальной предсказуемостью по структуре ковариаций с лагами, задаёт нижний порог волатильности спреда и торгует полученным спредом по z-оценке.
Результаты верификации
sandbox_timeout: Проверка не пройдена (слой 3 — бэктест в песочнице): тест smoke превысил лимит времени 300 с на окне примерно в 20000 баров (2400 дней по GDX.USEQ-1-DAY-LAST-EXTERNAL). Почти всегда это означает, что объём работы на бар растёт вместе с историей — например, полный просмотр ряда финансирования/дополнительных данных или повторное создание списка и вызов min()/sorted() внутри calculate_signal()/on_bar() на каждом баре. Предварительно создайте отсортированные массивы временных меток ONCE в __init__ и используйте bisect либо кэшируйте запросы по временной метке, чтобы стоимость работы на бар была O(log n), а не O(n).
Сводка по итогам
Ежедневная многоногая стратегия должна выполнять работу на бар в calculate_signal с низкой сложностью — O(1) или O(log n) — и не пересчитывать всю историю на каждом баре. Перед отправкой код следует профилировать в песочнице с лимитом 20 тыс. баров.
Запуск прекратили на этапе проверки после 3 итераций. Слой 3 (бэктест в песочнице) завершился неудачей: тест smoke превысил лимит времени 300 с на дневном окне GDX.USEQ примерно из 20,000 баров и 2400 дней. Это указывает на работу на бар, объём которой растёт с длиной истории.
Следуя конструкции Zhao et al. (2018), стратегия сформировала возвратный к среднему спред GDX/GLD/SLV на дневных барах USEQ. Веса определялись собственным вектором с минимальной предсказуемостью Box–Tiao и пересчитывались каждые 63 сессий с нижним порогом дисперсии и лимитом плеча L1. Входы по z-оценке совершались при |z|>=2, выходы — при |z|<=0.25; по умолчанию позиция была нулевой.
Данных о результатах нет. Стратегия так и не завершила бэктест: отчёт пуст, оптимизация не запускалась, сделки, доходность и коэффициент Шарпа не зафиксированы.
Анализ
Оптимальное построение портфеля для статистического арбитража на финансовых рынках
Stratmill — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.