Coder Social home page Coder Social logo

konishchevdmitry / investments Goto Github PK

View Code? Open in Web Editor NEW
469.0 22.0 54.0 5.2 MB

Helps you with managing your investments

Shell 0.45% Rust 99.51% Dockerfile 0.04%
finance investments stocks interactive-brokers tax-statement asset-allocation portfolio-optimization portfolio-rebalancing

investments's Introduction

Test status

Investments

Helps you with managing your investments:

  • Portfolio rebalancing: instructs you which orders you have to submit to make your portfolio in order with your asset allocation.
  • Stock selling simulation: calculates revenue, profit, taxes and real profit percent which considers taxes into account.
  • Automatic tax statement generation: reads broker statements and alters *.dcX file (created by Russian tax program named Декларация) by adding all required information about income from stock selling, paid dividends and idle cash interest.
  • Analysis: calculates average rate of return from cash investments by comparing portfolio performance to performance of a bank deposit in USD and RUB currency with exactly the same investments and monthly capitalization. Considers taxes, commissions, dividends, tax deductions and optionally inflation when calculates portfolio performance.
  • Bank deposits control: view opened bank deposits all in one place and get notified about upcoming deposit closures.

Targeted for Russian investors who use Interactive Brokers, Открытие Брокер, Тинькофф, Firstrade or БКС.

Installation

See installation instructions.

Configuration

Create ~/.investments/config.yaml configuration file. See example which contains typical configuration for each broker, tax exemptions that are applicable to the account and more. Don't forget to obtain API token for FCS API and Finnhub (see stock and forex quotes providers for details).

Usage

Stocks

Investments is designed to work with your broker statements — there is no need to enter all trades and transactions manually, but it requires you to have all broker statements starting from account opening day. It may be either one broker statement or many — it doesn't matter, but what matters is that the first statement must be with zero starting assets and statements' periods mustn't overlap or have missing days in between.

For now the following brokers are supported:

Investments keeps some data in local database located at ~/.investments/db.sqlite and supports a number of commands which can be grouped as:

Performance analysis

investments analyse command calculates average rate of return from cash investments by comparing portfolio performance to performance of a bank deposit in USD and RUB currency with exactly the same investments and monthly capitalization. Considers taxes, commissions, dividends, tax deductions and optionally inflation when calculates portfolio performance.

investments analyse

Portfolio rebalancing

See instructions for portfolio rebalancing.

investments rebalance

Tax statement generation

See instructions for tax statement generation and recommendations for interacting with Russian Federal Tax Service.

investments tax-statement

Sell simulation

investments simulate-sell command simulates closing of the specified positions by current market price and allows you to estimate your profits, taxes and tax exemption applicability.

investments simulate-sell

Prometheus metrics

investments metrics command allows you to export analysis results in Prometheus format to be collected by Node exporter's Textfile Collector.

Here is an example of Grafana dashboard which displays aggregated statistics and investment results for multiple portfolios opened in different brokers:

Investments Grafana dashboard

Deposits

You can also view opened bank deposits all in one place and get notified about upcoming deposit closures. Register your opened deposits in the configuration file and then execute:

$ investments deposits

                            Open deposits

 Open date   Close date    Name     Amount   Interest  Current amount
 19.06.2019  19.03.2020  Тинькофф  465,000₽         7     473,343.49₽
 21.06.2019  21.06.2020  Тинькофф  200,000₽       7.5     203,763.08₽
                                   665,000₽               677,106.57₽

This command has a cron mode (investments deposits --cron) which you can use in combination with notify_deposit_closing_days configuration option. For example, if you create a cron job and configure it to send the command output to your email, then on 11.06.2020 having notify_deposit_closing_days: 10 you get an email with the following contents:

The following deposits are about to close:
* 21.06.2020 Тинькофф: 200,000₽ -> 215,570.51₽

The following deposits are closed:
* 19.03.2020 Тинькофф: 465,000₽ -> 490,013.27₽

Unsupported features

The program is focused on passive investing use cases and supports only those cases which I saw in my broker statements or statements sent to me by other people, which I assured to be handled properly and wrote regression tests for. For example, the following aren't supported yet:

Denial of responsibility

Any automation is imperfect and the author is a software developer, not a tax lawyer, so always be critical to all program's calculation results.

The project is developed as a pet project, mainly for my personal use. The code is written in a way that if it finds something unusual in broker statement it returns an error and doesn't try to pass through the error to avoid the case when it will get you to misleading results, so there may be many cases that it's not able to handle yet and I can't guarantee that I'll find a free time to support your specific case.

Contacts

Issues and Discussions are the preferred way for requests and questions. Please use email only for privacy reasons.

investments's People

Contributors

kalekseev avatar konishchevdmitry avatar revall avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

investments's Issues

Проблема с формированием tax-statement при перемещении акций с одного аккаунта на другой

Добрый день, Дмитрий!

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

Я завел второй аккаунт в IB и переместил все акции и наличные средства на него.
Tax-statement на новом аккаунте благополучно формировался до того момента, как я продал один тикер (а куплен он был на старом аккаунте), после продажи программа выводит следующую ошибку (см. скриншот)
А так полагаю, что программа не считала информацию о перемещении данного тикера на новый аккаунт. Факта покупки в файлах нового аккаунта естественно нет, но есть информация о перемещении тикера с аккаунта на аккаунт его стоимости и прибыле/убытке по этому инструменту.

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

P.S. Файлы с активностью по старому и новому аккаунту выслал на почту.

image

investments simulate-sell ib

Пробую эту функциональность:

$ investments simulate-sell ib
W: The broker statement misses trade settle date information. First occurred trade - EXH4d at 16.04.2020. All calculations for such trades will be performed in T+0 mode.
E: Unable to find quotes for following symbols: EXV8d, EXH4d.

Похоже европейских ETF нет на бесплатных аккаунтах finnhub и twelvedata.
Поэтому два вопроса:

  1. можно ли это сообщение сделать warning и продолжить расчет для того что есть?
  2. возможно ли прикрутить еще API которое дает данные по европейским ETF? Если да, я поищу подходящее.

E: Failed to process dividend income: ... EUR currency is not supported yet.

$ investments --config /media/t/fin/investments-data tax-statement ib 2020 /media/t/fin/investments-data/tax-return-2020.dc0
W: The broker statement misses trade settle date information. First occurred trade - EXH4d at 16.04.2020. All calculations for such trades will be performed in T+0 mode.
E: Failed to process dividend income: Unable to add EXH4 dividend from 15.07.2020 to the tax statement: EUR currency is not supported yet.

