Согласен 17

[Профиль] Доходность в Пульсе

Завершена Nikolay 20 мес. назад

Добрый день! Сейчас работаем над изменением формулы отображения доходности в Пульсе, что поможет получить реальную картину на странице профиля.

Формула расчета универсальна для любого периода и выглядит следующим образом:

Доходность за период = (Сумма портфеля на конец периода + Сумма выводов за период - Сумма портфеля на начало периода - Сумма заводов за период) / (Сумма портфеля на начало периода + Сумма заводов за период - Сумма выводов за период).

Ответы (9)

фото
1

Можно конечно и проще рассчитать SRmax, если есть доступ ко всем вводам-выводам с брокерского счета за расчетный период в хронологическом порядке.

Для этого можно просто перебрать в цикле все вводы-выводы:

SR = (стоимость портфеля в рублях на начало периода)

SRmax = SR

Начало цикла

SR = SR + (+ввод или –вывод в рублях)

Если (SR > SRmax) Тогда SRmax = SR

Конец цикла

После выполнения цикла получим SRmax и считаем доходность:

Доходность за год или месяц = ((стоимость портфеля на конец периода + выводы с брокерского счета) – (стоимость портфеля на начало периода + вводы)) / SRmax


Такой способ расчета будет более правильным, т.к. в первом варианте при выводе прибыли и вводе её обратно на счет SRmax увеличился бы, а в этом случае нет. Ну и если несколько раз за день погонять деньги с/на бр. счет, то в первом варианте расчета SRmax тоже увеличился бы, что приведет к уменьшению расчетных показателей доходности или убытка.

фото
1

Нет? Да? Потанцуем?

фото
1

С реализацией расчета по новой формуле отображение тоже должно исправиться.

фото
фото
1

Вложения = Сумма на начало периода + Сумма вводов за период (Например 200+300=500)

Результат = Сумма на конец периода + Сумма выводов за период (Например 500+250=750)

Доход = Результат - Вложения (750-500=250)

ДоходностьПроцентами = Доход / Вложения * 100 (250/500*100=50 % вроде всё верно)


Теперь по этой вашей формуле приведённой в посте: Доходность за период = (Сумма портфеля на конец периода + Сумма выводов за период - Сумма портфеля на начало периода - Сумма заводов за период) / (Сумма портфеля на начало периода + Сумма заводов за период - Сумма выводов).

(500+250-200-300) / (200+300-250) = 250/250 = 1 !!!? Ну и что отражает это число, это разве и есть доходность? Некорректно.

фото
2

Подскажите, а это решит проблему того, что пульс транслирует данные только с одного основного счета, а открытые субсчета не учитывает?

фото
2

Здравствуйте!

Да, в новом способе подсчета будут учитываться все счета

фото
1

Расскажите примерно когда Вы исправите эту ошибку ? Уже с марта обещают в ближайших обновлениях

фото
фото
2

Баг с нулями в июне июле и нереальной доходностью в августе сюда попадает?


8cbea52fe1d5dff6723aeafec6d1aa9f

фото
1

Аналогично в приложении как в терминале проценты, у вас тоже? До сих пор не починили, не понимаю как так можно, неужели им сложно узнать сколько средств на начало каждого месяца и верно рассчитать проценты.

фото
фото
2

Т.е. вы хотите внедрить эту формулу:


«Доходность за период = (Сумма портфеля на конец периода + Сумма выводов за период - Сумма портфеля на начало периода - Сумма заводов за период) / (Сумма портфеля на начало периода + Сумма заводов за период - Сумма выводов за период).»


Это же чушь будет! Например, если в конце периода вывести почти все деньги со счета!

Допустим было 100 руб. внёс ещё 100 руб. заработал 20 руб., затем вывел 210 руб.


Получаем доходность: (10 + 210 - 100 - 100) / (100 + 100 - 210) = 20/-10= -200%!!!


А если выведем не 210, а 199 руб, то доходность будет ю: 20/1= 2000%


Вы серьёзно хотите такую формулу???


Я уже предлагал свой вариант формулы: делить нужно на максимальную сумму своих вложений на счёте за период. Для этого нужно все заводы и выводы перебрать в цикле по порядку и посчитать:


