0. Дано: имеем модель торговой системы с некоторым набором свободных параметров, которая допускает «усреднение по параметрам», то есть для любой пары наборов Р1 и Р2 можно вычислить средне — (Р1+Р2)/2 — и это будет тоже набор параметров, с которым может запускаться используемая нами модель торговой системы.
1. Разбиваем исторические данные на три участка: оптимизационный, контрольный и супер-контрольный.
2. Генерируем огромное количество случайных наборов параметров Рi (отсюда «Монте-Карло») и для каждого вычисляем качество Qi работы системы на оптимизационном участке данных и, отдельно, QQi — на контрольном участке. Все результаты записываем.
3. Упорядочиваем Qi по убыванию — в ряд Qj (т.е. j — индекс в порядке убывания Q), и начинаем идти по этому списку, усредняя, Рj, Qj и QQj — в Рk, Qk и QQk:
Рk = Среднее(Рj)
Qk = Среднее(Qj)
QQk = Среднее(QQj) — все усреднения — по j=1..k
4. Понятно, что Qk будет монотонно убывать (хорошо, хорошо, не убывать, а «не возрастать»), а Рk и QQk будут сначала скакать, а потом стабилизируются. Смотрим на поведение QQk и надеемся увидеть — после стабилизации — некоторый (локальный) максимум (при k равном некоторому m), после которого начнётся монотонное снижение. Также надеемся, что будет QQm ~ Qm.
5. Если всё так, то Pm — тот набор параметров, который нужно проверить на супер-конрольном участке данных и… да будет нам счастье!