Блог им. Collapse

Оценка устойчивости алгоритма на Si

Многих почему-то пугает тестирование алгоритма на Forex, поэтому я решил взять понятный для всех Si. Впрочем, Forex (с его USD/RUB) тоже пригодится.

В своём предыдущем посте я уже говорил, что лучшая (по определённому показателю своей результативности на истории конкретного инструмента) торговая стратегия (т.е. комбинация значений параметров алгоритма) гарантировано не будет лучшей на другом инструменте или на этом же инструменте в будущем. Все алготрейдеры это знают, но лично мне каждый раз в это верится с очень большим трудом. Откуда затруднения? Я объясню.

Если взять результаты бэктеста алгоритма на паре USD/RUB (котировки Forex-брокера Dukascopy с марта 2007 г. по сентябрь 2017 г.) и отсортировать их по коэффициенту линейности (далее — L), то лучшая стратегия (L=0.99811) будет выглядеть так:

Оценка устойчивости алгоритма на Si

Отношение среднегодовой прибыли к среднегодовой max[просадке] (далее — R) — 3.61 (без учёта потери на спреде).

Вот казалось бы, что может пойти не так при использовании этой стратегии в будущем (на этом же инструменте или на смежных)? Чтобы это выяснить, я протестирую эту же стратегию (без изменений) на смежном активе: фьючерсе на USD/RUB (свечной график M1 от Finam с декабря 2008 г. по декабрь 2020 г.):

Оценка устойчивости алгоритма на Si

Основные показатели результативности упали почти в 2 раза (R=1.96), линейность тоже заметно ухудшилась (L=0.98239). Сказываются как другие котировки, так и отсутствие «ночных» сессий. Примечательно, что накапливаемая прибыль всё равно «выходит» на линию своей регрессии, но в целом стратегия уже не является лучшей.

Теперь важно проверить, будет ли ухудшаться оптимальная стратегия или же проявит устойчивость. Оптимальную стратегию для EUR/USD я тщательно подбирал по своей методике и результат демонстрировал в предыдущем посте [ссылка]. Она же (без изменений) на Si:

Оценка устойчивости алгоритма на Si

Линейность — отличная (L=0.99550), основные показатели результативности тоже достойные (R=2.51). Устойчивость считаю доказанным фактом. Осталось только выяснить, какой будет чистая прибыль.

Средняя прибыль на сделку составляет 0.0273%. Для текущей цены Si=75000 это 20.5 рублей (т.е. шагов цены). Визуально роботы держат спред в 2-3 шага, но не всегда им это удаётся, поэтому лучше заложить 5 рублей. Суммарная комиссия (тоже с запасом) составит 2 рубля «на круг» (т.к. биржевая комиссия будет «скальперской»).

Отнимать 7 рублей от результата каждой сделки не считаю корректным (ведь в прошлом менялась как ликвидность, так и комиссия), поэтому для экстраполяции текущих торговых условий в прошлое я буду вычитать 7/75000*100=0.009(3)% из процентной прибыли каждой сделки (не забывая, что для сделок с исполненными лимитными TP достаточно вычесть лишь половину спреда):

Оценка устойчивости алгоритма на Si

L=0.99097, R=1.52, суммарное время в позиции — 8.76% от календарного, количество закрытых сделок — 4257 шт., среднее время в позиции — 2.17 часа, эффективность использования капитала (т.е. средняя процентная прибыль за сутки удержания позиции) — 0.2129% (без плеча), средняя чистая прибыль на сделку — 0.0192% (в текущих ценах — 14.4 руб.), торговля фиксированным депозитом без переноса позиции через любые перерывы дольше часа.

С таким результатом не поучаствуешь в ЛЧИ. А ведь это и есть «грааль», если разобраться. Потому как с плечом 4.4 и среднегодовой max[просадкой] на уровне 20% (которая в полной мере реализуется в первый год только если прийти на рынок в самый неудачный момент) можно рассчитывать на 30% среднегодовой чистой прибыли. Это же результат лучших американских инвесторов за всю историю [ссылка]! И с учётом ежемесячного реинвестирования усреднённой части прибыли этих «легенд» можно будет даже превзойти.

