Блог им. SenSoR

Как я тестирую и оптимизирую свои алгоритмы.

    • 23 марта 2015, 15:21
    • |
    • SenSoR
  • Еще
Для примера возьму одного из торгующих в трансляции роботов. 

 Как писал ранее, на этом полигоне у меня, на данный момент, торгуются трендовые торговые системы на фьючерсе доллар-рубль (Si). Вот один из них:
Как я тестирую и оптимизирую свои алгоритмы. 

Работает на настройках оптимизации 12-13 годов. Именно такую выборку сделал для того, что бы в нее влезало достаточное кол-во сделок + что бы Эти года показали разные ситуации на рынке — От классного тренда, до жуткого флета. Желательно что бы флета было побольше — эдакий стресс тест)

Как я тестирую и оптимизирую свои алгоритмы. 

Как видно из периода «слепой» торговли 10,11 и 14 годов, алгоритм показывал хорошую устойчивость. Но что если поэкспериментировать, и сделать оптимизацию на других периодах? Пожалуйста:

Как я тестирую и оптимизирую свои алгоритмы. 

И:

Как я тестирую и оптимизирую свои алгоритмы. 

Как видно из зон «слепой» торговли, результаты уже похуже, но всеравно торговля в плюс с нормальный профит фактором и коэфф. шарпа)

О кей. А что если взять этого же бота, с текщими боевыми настройками для фьючерса Si, и протестировать торговлю на других ликвидных фьючерсах, не меняя эти настройки? Пожалуйста: 

Как я тестирую и оптимизирую свои алгоритмы. 

Конечно, результаты трендовика намного хуже, а на малотрендовом газпроме вообще весь 14й год слив, но это не говорит о том, что система не будет работать на том инструменте, для которого она писалась, так ведь? А Вы как думаете? 

  Что еще можно сделать? А, ну да, поменять местами лонг и шорт) 

Как я тестирую и оптимизирую свои алгоритмы. 
Мда, слив! Ну оно и понятно, логика системы рассчитана на взятие трендовых движений или трендовых импульсов. А этот слив означает, что в системе нет фактора подгонки под историю, а значит системе жить!)

 Ну и покажу некоторые сделки, совершенные данным роботом в первые дни нового контракта Si:

Как я тестирую и оптимизирую свои алгоритмы. 

Видно, что с импульсами нормально справляется. И думаю тянет на 100% годовых.

Еще есть идея расклонировать данного робота на частей 10 с разными параметрами, полученными от оптимизаций прошлых годов. Как думаете, рабочая идея? Поможет сгладить эквити в будущем?

Всем спасибо за внимание. Ставьте лайк, выводите на главную, думаю данный пост поможет начинающим алготрейдерам правильно тестировать ТС) Буду писать еще. Удачных торгов!)
★40
130 комментариев
лайк!
avatar
Лишь бы в будущее не заглядывал.В какой программе тестируете?
avatar
Mr_Noname, В будущее не заглядывает. Торгуется уже полгода — полет нормальный) Тестирую в Амиброкере.
avatar
SenSoR, тогда круто. Амиброкер платный или бесплатный?
avatar
Mr_Noname, Брал лицензию, когда еще курс был не такой кусачий)
avatar
SenSoR, понял вас. Спасибо за ответ.
avatar
обычная канальная пробойка с реверсом
avatar
silentbob, нет — совсем холодно)
avatar
успехов, Вам.
avatar
SMA, Спасибо)
avatar
SenSoR, идея с клонированием вполне рабочая, диапазон приемлемых параметров оптимизации возьмите и засуньте в портфель стратегий каждую из них и посмотрите на разницу эквити ( 10 лотов для одной системы или по 1 лоту для каждой из 10)
avatar
Press, Спасибо, потестирую)
avatar
так и не осилил нормально тестирование в Ami((
WL оказался роднее что ли ))
avatar
Press, Ну… кто к чему привык. WL тоже хорошая штука)
avatar
и кстати тестировать надо одним лотом. или это одним лотом просадки по 10 (десять) ГО — 25тыс пунктов?
avatar
silentbob, Все нормально. В алгоритм вшита система управлением размером позиции, в зависимости от текущей ситуации на рынке, т.е. сайз динамический. Если матожидание в сделке получше, то вход бОльшим сайзом, если матожидание сделки хуже, то взод меньшим сайзом
avatar
SenSoR, сколько контрактов использовалось в момент просадки 25тыс пунктов?
avatar
одной замены шорта на лонг недостаточно, нужно поменять и выполнить оптимизацию, потом прогнать.
avatar
bstone, там не намного лучше ситуация)
avatar
bstone, Провел оптимизацию с перевернутым лонг-шорт:
avatar
SenSoR, нормуль, внушает оптимизм
avatar
bstone, вы считаете, что риск в сделке почти 100% внушает оптимизм?
Max trade % drawdown 99,50%
avatar
Сергей cms, Нет, такого небыло. Макс потери в одной сделке были 8000 руб из начального депо 100 тыс.
avatar
SenSoR, Параметр Max. trade % drawdown — The largest peak to valley percentage decline experienced in any single trade. The lower the better.
В Ваших отчетах Max. trade % drawdown под 100%.
Странно как-то...

