Один из способов попытаться победить рынок в алгоритмической торговле таков:
1) придумать модель, в которой есть несколько параметров (период индикатора, граница срабатывания для входа в позицию и т.п.);
2) калибровать модель раз в 3 месяца по данным за последние 3 года, подбирая оптимальные параметры для портфеля моделей по критериям доходности / просадки;
3) торговать очередные 3 месяца по оптимальным параметрам до следующей калибровки.
При этом надежда на то, что:
1) за эти 3 месяца рынок не сильно изменится, а статистические эффекты, которые ловит модель, позволят заработать;
2) калибруя модель раз в 3 месяца, мы как-то пытаемся приспособиться к изменяющемуся рынку.
В этой надежде суть в том, что
мы адаптируемся быстрее чем рынок (наш оппонент). Если же рынок меняется быстрее нас, то наши модели не успевают за этим, показывают «среднюю температуру по больнице» и не работают. Ещё хуже, если модели попадают в противофазу, и к издержкам в размере комиссии и проскальзывания добавляются ещё и систематические потери на отрицательном математическом ожидании.
Если модель
статичная (утрированный пример системы: если цена выше MA(period1) + k * ATR(period2) — покупаем, если цена ниже MA(period1) — k * ATR(period2) — продаём, оптимальные значения period1, period2 и k подбираем раз в 3 месяца), она часто плохо работает: на графиках эквити есть долгие периоды без заработка и с просадками, а оптимальные параметры period1, period2 и k сильно скачут от одной калибровки к другой.
Может
проблема в статике? Может надо писать динамические модели, где рынок
изначально предполагается изменчивым?
В попытках найти что-то аналогичное из другой области, на ум приходит игра «камень-ножницы-бумага», где средство достижения выигрыша — понимание, как противник изменяет свою стратегию, пытаясь вас обхитрить, и перехитрить его самого.
Был у кого-нибудь положительный опыт создания каких-либо
динамических моделей для рынка, существенно учитывающих его изменчивость?
P.S. Надеюсь, возможно зря, что хотя бы малая доля комментариев будет по делу.
Диверсификация по инструментам и таймфреймам не решает этот вопрос? Думаю, что периоды с просадками для приведенной в пример системы должны быть нормальным явлением, ибо она расчитывает на значительное направленное движение, которое бывает реже, чем возвраты к среднему, отскочив от sma+(atr*k).
Например, моделируя множество «трендовиков» понять, что они уже все зашли в позиции и, в принципе, разворот «созрел»: если цена развернётся, то трендовики начнут поочереди переворачиваться / выходить из позиций, и на этом мы сами можем заработать. Такая модель будет заметно более динамичной.
Сделать хорошую динамическую модель крайне сложно, но возможно. Для этого нужен союз хорошего трейдера с хорошим программистом и хорошим математиком.
Иначе нам удачи не видать ©
Модель описания рынка (ТС) не может быть простой.
И уж тем более с тремя параметрами.
Улучшения эквити не получил.
Часто получалось так, что лучше бы оставил все как было.
у меня изменения портфеля систем при загибах эквити улучшения не давало.
Но я не говорил, что достигнуть улучшения путем динамической корректировки невозможно.
Тем более, я торгую активные стратегии и то что системы начинают проигрывать можно быстро обнаружить.
Пока я двигаюсь в направлении поиска оптимального сочетания разных систем.
Луа нормально подходит для этого, со своими метатаблицами
Поведение объекта всегда зависит от чего-то «свыше»
дело не в технологии изменения, изменить в онлайне можно все что угодно.
Необходимо знать что на что меняем, зачем,
и КОГДА это стоит делать.
А может лучше не делать?
К тому же, если вы переписываете поля в рантайме, это чревато ошибками в параллельных вычислниях и ведет к издержкам. И сложность, опять же
Никакой мегаплазмы там нет, есть современный мартышкоподобный разработчик, который кроме говна ничего не читает, кроме готовых инструментов ничего не использует, а потому не знает как устроены языки программирования
Почему надо постраивать с глубиной в 3 года. А не год или не 20 лет?
Динамических моделей рынка вообще не вижу, только динамическую подстройку индикаторной ТС.
Не видите динамических моделей рынка из опыта или есть какие-то соображения научного плана (не доказательство теоремы, но что-то более-менее формальное)? К примеру, игру «камень-ножницы-бумага» можно разобрать с точки зрения теории игр и там понятно, как надо действовать (стратегии, мета-стратегии, мета-мета-стратегии и т.п.). Можно ли разобрать рынок подобным образом?
1) КНБ — дискретная игра, рынок — больше подойдёт непрерывное описание;
2) КНБ делится на независимые раунды, рынок — скорее нет;
3) оппонент в КНБ адаптируется к нам, рынок конкретно к нам не адаптируется, но можно сказать, что адаптируется к группе таких как мы (если таких много);
4) КНБ — оба игрока играют в одну игру, на рынке много игроков играют в разные игры на общем поле.
Так что теория КНБ прямо так не переносится на рынок.
arxiv.org/pdf/1404.5199v1.pdf
И чтоб все трое были не лохи.
Ответ №2. Он в статье «Why Economic Models Are Always Wrong» из журнала «Scientific American». Это касательно идеи подгонки параметров модели по историческим данным.
А ещё проще — никакой метод экстраполяции функции по заданным точкам не предназначен для «предсказания» за пределами области с этими точками. И даже интерполяция по части экспериментальных точек в некоторой области не гарантирует попадание интерполирующей функции в другие экспериментальные точки из той же области.
Для одного и того же набора экспериментальных точек (истории котировок) существует бесчисленное множество интерполирующих и аппроксимирующих функций. Но «функция», реально порождающая эти точки — одна и для биржи никто не знает физического механизма процесса порождения этих точек.
Чтобы получить что-то нетривиальное из WealthLab'а, надо хорошо освоить язык программирования C#.
Выделим на рынке группу участников, которая время от времени своими действиями ощутимо влияет на цену. Например, пусть это будут рациональные трендовики, торгующие по переворотным системам. Они раз в 3 месяца оптимизируют свои торговые системы типа той, что в посте, на горизонте 3 года и торгуют по этим оптимальным системам следующие 3 месяца.
Если есть график цены, то можно понять, в какие моменты такие участники меняют свои позиции. Желательно, чтобы были каскады: изменения позиций одних участников приводят к движению цены, которое приводит к изменению позиций последующих участников.
Это была модель рынка (модель оппонентов).
Использовать мы её можем так: когда можно предположить каскадное изменение позиций, входим в сторону предполагаемого движения цены, выходим по завершению каскада.
В этом случае модель будет динамической, т.к. сама по себе будет меняться со временем.
Например, одно мое «я» — ручной трейдер, говорит второму, с техническим бэкграундом: то-то и то-то проиходит всегда после этого, но в сочетании с 1,2,3 и 4, не меняясь с годами, давай закодим?
Не стОит усилий, отвечает второе, у нас нет моделей 1 и 4, неизвестно, сколько с этим можно возиться, руками — проще и надежнее. Почему надежнее? Потому, что мозг может раньше уловить малые изменения, если закономерности начнут ломаться…
берете всю историю, придумали какое-то свое отношение, параметры,
потом скользящим окном едете вперед и
а. тестируете
б. переопределяете параметры
и так до конца, если действительно что то есть на длительном горизонте, и качественно отличается от BH, просто фиксированных параметров
PROFIT!
В итоге все это можно автоматизировать, скачивается каждые 3 месяца историю, пересчитываете параметры, так же окнами, фиксируете их, торгуете руками или автоматом.
Хотя в умелых руках может принести пользу.
Я сторонник тестирования и «калибровки» с осознанным выбором (включением в оптимизацию) специфических участков рынка. Когда-то это будет год, когда-то потребуется полтора-два.
ИМХО важно не тупое стабильное окно, а смысл.
1) оценивать вероятностные распределения по окну и пытаться на этой оценке зарабатывать, если получится;
2) предложить какую-то модель, которая показывает, как будут изменяться распределения, и на этом пытаться заработать больше.
Приведёт ли к успеху вторая дорога? Могут ли успешные люди, прошедшие по второй дороге, что-то подсказать или нет таких людей?
и нечего там портфелировать
ошибки
1 определиться с интервалом (понятие месяц в данном случае неприемлемо)
2 отбросить иллюзию о МА и сконцентрироваться на понятии волатильность
3 если это динамическая модель то необходимо понять — рынок работает тренд, но в понятие тренд входят составляющие это тренда — флет и коррекция
начните с этого и остальное придет к вам со временем
Возьмите полосы Боллинджера — это динамические уровни, возьмите уровни Фибоначчи. Если они совпадают — принимайте решения.
1 точки отсчета для уровней фибо
2 период скользящих боллинджера
Другими словами- полная галиматья
если признать, что волатильность и тренд это именно детерминированные процессы, то отпадает необходимость в разного рада «причиндалах» которые реально ни к чему конкретно не привязаны
Я сейчас вам покажу, случайный фьючерс на Фортсе.
Дмитрий Новиков, нууу, коллега.
Вот Вам искомая смесь детерминированного и случайного:
sin(x) + N(m,s)
Перед тем как пользоваться чем либо — это надо выучить досканально!!!
Посмотрите тест торгового алгоритма на предсказательную силу - https://smart-lab.ru/blog/520839.php. Это аналог теста WFO, но без оптимизации. По честному.
Дошел до теста сам. Пришлось собрать специального робота под него. Глубина тестового периода задается в днях от начала расчетного периода.
Из моей практики, глубина теста в -30 дней для расчета на 5 дней вперед вполне достаточна. Свои алгоритмы тестирую на предсказательную силу в обязательном порядке. Если обсирается — нах алгоритм.
P. S. Ответ на вопрос нет, не работают.
Да. Был и есть.
Добавить в TSLab такой блок, который будет менять оптимизируемый параметр динамически, подстраивая ежедневно под историю. Правда придется придумать как подкачивать в него исторические данные для подстройки, потому что самооптимизации механизма нет.
Как и на чем у вас реализовано?
С ТСЛабом плотно не знаком. Но там придется писать свой оптимизатор и втраивать в код робота, чтобы протестить как-нибудь.
Вробде бы в МТ5 есть функии работы с результатами оптимизации — можете статью глянуть https://www.mql5.com/ru/articles/4917
У меня оптимизатор встроен в сам робот и этот робот с включенной автооптимизацией можно протестировать в собственном тестере, — и только тогда становится понятно насколько эффективна автооптимизация. У многих алготрейдеров такое реализовано.
Нехороша потому, что адаптация системы к изменениям есть ничто иное, как попытка компенсации адаптации к изменениям со стороны рынка. Это — как попытка догнать свою тень. Рыночная модель и ТС на ее основе изначально должны быть такими, чтобы эксплуатировать невозможность быстрой адаптации широкого круга участников к изменениям.
Здесь мы снова возвращаемся к проблеме рыночной неэффективности, как такому свойству рынка, при котором скорость поступления информации намного больше скорости реакции на нее. Для этого модель должна быть многокомпонентной, а связи между компонентами должны образовать многочисленные комбинации, которые, собственно, и замедляют реакцию широкого рынка на информацию.
На своем примере могу сказать, что мне ни разу не приходилось оптимизировать ТС, а «лишь» менять ее всю целиком))), по мере добавления в нее степеней свободы (компонентов), которые все, без исключения, связаны с поведением рынка, включая крупных игроков, маркет-мейкеров, манипуляторов и игроков с мета-стратегиями.
Как было правильно упомянуто, каскадное подключение к трендам — хороший пример существенной характеристики рыночного поведения. Но его одного, разумеется, не достаточно. Каскадность подключения, при этом есть просто одна из степеней свободы стационарной (не динамической) модели. Моя модель начиналась с одной степени свободы в, примерно, 2011 г. (похожей на подключение к трендам) и добралась постепенно до семи степеней к настоящему времени, ни одна из которых не пересматривалась/оптимизировалась.