Напомню, что я использовал комбинацию значений параметров, которая оптимальна для EUR/USD. Если же использовать комбинацию оптимальную именно для Si, то результат будет лучше.

Какие ещё варианты улучшения показателей L и R у меня есть?

  • одновременная торговля нескольких стратегий на одном инструменте
  • одновременная торговля разными инструментами
  • вход в сделки не «по рынку», а с помощью ограничительных мер
  • дополнительная фильтрация сигналов алгоритма
Готов сотрудничать с теми, у кого есть ресурс под такой результат (т.е. «длинные» деньги). Наличие своей инфраструктуры при этом только приветствуется.
★3
39 комментариев
Параметр линейности, интересно, как и где он рассчитывается?

Дмитрий Овчинников, это всего лишь мера разброса значений относительно их линии регрессии.
avatar
обязательно нужна ось времени...
в рубле был мегадвижняк в 2014г когда он за 3 месяца удвоился
я не вижу этого движняка на эквити

средняя сделка 0.0192% крайне мала… я бы стал торговать от 0.10% но это уже впритык… там дело не в комиссах… а в реальных сделках у которых есть проскальзывание, и частичное исполнение заявок
avatar
ves2010, какое среднее число спредов по вашему составляет проскальзывание для топ ликвидных фьючерсов?
avatar
Kot_Begemot, на каком обьеме? я обошел эту фигню и набираю позу по-другому...
это днище кидать заявку по рынку в надежде на узкий спред 
avatar
ves2010, вы сказали, что меньше 0.1% торговать не готовы. (0.1% это средняя прибыль на сделку без учёта проскальзываний, комиссий и пр.).  Капитал… ну допустим, 100 млн., средний.

Но ваше сообщение можно прочитать по разному. Проскальзывание может совсем убить систему, может снизить перформанс, а может просто повысить требования к инфраструктуре (например).

Я поэтому вас и переспросил, какое по вашему мнению среднее проскальзывание? 0.02%, 0.05% или 0.1%?
avatar
Kot_Begemot, проскальзывание сильно зависит от способа набора позы я закладываю примерно 0.06% на круг 

там короче фишка… как только твоя заявка в 3-4 раза превысит среднюю заявку в стакане, то от твоей большой заявки сразу станут играть… и исполнение лимиток резко падает... 

ну и так же в рыночных заявках… сгребаешь 2-3 спреда...

решается проблема просто

кстати насчет инфрастуктуры… вот например есть фьюч роснефти например в нем в день 2000 сделок… это примерно одна сделка в минуту в лучшем случае… ты хоть что делай со своей инфрастуктурой… но ни купить ни продать ибо неликвид… можно конечно кинуть маркет и сгрести стакан… прикол в том, что тот же ри уже на 200-300 контрактах неликвид


avatar
ves2010, 
рассказывай лучше, как обошел :)
ves2010, как обошли-то? Я устал на сберефуч каждый раз по 10-15 пп отдавать
avatar
Артур, да как и все… но руками это нереально
avatar
ves2010, дайте хоть намек — куда копать или где копать… любую наводку, попробую мозгами пораскинуть.
avatar
ves2010, а если у меня время измеряется в сделках? )

Повышенная волатильность — это хорошо, но алгоритм же не в лонге сидит всё время )

0.0192% — это не просто средняя сделка, это средняя «чистая» сделка. Следовательно, её величина уже не имеет принципиального значения. Хотите «вливать» большие объёмы в рынок? Есть фьючерс на S&P 500 [ссылка]. К тому же депозит можно разделить между разными площадками/инструментами. Или же входить только в те инструменты, где сработала лимитная заявка, выставленная с экономией спреда. Ну же, для чего смекалка нужна?!
avatar
Fractal, то что время меряется в сделках — крайне нудобно... 
1 нельзя посмотреть реальную просадку т.е то что было между сделками
2 нельзя посмотреть длительность боковиков
3 ты пойми — начнешь реально торговать сам все увидишь… насколько у тя средняя мала
4 кроме того… надо понимать что есть еще дополна причин по которым бот может оказаться нерабочим — например торгует во время клира, или входит в позу в момент гэпа…
5 спекулям нужен движняк — что толку в ликвидности, если актив тухлый?
6 т.к средняя очень мала просто попробуй скачать котировки в другом месте и посмотри как изменилась средняя — либо вместо си возми еуро… или цены денежного рынка на моекс usdrub_tom
7 обычно бот зарабатывает в 2-3 раза ниже тестов… т.к тесты самый лучший вариант, который увы не повторится
avatar
ves2010, благодарю за советы, но и я в рынке не первый день.

