Для решения одной практической задачи мне нужно было разработать метод идентификации локальных максимумов и минимумов в динамике цен. Тайм-фрейм был коротким — 1 мин. Я сделал небольшое исследование на эту тему, и его результаты публикую в этом посте. Возможно, это будет интересно кому-либо еще, а может быть кто-нибудь даже поделится своими соображениями по данному вопросу.
В ходе своего небольшого исследования я выделил два подхода, используемых для идентификации локальных максимумов и минимумов цен — это сглаживание и сжатие.
Для сглаживания как правило выбирают следующие методы: Kernel regression, orthogonal series expansion, projection pursuit, nearest-neighbor estimators, average derivative estimators, сплайны и нейронные сети.
Со сжатием я не стал подробно разбираться в виду нехватки времени.
Я реализовал метод
Kernel regression
Параметр сглаживания в данном методе называется bandwidth и имеет обозначение — h. Я выполнил расчеты для 1-минутных цен фьючерса на индекс РТС с различными значениями параметра h (от 7 до 68), и получил следующие результаты:
В целом результатами я доволен и при определенной «сноровке» можно подобрать h, который будет адекватно «расставлять» уровни локальных хаев и лоу на графике цен. Безусловно нужно смотреть на работу алгоритма в реальных условиях, и получая обратную связь, подкручивать h пока не будет выработано некоторое постоянное его значение (либо некоторая простая зависимость).
Стоит ли повторять, что все расчеты я сделал в R. Использовал библиотеку sm (Smoothing methods for nonparametric regression and density estimation).
Более подробно читайте на моем сайте
quant-lab.com
P/s В виду резкого одномоментного возрастания траффика иногда возникает превышение лимита нагрузки на ЦП и хостер блокирует мой сайт. Через некоторое время блокировка снимается. Я пока не разобрался, как решить эту проблему быстро и недорого, поэтому в случае блокировки — прошу интересующихся заходить на сайт позже :)