cdump / investments

Analysis of Interactive Brokers reports for tax reporting in Russia
MIT License
111 stars 20 forks source link

InteractiveBrokers: support Futures #5

Open iSevenDays opened 4 years ago

iSevenDays commented 4 years ago

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

Обнаружил ошибку что не поддерживаются фьючерсы.

Было бы отлично, если бы вы могли их добавить или подсказать как это сделать.

Traceback (most recent call last): File "/Users/seven/miniconda3/envs/py37/bin/ibtax", line 8, in sys.exit(main()) File "/Users/seven/miniconda3/envs/py37/lib/python3.7/site-packages/investments/ibtax/ibtax.py", line 135, in main trade_confirmation_csvs=confirmation_reports, File "/Users/seven/miniconda3/envs/py37/lib/python3.7/site-packages/investments/report_parsers/ib.py", line 118, in parse_csv 'Financial Instrument Information': self._parse_instrument_information, File "/Users/seven/miniconda3/envs/py37/lib/python3.7/site-packages/investments/report_parsers/ib.py", line 180, in _real_parse_activity_csv parser_fn(fields) File "/Users/seven/miniconda3/envs/py37/lib/python3.7/site-packages/investments/report_parsers/ib.py", line 189, in _parse_instrument_information kind=_parse_tickerkind(f['Asset Category']), File "/Users/seven/miniconda3/envs/py37/lib/python3.7/site-packages/investments/report_parsers/ib.py", line 36, in _parse_tickerkind raise ValueError(strval) ValueError: Futures

Я резидент Украины, у нас есть двузначности в законе, и при расчёте фьючерсов мы пока используем формулу "(сумма покупки - сумма продажи) * мультипликатор фьючерса(например 37500 для кофе/какао)*курс доллара на дату продажи". В РФ я так понимаю должна использоваться формула "(сумма покупки*курс доллара на дату покупки - сумма продажи*курс доллара на дату продажи)*мультипликатор фьючерса"

Спасибо!

cdump commented 4 years ago

Вам нужно в https://github.com/cdump/investments/blob/master/investments/report_parsers/ib.py#L36 дописать

if strval == 'Futures':
    return TickerKind.Futures

если сработает - напишите, я добавлю в основную ветку.

По формуле расчета: можно в отчете для фьючерсов смотреть только на колонку profit (сумма покупки - сумма продажи) - останется только пересчитать в нужную валюту на дату продажи, либо попробовать дописать эту логику в https://github.com/cdump/investments/blob/master/investments/ibtax/ibtax.py#L14

cdump commented 4 years ago

@iSevenDays попробовали, получилось?

iSevenDays commented 4 years ago

@cdump пробовал, не получилось. Было очень много крашей то на опционах, то на фьючерсах, то на опционах на фьючерсах, то на forex операциях.

В итоге дофиксил как получилось, оставил только фьючерсы.

Проверял на отчёте с убытком в ~30%, а программа показала миллионные прибыли.

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

Кстати, в Украине не используется подход T+2(или аналогичный, когда зачисление происходит позже), берётся дата покупки из activity отчёта брокера, и дата продажи, и высчитывается прибыль. Может дело также было в этом.

cdump commented 4 years ago

Понятно, опционы я проверял только на одной своей с ними сделке - там все верно посчиталось, сделок с фьючерсами у меня там нет

Может оно и работает исключительно на акциях

Лучше всего проверенно оно действительно на акциях в LONG, для остальных случаев - нужны примеры отчетов, чтобы понимать где может быть ошибка и как поправить.

T+2 или T+0 меняется одной строчкой в https://github.com/cdump/investments/blob/master/investments/ibtax/ibtax.py#L16 и я не думаю что разница в сотни процентов может быть из-за этого.