invest-openapi icon indicating copy to clipboard operation
invest-openapi copied to clipboard

Как рассчитывается average_position_price в portfolio?

Open progamer75 opened this issue 5 years ago • 13 comments

В average_position_price возвращается цена заметно отличная от текущей цены. За какой период рассчитывается average_position_price в portfolio?

progamer75 avatar Sep 18 '20 20:09 progamer75

Хороший вопрос. Это больная мозоль разработчиков. Средней ценой открытых позиций там близко не пахнет. Впрочем, есть смысл дождаться их ответа...

nonamegithub avatar Sep 18 '20 20:09 nonamegithub

Средняя цена позиции считается по принципу FIFO.

dlinnozmey avatar Sep 18 '20 22:09 dlinnozmey

Хотелось бы узнать не принцип, а конкретный алгоритм. А еще лучше видеть в портфеле последнюю рыночную цену и исходя из нее expectedYield.

progamer75 avatar Sep 19 '20 05:09 progamer75

Для частного случая, если не было усреднений, FIFO работает, похоже. Но если позицию набирать, частично добирая и продавая бумаги, то средняя цена, рассчитанная по FIFO, может сыграть злую шутку при торговле. От такой средней цены нет никакого толка, один вред - легко можно уйти в убыток, поверив в предполагаемую доходность при продаже позиции. Вот здесь много об этой проблеме.

nonamegithub avatar Sep 19 '20 06:09 nonamegithub

Что такое FIFO, я думаю здесь все знают. Но по какому алгоритму рассчитывается average_position_price видимо знают только разработчики )

progamer75 avatar Sep 20 '20 06:09 progamer75

Только тут FIFO не надо убирать. FIFO это общеиспользуемый метод, по нему считают налоги.

Что касается брокера и его FIFO, бывает с запозданием обновляется средняя цена, поэтому бывают расхождения. Лучше всегда все самому считать по нужному алгоритму и не использовать среднюю от тинькова.

betslus1 avatar Sep 23 '20 09:09 betslus1

Господа разрабы, можно оставить average по FIFO и добавить average среднеарифметическую?

muxto avatar Oct 08 '20 13:10 muxto

Есть ли возможность добавить текущую рыночную цену позиции в момент запроса? Если это уже где-то есть - подскажите, пожалуйста) Возвращать в валюте инструмента, либо блоком:

{"current_price": 
     {"currency": XXX,
      "value": YYY }
}

luxrost avatar Nov 11 '20 22:11 luxrost

Чем не устраивает получение последней свечи через стриминг и взятие цены закрытия?

dlinnozmey avatar Nov 12 '20 00:11 dlinnozmey

@dlinnozmey для понимания стоимости всего портфеля в моменте имхо проще передавать в момент запроса, чем дополнять запросами по отдельным тикерам и потом склеивать их вместе.

В теории предложенный вариант со свечами рабочий. Протестирую. Спасибо.

luxrost avatar Nov 12 '20 11:11 luxrost

Средняя позиция обновляется примерно раз в 10-20 секунд. Может фризиться до 1-2 минут. Может выставлять от вышей предыдущей сделки по инструменту. В общем лучше либо закладывать интервал опроса от сделки, либо слушать сокеты по инструменту. Принимать решение по средней позиции крайне опасно при открытии позиции ранее чем 1-2 минуты. Средняя позиция в этот момент может быть и 0 и другая цена.

BaryshevS avatar Nov 12 '20 16:11 BaryshevS

В 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'},

vergorun avatar Dec 11 '20 12:12 vergorun

Заметил странность с расчетом averagePositionPrice для ОФЗ. Почему-то в сумму включается текущий НКД! Т.е. для расчета используются цены покупки инструментов а затем к ним добавляется НКД на сегодняшний день. Справедливости ради стоит отметить, что в averagePositionPriceNoNkd находится корректная средняя покупок, но приходится обрабатывать это исключение. Для обычных инструментов надо брать значение из averagePositionPrice, а для ОФЗ из averagePositionPriceNoNkd. Считаю это багом и недоработкой API!

HiHat avatar Feb 06 '21 08:02 HiHat