Поговорим немного об оптимизации?!

Приветствую читателей нашего блога!

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

Два примера — на первом рисунке дефолтно созданный алгоритм под простые индикаторы, RSI 20 поверх SMA20. Купили когда индикатор близок к 100, продали когда близок к нулю. Никаких фильтров и усложнений (так нужно для данного поста). Так же для примера показана таблица результатов под 400проходов. От 5 до 100 с шагом 5 для каждого индикатора (тоже лишь для примера). В ней можно усмотреть, что количество отрицательных результатов довольно маленькое. (удачный пример, не более)

Поговорим немного об оптимизации?!

На втором рисунке уже прооптимизированный и немного другой вид 3D графика. На точках, проще понимать распределение доходности в зависимости от выбора параметра. Соответственно зеленные точки — профит, красные, убыток.

Поговорим немного об оптимизации?!

Ниже правила, которые я выработал для себя

  1. Не подгоняйте свой алгоритм под рынок. Прибыль на истории не гарантирует доход в реальных торгах . Первая причина — машина подбирает параметры по уже известной истории, которая не изменится. Вторая — не известно как изменится рынок завтра. Мы не говорим даже о глобальных изменениях трендов, что на самом деле естественно для любой ценной бумаги. Так же может измениться техническая сторона, размер комиссии, шаг цены, стоимость шага цены и другие косты.Один из методов обойти проблему — делать бектестинг и следом форвард тест. Так же можно сгенерировать случайные котировки для своей бумаги и прогнать тест на произвольных котировках.
  2. Анализируя, таблицу результатов оптимизации, оценивайте не только прибыльные параметры, но и убыточные. Недостаточно наблюдать за положительной статистикой, так как может оказаться, что ваш алгоритм эффективен только в 1% случайных параметров, а 99% статистики — отрицательная. Потому, лучше всего либо оптимизировать параметры поэтапно, либо вести также и статистический анализ результатов.
  3. Метод подбора параметров для оптимизации. Например, создавая алгоритм я обычно сам задаю параметр. К примеру понимая, что объем торгов в 10 000 лотов за час, на ликвидном тикере это очень мало, не стану указывать подбор параметра с 1 до 1000000, а укажу значение от 40к до 100к с шагом 5000. Если понимаю, что мне важна средняя за большой период, то глупо будет оптимизировать этот параметр от 1 до 200, и тд.
  4. Не верить, слепо, результатам. Если мы делаем оптимизацию, то не нужно пользоваться только статистикой. К примеру, мне под мои риски не подходит стоп на сделку в размере 2%. Но я могу проанализировать результаты, для оценки, могу ли я изменить что-то, и принять такие риски. (ну например если таким образом удастся снизить количество убыточных сделок подряд, и более серьезную просадку по счету, исходя из серии убыточних сделок).
  5. Количество сделок, должно быть достаточным для анализа. Самое важное для меня, это количество сделок. ДА, для длинных трендов, когда сделки совершаются не каждый месяц, сложно собрать статистику. И в таком случае я обычно беру алгоритм, адаптирую под локальные тренды, и смотрю, как «теоретически» будет выглядеть система, при большом количестве сделок. Хотя бы 100 сделок в год. Иначе большинство машин, могут подогнать статистику на 10 сделок — купил продал и все — профит. А если тикер в хорошем тренде, то не опередить алгоритм, сценарий купил и держи.
  6. Близкие параметры, но далекие результаты. Если например, мы наблюдаем, что при изменении параметра на один шаг — результаты сильно разнятся — то скорее всего, эти параметры не подходят для оценки качества и устойчивости алгоритма. Например, период индикатора 70 дает профит 1000$ а период 65 дает убыток 200$ то сам алгоритм - Очень слабый. Его нужно насыщать фильтрами и модулями управления денег и рисков.
  7. Диверсификация своей торговли, разными вариациями параметров. Итак, мы сделали большое количество бектестов, и можем выделить себе некий набор параметров, удовлетворяющих нашим требованиям. Дальше не обязательно выбирать какие то конкретные параметры. Можно запустить 2-5-10 сценариев, и наблюдать слабые и сильные зоны параметров, и возможно от каких либо отказаться, а какие то продолжат работу.

Скачать TSLab и начать пользоваться можно бесплатно www.tslab.pro

11
Начать дискуссию