Поиск закономерностей в разных данных это сейчас целое направление «Data Mining» оно же «Big Data». В них обобщаются методы и алгоритмы как из помойки данных извлечь знания (обнаружить закономерности). Все методы известны, есть доступные лекции, книги и готовые реализации алгоритмов.
Теоретически, если взять рыночные данные, то обнаружим рыночные закономерности ;) Но есть ньюансы...
Мой любимый метод для среднесрочного трейдинга это то, что описано в «Энциклопедии торговых стратегий». Вкратце: берем набор потенциально годных генераторов сигналов типа сравнения скользящих средних, экстремумов в заданном окне и всего что выглядит подходящим. Конкретные параметры генераторов сигналов не задаем, задаем только возможные значения (в виде список, диапазонов и т.п.).
Затем берем генетический оптимизатор и подбираем набор генераторов (из имеющихся), набор конкретных параметров конкретного генератора (из указанных как возможные) и (правила комбинации сингалов из множества заложенных в алгоритм). Подбираем максимум качества, которое измеряем путем моделирования на истории.
В итоге выделяем комбинации правил, которые и есть закономерности. Вот комбинация 3-х правил:
TRF_TwoVolumeCompare
-SwapSignals = False
-InverseSignals = False
-Len1 = 0
-Len2 = 25
-Delta = 0.00
-NegDelta = True
TRF_MinMaxDisruption
-SwapSignals = False
-InverseSignals = False
-Len1 = 10
-Len2 = 15
-Delta = 0.00
TRF_DayTimeInRange2
-SwapSignals = False
-InverseSignals = False
-StartTime = 11:42:00
-EndTime = 13:04:00
-BuyNotSell = False
Можно стратегии строить из еще более мелких кубиков вида «вычислить смещение точек экстремума в заданном окне» или «вычислить значение скользящей средней» или «сравнить пару величин». Тогда потенциально можно обнаружить такое правило, до которого сам бы не догадался. Но по мне так получается слишком большое пространство поиска и больше шансов получить подгонку.
Можно напридумывать и другие формы представления стратегий, но принцип поиска структуры и параметров оставить тот же — оптимизация эволюционными алгоритмами.