ARANEA
ARANEA личный блог
Вчера в 23:04

TSlab . Метод изоляции: поиск рабочего звена через битовую карту . Поиск стратегий

 

Битовая карта — способ параметризовать стратегию так, чтобы каждое смысловое решение (уровень, направление, тип сигнала) кодировалось отдельным битом и включалось независимо от остальных. Каждому биту соответствует константа (0/1), которая подаётся в формулы как фильтр.

Пример разложения на биты:

 
Бит Значение 0 Значение 1
LevelSel LOW CLOSE
StrategySel LP_R LP_G
Dir_bit падающий уровень растущий уровень
Зачем

Стратегия содержит несколько независимых решений. Проверять их «как есть» бессмысленно: непонятно, какое звено даёт результат, а какое — шум. Битовая карта позволяет изолировать вклад каждого звена — менять один бит при фиксированных остальных и сравнивать результат.

Штатный оптимизатор TSLab перебирает любые параметры из сетки, включая логические переключатели — если они объявлены как оптимизируемые. Битовая карта делает логические решения явными параметрами, которые можно включить в сетку и прогнать декартовым произведением вместе с остальными.

Структура

1. Каждому решению — свой бит

Бит задаётся константой ConstGen с двумя значениями, объявленной как оптимизируемый параметр. Константа подаётся в формулу, где она работает как фильтр:

LP_G_mask = LP_G && StrategySel==1
LP_R_mask = LP_R && StrategySel==0

Или через тернарник, если веток больше двух:

Level = LevelSel==0 ? LOW : CLOSE

2. Формулы не переписываются при добавлении бита

При добавлении нового уровня (EMA, SMA) меняется только выражение в Level. Все зависимые блоки (false_breakout, green_bar, Level_dir) работают от Level и не требуют правок:

Level = LevelSel==0 ? LOW : (LevelSel==1 ? CLOSE : (LevelSel==2 ? EMA : SMA))

3. Каждый бит независим

Изменение одного бита не влияет на другие. Это позволяет ставить контролируемые эксперименты: зафиксировать LevelSel и Dir_bit, прогнать StrategySel в двух состояниях, сравнить PnL.

Методика исследования

Метод работает в двух режимах: (а) ручной — по одному прогону на бит, для понимания вклада каждого звена; (б) через оптимизатор — декартово произведение по сетке битов, для полного перебора комбинаций. Ниже описан ручной — он полезнее для анализа. Автоматический даёт ту же таблицу, но без пошагового осмысления.

Шаг 1. Определить звенья

Каждое смысловое решение — отдельный бит. Не «стратегия A против B», а «уровень», «направление», «тип сигнала». Минимальные единицы, которые можно включать и выключать независимо.

Шаг 2. Зафиксировать контрольную точку

Все биты в 0. Прогон. Записать PnL, число сделок, просадку. Это база для сравнения.

Шаг 3. Менять по одному

Для каждого бита — два прогона: значение 0 и значение 1, остальные фиксированы. Записать результат каждого. Сравнить с базой.

Пример таблицы:

 
Прогон LevelSel StrategySel Dir_bit PnL Сделок
База 0 0 0 X N
Тест 1 1 0 0 X₁ N₁
Тест 2 0 1 0 X₂ N₂
Тест 3 0 0 1 X₃ N₃

Если X₁ заметно отличается от X — LevelSel влияет. Если нет — звено нейтрально.

Шаг 4. Собрать рабочие звенья

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

 
Комбинация PnL
Лучшие по отдельности X_best
Все вместе X_comb

Если X_comb сильно хуже X_best — звенья конфликтуют. Нужно найти, какое из них ломает.

Шаг 5. Проверить устойчивость

Прогнать лучшую комбинацию на других периодах, инструментах, таймфреймах. Если результат сохраняется — звено рабочее. Если разваливается — это подгонка под конкретную историю.

Ограничения метода

Числовые параметры внутри звена. Период EMA, порог стопа, процент прокола — это не биты. Их перебирает штатный оптимизатор. Битовая карта работает на уровень выше — определяет, какие звенья включены.

Совместные эффекты. Два звена по отдельности могут быть нейтральны, а вместе — значимы (или наоборот). Битовая карта это покажет в шаге 4, но не объяснит причину. Для объяснения нужна гипотеза о механизме.

Комбинаторный взрыв. N битов дают 2^N комбинаций: 5 битов — 32 прогона (минуты), 10 — 1024 (часы), 15 — 32768 (сутки). Практический предел — 5–7 битов (32–128 комбинаций). Дальше — либо сокращать биты, либо разбивать исследование на этапы: сначала отобрать рабочие звенья по одному, потом собрать лучшие. Правило: число комбинаций не должно превышать число сделок в 10+ раз, иначе результат — статистический шум.

Практический пример

Стратегия «ложный пробой уровня». Три бита:

  • LevelSel — 0 (LOW) / 1 (CLOSE)

  • StrategySel — 0 (LP_R) / 1 (LP_G)

  • Dir_bit — 0 (падающий уровень) / 1 (растущий уровень)

Три бита дают 2³ = 8 комбинаций. Оптимизатор прогоняет их за один запуск, таблица результатов заполняется автоматически. По разнице PnL видно:

  • какой уровень даёт лучший отклик;

  • какая стратегия устойчивее;

  • в каком направлении работает фильтр.

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

Итог

Битовая карта — способ декомпозировать стратегию на независимые решения и проверить вклад каждого. Биты объявляются как оптимизируемые параметры, и штатный оптимизатор перебирает все 2^N комбинаций за один запуск — декартовым произведением по сетке. Числовые параметры внутри звеньев (период EMA, порог стопа, процент прокола) перебираются тем же оптимизатором на следующем этапе — уже внутри выбранной комбинации битов.

Метод даёт не «лучшее число», а понимание: какие звенья работают, какие нейтральны, какие конфликтуют. Дальше — тонкая настройка числовых параметров внутри выбранного звена.

Скрипт из видео: t.me/matharanea

Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
13 Комментариев
  • Eugene Bright
    Вчера в 23:19
    «Aranea exibit!»©
  • Jkrsss
    Вчера в 23:47
    Гладко стелем, но жёстко спать. Метод хорош как дисциплина мышления и интерфейс, но выдавать его за факторный анализ рано.
  • Антон Иванов
    Сегодня в 01:29
    Дал Claude почитать, что-то он не заценил, говорит косяков тут слишком много и смысла в этом слишком мало.
  • Антон Иванов
    Сегодня в 02:28

    Где у метода слабые места (в комментариях автору на это уже намекнули)

    1. Ручной режим «меняй по одному от нулевой базы» в статистике называется OFAT (one factor at a time). Он не видит взаимодействий звеньев: вклад бита зависит от того, в каком положении стоят остальные. Раз полный перебор 2^3 стоит всего 8 прогонов, лучше прогнать всё и посчитать главные эффекты и взаимодействия, усредняя по остальным битам. Сравнение с одной базой тут хуже.

    2. Выбор лучшей из 8 комбинаций, а потом ещё и чисел под неё, — это подгонка в квадрате. Проверка на других данных у автора стоит только шагом 5 и в ответе в комментариях. На деле она обязательна: walk-forward или хотя бы честный out-of-sample.

    3. Критерий «PnL заметно отличается» без порога шума ничего не значит. Биты сильно меняют число сделок, поэтому сравнивать надо доход на сделку, Sharpe и просадку, а значимость разницы проверять, например бутстрепом по сделкам.

    4. Двухэтапность «сначала структура, потом числа» тоже теряет взаимодействия. Структура, лучшая при числах по умолчанию, может проиграть после их настройки. Надёжнее смотреть, держится ли преимущество звена на всём диапазоне чисел, то есть есть ли плато, а не пик.

    5. LevelSel с четырьмя вариантами уже не бит, а категориальный фактор. Это не мешает, просто «битовая карта» тут скорее название, чем суть.

    Итог: хорошая дисциплина декомпозиции, но без полного факторного разбора и out-of-sample это скорее способ навести порядок в экспериментах, чем доказательство, что звено работает.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн