Блог им. 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т.р.

★27
73 комментария
И систему span тоже не учитываем…
avatar
TihiyDon, а что из нее можно учитывать?
avatar
Андрей К, да ничего. Так как это закрытая система, которая позволяет крупным участникам контролировать биржевые риски.
avatar
TihiyDon, я примерно так и подумал. в эти сказки, про которые рассказывает Активный инвестор, лучше не верить, сбивают с пути
avatar
TihiyDon, что касается фьючерсов, рассчитать ГО не проблема, можно взять прямо из терминала.
Что касается опционов, всё сложнее, если речь идёт о конструкциях. Пока просто прикидываю на основе реальных сделок.
Ещё, понятное дело, можно тестировать бесконечное количество систем одновременно, т.к. ГО на виртуале бесконечное. )
У меня самодельный тестер, использует тиковые данные и стакан. Может легко учесть проскальзывание, потому как видит встречные цены-объёмы. Да и вообще, на 99% тесты соответствуют реальной торговле.
Вместо «виртуальной торговли» лучше запустить минимально возможный сайз, больше ясности принесёт
avatar
Aleksey Smirnoff, Если не секрет, в каком формате храните стаканы?
avatar
dealgate, в своём формате, бинарный. Хранится разница между снимками и периодически весь снимок, получается относительно компактно. Стакан RIU9 — 443Мб, например. При современных ценах на диски — вообще не заморачиваюсь.
avatar
Aleksey Smirnoff, Надеюсь 443Мб не за один день, меня вот на *.qsh формат потянуло от Qscalp
avatar
dealgate, нет, это за всё время
avatar
Aleksey Smirnoff, автор говорит о тслаб велслаб и тп. По отношению к этим системам автор прав. Там много нюансов, которые надо учитывать.
А вот ваш бектестер по тикам — это лютая пять. Если 99% — то это прямо круто.
Если опишите основную архитектуру — то плюс в карму :)
avatar

shprots, ну так я это и имел в виду, что бэктестер у автора фиговый. Я и сам когда-то тестил во всяких метастоках и вэлзлабах.
А тестер по тикам — это суровая необходимость, легче разобраться откуда разница между тестом и реалом.
Архитектуры особо нет, есть терминалы, которые выдают маркетдату роботам и сохраняют её в файлы. Есть роботы, которые берут маркетдату у терминалов и торгуют опять же через эти терминалы.
И есть тестер, который берёт данные из файлов и тестит по ним. Для тестера собран сервачёк на двух процах — 24 физических ядра. Тестер умеет по списку инструментов тестить стратегию, потому как у меня есть убеждение что если грааль нормальный, то он работает на многих инструментах. За пару суток тестер может всю русфонду прогнать по исследуемой стратегии, вполне приемлемо, я считаю.

avatar
Aleksey Smirnoff, хороший подход, основательный. 24 ядра не так уж и мало :))
По граалю… Ну в целом да, основные стратегии работают на большинстве инструментах. Есть нюансы всегда, и часто эти нюансы приносят основные деньги.
avatar
shprots, согласен, но я торгую несколько тысяч инструментами и просто физически не могу вникать в каждый нюанс. В моём случае проще получить основные деньги с общего правила, чем с исключений.
avatar
Aleksey Smirnoff, несколько тысяч инструментов, это вы на Западе торгуете?
avatar
iuiu, в том числе и на западе
avatar
Aleksey Smirnoff, а рабочий ТФ секунда у Вас?
avatar
Aleksey Smirnoff, сколько сделок по активу в день примерно по вашим стратегиям?
avatar
Aleksey Smirnoff, а оптимизацию делаете? врядли есть такие системы, которые одинаково хорошо работают на разных активах, кроме ХФТ. 
avatar

GoodBargains, есть системы и с оптимизацией, есть вообще без параметров. Больше двух параметров не использую, обычно один параметр.

Таймфрейм тоже по-разному, есть системы, которые вообще без всяких ТФ. Секундных нету, там ХФТшники сидят. Знаю парочку хфтшников, серьёзные ребята, в секундном таймфрейме мне делать нечего.

Количество сделок сильно зависит от ситуации на рынке, специально не считаю их, десятки-сотни тысяч, наверное.

