Блог им. PavelPK

В 2014 году четыре математика написали статью с прекрасным названием «Псевдоматематика и финансовое шарлатанство». Посчитали они там неприятную вещь. Если у вас пять лет истории и вы перепробовали всего 45 вариантов стратегии, бэктест с Sharpe 1 найдётся почти гарантированно. А ждать от неё на живых деньгах стоит ноль.
Я для своего торгового бота перебрал больше 6 500 комбинаций одной только трендовой стратегии))
Сам бот на бэктесте выглядит как мечта. Sharpe 1,93, около 19% годовых, просадка всего -4,4%. Причём это 18 месяцев вне выборки, на данных, которых модель не видела. В июне я выпустил его на живые деньги. Счёт под него небольшой, специально. Это эксперимент, пенсию я так копить не собираюсь.
Начинал он со всего сразу. Сигналы внутри дня и на часовках, поверх модель, которая решала, верить сигналу или нет, и отдельный взгляд на режим рынка: тренд, флэт или паника. Рядом тренды на дневках. Стопы, дневной лимит убытка, выход перед дивотсечкой. А код почти целиком пишут ИИ-агенты. Я ставлю задачи, читаю, что они натворили, иногда ругаюсь. Как с живой командой, только без обеда и больничных)
Тот самый перебор отрезвил меня первым, ещё до денег. На 5-минутках и 30-минутках рабочих комбинаций оказалось ноль. Не мало, а ноль. На дневках 420. Внутри дня всё съедает пила, я это и раньше знал, но когда видишь ноль из тысяч, доходит по-другому. Парный трейдинг в лоб тоже не взлетел: на истории МосБиржи наивная схема дала Sharpe -3. Минус три, Карл)
Дальше начались живые деньги, и сначала всё было прекрасно. За лето бот сделал около +10% к счёту. Я уже начал себе нравиться) Индекс тогда три месяца подряд падал, и примерно три четверти плюса дали шорты, в основном в июне и июле.
В сентябре рынок развернулся, индекс прибавил около 5%, и то, что кормило, кормить перестало. С конца августа пять минусовых недель подряд. Доля прибыльных сделок упала с 48% до 25%, а сделки короче суток угадывали вообще в 18% случаев. К 6 октября летний плюс сгорел целиком, и с июня бот был примерно на -5,6%.
Первым делом я, конечно, грешил на комиссии. Пересчитал. Ошибся. Комиссии там фоном, основной минус дали сами сделки. Бэктест про такое не предупреждает, он видел только тот рынок, который уже был.
Октябрь закрываю примерно в +3%. Радоваться рано. Почти весь плюс пришёл одним вечером 30-го, вариационкой по фьючерсам, а до этого месяц стоял около нуля. 86 закрытых сделок в сумме дали примерно ноль. Так что с июня бот в сумме пока ниже нуля, хотя лето было в плюсе. Вверх, вниз и чуть-чуть обратно.
Похвастаться при этом есть чем. VK бот купил 16 октября по 134,2, на пятничном закрытии позиция около +22%, и стоп уже выше входа. Даже если выбьет, сделка останется в плюсе. Шорт фьючерса на индекс волатильности дал +9,4%, Озон +3,8%. А шорт РусГидро с 15-го сейчас около -9%. Стоп стоит, руками не трогаю.
С РусГидро вообще смешно вышло. Из неё в стратегиях автоследования я вышел на ребалансе 28-го, а бот шортит её с 15-го. Он живёт отдельно от моих стратегий, на одну бумагу мы смотрим по-разному, и я ему не мешаю)
А вот интрадей себя не оправдал. Мечел на часовках в октябре дал 5 убыточных сделок из 5, Газпром на 15-минутках 1 прибыльную из 6. Перебор ведь предупреждал, но живые деньги объясняют доходчивее. Так что с конца октября бот на вход торгует одну дневную трендовую книгу на фьючерсах плюс немного парных сделок. Интрадей, старые тренды и часовки с моделью сняты со входа, старые позиции доживают до закрытия. Тот же VK как раз из таких.
Бэктест, кстати, до сих пор обещает 19% годовых. Только теперь я знаю, где он врёт лично мне.
А вы своих ботов к живым деньгам пускаете? Или после таких историй ни за что?)
#алготрейдинг #трейдинг #бэктест
Моя история содержит один такой момент, когда перед повышением комиссий биржи и брокера бот отработал за 5 месяцев очень приличную доходность, которую я скормил в виде комиссий в течение 1 месяца после повышения.
Пришлось перерабатывать стратегии. Сегодня комиссии в среднем составляют не более 30% прибыли.
На это есть эффективные решения.
Но, повторяю, это несложная задача.
Например, SL сработал в момент, когда была длинная (короткая) позиция. Значит, бот не должен выдавать следом за SL ордер на покупку (продажу). Нужно либо ввести флаг исполнения SL с признаком предыдущей позиции либо отслеживать направление позиции при последующей после SL работе бота.