Блог им. LevNNN
Всем добрый вечер!
В последнее время на форуме было опубликовано несколько статей по поводу тестирования алгоритмических стратегий, приблизительно следующего содержания — «На тестах все хорошо и алгоритм дает прибыль +100%, в реальной жизни все плохо — и алгоритм дает убытки -100%».В этом посте я попытаюсь вставить свои «пять копеек», почему так случается. С торговлей на бирже знаком с 1994 года. Не скажу, что весь этот опыт был удачный, скорее совсем наоборот и поэтому с 2016 года занимаюсь разработкой алгоритмических стратегий, ну или по простому — пишу торговый собственный робот. В реальных торгах участвую, но только с помощью собственного робота. Разработка роботов — это не бизнес, а скорее хобби, пишу для себя. Торгую на ММВБ через Quik. Робот написан на C#, для тестирования использовал данные с сайтов finam и pitrading (покупал).
Так как я сам разработчик кода, то мне легко внести небольшие коррекции в свой же алгоритм и провести небольшой эксперимент. Я взял исторические минутные данные (OHLC) по трем инструментам — Apple, AUD/USD и XAUG/ USD за последние 4 года и рассмотрел три варианта заключения сделок при тестировании:
Вариант Average. Мы заключаем сделки ( продажа или покупка) по средней цене — (Open + High + Low + Close) / 4;
Вариант Best. Мы покупаем всегда по Low, а продаем по High.
Вариант Worst. Мы покупаем всегда по High, а продаем по Low.
Интуитивно понятно, что вариант Best должен дать самую хорошую доходность, а вариант Worst — худшую. Так и получилось. Результаты тестирования я свел в таблицу и получилось следующее :
Apple Average Best Worst Market
2017 28.03 38.7 16.62 46.32
2018 5.79 43.29 -33.52 -7.26
2019 61.32 97.87 23.63 85.87
2020 84.07 174.05 -7.23 70.68
AUD/USD Average Best Worst Market
2017 3.5 8.65 -2.08 7.98
2018 3.2 5.61 -3.68 -9.68
2019 12.84 16.24 10.69 -0.37
2020 29.34 47.56 8.71 9.86
XUG/USD Average Best Worst Market
2017 4.07 30.22 -10.2 6.36
2018 0.87 8.63 -8.2 -5.31
2019 8.64 27.5 -7.94 15.18
2020 85.25 252.56 -99.21 48.28
В таблице отражены доходности в процентах, положительно значение соответствует прибыли, отрицательное — убыткам. Для справки я также привел как изменялся рынок ( колонка Market) за отчетный год. При тестирование предполагалось, что Вы отдадите комиссию в размере 0.05% брокеру с каждой сделки.
Результаты в принципе получились ожидаемые. Алгоритм Best всегда лучше Average, и соответственно Worst хуже всех. Понятно, что в реальной жизни Вам никогда не удастся заключать сделки по алгоритму Best. Но я думаю, что Вы не настолько неудачны, чтобы заключать сделки по худшей цене, как в алгоритме Worst. При алгоритме Worst лучше всего ведет себя австралийский доллар — в целом алгоритм остается прибыльным даже при самом худшем сценарии, на серебре при алгоритме Worst Вы разоритесь, а на Best озолотитесь.
Из всего вышесказанного напрашивается простой вывод — манипулировать с ценами при тестировании своих стратегий нельзя, если Вы не хотите получить отрицательный результат в реальной жизни. Важны мельчайшие подробности. Прежде чем начинать торговлю, прогоните свои алгоритмы на исторических данных и они должны давать стабильно положительный результат как минимум за 5 лет без какой либо подгонки параметров.
Всем удачи в торгах!
я все тестирую только так, если при самом худшем раскладе ТС плюсует, значит плюс будет по любому, т.к. даже хронический неудачник не способен всегда покупать по максимальной цене и продавать по минимальной.
что есть такое
но у тя баг в логике
в реальных торгах тыж не знаешь хай, лоу, клос свечи на которой выставляешь заявку
единственое что ты знаешь это опен — если бот считает по открытиям свечек
т.е ты как бы подглядываешь в будущее
заявки тестишь по цене опен
а затем считаешь к=количество свечей без теней/общее количество свечей
число проблемных сделок= всего сделок*k
ухудшение результата тестов= число проблемных сделок* средний размер свечи
и это как раз и будет худший случай т.к даже если свеча без тени то тебе могут исполнить ордер
но это тоже сложно… обычно уже торгуешь ботом хотяб пол года и видишь что как исполняется просто сравнивая расчетную и реальную эквити и просто считаешь проскальзывание
При тестирование на истории я проверяю - попадет моя цена в интервал OHLC или нет. А если попадает, то я должен выбрать по какой цене я совершаю сделку. Как то так, если очень кратко.
И в этом посте я просто показал, как будет зависеть результативность алгоритма от выбора цены внутри свечи OHLC.
Впечатление, что это ни о чём — по той причине, что способов применения средней цены миллионы, а вы базируетесь на каком-то одном собственном представлении этой темы.
И впечатление, что о других способах вы даже не подозреваете.
В этом ваша главная беда, вам бы поучиться трейдингу…
с вашим огромным опытом (на год больше моего).
Хотя бы Элдера почитайте, «киношки» его посмотрите.
Я ставлю своей задачей — создать торгового робота, который будет давать стабильный плюс и ищу закономерности на этом рынке.
Еще и инфантильный страх конструктивной критики — это говорит о том, что вам здесь писать разве что ради того, чтобы кто-то посоветовал что-нибудь по коду. В других смыслах вам посты здесь на пользу не пойдут. По крайней мере от меня вы критики больше не увидите. Читайте тех «невби», которые будут вас хвалить.
«Ставлю задачу создать робота» — красиво сказано, но забыто, что для этого желательно сначала понять что такое трейдинг.
Вы уж извините, но у вас этого понятия еще нет.
Вы не трейдингом 15 лет занимались, вы просто с ним знакомы 15 лет — это две большие и принципиальные разницы.
Пишу не в обиду, а как доктор.
На доктора ведь не обижаются за диагноз? Впрочем… всяко бывает.
Наверное было бы интересно и продуктивно, подумать о том, как создать что — то принципиально новое и это пообсуждать?!
P.S. Да Вы, правы я не торгую руками, можете не называть меня трей
дером. За меня торгует робот, который я сам разработал.
Сегодня был удачный день и оба инструмента, которыми я торговал сегодня - сработали в плюс 145 тыс. р. на дневной и 57 тыс р. на вечерней. Могу привести доказательства!)
Сделки считают по цене принятия решения.
Ваши усреднения опасны, могут вводить в заблуждение. А уж тем более — расчет по самой благоприятной цене.
Никого не хотел вводить в заблуждение. поэтому сразу скажу, что рассчитывать надо на самый худший вариант — Worst. Если он дает стабильный минус, то вступать в «бой» не надо. У меня есть алгоритмы, которые дает стабильный плюс даже при алгоритме Worst, но об этом я расскажу чуть позже.