Интересная математическая задачка (касается трейдинга)

 
Пусть мы имеем, скажем, 20 инструментов.

Необходимо среди этих двадцати инструментов выбрать, скажем, 6 таких инструментов, корреляция между которыми была бы минимальная.

Т.е. получается мы имеем 20 *20*20*20*20*20 наборов инструментов по шесть штук в наборе. В каждый решающий момент хочу работать с таким вот набором.

Если кто поможет - буду очень признателен, сам я , что-то запутался.

С уважением - С.Д
 
Здравствуйте, уважаемые участники форума! Вопрос конечно интересный! Но что-то после отпуска трудно соображается.
Sart, ведь валюты бывают прямые и обратные к USD. Подразумевается, что это надо учитывать?
 
VBAG:
Здравствуйте, уважаемые участники форума! Вопрос конечно интересный! Но что-то после отпуска трудно соображается.
Sart, ведь валюты бывают прямые и обратные к USD. Подразумевается, что это надо учитывать?

Абсолютно по барабану. Меня вот что путает - в каждой шестерке мы по всем возможным парам (количество пар = 6*6, ну, вычесть, конечно, сам-с-собой)

считаем корреляцию. А что дальше, как сравнить результаты ? Что-то обобщенное по шестерке надо..Но что ?

С уважением - С.Д.
 

Если ты говоришь о коэффициентах попарной корреляции (кстати, чего?), то их немного. Строишь квадратную таблицу и вычисляешь эти коэффициенты для пар, находящихся внутри треугольника без главной диагонали. Получается 20^2 - 20 коэффициентов, т.е. 380. А дальше выделяешь внутри этого треугольника "кольца", т. е. замкнутые конструкции типа 12-23-34-45-56-61 (каждой цифре сответствует один инструмент). Как это делать - пока не знаю. Но как только сделаешь, организуешь перебор, чтобы удовлетворить минимум некоторой целевой функции (например, сумма квадратов этих коэффициентов). Вот таких "колец" там может оказаться очень много. Может быть, лучше было бы просто распечатать эту табличку и выбрать их визуально?

Абсолютно очевидно, что онлайн ты такую задачу решать не сможешь, слишком ресурсоемкая она...

 
Mathemat:

Если ты говоришь о коэффициентах попарной корреляции (кстати, чего?), то их немного. Строишь квадратную таблицу и вычисляешь эти коэффициенты для пар, находящихся внутри треугольника без главной диагонали. Получается 20^2 - 20 коэффициентов, т.е. 380. А дальше выделяешь внутри этого треугольника "кольца", т. е. замкнутые конструкции типа 12-23-34-45-56-61 (каждой цифре сответствует один инструмент). Как это делать - пока не знаю. Но как только сделаешь, организуешь перебор, чтобы удовлетворить минимум некоторой целевой функции (например, сумма квадратов этих коэффициентов). Вот таких "колец" там может оказаться очень много. Может быть, лучше было бы просто распечатать эту табличку и выбрать их визуально?

Имею ввиду корреляцию по ценовому движению. Вот та корреляция , о которой пишется в статье "Основы создания хэджирующего эксперта" - здесь и

формула расчета корреляции между двумя инструментами и функция для ее вычисления.

Корр.= -1 - инструменты 100% времени движутся в противоположном направлении
Корр.= 0 - инструменты двигаются абсолютно независимо
Корр.= +1- инструменты 100% времени двигаются в одном направлении

Ну а промежуточные значения - это как инструменты связаны в реальной жизни.

Что касается онлайн-режима, то этот момент не критический. Выбор шестерки производится для запуска на ней длительного торгового цикла. Пусть она хоть час выбирается.

С уважением - С.Д.
 
Час - это оптимистичная оценка... Тебе еще придется организовать цикл по "кольцам", причем не тупой перебор (там слишком много комбинаций), а вумный.
 
Сделать все сочетания по 6, посчитать сумму корреляций, по наименьшей сумме выбрать группу. Надо еще ввести проверки, чтобы у каждой пары не было корреляции выше допустимой. Компутер не выдержит)
 
Лучше так - посчитать корреляцию для каждой пары символов (380 штук), отсортировать, потом начиная с наименьшей составлять список рабочих символов, пока их не станет 6.
 
Integer:
Сделать все сочетания по 6, посчитать сумму корреляций, по наименьшей сумме выбрать группу. Надо еще ввести проверки, чтобы у каждой пары не было корреляции выше допустимой. Компутер не выдержит)
Вот так:
1. комбинации по шесть - 20*20*20 *20*20*20 - количество шестерок(сами-с-собой выбрасываются)
2. по каждой шестерке вычисляем 6*6 штук коэффициентов корреляции(сам-с-собой выбрасывается)

А вот дальше - как сравнить ? - какая шестерка самая лучшая по нашему критерию ?

С уважением - С.Д.
 

Я ошибся. Коэффициентов попарной корреляции получится 190, а не 380. Тупой перебор дает порядка "це из 190 по 5" комбинаций, т.е. примерно 2 миллиарда :) Нетупой наверняка снизит это число на 2-3 порядка. Придется пару миллионов раз подсчитать сумму квадратов к-тов. Не так и страшно, если присмотреться. Но еще придется придумать нетупой перебор.

P.S. В принципе Integer дело предлагает... Решение не обязательно получится оптимальным, но может оказаться близким к нему.

 
Sart:
Integer:
Сделать все сочетания по 6, посчитать сумму корреляций, по наименьшей сумме выбрать группу. Надо еще ввести проверки, чтобы у каждой пары не было корреляции выше допустимой. Компутер не выдержит)
Вот так:
1. комбинации по шесть - 20*20*20 *20*20*20 - количество шестерок(сами-с-собой выбрасываются)
2. по каждой шестерке вычисляем 6*6 штук коэффициентов корреляции(сам-с-собой выбрасывается)

А вот дальше - как сравнить ? - какая шестерка самая лучшая по нашему критерию ?

С уважением - С.Д.


Та шестерка у которой сумма корреляций наименьшая. Но это не лучший способ.

Лучше так - посчитать корреляцию для каждой пары символов (380 штук), отсортировать, потом начиная с наименьшей составлять список рабочих символов, пока их не станет 6.
Причина обращения: