Идея
Думаю, что большинство трейдеров использует стандартные показатели оценки, встроенные в торговые терминалы. У меня возник вопрос доверия к ним, я решил проверить, насколько они релевантны. Дело в том, что просто так их использовать мне затруднительно, и сами по себе они ничего не говорят. Кроме того, в некоторых источниках, например, я читал, что коэффициент Шарпа показателен для анализа фактических сделок, но отнюдь не для анализа смоделированной на истории торговли. Не буду вдаваться в детали, это мнение можно найти в интернете, но закралось сомнение, а адекватными ли метриками вообще я пользуюсь при тестировании моих алгоритмов и стратегий. Моя идея состояла в том, что нужно рассматривать метрики в их корреляции друг с другом, для выявления зависимостей, с тем, чтобы улучшить результаты торговли, найдя лучшие кластеры пересечений этих показателей. Кроме того, чтобы просто это посчитать, мне нужно было ещё разбить полученные результаты на классы, что само по себе нетривиальная задача, если делать это вручную, потому что нужно определить границы для каждого класса, при том, что параметров, по которым те или иные алгоритмы должны попадать в тот или иной класс, несколько.
Подход
Для решения этой задачи я решил использовать классическое машинное обучение, а именно алгоритмы кластеризации. На вход им подаётся список торговых алгоритмов с рассчитанными метриками, а так же число классов, на которые их нужно разбить. На выходе получаем результат — какому алгоритму какой класс присвоен. Быстро, просто и эффективно и не требует больших вычислительных ресурсов.
Приблизительно так выглядит основной кусок кода. Всё, что до него — загрузка и подготовка данных, а после него — визуализация. Как видно из кода, используется KMeans и разбивает выборку на 5 классов.
Результат
И вот что из этого получилось. Хорошо видно, что комбинация отдельных метрик чётко выделяет кластеры, а некоторые метрики больше мусорные и особо ничего не дают. Ещё видно, что некоторые метрики нелинейные — они сдвигают все классы в одну сторону, оставляя доминирующим на большей части своего интервала бесполезный класс. Из этого следует два вывода:
- Отдельные метрики подходят только для того, чтобы границей отсечь заведомо неподходящие алгоритмы. Например, посмотрите на RSquare. То, что меньше 0,8, можно смело выкидывать, а лучше брать то, что больше 0,95.
- Лучше пользоваться пересечением метрик, так как это лучше, чем метрики по отдельности, выделяет качественные алгоритмы.
- И в целом, можно использовать ML для разбиения торговых алгоритмов на классы и торговать лучшими, не проводя часы за анализом графиков или таблиц с метриками. По крайней мере, если алгоритмов много, то это хороший способ сузить область поиска.
Можно использовать и другие алгоритмы кластеризации, например
И они дают схожие результаты:
Ещё одна рабочая идея состоит в том, чтобы смотреть нормальное распределение значений той или иной метрики. Это помогает понять, куда она смещена, есть лив ней доминанта и как лучше её использовать. Или же она вообще случайно разбросана.
И ещё одна картинка.
Глубоких выводов тут я не делаю, так как цель поста — показать, какой есть инструмент, как он работает и как его можно использовать.
Так а какой кластер в итоге получаем более перспективным?
Вы задаете количество кластеров, получаете скажем 5 кластеров, а как потом выбрать лучшую систему?
Не пробовали скажем dbscan, на посмотреть что он покажет… так то если задавать количество кластеров, то системы не попадающие никуда будут так же отнесены же к какому либо кластеру в итоге.
Нет, dbscan не пробовал.
Элемент = стратегия, наверное.
Что именно является расстоянием?
Вы их как-то нормализуете, или все отдаете на откуп стандартной программе?
Лично меня интересует вклад каждой системы в портфель. Оптимизирую портфель по отношению доходности к риску.
— Скажите, пожалуйста, куда мне отсюда идти?
— А куда ты хочешь попасть? — ответил Кот.
— Мне все равно — сказала Алиса.
— Тогда все равно, куда и идти, — заметил Кот.
— только бы попасть куда-нибудь, — пояснила Алиса.
— Куда-нибудь ты обязательно попадешь, — сказал Кот. — Нужно только достаточно долго идти.— Алиса в стране чудес (Льюис Кэрролл)