
Когда строишь портфель, всегда интересно посмотреть, какие у него получаются показатели. Самой известной методикой, несомненно, можно считать — подход Марковица. Она прекрасна описана во многих учебниках, и по ней существует масса программ, которые позволяют легко посчитать параметры портфеля. Большинство текущих робоэдвайзеров построены именно на этом подходе. Остается только вопрос, какие активы «подпихнуть» машине, и какие ограничения выставить при оптимизации.
Основной проблемой при работе с Марковцем является нестабильность во времени показателей волатильности, ожидаемой доходности и корреляций. Всегда встает вопрос, сколько необходимо взять значений для расчетов, за какой период и т.п. Модель очень чувствительна к этим вводным, и результаты могут быть очень различны.
Если посмотреть на pic.1, где по оси Х отложена волатильность, а по оси Y — ожидаемая доходность, то каждая точка будет соответствовать одному году для индексов MCFTR, RGBITR и портфеля МСFTR/RGBITR c распределением 50/50. На нем очень хорошо виден разборс значений от года к году. Математическая статистика нас учит тому, что необходимо брать как можно больше значений, и тем самым мы получим более точные оценки ожидаемой доходности, и волатильности. Но все это может неплохо работать на очень длительных горизонтах. По-моему опыту – в лучшем случае лет 15, а так около 25. Но что, если наш горизонт короче?

|
Простите за банальность, работа с данными начинается с их получения из внешнего источника. Мы будем получать их из CSV-файла архива котировок, скачанного с сайта Финам. Для работы с другими источниками вам надо будет немного изменить программу.
Я уже давно не работаю непосредственно с CSV, и храню все данные в БД SQLite. Поначалу я хотел написать программу чтения CSV с нуля, но выяснилось, что я уже подзабыл как это делается, однако нашелся рояль в кустах — моя старая библиотека читающая данные из CSV-файла непосредственно в программу. Ее мы и будем использовать.
Собственно, Python и ориентирован на работу с библиотеками, и не нужно знать что там внутри, важно только уметь с ними работать, а сами программы с использованием библиотек станут очень простыми.
Для начала качаем с Финам историю в формате CSV-файла следующего вида:
<TICKER>,<PER>,<DATE>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL> SPFB.Si-12.20,1,04/05/20,10:00:00,76900.0000000,76990.0000000,76900.0000000,76990.0000000,3 SPFB.Si-12.20,1,04/05/20,10:06:00,77695.0000000,77695.0000000,77400.0000000,77400.0000000,8 SPFB.Si-12.20,1,04/05/20,10:08:00,77781.0000000,77781.0000000,77700.0000000,77750.0000000,30 SPFB.Si-12.20,1,04/05/20,10:13:00,78088.0000000,78098.0000000,78088.0000000,78098.0000000,6 SPFB.Si-12.20,1,04/05/20,10:14:00,78100.0000000,78100.0000000,78100.0000000,78100.0000000,1
Продолжаю совершенствовать свою базу SQL и автоматизированные средства расчетов.
В июне я написал пост: "Автоматизация — ключ к успешному инвестированию. Python и SQL приходят на помощь❗️", где описал как и зачем я поднял собственный SQL сервер, и какие задачи он мне поможет решить.
Теперь у меня есть собственная база котировок по всем интересующим меня ценным бумагам.

Чтобы упростить себе жизнь в части расчетов параметров облигаций, следующим этапом развития данного направления, конечно, было желание написать свой калькулятор для оценки облигаций. Для этого в SQL базу пришлось добавить новые таблицы, с параметрами облигаций. С ними пришлось покопаться, потому-что не было понимания, какие именно графы мне понадобятся изначально. После нескольких вариациях я нашел оптимальное для себя решение.
Как и любой исследователь-инвестор, я сталкиваюсь с необходимостью обрабатывать огромное количество различных данных, чтобы принять взвешенное инвестиционное решение.
И одна из самых трудоемких частей работы — это сбор данных, их систематизация и подготовка для работы. Конечно, очень хочется как можно больше автоматизировать данную работу, чтобы тратить на это как можно меньше времени.
Я уже рассказывал, что на самоизоляции осваивал Python, и демонстрировал, что мне удалось написать профессиональный инвестиционный калькулятор, который рассчитывает различные финансовые показатели и сравнивает между собой два актива. Кстати, в последней его версии я добавил возможность учета комиссий и налогов. Это позволяет намного легче сравнивать NET результаты для инвестора, особенно если в стратегии по ДУ есть вознаграждение управляющего за успех, а в ПИФах комиссия за приобретение и погашение паев.
Все первичные данные для сравнения приходилось формировать в ручном режиме — скачивать котировки в файл, потом их обрабатывать, и уже потом считать результаты. И даже немало известная программа