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

Стратегии

Сигнал чартиста и фундаменталиста (Бу-шо и соавторы 2017, «Блэк был прав»): тренд за 6 месяцев, нормированный на волатильность, минус отклонение логарифма цены за 5 лет; лонг/вне рынка, отдельно по активам в панели из 10-ETF классов активов (USEQ DAILY)

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

ChartistMinusFundamentalistEtfPanelLongFlat

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

Стратегия создана, чтобы проверить, добавляет ли «фундаменталистский» компонент возврата к среднему за 5 лет из статьи Бу-шо и соавторов что-либо к трендовому сигналу за 6 месяцев. Торгуется панель из 10-ETF классов активов с позициями лонг/вне рынка на дневных барах USEQ; контрольный вариант использует k=0. Предварительное исследование гипотезы уже указывало, что компонент не поможет (коэффициент Шарпа 0.32 против 0.33 без компонента стоимости). В коде использованы инкрементальные индикаторы O(1) и объединённые еженедельные решения. Несмотря на это, все 3 итераций превысили лимит времени бэктеста уровня 3 в песочнице (более 300 с примерно на 2400 днях данных SPY), и запуск отменили до бэктеста движка, оптимизации или вердикта аналитика.

Гипотеза

Здесь проверяется единственное поддающееся тестированию правило из абстракта: рынки следуют тренду месяцами и возвращаются к среднему в течение нескольких лет, приближаясь к значению, отличающемуся от цены примерно в 2 раз. Для каждого актива сигнал рассчитывается отдельно: S = T - k*V. T — графический компонент: EMA (период 126 сессий) дневной логарифмической доходности, делённый на реализованную волатильность за 63 сессий и умноженный на sqrt(126). V — фундаментальный компонент: log(close / SMA(close, 1260……Показать большеСвернуть

Здесь проверяется единственное поддающееся тестированию правило из абстракта: рынки следуют тренду месяцами и возвращаются к среднему в течение нескольких лет, приближаясь к значению, отличающемуся от цены примерно в 2 раз. Для каждого актива сигнал рассчитывается отдельно: S = T - k*V. T — графический компонент: EMA (период 126 сессий) дневной логарифмической доходности, делённый на реализованную волатильность за 63 сессий и умноженный на sqrt(126). V — фундаментальный компонент: log(close / SMA(close, 1260 сессий)), логарифмическое отклонение цены закрытия от среднего за 5 лет. Коэффициент 2 соответствует |V| примерно 0.69. Значение k = 1.0 задано заранее и не оптимизируется, поскольку в статье говорится о слабом возврате к среднему. Каждый актив торгуется отдельно, только в режиме LONG/FLAT. Дивиденды не учитываются в PnL, расходы на заём не моделируются, а в предварительном исследовании короткие позиции по дрейфующим ETF на акции принесли убыток. Правило: открывать длинную позицию при S > +0.25, закрывать её, переходя в нулевую позицию, при S < -0.25, иначе сохранять текущее состояние. Решения принимаются только каждую 5-ю сессию. Состав инструментов определяется по ASSET CLASS, а не по результатам бэктеста, и ограничен 10 инструментами (L173): SPY (акции US), EFA (развитые рынки за исключением US), EEM (развивающиеся рынки), EWJ (Япония), TLT (долгосрочные казначейские облигации США), IEF (казначейские облигации США со сроком 7-10 лет), GLD (золото), SLV (серебро), DBC (широкий рынок сырья), USO (нефть). Каждый компонент — длинная или нулевая позиция по INDEPENDENT, не часть нейтрального портфеля. Для каждой позиции целевая годовая волатильность составляет 10% (вес = 0.10/(sqrt(252)*vol63)); вес ограничен 1.0x её долей в капитале 10%, поэтому валовая экспозиция не превышает 100% капитала и маржа Reg-T 2x не требуется. Нулевая позиция задана явно: в предварительном исследовании на обучающей выборке каждый актив оставался вне рынка примерно 30-45% сессий. Контрольный вариант с k = 0 (чистый тренд) должен запускаться на том же коде и оцениваться отдельно, чтобы аналитик мог измерить вклад фундаментального компонента ADDS. Именно этот прирост и составляет фактическое утверждение статьи. HONEST PRE-STUDY (данные на момент времени, издержки 3 б.п. на сторону, 2006-2026, объединённые равновзвешенные доли): для длинной/нулевой стратегии при k=1 коэффициент Шарпа 0.32 (15 из 21 лет с положительным результатом); при k=0 длинная/нулевая стратегия — 0.33; k=2 — 0.21; длинные/короткие версии — 0.09-0.28. На наших данных компонент стоимости ничего не добавляет, а при k=2 ухудшает результат на дрейфующих фондовых индексах. Улучшение наблюдалось только для DBC, EEM и XLE. Поэтому это исследование представлено как попытка опровергнуть утверждение статьи на торгуемой истории 1993-2026 ETF, с низким приоритетом и скромными заранее зарегистрированными показателями. Ожидается, что результат не достигнет порога 0.5 OOS, если только результат движка на полной выборке не будет отличаться от предварительного исследования.

Итерация 3 сохраняет прошедшие проверку сигнал и логику определения размера позиции, одновременно объединяя запросы позиций и кэша ордеров один раз за еженедельное панельное решение. Это устраняет повторное сканирование кэша по активам в цикле принятия решений и сохраняет постоянное время обработки бара.

verification_loop: 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).

Реализация

Независимые компоненты ETF с позициями лонг/вне рынка используют сигнал: тренд за шесть месяцев, нормированный на волатильность, минус отклонение логарифма цены за пять лет; оценка проводится еженедельно с инкрементальным состоянием индикаторов.

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

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).

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

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

После 3 итераций от неё отказались в цикле проверки. Бэктест уровня 3 в песочнице превысил лимит времени 300 с на окне около 20,000 баров (2400 дней дневных баров SPY.USEQ), поэтому стратегия не дошла до проверки бэктеста, оптимизации, анализа или оценки рисков.

Проверка на опровержение гипотезы Бу-шо и соавторов (2017): торгуй ETF каждого из 10 классов активов (SPY, EFA, EEM, EWJ, TLT, IEF, GLD, SLV, DBC, USO) в длинной или нулевой позиции на дневных барах USEQ. Сигнал: S = T - k*V, где T — тренд за 126 сессий EMA, нормированный на волатильность, а V — логарифмическое отклонение от 1260-сессионного SMA; k=1 задан заранее, решения принимаются еженедельно, контрольный вариант использует k=0.

Бэктест движка и оптимизация не проводились (отчёт о бэктесте пуст, отчёта об оптимизации нет). Предварительное исследование самой гипотезы на данных, доступных на тот момент, дало объединённый коэффициент Шарпа 0.32 при k=1 и 0.33 при k=0 (2006-2026, положительный результат за 15 из 21 лет), то есть компонент стоимости ничего не добавил; предварительная оценка предполагала, что стратегия не пройдёт порог 0.5 OOS.

Анализ

Блэк был прав: цена отличается от стоимости не более чем в 2 раза

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