Tinkoff / invest-python

Tinkoff Invest Python gRPC client
https://tinkoff.github.io/invest-python/
Apache License 2.0
313 stars 90 forks source link

[Bug] Возвращаемые данные об облигации не соответствуют действительности #190

Closed vovabush closed 1 year ago

vovabush commented 1 year ago

Что случилось?

При запросе данных об облигации RU000A101228 возвращается поле floating_coupon_flag равное False, подразумевая, что купон у облигации постоянный:

Возвращаемый ответ Bond(figi='BBG00QXGFHS6', ticker='RU000A101228', class_code='TQCB', isin='RU000A101228', lot=1, currency='rub', klong=Quotation(units=0, nano=0), kshort=Quotation(units=0, nano=0), dlong=Quotation(units=0, nano=0), dshort=Quotation(units=0, nano=0), dlong_min=Quotation(units=0, nano=0), dshort_min=Quotation(units=0, nano=0), short_enabled_flag=False, name='МОЭК выпуск 3', exchange='MOEX', coupon_quantity_per_year=2, maturity_date=datetime.datetime(2025, 11, 7, 0, 0, tzinfo=datetime.timezone.utc), nominal=MoneyValue(currency='rub', units=1000, nano=0), initial_nominal=MoneyValue(currency='rub', units=1000, nano=0), state_reg_date=datetime.datetime(2019, 11, 13, 0, 0, tzinfo=datetime.timezone.utc), placement_date=datetime.datetime(2019, 11, 15, 0, 0, tzinfo=datetime.timezone.utc), placement_price=MoneyValue(currency='rub', units=1000, nano=0), aci_value=MoneyValue(currency='rub', units=22, nano=170000000), country_of_risk='RU', country_of_risk_name='Российская Федерация', sector='energy', issue_kind='documentary', issue_size=5000000, issue_size_plan=5000000, trading_status=, otc_flag=False, buy_available_flag=True, sell_available_flag=True, floating_coupon_flag=False, perpetual_flag=False, amortization_flag=False, min_price_increment=Quotation(units=0, nano=10000000), api_trade_available_flag=True, uid='c8312d21-c30c-4415-a393-e54f068e9538', real_exchange=, position_uid='48af59c0-e849-434c-8a90-dd52400bd4aa', for_iis_flag=True, for_qual_investor_flag=False, weekend_flag=False, blocked_tca_flag=False, first_1min_candle_date=datetime.datetime(2019, 11, 15, 15, 8, tzinfo=datetime.timezone.utc), first_1day_candle_date=datetime.datetime(2019, 11, 15, 7, 0, tzinfo=datetime.timezone.utc))

Если посмотреть в мобильном приложении Тинькофф на историю выплаты купонов, и, например, сюда, становится видно, что купон плавающий.

Думаю, ошибка на стороне сервера или БД, нежели библиотеки. Но было бы неплохо исправить, если я все правильно понял.

Воспроизведение

from tinkoff.invest import Client

with Client(TOKEN) as client:
    bond = client.instruments.bond_by(id_type=1, id='BBG00QXGFHS6')
    print(bond)

Tinkoff Invest Version

0.2.0-beta47

Python Version

3.10

OS

Windows

Логи

No response

FerrusM commented 1 year ago

При запросе данных об облигации RU000A101228 возвращается поле floating_coupon_flag равное False, подразумевая, что купон у облигации постоянный

Если floating_coupon_flag равняется False, то это вовсе не означает, что купоны у облигации постоянные.

Если посмотреть в мобильном приложении Тинькофф на историю выплаты купонов, и, например, сюда, становится видно, что купон плавающий.

Если посмотреть на историю выплаты купонов в мобильном приложении, то видно, что величина купонов изменилась, но это не значит, что купон плавающий. По приведённой вами ссылке видно, что купон переменный. Соответственно, никакой ошибки нет. Если воспользоваться GetBondCoupons, то можно получить купоны по облигации и увидеть их тип. У облигации RU000A101228 все купоны имеют переменный тип. Все возможные типы купонов в Tinkoff API можно посмотреть в документации.

vovabush commented 1 year ago

Спасибо, разобрался, исправил, Issue можно тогда закрыть.