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

Стратегии

USEQ Ротация моментума по классам активов: удерживать топ--3 ETF из 5 (SPY/EFA/EEM/IEF/GLD) по доходности за 12 месяцев, равные веса, ежемесячная ребалансировка, дневные бары, только длинные позиции, без плеча

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

UseqAssetClassTop3MomentumRotation

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

Гипотеза предполагала 20-летний USEQ тест ротации по моментуму классов активов по принципу топ--3 из -5 (SPY/EFA/EEM/IEF/GLD) с ежемесячной ребалансировкой, чтобы добавить в исследовательский корпус механизм, не связанный с криптовалютами. Разработчик подготовил частичную реализацию с ранжированием, равными весами позиций и дополнительным фильтром абсолютного моментума SHY. Этап кодирования трижды завершился по таймауту, а запуск был прекращен со статусом «coding_stuck_3_timeouts». Бэктест, оптимизация и заключение аналитика не проводились, поэтому сама идея остается непроверенной.

Гипотеза

Классификация: (а) конкретная торговая идея. В источнике задан набор из 5 ETF классов активов: они ранжируются по доходности за 12 месяцев, в портфель входят 3 лучших с равными весами, ребалансировка проводится ежемесячно. Исходный набор Quantpedia: SPY, EFA, IEF, VNQ, GSG. В нашем файле наборов USEQ нет ни VNQ, ни GSG (проверено: там есть AGG EEM EFA GLD IEF IWM LQD QQQ SHY SPY TIP TLT), поэтому ближайший имеющийся в наших данных набор из 5 классов — SPY (акции US), EFA (акции развитых рынков без US), EEM (акции……Показать большеСвернуть

Классификация: (а) конкретная торговая идея. В источнике задан набор из 5 ETF классов активов: они ранжируются по доходности за 12 месяцев, в портфель входят 3 лучших с равными весами, ребалансировка проводится ежемесячно. Исходный набор Quantpedia: SPY, EFA, IEF, VNQ, GSG. В нашем файле наборов USEQ нет ни VNQ, ни GSG (проверено: там есть AGG EEM EFA GLD IEF IWM LQD QQQ SHY SPY TIP TLT), поэтому ближайший имеющийся в наших данных набор из 5 классов — SPY (акции US), EFA (акции развитых рынков без US), EEM (акции развивающихся рынков), IEF (казначейские облигации США сроком 7-10 лет) и GLD (золото как компонент реальных активов/сырья). Замены: EEM вместо VNQ, GLD вместо GSG. Это набор классов активов, выбранный до просмотра результатов, а не список акций, отобранных вручную (урок 151): каждый ETF — стандартный ликвидный инструмент своего класса, и все пять существовали и были ликвидны на протяжении всего теста. В наборе 5 инструментов — намного меньше предела около 10 из урока 173, поэтому ранжирование требует 5 операций O(1) в месяц. Дневная история: данные GLD начинаются 2004-11, по остальным — раньше, поэтому после периода разогрева в 252 сессий первая ребалансировка приходится примерно на 2005-11. Это даёт около 20 лет и примерно 240 ребалансировок, охватывая 2008, 2013 (сворачивание стимулов), 2020, 2022 (одновременное падение облигаций и акций) и рост золота в период 2023-26. Площадка: USEQ, нулевая комиссия, около 0.02-0.05% за полный круг с учётом спреда и влияния на цену. Фабрика провела USEQ лишь на 2.5% своих экспериментов, и ни в одном из них не было такой ежедневной ротации между несколькими активами. Механизм основан на долгосрочном временном и межрыночном моментуме макроэкономических классов активов (Asness-Moskowitz-Pedersen 2013). Он никак не связан с микроструктурой крипторынка, поэтому добавляет новый механизм в корпус, который 67% BINANCE. Профиль риска: 1.0x валовая экспозиция, без плеча, треть капитала на каждую позицию, без стоп-лосса (ежемесячная ротация IS выход; стопы в дневной ротационной книге стали бы дополнительными подгоночными параметрами). Состояние без позиции: основной вариант всегда инвестирует в 3 из 5 ETF, доля времени без позиции — около 0%. Стратегия только на покупку, поэтому двойных издержек при смене знака позиции нет; опасение урока-150 по поводу стратегий, «никогда не остающихся вне рынка», связано с издержками смены знака и здесь неприменимо, а оборот составляет лишь около 0.5-1 инструмента в месяц. PRE-REGISTERED SECOND VARIANT, оценивается отдельно и NOT часть основного утверждения (урок 130): фильтр абсолютного моментума, при котором треть позиции в любом из лучших -3 инструментов с отрицательной доходностью за 12 месяцев переводится в SHY (заменитель денежных средств). Ожидается, что этот вариант будет оставаться вне рынка, в SHY, около 15-25% времени.

Итерация 2: единственное изменение — исправлен сбой уровня -2. _pending() вызывал self.cache.orders_inflight, которого нет в синтетическом макете кеша. Теперь он всегда использует orders_open и вызывает orders_inflight только при наличии этого метода в кеше (он есть в настоящем кеше NautilusTrader). Сигнал, ребалансировка, размер позиции и конфигурация не изменены. Валовая экспозиция не превышает 0.97x капитала: продажи происходят в одну сессию, покупки — в более позднюю.

coding_stuck_3_timeouts

Реализация

Ежемесячная ротация, привязанная к календарю: переход в топ--3 из SPY/EFA/EEM/IEF/GLD по доходности за предыдущие 252 сессий; равный вес 1/3 для каждой позиции, целые акции, только длинные позиции, без плеча, дневные бары USEQ. В предварительно зарегистрированном варианте (use_abs_filter=True) слоты с отрицательным моментумом переводятся в SHY.

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

Проверка не пройдена (уровень 2 — синтетические сценарии): Использованы параметры: ['top_n', 'cash_symbol', 'min_notional', 'notional_pct', '_param_bounds', 'abs_threshold', 'lookback_bars', 'use_abs_filter'] Убедитесь, что __init__ задаёт все атрибуты из self.parameters.get(). - steady_uptrend: AttributeError: у '_MockCache' нет атрибута 'orders_inflight' (временная метка бара: 1735704780000) - steady_downtrend: AttributeError: у '_MockCache' нет атрибута 'orders_inflight' (временная метка бара: 1735704780000) - flat_ranging: AttributeError: у '_MockCache' нет атрибута 'orders_inflight' (временная метка бара: 1735704780000) - volatility_spike: AttributeError: у '_MockCache' нет атрибута 'orders_inflight' (временная метка бара: 1735704780000) - zero_volume: AttributeError: у '_MockCache' нет атрибута 'orders_inflight' (временная метка бара: 1735704780000) - price_gap: AttributeError: у '_MockCache' нет атрибута 'orders_inflight' (временная метка бара: 1735704780000)

sandbox_timeout: проверка не пройдена (уровень 3 — бэктест в песочнице): дымовой тест превысил лимит времени 300 с на окне примерно в 20000 баров (2400 дней по SPY.USEQ-1-DAY-LAST-EXTERNAL). Почти всегда это означает, что объём работы на каждом баре растёт вместе с историей — например, полный перебор ряда финансирования/дополнительных данных или пересоздание списка с вызовом min()/sorted() внутри calculate_signal()/on_bar() на каждом баре. Предварительно сформируйте отсортированные массивы временных меток ONCE в __init__ и используйте bisect либо кешируйте результаты поиска по временной метке, чтобы затраты на бар составляли O(log n), а не O(n).

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

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

Запуск был прекращён на этапе программирования по причине «coding_stuck_3_timeouts» после 3 итераций. До проверки, анализа бэктеста, оптимизации, анализа аналитиком или оценки рисков он не дошёл.

Ежемесячная ротация только в длинные позиции и без плеча на USEQ: пять ETF классов активов (SPY, EFA, EEM, IEF, GLD) ранжируются по доходности за 12 месяцев, а позиции в топ-3 удерживаются с равным весом на основе временного и межрыночного моментума (Asness-Moskowitz-Pedersen 2013); в предварительно зарегистрированном варианте любое название из топ--3 с отрицательной доходностью переводится в SHY.

Данных о результативности нет: отчёт бэктеста пуст, оптимизация не запускалась, показатели Шарпа, доходности и числа сделок отсутствуют.

Анализ

Моментум классов активов

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