Блог им. Mihalich81
Почти 7 лет (из 14-ти) не пользуюсь бектестингом. Семь лет назад, я полтора года тестировал системы в бектесте и на реальном рынке одновременно. Результаты оказались неожиданными. Моя система, с бектестовой прибыльностью = 1.2, превратилась в убыточную = 0.85. При этом система продолжала быть прибыльной на бектесте. Я сравнивал результаты бектеста и реальной торговли и отмечал, что я делал неправильно. Делюсь многолетним опытом.
— Если мы заложили комиссии правильно, это только часть издержек. Основная часть убытка спред. Откройте любой инструмент, купите и сразу продайте его по рыночным ценам. Увидите, что позиция оказалась убыточна. А большая доля убытка из-за спреда.
— Если закладывать 2-3 спреда в издержки и результаты будут более реалистичными. Но, всё ещё, могут остаться оптимистичными. Точно об этом знать мы не сможем.
— Важное правило: если есть на графике сделка, то это не значит, что она может быть вашей. Это правило напрочь отбивает точность тестов.
Реальный рынок. У Вас цель войти на пробой в покупку. Кто-то из участников выкинул большой объём на покупку в стакан и перенёс его за 1мс на 10 пт. выше вашего условия на вход. Ваш робот среагировал на этот сигнал и через 600мс. заявка оказалась на рынке. Робот вошёл на 10 пт. (на 6 спредов) хуже, а тестер вошёл по цене условия.
Такие ситуации часто происходят на открытии рынка, если робот тестируется в первую минуту сессии, то его результаты под большим вопросом.
Гепы – ещё один вид сбивающий тестер с толку. Но его можно обойти, обозначив в роботе, чтобы он не входил в сделки внутри гэпа, на пустом пространстве между барами.
Проскальзывание – если у Вас большой объём (>1), то результаты будут ещё хуже. Например, вы работаете 10-ю лотами. Цель войти на пробое цены 100,10.
Представьте стакан:
Тип Цена К-во
Аск 100,20 8
Аск 100,15 1
Аск 100,12 2
Аск 100,10 3
Бид …
Мы вошли в покупку по цене: (100,10*3+100,12*2+100,15*1+100,20*4) / 10 = 100,149
Если бы мы торговали 1 контрактом, то смогли бы войти по 100.10-100.12, среднее 100.11
Заметили разницу: 100.11 vs 100,149?.. А у тестера будет 100.10!
Чем больше собственный торговый объём, тем больше нужно закладывать спредов в издержки.
Тестировать на демо-счетах.
— Котировки на демо-счетах сильно отличаются от реальных. У меня есть контртрендовые роботы, которые стабильно зарабатывают 5-10% от ГО в день на демо-счёте, но стабильно сливают на реальном счёте.
— На демо-счёте Ваше присутствие никого не волнует. Если Вы выставили заявку на демо, её никто не будет фронтранить (выставляться впереди), если Вы на реальном рынке – ждите конкурентов в стакане, которые будут стараться обойти вашу заявку.
Тестировать на реальном рынке с виртуальными позициями. Пожалуй, лучший способ тестирования. Почти все системы становятся убыточными. Реально спускает с небес после тестеров типа MetaTrader, TS LAB, AmiBroker, WelthLab и т.д. Вы входите именно по тем ценам, которые даёт рынок. Все тормоза брокера, робота — Ваши, т.к. это тот же робот, со всеми недостатками и рыночными ценами. Тормознутый, ленивый и совершенно бестолковый в моменты сильных движений на рынке. Недостаток только в том, что здесь отсутствует эффект присутствия на рынке. Если Вы, к примеру, активно используете фронтранниг или выкидываете другие фокусы в стакане, то такие системы не подлежат тестированию без реального рынка от слова «совсем».
Не спешите зарабатывать, точнее сливать. Сделайте аналогичную виртуальную систему, которая будет выкидывать Ваши сделки не на рынок, а в файл. Такую «песочницу» можно сделать на базе вашей любимой системы технического анализа (я не помогу, если думаете, что это намёк). Вы можете продолжать пользоваться бэктестом, это может помочь найти прибыльные торговые системы. Но тестировать их нужно ВИРТУАЛЬНО, прежде, чем выпускать на реальный рынок. Уважаемые коллеги трейдеры, этот совет много стоит (реальных Ваших съэкономленных рублей). Я перестал сливать и ищу прибыльные торговые системы бесплатно, хотя ранее успел слить до 70т.р.
Что касается опционов, всё сложнее, если речь идёт о конструкциях. Пока просто прикидываю на основе реальных сделок.
Ещё, понятное дело, можно тестировать бесконечное количество систем одновременно, т.к. ГО на виртуале бесконечное. )
Вместо «виртуальной торговли» лучше запустить минимально возможный сайз, больше ясности принесёт
А вот ваш бектестер по тикам — это лютая пять. Если 99% — то это прямо круто.
Если опишите основную архитектуру — то плюс в карму :)
shprots, ну так я это и имел в виду, что бэктестер у автора фиговый. Я и сам когда-то тестил во всяких метастоках и вэлзлабах.
А тестер по тикам — это суровая необходимость, легче разобраться откуда разница между тестом и реалом.
Архитектуры особо нет, есть терминалы, которые выдают маркетдату роботам и сохраняют её в файлы. Есть роботы, которые берут маркетдату у терминалов и торгуют опять же через эти терминалы.
И есть тестер, который берёт данные из файлов и тестит по ним. Для тестера собран сервачёк на двух процах — 24 физических ядра. Тестер умеет по списку инструментов тестить стратегию, потому как у меня есть убеждение что если грааль нормальный, то он работает на многих инструментах. За пару суток тестер может всю русфонду прогнать по исследуемой стратегии, вполне приемлемо, я считаю.
По граалю… Ну в целом да, основные стратегии работают на большинстве инструментах. Есть нюансы всегда, и часто эти нюансы приносят основные деньги.
GoodBargains, есть системы и с оптимизацией, есть вообще без параметров. Больше двух параметров не использую, обычно один параметр.
Таймфрейм тоже по-разному, есть системы, которые вообще без всяких ТФ. Секундных нету, там ХФТшники сидят. Знаю парочку хфтшников, серьёзные ребята, в секундном таймфрейме мне делать нечего.
Количество сделок сильно зависит от ситуации на рынке, специально не считаю их, десятки-сотни тысяч, наверное.
Попробуйте использовать в MetaTrader 5 режим «Задержки» в мс, что дает очень близкий к реальности результат со всеми проскальзываниями.
За счет реальной симуляции в тестере задержек, включая моделирование сетевых задержек, вы получаете очень качественную отработку стратегий.
К сожалению, трейдеры в упор не замечают столь мощную функцию, оставляя ее в режиме «без задержек, идеальное исполнение», а потом жалуются на расхождения с реальностью.
Достаточно поставить 50-100 мс задержки, чтобы увидеть как меняется результат вплоть до убытков. Это быстро отрезвляет и дает возможность сделать более робастого робота.
Тестер у MetaTrader 5 постоянно развивается и вот как выглядит выбор вариантов сейчас:
На видное место вынесен раздел «Стресс-тест с задержками», чтобы показать трейдерам правильное направление исследований.
Но теперь о главном. Почему я «экс-фанат». Основные мои идеи и сделки связаны с опционами FORTS. Они были обещаны ещё в 13-м году. Где они?
Ну это же вопрос реалистичности тестирования, если вы контролируете инструментарий, то можете влиять на реалистичность. Доводите реалистичность до хорошего уровня и тестирование становится… реалистичным)).
А так, реальная торговля тоже реальной торговле рознь, в смысле она никогда не повторяется одинаково, всегда какая-то вариативность, так что затестить виртуальной торговлей тоже ничего не гарантирует по сути.
и что делаешь если есть супер система, а потом придумываешь другую супер систему еще лучше? всё равно включаешь обе?
имей среднюю сделку в районе 0.5%
60 * 6.4 * 100 = 38400р. — стоимость контракта BR.
38400 * 0.005 = 192р. — размер среднего трейда 0.5%
1.2*6.4+3.3+1.5=12.48р. — издержки на трейд (срендн.спред+комм.биржи+комм.брокера)
12.48/192*100=6.5% доля издержек при трейдах 0.5%
Поэтому, стараюсь брать больше 1%.
Но появляется другая лотерейка, связанная с переносом позиции.
Следующим шагом будет переход на бОльшие фреймы(это важно) и возврат к бектестингу.
А там может и до сбора портфелей дойдёт.
Альтернатив бектестингу нет.
В нём можно смоделировать поведение вашей системы на сотнях инструментов за десятки лет.
Смоделировать и отбросить за несостоятельностью.
В виртуальном тестировании вам придётся прожить эти годы, чтобы понять, что стратегия не работает.
Одной жизни точно не хватит.
Короче без вариантов.
Далее каждая сделка тестера добавяется в поток вывода ежесекундных данных и отправляется в эксель для разглядывания на графике. Дает возможность наложить на график цены инструмента свои параметры и поразглядывать на адекватность и удачность.
Сколько я этим тестером стратегий на свалку выбросил — не пересчитать.
Результатам тестера верю. Он даже немного занижает результат.
Боюсь представить если бы мне пришлось устраивать виртуальное тестирование для каждой из них...
Самое смешное, что на написание такого тестера с ноля уйдет не очень много времени. Может быть часа 4, если еще и на кофе отвлекаться. Ну ок, еще на макрсосы в экселе минут 30. И при этом колоссальное доверие результатам.
Какие-то грубые предрасчеты тоже могут быть на MS SQL переложены. А там дальше целый колхоз у меня. Так как сам ни разу не профессиональный разработчик даже близко, делаю на чем умею )
Напомнило старый анекдот:
" После десяти лет напряженных исследований чукотские микробиологи сделали удивительное открытие: если покрутить колесико микроскопа-становится видно намного лучше!!!!".
По теме топика даже и сказать нечего, автор вроде понимает, что реальный рынок будет активно противодействовать его стратегиям, но почему-то предпочитает прятать голову в песок «виртуальных сделок».
А вообще, история не обязана повторяться.
А так, при тесте чем меньше сделок, тем лучше. Т.е. если есть система которая показывает 100% за год и при этом делает 1000 сделок и есть скажем, которая делает 70%, но при 500 сделках. Я выберу вторую. Это не принимая во внимание другие показатели.
Ну а в целом, я запомнил старое изречение одного из гуру алго (не помню кто это точно, может даже АГ), что все показатели теста надо ухудшить в 2 раза и тогда это то, что можно ожидать в реале)