SR = (До цикла будет равна сумме портфеля в рублях на начало периода);

SRmax = SR;

Начало цикла

SR = SR + (+ввод или –вывод в рублях)

Если (SR > SRmax) Тогда SRmax = SR

Конец цикла


После выполнения цикла получим SRmax и считаем доходность:


Доходность за период = (Сумма портфеля на конец периода + Сумма выводов за период - Сумма портфеля на начало периода - Сумма заводов за период) / (SRmax, т.е. максимальная сумма своих вложений на счете)


По выше указанным примерам посчитаем доходность:


SRmax будет равен 200 руб.


Доходность в первом и во втором варианте примера будет 20/200=10%


Как вам такая формула? Или имеются проблемы с доступом к информации по Вводу-Выводу со счета?

фото
1

Здравствуйте

Спасибо за комментарий, замечания учли

Добавим в описание:

  • В случае, если выводов за период больше, чем пополнений, то разница пополнений и выводов в знаменателе = 0
  • В случае, если портфель клиента отрицательный на начало или конец периода, то доходность = 0

фото
2

“В случае, если выводов за период больше, чем пополнений, то разница пополнений и выводов в знаменателе = 0”


Вы имеете в виду, что в этом случае будет так:


Доходность за период = (Сумма портфеля на конец периода + Сумма выводов за период - Сумма портфеля на начало периода - Сумма заводов за период) / (Сумма портфеля на начало периода + 0),


т.е. в моём примере получаем доходность:

(10 + 210 - 100 - 100) / (100 + 0) = 20/100 = 20%.


Это конечно лучше, но если в начале периода будет не 100 руб., а 1 руб., а затем пополнение на 100, тогда тот же заработок в 20 руб. и к примеру вывод 110 руб. в конце периода, будет показывать доходность:

(11 + 110 - 1 - 100) / 1 = 20/1 = 2000%.


Вас такое устраивает??? Или я что-то не так понял?


Может лучше мой вариант расчета сделать и делить на максимальную сумму вложений, т.е. получим SRmax = 101 руб., а прибыль 20/101= 20% (округленно)


А про второй пункт вообще не понял: «В случае, если портфель клиента отрицательный на начало или конец периода, то доходность = 0» Что вы имели ввиду? Как портфель может быть отрицательным?


Впрочем по первому пункту все равно в вашей формуле погрешность будет просто огромная!


Поэтому лучше использовать мою формулу!)

фото
1

Добрый день

В некоторых случаях списания комиссий портфель может быть отрицательным

Для SRmax в случае конвертации валюты доходностью будет стремиться к нулю в случае больших сумм

фото
1

«В некоторых случаях списания комиссий портфель может быть отрицательным»

Даже не представляю себе такие ситуации, наверное какие-то очень редкие случаи. Типа вывел все деньги со счета, а потом списалась какая-то комиссия? Ну может быть. В принципе да, в таких случаях можно просто доходность = 0 поставить.


«Для SRmax в случае конвертации валюты доходностью будет стремиться к нулю в случае больших сумм»

Не понял, причём здесь конвертация валюты, можно поподробней.


SRmax же у меня считается только на основе вводов на бр. счёт и выводов на счёт в банке.

Например:

было 100 руб. (SR = 100, SRmax = 100)

Ввел ещё 200 руб. (SR = 300, SRmax = 300)

Вывел 100 руб. (SR = 200, SRmax = 300)

Ввел 200 руб. (SR = 400, SRmax = 400)

Заработал 500 руб. и вывел их (SR = -100, SRmax = 400)

Ввёл 300 (SR = 200, SRmax = 400)

И т.д.

Т.е. для успешных инвесторов, которые больше выводят, чем вводят погрешности вообще не будет!


Да, конечно, недостаток при таком подходе тоже есть, например, если торговал весь период на 100 руб., и заработал с них 50 руб., т.е. 50%, сидишь довольный, все в пульсе завидуют, а потом решил пополнить счёт на 900 руб., и тут конечно доходность сразу пересчитается и будет равна 50/1000 = 5%.

Или просто человек, разово введёт крупную сумму, чтобы обменять их с долларов на рубли и сразу вывести. Да, конечно доходность за этот период будет меньше, т.к. считаться будет уже от более крупной суммы. Просто нужно будет всем сказать о такой особенности подсчета.


Но я считаю, что это меньшее из зол. Ведь эта погрешность будет не настолько часто возникать, и не так сильно влиять (нужно очень большую сумму ввести, относительно торгового счёта)! Кроме того эта погрешность будет только в одну сторону - в сторону уменьшения доходности, и такая доходность будет нам говорить о том, что инвестор как минимум заработал такую доходность! И мы, наблюдая большую доходность в чьём-то профиле уже будем говорить: «да, это круто!» А не «ну это наверное тинёк опять косячит».

фото
1

Доходность = Результат - Вложения, то есть всё что итог(в т.ч. всё что снял) минус всё что вложено, надеюсь все согласны? Не понимаю, зачем циклы с максимумом, просто сумма счёта+вводов сойдёт.

"решил пополнить счёт на 900 руб., и тут конечно доходность сразу пересчитается и будет равна 50/1000 = 5%" - так и надо, если эти 900 внесены внутри периода по времени, считать их внесенными в начале. Рассматривать только две обобщённые точки было и стало, дискретно без промежутков.

Ну а случай если кто в промежутке внёс и сразу вывел без дохода сам виноват

фото
1

Вы представляете себе, сколько будет таких вводов и выводов за год? Даже в моём коротком примере получается SRmax = 400 руб., а если как вы предлагаете без цикла, то получится 800 руб., что снизит расчётную доходность в 2 раза! Так, что лучше с циклом и перебором всех вводов и выводов, включая внутри дня! Это сведёт погрешность расчета к минимуму!


А вообще для того, чтобы выяснить какой вариант лучше, можно просто сравнить результаты при различных вариантах расчета! Я думаю, что мой вариант с SRmax во многом выигрывает! Но если кто-то придумает лучше - я только ЗА!

фото
1

> В случае, если портфель клиента отрицательный на начало или конец периода, то доходность = 0


Условия недостаточно, потому что минус ещё не говорит однозначно о нулевой доходности, возможны разные случаи. а) Убыток, в этом случае отображаемая доходность должна быть отрицательной.

б) Состояние не изменилось, доходность показывать 0.

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

Человек может в хорошем плюсе остался а его под одну гребёнку с лузерами проигравшимися, всем подряд по нулям собрались показать! Нехорошо как-то выходит, обесценивание и непризнание достижений. Поработайте над условиями, чтоб верно отличать случаи успешных и нет. Вот Роман предлагает годную формулу, учитывающую свои средства.

фото
1

По поводу «В случае, если портфель клиента отрицательный на начало или конец периода, то доходность = 0»


Для моей формулы предлагаю сделать условие, что если (SRmax <= 0), то доходность ставить = 0.


Т.е. если на начало периода по какой-то причине был отрицательный счёт и не было пополнений, приведших его к положительному, то соответственно и прибыли тут быть не может. Либо если просто был нулевой счёт и не было пополнений. Конечно прибыль может и быть, например, дивиденды придут, но всё равно делить на ноль нельзя и мы не знаем от какой суммы их считать, пускай 0 будет, ничего страшного. А вот если (SRmax > 0) то считаем как обычно, даже если в конце периода счёт в минусе.


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

фото
фото
1

Смотрю, пересчиталась доходность в пульсе. Похоже вы всё-таки решили свой вариант формулы оставить? Как я и предупреждал, появились случаи с нереально большими доходностями, пример прикладываю с доходностью более 200 тыс. процентов)))

Ну как знаете, я сделал все, что мог…

фото
1

Роман, спасибо за комментарии, мы все обсуждения в этом треде читаем

Сейчас текущая формула работает лучше, чем старая, но согласны, что корнер кейсы есть, их будем дорабатывать

фото
1

Метод подсчета доходности действительно странный. Завел на счет рубли для покупки долларов, купил на заведённую сумму доллары, вывел купленные доллары, получил уменьшение доходности в сентябре на 3,87%. Почему, зачем, не понятно.

фото
2

Похоже, что случаев с завышением доходности будет слишком много! Для примера предлагаю рассчитать довольно распространённый случай с ежемесячным пополнением счета:


Пришёл новый инвестор, каких сейчас много, и внёс для проверки брокера 10 т.р. Ему все понравилось и он решил каждый месяц вносить по 10 т.р. с зарплаты и инвестировать. Через 10 месяцев у него будет внесённых средств 100 т.р. и допустим 10 т.р. он заработает за этот период.


Считаем доходность:


По моей формуле:

Прибыль / SRmax = 10/100 = 10%


По вашей формуле:


Прибыль / (Сумма портфеля на начало периода + Сумма заводов за период - Сумма выводов за период) = 10/(10+90-0) = 10/100 = 10%


Пока все хорошо!


Но допустим этот человек, увидев, что денег уже достаточно для покупки себе или в подарок чего-то дорогого, решил купить айфон или большой телевизор за 80, 90 или даже 100 т.р.


Посчитаем:


По моей формуле расчетная прибыль останется как и была, т.к. считается от максимальной суммы вложений за период: 10/100 = 10%


Что же будет при пересчете доходности по вашей формуле:


Если выведено 80 т.р., то:

10/(10+90-80) = 10/20 = 50%


Если вывести 90 или 100 тысяч, то:

10/10 =100%!


Подобных случаев будет очень много в самых различных вариациях! Я уже молчу про умышленные накрутки своей доходности пользователями пульса, чтобы набирать себе подписчиков в платные Telegram-каналы!

фото
фото
1

Мой профиль в Пульсе - MCRF

Доходность с начала года, рассчитанная в экспеле с помощью формулы XIRR - более 32%, в Пульсе - 11%.


Причина в том, что текущая формула не учитывает дату пополнения.


Мой портфель сейчас чуть более 8 млн.

Если я сегодня заведу 8 млн в портфель, то в понедельник я увижу доходность не 11%, а 5,5%.


Почему не использовать формулу более приближенную к расчету доходности? Ту же XIRR?


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

(1+доходность 1 месяца)

*

(1+доходность 2 месяца)

*

...

*

(1+ доходность 12 месяца)-1


?


А у тех людей, кто последний месяц деньги выводил - доходность вообще в космос улетела.


В итоге новая формула мотивирует не пополнять портфель, открывать счета у других брокеров (когда на счете уже 10 млн,, думаю можно задуматься о диверсификации по брокерам), а для более красивых цифр - ещё и выводить деньги со счета (главное не больше чем за последний год заводили).

фото
1

Предположим, что в первом месяце у вас было 100 руб. и вы получили прибыль в 50%, т.е. 50 руб.


Во втором месяце пополнили счет на 850 руб. и получили убыток в 10%, т.е. 100 руб. (от 1000)


Считаем итоговую доходность:


(1+0.5)*(1-0.1)-1 = 35%

Неплохо! А что по деньгам?

50-100=-50 руб.

Как-то не очень!


В общем мне не особо нравится такой способ расчета доходности из-за подобных расхождений с реальным доходом в деньгах.


Пока остановился но том, что лучше считать доходность по реальной прибыли в деньгах по отношению к максимальной сумме вложений, который был на счете в рамках периода. Скачков доходности при выводе денег со счета не будет и накрутить таким способом не получится! Да, при больших пополнениях будет снижение расчетной доходности, но если счёт уже большой, то это влияние будет не так заметно.

фото
1

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


Выложу тут для размышлений, хоть он мне и не особо нравится:


«Доходность = сумма доходностей за каждый день периода»


Сначала на словах:


Например, на начало периода на брокерском счете 100 руб., значит если доход за первый день составил 2 рубля, то это 2% (от 100). Если на следующий день доход составил ещё 2 рубля, то доходность также продолжаем считать от 100 вложенных рублей, а не от 102 (что на счете по факту), т.е. доходность за второй день будет также 2%.


Если на 3 день было пополнение счета на 10 руб., то доходность за этот и последующие дни нужно считать от 110 вложенных рублей, а не от 114 (что по факту)


Если на четвёртый день было снятие 2 рублей, то на счете останется 112, значит продолжаем считать доходность от 110 руб. А если снять не 2, а 6 руб., то на счете останется 108, руб., т.е. снятие привело к уменьшению вложенных средств, то доходность со следующего (5-го) дня нужно считать от 108 руб.


Если на 5-й день был убыток 1 руб., 8 коп., а вложенных у нас 108 руб., то доходность будет равна -1,08/108*100= -1%. Ну и дальше доходность нужно считать от 108 вложенных руб., а не от 106,92, что на счете по факту.


Затем складываем доходности и получаем 2+2-1=3%.


Теперь реализация:


Для расчёта потребуются данные по каждому дню расчётного периода:


Перебираем в цикле по дням:


A = Стоимость портфеля в рублях на начало дня.

Ai = Сумма вводов за день.

B = Стоимость портфеля на конец дня.

Bi = Сумма выводов за день.


Доход за день в рублях:

DR=(B+Bi)-(A+Ai)


SR - это сумма вложенных средств. Изначально она равна стоимости портфеля в рублях на начало периода.


SR на текущий день:

SR = SR + Ai


Доходность в процентах:

DP = DR/SR*100


Суммируем доходность в процентах (изначально SDP=0):

SDP = SDP + DP


//Теперь, для подсчета SR для следующего дня, осталось учесть выводы средств со счета, если они были (Bi>0) и если они привели к уменьшению суммы вложенных средств (SR>B). Во вложенном условии смотрим: Если до вывода средств сумма на на счете была больше вложений (SR<(B+Bi)), то вложения уменьшаем до стоимости счета на конец дня SR=B (т.е. выводим сначала заработанное, а потом уменьшаем сумму вложений). Иначе вычитаем сумму вывода сразу из суммы вложений: SR=SR-Bi. Получаем такое условие:


Если (Bi>0) и (SR>B) Тогда

Если SR<(B+Bi) Тогда

SR=B;

Иначе:

SR=SR-Bi;

КонецЕсли

КонецЕсли


Дальше переходим к следующему шагу цикла (по следующему дню).


На выходе мы получим суммарную доходность: SDP.


Теперь о возможных проблемах: Могут быть случаи, когда крупная сумма была вложена в дивидендную акцию, а после дня отсечки эта сумма выводится с брокерского счета. Затем в день выплаты дивидендов прибыль будет очень высокой по отношению к текущей сумме вложений. Это конечно редкий случай, но зная это, могут появиться желающие «накрутить» себе большую доходность. Возможно нужно считать доходность по дивидендам как-то отдельно, например, посчитать их в процентах не от текущего дневного SR, а от SRmax, т.е. от максимального SR, за последние 2 месяца (какой-то максимальный период, за который обычно выплачивают дивиденды после даты отсечки).

Возможно будут подобные случаи и по выплатам купонов с облигаций, или каким-то запоздалым техническим начислениям или списаниям (комиссию пересчитают, налог спишут, компенсацию какую-нибудь начислят, и если в этот день SR, будет мизерный, то расчетная доходность «по дням» сильно подскочит)


Ещё есть одна особенность, которая мне не нравится. Если торговать то с маленькой, то с большой суммой вложений, то могут быть такие ситуации, когда расчетная доходность в процентах будет значительно отличатся от доходности в деньгах! Вплоть до того, что в процентах будет прибыль, а в деньгах - убыток! Например: было 100 руб., заработал с них 10 руб., т.е. 10%. На следующий день пополнил счёт на 400 руб. и получил убыток 25 руб. что от 500 вложенных средств будет составлять убыток в 5%. Получаем итог: доход в процентах за период 10%-5%= +5%, а в деньгах: 10 руб. -25 руб. = -15 руб.


В общем мне из-за таких случаев больше нравится способ расчета доходности от максимальной суммы вложений! Там если в деньгах получил прибыль, то и в процентах тоже будет прибыль, пусть и заниженная в некоторых случаях.

фото
фото
1

Хочу видеть общую доходность в пульсе. За отдельный период времени мне г-н нравиься

Комментировать
 
Прикрепить файлы