avatar
Aleksey Smirnoff, десятки-сотни тысяч по одному активу в день? И какой же это рабочий ТФ, если не секундный?)
avatar
GoodBargains, не по одному инструменту столько сделок, а по всем инструментам
avatar
Aleksey Smirnoff, а средняя сделка сколько у вас выходит по нефти, например? 
avatar
GoodBargains, не знаю, не считал. Думается мне, что сильно по-разному и среднее ни о чём не скажет. Пока по-пути, то держит позу, а нефть вон как летает порой, потом сменяется долгим штилем. Сильно разный рынок чтобы считать средние. 
avatar
Aleksey Smirnoff, на тестере то по истории какие могут быть проблемы с подсчетом, не пойму? все данные для расчета имеются
avatar
GoodBargains, да никаких проблем с подсчётом нету, просто мне не нужна эта цифра, вот её и не считаю
avatar
Aleksey Smirnoff, круто, что сказать. Это следующий этап одержимости рынком. Я, пока на предыдущем шаге. )
Михаил Понамаренко, не, никакой одержимости. Чисто технические задачки, мне такие нравятся.
avatar
ну наконец то омерику открыл 
avatar

Попробуйте использовать в MetaTrader 5 режим «Задержки» в мс, что дает очень близкий к реальности результат со всеми проскальзываниями.



За счет реальной симуляции в тестере задержек, включая моделирование сетевых задержек, вы получаете очень качественную отработку стратегий.

К сожалению, трейдеры в упор не замечают столь мощную функцию, оставляя ее в режиме «без задержек, идеальное исполнение», а потом жалуются на расхождения с реальностью.

Достаточно поставить 50-100 мс задержки, чтобы увидеть как меняется результат вплоть до убытков. Это быстро отрезвляет и дает возможность сделать более робастого робота.

Тестер у MetaTrader 5 постоянно развивается и вот как выглядит выбор вариантов сейчас:

На видное место вынесен раздел «Стресс-тест с задержками», чтобы показать трейдерам правильное направление исследований.

avatar
MetaQuotes Software, я экс-фанат вашего терминала. Когда в 2006-м году установил впервые QUIK — сильно расстроился, т.к. понял, что альтернатив торговли для автоматизации «на коленке» для ММВБ и FORTS нет. QUIK был очень убог. Все наработки остались в MetaTrader 4. Тогда я придумал соединить дубликатором сделок QUIK и MetaTrader 4. Вешаешь советник в MetaTrader 4, а сделки дублируются в QUIK. Лепота. Потом ещё придумал дублировать графики из QUIK в MetaTrader 4...
Но теперь о главном. Почему я «экс-фанат». Основные мои идеи и сделки связаны с опционами FORTS. Они были обещаны ещё в 13-м году. Где они?
Мои ТС проходят много инстанций — от бектеста до реальной торговой среды на реальных счетах. Вцелом норм, но хотелось бы лучше… на реале все равно случаются нештантные ситуации, которые ни на демо ни на бектесте не удастся повторить
avatar

Ну это же вопрос реалистичности тестирования, если вы контролируете инструментарий, то можете влиять на реалистичность. Доводите реалистичность до хорошего уровня и тестирование становится… реалистичным)).

 

А так, реальная торговля тоже реальной торговле рознь, в смысле она никогда не повторяется одинаково, всегда какая-то вариативность, так что затестить виртуальной торговлей тоже ничего не гарантирует по сути.

avatar
Replikant_mih, согласен, но есть одна неэффективность на рынке — тренды. Она вечна.
получилось насобирать неубиваемых систем?
и что делаешь если есть супер система, а потом придумываешь другую супер систему еще лучше? всё равно включаешь обе?
avatar
ПBМ, насобирать неубиваемых систем не удалось. Виртуальный рынок убивает. Но я делаю результаты немного хуже, чем на реальном рынке. Например, всегда вхожу по рынку, а в половине случаев можно входить в сделку по центру спреда или впереди встречной котировки. А так, почему бы не включать все системы одновременно, главное, чтобы небыло очень высокой корреляции. Конечно, в идеале иметь обратно коррелируемые системы. Но, если речь идёт о трендах, обратную корреляцию эквити принесут контртренды, а с этим у меня туго.
торгуй ликвид
имей среднюю сделку в районе 0.5%


