Блог им. Eugene777

Оптимизация оптимизации в торговом роботе.

Медленно но верно, мой алгодвижок становится многопоточным. 

Что это значит на практике? Одной из фишек моего движка — тестер-оптимизатор с визуальным представлением всех кривых эквити. Один год минутных данных на 80 инструментах робот считал примерно пять минут, пятиминутки считались около минуты. Это было сопоставимо с производительностью Wealth-Lab, и в общем, приемелемо, однако задача стоит более глобальная, и она потребует много исторических расчетов. 
В связи с тем, что мне пришлось работать с многопоточностью для Takion, я решил попробовать использовать подобную технику для оптимизатора, и результаты меня порадовали. 
После добавления многопоточности и небольшой оптимизации алгоритмов скорость на i7-3770K увеличилась в десять раз и стала более чем приемлема. Минутки — 30 секунд, пятиминутки — 6. 

На этом я не успокоился и собрал сервер с двумя Xeon X5650 2.6GHz, 6 ядер в каждом. Итого у меня появилась возможность запускать сразу 24 потока. 

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



В планах, если когда-нибудь возникнет потребность работать с большим количеством тиковых данных, я хочу попробовать поработать с технологией обсчета на видеокартах NVidia. Например, за 5 тысяч долларов можно купить NVidia Tesla K40 и получить маленький атомный реактор, но пока это не актуально, загрузка роботом CPU в режиме торговли у меня сейчас в районе 1%, терминалы же успешно грузят один поток.

Оптимизация оптимизации в торговом роботе. 
 
★3
11 комментариев
Крутяк! Я в своем оптимизаторе сразу многопоточность добавил, это действительно помогает. Но с расчетами на видюхе проблем много.
avatar
Станислав Дорошин, я как-то до последнего времени не запаривался, а сейчас начал понимать, что надо делать такой код, за который не стыдно потом будет. С видюхой, уверен, не все так просто, да и задачи пока я не вижу, однако, меня все больше и больше тянет пробовать новые технологии.
avatar
а вы торгуете своими роботами или только оптимизируете?
avatar
vfreeman, торгую периодически =)
avatar
а по какому алгоритму у вас происходит оптимизация?
Роман Frank_Cowperwood, сейчас брутфорс по нескольким параметрам с визуальной оценкой результата, но хочется еще другого, и я над этим работаю.
avatar
Eugene777, брутфорс??? Я тоже этим грешил))) Это же просто убийство времени) Думаю, с многопоточностью ты поспешил. В первую очередь надо алгоритм нормальный применить, это даст намного больше ускорения, чем распараллеливание брутфорса.

И еще, я заметил справа графики загрузки проца. Там хоть и написано 100%, но судя по графику, загрузка не полная…
avatar
Станислав Дорошин, про неполную загрузку я написал. Брутфорс — понятие растяжимое. Если описывать в двух словах: в стратегии есть определенные парметры, смысл которых понятел. Оптимизация проходит вблизи этих параметров. Соответственно, я беру один-два-три параметра, прогоняю окресности, выбираю лучшую эквити с графиков, потом от нее ставлю на перебор другие параметры. Поднаторев в визуальном анализе и более менее поняв, как хочется выбирать эквити на глаз, я собираюсь сделать перебор и выбор уже по всем параметрам в автоматическом режиме. Алгоритм я более менее понимаю сейчас, а Вы что посоветуете?
avatar
Eugene777, я у себя сделал методом покоординатного спуска. Почти как у тебя, но берется только один параметр, перебираются его значения в указанных пределах и из них выбирается лучшее. Затем берется следующий параметр, он прогоняется так же. И все повторяется снова с первого параметра.

Мне интересно, по какому признаку ты выбираешь из нескольких эквити лучшую?
avatar
Станислав Дорошин, да, я думал сделать так же. Смотрю на график ( он там слева, только это на портфеле символов ), тыкаю на нее мышкой, смотрю кол-во сделок и профит на сделку. Просадка видна визуально. То, что нравится, мышкой же и стаскиваю либо в портфель, либо в окошко с оптимизационными параметрами.
avatar
Eugene777, то есть каких-то формальных параметров оценки эквити нет?
П.С. Заходи в чат, у меня в профиле ссылка есть. Там проще обсуждать.
avatar

теги блога Eugene777

....все тэги



UPDONW
Новый дизайн