Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

investments simulate-sell ib #40

Open
Rom888 opened this issue Apr 13, 2021 · 15 comments
Open

investments simulate-sell ib #40

Rom888 opened this issue Apr 13, 2021 · 15 comments
Labels
feature Feature request

Comments

@Rom888
Copy link

Rom888 commented Apr 13, 2021

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

$ 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? Если да, я поищу подходящее.
@KonishchevDmitry
Copy link
Owner

можно ли это сообщение сделать warning и продолжить расчет для того что есть?

Прямо сейчас можно руками перечислить те символы, для которых котировки есть, если их не очень много: investments simulate-sell ib all $symbol1 all $symbol2 ....

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

Теоретически - возможно. На практике - все зависит от. :) К примеру, я начинал с Alpha Vantage - все было хорошо, но потом они сделали ограничение в 5 запросов в минуту, из-за чего пользоваться ими стало невозможно. Многие пользуются Yahoo, но мне эта идея не очень нравится: на самом деле у него нет API - то, что все дергают, не предназначено для использования со стороны и в любой момент может отсохнуть + там бывают какие-то абсолютно невалидные котировки, к примеру, для наших FinEx'овских ETF - вместо того, чтобы сказать, что данных нет, там рисуется (рисовалось когда я последний раз на него смотрел?) что-то совсем оторванное от реальности.

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

@Rom888
Copy link
Author

Rom888 commented Apr 14, 2021

Прямо сейчас можно руками перечислить те символы, для которых котировки есть, если их не очень много: investments simulate-sell ib all $symbol1 all $symbol2 ....

Не получается:

$ investments simulate-sell ib all WCLD
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.

и с investments metrics ib такая же история.

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

Хорошо, посмотрю что есть.

@KonishchevDmitry
Copy link
Owner

Ну, в metrics оно и логично, т. к. она выдает сводную статистику по всем портфелям, а вот в simulate-sell уже, конечно, не очень. Глянул почему - из-за калькулятора комиссий, т. к. у некоторых брокеров тарифы зависят от текущего размера портфеля, а чтобы его посчитать, надо знать котировки всех акций. Да - это, конечно, не очень приятный side effect...

@Rom888
Copy link
Author

Rom888 commented Apr 15, 2021

Поискал варианты API по европейским бумагам, в свободном доступе подходящее найти не удалось.
На гитхабе есть несколько проектов, которые берут данные непосредственно с iShares, но возможно более универсально и надежно (в плане того что yahoo не исчезнет) все таки использовать yahoo через доступное API или какую-либо комьюнити библиотеку.

Глянул почему - из-за калькулятора комиссий, т. к. у некоторых брокеров тарифы зависят от текущего размера портфеля, а чтобы его посчитать, надо знать котировки всех акций. Да - это, конечно, не очень приятный side effect...

Было бы здорово обойти это выдав warning и продолжить расчеты по тому что есть.

@KonishchevDmitry KonishchevDmitry added the feature Feature request label Apr 18, 2021
@KonishchevDmitry
Copy link
Owner

Кстати, EXV8d тоже в Yahoo Finance не находится. Зато я нашел вот такой mapping.

И вот уже EXV8.DE находит в том числе и Finnhub. Правда, логику данного mapping'а я пока не смог осознать: там не везде d заменяется на .DE. К примеру: LEERd -> CEC .

У вас тут есть понимание, по какой логике IB маппит одни символы на другие?

Можете скинуть результат grep -i EXV8d statement.csv? Что вообще IB пишет в своих отчетах про них? Может мне вообще имеет смысл пытаться переходить на поиск котировок по ISIN, а не по символу или вроде того. Хотя это, скорее всего, удвоит количество необходимых API-вызовов... :(

@KonishchevDmitry
Copy link
Owner

Кстати, учитывая вышесказанное, вам прямо сейчас должна помочь опция symbol_remapping.

@Rom888
Copy link
Author

Rom888 commented Apr 19, 2021

Можете скинуть результат grep -i EXV8d statement.csv? Что вообще IB пишет в своих отчетах про них? Может мне вообще имеет смысл пытаться переходить на поиск котировок по ISIN, а не по символу или вроде того. Хотя это, скорее всего, удвоит количество необходимых API-вызовов... :(

Скинул на почту, везде фигурирует EXV8d, и только в разделе Dividends упоминается без d:

EXV8(DE000A0H08F7) Cash Dividend EUR 0.140474 per Share
(Mixed Income)

@Rom888
Copy link
Author

Rom888 commented Apr 19, 2021

Кстати, EXV8d тоже в Yahoo Finance не находится. Зато я нашел вот такой mapping.
И вот уже EXV8.DE находит в том числе и Finnhub. Правда, логику данного mapping'а я пока не смог осознать: там не везде d заменяется на .DE. К примеру: LEERd -> CEC .

Интересно, зашел в IB личный кабинет.
EXV8 (без d) фигурирует в разделе портфолио и если щелкнуть по этому символу, то открывается страница с графиком, там тоже.
В отчете по дивидендам вместо EXV8 в столбце Symbol написано SXOPEX, а вместо EXH4 написано SXNPEX
В trade confirmation указаны EXV8d и EXH4d

У вас тут есть понимание, по какой логике IB маппит одни символы на другие?

Покопал.
Если взглянуть на страничку символа EXV8d (перешел с указанной страничке маппинга)
https://contract.ibkr.info/v3.10/index.php?action=Details&site=GEN&conid=89005194
то там EXV8d фигурирует как "Local Name" на конкретной бирже
для других бирж local name указан другой: EXV8 или SXOPEX

На сайте iShares указано EXV8, а в разделе где листингуется тоже указаны разные локальные тикеры.
То есть получается что на каждой бирже может быть свой локальный тикер, и в отчет попадают тикеры в зависимости от того на какой бирже была операция (покупка или выплата дивидендов).

И в итоге да, symbol_remapping выходит что очень полезная фича!

Но проблема еще в том что на finnhub на бесплатном аккаунте написано что нет "International Market Data".

@Rom888
Copy link
Author

Rom888 commented Apr 19, 2021

Попробовал, config:

    symbol_remapping:
      EXV8d: EXV8.DE
      EXH4d: EXH4.DE
$ investments simulate-sell ib all SOXX
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 get quotes from Finnhub: Failed to get quotes from https://finnhub.io/api/v1/quote?symbol=EXV8.DE&token=...: Server returned an error: 403 Forbidden.

@KonishchevDmitry
Copy link
Owner

KonishchevDmitry commented Apr 19, 2021

везде фигурирует EXV8d, и только в разделе Dividends упоминается без d:

Ну вот что они за люди такие. :) Ну как с этим можно работать. :)

У меня с вашим токеном (отредактировал ваше сообщение и удалил токен из него ;) ) тоже выдает You don't have access to this resource, но точно тот же запрос с моим токеном работает. Попробуйте попозже - мне сегодня весь день Prometheus алерты шлет, что у меня метрики не обновляются - у них там похоже сегодня какие-то проблемы с авторизацией.

@Rom888
Copy link
Author

Rom888 commented Apr 19, 2021

У меня с вашим токеном (отредактировал ваше сообщение и удалил токен из него ;) ) тоже выдает You don't have access to this resource, но точно тот же запрос с моим токеном работает. Попробуйте попозже - мне сегодня весь день Prometheus алерты шлет, что у меня метрики не обновляются - у них там похоже сегодня какие-то проблемы с авторизацией.

Ой, не заметил, спасибо, может для безопасности заменять токен звездочками в сообщениях, как это обычно делается для паролей?

Странно, попробовал еще раз через браузер, пишет в браузере:
{"error":"You don't have access to this resource."}
А если заменить тикер на американский SOXX, то все работает.

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

@KonishchevDmitry
Copy link
Owner

KonishchevDmitry commented Apr 19, 2021

Мне пока приходит в голову только:

  1. Перемапливать все дивиденды по ISIN в символы (чтобы они были везде одинаковыми в отчете)
  2. Для не-US* ISIN резолвить символ в API котировок

Там оно, правда, тоже как-то не без проблем резолвится:

$ isin=DE000A0H08F7
$ curl -s "https://finnhub.io/api/v1/stock/profile2?isin=$isin&token=$token"
{}
$ curl -s "https://finnhub.io/api/v1/search?q=$isin&token=$token"
{"count":1,"result":[{"description":"iShares STOXX Europe 600 Construct \u0026 Material UCITS ETF (DE)","displaySymbol":"EXV8.DE","symbol":"EXV8.DE","type":"ETP"}]}

@Rom888
Copy link
Author

Rom888 commented Apr 19, 2021

Наверно это имеет смысл, Security ID указывается в разделе
"Financial Instrument Information",
а в дивидендах и налогах везде указывается в скобках этот ID.

С моим токеном второй запрос возвращает:
{"count":0,"result":[]}

@KonishchevDmitry
Copy link
Owner

Какое-то оно прям совсем нестабильное. У меня потом тоже стало {"count":0,"result":[]} возвращать. Через какое-то время починилось.

С новым токеном - да, стабильно You don't have access to this resource..

@Rom888
Copy link
Author

Rom888 commented Apr 21, 2021

В этом плане возможно яхо финанс будет более предсказуемо себя вести.
И еще хорошая фича сделать какое-нибудь стандартное для таких задач REST API к локальному сервису (который будет обращаться к локальной базе данных или к сетевым API).
А уже юзер сам будет решать вопрос как наполнить свою локальную БД нужными ему данными.

KonishchevDmitry added a commit that referenced this issue Apr 10, 2022
…h we have no available quotes if we have net asset value information from statement (#40, #64)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature Feature request
Projects
None yet
Development

No branches or pull requests

2 participants