avatar
ves2010, у меня, стабильности ради, издержки не более 2.7% от трейда. Это  процент казино. Если издержки больше, нивелируется трендовая неэффективность.
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%.
Но появляется другая лотерейка, связанная с переносом позиции.
Михаил Понамаренко, прочти спецификацию контракта… он пересчитывается в рубли 2 раза в день… посмотри курс пересчета… там проепывается овердокуя денег т.к курс отстает
avatar
А у моих алго вообще нет таких проблем, и спред и всё остальное по барабану. Потому что вход и выход только лимитками. Исключение — стоп по рынку. Но стопы  — редкая птица. И если он 1-1,5 дневного ATR, то и на проскальзывание можно забить, если не фигачить откровенно большой объём. В среднем внутри дня очень легко пропихнуть средний объём за 5 минут. Ну прокатят HFT на стопе в одной из десяти сделок с 1 до 1,05 первоначального размера. Тесты совпадают с реальностью где-то тоже на 96%. Просто потому что не знаешь сколько нальют в прибыльную заявку, а вот убыточная будет исполнена на 100%  — гарантированно.
avatar
Antishort, была у меня история. Торговал GZ в 2012м году. Система трендовая. Пилила 2 месяца. Устал я входить по рынку. Решил съэкономить и ставил заявку внутри спреда. Пока пилило все сделки были моими. Когда, чудо свершилось и появился тренд вверх, моя лимитка скромно осталась внизу. (

Следующим шагом будет переход на бОльшие фреймы(это важно) и возврат к бектестингу.

А там может и до сбора портфелей дойдёт.

 

Альтернатив бектестингу нет.

В нём можно смоделировать поведение вашей системы на сотнях инструментов за десятки лет.

Смоделировать и отбросить за несостоятельностью.

В виртуальном тестировании вам придётся прожить эти годы, чтобы понять, что стратегия не работает.

Одной жизни точно не хватит.

Короче без вариантов.

Тарас Громницкий, «Смоделировать и отбросить за несостоятельностью.» Так оно и есть. )
 Тest на демо в 90% такие же как на реале .

avatar
Андрей Керш, если всё так, хорошая система, поздравляю. Увы, умирают все сверхдоходные системы. Скорее всего, пора отключать и снимать деньги.
Михаил Понамаренко, согласен  что нет такой  стратегии  каторая не слила .  10- 15 зделок подряд в плюс на 1 стоп лос. Потратил 2 года  что бы это зделать . 
avatar
Проверил свой самописный тестер. Около 500 строк кода. Уникальных под стратегию от силы 150. Какая бы стратегия ни была, тестируется на тиках. Время старта и клиринга — в параметрах (чтобы не торговать например до 10:15). Так же в вариативных парамметрах проскальзывания по времени и  тип ордера — market или limit. В итоговых результатх — учет комиссии биржи и максимальной комиссии брокера. Если используются market, то еще добавляется шаг цены с минусом на количество сделок на ликвидных инструментах.
Далее каждая сделка тестера добавяется в поток вывода ежесекундных данных и отправляется в эксель для разглядывания на графике. Дает возможность наложить на график цены инструмента свои параметры и поразглядывать на адекватность и удачность.
Сколько я этим тестером стратегий на свалку выбросил — не пересчитать.
Результатам тестера верю. Он даже немного занижает результат.
Боюсь представить если бы мне пришлось устраивать виртуальное тестирование для каждой из них...
Самое смешное, что на написание такого тестера с ноля уйдет не очень много времени. Может быть часа 4, если еще и на кофе отвлекаться. Ну ок, еще на макрсосы в экселе минут 30. И при этом колоссальное доверие результатам.
avatar
Eduard, енто на каком языке?
avatar
iuiu, тестер на C#. Данные тиковые и по стаканам берет из MS SQL.
Какие-то грубые предрасчеты тоже могут быть на MS SQL переложены. А там дальше целый колхоз у меня. Так как сам ни разу не профессиональный разработчик даже близко, делаю на чем умею )
avatar
Eduard, надо тоже погуглить sql…
avatar
Eduard, «Если используются market, то еще добавляется шаг цены с минусом на количество сделок на ликвидных инструментах.» Это и есть спред. Я беру 1.2 шага.
Михаил Понамаренко, у меня в зависимости от стратегии. Недавно двух роботов запускал, они по Si и Ri тестировались на спреде. В реальной торговле по факту половина спреда получилась на сделку, так как входы у обоих в спокойное время. То есть для теста лучше создать условия хуже и если бэктест показал положительный результат, можно расчитывать на результат не хуже в реальной торговле. Но нужно понимать особенности стратегий.
avatar
70 т р это осень мало, надо от миллиона тогда можно и поверить в прибыльные системные тс
avatar
Атласов Михаил, не, хватит уже сливать. Надоело. )
Тестировать нужно по ордерлогу а не на минутках -)) и все будет хорошо.
кстати можно проще… смотришь в стакане сколько денег стоит обычно в спреде… вот эту сумму и торгуешь... 

avatar
ves2010, кому как, некоторым и смотреть не нужно. Есть цена, значит суммы хватит. )
Это ты еще америку не тестировал:) там вообще свечкам верить нельзя, а тики оч сильно фильтровать надо
avatar
будущее неизвестно, поэтому эффективность бэктеста всегда была под вопросом
avatar
Почти 7 лет (из 14-ти) не пользуюсь бектестингом. Семь лет назад, я полтора года тестировал системы в бектесте и на реальном рынке одновременно. Результаты оказались неожиданными.

Напомнило старый анекдот:
" После десяти лет напряженных исследований чукотские микробиологи сделали удивительное открытие: если покрутить колесико микроскопа-становится видно намного лучше!!!!".

По теме топика даже и сказать нечего, автор вроде понимает, что реальный рынок будет активно противодействовать его стратегиям, но почему-то предпочитает прятать голову в песок «виртуальных сделок».
Дмитрий Овчинников, параллельно сверял результаты реала и виртуала. Результаты одинаковые. Даже сделки ТП лучше виртуала, т.к. виртуал их по рынку бьёт. А зачем сливать деньги, если можно не сливать?
Если средняя сделка 0,01+- на тестере ТС Лаб и проскальзование не учтено, то, конечно, работать не будет.  стратегия должна быть рабочей, а не сплошной подгон параметров под график слева
avatar
В общем, подытожу. Я писал о резких движняках на рынке, когда вообще войти нереально, если ты не HFT (а если HFT, то ты не один). Поэтому, виртуал выигрывает у всяких тиков, ордер логов и пр. Правильное решение предложили MetaQuotes Software с задержкой, что может приблизить к реальности, но всё равно, проигрывает виртуалу, где условия наиболее похожи на реальные. Ведь те же задержки сервера не постоянны. В момент сильных движений они растут и заложить это всё в самопальный бектестер нереально.
А вообще, история не обязана повторяться.
ПBМ, как ни странно, самые простые трендовый системы с параметрами «на глаз», хоть даже на скользящих средних, оказались более устойчивы. Но периоды запилов и невысокие проценты доходности не радуют. А вообще, на чисто линейных инструментах идей нет. Они не интересны мне уже. Линейный инструмент + нелинейные (опционы) — в этом есть теоретический грааль. Но рыночные котировки не дают заработать.
ПBМ, а вообще, на фин. рынке ты обошёл кучу граблей, то это, скорее всего, значит, что наткнёшься на другие. 



Для новичка это новость.
А так, при тесте чем меньше сделок, тем лучше. Т.е. если есть система которая показывает 100% за год и при этом делает 1000 сделок и есть скажем, которая делает 70%, но при 500 сделках. Я выберу вторую. Это не принимая во внимание другие показатели.
Ну а в целом, я запомнил старое изречение одного из гуру алго (не помню кто это точно, может даже АГ), что все показатели теста надо ухудшить в 2 раза  и тогда это то, что можно ожидать в реале)
avatar
Денис Михайлов, почему? Чем меньше сделок, тем больше непонятно, что будет ли вообще устойчиво работать.
avatar
Есть верный способ заработка на роботах — это продажа роботов :)
avatar
Dmitryy, нее… надо продавать роботов которые пишут роботов
avatar
ves2010, да, причем там нормальный арбитраж, у нас роботы в среднем за 20 в час пишут, а на мировом рынке 35-50 платят :)
avatar

теги блога Михаил Понамаренко

....все тэги



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