Сравнение утилит для расчёта 3НДФЛ по брокеру Interactive Brokers

Simon
8 min readJan 24, 2021

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

Налоги по операциям в валюте отличной от рубля считаются муторно, поскольку каждая сумма денег должна переводиться в рубли по курсу на день операции. К этому добавляется учёт суммы комиссий и самой сделки разными датами (T+n), вычитание прочих расходов на ведение счёта в IB из доходов от сделок и отдельный расчёт для каждой сделки/дивиденда.

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

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

Статья не претендует на полноценное сравнение, оценку плюсов и минусов того или иного решения — вся задача сводится к кросс-валидации результатов используемого мной туллинга и всё.

Эталон расчёта / cdump-investing

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

Итак, фиксируем результаты расчёта тулой за 2020 год.

Дивиденды
Доход от сделок
Прочие доходы. В данном случае процент на остаток по счёту, пока IB его не отменил
Прочие расходы на ведение счёта. Сюда попадает комиссия за не активность и стоимость актуальных рыночных данных (в рамках бесплатного лимита запросов эти комиссии возвращаются в тот же день)

Расчёт по дивидендам максимально простой, поскольку эти доходы ни с чем не сальдируются и приходят одной датой, так что их будем сравнивать выборочно. Больше всего меня интересует расчёт финансового результата по сделкам купли/продажи и уменьшение его на комиссии. В эталонном расчёте это 171654.27₽ дохода минус 1715.09₽ комиссий.

Итого я хочу увидеть (171654.27 - 1715.09) * 0.13 = 22092.0934₽ налога от сделок и (5.98 + 3.21) * 0.13 = 1₽ налога на проценты по счёту.

ibkr-nalog.app

Онлайн сервис подготовки 3-НДФЛ по отчетам Interactive Brokers. На выходе предоставляет декларацию в разных форматах, мне для разбора руками подошёл Excel.

Для расчёта дивидендов ребятам нужен налоговый отчёт от IB, который последний готовит до 15 марта, так что пока дивиденды выпадают из сравнения.

Сервис отслеживает, что в основном отчёте есть данные о выплате дивов, но подробный отчёт по дивам не был предоставлен и не возвращает неполную декларацию. Ребятам плюс в карму за отказ от замалчивания проблем — пришлось руками вырезать все дивы из отчёта брокера =)

Насчитали мне 22890₽ налога, разница ~800 рублей. Давайте искать, кому они ушли — для этого придётся влезть в excel с подробностями расчёта.

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

Пример закрытой сделки из отчёта IB. Комиссия в 1.02$ на самом деле представлена как 1.01812674$ в csv отчёте.

В отчёте Trade Confirmation от IB для данных операций указаны даты исполнения 2020–02–04 и 2020–02–12 соответственно.

Курс USD по данным cbr.ru.

Общая методика расчёта расхода/дохода по сделке

[сумма сделки] * [курс валюты на дату поставки] +/- [сумма комиссии] * [курс валюты на дату сделки]

Посчитаем “руками”, чтобы было с чем сравнивать.

Расход: (806.2 * 63.9091) + (1 * 63.0359) = 51586.55232₽

Доход: (818.2 * 63.9490) - (1.01812674 * 63.4720) = 52258.449259559₽

Финансовый результат: 52258.449259559 -51586.55232 = 671.89693956₽

Налог к уплате: 671.77804 * 0.13 = ~87₽

Смотрим в подробный отчёт, предоставленный сервисом.

Доход от сделки
Расходы на сделку

По расчётам видно, что сервис посчитал цену бумаг по курсу на дату сделки, а не дату поставки — преступление раскрыто =)

tax.ribclub.org

Ещё один онлайн сервис: выглядит олдскульно, но большое количество настроек внушает надежду на досконально верный расчёт.

Эта утилита ест и обычный activity отчёт, но позволяет загружать кастомный Flex Report — а в нём уже достаточно данных для корректного расчёта курса на даты поставок.

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

Давайте посмотрим на результаты в excel файле.

Проценты на остаток

Процент на остаток по счёту посчитан точно.

Дивиденды

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

Сделки сравниваю на примере разобранного ранее варианта.

На примере одной сделки фин результат посчитан достаточно точно — расхождения в копейках.

Итоговый финансовый результат по сделкам различается в пределах рубля: мои 171654.27₽ против 171654.18₽ в расчёте от сервиса. Я считаю это прекрасный результат — уверен, что с добавлением комиссий за неактивность автор справился также чётко! =)

Итоговый результат от сервиса показался мне очень знакомым, я пошёл проверить и точно — до исправления проблемы мой туллинг выдавал ровно те же 18 копеек! А проблема была в излишних округлениях дробных чисел при расчётах =)

KonishchevDmitry/investments

Утилита с открытым исходным кодом, предоставляет целый комбайн по управлению личными финансами и для этого хранит портфель в локальной БД. Выглядит чутка монструозно — для не IT-шников дока в 10 экранов выглядит страшно, но для наших нужд нам понадобится только одна функция tax-statement, так что всё не так страшно.

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

Не очень понятно, какой именно отчёт нужен утилите —д окументация несколько размыта в этом вопросе =(

По активити отчёту запустить тулу не удалось — то ли формат чутка не тот, то ли не активити отчёт нужен. Так что пошёл делать кастомный Flex репорт по инструкции.

Конфиг для целей расчёта налогов по одному только IB небольшой.

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

На всякий случай сохраню конфиг, с которым запускал.

Проценты на остаток

Проценты на остаток сходятся до копеек, вопросов нет.

Дивиденды

По суммам дивидендов вопросов также не возникло, разве что обратил внимание, что данная утилита схлопывает различные поступления за день по каждому тикеру: в частности по BND и BNDX под конец года вместе с дивидендами пришли также Short Term Capital Gain, налог по которым не был удержан.

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

Финансовый результат по отдельным сделкам расходится в пределах 30 копеек, однако итоговая сумма — уже знакомая нам цифра в 171654.18₽ против эталонных 171654.27₽. Осталось вычесть прочие комиссии из этой суммы, однако утилита не выводит данных по оным и это уже грустно: 1700 рублей жалко =(

titov-vv/jal

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

Для работы придётся преднастроить счета в IB для используемых валют и также подготовить Activity Flex Query по инструкции. Пополнений счёта у меня много, так что пальчики устали кликать в выбор банковского аккаунта для учёта откуда пришли деньги, но это цена за учёт всех счетов в одном месте)

Когда всё загружено можно генерировать excel с налоговым расчётом. Тула устроена так, что считает фин результат по каждому счёту раздельно, поэтому если у вас есть налогооблагаемые операции в нескольких валютах — придётся мержить руками (:

С генерацией отчёта тоже пришлось повозиться: курсы тула подтягивает по запросу за конкретные даты, там встречались проблемы с догрузкой новых курсов и ещё ворох рандомных проблем, но благо разработчик был на связи и готов был пояснять ЧЯДНТ =)

По итогам пары часов, переписок с разрабом в тележке и трёх тикетов я всё таки получил excel с расчётами, пошёл сравнивать!

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

Проценты на остаток по счёту в отчёте занесены на лист комиссий и уменьшают их соответственно. Это немного путает при проверке суммы комиссий и вроде бы такие доходы нужно подавать с отдельным кодом дохода.

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

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

Отчёт по эталонной сделке.

А вот по итоговому финансовому результату нашлась проблема — сделка по GLTR тикеру не вошла в отчёт и как следствие из налогооблагаемой базы выпало ~93000 рублей. Эдак можно и попасть на пени.

Завёл тикет разработчику, посмотрим как исправит. В целом утилитой вполне можно пользоваться, но как и за любой другой — “доверяй, но проверяй”.

Updated: С тикетом разобрались — оказалось, что при импорте отчёта фонды нужно указывать не по содержимому, а как Funds. Просто в налоговую декларацию идут не все категории ассетов. Ре-импорт отчёта в утилиту помог — расхождение в копейках!

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

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

Спасибо, что дочитали до конца!

Дополнения по тексту и заявки на добавление новых сервисов в обзор приветствуются.

To be continued

--

--