Open Rom888 opened 3 years ago
можно ли это сообщение сделать warning и продолжить расчет для того что есть?
Прямо сейчас можно руками перечислить те символы, для которых котировки есть, если их не очень много: investments simulate-sell ib all $symbol1 all $symbol2 ...
.
возможно ли прикрутить еще API которое дает данные по европейским ETF? Если да, я поищу подходящее.
Теоретически - возможно. На практике - все зависит от. :) К примеру, я начинал с Alpha Vantage - все было хорошо, но потом они сделали ограничение в 5 запросов в минуту, из-за чего пользоваться ими стало невозможно. Многие пользуются Yahoo, но мне эта идея не очень нравится: на самом деле у него нет API - то, что все дергают, не предназначено для использования со стороны и в любой момент может отсохнуть + там бывают какие-то абсолютно невалидные котировки, к примеру, для наших FinEx'овских ETF - вместо того, чтобы сказать, что данных нет, там рисуется (рисовалось когда я последний раз на него смотрел?) что-то совсем оторванное от реальности.
Но если есть какие-то адекватные альтернативы, то я совершенно не против того, чтобы добавить их поддержку.
Прямо сейчас можно руками перечислить те символы, для которых котировки есть, если их не очень много:
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
такая же история.
Но если есть какие-то адекватные альтернативы, то я совершенно не против того, чтобы добавить их поддержку.
Хорошо, посмотрю что есть.
Ну, в metrics
оно и логично, т. к. она выдает сводную статистику по всем портфелям, а вот в simulate-sell
уже, конечно, не очень. Глянул почему - из-за калькулятора комиссий, т. к. у некоторых брокеров тарифы зависят от текущего размера портфеля, а чтобы его посчитать, надо знать котировки всех акций. Да - это, конечно, не очень приятный side effect...
Поискал варианты API по европейским бумагам, в свободном доступе подходящее найти не удалось. На гитхабе есть несколько проектов, которые берут данные непосредственно с iShares, но возможно более универсально и надежно (в плане того что yahoo не исчезнет) все таки использовать yahoo через доступное API или какую-либо комьюнити библиотеку.
Глянул почему - из-за калькулятора комиссий, т. к. у некоторых брокеров тарифы зависят от текущего размера портфеля, а чтобы его посчитать, надо знать котировки всех акций. Да - это, конечно, не очень приятный side effect...
Было бы здорово обойти это выдав warning и продолжить расчеты по тому что есть.
Кстати, EXV8d
тоже в Yahoo Finance не находится. Зато я нашел вот такой mapping.
И вот уже EXV8.DE
находит в том числе и Finnhub. Правда, логику данного mapping'а я пока не смог осознать: там не везде d
заменяется на .DE
. К примеру: LEERd
-> CEC
.
У вас тут есть понимание, по какой логике IB маппит одни символы на другие?
Можете скинуть результат grep -i EXV8d statement.csv
? Что вообще IB пишет в своих отчетах про них? Может мне вообще имеет смысл пытаться переходить на поиск котировок по ISIN, а не по символу или вроде того. Хотя это, скорее всего, удвоит количество необходимых API-вызовов... :(
Кстати, учитывая вышесказанное, вам прямо сейчас должна помочь опция symbol_remapping.
Можете скинуть результат grep -i EXV8d statement.csv? Что вообще IB пишет в своих отчетах про них? Может мне вообще имеет смысл пытаться переходить на поиск котировок по ISIN, а не по символу или вроде того. Хотя это, скорее всего, удвоит количество необходимых API-вызовов... :(
Скинул на почту, везде фигурирует EXV8d, и только в разделе Dividends упоминается без d:
EXV8(DE000A0H08F7) Cash Dividend EUR 0.140474 per Share
(Mixed Income)
Кстати,
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".
Попробовал, 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.
везде фигурирует EXV8d, и только в разделе Dividends упоминается без d:
Ну вот что они за люди такие. :) Ну как с этим можно работать. :)
У меня с вашим токеном (отредактировал ваше сообщение и удалил токен из него ;) ) тоже выдает You don't have access to this resource
, но точно тот же запрос с моим токеном работает. Попробуйте попозже - мне сегодня весь день Prometheus алерты шлет, что у меня метрики не обновляются - у них там похоже сегодня какие-то проблемы с авторизацией.
У меня с вашим токеном (отредактировал ваше сообщение и удалил токен из него ;) ) тоже выдает
You don't have access to this resource
, но точно тот же запрос с моим токеном работает. Попробуйте попозже - мне сегодня весь день Prometheus алерты шлет, что у меня метрики не обновляются - у них там похоже сегодня какие-то проблемы с авторизацией.
Ой, не заметил, спасибо, может для безопасности заменять токен звездочками в сообщениях, как это обычно делается для паролей?
Странно, попробовал еще раз через браузер, пишет в браузере: {"error":"You don't have access to this resource."} А если заменить тикер на американский SOXX, то все работает.
Может быть у вас другой тарифный план, или когда вы получали токен, не было этого ограничения? Эта ситуация может прояснится, если вы получите еще один токен на другой емайл и попробуете с ним.
Мне пока приходит в голову только:
Там оно, правда, тоже как-то не без проблем резолвится:
$ 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"}]}
Наверно это имеет смысл, Security ID указывается в разделе "Financial Instrument Information", а в дивидендах и налогах везде указывается в скобках этот ID.
С моим токеном второй запрос возвращает: {"count":0,"result":[]}
Какое-то оно прям совсем нестабильное. У меня потом тоже стало {"count":0,"result":[]}
возвращать. Через какое-то время починилось.
С новым токеном - да, стабильно You don't have access to this resource.
.
В этом плане возможно яхо финанс будет более предсказуемо себя вести. И еще хорошая фича сделать какое-нибудь стандартное для таких задач REST API к локальному сервису (который будет обращаться к локальной базе данных или к сетевым API). А уже юзер сам будет решать вопрос как наполнить свою локальную БД нужными ему данными.
Пробую эту функциональность:
Похоже европейских ETF нет на бесплатных аккаунтах finnhub и twelvedata. Поэтому два вопроса: