invest-openapi
invest-openapi copied to clipboard
Как рассчитывается average_position_price в portfolio?
В average_position_price возвращается цена заметно отличная от текущей цены. За какой период рассчитывается average_position_price в portfolio?
Хороший вопрос. Это больная мозоль разработчиков. Средней ценой открытых позиций там близко не пахнет. Впрочем, есть смысл дождаться их ответа...
Средняя цена позиции считается по принципу FIFO.
Хотелось бы узнать не принцип, а конкретный алгоритм. А еще лучше видеть в портфеле последнюю рыночную цену и исходя из нее expectedYield.
Для частного случая, если не было усреднений, FIFO работает, похоже. Но если позицию набирать, частично добирая и продавая бумаги, то средняя цена, рассчитанная по FIFO, может сыграть злую шутку при торговле. От такой средней цены нет никакого толка, один вред - легко можно уйти в убыток, поверив в предполагаемую доходность при продаже позиции. Вот здесь много об этой проблеме.
Что такое FIFO, я думаю здесь все знают. Но по какому алгоритму рассчитывается average_position_price видимо знают только разработчики )
Только тут FIFO не надо убирать. FIFO это общеиспользуемый метод, по нему считают налоги.
Что касается брокера и его FIFO, бывает с запозданием обновляется средняя цена, поэтому бывают расхождения. Лучше всегда все самому считать по нужному алгоритму и не использовать среднюю от тинькова.
Господа разрабы, можно оставить average по FIFO и добавить average среднеарифметическую?
Есть ли возможность добавить текущую рыночную цену позиции в момент запроса? Если это уже где-то есть - подскажите, пожалуйста) Возвращать в валюте инструмента, либо блоком:
{"current_price":
{"currency": XXX,
"value": YYY }
}
Чем не устраивает получение последней свечи через стриминг и взятие цены закрытия?
@dlinnozmey для понимания стоимости всего портфеля в моменте имхо проще передавать в момент запроса, чем дополнять запросами по отдельным тикерам и потом склеивать их вместе.
В теории предложенный вариант со свечами рабочий. Протестирую. Спасибо.
Средняя позиция обновляется примерно раз в 10-20 секунд. Может фризиться до 1-2 минут. Может выставлять от вышей предыдущей сделки по инструменту. В общем лучше либо закладывать интервал опроса от сделки, либо слушать сокеты по инструменту. Принимать решение по средней позиции крайне опасно при открытии позиции ранее чем 1-2 минуты. Средняя позиция в этот момент может быть и 0 и другая цена.
В issue писали, что обнолвение может занимать 1-2 минуты, столкнулся с тем, что 0ая цена висит уже несколько часов 'tracking_id': 'ecf668dcc9debfb6'
{'average_position_price': {'currency': u'USD',
'value': 0.0},
'average_position_price_no_nkd': None,
'balance': 15.0,
'blocked': 5.0,
'expected_yield': {'currency': u'USD',
'value': 0.0},
'figi': 'BBG00NNQMD85',
'instrument_type': u'Etf',
'isin': 'RU000A0ZZTQ4',
'lots': 15,
'name': u'\u0410\u043b\u044c\u0444\u0430-\u041a\u0430\u043f\u0438\u0442\u0430\u043b \u0422\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 100',
'ticker': 'AKNX'},
Заметил странность с расчетом averagePositionPrice для ОФЗ. Почему-то в сумму включается текущий НКД! Т.е. для расчета используются цены покупки инструментов а затем к ним добавляется НКД на сегодняшний день. Справедливости ради стоит отметить, что в averagePositionPriceNoNkd находится корректная средняя покупок, но приходится обрабатывать это исключение. Для обычных инструментов надо брать значение из averagePositionPrice, а для ОФЗ из averagePositionPriceNoNkd. Считаю это багом и недоработкой API!