:(

Unsupported cash flow operation: "Налог" (Тинькофф)

$ investments sync tinkoff
E: Error while reading "/Users/maxpon/Brokerage/Тинькофф/Отчеты Брокера/broker-report-2021-04-01-2021-04-30.xlsx" broker statement: Starting from #27 row: [String("15.04.2021"), Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, String("16:51:25"), Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, String("20.04.2021"), Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, String("Вывод средств"), Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, String("0"), Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, String("454474,17"), Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty]: Unsupported cash flow operation: "Налог".

Пример отчёта: broker-report-2021-04-01-2021-04-30.xlsx

Проблема с запятой в csv отчетах

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

E: Error while reading "/Users/nmassalitin/.investments/statements/U3432304_U3432304_20200106_20210105_AS_Fv2_fcf9c2c767f3ead1e979c867a1a756e8.csv" broker statement: Failed to parse ("Trades", "Data", "Order", "Stocks", "CAD", "VLNS", "2020-11-18, 09:30:00", "-1,020", "1.863333333", "1.74", "1900.6", "-10.2", "-3503.8", "-1613.4", "125.8", "C;P") record: Got an unexpected VLNS trade quantity: -1,020.

Анализ дивидендов иностранных эмитентов в отчетах Открытия

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

Проблема с прочтением Interactive Brokers statements (.csv)

Добрый день, Дмитрий!

Предыстория (возможно имеет смысл дополнить инструкцию по установке, так как строго следовал ей сначала):
Изначально у меня не компилировалась Ваша программа investments, на свежеразвернутый Ubuntu Server 20.04 LTS, вылетала ошибка error E0658, вылечил установкой rustc nightly.

Далее у меня никак не хотел считываться statement экспортированный (согласно Вашей инструкции) из Interactive Brokers (E: "/root/ib" doesn't contain any broker statement.), оказалось, что необходимо открыть этот statement в MS Office Excel и пересохранить в том же формате (CSV разделители - запятые), после чего Ваша программа начинает видеть сохраненные таким образом statements.

Но вот уже несколько дней я бьюсь над следующей проблемой: Ваша программа при попытке прочитать statements Interactive Brokers, выдает следующую ошибку E: Error while reading "/root/ib": Error while reading "/root/ib/empty-trade-confirmation.csv": "Trade confirmation" record doesn't have "AssetClass" field. Я уже всё перепробывал, даже взял Ваш файл из ~/investments/src/broker_statement/ib/testdata/empty-trade-confirmation.csv, добавил в него пару сделок, что бы он небыл пустым, но Ваша программа продолжает ругаться на Trade confirmation" record doesn't have "AssetClass" field.

P.S. В конфигурационном файле единственное что я поменял, это путь к statements.
empty-trade-confirmation.zip

Ошибка spinoff

Добрый день, Дмитрий!

В первую очередь, спасибо за Вашу, столь полезную программу для расчета налогов!

Я столкнулся со следующей проблемой, компания Pfizer (PFE) выделела из себя свое подразделение в отдельную компанию - Viatris (VTRS) и все держатели акций Pfizer (PFE) получили акции этой компании. Этот процесс называется спин-офф или spin-off https://ru.wikipedia.org/wiki/Выделение_организации

Со мной так и произошло, но к сожалению программа не хочет счтать налог из-за этих новых акций.
Можете ли исправить этот недочет? Отчеты отправил по почте.

Огромная благодарность!

image

Bundled SQLite

It would be easier to build on windows if it had something like this:

diesel = { version = "1.4.4", features = ["sqlite"] }
libsqlite3-sys = { version = ">=0.8.0, <0.13.0", features = ["bundled"] }

Non-continuous periods error during parsing IB statements

...
программа, как я понял не умеет видеть выходные дни между csv-отчетами. У меня есть csv-отчет по старому аккаунту заканчивающийся 19.06.2020 (это пятница), в IB я могу сформировать новый csv-отчет (по новому аккаунту, но это не важно) только с 22.06.2022 (понедельник) или с 19.06.2020 (пятница), то есть по рабочим дням. И если я их "скармливаю" Вашей программе, то она выдает ошибку (см. скриншот)

Получается, что приходится править csv-отчет в любом случае, редактируя начальную дату на следующий день 20.06.2020 (суббота), даже если он нерабочий.

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

error

Originally posted by @IlyaKarpelyuk in #13 (comment)

Unexpected dividend description with IB

Hi Dmitry!

Thank you for such interesting and useful application (especially tax-statement part)!

During import IB statements I faced an issue "Unexpected dividend description" when report has lines like this:

Dividends,Data,USD,2019-04-15,UNIT(US91325V1089) Payment in Lieu of Dividend (Ordinary Dividend),0.35
Withholding Tax,Data,USD,2019-04-15,UNIT(US91325V1089) Payment in Lieu of Dividend - US Tax,-0.03,

To fix it I've changed regular expressions from

r"^(?P<issuer>[A-Z]+) ?\([A-Z0-9]+\) Cash Dividend ").unwrap();

to

r"^(?P<issuer>[A-Z]+) ?\([A-Z0-9]+\) (?:Cash Dividend |Payment in Lieu of Dividend )").unwrap();

but after that I though that maybe we should change them like this:

r"^(?P<issuer>[A-Z]+) ?\([A-Z0-9]+\) ").unwrap();

and don't check message at all?
What do you think @KonishchevDmitry?

investments metrics: E: Error while reading "/home/rom/Brokerage/Открытие/Отчеты Брокера": No such file or directory (os error 2).

Пытаюсь сгенерировать метрики:

$ investments metrics ./metrics.txt
E: Error while reading "/home/rom/Brokerage/Открытие/Отчеты Брокера": No such file or directory (os error 2).

У меня пока IB только, и нет открытия брокера и остальных.
Не очень понятно как отключить остальных брокеров в этом случае?
Пробовал подсунуть пустую директорию, но не помогает, требует отчеты :)

Проблема с подсчетом дробных акций

Добрый день, Дмитрий!

Как всегда, продолжаю тестировать Вашу программу. :)

Купил вчера дробные акции и столкнулся с проблемой, что программа не понимает покупку дробных акций (fractional shares), отраженных в отчете. Сама продажа дробных акций не осуществлялась, так же дивиденды по ним не приходили. Более того, в этот же день (вчера) я докупил дробные доли до целых чисел и с того дня у меня в портфеле все акции целые.

Сам отчет направляю по почте, так же прикладываю отчет со старого счета, для совместимости (как Вы помните, я перевел акции с одного счета на другой; старый отчет заканчивается 19.06.2020, а новый начинается с 22.06.2020 (следующим рабочим днем)).

Буду крайне признателен, если получиться добавить возможность учета дробных акций (fractional shares).
Заранее спасибо!

P.S. Дивиденды рассчитываются очень просто, вот официальный ответ и формула IB (аналогичный метод вероятно можно экстраполировать и на расчет налога):
https://www.interactivebrokers.com/lib/cstools/faq/#/content/faq%3A%2F%2FpageId%3D84609891?articleId=83261303

P.P.S. Еще, я так понял, дробные акции не могут быть больше чем десятитысячные доли (то есть не более 4-х знаков после запятой, например 3.5649)

image

tax-statement tinkoff wrong report format

←[31mE: Error while reading "broker-report-2020-07-01-2020-12-31.xlsx" broker statement: The row contains non-empty cells between column cells: [String("10 из "), Empty].←[0m

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

merge_performance Bug

Проблема с функционалом "merge_performance", прописал в конфиге:
merge_performance: VOO: [XLP]

В итоге XLP из "analyse ib" уходит, но в суммы расчетов по VOO не включается и не добавляется, цифры остаются те же.

Проблема с датами при обработке flex-отчета IB

Здравствуйте, Дмитрий!
Благодарю Вас за эту нужную людям работу. К сожалению, пока сам не смог воспользоваться вашей программой.
Я человек, которого страшит слово компилятор, поэтому прошу не судить строго ).
При попытке сформировать отчет сначала возникла ошибка при обработке файла флекс-отчета.
tickers
Я в файле руками поменял тикеры с цифрами и строчными буквами на тикеры без таковых.
Но далее возникла ошибка, с которой я не знаю, что делать.
date
Flex-отчет формировал строго в соответствии с инструкцией.

Есть проблема с импортом корпоративного действия от MAC 3.06.2020

Такое корпоративное действие не парсится
E: Error while reading ... broker statement: Failed to parse ("Corporate Actions", "Data", "Stocks", "USD", "2020-06-03", "2020-06-03, 20:20:00", "MAC (US5543821012) Cash Dividend USD 0.10, STOCK DIVIDEND US5543821012 548275673 FOR 10000000000 (MAC, MACERICH CO/THE, US5543821012)", "5", "0", "42.95", "0", "") record: Unsupported corporate action: "MAC (US5543821012) Cash Dividend USD 0.10, STOCK DIVIDEND US5543821012 548275673 FOR 10000000000 (MAC, MACERICH CO/THE, US5543821012)".

3.06.2020 MAC выплачивало дивиденды в размере 0.5$ на акцию в форме 0.1$ на акцию плюс 0.4$ в форме акций MAC с округлением до целых акций и дозачислением остатка тоже в форме $$
Вот здесь подробности https://money.tmx.com/en/quote/MAC:US/news/8482400016399050/Macerich_Announces_Results_Of_Dividend_Payable_On_June_3_2020

В отчете броке в итоге есть две строки:

  • строка с дивидендами в $ на которую начислен полный налог 10% от всех дивидендов
  • строка с корпоративным действием о получении акций причем цена в день получения уже немного изменилась

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

Не линкуется migrations_macros

При сборке по инструкции выдает:

` = note: LINK : fatal error LNK1181: cannot open input file 'sqlite3.lib'

error: aborting due to previous error
error: could not compile migrations_macros.`

MS VS SDK установлен, но может нужно еще что-то или дополнительные пути прописать?

Bonds support

Спасибо за программу.
Иностранные бонды IB не планируется поддерживать?

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

Can't specify config path

$ ls /media/t/fin/investments-data
config.yaml

$ investments -c /media/t/fin/investments-data tax-statement ib
E: Error while reading "/home/rom/investments-data": No such file or directory (os error 2).

The path in the error message does not match the specified path.

Проблема с обработкой кода ISIN

Добрый день, Дмитрий!

Продолжаю тестировать Вашу программу на живом счете и обнаружил еще одну ошибку.

image

Программа ругается на выплату дивидендов одним тикером - ETN (Eaton Corporation), компания самая обычная, сделка - лонг. Я так думаю программа не воспринимает вот эти символы в отчете Interactive Brokers - ETN(IE00B8KQN827). То есть код ISIN отличный от начинающегося с US.

Сама компания из Ирландии, но торгуется на NYSE, причем напрямую - не ADR (если не ошибаюсь) и дивиденты выплачивает так же в USD.

Можете пофиксить этот баг, что бы программа могла считывать ISIN-коды IE и другие, по возможности.

Заранее большое спасибо!

Свои отчеты из Interactive Brokers прилагаю.
ActivityRUB.zip

Account type: Margin

На текущий момент при попытке обработать отчеты IB Margin-счета похоже не поддерживаются:

Failed to parse ("Account Information", "Data", "Account Capabilities", "Margin") record: Unsupported account type: Margin.

Подскажите, есть ли принципиальная проблема в том, что Margin счета сейчас не обрабатываются? Там другой формат или есть принципиальные отличия в обработке сделок по Margin счетам?

E: Unable to calculate trade commission: Commission currency doesn't match trade currency: RUB vs USD.

Добрый день, @KonishchevDmitry
попробовал сегодня запустить с дефолтным конфигом (добавлены токены, добавлены файлы отчетов из тинькофф)

investments analyse tinkoff
E: Unable to calculate trade commission: Commission currency doesn't match trade currency: RUB vs USD.

На счете только иностранные акции.

Проблема с парсингом дивидендов для RDS B

Похоже что не парсятся строки когда у символа в имени есть пробел:
E: Error while reading ... broker statement: Failed to parse ("Dividends", "Data", "USD", "2020-06-22", "RDS B(US7802591070) Cash Dividend USD 0.32 per Share (Ordinary Dividend)", "48") record: Unexpected dividend description: "RDS B(US7802591070) Cash Dividend USD 0.32 per Share (Ordinary Dividend)".

Не поддерживаются переименования инструментов

Вот еще такая ошибка возникает:
E: Calculated open positions don't match declared ones in the statement: CBL PRD: 500 vs 0.

Вероятно вследствие переименования инструмента "CBL PRD" в "CBLDQ" и такая операция в приложении не правильно обрабатывается.

Got a stock symbol with an unsupported format

Error while executing command:
investments tax-statement ib 2021 statement.dc0

Error:
Got a stock symbol with an unsupported format: "U.UN"

Error while reading "/home/ubuntu/Brokerage/Interactive Brokers/Statements": Error while reading "/home/ubuntu/Brokerage/Interactive Brokers/Statements/2021_Trade_Confirmation.csv": Failed to parse ("U0000000", "XXXXXX", "", "CAD", "STK", "U.UN", "SPROTT PHYSICAL URANIUM TRUS", "503299503", "CA85210A1049", "ISIN", "", "CA85210A1049", "TSE", "", "", "", "", "", "1", "", "", "", "", "ExchTrade", "4060338060", "2058458591", "0000d8c0.6138944c.01.01", "004d0452.00022e64.6136ee12.0001", "", "", "", "0", "", "", "2021-09-07 20:52:42", "2021-09-08 09:30:00", "2021-09-08", "2021-09-10", "2021-09-08", "TSE", "BUY", "10", "14.8", "148", "-148", "-0.755", "-0.755", "0", "0", "0", "0", "0", "CAD", "0", "O", "LMT", "EXECUTION", "", "N", "", "0", "", "", "", "", "0.0", "0.0 ()") record: Got a stock symbol with an unsupported format: "U.UN".

Unsupported asset class: "Cash Collateral".

First of all, thanks for the app, it's really helpful and I've been using it for the past year.

I'm trying to import a statement from Interactive Brokers, but I get the following error:

E: Error while reading "/home/rsa/.investments/statements/U4182902_20220103_20220201.csv" broker statement: Failed to parse ("Net Asset Value", "Data", "Cash Collateral", "0", "1124", "0", "1124", "1124") record: Unsupported asset class: "Cash Collateral".

Тинькофф: Декларирование дохода с дивидендов иностранных эмитентов

Обращение к пользователям

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

Ниже - запрос, который я отправил в поддержку Тинькова, и их ответ. Если вы заинтересованы в том, чтобы с помощью investments можно было декларировать доход с дивидендов иностранных эмитентов, предлагаю и вам отправить похожий запрос в поддержку. Брокерские отчеты раньше тоже были только в *.pdf, но люди просили - и они в итоге добавили *.xlsx, который несравнимо лучше с точки зрения парсинга.

Добрый день.

Я являюсь разработчиком https://github.com/KonishchevDmitry/investments, и ко мне приходят клиенты Тинькофф, которые хотят в автоматическом режиме генерировать налоговую декларацию по дивидендам зарубежных эмитентов, но пока что я вынужден им отвечать, что в брокерских отчетах Тинькофф не хватает всей необходимой информации.

Сейчас, если дивиденд поступил от зарубежного эмитента (СПБ биржа), в брокерском отчете виден только результирующий размер за вычетом налога (обычно 10%, но может быть и другой), и по данной информации невозможно понять, сколько еще нужно доплатить. Я знаю, что можно скачать Справку о доходах за пределами РФ, и там эта информация должна быть, но данная справка доступна только в pdf-формате, который очень плохо подходит для автоматизированного парсинга (в отличие от *.xslx, в котором можно скачать брокерские отчеты).

Не могли бы вы добавить в брокерский отчет информацию о изначальном размере дивиденда? Эту информацию вполне можно было бы добавить в колонку "Примечание" - там, где сейчас указывается название эмитента. Ну или хотя бы сделать возможным скачать Справку о доходах за пределами РФ в *.xslx-формате.

Здравствуйте!

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

Спасибо, что помогаете улучшать наш сервис!

Проблема обновления. MacOS

Добрый день!

При обновлении приложении возникла проблема. Вытянул изменения с репы через git pull, попытался запустить из папки cargo install --path . --bin investments --force однако вывалилась ошибка:


error: /Users/worm/investments is not a crate root; specify a crate to install from crates.io, or use --path or --git to specify an alternate source

Caused by:
failed to parse manifest at /Users/worm/investments/Cargo.toml

Caused by:
the default-run manifest key is unstable

Caused by:
feature default-run is required

this Cargo does not support nightly features, but if you switch to nightly channel you can add
cargo-features = ["default-run"] to enable this feature


Пробовал поставить nightly и добавить строку cargo-features = ["default-run"] в начало файла Cargo.toml. Однако так и не смог пересобрать.

По итогу удалил строку default-run = "investments" из файла Cargo.toml, билд пошел но в итоге снова вывалило кучу ошибок:

error[E0658]: use of unstable library feature 'alloc': this library is unlikely to be stabilized in its current form or name (see issue #27783)
error[E0658]: use of unstable library feature 'maybe_uninit' (see issue #53491)
error[E0599]: no function or associated item named uninit found for type core::mem::MaybeUninit<_> in the current scope
error: Could not compile smallvec

Help pls

Tax statement and REIT ETF

Приветствую. Подаю декларацию за 2020 год. При расчете налогов имеется проблема с учетом дивидендов от REIT ETF'ов как пример (VNQ) и расчетом доплаты.

По отчету IB:
13.03 начислен дивиденд 183.51 USD (VNQ)
13.03 удержан налог -18.14 USD (VNQ)

По формируемому отчету командой tax-statement видно учитывается что уплачено только 10.59$ (в отчете -18.14)

Дата Эмитент Валюта Сумма Курс руб. Сумма (руб) Налог Уплачено Уплачено (руб) К зачету К доплате Реальный доход
13.03.2020 VANGUARD REAL ESTATE ETF (VNQ) USD $181.41 74.0274 13,429.31₽ 1,746₽ $10.59 783.95₽ 784₽ 962₽ 11,683.36₽

С другими эмитентами всё впорядке, проблема только с VNQ по всем строкам с дивидендами, почему то с отчетом не совпадает

Tax-statement: display fees (inactivity/snapshots/etc)

Доходы от сделок с ЦБ можно уменьшить на прочие комиссии на аккаунте. В случае с IB это наверное чаще всего комиссия за неактивность аккаунта при балансе меньше $100k.
Было бы логично вывести сумму комиссий за отчётный год отдельной табличкой

Failed to parse ("Dividends", "Data", "EUR", ...

$ investments tax-statement ib
W: The broker statement misses trade settle date information. First occurred trade - EXH4d at 16.04.2020. All calculations for such trades will be performed in T+0 mode.
E: Error while reading "/media/t/fin/investments-data/en-activity-U3594789_2020_2020.csv" broker statement: Failed to parse ("Dividends", "Data", "EUR", "2020-07-15", "EXH4(DE000A0H08J9) Cash Dividend EUR 0.013046 per Share (Mixed Income)", "1.71") record: Unexpected dividend description: "EXH4(DE000A0H08J9) Cash Dividend EUR 0.013046 per Share (Mixed Income)".

I have the following entries in the description columns:

EXH4(DE000A0H08J9) Cash Dividend EUR 0.013046 per Share (Mixed Income)
EXH4(DE000A0H08J9) Cash Dividend EUR 0.162923 per Share (Mixed Income)
EXV8(DE000A0H08F7) Cash Dividend EUR 0.140474 per Share (Mixed Income)
SOXX(US4642875235) Cash Dividend USD 1.069314 per Share (Ordinary Dividend)
SOXX(US4642875235) Cash Dividend USD 0.746891 per Share (Ordinary Dividend)

Options support

Hello,

Are you planning to introduce options transactions support?

Поддержка не торгуемого тикера

Здравствуйте Дмитрий. Спасибо за ваш труд и интересную консольную утилиту.

При импорте данных появилась ошибка "Unable to find quotes for following symbols: CELG".
Дело в том что CELG тикер больше не торгуется, компания была куплена другой.

Как добавить возможность обработки такого случая?

Fee reversal affects cash-flow precision

Обнаружился такой нюанс. Вот данные раздела Fees (ниже).

Там видно, что были начисления и списания В ОДИН ДЕНЬ. В activity report эти начисления и списания не попали в раздел "Cash Report", видимо т.к. это было в один день. Однако investments cash-flow ib 2020 учитывает эти данные, например в строчках "Зачисления". В итоге цифры investments cash-flow не бьются с цифрами в разделе "Cash Report" activity report.

Чтобы совпадали, наверно нужно чтобы начисления и списания Fees в один день объединялись до попадания в "Зачисления", или лучше сделать настройку на этот случай.

Fees    Header  Subtitle        Currency        Date    Description     Amount
Fees    Data    Other Fees      USD     2020-05-05      P******88:GLOBAL SNAPSHOT FOR APR 2020  -0.09
Fees    Data    Other Fees      USD     2020-05-05      P******88:GLOBAL SNAPSHOT FOR APR 2020  0.09
Fees    Data    Other Fees      USD     2020-05-05      P******88:US CONSOLIDATED SNAPSHOT
FOR APR 2020    -0.01
Fees    Data    Other Fees      USD     2020-05-05      P******88:US CONSOLIDATED SNAPSHOT
FOR APR 2020    0.01
Fees    Data    Total                           0
Fees    Notes   Market data is provided by Global Financial Information
Services (GmbH). Your local broker collects amounts owed for fees and
tax for such data on behalf of Global Financial Information Services
(GmbH). Note, you are responsible for any applicable taxes relating to
the provision of these services.

Требуется пример конфига config.yaml

Добрый день! Хочу воспользоваться Вашим скриптом, всё установил, пробую использовать, однако не хватает примера конфига config.yaml, который требуется для использования скрипта. Прошу сбросить хоть какой то пример. Заранее огромное спасибо

Проблема при установке из за нехватки прав на subomule investments-testdata.git

Проблема при установке из за нехватки прав на subomule investments-testdata.git:

➜ investments git:(master) cargo install --git https://github.com/KonishchevDmitry/investments.git --bin investments --force Updating git repository https://github.com/KonishchevDmitry/investments.git`
error: failed to update submodule testdata

Caused by:
failed to fetch submodule testdata from [email protected]:investments-testdata.git

Caused by:
failed to authenticate when downloading repository
attempted ssh-agent authentication, but none of the usernames git succeeded

Caused by:
no authentication available`

Проблема с формированием декларации 2021

Приветствую Дмитрий! Еще раз спасибо большое за прогамму и с новым годом!

Не выходит наполнить отчет в формате программы "Декларация 2021"

При попытке наполнить файл "blank.dc1" вылазет следующая ошибка, см. скриншот.
При том что сам tax-statement за 2021 год (без наполнения файла) формирует корректно, без ошибок.
Файл blank.dc1 формировал по инструкции.
Так же, корректно наполняются и файлы "*.dc0" для "Декларации 2020"

Версия программы investment - 3.11.1, версия "Декларация 2021" - 1.0.0 от 30.12.2021
Сам файлик blank.dc1 выслал по почте.

image

Запуск билда 4.3.1 на Windows

Привет! Сразу спасибо за работу, тул выглядит очень многообещающе. Проблема: последний билд Windows 4.3.1 не запускается, проверил на нескольких ПК. Просто ничего не происходит. Если билдить самому по инструкции, та же история. В чем может быть проблема?

Unable to find USD/RUB currency rate for 11.01.2021 with 3 days precision.

Привет!

После крайнего обновления при попытке сделать анализ портфеля выдает ошибку парсинга курса валют на текущую дату

investments analyse ib E: Failed to calculate results of VWO selling order from 11.01.2021: Unable to find USD/RUB currency rate for 11.01.2021 with 3 days precision.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.