cdump / investments

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

Ошибка парсинга тикера #48

Closed anton-suprunov closed 2 years ago

anton-suprunov commented 3 years ago

Здравствуйте, возникает вот такая ошибка при попытке генерации отчета: Что - то связанное со сплитом Apple?

$ python -m investments.ibtax --activity-reports-dir ./activity/ --confirmation-reports-dir ./tradeconfirmation/
Traceback (most recent call last):
  File "Python\Python38-32\lib\runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "Python\Python38-32\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "Python38\site-packages\investments\ibtax\__main__.py", line 3, in <module>
    main()
  File "Python38\site-packages\investments\ibtax\ibtax.py", line 251, in main
    parser_object = parse_reports(args.activity_reports_dir, args.confirmation_reports_dir)
  File "Python38\site-packages\investments\ibtax\ibtax.py", line 226, in parse_reports
    parser_object.parse_csv(
  File "Python38\site-packages\investments\report_parsers\ib.py", line 154, in parse_csv
    self._real_parse_activity_csv(csv.reader(activity_fh, delimiter=','), {
  File "Python38\site-packages\investments\report_parsers\ib.py", line 211, in _real_parse_activity_csv
    parser_fn(fields)
  File "Python38\site-packages\investments\report_parsers\ib.py", line 230, in _parse_trades
    ticker = self._tickers.get_ticker(f['Symbol'], ticker_kind)
  File "Python38\site-packages\investments\report_parsers\ib.py", line 94, in get_ticker
    raise KeyError(name)
KeyError: 'AAPL 15JAN21 180.0 C'
cdump commented 3 years ago

Не похоже на проблему из-за сплита, почему-то не найдена информация о тикере этого опциона. Можете скинуть все строки из вашего отчета activity, начинающиеся с Financial Instrument Information (блок информации о тикерах)?

anton-suprunov commented 3 years ago

@cdump с той ошибкой вроде разобрался, но теперь вот такая

File "C:\Users\user\AppData\Roaming\Python\Python38\site-packages\investments\report_parsers\ib.py", line 216, in _parse_instrument_information self._tickers.put( File "C:\Users\user\AppData\Roaming\Python\Python38\site-packages\investments\report_parsers\ib.py", line 65, in put assert conid not in self._conid_to_ticker AssertionError

У меня там открытые позиции по опционам, переходящие с года на год, может быть в них проблема? То есть например продал покрытый колл в 2018, истекающий в 2019.

Имеет ли смысл объединить отчеты за разные годы в один файл?

esemi commented 3 years ago

@anton-suprunov попробуй объеденить в один и если вдруг поможет, то вероятно дело в багуле, которую правит MR

esemi commented 3 years ago

@anton-suprunov есть апдейт?

anton-suprunov commented 3 years ago

@esemi были две проблемы: одни из-за сплита AAPL, опцион заменился на 4x опциона с новой ценой, и вторая проблема была из-за использования функциональности roll для опциона в IB, как то он криво подменяет контракт в отчете, для себя решил этой функцией больше не пользоваться

esemi commented 3 years ago

Хмм Ну сплиты с опционами эта штука не сильно поддерживает, да)

cdump commented 2 years ago

На поддержку сплитов есть отдельные тикет - https://github.com/cdump/investments/issues/6