Блог им. airens

Отчитываемся перед налоговой по доходам Interactive Brokers за 5 минут

Все мы знаем, что зарубежные брокеры не являются налоговыми агентами в РФ, соответственно, отчитываться по доходам и платить налоги с них мы должны самостоятельно. Вопрос отчитываться или нет у меня не стоял, поэтому, чтобы не тратить каждый год уйму времени на достаточно трудоемкие расчеты, я написал скрипт, который берет отчеты Interactive Brokers и формирует на основе них пояснительную записку со всеми пояснениями и расчетами для налоговой. Вам останется только приложить этот файл к декларации 3-НДФЛ, а в нее саму внести лишь два пункта (см. ниже).

Ограничения по применению

Поскольку я занимаюсь долгосрочными инвестициями, я не использую такие инструменты, как фьючерсы, опционы, а также никогда не использую плечо и сделки SHORT. В связи с этим, такие операции скриптом не поддерживаются. Если у кого-то есть желание — могут дописать сами.

Подготовка к использованию
  • Установите Python 3+
  • Скачайте архив со скриптом отсюда и распакуйте его в произвольную папку на компьютере
  • Скачайте годовые отчеты из личного кабинета брокера в формате .csv (необходимы за все года для корректного расчета сделок продажи), переименуйте их в {год отчета}.csv (например «2018.csv») и положите в папку со скриптом
  • Исправьте дату открытия счета в скрипте ib.py на свою (строка StartDate = «20.03.2019»)
  • Выполните установку необходимых пакетов Python при помощи команды в консоли, запущенной от имени администратора:
pip install -r requirements.txt
Использование
  • Запустите скрипт командой в консоли:
python ib.py
  • По запросу, введите первый год, на который есть отчет (например «2018»)
  • Дождитесь появления надписи «Готово» и нажмите Enter. Скрипт должен сформировать вашу пояснительную записку в формате .docx и открыть его
  • Повторите п.2-3 для всех годов (нужно делать только в первый раз, дальше — только подотчетный год)
  • Внесите в раздел Доходы за пределами РФ декларации 3-НДФЛ следующие доходы в рублях(!!!) с датой 31 декабря подотчетного года:
Источник выплат — «Interactive Brokers (дивиденды)». Полученный доход и Налог, уплаченный в иностранном государстве — {ваши суммы из пояснительной записки}
Источник выплат — «Interactive Brokers (операции с ЦБ)». Полученный доход и Сумма вычета (расхода) в рублях (код вычета — 201) — {ваши суммы из пояснительной записки}
Дополнительная информация

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

★133
44 комментария
ЗакрепитьКомментарий закреплен пользователем Валерий Чистяков
P.S> Налоговая, сформированную при помощи данного скрипта декларацию, приняла и полностью утвердила все расчеты. Единственное, имейте ввиду, что некоторые неопытные сотрудники могут не понять, почему у вас все доходы от зарубежного брокера (которые были получены в валюте), указаны в декларации одной-тремя строками в рублях. В этом случае нужно просто объяснить налоговику, что все расчеты представлены в пояснительной записке, а в декларации так указано для того, чтобы эта самая декларация не вышла размером с Войну и мир, а вам не пришлось через сайт или программу вбивать несколько сотен операций.
P.P.S> Актуальная версия скрипта и инструкция — на Github
полезная вещь! благодарю
Спасибо за информацию!
avatar
Вы святой
И это всё бесплатно!!!
Почему именно 31 декабря?
avatar
John Smith, последний день в году. По большей части — дата не важна, я думаю. Для инспектора важнее содержимое записки
Валерий Чистяков, У инспектора не возникнет вопрос: почему все дивиденды в один день?
avatar
John Smith, для того, чтобы у инспектора не возникло вопросов и нужна Пояснительная записка
А опционы поддерживаются?
avatar
Павел Ку, если сделки по ним отображаются в том же разделе отчета, что и с акциями — да. 
Валерий Чистяков, попробую на выходных. Я ваял на PowerGrep + Excel. И раздел там другой у опционов и не совсем тривиальная система расчетов. Если опцион купил-продал, то тут все понятно. А вот если он исполнился, то прибыли нет, зато меняется цена сделки с бумагой связанно.

Огромное спасибо!
avatar
Павел Ку, если допилите под опционы — просьба поделиться либо тут, либо на Github. Я в них ничего не понимаю, а кому-то может пригодиться.
Такое невозможно не плюсануть. Даже если не пользуешься IB
avatar
Большое человеческое спасибо.
avatar
Большое спасибо

avatar
Спасибо большое!
А если убытки за год на аккаунте в IB, их надо как-то документировать?
avatar
ebanuha, да, они будут в пояснительной записке и лучше их также внести в декларацию. В течение 10 лет можно будет их зачесть и снизить налогооблагаемую базу
Валерий Чистяков, спасибо за ответ! Вы святой человек
avatar
Спасибо. Попробую. Хоть мне и не нужно — только по дивам отчитываюсь. Но записку я каждый год прикладываю
avatar
reglament, ребаланс портфеля не делаете? Да и по дивам у меня тоже таблица строк на 30 получилась, считать небыстро, учитывая валютную переоценку.
Валерий Чистяков, ребаланс нет, не делаю. а дивы одной суммой пишу в 3-ндфл
avatar
Спасибо большое!
avatar
Коллеги, помогите чайнику, не могу победить. Что то не так с синтаксисом.


Спасибо
avatar
я сделал это непосредственно из командной строки запущенной с правами админа а не из piton(a) В командной строке перейти в директорию interactive_brokers_tax-master и потом ввести команду pip install -r requirements.txt
Затем в IDLE piton(a) открыть исходник и откорректировать дату открытия счета, сохранить.
Запустить скрипт просто двойным кликом мышки предварительно положив туда же файлы yyyy.csv, все файлы по годам с момента открытия счета.

Проблема правда и у меня есть — файлы формирует но сводная записка не формируется и выходит по ошибке, причем в разные годы и места ошибок разные
Так понимаю что проблема в формате исходных отчетов
Соответственно вопрос автору — Какой тип отчета использовать Activity MTM Summery?



Автору спасибо, большой и полезный труд для сообщества!

Сергей, спасибо, но не идет почему то

В командной строке перейти в директорию interactive_brokers_tax-master и потом ввести команду pip install -r requirements.txt



avatar
Андрей,  Командная строка запущена от имени админа?
проверте в каталоге \AppData\Local\Programs\Python\Python38\Scripts наличие файла pip.exe
и в командной строке введите команду pip она должна вывести список доступных команд


Если выведет то должно работать и это (у меня уже установлено о чем и пишет)




   
Сергей, что то я туплю, эффект пятницы наверное, не получается. cmd.exe от админа, что то делаю не так


avatar
Андрей, вопрос, который вы задаете, не имеет никакого отношения к скрипту и данному топику. Вы просто недоустановили Python. Введите ошибку, которую вам выдает командная строка в Гугл и по первой же ссылке найдете ответ.
Андрей, я же написал проверьте установку pip
Установка Python
либо его нет либо неверно установили Python поскольку в последних версиях он уже в пакете


Сергей, это IB чудит. У вас в отчете по какой-то причине разное количество строк в таблице с дивидендами и налогами по ним. Скрипт не может понять поэтому, какая строка какой соответствует. Можете мне послать свой отчет, на котором отваливается, в ЛС (только измените в файле Имя\Фамилию, если хотите), попробую что-то придумать.
Валерий Чистяков, понял что проблема в несоответствии заголовков столбцов. Спасибо за предложение, скинуть отчеты в лс рейтинг не позволяет Свои топики не пишу :) Если не сложно скиньте мне почту.
Сергей, проблема была не в заголовках, а в том, что не всегда раздел Дивиденды в отчете присутствует. Это исправил. Также вы используете операции SHORT, а они скриптом не поддерживаются.
Отличное начинание! Однозначно лайк и подписка :-)
Есть предложение:
1. Дополнить инструкцию: «Отчеты должны быть только на англ. языке (русский не работает при создании файлов в директории получается не корректная имя файла).
2. Доработать макет пояснительной записки (убрать ошибки и включить опись документов предоставляемых в налоговую).
3. Доработать программу для других секций (например, налоги с процентов от пользования деньгами и акциями)
4. Нужно больше отзывов по тому как отреагировала налоговая.
5. Готов оказать содействие проекту (могу программировать на Питоне).
6. Автор, как связаться с Вами оставьте координаты.
7. Большое спасибо!


 
avatar
Спасибо! Супер! Но ...)) А если не задекларирую? Как это можно отследить? По переводам из банка РФ зарубежному брокеру? Банки дают эти сведения в ИФНС? Кто что делает? Лишний раз не хочу светить в налоговой. В том числе по вопросу ниже.
При разводе, например, счет в IB реально в массу раздела включить?
И при банкротстве (все случается, мало ли) в конкурсную массу брокерский счет в IB реально управляющему включить? В IB вроде только юрисдикции международного суда? Решение суда в РФ нет же шансов квалифицировать как международное? 
Сталкивался кто-то? Спасибо!
avatar

привет.

Отличная программа. Заодно и Питон узнал


Что то не так с форматом отчетов.
Получаю ошибку:
Разделение отчета на разделы...
Чтение разделов отчета...
--ibdata\2018_Trades.csv
Traceback (most recent call last):
File «ib.py», line 195, in
trades, comissions, div, div_tax, div_accurals, usd = load_data()
File «ib.py», line 156, in load_data
trades = trades[trades.fee < 0]
File «C:\Users\avsenev\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\core\generic.py», line 5274, in getattr
return object.getattribute(self, name)
AttributeError: 'DataFrame' object has no attribute 'fee'

avatar
Petya Katin, подождите. Автор дорабатывает по мере возможностей. Сообщите у Вас были торговые операции с ценными бумагами?
 
avatar
Огромное спасибо за скрипт! Очень помог в расчетах, есть на что опереться и себя дополнительно проверить! Но при заполнении декларации через сайт nalog.ru или через программу «Декларация» в разделе «Доходы» требуется заполнить обязательное поле «Сумма дохода в валюте*». После этого «Сумма дохода в рублях по курсу ЦБ» рассчитывается автоматически и не совпадает с суммой дохода полученного при расчетах скриптом в пояснительной записке. При этом сумму дохода в рублях нельзя править руками.




То же самое при заполнении раздела «Сведения о налоге, уплаченном в иностранном государстве», требуется ввести «Сумма налога в иностранной валюте*» и «Сумма налога в рублях по курсу ЦБ» считается автоматом и править ее нельзя…




Вопрос как внести в декларацию точные данные из сформированной пояснительной записки?
avatar
     Да, комментарий пользователяinffin носит весьма существенный характер. К сожалению, отсутствие ответа на заданный в этом комментарии вопрос, обесценивает проделанный автором труд.
     А жаль! Программная разработка и качество её исполнения заслуживают самой высокой оценки. Однако, непосредственное использование на практике формируемой ею пояснительной записки для заполнения стандартной налоговой декларации, как оказалось, невозможно.
avatar
Valery Tlyusten, inffin идем на Github и внимательно следуем инструкции по внесению данных на сайте налоговой, а не обвиняем автора и скрипт. Тогда все у вас получится
Уважаемый, Валерий Чистяков. Было бы совсем уж глупо обвинять, как Вы пишите, автора (и, совсем уж бессмысленно — созданный им скрипт) за любезно и совершенно бесплатно предоставленный им программный инструмент. Инструмент, обладающий, к тому же, бесспорно высокими потребительскими свойствами (что было отмечено мною особо).
Речь конечно же шла не о каких-то там «обвинениях», а о некой проблеме, затрудняющей, и не только на мой взгляд, использование Вашей программы. Я, в частности, очень внимательно следовал и всем Вашим инструкциям и инструкциям на сайте. Не получилось. Причина указана пользователем inffin. Возможно, мы — и он, и я, что-то не так делали. И может быть Вам стоило чуть вникнуть и пару слов на этот счет добавить в инструкцию, не знаю.  Не хотите помочь предметно, — не надо. Это Ваше право. Но к чему тут обижаться, и, в свою очередь, обижать пренебрежительной отпиской ваших благодарных пользователей?
Так или иначе, но программой Вашей, пусть и не в полной мере, я воспользовался. Спасибо Вам.
P.S. Кстати сказать, мне 74 года.
avatar
Valery Tlyusten, в инструкции по ссылке выше написано, что доход нужно указывать в рублях (пункт 5. в разделе Использование) и, если бы Вы и @inffin действительно внимательно следовали этой инструкции, то никакого пересчета в рубли не возникло бы, как и проблемы на пустом месте. Поэтому мой комментарий был предметным и нес в себе достаточно информации, чтобы решить проблему, а никак не был пренебрежительной отпиской.
Валерий, спасибо огромное за ваш труд! Скрипт действительно очень помог! Комментарии увидел только сегодня… Конечно же в том году я разобрался с декларацией и все сдал удачно! Сейчас уже понял, что нужно было сразу свой комментарий подправить и пояснить как нужно делать, чтобы другим читателям было тоже сразу понятно. Если кому-то будет полезно, то за 2021 год скрипт так же все расчитал, НО старая версия скрипта, которая работала при формировании записки за 2020 год, в этом году выдавала ошибки и пояснительная записка не работала. После скачивания актуальной версии скрипта с гитхаба по ссылке — https://github.com/airens/interactive_brokers_tax все заработало(до этого скрипт выдавал ошибки с зависимостями и не совместимыми версиями)

Еще раз выражаю Благодарность! Успехов и удачи во всем! 
avatar

теги блога Валерий Чистяков

....все тэги



UPDONW
Новый дизайн