Под перебором долей акции в данном алгоритме подразумевается изменение процентного соотношения акций в портфеле. То есть перебор долей по каждой акции охватывает диапазон от 0 до 100%. Таким образом, очередной вариант портфеля образуется путем взаимного изменения долей какой-либо пары акций. Естественно, не анализируются варианты портфелей, сумма долей акций которых не равна 100%.
При разработке систем, формирующих портфель по методу Марковица, необходимо широко использовать как методы численной оптимизации, позволяющие сократить количество вычислений, так и различные способы распараллеливания этих вычислений. При параллельной обработке необходимо уделять особое внимание синхронизации потоков. Так как расчетные потоки не взаимодействуют между собой, нужно рассматривать только вопрос о способе генерации вариантов портфеля и передачи их в параллельные потоки для расчета.
Так как нагрузка на основной поток меньше, он генерирует вариант решения с большей скоростью, чем расчетный поток дает оценку этому варианту. Поэтому для сокращения числа заданий в очереди основной поток должен периодически засыпать, отдавая свои вычислительные ресурсы расчетным потокам. Такой способ позволит выполнять балансировку нагрузки между генератором вариантов портфеля и расчетными потоками.
Ускорить получение результата можно увеличив шаг поиска. Однако данное решение дает предварительный грубый ответ. В ряде случаев этот ответ может быть достаточен для условий задачи. Ведь расчет в условиях риска основывается на средних показателях доходности. Небольшие отклонения от оптимального усредненного варианта в ту или иную сторону для каждой акции склонны взаимно компенсироваться. Но для учета таких эффектов требуется разработать более сложную математическую модель.
Для построения портфеля Марковица понадобилось провести 7 итераций.
В результате получена следующая доходность от 1 вложенного рубля.
Таблица 2.6 Показатели риска и доходности портфеля Марковица (7 итераций)
Итерации |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Риск |
0,006261 |
0,007301 |
0,00834107 |
0,00938115 |
0,010421229 |
0,011461 |
0,012501 |
Доходность |
0,029606 |
0,040686 |
0,047829477 |
0,05357368 |
0,058063713 |
0,062554 |
0,067044 |
С увеличением значения дисперсии увеличивается доходность портфеля Марковица.