Обсуждение:Алгоритм ЧИСТВНДОХ на макросе

5 (2)
  • Развернуть Обсуждение:Алгоритм ЧИСТВНДОХ на макросе ( Обсуждение примера  12.05.2014 13:57 )
    5(1)
    Макрофункция расчета ЧИСТВНДОХ
    Посмотреть пример
    >> Ответить
    • Развернуть о, как раз для 3194-у - просят что нить сделать - завтра заценим ( p2p  19.05.2014 18:35 )
      0(0)
      Not specified
      >> Ответить
    • Развернуть не понятно ( sysrq  22.05.2014 15:13 )
      5(1)
      Прошу все таки объяснить как на примере одного вклада посчитать ПСВ?
      dates[dates.size] = date( 1, 1, 2008); streams[streams.size] = -10000; - это сумма открытия и дата открытия вклада

      а все остальные движения это что?
      dates[dates.size] = date( 1, 3, 2008); streams[streams.size] = 2750;
      dates[dates.size] = date(30,10, 2008); streams[streams.size] = 4250;
      dates[dates.size] = date(15, 2, 2009); streams[streams.size] = 3250;

      причисления процентов? доп. взносы? снятия ? что отражать для расчета ПСВ если период отчета МЕСЯЦ?
      какие договоры попадут в расчет 3194-У скажем за май? те по которым было движение по счету вклада 423ХХ ?

      >> Ответить
      • Развернуть пример расчета ПСВ для вклада ( khlebnikov_a  26.05.2014 15:03 )
        0(0)
        вклад на 3 месяца с выплатой процентов вкладчику каждый месяц по 100р.

        dates[dates.size] = date( 1, 1, 2014); streams[streams.size] = 100000;
        dates[dates.size] = date( 1, 2, 2014); streams[streams.size] = -100;
        dates[dates.size] = date( 1, 3, 2014); streams[streams.size] = -100;
        dates[dates.size] = date( 1, 4, 2014); streams[streams.size] = -100100;

        ПСВ должна быть = 1,22%

        >> Ответить
    • Развернуть А функцию из кредитного модуля нельзя использовать? ( svolosch  28.05.2014 16:00 )
      0(0)
      https://isupport.softlab.ru/reggy/faq/suppapro/probcontent.asp?Sys=111&Und=189&The=8028&Page=&Prob=3766
      Если не ошибаюсь это тоже самое. Или я не прав?
      >> Ответить
    • Развернуть Вопрос? ( DbIxTep  28.05.2014 17:30 )
      0(0)
      А как тогда отразить капитализацию процентов?
      >> Ответить
      • Развернуть Эм... ( svolosch  28.05.2014 17:37 )
        0(0)
        Мои рассуждения:
        Капитализация - Это приход - с этого момента начисляются % на эту сумму - Как приход по счету.
        то есть...
        01.01.01 +1000
        01.02.01 +100
        01.03.01 +100
        01.04.01 -1300

        Как то так, возможно с противоположными знаками.

        P.S/ Я не пытаюсь убедить в своей правоте, я сам хочу понять, прав ли? :-)
        >> Ответить
        • Развернуть следует учитывать... ( khlebnikov_a  29.05.2014 14:46 )
          0(0)
          следует учитывать, что если сумма капитализируется на счет, то она не уходит клиенту и не приходит от клиента.

          т.е.
          01.01.01 +1000
          01.04.01 -1300

          или можно рассмотреть так, как если бы сумма ушла клиенту и сразу пришла от клиента
          01.01.01 +1000
          01.02.01 -100
          01.02.01 +100
          01.03.01 -100
          01.03.01 +100
          01.04.01 -1300

          PS: сумма 300 чисто условная, при капитализации процентов может измениться в большую сторону, т.к. остаток на который считается увеличивается. В примере это не отражено.
          >> Ответить
          • Развернуть Суть понятна... ( DbIxTep  29.05.2014 16:33 )
            0(0)
            Подожду, что скажет наш ГБ на это
            >> Ответить
          • Развернуть как быть с суммами? ( sysrq  29.05.2014 17:18 )
            0(0)
            если вклад только открылся суммы процентов надо для начала рассчитать. т.е. надо завязываться на срок, ставку, условия причисления и так на весь срок? и к тому же даты будут плавать( 30,31, и проверка на выходной) если начисление в конце месяца скажем. я правильно понимаю всю глубину данного геморроя? или можно как-то проще?
            >> Ответить
        • Развернуть два примера ( Sergey V. Mamaev  30.05.2014 05:57 )
          0(0)
          два примера, рассчитанных в экселе через ЧИСТВНДОХ:
          1. с капитализацией:
          21/05/2014 -100000.00
          31/05/2014 280.82
          30/06/2014 844.83
          31/07/2014 880.35
          31/08/2014 888.01
          30/09/2014 866.85
          31/10/2014 903.29
          30/11/2014 881.76
          31/12/2014 918.83
          31/01/2015 926.83
          28/02/2015 844.42
          31/03/2015 942.25
          30/04/2015 919.79
          23/05/2015 711.11
          23/05/2015 100000.00
          чиствндох: 11.287045
          2. без капитализации:
          21/05/2014 -100000.00
          31/05/2014 280.82
          30/06/2014 842.47
          31/07/2014 870.55
          31/08/2014 870.55
          30/09/2014 842.47
          31/10/2014 870.55
          30/11/2014 842.47
          31/12/2014 870.55
          31/01/2015 870.55
          28/02/2015 786.30
          31/03/2015 870.55
          30/04/2015 842.47
          23/05/2015 645.89
          23/05/2015 100000.00
          чиствндох: 10.747166

          рассчитанные рсбанком ПСВ полностью совпадают с ЧИСТВНДОХ. как с капитализацией, так и без
          >> Ответить
    • Развернуть Народ, а кто нибудь может формулу расчета расшифровать... ( Волшебник  06.06.2014 09:59 )
      0(0)
      Как нибудь попроще...
      Или на пальцах разъяснить чего там считается.
      А то, что называется, "ниасилил".
      Даже смысл этих извращений не понимаю - какую полезную информацию из этих данных можно извлечь?
      >> Ответить
      • Развернуть да все просто... ( DbIxTep  06.06.2014 10:24 )
        0(0)
        Считается ПСВ(полная стоимость вклада).
        ЦБ рекомендует для расчета ПСВ использовать алгоритм ЧИСТВНДОХ из MS Excel.
        Спасибо Р-Стайлу, что сняли немного работы с IT отделов банков и написали этот алгоритм.
        Работает там все довольно просто: процедуре "скармливать" два массива - с датами и денежными потоками. Как эти потоки учитывать описано выли(либо ликбез от своей бухгалтерии). В результате процедура возвращает значение %% ставки.

        Как-то так.
        >> Ответить
        • Развернуть А смысл этой инфы в чем? ( Волшебник  06.06.2014 10:42 )
          0(0)
          Тем более за месяц.
          Вот у нас за май из всех сроков только три цифры заполнены получились.
          На другие сроки просто не размещали.
          Чего дадут эти три цифры ЦБ? Чего дадут клиенту?
          >> Ответить
          • Развернуть динамику - ( KaMPiLeR  06.06.2014 11:44 )
            0(0)
            как то так
            >> Ответить
          • Развернуть Хо Хо... ( DbIxTep  06.06.2014 11:47 )
            0(0)
            Официальное письмо в ЦБ пишите... пусть они расскажут, зачем им такая информация =)
            >> Ответить
            • Развернуть Они требуют ее на сайте выложить. ( Волшебник  06.06.2014 11:59 )
              0(0)
              Значит эта информация нужна клиентам.
              Я как клиент - не понимаю зачем она мне :)
              >> Ответить
              • Развернуть Ну... ( svolosch  06.06.2014 12:15 )
                0(0)
                Учитывая что там высчитывается процент исходя из денежного потока, то эта формула, какбэ, показывает "настоящий" процент. Например, если не ошибаюсь, если взять кредит с ежемесечным погашением ОД и % то ПСК будет намного выше % ставки по кредиту. Если ОД в конце срока, а % ежемесечно, то все равно ПСК будет выше % ставки. Только лишь в том случае когда и % и ОД в конце срока, только лишь тогда ПСК будет равен % ставке. По вкладам аналогично.
                То есть по задумке ЦБ, этот % показывает насколько эффективен кредит/вклад, не зря же называется "эффективная % ставка".
                Но это в идеале.
                А на практике, 90% населения про это не знают вообще о том что это такое. Да даже если бы и знали про это(ну что перед взятием кредита банк обязан предоставить ПСК по кредиту) я сомневаюсь что Дядя Вася посмотрев на цифры сказал бы:
                - М-м-м.. Вызнаете, Итоговый процент по денежному потоку у меня вызывает некоторые сомнения...
                Формула сложна настолько, что даже здесь, где собрались люди близкие к расчетам не могут понять "Вас ист Дас?".
                Так что. Все как всегда. Идея хороша для клиента. Показывает где, что да как с учетом всего. А вот реализация... Хороша для банка, так как ясности для клиента это не вносит.
                >> Ответить
            • Развернуть Кстати народ! ( Волшебник  06.06.2014 12:15 )
              0(0)
              Если на какой то срок не было принято ни одного вклада, но такой вид вклада есть и старые договора на этот срок тоже есть - какую ставку указывать?
              Прочерк, или просто среднюю ставку по всем видам вкладов для данного срока?
              >> Ответить
              • Развернуть Внимательнее читайте 3194-у ! ( DbIxTep  06.06.2014 12:31 )
                0(0)
                прочерк.

                Отчет выпускается ТОЛЬКО по вновь открытым/пролонгированным договорам в отчетный период(за месяц)
                >> Ответить
              • Развернуть Вот мне бухи так же сказали ( svolosch  06.06.2014 12:35 )
                0(0)
                Что ТОЛЬКО по НОВЫМ вкладам надо. Но хотелось бы разобраться...
                >> Ответить
                • Развернуть И кстати... ( svolosch  06.06.2014 15:16 )
                  0(0)
                  В примере xml файла, который ЦБ выложил, допущена ошибка.
                  <Org RegNum="9999" Name="ЗАО КБ "Примерный"">
                  Кавычки???? а не " ? Или кавычки не нужны?
                  >> Ответить
                • Развернуть А вот еще вопрос ( fplab  09.06.2014 09:18 )
                  0(0)
                  Коллеги, а как быть вот с такой ситуацией?
                  Ну, допустим, открылся вклад в мае 2014. Подошел конец месяца. По условиям договора на вклад начислены проценты, но НЕ ПРИЧИСЛЕНЫ. Т.е. вклад без капитализации.
                  Учитываются ли такие проценты при расчете или нет?
                  Спасибо
                  >> Ответить
                  • Развернуть насколько я понимаю, нет ( DbIxTep  09.06.2014 09:35 )
                    0(0)
                    Учитываются только те средства, которые РЕАЛЬНО идут клиенту. По крайней мере мне так наш ГБ объяснил.

                    Вот для примера: Вклад открылся в январе 2014 на год с ежеквартальной капитализацией.
                    Вот так я вижу денежные потоки по этому вкладу для расчета ПСВ:
                    [01.01.2014] -100р (начальная сумма вклада)
                    [31.03.2014] 10р (%% за 3 месяца - сумма условная)
                    [30.06.2014] 11р (%% за 3 месяца - сумма условная)
                    [30.09.2014] 12р (%% за 3 месяца - сумма условная)
                    [31.12.2014] 13р (%% за 3 месяца - сумма условная)
                    [31.12.2014] 100р (основная сумма вклада)
                    Две последние строчки можно объединить в одну. Оставил две для наглядности

                    Вот как то так. %% все условные, увеличиваются, поскольку присутствует капитализация
                    >> Ответить
                    • Развернуть Не понимаю - в каком месте я дурак? ( fplab  16.06.2014 17:58 )
                      0(0)
                      Ребята, ну выручайте!
                      У нас никто толком подсказать не может. Вот движения по депозиту:
                      dates[dates.size] = date (6, 5, 2013);   streams[streams.size] = -1000000; // Открытие
                      dates[dates.size] = date (31, 5, 2013);  streams[streams.size] =  6849;    // %%
                      dates[dates.size] = date (10, 6, 2013);  streams[streams.size] =  6800;    // Частичное снятие
                      dates[dates.size] = date (29, 6, 2013);  streams[streams.size] =  8238;    // %%
                      dates[dates.size] = date (08, 7, 2013);  streams[streams.size] =  8200;    // Частичное снятие
                      dates[dates.size] = date (31, 7, 2013);  streams[streams.size] =  8512;    // %%
                      dates[dates.size] = date (9, 8, 2013);   streams[streams.size] =  8500;    // Частичное снятие
                      dates[dates.size] = date (31, 8, 2013);  streams[streams.size] =  8515;    // %%
                      dates[dates.size] = date (6, 9, 2013);   streams[streams.size] =  8600;    // Частичное снятие
                      dates[dates.size] = date (30, 9, 2013);  streams[streams.size] =  8233;    // %%
                      dates[dates.size] = date (7, 10, 2013);  streams[streams.size] =  8200;    // Частичное снятие
                      dates[dates.size] = date (31,10, 2013);  streams[streams.size] =  8509;    // %%
                      dates[dates.size] = date (7, 11, 2013);  streams[streams.size] =  8500;    // Частичное снятие
                      dates[dates.size] = date (30, 11, 2013); streams[streams.size] =  8236;    // %%
                      dates[dates.size] = date (14, 12, 2013); streams[streams.size] =  8230;    // Частичное снятие
                      dates[dates.size] = date (31, 12, 2013); streams[streams.size] =  8525;    // %%
                      dates[dates.size] = date (13, 1, 2014);  streams[streams.size] =  8500;    // Частичное снятие
                      dates[dates.size] = date (16, 1, 2014);  streams[streams.size] =  500000;  // Частичное снятие
                      dates[dates.size] = date (31, 1, 2014);  streams[streams.size] =  6469;    // %%
                      dates[dates.size] = date (3, 2, 2014);   streams[streams.size] =  6500;    // Частичное снятие
                      dates[dates.size] = date (28, 2, 2014);  streams[streams.size] =  3841;    // %%
                      dates[dates.size] = date (11, 3, 2014);  streams[streams.size] =  150000;  // Частичное снятие
                      dates[dates.size] = date (31, 3, 2014);  streams[streams.size] =  3458;    // %%
                      dates[dates.size] = date (30, 4, 2014);  streams[streams.size] =  2937;    // %%
                      dates[dates.size] = date (08, 5, 2014);  streams[streams.size] =  790;     // %%
                      dates[dates.size] = date (08, 5, 2014);  streams[streams.size] =  -361084; // Пролонгация
                      dates[dates.size] = date (31, 5, 2014);  streams[streams.size] =  1991;    // %%
                      
                      Скармливаю макросу - ошибка Floating point error: invalid operation на строке

                      Sum = Sum + sums[i] / pow (y, p);
                      
                      Куды копать? И что я неправильно делаю? Спасибо
                      >> Ответить
                      • Развернуть onError включи - p - отрицательный скорее всего ( KaMPiLeR  16.06.2014 18:27 )
                        0(0)
                        onError включи - p - отрицательный скорее всего
                        >> Ответить
                        • Развернуть В том-то и дело, что нет ( fplab  17.06.2014 09:39 )
                          0(0)
                          В момент ошибки p = 0.0685.
                          А вот y = -2.3564

                          Самое неприятное, что данные - реальные: выбраны ручками и перепроверены. Ну должно же что-то посчитаться или нет?
                          Кстати, правильно я понимаю, что пролонгации учитываются со знаком "-", т.е. как внесение средств на счет?
                          Кроме того, макрос отказывается считать на новых вкладах, открытых в отчетном периоде, т.е. в мае.
                          Допустим, 10.05.2014 открыт вклад на 100000, а 31.05.2014 по нему начислены проценты (допустим 500 руб.). Опять ошибка.

                          Спасибо


                          >> Ответить
                          • Развернуть у вас в 08.05.2014 не пролонгация ( Sergey V. Mamaev  17.06.2014 11:27 )
                            0(0)
                            у вас в 08.05.2014 не пролонгация получается, а допвзнос. при пролонгация либо эта сумма пройдёт и с минусом и с плюсом, либо вообще должна отсутствовать.
                            далее у вас отсутствует окончательное снятие средств: полная стоимость должна рассчитываться на полный срок с учётом всех денежных потоков и с учётом сроков между датами этих потоков (ПСВ по вкладу с причислением процентов раз в месяц и раз в полгода даёт разные цифры)
                            >> Ответить
                      • Развернуть по-моему у тебя нет логического окончания вклада ( aand  17.06.2014 08:54 )
                        0(0)
                        ... насколько я понимаю в конце всего потока у тебя должно быть полное снятие вклада с обнулением, типа:
                        dates[dates.size] = date( 1, 1, 2008); streams[streams.size] = -10000; // открытие
                        dates[dates.size] = date( 1, 3, 2008); streams[streams.size] = 100; // %%
                        dates[dates.size] = date(30,10, 2008); streams[streams.size] = 200; // %%
                        dates[dates.size] = date(15, 2, 2009); streams[streams.size] = 300; // %%
                        dates[dates.size] = date( 1, 4, 2009); streams[streams.size] = 400; // последнее начисление %%
                        dates[dates.size] = date( 1, 4, 2009); streams[streams.size] = 11000; // закрытие/снятие (остаток на вкладе)
                        ...а у тебя в примере, как я понимаю, предполагается продолжение денежных потоков

                        >> Ответить
                        • Развернуть Обнуление не происходит. Происходит прологнация ( fplab  17.06.2014 09:41 )
                          0(0)
                          Да, именно так. Вклад пролонгирован 08.05.2014 на сумму 361084 на тех же условиях
                          >> Ответить
                          • Развернуть мы пролонгацию не учитывали... ( aand  17.06.2014 10:00 )
                            0(0)
                            потому как, если ее учитывать, то непонятно, когда заканчиваются денежные потоки по договору.
                            В твоем случае, мне кажется, надо остановиться на дате пролонгации. Попробуй. По крайней мере проверишь логику программы с обнулением суммы.
                            >> Ответить
                          • Развернуть вдогонку. только сумма пролонгации должна быть положительная (типа снятие клиентом денег) ( aand  17.06.2014 10:02 )
                            0(0)
                            Not specified
                            >> Ответить
                          • Развернуть пролонгация должна быть как для вновь открытых вкладов ( KaMPiLeR  17.06.2014 10:04 )
                            0(0)
                            я так сделал.
                            типа была пролонгация в мае 2014 года - от этой даты и пляшем. всю историю тянуть не надо
                            >> Ответить
                            • Развернуть и как вариант - попробуйте на своем периоде посчитать в иксель - через XIRR ( KaMPiLeR  17.06.2014 10:06 )
                              0(0)
                              я заставил бухов на икселе с периодами тренироваться - потому как если в иксель не считает то и эта функция тож не будет считать.

                              >> Ответить
                              • Развернуть длинное сумбурное сообщение :-) ( aand  17.06.2014 12:56 )
                                0(0)
                                1. Уже пришло сообщение от Волшебника, что данный вклад не должен участвовать в расчете. Абсолютно с ним согласен. Но т.к. задача сама по себе заинтересовала, начали копать "всем миром" :-)
                                2. Про последнее начисление я уже писал. Я считаю, что оно лишнее. Но, допустим, что мы будем думать, что вклад заканчивается на дате пролонгации.
                                3. Первое, что видно невооруженным взглядом, в примере не учитываются разнонапрвленные потоки, т.е. как минимум, это должно выглядеть так:
                                dates[dates.size] = date (6, 5, 2013); streams[streams.size] = -1000000; // Открытие
                                dates[dates.size] = date (31, 5, 2013); streams[streams.size] = -6849; // %%
                                dates[dates.size] = date (10, 6, 2013); streams[streams.size] = 6800; // Частичное снятие
                                dates[dates.size] = date (29, 6, 2013); streams[streams.size] = -8238; // %%
                                dates[dates.size] = date (08, 7, 2013); streams[streams.size] = 8200; // Частичное снятие
                                ...
                                dates[dates.size] = date (08, 5, 2014); streams[streams.size] = 361084; // Снятие
                                Прогнали через иксиль такой вариант, и о ужас!!! - получили 0.00%
                                4. Стали думать :-) Получается следующее:
                                Клиент принес денежку миллион, затем еще некоторую сумму в размере %%, а на следующий день снял эти %%, ну и в течение всего года делал эти бессмысленные манипуляции. В конце года снял остаток и "счастливый" пошел его тратить.
                                5. Но ведь %% он берет реально не из своего кармана, а ему их дает ваш щедрый банк. Решили включить эту операцию в денежный поток:
                                dates[dates.size] = date (6, 5, 2013); streams[streams.size] = -1000000; // Открытие
                                dates[dates.size] = date (31, 5, 2013); streams[streams.size] = 6849; // %% щедрый банк дает клиенту
                                dates[dates.size] = date (31, 5, 2013); streams[streams.size] = -6849; // клиент кидает их во вклад
                                dates[dates.size] = date (10, 6, 2013); streams[streams.size] = 6800; // Частичное снятие
                                dates[dates.size] = date (29, 6, 2013); streams[streams.size] = 8238; // %% щедрый банк дает клиенту
                                dates[dates.size] = date (29, 6, 2013); streams[streams.size] = -8238; // клиент кидает их во вклад
                                dates[dates.size] = date (08, 7, 2013); streams[streams.size] = 8200; // Частичное снятие
                                ...
                                dates[dates.size] = date (08, 5, 2014); streams[streams.size] = 361084; // Снятие
                                прогнали такой вариант через иксиль, и о чудо!!! 10.47%
                                ну вот какая-то такая логика рассуждений у нас получилась :-)
                                Это схема "оперативного" расчета ПСВ по факту движения по вкладу (с учетом доп вложений, частичных снятий).
                                6. Теперь по поводу указания...
                                Представим, что мы на год в прошлом и нам надо расчитать ПСВ для вклада открытого в мае. Понятно, что мы не знаем как будет клиент снимать деньги, но график расчета %% нам известен... Выглядеть все это будет так:
                                dates[dates.size] = date (6, 5, 2013); streams[streams.size] = -1000000; // Открытие
                                dates[dates.size] = date (31, 5, 2013); streams[streams.size] = 6849; // %% щедрый банк дает клиенту
                                dates[dates.size] = date (31, 5, 2013); streams[streams.size] = -6849; // клиент кидает их во вклад
                                dates[dates.size] = date (29, 6, 2013); streams[streams.size] = 8238; // %% щедрый банк дает клиенту
                                dates[dates.size] = date (29, 6, 2013); streams[streams.size] = -8238; // клиент кидает их во вклад
                                ...
                                dates[dates.size] = date (08, 5, 2014); streams[streams.size] = 1000000 + СУММА(%%); // Снятие
                                Как-то так мы для себя все разобрали, для вклада с капитализацией %% :-)

                                >> Ответить
                          • Развернуть Такой вклад вы НЕ учитываете в расчете ПСВ ( Волшебник  17.06.2014 11:27 )
                            0(0)
                            Читаем внимательно указание:
                            ПСВ рассчитывается в соответствии с условиями договора банковского вклада с физическим лицом по состоянию на день его заключения (изменения) исходя из предусмотренных условиями договора банковского вклада с физическим лицом денежных потоков в течение всего срока вклада (без учета пролонгации).
                            И ниже:
                            3. В графах таблицы указываются максимальные значения процентных ставок по договорам банковского вклада с физическими лицами, которые определяются условиями заключенных в отчетный период договоров банковского вклада с физическими лицами либо договоров банковского вклада с физическими лицами, условия которых изменены в течение отчетного периода (без учета условий о возможности продления срока договора банковского вклада и условий, выполнение которых зависит от решения вкладчика и (или) варианта его поведения)
                            Этот вклад вы не заключили и не изменили условия в этот день.
                            Простая пролонгация не в счет.

                            >> Ответить
    • Развернуть пример на RSL ( sysrq  09.06.2014 13:28 )
      0(0)
      с использованием ЧИСТВНДОХ вроде понятно.
      А вот как вы рассчитываете процент за буд период. для Retail интересно? выложите кто-нибудь кусок макроса по заполнению массивов.
      есть у кого?
      >> Ответить