Избранное трейдера Rox
Время после нового года решил провести с пользой и окунуться в машинное обучение. Заняться Machine Learning — и посмотреть получится что‑то или нет с российским рынком акций на Московской бирже.
Моей целью было построить такую систему, которая будет учиться на истории и в перспективе торговать лучше чем случайное блуждание 50/50. Но из‑за комиссий и спреда подобные блуждания изначально отрицательны — чтобы выйти в плюс надо как минимум покрывать комиссии.

Если говорить о результатах очень кратко, то технически всё работает, но вот финансовый результат на грани безубыточности.
Если Вы только интересуетесь этой темой Вы можете посмотреть какие‑то шаги в моей статье, а если Вы уже опытный разработчик подобных систем, то можете подсказать что‑нибудь в комментариях.
Причём вся эта работа выглядит совершенно не так как показывается в фильмах про уолл‑стрит: фактически это написание скриптов и монотонный запуск и всё происходит полностью локально на компьютере.
Я уже больше 10 лет торгую на бирже, в том числе 8 лет опционами. За это время я перепробовал все виды трейдинга от скальпинга до дивидендного инвестирования, все виды опционных стратегий от голой покупки до продажи волатильности. В итоге для большей части своего портфеля я выбрал стратегию продажи покрытых опционов.
В чем суть стратегии? Как ее применять?
Шаг 1
Выбор и покупка качественного актива.
Ваша задача выбрать высококачественный актив, который вы хотите купить прямо сейчас. Вас устраивает текущая цена и фундаментальные показатели.
Например, вы покупаете ETF на биткоин — IBIT, по цене 65 ($6500).
Шаг 2
Выбор и продажа опциона.
В зависимости от вашей вовлеченности в рынок вы можете выбрать колл-опционы со сроком экспирации от недели до года. Цена страйк опциона обычно выбирается чуть выше текущей цены актива. А если вы сильно верите в рост актива, то значительно выше текущей цены. Но лучше не заниматься прогнозами, а всегда выбирать центральный страйк, то есть наиболее близкий к текущей цене.

Продолжаю тестировать описанный тут алгоритм, основанный на парном трейдинге: 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
Решил, что мой опыт разработки очень сложного алго может послужить уроком для многих, кто подумывает о чём‑то подобном 😀 Хочу предостеречь всех, кого привлекает принцип «чем сложнее, тем лучше», о котором я ещё напишу в следующих постах. Сразу оговорюсь, что сложность не ради сложности, будто фетиш какой‑то, а как неизбежное следствие попытки описать всё устройство механики рынка. В этом есть много преимуществ, но этот пост о недостатках...
Начну с оценки времязатрат. Когда я поставил на паузу трейдинг и ушёл в кодинг, я искренне был убеждён, что за полгода смогу запрограммировать всё что угодно))) Прошло уже 5 лет...
Как так может получиться? Очень просто.
Первый просчёт в том, что когда я закодил всё, что планировал, я понял, что этого недостаточно, т. к. в процессе разработки и ресёчей у меня много на что открылись глаза. ТЗ стало формироваться и увеличиваться по мере разработки.


