Когда я смотрю на один конкретный актив, то я могу легко оценить как меняются его котировки, насколько он проигрывает индексу Московской биржи или наоборот обыгрывает его. Когда мне надо что-то сказать про портфель из 10 активов, то можно потратить время и провести такой же анализ. Когда в портфеле 25 активов, то уже становится жалко тратить время и начинаешь задавать себе вопрос, а надо ли вообще проводить такой анализ, мол я и так примерно понимаю динамику котировок. Но это "примерно понимаю" может легко оказаться плюс-минус 15%.
Я для себя решила, что хочу научиться подгружать данные в автоматическом режиме с сервиса Московской биржи. А вот что с ними дальше делать у меня очень много разных идей. О них я расскажу отдельно, когда у меня будет уже красивая картинка, а заодно и скриншот. А пока просто показываю как подгрузить котировки и что можно с ними сделать из простого.
Получаю котировки по акциям
Магия Московской биржи заключается в том, что котировки акций, БПИФ корпоративных облигаций и ОФЗ получаются по-разному! То есть тут надо использовать 4 разных запроса. В чем тут логика не понятно. Более того, данные по облигациям и ОФЗ корректно подгружаются только в основную торговую сессию. И это конечно очень сильно затрудняет реализацию того, что я хотела для себя сделать.
Вообще Московская биржа продает доступ к расширенным данным, например тем на основании которых можно построить графики котировок. Но таким пользователям как я нет большого смысла покупать доступ к этим данным.
И опять же, можно попробовать выгружать данные не с API Московской биржи, а откуда-то еще, просто научившись парсить страницу. О таком варианте я читала на просторах интернета, но это уже куда сложнее. И тут вопрос глубокого смысла и предполагаемой отдачи.
Но вернемся к API, чтобы подгрузить текущие котировки по акциям, надо написать короткий текст:
= IMPORTxml ( "https://iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.xml?iss.meta=off&iss.only=marketdata&marketdata.columns=SECID,LAST" , СЦЕПИТЬ ( "//row[@SECID='" ,B3 , "']/@LAST" ) )
В ячейки В3 должен находиться тикер актива. Саму формулу можно запихнуть в любую ячейку. У меня это выглядит вот так.
Получаю котировки по фондам
Котировки по фондам можно получить в любой момент. И вот какой код для этого надо вставить:
= IMPORTxml ( "https://iss.moex.com/iss/engines/stock/markets/shares/boards/TQTF/securities.xml?iss.meta=off&iss.only=marketdata&marketdata.columns=SECID,LAST" , СЦЕПИТЬ ( "//row[@SECID='" , B1 , "']/@LAST" ) )
И кстати, если у вас есть какие-то сомнения по тикеру, можете просто заглянуть по адресу ссылки, который дан в коде - http://iss.moex.... С фондами-то более ли менее понятно, а вот у ОФЗ тикеры которые знают далеко не все инвесторы.
Котировки по ОФЗ
Чтобы получить котировки по ОФЗ надо вставить вот этот код. Тикер должен быть прописан в ячейке В1. Повторюсь, этот код работает не 24 часа 7 дней в неделю и это обидно.
= IMPORTxml ( "https://iss.moex.com/iss/engines/stock/markets/bonds/boards/TQOB/securities.xml?iss.meta=off&iss.only=marketdata&marketdata.columns=SECID,LAST" , СЦЕПИТЬ ( "//row[@SECID='" , B1 , "']/@LAST" ) )
Покажу сколько-то тикеров по ОФЗ. Собственно не каждый брокер их транслирует, поэтому проще их подсмотреть на сайте Московской биржи.
Котировки по корпоративным облигациям
И заключительный пункт программы - котировки по корпоративным облигациям и код для Google docs:
= IMPORTxml ( "https://iss.moex.com/iss/engines/stock/markets/shares/boards/TQTF/securities.xml?iss.meta=off&iss.only=marketdata&marketdata.columns=SECID,LAST" , СЦЕПИТЬ ( "//row[@SECID='" , B1 , "']/@LAST" ) )
В целом этот код не сложно адаптировать, чтобы получать котировки в эксель. Я же сейчас все свои таблицы перегнала в облако. Я стараюсь уходить от экселя, чтобы иметь доступ к таблицам в любой момент, с любого устройства и не бояться, что мой ноутбук накроется.
Какие еще данные можно вытащить из API можно посмотреть вот тут. Судя по всему можно вытащить даже индекс Мосбиржи, но у меня руки до этого еще не дошли.
Что дальше?
Данные я получила, но что дальше? Дальше их можно использовать для анализа в автоматическом режиме и тут может быть масса вариантов. Вот, например, самый простой - посчитать как изменились котировки в годовых процентах. Для этого мне всего лишь надо из текущей стоимости вычесть цену покупки, потом это все поделить на цену покупки. Далее это умножается на 365 дней и делится на число дней, прошедшее с момента приобретения актива. А число дней опять же можно получить в автоматическом режиме, вычтя из сегодняшней даты дату покупки.
А главное на словах описание формулы выглядит длинным, а для кого-то может даже страшным. Но сама формула очень короткая:
=ОКРУГЛ((F3-E3)/E3*365/((СЕГОДНЯ()-D3)),4)
И по картинке выше можно понять что где находится. Например, в ячейку F3 подставляется текущая цена актива на бирже, в Е3 хранится цена покупки, которую я вписываю ручками. В D3 хранится дата покупки и вот с ней я намучалась. Гугл хочет, чтобы она записывалась именно так, как у меня на картинке. В противном случае он не вычитает дату из даты. Можно конечно это записать как угодно, нагородить сверху формул, но мне лень. Мне проще дату писать в этом формате месяц/дата/год.
Да и в целом с этим API я уже намучалась... Я вот поняла как подгружать котировки на определенную дату, подготовила таблицу, написала несколько тикеров, формулу, потянула ее, для половины тикеров все посчиталось, для половины нет. Открываю адрес из ссылки в браузере, вижу, что там есть информация по нужному мне тикеру, но Google пишет:
#N/A. Нет данных для импорта.
И пока я не могу разобраться, что с этим делать.
Поэтому у меня конечно наполеоновские планы, но тут не все так просто, как мне хотелось бы...
Ну и напоследок приглашаю подписываться на мой закрытый канал на Дзене, в понедельник там вышла статью про крипту.