bascomo
bascomo личный блог
16 августа 2023, 12:45

Как я создаю торговые стратегии

Как я уж писал ранее, руками я торгую по одному лоту, в качестве экспериментов и развлечений, а основную ставку я сделал на алготрейдинг. Но, как и для ручной торговли, для алготрейдинга тоже нужно придумывать стратегии. Поскольку разработкой кода я занимаюсь с 1998 года, то путь, который я должен был выбрать, был для меня очевидным.

Если стратегия формализуема, то она может быть алгоритмизирована и запрограммирована. Если стратегию формализовать невозможно — то это не стратегия, а шлак, чушь и фейк и фантазии автора.

Отсюда следует, что если стратегию можно формализовать, то, значит, её можно свести к простому набору правил, что и есть формализация или описание требований. И если торговая система — это просто комбинация правил, определяющих точку входа и точку выхода, то всё, что нужно для автоматического создания стратегий — генерировать эти правила автоматически и проверять их комбинации на профпригодность. О процессе создания правил я подробно писал тут: Как я рассчитываю и использую сигналы ТА в торговле (smart-lab.ru)

Поскольку правил довольно много и их комбинации весьма вариабельны, и комплексы правил распадаются на две группы — вход и выход, то существует огромное количество потенциальных стратегий. Проблема тут в том, что методом перебора эту задачу решить невозможно. Поэтому на помощь я призвал генетический алгоритм — представитель семейства алгоритмов оптимизации. Вообще говоря, существует довольно большое множество алгоритмов из этого семейства. Выбирай любой на вкус и цвет, как говорится. Всё это, так или иначе — методы оптимизации или, другими словами, поиска локальных или глобальных минимумов.

Как я создаю торговые стратегии

Алгоритм относится к стохастическим, то есть, тем же, что и Монте-Карло. При этом, Монте-Карло все любят и восхищаются, а к генетике относятся подозрительно. Это забавно.

Итак, что я делаю — всё соответствует описанию классического алгоритма, как изложено здесь:

Как я создаю торговые стратегии

  1. Инициализирую нулевое поколение (и в связи с моей спецификой делаю это до 4 поколения)
  2. Проживаю жизни ботов — тестирую полученные стратегии на истории
  3. Сохраняю успешные алгоритмы-стратегии
  4. Ранжирую получившийся список от лучших к худшим по прибыли
  5. Исключаю неудачные
  6. Скрещиваю лучшие между собой с целью выведения следующего поколения стратегий
  7. И слегка мутирую их параметры
Технически, это довольно простая вещь.
На первой фазе инициализации я проверяю порядка 100к алгоритмов.
После каждого поколения оставляю только 5к лучших.
К ним добавляю 5к новорожденных и снова их считаю, ранжирую и т.п.
Весь цикл повторяется 15 раз.

Нюанс тут заключается вот в чём. Те стратегии, которые показали себя как успешные на этапе обучения, должны быть проверены на незнакомых данных и показать на них хороший результат. Это основное отличие от классического генетического алгоритма, который полученные данные на тестовых периодах не проверяет.

Как я создаю торговые стратегии

Главное в этом куске кода: если на выборке для обучения стратегия показала профит, то проверяем её на незнакомых данных. Соответственно, вся сортировка и отбор и прочие операции, которые приведены в семи пунктах, что я перечислил выше — осуществляется на результатах, которые были получены на незнакомых данных, а не на тех, на которых проводилось обучение.

И ещё. Мне понравилась концепция, которая противоречит общепринятой идеологии алготрейдинга. Её суть состоит в том, что период обучения должен быть в разы меньше, чем период проверки. Я поэкспериментировал и на данном этапе пришёл к значению 20% — такова протяжённость выборки для обучения, а для тестирования, соответственно, 80%. Почему так? Правильный ответ на этот вопрос — результаты экспериментов. Но, если рассуждать логически, чем короче период обучения, тем легче найти рабочий алгоритм. А уж потом проверять его на более длинном периоде тестирования, и если он там будет работать — вероятность того, что он будет работать и в будущем, по моему мнению, выше.

Конечно, тут следует принять во внимание и тот факт, что я ищу короткоживущие и высокоэффективные стратегии, в то время, как большинство ищет алгоритмы, которые будут работать как можно дольше, теряя, при этом, в прибыли — что закономерно.

Вот, собственно, и всё, что имел сказать по теме поста.

Хорошего вам дня.
37 Комментариев
  • Tуземец
    16 августа 2023, 13:06
    после того как закончатся прения непосредственно по сабжу предлагаю открыть сеанс срача по следующему вопросу:
    можно ли к алгоритмической торговле относить автоматизированные торговые системы и допустимо ли к ней относить  автоматизированные торговые системы с ручным управлением )) 
      • Tуземец
        16 августа 2023, 13:16
        bascomo, не. я обет дал не писать на смартлабе ничего, кроме  каментов.
        да и те трёх типов: камент для большого брата, камент для срача и картинка )) 
    • 3Qu
      16 августа 2023, 13:13
      Tуземец, а че здесь обсуждать, можно абсолютно все. На вкус и цвет…
      • Tуземец
        16 августа 2023, 13:18
        3Qu, да некто логичный Зотов всю кровь у меня выпил в сраче по теханализу, тут тоже есть где развернуться
          • Tуземец
            16 августа 2023, 13:35
            bascomo, заблокировал, а он пост написал от возмущения. и мне пришлось в его посту драться за двоих. он выиграл по очкам и я его тоже забанил ))
  • Zoran
    16 августа 2023, 13:20
    20% на 80% — мне кажется все так делают. IS у меня последние 360 дней, OOS  5000 дней.
  • svgr
    16 августа 2023, 13:30
    Первое, что пришло в голову: концепция не противоречит общепринятой.
    Первый короткий прибыльный участок существует просто для поиска возможных иногда что-то дающих алгоритмов. В общепринятом это остаётся за кадром.
    Второй — большой, для классификации результатов. А в общепринятом так же.
    В описанном подходе стоит добавить третий участок, например в четверть от второго, и на нём после классификации посмотреть как она сохраняется. Это будет аналогом боевого участка в общепринятом. Подозреваю, что в результатах на нём принципиальных отличий от общепринятого не будет.
  • LogikoMen
    16 августа 2023, 15:23
    Тут только один вопрос. А не звездит преувеличивает автор? 100к стратегий — где вы их взяли?
      • LogikoMen
        16 августа 2023, 16:01
        bascomo, извините. Не прочел вашу классификацию сигналов. Теперь верю. Она весьма способна обхватить на небольшом количестве индикаторов огромный набор простейших стратегий. И похвальна в плане проработки. 
        У вас весьма грандиозный размах в аналитике. Вы создаете какой то софт? Или же для себя ищите стратегии? 
          • LogikoMen
            16 августа 2023, 16:05
            bascomo, как вы все это программируете?  Софт какой, или написали что?
              • LogikoMen
                16 августа 2023, 16:36
                bascomo, много интересных идей у вас в блоге спасибо. Но и труд тяжелый. Из моего опыта, стратегия это набор сигналов с диапазоном их действия (диапазоном параметров). Можно еще добавить — наличие котировки к склонности характерного движения, но это не принципиально (и так идет поиск на лучших и их мало). От этого полный перебор в моем понимании не возможен. Потому что оптимизация — обязательна. Для меня странно, что вы находите что то ценное при таком подходе. Параметры же какие то выбираются. Прежде всего — закономерность отличается от случайности — количеством повторений. Ваша формула — поиск 20%, тест в 4 раза длиннее — это и есть принцип закономерности. На  короткой дистанции оценка невозможна. Но идеи очень крутые, спасибо. 
                Почему вы удалили старые посты? 
                  • LogikoMen
                    16 августа 2023, 17:24
                    bascomo, могу подсказать идеи по вопросу. На который тоже нет хорошего решения. По умиранию стратегий. Часто вижу значительное изменение в стратегий в моменты кризиса бумаги в статистике. Т.е когда несут убытки и идет перестроение участников торговли. С акциями очень просто — они просто падают, кризисы видны. С другими сложнее определить кризисы. Т.е если стратегия идет под откос в момент кризиса бумаги — реагируйте активнее. Не ждите. Лучше поглядеть на заборе на нее. Выйдет на максимум — можно заходить. Как и эти периоды самые сложные для алготорговли.
                    Если алгоритм после достижения нового максимума пробивает локальный минимум за предыдущий период — он умер. Оценка вершин очень хороша — и тоже склоняюсь к вашему методу. Но периоды убытка важны. Хорошая стратегия тем и хороша, что не  проседает в плохие периоды. Такие просадки на двух периодах скорее говорят об смерти, чем долгое отсутствие прибыли. Как и хорошая стратегия — это оценка прибыльности на периодах. Где период — это достаточное количество сделок для оценки. 
                    Черные лебеди не  рассматриваю для оценки. Т.е. если алгоритму не повезло краткосрочно — то это просто случайность. Если какой то фундаментал покосил алгоритм — печально. Но мог и создать мега прибыль.
                      • LogikoMen
                        17 августа 2023, 17:17
                        bascomo, все равно не понял ваш принцип. Вы ищите высоко доходные стратегии на короткой истории, а не долгосрочные. Дело в том. Что тест на долгой истории равнозначен форвардному тесту. Точнее сказать дает очень похожую оценку. Именно поэтому все профи тестируют алгоритмы на истории от 5 лет. Я использую форвард оценку периода — моя оценка, в книгах не встречается. Т.е. идет разбитие на периоды и оценивается в каких случаях был плюс на коротком диапазоне. И далее форвардом проверяю удачность выбора. Для короткого теста не плохо. Но неоднозначно. Вторую оценка у меня — это доход/волатильность. Тоже лучше, чем просто доход. В прогностическом плане.  Но проблема все равно стоит остро — цифры пляшут. И долгосрочная оценка всегда лучше. Вот так стоит проблема. Вы же говорите об краткосрочной. Нужно понимать, что я тоже вижу смерть стратегий. И вижу причины — смена участников торговли из за их убытков. А щас добавилось — подключение торговых алгоритмов. Если на истории есть работающая тех модель — жди роботов. И модель умрет. Но это не отменяет вопроса — что вашем понимании краткосрочная оценка? Месяц, 10 сделок? Как и вы задаете выборке параметры? Без них стратегии не существует. Я это хорошо вижу. Диапазон параметров — главное достояние стратегии. Есть еще такие стратегии, которые я называю обманными. Они стохастический не способны заработать. А лишь плод математической выборке. И да -вы их определите обычной  сменой котировки. Но проблема никуда не делась. Достоверность заработка по полученной системе нет. Что вы делаете такого, что не делаю я? Да, у меня нет такого математического комплекса и потому такой большой информации для оценки. По сравнению с вами я доисторический мамонт — и от того мой опыт очень субъективен. Но все же, почему на выходе вы получаете работающий алгоритм. А не готовую сливающую машину?
                          • LogikoMen
                            17 августа 2023, 17:41
                            bascomo, т.е. банально стратегия моментума в выборе алгоритма? Статистическая машина нашла некий  случайный алгоритм, благо она работает с огромной выборкой. Который заработал за три месяца лучше всего. Он подключается. И если ведет себя плохо отключается. Такой принцип?
                          • LogikoMen
                            17 августа 2023, 17:45
                            bascomo, 5.
                            Эквити по отдельному инструменту меня интересует мало, важна суммарная эквити портфеля
                            Это значит, что алгоритм ищется по группе котировок?
                              • LogikoMen
                                17 августа 2023, 18:19
                                bascomo, тест алгоритма идет на одной котировке, или нескольких? В каких случаях алгоритм попадает в список для торговли? Если он успешен на нескольких?
                                  • LogikoMen
                                    21 августа 2023, 15:57
                                    bascomo, 
                                    1)на самом деле очень жесткое условие для первого этапа. Первый тест становится определяющим. При разработке выбор для обучения куска истории чем то обосновано? 
                                    2) Повторно одни и те-же сигналы (стратегии) проходят проверку, уже на другом куске истории? Со временем, мы имеем уже что то новое. Через год, к примеру?
                                    3) Успешность на другой котировке — субъективно. Но это является лучшим показателем успешности для алгоритма. В последнее время к этому прихожу. Причем он не должен сливать. А никак не зарабатывать на периоде. Зарабатывает алгоритм на котировке. На которой найдена закономерность. Но эта закономерность должна встречаться в принципе. А если это так, то это точно не математическая подгонка. 
                                    4) Я озвучу проблему в рамках поста. И хотел бы от вас услышать комментарий. 
                                  • LogikoMen
                                    21 августа 2023, 16:42
  • Врач-бондиатОр
    17 августа 2023, 06:12
    На первом этапе тестируется 100 000 стратегий...
    Автор креативен или их GPT составляет)
  • phuture music
    17 августа 2023, 07:22
    Здравствуйте!
    Коллега прислал ссылку на заметку. Спасибо:)
    Могли бы вы чуть подробнее разъяснить про соотношение времени теста и обучения? Я думал, что должно быть наоборот.
    Вывод интересный.
      • phuture music
        18 августа 2023, 18:38
        bascomo, Очень интересно было бы раскрыть.
        Как скажете, если не хочется топтать клавиатуру — может, и не надо.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн