Один из способов попытаться победить рынок в алгоритмической торговле таков:
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 дней вперед вполне достаточна. Свои алгоритмы тестирую на предсказательную силу в обязательном порядке. Если обсирается — нах алгоритм.
Eugene Logunov, =) а какие еще? Какой метод самый продвинутый?
и что значит «на многих классах активов»? как считали?
Когда-то в компании, где я работал, искали риск-менеджменжера. Причем не для галочки, а для работы. Приходили люди c корочками, с хорошим образованием, с PHD и так далее. На простой вопрос, как сократить риски, все и всегда отвечали одинаково — при росте волы сокращать экспозицию. То, что алгоритмисты на росте волы зарабатывают, а на снижении часто теряют, а также, что волу трудно прогнозировать, они не только не знали. Они отказывались даже думать, как снизить риски при таких вводных. Шаблоны не рвались.
Люди с корочками учатся по одним и тем же учебникам, ничего удивительного
А потом тыкавшие рассказывают нетыкавшим, какая теория не годится. А нетыкавшие не верят. И тоже самое тычут по тысячному разу.
Причем, какие-то примитивные методы, коряво, но дают статпреимущество. А усложнения как-то не дают улучшений. Абидно, панимаишь
Пользуюсь шторами — помогает! )))
Щас одних ETFов по теме несколько десятков наверно.
Да и не является этот подход настоящей портфельной оптимизацией, т.к. не учитывает взаимосвязи между компонентами.
Кроме всего прочего массовое увлечение идеей «продай актив если он стал волатильным» несет в себе скрытый системный риск, который еще аукнется не раз
Eugene Logunov, ниже Вам более опытный коллега более разумные вещи сказал. Из всего выше (и ниже) написанного я только не согласен с трактовкой Херста. Как раз если H<0.5, то ряд соответствует процессу с повышенной возвратностью, то есть он скорее всего будет менее волатилен.
Вы пробовали сделать эти вычисления? Было бы любопытно глянуть просто график этой «кумулятивной суммы».
Но есть еще одно соображение. Если попарные ковариации действительно устойчивы, как Вы говорите, то есть вероятность получить гладкую линию крайне похожую на прямую линию типа (k*n+b). И тогда ее Херст будет вообще непойми какой.
P. S. Ответ на вопрос нет, не работают.
Да. Был и есть.
Добавить в TSLab такой блок, который будет менять оптимизируемый параметр динамически, подстраивая ежедневно под историю. Правда придется придумать как подкачивать в него исторические данные для подстройки, потому что самооптимизации механизма нет.
Как и на чем у вас реализовано?
С ТСЛабом плотно не знаком. Но там придется писать свой оптимизатор и втраивать в код робота, чтобы протестить как-нибудь.
Вробде бы в МТ5 есть функии работы с результатами оптимизации — можете статью глянуть https://www.mql5.com/ru/articles/4917
У меня оптимизатор встроен в сам робот и этот робот с включенной автооптимизацией можно протестировать в собственном тестере, — и только тогда становится понятно насколько эффективна автооптимизация. У многих алготрейдеров такое реализовано.
Eugene Logunov, вообще в этом примере корреляция cor(x,y) равна 0.9228008, что само по себе делает дальнейшие рассуждения подозрительными. В частности при такой высокой корреляции знаки x,y совпадают с высокой вероятностью. То есть кумулятивная сумма произведения (x*y) — это практически просто накопительная сумма каких-то почти всегда положительных чисел.
Нехороша потому, что адаптация системы к изменениям есть ничто иное, как попытка компенсации адаптации к изменениям со стороны рынка. Это — как попытка догнать свою тень. Рыночная модель и ТС на ее основе изначально должны быть такими, чтобы эксплуатировать невозможность быстрой адаптации широкого круга участников к изменениям.
Здесь мы снова возвращаемся к проблеме рыночной неэффективности, как такому свойству рынка, при котором скорость поступления информации намного больше скорости реакции на нее. Для этого модель должна быть многокомпонентной, а связи между компонентами должны образовать многочисленные комбинации, которые, собственно, и замедляют реакцию широкого рынка на информацию.
На своем примере могу сказать, что мне ни разу не приходилось оптимизировать ТС, а «лишь» менять ее всю целиком))), по мере добавления в нее степеней свободы (компонентов), которые все, без исключения, связаны с поведением рынка, включая крупных игроков, маркет-мейкеров, манипуляторов и игроков с мета-стратегиями.
Как было правильно упомянуто, каскадное подключение к трендам — хороший пример существенной характеристики рыночного поведения. Но его одного, разумеется, не достаточно. Каскадность подключения, при этом есть просто одна из степеней свободы стационарной (не динамической) модели. Моя модель начиналась с одной степени свободы в, примерно, 2011 г. (похожей на подключение к трендам) и добралась постепенно до семи степеней к настоящему времени, ни одна из которых не пересматривалась/оптимизировалась.
Eugene Logunov, прежде чем обсуждать эту модель дальше хочется понять как в приницпе построить на рынке позицию, чтобы она стала зависима именно от ПРОИЗВЕДЕНИЯ их доходностей?
Как правило, когда мы берем два инструмента, то получаем линейную сумму их доходностей. Или чего-то не понимаю?..