1. Пост был об устойчивости, а её мне удобнее исследовать по другой шкале. При этом отношение R, учитывающее время, я тоже привёл.
2. Алгоритм не рассчитан на то, чтобы удачно «выскочить» из рынка через месяц. Тут гораздо важнее, что будет на горизонте. Впрочем, шкалу времени инвестору я всегда могу показать.
3. У меня есть резервы для увеличения средней сделки.
4. Первые две минуты после перерыва не торгую.
5. На сильных движениях не обязаны зарабатывать все алгоритмы. Вы же не знаете, наступления каких событий я жду.
6. Именно с EUR/USD на Si я и перенёс стратегию без изменений. Переходить на заведомо худший спред в USDRUB_TOM смысла нет. Но если нужно будет перейти, то я проведу там новую оптимизацию.
7. Мой эксперимент с переносом как раз и призван показать отсутствие этой проблемы.
avatar

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

 

Если пост вообще не про это, будем считать что это просто мысль повисшая в воздухе).

avatar
Replikant_mih, пост о том, что «подгонки» здесь нет.
avatar
Fractal, если нет подгонки, значит должна быть ошибка в тестировании :)
avatar
bstone, одним — мало, другим — много. Вы определитесь )
avatar
Fractal, да проходили по сто раз уже — делюсь опытом бесплатно. Ищи ошибку :)
avatar
bstone, ошибки нет, трудностей — предостаточно.
avatar
Вы упомянули в тексте Dukas — торгуете через них? Как впечатления? Как условия ввод/вывод? Счет в швейцарии? Надо декларировать или нет? Спасибо.
avatar
Иван Егоров, пока только беру у них котировки )
avatar
Fractal, ясно, спасибо.
avatar
Да вы батенька прям миллиардер… на истории ))
avatar
Simix, имея первый миллиард, второй получить уже легче )
avatar
alfatest, посмотрите в стакан — там все хотят заплатить )
avatar
Согласен с @ves2010. Слишком ровная эквити в 2008 и в 2014 году. Ни просадок, ни скачков. Подозрительно.
Владимир Владимиров, так может не было сделок )

Знаете, как-то одни «инвесторы» развернулись и ушли, как только я сказал, что анализирую только цену. Меня уже удивить невозможно.
avatar
Извините, вы по свечкам алгоритм рассчитывали?.. Как минимум рекомендую тиковые ask/bid данные
avatar
ELab, за неимением bid/ask беру close. Весь экспорт на сайте Finam только close и содержит. Может знаете, где bid/ask для Si достать?
avatar
Fractal, ММВБ продает эти данные.
avatar
ELab, ММВБ перегибает с ценами.
avatar
Fractal, 15 000 руб за год истории по одному инструменту. Это ask/bid и trade price. Мне кажется, что приемлемо. Тем более учитывая специфику алгоритма.  
avatar
ELab, close распространяется бесплатно, а bid/ask за 10 лет только по одному инструменту стоит $2K?! Лучше уж Forex.

На счёт приемлемости я инвесторам тоже самое говорю. А они всё хотят купить Lamborghini по цене картошки. Банально не понимают, куда пришли.
avatar
Fractal, почему не сократить до года тесты? Если число трейдов относительно велико, то это более или менее приемлимо.
avatar
ELab, у меня мало сделок. А за несколько лет bid/ask для Si вроде как и в MetaTrader есть.
avatar
Fractal, понял. по поводу ask/bid в Метатрейдер не уверен. Там тоже close история. 
avatar

теги блога Multifractal

....все тэги



UPDONW
Новый дизайн