Русский
Русский
English
Статистика
Реклама

Биржевая торговля

Голосовой помощник для совершения операций на бирже

02.07.2020 18:23:23 | Автор: admin
Алиса, купи одну акцию Яндекс.
Заявка на покупку Яндекс по рыночной цене, тикер: YNDX, количество акций: 1, для подтверждения скажите подтверждаю, для отмены скажите нет.
Подтверждаю.
Заявка исполнена.


Я делаю голосовой интерфейс для совершения операций с ценными бумагами на Московской бирже с открытым исходным кодом. Идею вынашивал с детства. Помню, впервые увидел голосовой помощник в каком-то фильме около двадцати лет назад, в то время у меня даже проводного телефона не было в доме. А сейчас у меня безлимитное подключение к сети Интернет, брокерский счёт, которым я могу управлять через смартфон. За двадцать лет технологии стали доступнее.


Как всё начиналось



Полтора года назад у меня в доме появилась Яндекс.Станция. Я стал замечать, что иногда, лёжа в кровати, лень протянуть руку за смартфоном, чтобы почитать новости, и тогда я просил Алису рассказать, как изменился мир, пока я спал. С первых дней я оценил удобство голосовых помощников, и ожидал, что миллионы разработчиков накинуться на голосовые интерфейсы точно так же, как в своё время накинулись на разработку мобильных приложений на все случаи жизни.

Время шло, в каталоге навыков Алисы появлялись бесполезные банковские голосовые помощники (не в обиду разработчикам). У Сбербанка, например, помощник озвучивал условия кредита и предлагал прийти в отделение, у Тинькофф тоже самое, только вместо отделения предлагал перейти на сайт, чтобы заполнить заявку. Ребята, кто разрабатывал это, пожалуйста, не обижайтесь на меня, но, правда, я не хочу никуда идти, ни в отделение, ни на сайт, я хочу иметь возможность перевести 100 рублей другу фразой: Алиса, отправь 100 рублей Саше.

Идея лежит на поверхности, но по какой-то причине, никто ещё это не реализовал. Почему? Может никто не пользуется голосовыми помощниками? Может есть законодательные ограничения? Может есть проблемы с безопасностью? Что-то ещё? Поделитесь, пожалуйста, в комментариях, если знаете.

В какой-то момент, я просто встал с кровати и начал делать приватный навык для Алисы, чтобы голосом управлять своим брокерским счётом. Я перебрал своих брокеров и остановился на Тинькофф Инвестиции OpenAPI. Затем на месяц погрузился в изучение возможностей платформы Яндекс.Диалоги, и ещё через некоторое время купил первые ценные бумаги через голосовой помощник на Московской бирже один лот Банк ВТБ. Надеюсь, эта сделка войдёт в историю.

С самого начала я решил, что не буду прятать исходный код, чтобы любой желающий мог настроить себе голосовой помощник: https://github.com/denismosolov/oliver

Возьми с полки пирожок и расскажи наконец о проблемах



Компаний много, а я один



Когда я говорю Алисе: Купи одну акцию Яндекс, то платформа Яндекс.Диалоги извлекает название ценной бумаги из фразы и преобразовывает в специальный идентификатор FIGI (Financial Instrument Global Identifier), необходимый для взаимодействия с торговой платформой через OpenAPI. Вот так выглядит FIGI для акций компании Яндекс, торгующихся на Московской бирже: BBG006L8G4H1.

Преобразование в FIGI происходит только для тех названий компаний, которые я описал в разделе Сущности в Диалогах. Подробнее об этом, можно почитать в документации. Для примера, вот фрагмент кода сущности:

entity EFigi:    values:        BBG005DXJS36:            %exact            TCS            %lemma            тиньков(банк)?            тинькоф(банк)?            тинькофф(банк)?            ти си эс (груп)?


У этой работы большая трудоёмкость, нужно описать все компании, торгующиеся на Московской и Санкт-Петербургской биржах, но результат может быть полезен трейдерам, инвесторам, разработчикам голосовых помощников и даже компаниям, чьи акции торгуются на биржах. Вот файл с описанием сущности EFigi на GitHub, я потихоньку его дополняю.

Люди называют одни и те же компании по-разному, например, кто-то скажет Сбер, а кто-то Сбербанк. На бирже торгуются обычные акции Сбербанка и привилегированные (префы). Хочется учесть все популярные варианты.

Компания торгуется на двух биржах в разной валюте



Глобальные депозитарные расписки TCS Group можно купить на Московской бирже за рубли, а можно на Санкт-Петербургской за доллары. По хорошему, голосовой помощник должен уточнять, в какой валюте покупать расписки, но иногда, это можно понять из контекста.

Например, когда я говорю: Продай одну акцию TCS Group, и у меня на счёте есть только акции в рублях, то нужно без уточнений продавать в рублях на Московской бирже. Если у меня на счёте акции TCS Group в рублях и долларах, то Алиса должна задать уточняющий вопрос: У вас глобальные депозитарные расписки TCS Group в рублях и в долларах, в какой валюте вы хотите продать?.

Я пока это не реализовал и TCS Group всегда покупается и продаётся за доллары. Но, надеюсь, скоро возьмусь за выставление заявок на покупку и продажу ценных бумаг по заданной цене (лимитные заявки), а там уже научу голосовой помощник разливать акции на разных биржах по валюте, которая будет в цене покупки или продажи.

Ошибки распознавания



Люди спрашивают, а что будет, если Алиса распознает что-то не так, например, купит не ту бумагу или не то количество? Для этого я предусмотрел подтверждение сделок. После того, как Алиса распознает команду на покупку или продажу, она проговаривает детали сделки и ожидает подтверждения. Если подтверждения не последует, то сделка не состоится.

Сообщение при подтверждении сделки звучит так: Заявка на <покупку | продажу> <$название_ценной_бумаги> по <$цена_за_одну_бумагу>, тикер: <$тикер>, количество акций: <$количество>, для подтверждения скажите подтверждаю, для отмены скажите нет.

Такое подтверждение отлично воспринимается на слух, но есть одна недоработка. Алиса плохо читает название тикера, например, YNCX, звучит как йинкс.

Я хотел написать функцию, которая бы разбирала тикеры по буквам, и для каждой буквы проигрывала звук из озвучки английского алфавита. Код принимал бы на вход строку YNDX, а возвращал вот такую строку в формате tts:
<speaker audio="sounds-y.opus"><speaker audio="sounds-n.opus"><speaker audio="sounds-d.opus"><speaker audio="sounds-x.opus">

Алиса будет проигрывать звуки, и в теории всё будет звучать хорошо.

Безопасность при совершении сделок



Чтобы использовать OpenAPI, приходится отключать подтверждение сделок по СМС в Тинькофф Инвестиции, а это создаёт риски для безопасности. Например, инвестор ушёл на прогулку с собакой, а дети решили поиграться с Алисой и продали все акции.

Первое, что приходит в голову использовать кодовое слово для подтверждения сделок, но дети могут легко его подслушать и запомнить. А другие варианты, которые пришли мне в голову, потребуют разработчиков голосовых помощников приложить большие усилия. Самое классное идентификация человека по голосу, т.е. сделать так, чтобы сделку мог совершить только владелец аккаунта, а любому другому человеку Алиса вежливо бы отказывала. Судя по тому, что Алиса умеет запоминать людей по голосу, работа в этом направлении ведётся. Но, похоже, это не так легко сделать.

Ещё один вариант, который приходит в голову подтверждение сделок по отпечатку пальца, как на смартфонах, но для этого в умную колонку должно быть встроено устройство для распознавания отпечатков пальцев, но, наверное, это будет не очень практично, да и скорее всего увеличит стоимость умной колонки.

Если знаете способы подтверждения сделок в подобных приложениях за рубежом или просто хотите поделиться идеей, то, пожалуйста, напишите в комментариях.

Вместо заключения


Как говорит бывший коллега: Всё будет хорошо, но чуть попозже. Я верю, что банки и брокеры рано или поздно всё это реализуют, но пока, это остаётся уделом энтузиастов и мейкеров вроде меня.

До встречи в будущем!
Подробнее..

Скрипт выборки российских облигаций по параметрам

22.06.2020 06:23:18 | Автор: admin
Уже несколько лет я пользуюсь облигациями в качестве замены депозита, потому что процент дохода, который можно получить со вклада стабильно падает. В отличии от ситуации с депозитом, в облигациях всегда можно найти большую доходность. И в этой ситуации меня не устраивало только количество времени на механическую работу по поиску подходящих вариантов бумаг.


Работа скрипта по поиску облигаций на Московской бирже

Так как сервисов по поиску российских облигаций много, но ни один из них не имеет достаточной гибкости и простоты и поэтому на работу с ними тратится достаточно много времени. Исходя из этого и решил разработать собственный скрипт для поиска облигаций.

Сделал это на Node.js с выводом полученных результатов в локальный html файл с интерактивной таблицей от Google Charts (а в случае, если JavaScript отключен в браузере, что например происходит при открытии этого html файла из мессенджера на iPhone, то отображается статическая версия таблицы, также сгенерированная скриптом).

Существующие сервисы и мои параметры для поиска


Существующих сервисов довольно много:


В разное время я пользовался всеми из них, причем некоторые из них были платные. Что мне не нравилось в этих сервисах так это обилие параметров, в которых легко погрязнуть и которые не ведут к желаемому результату.

Мой желаемый результат актуальная выборка из всех российских облигаций по следующим параметрам:

  1. Заданный диапазон текущей доходности.
  2. Заданный диапазон текущих цен.
  3. Заданный диапазон дюрации.
  4. Объем сделок за последние n дней больше порогового.
  5. Ответ на вопрос есть ли налоговая льгота для корпоративных облигаций, выпущенных после 1 января 2017 года?

Конкретные цифры диапазонов могут быть любыми, например:

  • 5% < Доходность < 11%
  • 98% < Цена < 101%
  • 4 мес. < Дюрация < 15 мес.
  • Объем сделок за n дней > 15 000 шт.

А на выходе я бы хотел получать не больше 2-х десятков вариантов, которые точно попадали бы под моим критерии. Если вариантов находится больше, то лучше ужесточить свои критерии для получения меньшей по размеру выборки, которая бы точно соответствовала моим ожиданиям.

Облигации на Московской бирже доступны внутри основных режимов торгов:

  • Т0: Основной режим безадрес. (до 22.05.2020: 1443 бумаг, в июне 131 шт.).
  • Т+: Основной режим безадрес. (до 22.05.2020: 295 бумаг, в июне 1638 шт.).
  • Т+: Основной режим (USD) безадрес. (до 22.05.2020: 125 бумаг, в июне 128 шт.).

Облигаций много, именно потому автоматизированное решение поиска мне кажется правильным шагом.

Мой скрипт поиска облигаций на Московской бирже


Я понимаю, что человек, которому необходим поиск облигации может и не разбираться в программировании, а тому, кто легко разберется в коде этого скрипта облигации могут быть неинтересны. И разбирающихся в программировании на Хабре явно больше, чем тех, кто разбирается облигациях.

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

Ещё одно очень важное отступление в скрипте всё напрямую зависит от работы API Московской биржи, которое имеет свои особенности.

Если говорить про поиск облигаций, то сразу после открытия торгов значения доходности по средневзвешенной цене (YIELDATWAPRICE) обнуляются.


Схема определения средневзвешенной цены (WAPRICE)

Значение YIELDATWAPRICE на мой взгляд выглядело лучше для целей поиска, но пришлось использовать YIELD, иначе сразу после открытия биржи работа скрипта была невозможна.

Ещё я использую цену предыдущего закрытия (PREVLEGALCLOSEPRICE), из-за того что по некоторым облигациям торгов может не быть несколько дней.


Схема определения цены закрытия (LEGALCLOSEPRICE)

Чтобы уменьшить количество обращений к API Московской биржи я использую значение дюрации (DURATION), а не беру готовое значение количества дней до погашения (DAYSTOREDEMPTION), ведь я пользуюсь собственным скриптом только в личных целях.

Распишу подробно все шаги которые нужны для работы моего скрипта.

Самое главное что понадобится для работы скрипта Node.js. Это среда выполнения JavaScript. Если раньше JavaScript можно было запустить только в браузере, но однажды разработчики расширили его, и теперь можно запускать JS на своем компьютере в качестве отдельного приложения.

Исходный код моего скрипта размещен на GitHub, и любой может свободно просматривать, проверять и может быть даже посоветует правки.

Поиск облигаций под Windows


Это будет самый подробный раздел, потому что большинство пользователей, которым это интересно, скорее всего, работают под Windows.

Для Windows доступен установщик Node.js в разделе загрузить официального сайта.


Раздел загрузки сайта проекта Node.js

Далее скачиваем установщик для Windows и запускаем его.


Выбор компонентов для установки Node.js

Кроме компонентов, находящихся на этом экране, больше ничего устанавливать не надо.

Скачиваем код скрипта с гитхаба.


Ссылка на скачивание с GitHub

После этого переходим каталог /SilverFir-Investment-Report-master/Node.js Release/bond_search_v2/, где находятся скачанные файлы:


Каталог с необходимыми для запуска проекта файлами

И запускаем файл first start.bat, который содержит указание показать установленную текущую версию Node.js и установить необходимую для запуска проекта зависимость node-fetch:

node -vpausenpm install node-fetch

Несмотря на такое короткое содержание Защитник Windows проявляет бдительность, но если нажать подробнее, то можно увидеть кнопку Выполнить в любом случае:


Первоначальная настройка запуска проекта


Во время выполнения bat файла

После нажатия любой клавиши зависимость будет установлена в эту же папку:


Каталог вместе с добавленными файлами

После этого всё готово для запуска скрипта поиска облигаций. Для этого запускаем файл start.bat:


Выполнение скрипты поиска облигаций. После запуска файла start.bat

Менее чем за минуту будет создан HTML файлов с текущей датой и временем в имени он и содержит в себе найденные результаты.

Поиск облигаций под macOS


Для macOS доступен установщик Node.js в разделе загрузить официального сайта.

Сам процесс похож на установку под Windows и Linux.

Поиск облигаций под Linux


Если на вашем компьютере установлен Linux, скорее всего вы и сами знаете как лучше сделать. Код скрипта доступен на гитхабе. Перейдите в каталог /SilverFir-Investment-Report-master/Node.js Release/bond_search_v2/.

Проверьте что Node.js установлена:
$ node -v

Проверьте что пакетный менеджер npm для Node.js установлен:
$ npm -v

Установите зависимости (в данном случае это только node-fetch):
$ npm install

Запустите файл скрипта:
$ npm start

Примерно за минуту html файл под именем файл bond_search_${new Date().toLocaleString().replace(/\:/g, '-')}.html будет создан.


Выполнение работы скрипта под Linux

Выборка облигаций


Я не сразу пришел именно к такой форме отчета, потому что я хотел чтобы этот файл отображался на любом устройстве и был удобен для просмотра. Больше всего проблем доставили айфоны JS на них отключен и при пересылке этого отчета через любой мессенджер вместо интерактивной таблицы открывалось просто пустое место. Так что я дописал генератор обычных html таблиц.

Получились следующие виды:


На компьютере


На Android


На iPhone

Редактирование параметров выборки


Самое важное настроить именно те параметры, которые важны именно вам, а не те, которые указал я для примера. Сделать это можно в файле index.js, со строки 39.


Задаваемые параметры поиска

Указываете нужные вам цифры, запускаете скрипт заново и примерно за минуту выборка готова.

Итог


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

Скрипт работает только за счет API Московской биржи, которое предоставляет широкие возможности. Также хочу отметить, что я никак не связан с Московской биржей и использую ИСС Мосбиржи только в личных интересах.

Автор: Михаил Шардин,

22 июня 2020 г.
Подробнее..

Из песочницы Когда программисту 1С становится скучно

14.11.2020 14:23:20 | Автор: admin
Биржевой спекулянт инвестор базовая версия.

Когда программисту 1С становится скучно, он пытается скрасить свое свободное время так, как умеет. А умеет он только программировать. При этом навыками работы с биржевыми инструментами программист зачастую не обладает. Так рождается программа. Потом она становится умнее. Потом она уже не требует участия программиста.

image

Программа выполнена на платформе 1С Предприятие 8. Тестировалась в режиме файловой версии на платформе Windows 10. Работоспособность программы возможна так же в трехзвенной архитектуре 1С Предприятие 8 в Windows подобных средах. Это обусловлено механизмами, которые используются внутри программы.

1. Источники данных (информация биржевой системы)

В качестве источника данных используется Биржевой Терминал Quick 8.7.

Для обмена в качестве источника информации используется база данных Microsoft Access

image

Для загрузки заданий в систему используется механизм обмена, использующий файлы обмена.

image

2. Рабочий стол программы

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

image

А именно: это текущая биржевая информация, поступающая в реальном режиме времени и конечно же текущее стояние портфеля имеющихся биржевых инструментов. Портфель конечно же лучше отразить как минимум в трех ракурсах: по стратегии, по отрасли инструмента, по дополнительной классификации инструмента относительно биржевой ситуации.

3. Под капотом программы

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

image

Здесь все основано на типовых механизмах, имеющихся в платформе 1С Предприятие.

4. Справочник Биржевые инструменты станет местом хранения информации по каждому биржевому инструменту.

image

image

5. Документ Данные импорта Quick поможет принимать из внешней системы данные о ситуации на бирже.

image

6. Документ Задание на покупку инструментов поможет передать во внешнюю систему информацию от том, что мы хотим купить.

image

7. Документ Задание на продажу инструментов поможет нам передать во внешнюю систему информацию о том, что мы хотим продать.

image

8. Обратно из внешней системы информация будет поступать в виде документов Покупка инструментов и Продажа инструментов.

image

9. Чтобы посмотреть итог того, что мы накупили потребуется отчет Наличие инструментов

image

10. Чтоб посмотреть, что мы продали потребуется отчет Продажи инструментов

image

11. Попытаемся сделать программу умнее

Добавим возможность хранения хронологии поступивших из внешней системы данных по цене.

image

И по другим параметрам.

image

image

12. Попробуем анализировать и прогнозировать данные на основании поиска в системе похожих комбинаций поведения. Нам понадобится инструмент, который на основе текущей ситуации по инструменту на рынке подберет аналогичные ситуации по другим инструментам и позволит спрогнозировать цену.

image

13. Само собой не стоит забывать и о встроенных в платформу механизмах анализа и прогнозирования.

image

image

image

image

14. Так как Торговый Терминал уже обладает богатым механизмом графического анализа, то повторять его нам нет смысла. Если только немного.

image

15. Осталось добавить настройки/ константы. И запустить программу в самостоятельно плавание.

image

image

image

image

Даже не ожидал, что получится самообучающаяся система, которая возможно когда-то и заработает денег на бирже. Осталось дождаться роста рынка и везения.
Подробнее..

Построение системы машинного обучения типовыми средствами 1С Предприятие 8. (Когда программисту 1С все еще скучно)

29.04.2021 14:14:31 | Автор: admin
Начало в статье Когда программисту 1С становится скучно
habr.com/ru/post/528040

В настоящее время существует множество систем машинного обучения. Технология бурно развивается. Разные производители решений предлагают разные варианты решения задачи. Скорее всего для разных сфер и решения требуется выбирать разные. Нельзя сказать какие технологии обладают наибольшим потенциалом, не проведя соответствующего сравнения. Но для того, чтобы тема была действительно интересной требуется взять что-то не зависящее от региона проведения исследования. Что-то общее для всей страны.

<img src="" alt=image/>



Возьмем за основу задачу прогнозирования цены акций компаний на Московской бирже. Если рассматривать каждый биржевой инструмент, как отдельную сущность, жизнь которой развивается независимо от других биржевых инструментов, то и методы анализа для каждого инструмента требуется подбирать разные.
Для того чтобы оценить какие методы прогнозирования для каждого инструмента подходят или не подходят нам необходимо хранить информацию о вариантах прогнозирования для каждого биржевого инструмента. В платформе 1С несколько вариантов прогнозирования. Создадим механизм хранения информации о применимости/или не применимости каждого варианта.

<img src="" alt=image/>

Для того, чтобы оценить, насколько точно сбываются прогнозы, созданные системой, самый простой вариант на основании имеющейся у нас исторический информации построить прогноз системы на определенную дату, а затем сравнить его с реальными историческими данными. Пример: у нас накопились исторические данные по ценам акций на Московской бирже за последний год. Представим, что сегодня 15 января 2021 года и построим прогноз цены закрытия биржевого инструмента на 16 января 2021 года. А затем сравним полученный прогноз с реальными данными которые были 16 января. Проведем данный анализ за более длительный интервал и получим вероятность срабатывания прогноза. Если быть точнее, то количество случаев, когда прогноз сбылся или не сбылся.
Типовые средства прогнозирования 1С позволяют получить прогноз либо как определенное значение точно равное числу, либо значение ценового диапазона с по.
Предположим, что перед нами стоит задача предсказать на растущем рынке определенное значение цены закрытия по дням на Московской бирже.
В случае, когда прогноз 1С возвращает однозначное знание возьмем именно его. А в случае когда прогноз возвращает диапазон с по будем рассматривать, как значение прогноза, средину диапазона. При этом удачным прогнозом будем считать, что предсказанная цена оказалась ниже, чем реально сложившаяся историческая цена. Т.е. например бумага открылась по цене 100 рублей. Прогноз 1С был, что она закроется вечером по 150 рублей. А реальная историческая цена закрытия оказалась 151 рубль (более, чем 150 рублей).

В специально созданной для этих целей обработке зададим первоначальные настройки для анализа: Период анализа, анализируемые методы и анализируемый инструмент / инструменты.

<img src="" alt=image/>

Получим данные по каждому анализируемому дню.

<img src="" alt=image/>

<img src="" alt=image/>

Для того чтобы получить вероятность срабатывания прогноза сгруппируем данные по количеству случаев и определим вероятность как: количество положительных срабатываний прогноза к общему количеству попыток анализа.

<img src="" alt=image/>

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

<img src="" alt=image/>

Хотя в целом вероятность 80 % тоже является достаточно хорошим критерием и тогда картина подходящих стратегий будет, как на рисунке.

<img src="" alt=image/>

В целом для данного инструмента картина применимости типовых стратегий прогнозирования выглядит как на рисунке.

<img src="" alt=image/>

Конечно, анализировать в ручном режиме каждый инструмент увлекательно занятие, но следом приходит идея сделать автоматически анализ регламентным заданием. Для того, чтобы хранить результаты этого анализа нам понадобится регистр сведений.

<img src="" alt=image/>

А для того, чтобы настроить регламентное задание понадобятся константы (настройки).

<img src="" alt=image/>

Конечно, о применимости или не применимости данного механизма можно спорить долго. Но интересно наблюдать за процессом. По сути, каждый Биржевой инструмент оказался своего рода живим. Каждый живет своей жизнью. Жизнь одних предсказуема или частично предсказуема. Жизнь других на данный момент трудно поддается анализу.

<img src="" alt=image/>

<img src="" alt=image/>

<img src="" alt=image/>

Но в целом не просто наблюдать движения цен, а получать еще и прогноз гораздо увлекательнее.

<img src="" alt=image/>

Детали можно почитать в документации
disk.yandex.ru/d/nm2ZTNl8MoOyXw?w=1

Ну что сказать: устроены так люди, желают знать, что будет
Подробнее..

Гугл финанс перестал транслировать данные российских акций что делать?

15.06.2021 06:21:37 | Автор: admin

С 5 июня 2021 года сайт гугла, и самое главное гугл таблицы - перестали отдавать данные с Московской биржи.

При попытке получить котировки с префиксом MCX, например для Сбербанка, формулой из гугл таблиц =GOOGLEFINANCE("MCX:SBER") теперь всегда возвращается результат #N/A.

А при поиске любой российской бумаги на сайте Google находятся все рынки, кроме Московской биржи:

Попытка поиска котировки Sberbank of Russia на сайте https://www.google.com/finance/quote/MCX:SBER Попытка поиска котировки Sberbank of Russia на сайте https://www.google.com/finance/quote/MCX:SBER

В этой статье я рассказываю как получать в гугл таблицу биржевые данные с помощью API Московской биржи.

Копирование формул из таблицы-примера в ваши собственные таблицы

Вы можете свободно копировать формулы из моей таблицы с примером для использования в собственных таблицах, потому что на формулах нет и не может стоять никакой защиты.

Если после копирования из таблицы-примера в вашу таблицу формула не работает, то проверьте региональные настройки вашей таблицы.

Моя таблица с примером получения данных с Московской биржиМоя таблица с примером получения данных с Московской биржи

Я использую регион Соединенные Штаты, а если по умолчанию ваш регион Россия, то формулы корректно НЕ копируются!

Вот подробная инструкция как проверить региональные настройки конкретной таблицы:

  • Откройте файл в Google Таблицах на компьютере.

  • Нажмите Файл затем Настройки таблицы.

  • Выберите нужные варианты в разделах "Региональные настройки".

  • Нажмите Сохранить настройки.

    Как изменить региональные настройки и параметры расчетовКак изменить региональные настройки и параметры расчетов

Если вы не хотите менять регион в своей собственной таблице, то можно просто изменить разделитель в формуле. Для корректной работы надо изменить разделитель с запятой на точку с запятой.

Получение названий акций и облигаций

Гугл таблица с примерами автоматического получения имени для разных классов активовГугл таблица с примерами автоматического получения имени для разных классов активов

Можно получать названия акций и облигаций используя сервера Московской Биржи вместо переставшего работать гугл финанса. Сама формула при этом выглядит следующим образом:

=IMPORTxml(    "https://iss.moex.com/iss/engines/stock/markets/" &      IFS(                 or(            B3 = "TQOB",            B3 = "EQOB",            B3 = "TQOD",            B3 = "TQCB",            B3 = "EQQI",            B3 = "TQIR"        ),        "bonds",                 or(            B3 = "TQTF",            B3 = "TQBR",            B3 = "SNDX",            B3 = "TQIF"        ),        "shares"    )  & "/boards/" & B3 & "/securities.xml?iss.meta=off&iss.only=securities&securities.columns=SECID,SECNAME",      "//row[@SECID='" & A3 & "']/@SECNAME")

Получение цен акций и облигаций

Гугл таблица с примерами автоматического получения цен акций и облигацийГугл таблица с примерами автоматического получения цен акций и облигаций

Можно получать цены акций и облигаций используя сервера Московской Биржи вместо переставшего работать гугл финанса. Сама формула при этом выглядит следующим образом:

=IMPORTxml(    "https://iss.moex.com/iss/engines/stock/markets/" &      IFS(                 or(            B10 = "TQOB",            B10 = "EQOB",            B10 = "TQOD",            B10 = "TQCB",            B10 = "EQQI",            B10 = "TQIR"        ),        "bonds",                 or(            B10 = "TQTF",            B10 = "TQBR",            B10 = "SNDX",            B10 = "TQIF"        ),        "shares"    )  & "/boards/" & B10 & "/securities.xml?iss.meta=off&iss.only=securities&securities.columns=SECID,PREVADMITTEDQUOTE",      "//row[@SECID='" & A10 & "']/@PREVADMITTEDQUOTE")

Получение даты и значения дивиденда для акций

Гугл таблица с примерами автоматического получения дат и значений дивидендов для акций Гугл таблица с примерами автоматического получения дат и значений дивидендов для акций

Можно получать даты и значения дивидендов для акций, используя сервера Московской Биржи. У гугл финанса такого функционала никогда не было для российских акций. Сама формула при этом выглядит следующим образом:

=iferror(     INDEX(         IMPORTxml(            "http://iss.moex.com/iss/securities/" & A22 & "/dividends.xml?iss.meta=off",            "//row[@secid='" & A22 & "']/@value"        )  ,         ROWS(            IMPORTxml(                "http://iss.moex.com/iss/securities/" & A22 & "/dividends.xml?iss.meta=off",                "//row[@secid='" & A22 & "']/@value"            )        )  ,        1    )  ,    "нет")

Получение даты купона и значения для облигаций

Гугл таблица с примерами автоматического получения дат купонов и значений для облигацийГугл таблица с примерами автоматического получения дат купонов и значений для облигаций

Можно получать даты и значения купонов для облигаций, используя сервера Московской Биржи. У гугл финанса такого функционала никогда не было для российских облигаций и вообще облигаций в сервисе нет. Сама формула при этом выглядит следующим образом:

=IMPORTxml(    "https://iss.moex.com/iss/engines/stock/markets/" &      IFS(                 or(            B12 = "TQOB",            B12 = "EQOB",            B12 = "TQOD",            B12 = "TQCB",            B12 = "EQQI",            B12 = "TQIR"        ),        "bonds",                 or(            B12 = "TQTF",            B12 = "TQBR",            B12 = "SNDX",            B12 = "TQIF"        ),        "shares"    )  & "/boards/" & B12 & "/securities.xml?iss.meta=off&iss.only=securities&securities.columns=SECID,NEXTCOUPON,COUPONVALUE",      "//row[@SECID='" & A17 & "']/@COUPONVALUE")

Получение даты оферты

Гугл таблица с примерами автоматического получения дат оферт для облигацийГугл таблица с примерами автоматического получения дат оферт для облигаций

Можно получать оферты облигаций, используя сервера Московской Биржи. У гугл финанса такого функционала никогда не было для российских облигаций и вообще облигаций в сервисе нет. Сама формула при этом выглядит следующим образом:

=IFNA(     IMPORTxml(        "https://iss.moex.com/iss/engines/stock/markets/" &          IFS(                         or(                B27 = "TQOB",                B27 = "EQOB",                B27 = "TQOD",                B27 = "TQCB",                B27 = "EQQI",                B27 = "TQIR"            ),            "bonds",                         or(                B27 = "TQTF",                B27 = "TQBR",                B27 = "SNDX",                B27 = "TQIF"            ),            "shares"        )  & "/boards/" & B27 & "/securities.xml?iss.meta=off&iss.only=securities&securities.columns=SECID,OFFERDATE",          "//row[@SECID='" & A27 & "']/@OFFERDATE"    )  ,    "нет")

Источник данных

Если вы хотите разобраться во всех нюансах работы - откуда берутся данные, то вы, также как и я можете обратиться к официальной документации к информационно-статистическому серверу Московской Биржи (ИСС / ISS). Правда, изучая этот документ, вы можете обнаружить что большая часть интересных функций, приведенная в этой статье, в документе никак не отображена.

Итоги

Король умер, да здравствует король! Считалось, что трон никогда не должен пустовать, поэтому после смерти короля сразу же объявлялся следующий правитель.

Как и в случае c сервисом Google Финансы, который перестал выдавать российские результаты мы видим что можно использовать API Московской биржи, которое предоставляет широкие возможности.

Эти формулы работают только за счет API Московской биржи, с которой я никак не связан. Использую ИСС Мосбиржи только в личных информационных интересах.

Автор: Михаил Шардин,

15 июня 2021 г.

Подробнее..

Инструменты для алготрейдинга на Python. Расчет дневного изменения цены

27.05.2021 16:21:56 | Автор: admin

Привет, Хабр! Сегодня я хочу начать свой цикл статей по алготрейдингу.

Первым делом расскажу о самом простом индикаторе ожидаемой доходности ценной бумаги - дневное изменение цены.

Дневное изменение цены - это отношение цены закрытия текущего дня к цене закрытия предыдущего дня. Говоря простым языком, это процент, на который выросла или упала ценная бумага за 1 день.

Сам по себе этот индикатор не сильно полезен - он просто показывает дневное изменение цены. Но, вот, если мы накопим статистику за какой-либо период (например, за месяц), мы можем рассчитать медиану и, тем самым, попытаться предсказать ожидаемую прибыль за 1 день.

Перейдем к практике:

Для проведения расчетов нам понадобится:

  1. Данные об изменениях цен (вполне сойдет API Мосбиржи)

  2. Знание Python и его библиотек Pandas и Matplotlib

  3. Трейдерская чуйка (уверен, если вы читаете эту статью, то она у вас есть)

Весь код я приведу в ноутбуке на google colab

Далее я буду рассказывать о дневном изменении стоимости ценных бумаг за период с 1 января 2021г. по 25 мая 2021г.

Для примера, возьмем акции компании Лукойл (тикер LKOH). Для них распределение дневного изменения цены выглядит следующим образом:

Для акций Лукойла за период с 1 января 2021 года по 25 мая 2021 года мы имеем медиану, равную 0,26%. Это означает, что если завтра не предвидится никаких хороших или плохих новостей, то мы можем ожидать рост стоимости акций на 0,26%

Для понимания разброса значений мы должны рассчитать нижнюю и верхнюю квантили.

ticker

median

q005

q05

q25

q75

q95

q995

LKOH

0.0026

-0.036

-0.026

-0.01

0.011

0.032

0.035

Рассчитав квантили q25 и q75 мы видим, что 50% всех значений дневного изменения цены лежат в диапазоне [-1%; 1,1%]. Т.е., согласно статистике, в 5 из 10 торговых сессиях, цена акции Лукойла упадет не более чем на -1% или вырастет не более чем на 1,1%.

Рассчитав квантили q005 и q995 мы видим, что 99% всех значений дневного изменения цены лежат в диапазоне [-3,6%; 3,5%]. Т.е., согласно статистике, почти во всех торговых сессиях, цена акции Лукойла упадет не более чем на -3,6% или вырастет не более чем на 3,5%.

Рассчитав квантили q05 и q95 мы видим, что 90% всех значений дневного изменения цены лежат в диапазоне [-2,6%; 3,2%]. Т.е., согласно статистике, в 9 из 10 торговых сессиях, цена акции Лукойла упадет не более чем на -2,6% или вырастет не более чем на 3,2%.

Визуализация этого распределения будет выглядеть следующим образом:

Следующим этапом является разделение данных на месячные периоды. В таком случае, основные квантили будут иметь следующие значения:

month

ticker

median

q005

q05

q25

q75

q95

q995

2021-01-01

LKOH

0.0032

-0.022

-0.029

-0.007

0.011

0.033

0.032

2021-02-01

LKOH

0.0041

-0.027

-0.028

-0.010

0.014

0.027

0.027

2021-03-01

LKOH

0.0029

-0.028

-0.027

-0.006

0.014

0.034

0.035

2021-04-01

LKOH

-0.0005

-0.019

-0.019

-0.011

0.005

0.015

0.015

2021-05-01

LKOH

0.0023

-0.022

-0.024

-0.013

0.016

0.027

0.022

Видим, что в апреле 2021г. медиана стала отрицательной, что намекает нам об открытии коротких позиций в этом месяце. Визуализировав эти цифры мы получим следующую картинку:

В следующей статье расскажу про индикатор "Полосы Боллинджера".

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru