Как тинькофф считает доходность в инвестициях

Что не показывает аналитика в Тинькофф Инвестициях. Подробно разбираем свой портфель

У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.

Текущая аналитика брокера показывает лишь открытые позиции, а профиль в пульсе подсчитывает только общий процент, без конкретики. Это не дает возможность увидеть «настоящую» картину своего портфеля.

К примеру, покупаем 1 акцию по 1000, после падения до 900 усредняем еще одной акцией. Затем при отскоке до 950 продаем 1 акцию. В итоге оставшаяся акция в портфеле «горит зеленым» (образуется плюс +50 по правилу fifo), хотя фактический результат бумаги на данный момент будет 0 (без учета комиссий). Такое отображение бумаг в приложении может сбить с толку, и привести к неправильным решениям и большим потерям, при совершении множества сделок.

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

В статье я продемонстрирую, как пользоваться созданным инструментом, и какие задачи решаются. Подсвечу некоторые особенности данных полученных из API.

Об инструменте, немного лирики

Мои первые шаги по анализу истории были сделаны года два назад. Результатом были таблицы, которые помогали мне закрыть любые вопросы:

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.Скрин статистики 2020 года

Я даже периодически делал разного роды выгрузки друзьям и знакомым. Передавать VM/doсker образ со скриптами людям без навыков в IT было сложно, поэтому делалось все мною вручную. Зародилась мысль автоматизировать и вывести процесс в онлайн.

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

Позже к разработке подключился друг. И вот мы больше года держим сервер, где крутятся наши наработки на python (Telegram-боты, скринеры и прочее). К примеру, боты уведомляют о различных событиях по акциям наших портфелей.

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

Результатом полуторамесячной работы по выходным стал сайт https://tstocks.ru/, который использует:

Front: ReactJS (Nginx)

Backend: Python Flask

Сайт должен работать во всех современных браузерах.

Ближе к делу, как загрузить данные для анализа

Для анализа требуется история сделок, которую можно забрать в формате json из API Тинькофф. Пример для curl, а ниже будут команды и для Winodws.

Следует ознакомиться с правилами использования OpenApi Тинькофф. Никому не передавайте токен и не оставляйте его в истории команд, т.к. с помощью него можно совершать операции. Если вы считаете, что токен мог быть скомпрометирован, то отзовите его на странице банка https://id.tinkoff.ru/account

Если вы ранее не работали с консолью, и у вас вопросы по использованию команд, то лучше спросите в ЛС/комментариях перед использованием.

Параметры запроса CURL

Можно изменить параметры запроса в url к api-invest.tinkoff.ru/openapi/operations:

brokerAccountId можно получить командой:

Json не содержит API токен и прочую личную информацию. Исключить передачу токена было главной целью.

Некоторые операции имеют вложенный элемент «trades»

Далее эти данные загружаются на сервер, в json ответе возвращается sha1 hash ваших операций (именуемый id).

Получение и импорт сделок можно поместить в одну команду:

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.повторный импорт

При повторном импорте, если данные по сделкам не изменились, то будет выдан тот же id, а загрузка пропущена.

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.

*Nginx имеет небольшие лимиты на повторный импорт

Пример для Windows:

Сохраняем историю сделок в файл

brokerAccountId можно получить командой:

Отправляем файл на сервер

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

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

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

Id это sha1 хэш, который достаточно уникальный и длинный для перебора. Просмотреть сделки сможет любой, кто знает id, что может быть удобно для передачи его другу-инвестору.

Имеется кнопка удаления данных по id, а также в планах ввести время жизни загруженного портфеля.

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.

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

Статистика по инструментам

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

а) Смотрим доходность торговли по конкретной бумаге

Почти два года назад я наивно игрался с «шортами Tesla», и мне было интересно сколько дохода это приносит. С этого кейса родилась идея извлекать данные из API.

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

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.

Поясню значения столбцов:

Немного боли с расчетом

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

Бумаги покупаются и продаются частями в разное время, требуется раскрывать и упорядочивать сделки, соблюдая правило FIFO, еще у некоторых акций огромные лоты (*в TGKB миллион шт.)

Все расчеты ведутся в БД, т.ч. пришлось повозиться с оптимизацией sql запросов и функций, чтобы это работало очень быстро. Для оптимизации использовал https://explain.dalibo.com/

Figi содержит ссылку, по которой открывается вся история по бумаге:

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.Пример истории по FIGI

*для демонстрационного портфеля некоторые подробности недоступны

**комиссия за маржинальную торговлю не привязана к конкретному figi, ее можно посмотреть на вкладке «Прочие платежи»

б) Смотрим то, что не видно в приложении при фиксации убытков, или активной торговле

Скоро конец года, и для снижения налога на доход я зафиксировал убыток по FEES, и снова выкупил акции. Открыв приложение брокера, я даже увижу прибыль (столбец «Доход текущий»). А если зафиксировать все убытки, то можно увидеть «зеленый» портфель в приложении.

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.

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

в) Ищем бумаги, которые принесли наибольшую прибыль за все время

Столбцы таблицы поддерживают фильтрацию, сортировку и группировку по нескольким столбцам. Сортировка осуществляется кликом по нескольким столбцам через SHIFT, группировка осуществляется через меню-ПКМ в требуемой последовательности. При группировке некоторые числовые столбцы показывают итог с суммой, минимальным и максимальным значением

Группируем или фильтруем по валюте и сортируем по «Общему доходу»

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.

г) Считаем дивиденды

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

Обратил внимание, что TCS($) принес большие дивиденды, и огромную доходность (* считаю как отношение всего оборота доходов/расходов).

Понимаю, что этот доход скорее всего относится к рублевой акции, т.к. сумма достаточно большая. Почти все, кто использовал Тинькофф API знают, что TCS и TCSG раньше висели на одном FIGI, и создавали головную боль. Пришлось ввести простой костыль, который меняет FIGI в зависимости от валюты.

Но особенность в том, что даже в терминале по этим тикерам не видно информации по данным выплатам:

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.История в терминале

В ленте приложения эти событие отображается, и при клике переводит в TCS ($)

Но и в истории тикеров данной информации нет:

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.TCS Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.TCSG

е) Еще один необычный пример. По STX статистика показывает отрицательное количество акций.

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.

*в данном случае эмулируется шорт-позиция. Доход рассчитывается, словно я продал по 98, а выкупить сейчас можно по 104

Видимо у Seagate когда-то сменился figi. Такая же история в официальном терминале, т.е. я словно из воздуха получил и продал эти акции, никакого наследования не видно. Техподдержка отправила в брокерский отчет смотреть сумму покупки по старому isin (IE00B58JVZ52):

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.Вся история по STX в терминале

Есть еще минусы анализа данных из API, которые опишу в конце статьи.

е) Ищем «залежавшиеся» акции через столбец «дней с последней сделки»

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.

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

Отклоненные операции

Таблица может быть полезна для обнаружения несработавших тейк-профитов/стоп-лосс, попыток купить/продать акцию.

Например, у меня стоял тейпрофит на TGKN, выставивший заявку, которая не исполнилась.

Несработавший тейк/стоп придется переставлять вручную.

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.

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

В примере ниже видны мои попытки купить ISKJ, который взлетел в 3.5 раза за короткий промежуток времени.

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.

Есть и обратные примеры, куда к счастью не удалось войти. Мне такой анализ позволяет вспомнить, чем я руководствовался и немного порефлексировать:)

Прочие операции

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.

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

Дополнительные столбцы с датами позволяют удобнее фильтровать/группировать данные по периодам, а одна из таблиц уже сгруппирована по месяцам, валюте и типу.

Анализируя траты на оплату тарифа «Трейдер», я заметил, что в августе 2021 год плата списалась с меня 2 раза. Я даже подумал, что это глюк API:

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.Пример ручной группировки

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.

Ответ тех. поддержки я не очень понял. Судя по всему, я с каких-то пор стал привязан к расчетному периоду и дате платежа (22-е). Хотя мне казалось, что если я заплатил 05.08.2021, то могу торговать до 04.09.2021.

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

Проблемы анализа через API

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

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

По этой же причине не берусь считать суммарный итог портфеля.

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

Пока что не учитываю налоги, т.к. цель показать общую картину без тонкостей: учета ИИС; W-8BEN; сроков владения и т.д.

За последние годы приложение Тинькофф стало лучше, появились скринеры, группы, заметки. Но я до сих пор не нашел способа фильтровать/сортировать инструменты своего портфеля. Не раз писал предложения по улучшению, в том числе на Хабре. Как раз статья @softandironвдохновила меня оживить забытый инструмент.

Я показал лишь часть ярких примеров использования. В будущем планируется расширить функционал сайта https://tstocks.ru/

Как вам в целом такой формат загрузки, преобразования и отображения данных?Пользуйтесь ли вы сторонними инструментами, и помогают ли они пролить свет на портфель? Хватает ли вам штатного функционала брокера?

Таблицы несложно расширить, пишите, чего не хватает, сообщайте о недочетах и делитесь общим впечатлением.

Источник

Что недоговаривают Тинькофф Инвестиции. Вытаскиваем все данные по портфелю через API в большую таблицу Excel

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

Описание проблемы

Рассмотрю на примере своего портфеля (не ИИС) в мобильном приложении. (С даты публикации приложение может обновиться).

На главном экране видим ободряющие значения:

Как тинькофф считает доходность в инвестициях. 89cf33dc655490a5accf416927eb280d. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-89cf33dc655490a5accf416927eb280d. картинка Как тинькофф считает доходность в инвестициях. картинка 89cf33dc655490a5accf416927eb280d. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.

У меня здесь сразу возникают вопросы:

Каким образом была посчитана эта зелёная сумма и 12,21%? Причём, несколько дней назад у меня было что-то около +17%, потом я зафиксировал одну бумагу с профитом, стоимость портфеля почти не изменилась, а вот этот зелёный «общий процент» сразу упал до 12,21.

Мой портфель почти полностью в иностранных бумагах и USD. Каким образом это было переведено в рубли: по курсу ЦБ или по рынку?

Сколько от этой суммы у меня реально останется после уплаты налогов и комиссий, если я продам весь портфель и выведу деньги?

Заходим в раздел Портфельная аналитика, и находим там уже другие значения:

Как тинькофф считает доходность в инвестициях. 8a5a713c4b92013a3bb30d11971581b1. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-8a5a713c4b92013a3bb30d11971581b1. картинка Как тинькофф считает доходность в инвестициях. картинка 8a5a713c4b92013a3bb30d11971581b1. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.

Почему на главной странице было +955 644, а здесь почти на 2 миллиона больше?

Кстати, здесь уже можно посмотреть результаты за год, приложение выводит сумму, но не процент.

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

Как тинькофф считает доходность в инвестициях. 3d93c7fe6fee17beb5acdb71114f5dc9. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-3d93c7fe6fee17beb5acdb71114f5dc9. картинка Как тинькофф считает доходность в инвестициях. картинка 3d93c7fe6fee17beb5acdb71114f5dc9. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.

Вот это результат! Посмотрим по-подробнее.

Как тинькофф считает доходность в инвестициях. d0309488f00b14323767aeae54f000d5. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-d0309488f00b14323767aeae54f000d5. картинка Как тинькофф считает доходность в инвестициях. картинка d0309488f00b14323767aeae54f000d5. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.

Здесь приведены результаты по месяцам. За 4 месяца текущего года +6,67%, а если посмотреть на 2020 год, там у меня +31,41%. Для сравнения, если не ошибаюсь, S&P 500 за 2020 год вырос на 16,26%. Не совсем понимаю, как я мог его так обогнать, если только дело не в курсовой разнице. В любом случае, это не вяжется с обозначенными на главном экране +12,21% за всё время, т.к. 2019 и 2018 года тоже зелёные. В общем, не понятно, как и в какой валюте они считают, надо разбираться.

Поиск решения

Чтобы внести больше ясности в процесс инвестирования, сделать этот процесс более осознанным, мне нужно:

Разобраться, как вычисляются значения, отображаемые в мобильном приложении

Выяснить реальные показатели эффективности портфеля

Узнать общие суммы налога и комиссий, которые я уплатил за всё время

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

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

Собрать все возможные данные по портфелю и визуализировать их в удобной для меня форме, такой как таблица Excel, с которой я смогу дальше работать средствами самого Excel или Google Sheets.

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

Проблема только в том, что я не программист и с банковскими API раньше не работал. Видимо, пришла пора попробовать.

Знакомство с API

Находим официальную страницу Open API от Тинькофф:

На странице предлагаются SDK: Java, C#, Go, NodeJS.

Приведены и неофициальные: Python @daxartio,Python @Awethon, Python @Fatal1ty, PHP, Ruby.

Ничего из того, что я умею. В основном, я делал DIY проекты на Arduino-подобных контроллерах с WiFi, проектировал и заказывал для своих электронных устройств печатные платы, делал небольшие одностраничные WEB-интерфейсы и телеграм-боты для взаимодействия с этими устройствами. Т.е., в основном я работал с железом и писал прошивки на Arduino Wiring (на основе C++).

Из представленного списка мне больше всего импонировал Python, я писал на нём что-то на уровне print(‘Hello World’) и давно хотел познакомиться поглубже. Поэтому, я решил, что буду делать проект с Тинькофф API на Python.

Это сильно помогло мне продвинуться на начальном этапе: понять, как получать данные с API.

Если коротко, работает это так:

Устанавливаем и настраиваем его на своей машине

Устанавливаем через PIP библиотеку tinvest

Открываем редактор кода, например Idle, импортируем установленную библиотеку:

Создаём объект для дальнейшей работы с API:

В my_token выше подставлем свой API key, который получаем в личном кабинете брокера.

Я не стал пробовать в демо-счёте, сразу указал API своего реального портфеля.

Создаём объект с позициями портфеля:

positions = client.get_portfolio() Это сложный массив, который содержит информацию по каждой бумаге.

Создаём объект с операциями. Здесь указывается дата начала инвестирования и текущая дата в определённом формате.

operations = client.get_operations(from_=account_data[‘start_date’], to=account_data[‘now_date’])

Получаем рыночные курсы валют (понадобятся для дальнейших расчётов):

course_usd = client.get_market_orderbook(figi=’BBG0013HGFT4′, depth=20

course_eur = client.get_market_orderbook(figi=’BBG0013HJJ31′, depth=20)

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

for pos in positions.payload.positions:

ecxelFileName = ‘tinkoffReport_’ + today + ‘.xlsx’

Так, на этом этапе, у меня получилась небольшая программка, создающая таблицу с базовой информацией по бумагам, получаемой по API, а именно:

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

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

Писалось всё в Idle, выглядело как-то так: (НЕ ПОВТОРЯТЬ!)

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.НЕ ПОВТОРЯТЬ

Подглядывая в проекты других разработчиков на Python, я тогда ещё мало что понимал, но было очевидным, что их проекты пишутся совсем по-другому, и мне придётся менять структуру в корне.

Я решил переписать всё заново, как положено, и в более удобной среде разработки.

Знакомство с Python

В качестве более продвинутой среды, ребята с работы посоветовали PyCharm.

С ним дело пошло гораздо продуктивнее, среда автоматически дрессирует писать в соответствии с PEP8 (стандарт оформления кода).

Общие знания по Python я брал из своего любимого справочника: https://www.w3schools.com/

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

Вообще, чисто субъективно, мне этот язык сразу понравился. Порадовала краткость путей решения задач. Сложилось впечатление, что если просто нужно, чтобы что-то заработало, оно здесь заработает в два счёта, без лишних заморочек. Гуглится всё элементарно, по крайней мере, на моём уровне сложности. Чаще всего, решения находил на https://stackoverflow.com/

Структура программы

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.

Структура таблицы

— Позиции

В левой части таблицы выводится информация по текущему портфелю:

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.

Параметры (базовые, из API):

Параметры, посчитанные на основе базовых:

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

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.

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

Чтобы решить эту задачу, я придумал сделать для каждой позиции упорядоченный список (массив). Программа пробегает по всем операциям покупки, находя операции с figi данной бумаги, и каждая покупка добавляет в список количество ячеек, соответствующее количеству приобретённых бумаг. Каждая ячейка содержит значение, соответствующее цене покупки в рублях по курсу ЦБ на дату операции. А каждая продажа удаляет нужное количество ячеек из начала списка. Затем считается среднее значение по оставшимся ячейкам, так получается средняя цена покупки в рублях по курсу ЦБ.

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.

Был небольшой подвох, связанный с тем, что в списке операций от Tinkoff API есть не только выполненные, но и нулевые операции, которые пришлось отсеивать.

Чтобы API ЦБ РФ не решил, что мы его ддосим, я поставил небольшую задержку. В итоге, всё считается как надо, но этот этап обрабатывается ощутимо медленно. Чтобы обработались мои 15 позиций и 430 операций, приходится ждать около 1 минуты.

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.

Наверняка это можно как-то оптимизировать, но, в принципе, мы не торопимся.

Разобравшись с самым сложным этапом, можно составить следующие колоночки:

— Операции

Справа от раздела с позициями, выводим колоночки со всем типами операций, которые может нам предоставить Tinkoff API. Их много, на один скриншот не влезают, но на большом мониторе помещается:

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.

Под каждой колоночкой считается сумма. Это как раз то, что нам не покажет брокер. И здесь есть кое-что интересное.

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.

Теперь мы можем сравнить сумму внесённых средств и сумму выведенных (в переводе на рубли по курсу ЦБ)

Ещё можно посчитать сумму всех купонов и дивидендов, а также, внимание:

все комиссии, уплаченные брокеру, и все налоги, удержанные брокером!

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию. Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.

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

Теперь можно сделать из них выводы.

— Аналитика

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

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.

Кстати, что касается дат, я не учитывал часовые пояса, и это может где-то выплыть.

Кстати, из-за появления в портфеле позиции «Сегежа» в первый день после IPO программа не могла выполниться и выдавала ошибку. На следующий день по бумаге с API стали приходить нормальные данные и программа снова заработала.

Если что, форма W8BEN, у меня, на данный момент, по некоторым причинам, не действует.

Итого, в российский бюджет я уже уплатил 117 631 руб, и, как было посчитано выше, мне предстоит уплатить ещё порядка 207К, если я зафиксирую портфель сейчас.

В общем-то, это пока всё, что я сделал.

Заключение

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

Также, мы узнали суммы комиссий и налогов, как уплаченные, так и ожидаемые.

Нашли реальную сумму, которую сможем вывести со счёта при фиксации портфеля, после удержания налогов.

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

Как тинькофф считает доходность в инвестициях. image loader. Как тинькофф считает доходность в инвестициях фото. Как тинькофф считает доходность в инвестициях-image loader. картинка Как тинькофф считает доходность в инвестициях. картинка image loader. У меня, как у пользователя Тинькофф Инвестиций, часто возникали вопросы: какие акции за весь период торговли принесли мне наибольший доход; сколько всего я заплатил за обслуживание тарифа и прочие комиссии; какие акции в портфеле давно лежат и не приносят мне доход; как отсортировать акции в своем портфеле по какому-либо критерию.

Это мой первый проект на Python и первая публикация на Хабре.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *