Блог им. IgorK_23a
Продолжаю тестировать описанный тут алгоритм, основанный на парном трейдинге: smart-lab.ru/blog/1176485.php
Собрал сделки на всех парах в одну кривую — получил вот такой красивый результат на out-of-sample данных.

Что ещё нужно сделать:
— Попытаться придумать критерий, чтобы еще на этапе тестирования отсеивать плохие пары.
— Проработать stop-loss'ы (и в целом продумать risk management). Пока единственное условие выхода — это боллингер.
Что НЕ работало:
— Алгоритмы из книжек и интернета в лоб, без своих идей.
— Метод наименьших квадратов (OLS) для вычисления коэффициентов регрессии. Коэффиценты получаются очень нестабильными, нужна какая-то регуляризация.
— Минутные данные. Издержки/спред/проскальзывания съедают прибыль.
Что заработало:
— Фильтр Калмана вместо OLS.
— Оптимизация параметров в фильтре Калмана не через прибыль, а через статистические свойства спреда.
— В статистических оценках — использование robust подходов, например https://medium.com/@aakash013/outlier-detection-treatment-z-score-iqr-and-robust-methods-398c99450ff3
— Дневные данные*.
* Дневные данные естественным образом гораздо менее чувствительны к издержкам и проскальзываниям, чем минутные, по таким простым соображениям. Допустим, CAGR на тесте показывает 30%. Количество сделок в год с дневными данными 70 или меньше. Тогда среднее P&L с каждой сделки 0.4%. Проскальзывания и спред обычно в районе 0.05%-0.1% со сделки — это в разы меньше среднего P&L и не меняет качественным образом поведение эквити.
Думаю, скоро смогу вынести алгоритм в реал. У меня пока нет живого опыта в алготрейдинге (за исключением наивной попытки на крипте год назад, когда я ничего не знал про подходы, без тестирования вынес в реал первый пришедший в голову алгоритм, основанный на моменте, и за пару дней продул 50% капитала); поэтому благодарен за любые комментарии и мнения.
Replikant_mih, мне кажется, что эти идеи давно известны и разработаны вдоль и поперек крупными участниками, и вместе с тем достаточно техничны для индивидуальных трейдеров, чтобы не нарушить имеющийся арбитраж (если он там вообще есть — это покажет практика).
А для меня сразу две пользы:
— Рассказывая для коммьюнити, упорядочиваю собственные мысли
— Бывают полезные комментарии.
Было бы также интересно пообщаться с теми, кто занимается чем-то похожим в области арбитража; но мне кажется, на форуме в основном обсуждаются трендовые и моментум-стратегии.
Честно говоря, арбитраж небесспорное усложнение торговли.
Сегодня корреляция, завтра куча причин учинить абсолютную раскоррелляцию. Спорить не буду, просто ИМХО — алгоритм должен работать на одном инструменте хотя бы потому, что в уравнении будет как минимум на одну переменную меньше (из двух!)
Попробуйте прогнать оптимизацию своих идей с заведомо космическими для м1 целями — скорей всего увидите ЗОНЫ РАЗНЫХ ТП, дающих интересные результаты.
Условно говоря, станут видны зоны в районе фиборасширения 62%, 100% и 162%, а может и 200-262%.
Это, вероятно, вам еще предстоит постичь…
Недооцениваете
Да, возможно недооцениваю.
Поскольку сделка будет совершаться раз в день, я планирую выбрать время, когда волатильность минимальна, чтобы снизить проскальзывание. Интуитивно, это обед, около 12:00. Однозначно не открытие сессии. Можно провести мини-исследование, чтобы определить время минимальной волатильности.
Думаете, в этом есть смысл?
то наверняка изменятся и все параметры системы, в том числе и величина средней сделки. То есть, все это надо тестировать с реальным временем совершения сделок. А использование внутридневных данных значительно усложнит тестирование, если это вообще будет возможно.
Федор Подпольный, спасибо, да, я думал об этом. Интуитивно кажется, что изменение времени не должно сильно перекосить картину, но это опасно без тестирования, да. Сейчас я беру время открытия.
Тогда, возможно, лучше брать время закрытия, к концу сессии обычно волатильность меньше. Хотя там и объемы меньше, на small-cap могут быть проблемы со спредом/ликвидностью,… не знаю, у меня с этим нет опыта, нужно погонять вживую.
IgorK,
Еще как должно. На глаз скажу, 0.4% средней сделки и торговля по дневкам — несовместимые вещи, это неустойчивый результат. Если переход на минутки превращает все в тыкву, то он правильно превращает. Лучше на бэктесте, чем на депозите.
Стратегии с 0.4% на фьючах бывают (чо уж там, даже 0.05% иногда дает гешефт), но тестировать их надо нормально — с учетом лимитного исполнения и доступного объема, а не «возьмем проскальзывание столько-то».
Выглядит красиво, но я решил написать своё. Мне показалось, что так будет выше КПД. У меня свой бэктестер и трейдинг энджин на C#. Дописываю по необходимости. Никакую визуализацию пока не делал, всё через консоль. Лог кладу в базу, статистику скидываю в файлы — потом визуализирую через Excel и Tableau.
Визуализацию буду добавлять по необходимости, но обязательно через веб (чтобы можно было смотреть за своим роботом с любого девайса).
__rtx,
Да, все верно, галочку эту делали рукожопы. Цена усредняется между прошлой и будущей, на неликвиде получается подглядывание. Если уж чем-то финамовский источник приглянулся, то можно прогонять сверху нормальный пересчет цены на барах с V=0.
Но еще лучше перейти на iss.moex, минутки он отдает бесплатно за любой период, хоть и с задержкой 15 мин.