Мотивация

Генетические алгоритмы широко известны как нелинейный метод оптимизации. В базовом случае алгоритм следующий:

  1. У нас есть исходная популяция стратегий/алгоритмов/ML-моделей которые мы натравливаем на наши данные. у этих моделей есть параметры (
  2. В процессе "натравливания" мы получаем результаты согласно той метрике которую мы оптимизируем: loss/cross-entropy/whatever
  3. Выбираем top-N моделей и "скрещиваем" их путем создания новых моделей ("потомков") с параметрами "родителей"
  4. Из числа потомков выбираем небольшое число моделей и меняем некоторый процент их "генов" на случайные.
  5. Повторяем все сначала теперь с поколением "потомков".
  6. Спустя M повторов приходим к оптимальному результату ****(но это не точно 🧐)

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

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/cee753b4-70ef-44e0-9b65-1f457cf4b13e/basic_process.png

Базовый процесс генетического алгоритма

Что почитать:

  1. Genetic Algorithms with Python (Amazon) - хорошая книга с пошаговыми примерами

Постановка задачи

Основой успешной торговли является проверенная торговая стратегия. Но человеческие ресурсы ограничены для придумывания и тестирования стратегий. Вопрос на миллион:

Именно для этих целей я попробовал разработать генетический алгоритм. Я тестировал алгоритм на внутридневных данных торгов популярными фьючерсами, экспортируя их из Quik.