airens / interactive_brokers_tax

Формирование 3-НДФЛ на основе отчета Interactive Brokers
GNU General Public License v3.0
92 stars 41 forks source link

Крешится исправление таблицы дивов #21

Closed dryaz closed 3 years ago

dryaz commented 3 years ago
Размеры таблиц дивидендов и налогов по ним не совпадают. Попробуем исправить...
Traceback (most recent call last):
  File "/Users/dmitryryazantsyev/workspace/ibkrTaxFork/ib.py", line 255, in <module>
    cashflow, trades, comissions, div, div_tax, div_accurals, interests = load_data()
  File "/Users/dmitryryazantsyev/workspace/ibkrTaxFork/ib.py", line 231, in load_data
    df.loc[index] = tax_row.T.squeeze()
  File "/usr/local/lib/python3.9/site-packages/pandas/core/indexing.py", line 691, in __setitem__
    iloc._setitem_with_indexer(indexer, value, self.name)
  File "/usr/local/lib/python3.9/site-packages/pandas/core/indexing.py", line 1628, in _setitem_with_indexer
    self._setitem_with_indexer_missing(indexer, value)
  File "/usr/local/lib/python3.9/site-packages/pandas/core/indexing.py", line 1919, in _setitem_with_indexer_missing
    value = Series(value, index=self.obj.columns, name=indexer)
  File "/usr/local/lib/python3.9/site-packages/pandas/core/series.py", line 239, in __init__
    if is_empty_data(data) and dtype is None:
  File "/usr/local/lib/python3.9/site-packages/pandas/core/construction.py", line 628, in is_empty_data
    is_simple_empty = is_list_like_without_dtype and not data
  File "/usr/local/lib/python3.9/site-packages/pandas/core/generic.py", line 1439, in __nonzero__
    raise ValueError(
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

Код последнего мастера AS IS.

CSV для воспроизведения: https://drive.google.com/file/d/1U4grcEppUS1T7OmHdA9ZtuqDr7XQs8wt/view?usp=sharing

hh-h commented 3 years ago

Я не рассчитывал что там может быть больше одной записи, сопоставление таблиц происходит по условию одинаковых тикеров и дат, можешь объяснить почему у тебя в одну дату 3 записи? image

dryaz commented 3 years ago

Я не рассчитывал что там может быть больше одной записи, сопоставление таблиц происходит по условию одинаковых тикеров и дат, можешь объяснить почему у тебя в одну дату 3 записи? image

Мне, если честно, самому интересно, пытался понять - пока не получается. Были догадки, что сначала сняли, потом вернули корректировкой, потому снова сняли. НО хз как оно на самом деле.

По идее, на основнании одного и того же тикера можно просуммировать в рамках одного дня комиссии и будет все ок.

hh-h commented 3 years ago

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

hh-h commented 3 years ago

В принципе фикс сделал, посмотрел твой отчет - у тебя несколько таких странных строчек, есть идеи что это такое? SCHD(US8085247976) Payment in Lieu of Dividend(Ordinary Dividend) VO(US9229086296) Payment in Lieu of Dividend(Ordinary Dividend) HHR(US42207L1061) Payment in Lieu of Dividend(Ordinary Dividend)

dryaz commented 3 years ago

В принципе фикс сделал, посмотрел твой отчет - у тебя несколько таких странных строчек, есть идеи что это такое? SCHD(US8085247976) Payment in Lieu of Dividend(Ordinary Dividend) VO(US9229086296) Payment in Lieu of Dividend(Ordinary Dividend) HHR(US42207L1061) Payment in Lieu of Dividend(Ordinary Dividend)

Смею предположить что это может связано с РЕПО либо с покупкой на заемные, которые считаются такими, когда чуток ушел в минус по валюте (кажется в ibkr такое возможно).

https://ibkr.info/zh-hans/node/2713

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

hh-h commented 3 years ago

Запушил фикс, но не разбирался с этими Payment in Lieu

airens commented 3 years ago
Размеры таблиц дивидендов и налогов по ним не совпадают. Попробуем исправить...
Traceback (most recent call last):
  File "/Users/dmitryryazantsyev/workspace/ibkrTaxFork/ib.py", line 255, in <module>
    cashflow, trades, comissions, div, div_tax, div_accurals, interests = load_data()
  File "/Users/dmitryryazantsyev/workspace/ibkrTaxFork/ib.py", line 231, in load_data
    df.loc[index] = tax_row.T.squeeze()
  File "/usr/local/lib/python3.9/site-packages/pandas/core/indexing.py", line 691, in __setitem__
    iloc._setitem_with_indexer(indexer, value, self.name)
  File "/usr/local/lib/python3.9/site-packages/pandas/core/indexing.py", line 1628, in _setitem_with_indexer
    self._setitem_with_indexer_missing(indexer, value)
  File "/usr/local/lib/python3.9/site-packages/pandas/core/indexing.py", line 1919, in _setitem_with_indexer_missing
    value = Series(value, index=self.obj.columns, name=indexer)
  File "/usr/local/lib/python3.9/site-packages/pandas/core/series.py", line 239, in __init__
    if is_empty_data(data) and dtype is None:
  File "/usr/local/lib/python3.9/site-packages/pandas/core/construction.py", line 628, in is_empty_data
    is_simple_empty = is_list_like_without_dtype and not data
  File "/usr/local/lib/python3.9/site-packages/pandas/core/generic.py", line 1439, in __nonzero__
    raise ValueError(
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

Код последнего мастера AS IS.

CSV для воспроизведения: https://drive.google.com/file/d/1U4grcEppUS1T7OmHdA9ZtuqDr7XQs8wt/view?usp=sharing

Просьба проверить фикс от @hh-h

airens commented 3 years ago

@dryaz

dryaz commented 3 years ago

Отчеты прошли корректно, GJ, закрываю issue.