Мотивация
Генетические алгоритмы широко известны как нелинейный метод оптимизации. В базовом случае алгоритм следующий:
- У нас есть исходная популяция стратегий/алгоритмов/ML-моделей которые мы натравливаем на наши данные. у этих моделей есть параметры (
- В процессе "натравливания" мы получаем результаты согласно той метрике которую мы оптимизируем: loss/cross-entropy/whatever
- Выбираем top-N моделей и "скрещиваем" их путем создания новых моделей ("потомков") с параметрами "родителей"
- Как предотвратить переобучение (overfitting) ↴
- Из числа потомков выбираем небольшое число моделей и меняем некоторый процент их "генов" на случайные.
- Повторяем все сначала теперь с поколением "потомков".
- Спустя M повторов приходим к оптимальному результату ****(но это не точно 🧐)
Строго говоря, достижение сходимости к оптимальным решению не гарантировано, так как генетический алгоритм не является convex, а представляет собой всего лишь популярную эвристику.

Базовый процесс генетического алгоритма
Что почитать:
- Genetic Algorithms with Python (Amazon) - хорошая книга с пошаговыми примерами
Постановка задачи
Основой успешной торговли является проверенная торговая стратегия. Но человеческие ресурсы ограничены для придумывания и тестирования стратегий. Вопрос на миллион:
- как автоматизировать процесс создания новых стратегий,
- автоматизировать процесс проверки гипотез.
Именно для этих целей я попробовал разработать генетический алгоритм. Я тестировал алгоритм на внутридневных данных торгов популярными фьючерсами, экспортируя их из Quik.