Здравствуйте!
Решил поделиться своим опытом и рассказать свой путь алгоритмического трейдинга, с целью пользы в основном начинающим алготрейдерам. Сейчас эта тема очень популярна. Основное преимущество что хороший алгоритм дает результаты, которые можно ожидать в будущем, с некими допущениями (предположим что рынок становится сложнее и параметры во времени будут падать).
На рынке я с 2007г. Начало — банально, ПИФы, акции. С 2008 г исключительно системный трейдинг фьючерсами FORTS. За это время прорабатывались различные идеи, которые можно формализовать 100%. Свои системы эксплуатировал от полугода до 2х лет. Система в среднем дает порядка 40% на 1к без эффекта плеча, с показателями доходность/макс просадка порядка 3/1-5/1 на годовом интервале. Алгоритмы все направленного типа. Т.е зарабатывают за счет движения из точки A в точку B.
С 2011г уровень алгоритмов значительно повысился, стал применять различные методики в разработке и методике оценки качества системы. При разработке главное сама идея (торгующейся паттерн, который имеет свойство устойчиво повторяться во времени), это для 100% формализованных алгоритмических систем. Сама идея при наложении на все временные участки должна иметь хорошие параметры (стабильная кривая вверх), далее дело техники, доработка, фильтрация неблагоприятных фаз рынка и т.п. Идея проверяется на 1м временном интервале (INSample), накладывается на другие(OUTOfSample- период чисто рыночной торговли), параметры OUTOfSample должны укладываться в InSample. Далее алгоритм ставится на реальный счет, если по итогу параметры OUTOfSample укладываются в INSample значит идея рабочая и устойчива, далее отслеживаем во времени и смотрим насколько реальные параметры соответствуют тестовым. Основные количественные параметры системы, которые принимаются в эксплуатацию Доходность(не менее 40%), Максимальная просадка(не более 5%), Средняя сделка(Не менее 200п), % прибыльных сделок(в зависимости от самой идеи системы), Профит фактор(не ниже 1,5), Рекавери Фактор(не ниже 15), Средняя Прибыль/Средний Убыток(в зависимости какой % прибыльных сделок, если более 50% то не ниже 3). Качественные параметры – Коэффициент шарпа (не ниже 6), показывает насколько доходность равномерна распределяется во времени.
Ссылка на одну из систем в онлайнтрансляции
http://tslab.comon.ru/67B16998220CBAADE67B0B99A2AD6F72
В начале 2011г наткнулся на одну из статей про достижения некого высокого эффекта от композита (портфеля) низко коррелируемых систем. Основная идея – объеденение в портфель нескольких алгоритмов, работающих по различным принципам, разных инструментах, различном таймфрейме. Основная цель- на выходе получать параметры в разы устойчевее, нежели параметры в отдельности каждого алгоритма.
На середину 11г такой портфель быть запущен в боевом режиме. Работают порядка 5 алгоритмов на различных идеях, внутри каждого также от 1-5 алгоритмов. По эквити виден результат, так называемый синергетический эффект от объеденения алгоритмов в 1 систему, с присвоением удельного веса каждой, в зависимости от корреляции, частоты сделок и качества параметров. Каждый алгоримт торговался в чисто рыночном режиме (не менялся не один из параметров). Видно что с конца сентября 2012г эффективность портфеля упала, с падением общей волатильности и обьемом торгов на РФР, на часть алгоритмов оббьем был снижен. Пример приведен с целью показа как от несложных алгоритмов (не сложные значит идея простая но не очевидна) можно получать хороший результат. Расчет на сумму в 5000000р, с заданным максимальным риском 10% (500000р).Доход 2500000 за 1,5г (50%)
Что касается мани-менеджмента, о котором написано множество книг и статей, я принимаю достаточно простой метод. Суть заключается в том, что есть статистическая максимальная просадка всего композита. Делаем предположение что в будущем просадка обновится но не привысит 3х кратного размера. Т.е к примеру сумма 5000000р заданный максимальный риск 10%, это 500000р. В расчетах принимаем что просадка может составить 1500000р. Поэтому обьемы снижаются в 3 раза. Что касается реинвестирования, то не применяю. Проводил исследования на благоприятные месяцы для моего композита. Т.е берем суммируем все цены закрытия помесячно, получаем среднюю за месяц, проводим линию. Если цена пересекала линию более 6 раз, предполагаем что месяц был плохой, если менее значит хороший. По статистике 12 г имел 6 не благоприятных месяцев, тем не менее композит имел 3 убыточных месяца. Например май, январь из года в год имеет блогоприятную статистику, что хорошо для вхождения в рынок. Поэтому при достижении прибыли на начало этих месяцев увеличиваем объем например на ¼ от прибыли. Основной смысл-счет должен расти быстрее чем объем по алгоритмам.
Сложность алгоритмического трейдинга заключается в том, что поиск идей непрерывный, т.е идея перестают работать, нужно вовремя отследить и законсервировать алгоритм. Но преимущественно дает надежные ожидания будущих результатов. Маловероятно что все алгоритмы начнут «лосить» в одно и то же время, и что приведет к значительной просадке.
Все алгоритмы реализованы на ТСлаб, C#, надежный терминал для автоматизированной торговли.
Могу поделиться идеями по разработкам, так же помогу реализовать идеи на C#.
Вопросы на почту vanilov83@mail.ru
«Работают порядка 5 алгоритмов на различных идеях, внутри каждого также от 1-5 алгоритмов» — это тоже супер.
А то что с сентября эффективность упала, по-моему, еще ничего не значит. Это может быть временная динамика рынка, а потом эффективность снова повысится.
+ за блог
и насколько реал соотрветствует бектестам.
Да, примерно так.
1. " Сама идея при наложении на все временные участки должна иметь хорошие параметры (стабильная кривая вверх), .." — Это обязательное условие? имхо к примеру трендовые системы устойчиво работают начиная от 30 мин, в то время как 5-30 мин лучше контртренд.
2. "… торгующейся паттерн"… — расшифруйте что это по Вашему… т.е. это могут быть к примеру высоко вероятностные сделки с небольшим кол-вом повторов, в виде комбинации свечей или комбинация индикаторов с установленными параметрами. Т.К. Вы зависите от волатильности возможны оба варианта.
3. "… Что касается реинвестирования, то не применяю. "… т.е. постоянный объем, а потому на сколько % должен увеличится счет что бы начать вывод или у Вас идет разгон счета за счет новых эмитентов?
4. " Сложность алгоритмического трейдинга заключается в том, что поиск идей непрерывный, т.е идея перестают работать, нужно вовремя отследить и законсервировать алгоритм." а вот за это поставил бы +, но пока чего то там не хватает.
В челом содержательно, видно человек торговлей увлекается. Молодец
2. Паттерн- это какая-либо формация. Т.е например рынок при сильном гэпе растет 30мин в выборке 200 из 300. Это паттерн и на нем можно сделать стратегию.
3. Алготорговля далеко не идеальна, так что забудтье про разгон счета, достаточно 3-5 алгоритмов с низкой корреляцией, прошлюе проецирете на будущее (со снижением естесственно)и вперед. Работа по цели. Лучше работать еденицей объема, т.е повышать объем раз в пол года, я вообще не повышаю. 50% при риске 10% это очень хороший результат на сумму например 5000000р.
Оптимизация должна применяться в очень разумных пределах, т.е +-30% изменения параметров, должны давать также устойчивы результаты эквити. Насчет философии не знаю)) если ваша идея 100% формализуема, то ее легко проверить на работоспособность. Могу предложить в аренду некоторые скрипты, т.к они масштабируемы и до 300к в себя вмещают.
По поводу +-30% полностью согласен, я бы даже советовал строить распределение доходности от значений параметра или двух, но тут уже возникает проблема, если параметров больше)))
Про философию, я имел ввиду следующее:
какие данные для оптимизации параметров брать:
1. макс. кол-во разных состояний рынка (или фаз, в вашей терминологии))
2. брать самые неблагоприятные фазы рынка
3. брать самые благоприятные фазы рынка
в состояние рынка входит и таймфрейм и прочее, т.к. там свои характеристики у рынка будут.
И ещё вопрос, оптимизировать ли все параметры сразу или разделить их на группы и проводить оптимизацию в определённом порядке. Вы как тут делаете? прогоняете сразу 10 млн. проходов в ТСЛаб или как-то иначе?))
а вот про порядок оптимизации на уровне «сначала на вход, потом на выход», я не подумал. подход логичный.
Ещё вопрос. Вы стреляете по цели алгоритмом, как решаете проблему повторного входа в точке выхода если условие входа ещё сохраняется? Если такой проблемы нет- вопрос снят