avatar
Как Вы Решаете вопрос с роллированием контрактов в бэк-тесте? Имеются в виду спреды, связанные с контанго/бэквордацией фьючерсов (просто новичок в этом деле).
avatar
Murik, Да просто в квике, руками закрываю сделки на старом контракте и открываю на новом. Роботы ведут свою позицию в амиброкере вне зависимости от квика. Таким образом кол-во ботов может быть любым на одном счете квика.
avatar
SenSoR, а Вы переносите Ваши позиции черезь ночь или только интрадей?
avatar
Murik, Да, переношу. И через выходные переношу
avatar
SenSoR, так как Вы решаете вопрос, когда Ваши позиции приходятся на даты роллирования контрактов? Si например всегда в контанго.
avatar
Murik, не всегда, бывает контанго бывает бэквордация, на длительных промежутках эти влияния могут быть как положительные, так и отрицательные, поэтому это влияние можно приравнять 0 и все)
avatar
Murik, есть склеенные контракты…
avatar
ves2010, но склеенные контракты не решают вопрос с гэпами, связанными с контанго/бэквордацией (насколько я знаю). И если автор торгует только интрадей, тогда проблем нет, а если переносит овернайт, вот тут хотелось бы узнать.
avatar
Murik, Да, будут конечно погрешности в реале. Что тут поделаешь, главное, что бы логика системы была рабочей
avatar
Murik, есть разные типы склейки… даже если и будет гэп, то некоторая зашумленность данных только на пользу боту
avatar
ves2010, Да, верно. Есть гепы как за бота, так и против. Случайность)
avatar
SenSoR, согласен. А Можно узнать, Вы объемы используете в Вашей торговой ситеме? Или только все, что связано с ценой.
avatar
Murik, В этом варианте нет. Но тестирую брата-близнеца, с объемными фильтрами.
avatar
SenSoR, ясно, спасибо. А вот с пользучей оптимизацией не пробовали? То есть, скажем за последние N месяцев, а по прошествии недели, этот оптимизационный период смещается на неделю вперед.
avatar
Murik, Форвард-тест? Можно и неделю, но будет большая погрешность, т.к. сделок мало в выборке. Мне нужно хотя бы 200-300 сделок за выборку. И то этого мало(
avatar
Murik, когда переносишь позу, нужно закрывать позу в текущем контракте, и смотреть когда у робота закроется сделка, и только тогда запускать его вновь уже на новом контракте, опять же эти влияния могут быть как положительные так и отрицательные.
avatar
Андрей Ерохин, Дело в том, что когда я запускаю график нового контракта, в амиброкере автоматом этот график меняется со старого контракта на новый. А позы у роботов внутри ами остаются те же, т.к. динамика цены та же. Короче боты в ами ведут свою позицию автономно от квика)
avatar
ves2010, интересует ваше мнение, а насколько хорошо Финам их склеивает? Слышал нарекания. Где-то написано вкратце как они это делают?
avatar
Тебе макс просадка в 25% жить не мешает? я не подкалываю, а просто спрашиваю, ибо для каждого своя «болевая точка». Ну и попробуй поиграйся с тем, что количество контрактов в каждой сделке будет зависеть от волатильности — кривая доходности по-красивее должна стать
avatar
Cheshirscy, ой, извиняюсь, не прочитал коммент, о том, что и так есть динамическое определение количества контрактов.
avatar
Cheshirscy, 25% нет, не мешает. Да и это тесты без реинвестирования. Если в уме держать макс просадку 25% и реинвестировать, например раз в квартал, то покрасивше эквити будет) Кол-во контрактов в сделке и так зависит от волатильности + система матожидания сделки)
avatar
SenSoR, а ты ее на 14 году прогони:) вот где КОЦМАСС :)
avatar
Cheshirscy, Да ну, и так видно что космас))
avatar
SenSoR, зависит от системы. От цикличности серий плюсов и минусов. Иногда, лучше наоборот сайз уменьшать.
avatar
Alex Hurko, Конечно, когда на рынке неблагоприятный период — сайз лучше уменьшать и такую систему я вшил в роботов)
avatar
Cheshirscy, Подскажите, а как рассчитывать текущую волатильность для Бота, кто как ее считает?
avatar
iuiu, по волатильности инструмента, но это нужно стопы делать от волы, и на них уже завязывать рм.
avatar
iuiu, ATR
avatar
Андрей Ерохин, т.е. просто берете индикатор ATR, как я только не выкручивался. сейчас сделал, что в 12:00 дня рассчитываю волатильность, но это как-то кривова-то получается и очень тупо. Попробую с ATR поработать, спасибо.
avatar
iuiu, Можно использовать дневной ATR, можно внутридневной. Простой метод нормализации зайса по волатильности, например для фРТС: 10000/дневной ATR(10) = Сайз на сделку на сегодняшний день. А завтра опять ведем расчет нормализации. И так каждый день)
avatar
SenSoR, да, спасибо. у меня от волатильности уровни просчитываются и все остальное, стопы, профиты и тд. такой важный показатель, робот же, тупой же.
avatar
и чо?
1 ты б написал в каком режиме тестишь… было бы понятнее...
2 начальную сумму увеличь до 1мио не жлобься… а то 100к как то маловато для контракта в стоимостью в 70к
3 си настолько трендовый что можно торговать скользящими средними… вот еслиб этот же бот показал достойный результат в ри то я был бы удивлен
avatar
ves2010, а чего для того, что бы слыть реальным трейдером обязательно на ri торговать? если на других инструментах — то получается игрушечный трейдер? :)
avatar
Cheshirscy, На Ri у меня тоже есть роботы, не волнуйтесь)
avatar
SenSoR, да я не волнуюсь, у самого примерно такая же :)
avatar
Cheshirscy, На Ri скоро сделаю обзор банального пробойщика. Хотя, не совсем банального)
avatar
Cheshirscy, идея в диверсификации… си очень легок для алготрейдинга… но торговать только си — весьма безрассудно
avatar
ves2010, На данный момент у меня около 10 ботов, торгующих Si и Ri. Как трендовики, так и возвратчики к средней
avatar
ves2010, согласен, просто диверсификация может и без Ри быть, тем более, что он с Си «одной крови»
avatar
ves2010,
1. Что именно хотите что бы я написал?
2. В чем смысл увеличения стартового депо? Увеличу депо — увеличу лимиты)
3. Дык я ничего не имею против скользяшек. Пусть народ торгует Si ими и стабильно зарабатывает себе на жизнь, а не ноют, что с трейдинга невозможно зарабатывать на содержание себя любимого и своей семьи) На РТС тоже норм результаты. Но не все сразу — позже расскажу)
avatar
SenSoR, кароче ты уже ответил, что меняешь размер лота динамически… давай бота в ри… нама интереснее в разы
avatar
ves2010, Ну естественно, всю подноготную бота на Ri не смогу рассказать, но напишу скоро пост, где-то в таком же формате)
avatar
ves2010, по второму пункту — плечи…
avatar
SenSoR, Идея с клонированием конечно же хороша, но тут есть свои подводные камни, такие как корреляция доходности этих роботов, и ни кто не застрахован от одновременного распила этими роботами, как в пример приведу тебе страховой бизнес который цветет и пахнет, хотя шанс того что твой дом сгорит ограбят или машина не очень то и высок)
avatar
Андрей Ерохин, Конечно. Раскорреляция у клонов будет по времени, а не по типу. Если тренд вверх, то и все клоны встанут вверх, но в разное время. Тут для страховки нужны боты по типу.
avatar
SenSoR, нужно смотреть как они ведут себя на не трендовых участках все вместе.
avatar
Андрей Ерохин, Скажу что по тем типам ботов, что у меня уже есть — одна половина пытается входить в надежде на тренд и ловят лося, вторая половина стоит курит в сторонке. Потом они меняются. Т.е. во флете обязательно кто-то курит, кто-то лезет на рожон. Но в тренде участвуют все)
avatar
ves2010, там пробойка лучше отрабатывает чем средние)
avatar
Press, Склееный фьюч с финама.
avatar
Здравствуйте, так как тут много спецов по торговым роботам, расскажите пожалуйста с чего начать обучение а главное на каких платформах и программах пишутся алгоритмы? Торгую руками в данный момент и хотелось бы освоить это ремесло.Спасибо! (и если можно то поподробнее)
avatar
Андрей, Здравствуйте. Зависит от уже имеющихся знаний в области программирования. Если они есть, то можно начать с платформ: Amibroker, Wealth LAb, TS lab и проч. Если нет навыков программирования, то TS lab — Ваш выбор, т.к. там можно строить системы посредством логических кубиков)
avatar
avatar
Андрей, на велсе тоже можно строить системы и при этом не писать код)
avatar
высылайте мне ваш скрипт… прогоню на инструментах..
и только тогда смогу ответить на ваши вопросы )
в слепую сложно что то советовать
avatar
Молодец! Уважаю алгоритмистов!
avatar
ЭЭЭЭЭдик, Спасибо!)
avatar
Автору респект… ты на правильном пути!
avatar
AlexD, Благодарю)
avatar
а каков размер позиции или % от депозита при тестировании?
avatar
Ivor, Размер позиции всегда динамический, в зависимости от текущей волатильности инструмента и матожидания сделки. Но даже если все боты зайдут с повышенным сайзом — ГО не будет превышать 50% депозита.
avatar
SenSoR, а мат ожидание как вычисляете? чем сильнее сигнал, тем больше мо?
avatar
Ivor, Да, типа того)
avatar
SenSoR, а много параметров у системы?
avatar
Ivor, 4
avatar
SenSoR, это многа очень…
avatar
ves2010, что поделаешь, таковы реалии сложной системы)
avatar
SenSoR, спасибо за интересный пост!
Меньше 1000 сделок за 5 лет со статистической точки зрения маловато… И, мне кажется, или на последнем скриншоте трейды сильно не в рынке?
SenSoR, Вы не хотите поучавствовать в закрытом тестировании нового ПО? Наша специализация это как раз бектест и оптимизация. Присутствуют мощные инструменты для анализа, высокая скорость тестов как на тиках так и на свечках и т.д. Перенести стратегию на наше API мы Вам поможем.
Картины оптимизации примерно такие:
www.softalgotrade.com/wp-content/uploads/2015/01/Selection.png
avatar
SoftAlgoTrade, я могу поучаствовать. Что нужно делать?
avatar
Ivor, нужен реальный опыт алготорговли, владение C#, так как стратегии пишутся на нем и непреодолимое желание ломать программное обеспечение)
Работа не простая как может показаться на первый взгляд, но в итоге вы получите мощный пакет программ со значительной скидкой, который уделает велс и амиброкер вместе взятых.
avatar
SoftAlgoTrade, c# как раз то, что нужно, я на нем и работаю. А есть возможность связки с квиком?
avatar
Ivor, проторговщик через Квик еще в разработке, сам коннектор через lua уже имеется, допиливаем.
Сейчас нужно протестировать готовый софт.
Напишите на [email protected]. Обсудим сотрудничество.
avatar
SoftAlgoTrade, отличный сайт с картинками животных и цветов!
avatar
Press, мне тоже нравится) Мы еще не начали, сайт еще в разработке) Одноко 3 из 4 программ уже готовы! Сейчас занялись Проторговщиком.
Как доведем до ума, так заменим зверюшек и цветочки на соответствующий контент)
avatar
SoftAlgoTrade, На данный момент амиброкер одна из самых быстрых платформ общего пользования для тестирования ТС. Вы уверяете, что Ваша разработка будет намного быстрей?)
avatar
SenSoR, с амиброкер по скорости еще не сравнивали, но уверен, что точно сможем конкурировать! Проведена колосальная оптимизация процессов — многопоточное тестирование(процессор загружен на 90%-95%), низкое потребление оперативной памяти. Например, исторические данные подгружаются только один раз.
Так что даже на тиках очень хорошие показатели.
avatar
SoftAlgoTrade, Сейчас придет SECRET и раскритикует вашу платформу))
avatar
SenSoR, имеет на то полное право!) Время покажет) Надеюсь, мы скоро закончим и сможет открыть для общего доступа. Тогда уже пользователи сами скажут чего она стоит.
avatar
SoftAlgoTrade, Да, с одной стороны маловато, но с другой, ТС очень избирательна к сделкам и ищет только оптимальные точки входа. Меньше сделок — меньше комиссии, меньше выходов по стопу — меньше проскальзываний. А по поводу тестирвоания — подумаю. Пишите в личку если что.
avatar
SoftAlgoTrade, Я оптимизирую ТС только генетикой
avatar
SenSoR, Нет генетики, нет монте карло, нет методов отжига и прочих. Есть нелинейная стохастическая оптимизация. Все эти алгоритмы близкие родственники и бессмысленно говорить кто из них лучше, а кто хуже. Вопоос в том как их правильно применить к конкретной задаче...
Наш алгоритм это гибрид генетики и монте карло с высокой степенью гибкости.
Вот описание настройки:
www.softalgotrade.com/settings-discoverer/
Может показаться сложным, но это только кажется)
avatar
SoftAlgoTrade, Понятно, посмотрим)
avatar
SoftAlgoTrade, прочитал инфу по Вашей ссылке.
Не понятно, какую целевую функцию Вы максимизируете. Она одна или их несколько. Есть ли несколькокритериальная оптимизация. Также не увидел анализа устойчивости найденных экстремумов.
Такое ощущение, что Ваш метод недостаточно проторгован, и Вы решаете задачу скорее абстрактную, чем реальную.
avatar
SergeyJu, По вышеуказанной ссылке инструкция по настройке параметров оптимизации. Я ее выложил для коллег участвующих в тестировании. Она, конечно, не дает никакого представления об оптимизаторе в целом.
Есть старенькая статья, там описывается концепция оптимизатора:
softalgotrade.com/kak-ya-sdelal-tester-optimizator-dlya-naxozhdeniya-pribylnyx-strategij-na-birzhe/

Сейчас оптимизатор совсем другой, он уже «матерый зверь»)))

Целевых функций на выбор 7:
— PnL,
— Maximun DrawDown,
— Expected Value,
— Winning Trades,
— Profit Factor,
— Sharpe Ratio,
— Sortino Ratio.

До 8 оптимизируемых параметров одновременно + можно сразу на нескольких таймфреймах оптимизировать. Итого 9 параметров.

На устойчивость проверяется методом Walk Forward на исторических данных не участвующих в оптимизации(OutOfSample).

Все процессы полностью автоматизированы с высокой глубиной настройки.

Подробное описание, примеры и инструкции появятся после завершения тестирования.
avatar
SoftAlgoTrade, прочитал. Интересно.
avatar
SenSoR просколзь какой заложен на тестинге? можно узнать?
avatar
usertrader, Входы и выходы производятся на закрытии свечи, что почти превращает проскальзывания в случайное блуждание. (Например я не редко вижу проскальзывания в мою сторону). Стопы срывает крайне редко — чаще система сама выходит из рынка по сигналу на закрытии свечи. Если сделать торговлю лимитными ордерами, то она не сильно изменится в худшую сторону.
avatar
SenSoR, кстати, робот у вас луа/купайл, или со стороны подключается?
avatar
Ivor, Amibroker + коннектор Amisharp
avatar
SenSoR, и как, надежно работает? не тупит?
avatar
Ivor, Да, все работает как часы. Спасибо разработчику Амишарпа)
avatar
SenSoR, ок. огромное спасибо за ответы! попробую такой вариант.
avatar
Ivor, Пожалуйста)
avatar
SenSoR, Вы можете посоветовать какую нибудь справку на русском языке для амиброкера, что никак не найду, либо все на английском, либо туториалы на старые версии.
Вчера все таки установил ами, первое что бросается в глаза по сравнению с велс лабом — высокая скорость работы и великое множество настроек.
avatar
Ivor, Достаточно много инфы на русском тут amisite.ru/ еще есть на bot4sale.ru/forum/index.html
avatar
Ivor, сейчас Мультичартс.нет от АМП бесплатно www.ampfutures.com/platforms/
avatar
iuiu, то что там с# это здорово.
а к квику можно сразу коннектиться через него?
avatar
Ivor, если честно, хз, еще не разбирался, пока только поставил. Вроде привод какой-то есть
avatar
я чёт не понял. зачем нам картинки?
где грааль?
avatar
MrDrJOKER, Это пост о том, как тестировать ТС. Граали тут нет)
avatar
SenSoR, как-то вы не правы насчет проскольза — он реально есть. Я не знаю как с фьючами, а в акциях скажем сбер 0,06% иное уже до 0,1% не в пользу робота. Да он может быть как + так и — но он есть! И его надо учитывать — тем более если его учесть система станет более устойчевой к доходу.
avatar
usertrader, В системах, работающих на пробоях, либо где есть частый вынос стопов, да, проскальзывание очень сильно влияет и его нужно учитывать и закладывать в систему как можно больше. В системах, работающих на закрытии свечи (как вход в сделку, так и выход из нее), и где вынос стопа — редкое событие, размером закладываемого проскальзывания можно пренебреч. Тут уже рандом, как в +, так и в — может быть, но лучше конечно задать некоторое значение проскальзывания против себя, для пущей уверенности)
avatar
SenSoR, системы были как раз на закрытие(открытие) свечки и причем разные — статистика очень бОгатая — разных системы разных авторов — причем сбер весьма ликвиден — большая часть систем была именно по нему в работе, опыт 2-х лет работы с роботами у меня между прочим — на реальных счетах. Так что проскольз есть и будет и считать его надо обязательно! И в целом получается в минус. Вот с фьючами сильно не давелось работать поэтому статистику не имею. Возьмите посчитайте системы с проскользом и без — результат может разительно отличаться!
avatar
usertrader, Я уже все считал. И систему с проскальзыванием. И систему с лимитными ордерами. Не сильно результаты разнятся. Сильно начинают отличаться в тех системах, где прибыльных сделок 30%, а убыточные сносятся по стопам. Вот там да — проскальзывание все портит и я такую систему не ввожу в рынок. Чем больше кол-во прибыльных сделок — тем лучше для меня!
avatar
Саш, а обычный рабочий таймфрейм у тебя какой?
Артур Сотников, 15 мин, пока что. Планирую увеличивать в будущем)
avatar

теги блога SenSoR

....все тэги



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