Конференция "Прочее" » Помогите с формулой расчета аннуитета…
 
  • Kolan © (02.05.08 00:22) [0]
    Здравствуйте,
     Не могу понять где ошибка, наверно в формулах…

    1. Есть формула расчета аннуитета. Формула «А».

    function EvalMonthPercent(AYearPercent: Integer): Double;
    begin
     Result := (AYearPercent / 12) / 100;
    end;



    function EvalAnnua(ACreditSize: Currency; AYearPercent: Integer; AMonthPeriod: Integer): Currency;
    var
     Numerator, Denominator: Double;
     MonthPercent: Double;
    begin
     Result := 0;
     MonthPercent := EvalMonthPercent(AYearPercent);
     Numerator := Power(1 + MonthPercent, AMonthPeriod) * MonthPercent;
     Denominator := Power(1 + MonthPercent, AMonthPeriod) — 1;
     if Denominator <> 0 then
       Result := ACreditSize * (Numerator / Denominator);
    end;



    В ней особых сомнений нет, взял из экселевского файла из банка.
    В экселе она выглядела так:
    =F4*((1+F6/12)^F5*F6/12)/((1+F6/12)^F5-1)



    Она дает такой расчет:

    Сумма кредита
    2 797 689р.

    Дата
    25.03.2008

    Дата выплаты    Остаток           Гашение       Проценты      Аннуитет
    25.04.2008      2 769 412,15р.    28 276,85р.   44 296,74р.   72 573,59р.


    …Ну и так далее…

    А есть еще вот такая формула: Формула «Б».
    function EvalPariodCreditPercent(ACurrentBalance: Currency; AYearPercent: Integer;
     LastPaymentDate, CurrentDate: TDateTime): Currency;
    var
     DayPercent: Double;
     DaysCount: Integer;
    begin
     DayPercent := (AYearPercent / 365)/100;
     DaysCount := DaysBetween(CurrentDate, LastPaymentDate);
     Result := (ACurrentBalance * DayPercent) * DaysCount;
    end;


    Она вычисляет проценты набежавшие с прошлого платежа.

    Проблемма вот в чем. Человек приходит платить 25.04.2008  и платит 72 573,59р.(точно аннуитет).
    Так вот Формула «Б» расчитывает проценты не так как та, что в аннуитете.

    Получается:
    Дата выплаты    Остаток           Гашение       Проценты      
    25.04.2008      2 770 261,68р.    27 427,32р.   45 146,27р.



    Если сравнить:

       Остаток           Гашение       Проценты  
    «А» 2 769 412,15р.    28 276,85р.   44 296,74р.
    «Б» 2 770 261,68р.    27 427,32р.   45 146,27р.



    Получается разница в —849,53р. То есть человек как-бы не доплатил, хотя заплатил правильно.
    * Сумма бывает разной как в плюс, так и в минус.

    Вопросы:
    1. Что не так с формулой «Б»? — очень хочется понять откуда разница.
    2. Можноли изменить формулу «Б», чтобы она работала правильно и как?
    3. Если 2 невозможно, то где взять описание сценариев работы банка, например, при работе с кредитами.
  • Palladin © (02.05.08 00:27) [1]
    интересно... а ты не забыл что год високосный? или это не влияет на расчеты?
  • Тимохов (02.05.08 00:29) [2]
    чо-то это круто слишком для форума :) имхо
    я бы постарался проблему выделить более узко.
  • Kolan © (02.05.08 00:29) [3]
    > интересно… а ты не забыл что год високосный? или это не
    > влияет на расчеты?

    Незнаю, ты думаешь дело в
    DayPercent := (AYearPercent / 365)/100;

    ? Пробовал и 364 ставить суммы несхождения меняется, но незначительно — рублей на сто в данном примере…

    Или ты о чем?
  • Kolan © (02.05.08 00:31) [4]
    > я бы постарался проблему выделить более узко.

    Рад бы с узить, но как?

    У меня по этому поводу есть печальное подозрение, но пока хочу послушать мнение уважаемых посетителей форума…
  • Palladin © (02.05.08 00:31) [5]
    366 дней, а не 364. просто это первое что мне в глаза бросилось...
  • Тимохов (02.05.08 00:32) [6]
    Ну вот одна из претензий.
    Я знал, что есть аннуитет, но забыл. Т.е. надо бы меня посветить в предметную область.
  • Palladin © (02.05.08 00:37) [7]
    еще проблема может быть в работе DaysBitween... может для верного расчета нужно на один день больше...
  • ага-2 (02.05.08 00:40) [8]

    > Kolan ©


    > Palladin ©   (02.05.08 00:31) [5]

    В dateutils есть функции для точных вычислений.
  • Тимохов (02.05.08 00:41) [9]

    >  if Denominator <> 0 then

    а 0 всегда точно представляется в Double (просто не помню)?
  • Kolan © (02.05.08 00:42) [10]
    > 366 дней, а не 364. просто это первое что мне в глаза бросилось…

    Я же говорю это не то, при 366 получается —726,18р…


    > Т.е. надо бы меня посветить в предметную область.

    Это связано с кредитами, банковским делом. Все просто, но названия и понятия надо знать.

    АННУИТЕТОМ  является ежемесячная/ежегодная денежная сумма определенного размера, выплачиваемая кредитору в погашение по лученного от него займа, включая проценты.

    http://ru.wikipedia.org/wiki/%D0%90%D0%BD%D0%BD%D1%83%D0%B8%D1%82%D0%B5%D1%82

    То есть если ты взял кредит, то каждый месяц должен платит аннуитет.
    Но от месяца к месяцу проценты и гашение в аннуитете распределяется поразному. Сначала много отдаем процентов, в конце, на оборот, мало процентов и много гасим…

    В конкр примере:
    Взносы Сальдо              Гашение осн. долга Проценты за кредит Аннуитет

    1  2 769 412,15     28 276,85     44 296,74     72 573,59  
    2  2 740 687,58     28 724,57     43 849,03     72 573,59  
    3  2 711 508,20     29 179,37     43 394,22     72 573,59  
    4  2 681 866,82     29 641,38     42 932,21     72 573,59  
    5  2 651 756,12     30 110,70     42 462,89     72 573,59  
    6  2 621 168,66     30 587,46     41 986,14     72 573,59  
    7  2 590 096,91     31 071,76     41 501,84     72 573,59  
    8  2 558 533,18     31 563,73     41 009,87     72 573,59  
    9  2 526 469,69     32 063,49     40 510,11     72 573,59  
    10  2 493 898,54     32 571,16     40 002,44     72 573,59  
    11  2 460 811,67     33 086,87     39 486,73     72 573,59  
    12  2 427 200,92     33 610,74     38 962,85     72 573,59  
    итд на 60 мес.

 
Конференция "Прочее" » Помогите с формулой расчета аннуитета…
Есть новые Нет новых   [134435   +4][b:0][p:0.003]