Блог им. nonbritish

Построение оптимального портфеля за полторы минуты (консольная программа)

Друзья, привет!

Тут на днях накидал прогу небольшую по теме Efficient Portfolio Frontier для российских бумаг.
Собственно, данные берёт из Yahoo (трёх-летний период).
Используется, понятное дело, Adjusted Close Price (так требует теория).

Суть проги простая — генерирует 100 тысяч возможных портфелей из списка бумаг, которые вводите в консоль (там выйдет строчка).
Не стал пользоваться SciPy оптимизатором (для тех, кто в теме), смысла в этом не вижу, потому что расхождение между показателями очень низкое.

Программа показывает два портфеля и вытаскивает график:

  • Один из портфелей, значит, это портфель для максимального значения коэффициента Шарпа (Безрисковую ставку впишите в консоль);
  • Другой — портфель с минимальной волатильностью. В обеих случаях будет указан вес для бумаг.

Как пользоваться:

1) Запускаете программу и немного ждете, пока у вас откроется консоль со строчкой ввести тикеры;
2) Вводите тикеры (как их вводить, написал чуть ниже), плюс на картинке увидите.
3) Вбиваете безрисковую ставку (доходность, которую вы сто пудово заработаете) в формате целого числа, без всяких делений: 5% или 5.40%, а не 0.05, например.
4) Немного ждёте, пока алгоритм генерит портфели.
5) Чуть позже появится картинка — как только картинку закроете, закроется прога. Чтобы увидеть данные портфелей,
просто перетащите картинку.

Цифры (на картинке) на оси Y и X умножайте мысленно на 100, естественно, потому что я забыл умножить их на сто изначально для графика, но позже исправлю прогу и добавлю туда парочку новых функций. Ну и, думаю, понятно, что чем левее и выше звёздочка, тем лучше портфель.

Ссылка на прогу — это чисто для российских бумаг.
Ссылка на прогу для международных рынков

Версии для российского рынка и международного рынка отличаются только тем, что в международной версии, например, при вводе тикеров, нужно
в конце добавлять часть.МЕ для рынка РФ (пример, SBER.ME), для немецкого рынка .DE (BMW.DE), для амеров достаточно просто тикер. Если есть сомнение по поводу тикера, то зайдите на Yahoo Finance, там же, в поисковике, набирайте тикер и там всплывёт правильный вариант. Правда, не на всей крипте нормально работает. Думаю, проблема в том, что я беру данные не из самого сайта, а из готовой библиотеки Pandas Datareader, вместо того, чтобы парсить саму страницу сайта через BeautifulSoup — разницы в показателях абсолютно никакой не было бы, а вот строчек кода заметно прибавилось бы.

Пример ввода тикеров: SBER.ME AAPL BMW.DE (для версии международных рынков), и SBER ARLS (для рынка РФ).

Соединять две проги в одну не стал, не вижу в этом смысла, потому что всё равно планирую всё это доработать в более комплексную версию.

P. S. Что такое Efficient Portfolio Frontier и коэффициент Шарпа найдёте в интернете, мне лень всё это расписывать.

P. P. S. Забыл добавить, что коэффициент Шарпа представлен в виде цветовой схемы справа. Если цвет портфеля
(красной звёздочки) по шкале меньше 1
то это дерьмовый портфель — добавьте бумаг или разбавьте другими секторами. Если же нужен тупо портфель с минимальной
волатильностью, то забейте на коэффициент Шарпа.

Пример:

Построение оптимального портфеля за полторы минуты (консольная программа)






★17
8 комментариев
Спасибо за программу. С USA рынком будет работать?
avatar
Залил версию для международного рынка, вторая ссылка в посте)
avatar
Ну если с яху берет данные, то будет работать
Вторая ссылка в посте — для всех рынков)
avatar
Добрый день. Скачал файл, система пишет — файл поврежден. Можно поправить?

avatar

теги блога nonbritish

....все тэги



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