Генератор налоговой декларации из отчетов IB

Аватара пользователя

Автор темы
ElectrostaticMister
Сообщения: 185
Зарегистрирован: 12 май 2020, 23:14
Контактная информация:

Генератор налоговой декларации из отчетов IB

Сообщение ElectrostaticMister »

Генератор российских налоговых деклараций из отчетов IB https://tax.ribclub.org/. Он умеет:
  1. акции/ETF - покупка/продажа, дивиденды/PIL, удержание налога на дивиденды в стране эмитента, сплиты
  2. облигации - покупка/продажа/погашение, проценты, выплаченный при покупке НКД учитывается в затратах на приобретение, все полученные НКД учитываются как процентный доход
  3. опционы - покупка/продажа, без исполнения, все опционы считаются опционами на ценные бумаги (а не на товары), есть ограничения
  4. валюта - операции учитываются для корректного подсчета валютных позиций, но расчет налога по Forex не делается
  5. брокер - учет процентных выплат на кэш и за аренду ценных бумаг, учет торговых комиссий в затратах на приобретение (отложенные корректировки комиссий игнорируются), отчет о движении средств и иных финансовых активов
Валюты активов и базовая валюта счета могут быть любыми, счет типа Cash. Есть экспериментальная поддержка маржинальных счетов, коротких продаж и фьючерсов (CFD еще более экспериментальная). Кроме брокера IB, поддерживается FirsTrade (только акции, дивиденды и проценты на кэш), БКС (только иностранные дивиденды), белизский Freedom Finance (только акции и дивиденды) и субброкеры IB, если они отдают отчеты в его формате (например, CapTrader).
Если есть какие-то вопросы по работе генератора, найденные ошибки или пожелания по улучшению - пишите в этой теме или в личку. Для того, чтобы разобраться с конкретной проблемой обязательно потребуется брокерский отчет, на котором генератор ломается.

Аватара пользователя

Автор темы
ElectrostaticMister
Сообщения: 185
Зарегистрирован: 12 май 2020, 23:14
Контактная информация:

Брокер FirsTrade

Сообщение ElectrostaticMister »

Добавил работу с отчетами американского брокера FirsTrade. Отчеты очень примитивные, контроля ошибок нет, реализация экспериментальная.
Чтобы сформировать отчет, надо в личном кабинете пойти Accounts→History→Download Account History (https://invest.firstrade.com/cgi-bin/main#/content/myaccount/history/)
Выбрать нужные даты, формат - Excel CSV Files, нажать Download. Так же, как в IB, лучше сохранять отчеты по годам или месяцам. Отчеты должны быть за все предыдущие годы торговли (или с момента когда все позиции закрыты).
Поддерживаются вводы/выводы средств, торговля акциями (без облигаций и опционов), дивиденды, процентны от брокера. Удержание налога в отчет нормально не попадает, приходится рассчитывать самому по ставке 10%. Для REIT сделан обход этой ошибки, если был удержан другой налог (например, LP) - ошибку не выдаст, посчитает неправильно. Как минимум, после обработки отчета надо сверить денежные средства на конец периода. В отчете о движении средств нет оценки иных финансовых активов на начало и конец периода.

Если используется только один брокер, то форма генератора используется для FirsTrade так же, как для IB. Если используются оба брокера одновременно, то есть два варианта:
  1. Обработать отчеты брокеров по очереди, но собрать доходы в одну декларацию. Сначала надо сгенерировать декларацию по отчетам IB, получить dc-файл. Затем воспользоваться генератором повторно с отчетами FirsTrade, а в качестве заготовки декларации использовать полученный на предыдущем шаге dc-файл. В финальном dc-файле будут уже доходы и IB, и FirsTrade. При этом портфели бумаг брокеров рассчитываются изолированно, если в них есть одинаковые тикеры, возможно нарушение принципа FIFO.
  2. Обработать отчеты брокеров одновременно, для этого надо поставить галку в настройке Разрешить несколько брокеров одновременно и добавить сразу все отчеты. Будет рассчитан общий для всех брокеров портфель, но пропадет отчет о движении средств. Проверки корректности также будут отключены.
Первый способ более громоздкий, но и более надежный.

Аватара пользователя

Автор темы
ElectrostaticMister
Сообщения: 185
Зарегистрирован: 12 май 2020, 23:14
Контактная информация:

Пример отчета и результата

Сообщение ElectrostaticMister »

К сообщению приложен реалистичный тестовый отчет брокера Firstrade (test.csv) и созданный по нему генератором архив (result.zip), чтобы можно было быстро оценить работу генератора. Декларацию из архива можно открыть программой Декларация 2019 (и вероятно последующими версиями).
Вложения
result.zip
(7.06 КБ) 85 скачиваний
test.csv
(4.33 КБ) 67 скачиваний

Аватара пользователя

Автор темы
ElectrostaticMister
Сообщения: 185
Зарегистрирован: 12 май 2020, 23:14
Контактная информация:

Формирование flex-отчета IB

Сообщение ElectrostaticMister »

Сначала надо создать специализированный запрос (если личный кабинет на русском - смотрите здесь)
В меню личного кабинета IB Reports→Flex Query создать новый Activity Flex Query, выбрать для него следующие секции:
  1. Account Information, поля Currency и Master Name.
  2. Cash Report, подсекции Base Currency Summary и Currency Breakout, все поля.
  3. Cash Transactions, все подсекции, кроме Summary, все поля.
  4. Change in Dividend Accruals, подсекция Detail, все поля.
  5. Corporate Actions, подсекция Detail, все поля.
  6. Interest Accruals, все поля.
  7. Open Positions, подсекция Summary, все поля.
  8. Realized and Unrealized Performance Summary in Base, все поля.
  9. Trades, подсекции Orders и Executions, все поля.
Секции, которые нужно добавить при необходимости:
  1. Mark-to-Market Performance Summary in Base, все поля - если в отчетах пропущено начало истории сделок.
  2. Statement of Funds, подсекция Currency Breakout, все поля - при торговле фьючерсами или CFD.
  3. Transfers, все поля - если был перенос бумаг или денег с другого (внешнего или IB) счета.
  4. Transaction Fees, подсекция Detail, все поля - если была торговля на биржах с налогообложением сделок (Британия, Гонконг, Швейцария и т.п.).
Настроить некоторые параметры запроса, остальные оставить как были:
  1. Format CSV
  2. Include header and trailer records? No
  3. Include column headers? Yes
  4. Include section code and line descriptor? Yes
  5. Date Format yyyy-MM-dd
  6. Time Format HH:mm:ss
  7. Date/Time Separator ' ' (single-space)
  8. Breakout by Day? No
В тестовых аккаунтах Flex-отчеты также доступны, но в упрощенном виде, в частности, нельзя включить "section code and line descriptor". Генератор должен работать и без этой настройки, но надежнее с ней.

После создания Flex Query его надо применить и скачать отчеты. IB не дает создать Flex-отчет длиннее года, поэтому нужно формировать отдельные отчеты по годам/кварталам/месяцам, так чтобы они не пересекались и между ними не было пробелов. Отчеты должны быть за все предыдущие годы торговли (или с момента когда все позиции закрыты). Отчет за начало текущего (следующего за отчетным) года тоже можно добавить, там бывают корректировки старых транзакций, они применятся к отчетному году. Если хотите большей анонимности, откройте отчет в текстовом редакторе и везде замените ваш идентификатор счета на U1234567.

Аватара пользователя

Автор темы
ElectrostaticMister
Сообщения: 185
Зарегистрирован: 12 май 2020, 23:14
Контактная информация:

Формирование выписки IB

Сообщение ElectrostaticMister »

В меню личного кабинета IB Reports→Statements надо выбрать пункт Activity, в появившемся меню выбрать желаемый период, формат CSV, английский язык (русский тоже можно, но менее надежно), затем скачать выписку. IB не дает выбрать язык выписки, если формирует ее за год, за все остальные периоды дает. Можно создать выписку за произвольный интервал дат (в этом случае можно выбирать язык) и в качестве интервала вручную выбрать нужный год. Для отправки в налоговую можно использовать выписку на русском языке в pdf, числа там должны быть одинаковые.

IB не дает создать выписки длиннее года, поэтому нужно формировать отдельные отчеты по годам/кварталам/месяцам, так чтобы они не пересекались и между ними не было пробелов. Имеют значение торговые дни года, а не календарные, если 31 декабря выходной, то отчет за год может заканчиваться 30 декабря, не надо захватывать 2 января на всякий случай. Выписки должны быть за все предыдущие годы торговли (или с момента когда все позиции закрыты, но надежнее за все). Выписку за начало текущего (следующего за отчетным) года тоже можно добавить, там бывают корректировки старых транзакций, они применятся к отчетному году. Если хотите большей анонимности, откройте выписку в текстовом редакторе и замените личные данные на абстрактные, типа Ivan Ivanov. Не надо удалять из выписки строки и целые секции, генератор использует сводную информацию для контроля ошибок и без нее работать не будет. Если вы все-таки хотите что-то удалить, поставьте максимальный лог выполнения и смотрите, на чем ломается, но лучше конечно написать мне.

В выписке НЕТ дат поставки, поэтому если для выписки выбрать Использовать settle date вместо даты сделки, то вместо результата будет ошибка.

Несмотря на то, что выписку проще скачать, лучше использовать flex-отчет, в нем надежнее контроль ошибок. Также стоит попробовать flex-отчет, если генератор не понял выписку. Для запроса на исправление ошибок/добавление функциональности в генератор нужны и выписка, и flex-отчет.

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

Аватара пользователя

Автор темы
ElectrostaticMister
Сообщения: 185
Зарегистрирован: 12 май 2020, 23:14
Контактная информация:

Результат работы

Сообщение ElectrostaticMister »

В результате работы генератора создается zip-архив из четырех файлов:
  • declaration.dcX или declaration.xml - декларация за отчетный год, в которую добавлены доходы из отчета брокера
  • calc.xls - эксель с расчетом налогов, позволяет вручную проверить расчет или внести в него изменения
  • output.txt - сводка по результатам анализа портфеля и его истории, просто для информации
  • build.log - лог работы генератора, для поиска ошибок, если что-то сломалось
По output.txt рекомендую как минимум сравнить средства на счете и открытые позиции на конец отчетного периода с актуальными, если есть расхождение - где-то ошибка.

declaration.dcX надо открыть в программе Декларация, обязательно проверить личные данные и примерно оценить суммы доходов и налогов. Подробно расчет налогов можно проверить по calc.xls. Далее в декларацию можно добавить другие доходы/вычеты и подавать ее в налоговую службу обычным образом.

Также в calc.xls создается лист "Движение средств", по которой можно заполнить ежегодный отчет о движении средств. В лист попадают только активные в отчетном году валюты, если брокерский счет зарегистрирован в налоговой с несколькими валютами, отчет надо подавать по каждой, в том числе и нулевые. Также добавлены иные финансовые активы.

Аватара пользователя

Автор темы
ElectrostaticMister
Сообщения: 185
Зарегистрирован: 12 май 2020, 23:14
Контактная информация:

Настройки генератора

Сообщение ElectrostaticMister »

У генератора есть следующие настройки:
  • Отчетный год - год, за который рассчитываются доходы и налоги. Если не указан, берется последний (в том числе неполный) год отчетов.
  • Формат декларации - можно либо загрузить свою заготовку налоговой декларации в формате dcX (для программы Декларация) или XML, либо выбрать формат пустой декларации и свою не загружать. XML используется при подаче декларации на сайте налоговой службы, это более сложный формат, для него реализация экспериментальная (например, не умеет учитывать некоторые убытки), но его можно посмотреть даже без программы Декларация. В любом случае в декларации без заготовки будут тестовые личные данные, их необходимо заменить на реальные!
  • Использовать settle date для ценных бумаг, расчеты по сделке происходят не всегда сразу, для акций обычно на второй рабочий день после сделки. Так как при составлении декларации используется валютная переоценка, выбор даты влияет на курс и соответственно на рублевую сумму дохода. В выписке, в отличие от flex-отчета, settle date нет!
  • Использовать settle date для деривативов, предыдущий пункт для производных финансовых инструментов, для них поставка на следующий рабочий день.
  • Отсутствует начало истории, чтобы обрабатывать отчеты, в которых с самого начала есть открытые позиции, а более старых отчетов по каким-то причинам нет.
  • Включать торговые комиссии в издержки, из дохода от продажи активов вычитается не только расход на их приобретение, но и комиссии брокеру при купле/продаже.
  • Включать процентные расходы в издержки, из дохода от продажи активов вычитаются, кроме прочих расходов, проценты за пользование средствами брокера и иными активами. В любом случае из расходов не вычитаются процентные расходы, не связанные с торговлей, например по отрицательным процентным ставкам в валютах типа EUR.
  • Включать ежемесячные комиссии в издержки, из дохода от продажи актива вычитаются, кроме прочих расходов, накопленные к моменту продажи ежемесячные комиссии брокеру.
  • Включать плату за мгновенные данные в издержки, из дохода от продажи актива вычитаются, кроме прочих расходов, накопленные к моменту продажи платежи брокеру за мгновенные рыночные данные.
  • Включать комиссии ADR в издержки, из дохода от продажи ADR вычитаются, кроме прочих расходов, комиссии банка-депозитария, которые обычно приходят вместе с дивидендами.
  • Включать плату консультанту в издержки, из дохода от продажи актива вычитаются, кроме прочих расходов, накопленные к моменту продажи выплаты финансовому советнику.
  • Включать иные комиссии в издержки, из дохода от продажи актива вычитаются, кроме прочих расходов, накопленные к моменту продажи комиссии за вывод денежных средств и некоторые редкие комиссии.
  • Налогообложение фьючерсов - выбор способа валютной переоценки фьючерсов, если не знаете нужно ли вам это, выбирайте самый простой и невыгодный способ - По номиналу.
  • Разрешить несколько брокеров одновременно. Позволяет слить вместе перекрывающиеся по времени отчеты разных брокеров, проанализировать объединенный портфель и сгенерировать по нему доходы. При этом отключается контроль ошибок, отчет о движении денежных средств и возможны другие чудеса.
  • Не отображать закрытые позиции в отчете, чтобы убрать лишнее в текстовом отчете.
  • Подробности отчета о движении средств, добавляет в xls лист с перечнем сумм, по которым составлен отчет о движении следств и активов, нужно только любознательным.
  • Воспринимать идентичные доходы как ошибку. Если доход из отчета брокера уже есть в декларации, то почти наверняка это ошибка, некорректная заготовка или испорченный отчет, настройка позволяет игнорировать эту ошибку.
  • Заменить год в заголовке декларации. Свежая программа Декларация выходит после окончания отчетного года, то есть в момент возникновения или планирования доходов программы для них еще нет. Но если в декларацию за прошлый год вносить доходы текущего, программа рассчитает их правильно. Чтобы воспользоваться этим и открыть старой программой свежую деклаарцию, нужно использовать указанную опцию. Естественно, Декларацией будет применено законодательство прошлого года, и подавать такую декларацию нельзя, она только для анализа.

Аватара пользователя

Автор темы
ElectrostaticMister
Сообщения: 185
Зарегистрирован: 12 май 2020, 23:14
Контактная информация:

Использование

Сообщение ElectrostaticMister »

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

В форме генератора https://tax.ribclub.org/ загрузите отчеты IB и заготовку декларации, если она есть. Настройте параметры по инструкции, но сработают и параметры по умолчанию. Нажмите Отправить, после этого должен скачаться архив с результатом. Если генератор смог понять отчет, в архиве будет декларация и xls, иначе лог с ошибками.


Oleg
Сообщения: 2
Зарегистрирован: 02 дек 2020, 10:30
Контактная информация:

Генератор налоговой декларации из отчетов IB

Сообщение Oleg »

Мой FlexReport выдал отчёт совершенно не похожий на отчёт из примера test.csv :(
Несколько раз проверил секциии параметры. Всё отметил.
Первое, что бросается в глаза - в моём отчёте очень много двойных кавычек используется....

Аватара пользователя

Автор темы
ElectrostaticMister
Сообщения: 185
Зарегистрирован: 12 май 2020, 23:14
Контактная информация:

Генератор налоговой декларации из отчетов IB

Сообщение ElectrostaticMister »

Oleg писал(а): 22 дек 2020, 22:50 Мой FlexReport выдал отчёт совершенно не похожий на отчёт из примера test.csv
Совершенно понятно почему - test.csv это выписка брокера FirsTrade, она очень примитивная и ее удобно использовать для теста. А FlexReport делает Interactive Brokers, он большой и довольно запутанный. Но генератор понимает и то, и другое, так что пробуйте загрузить в него ваш отчет и смотрите результат, если что-то не сработает - пишите мне.

Аватара пользователя

Автор темы
ElectrostaticMister
Сообщения: 185
Зарегистрирован: 12 май 2020, 23:14
Контактная информация:

Генератор налоговой декларации из отчетов IB

Сообщение ElectrostaticMister »

Добавлена возможность работы с ценными бумагами и производными инструментами в разных валютах, а также использования в качестве базовой валюты брокера не USD, а чего-то другого. Чем хитрее комбинация валют, тем больше вероятность ошибки, рекомендую проверять внимательнее, варианты ниже упорядочены от самых надежных к самым ненадежным:
  1. Базовая валюта USD, все активы USD, вводы-выводы USD.
  2. Базовая валюта USD, все активы USD, вводы-выводы в разных валютах.
  3. Базовая валюта USD, активы в разных валютах, исключая RUB.
  4. Базовая валюта USD, активы в разных валютах, включая RUB.
  5. Базовая валюта отличается от USD.
Если базовая валюта брокера IB отличается от USD, то его отчеты несовместимы с отчетами брокера FirsTrade, но их по-прежнему можно применять последовательно. При использовании тикеров разных стран они могут оказаться одинаковыми, в таком случае все может сломаться.

UPD: Точно не надо менять базовую валюту брокера ради улучшения работы генератора. Это скорее всего безнадежно сломает генератор, и когда эта проблема будет решена - неизвестно.


Oleg
Сообщения: 2
Зарегистрирован: 02 дек 2020, 10:30
Контактная информация:

Генератор налоговой декларации из отчетов IB

Сообщение Oleg »

ElectrostaticMister писал(а): 24 дек 2020, 04:14 пробуйте загрузить в него ваш отчет и смотрите результат, если что-то не сработает - пишите мне.
Написал в личку


zhekaz
Сообщения: 4
Зарегистрирован: 03 янв 2021, 20:42

Генератор налоговой декларации из отчетов IB

Сообщение zhekaz »

Попробовал загрузить Flex-отчеты за 2020 год, получил ошибки в логе.
[2021-01-03 21:29:36.456941] ERROR:Portfolio: CASH didn't match report {"currency":"RUB","amount":1723786.11,"Report":321815.368444964}
Отравлю файл с flex-отчетом и лог в личку. Либо подскажите, что не так с выгрузкой Flex-отчета, спасибо!

Аватара пользователя

Автор темы
ElectrostaticMister
Сообщения: 185
Зарегистрирован: 12 май 2020, 23:14
Контактная информация:

Генератор налоговой декларации из отчетов IB

Сообщение ElectrostaticMister »

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


zhekaz
Сообщения: 4
Зарегистрирован: 03 янв 2021, 20:42

Генератор налоговой декларации из отчетов IB

Сообщение zhekaz »

ElectrostaticMister писал(а): 04 янв 2021, 05:34 Обновился перед Новым Годом формат flex-отчета, исправил инструкцию для него и генератор.
Спасибо! Можно ли в параметры генератора добавить параметр - "Игнорировать ошибки"?

Аватара пользователя

Автор темы
ElectrostaticMister
Сообщения: 185
Зарегистрирован: 12 май 2020, 23:14
Контактная информация:

Генератор налоговой декларации из отчетов IB

Сообщение ElectrostaticMister »

zhekaz писал(а): 04 янв 2021, 15:54 Можно ли в параметры генератора добавить параметр - "Игнорировать ошибки"?
Я пока не готов, будет бесконтрольно всякая чушь в декларациях, даже сейчас нет 100% гарантии.


zhekaz
Сообщения: 4
Зарегистрирован: 03 янв 2021, 20:42

Генератор налоговой декларации из отчетов IB

Сообщение zhekaz »

ElectrostaticMister писал(а): 05 янв 2021, 02:57
zhekaz писал(а): 04 янв 2021, 15:54 Можно ли в параметры генератора добавить параметр - "Игнорировать ошибки"?
Я пока не готов, будет бесконтрольно всякая чушь в декларациях, даже сейчас нет 100% гарантии.
Спасибо!

Аватара пользователя

Автор темы
ElectrostaticMister
Сообщения: 185
Зарегистрирован: 12 май 2020, 23:14
Контактная информация:

Генератор налоговой декларации из отчетов IB

Сообщение ElectrostaticMister »

Добавил перенос позиций в IB и корректировки удержаний налогов.

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

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

UPD: Добавил корректировки торговых комиссий

Аватара пользователя

Автор темы
ElectrostaticMister
Сообщения: 185
Зарегистрирован: 12 май 2020, 23:14
Контактная информация:

Генератор налоговой декларации из отчетов IB

Сообщение ElectrostaticMister »

На данный момент генератор создает корректные файлы для программы Декларация за 2017-2020 годы. Также с точностью до копейки должны совпадать расчеты налоговых баз и налогов в dcX-файле и в xls. Сальдирование убытков в xls по-прежнему упрощенное. В текстовом выводе налог может отличаться на 1 рубль из-за тонкостей округления.

Аватара пользователя

Автор темы
ElectrostaticMister
Сообщения: 185
Зарегистрирован: 12 май 2020, 23:14
Контактная информация:

Генератор налоговой декларации из отчетов IB

Сообщение ElectrostaticMister »

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

Включать ежемесячные комиссии в издержки. Клиентам со стоимостью чистых активов менее $100000 IB в начале месяца списывает комиссию $10 минус сумма торговых комиссий за прошлый месяц. Эту комиссию многие включают в расходы на приобретение ценных бумаг, разными способами; здесь реализован простейший способ - комиссии включаются в издержки продажи, следующей за списанием комиссий, неважно, есть там прибыль или нет. Если в конце года продаж нет, то комиссии включатся в издержки в следующем году; комиссии из будущего в издержки не включаются. Также включение комиссий исказит расчет рублевой прибыли по той позиции, к издержкам которой комиссии добавятся, то есть для аналитики лучше эту опцию не использовать, только для декларации. Аналогично сделан зачет комиссий за мгновенные рыночные данные.

Включать комиссии ADR в издержки. За выпуск депозитарных расписок (ADR) банк-депозитарий берет плату. Если ее платит эмитент, то владелец ADR никаких комиссий не видит. Если эмитент не платит, то платят владельцы. Обычно комиссия прикрепляется к дивидендам, но если их не платят, то списывается отдельно. Если комиссия списывается одновременно с выплатой дивидендов, некоторые путают ее с удержанием налогов у источника, это неправильно, эту комиссию нельзя зачесть как налог. Но можно попробовать учесть при продаже бумаг как депозитарные расходы. У меня в момент продажи (даже частичной) учитываются все комиссии с момента предыдущей продажи. Это не очень точно, но зато понятно и лучше чем ничего. Возможна ситуация, когда комиссия спишется уже после закрытия позиции ADR, в этом случае добавляйте ее руками.

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

Ответить