Как найти прирост инфляции

Признаком
инфляции является рост усредненной
цены всей корзины товаров и услуг,
выбранных в качестве базы для контроля
за уровнем инфляции (а не увеличение
цен отдельного товара или группы
однотипных товаров). В зависимости от
набора выбранных товаров значение темпа
инфляции будет различаться.

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

Индекс
цен

(индекс
инфляции)

за период


, (41)

где

– цена в начале периода (базисный
период);

цена в конце периода (отчетный период).

Индекс
покупательной способности денег

за период


. (42)

Пример
56.

Стоимость 1 кг картофеля выросла с 32
руб. до 40 руб. за 6 месяцев.

Индекс
цен по формуле (41)

показывает,
что цены выросли в 1,25 раз.

По
новой цене на 32 рубля можно купить (42):

кг
картофеля.

Пример
57.

За 10 лет цены выросли в пять раз, т. е.

.
Определим стоимость 100 000 руб. 10 лет
назад (42):

руб.

Темп
инфляции

– это относительный прирост цен за
период:


. (43)

Пример
58.

Темп инфляции за год 15%, отсюда следует,
что цены за год увеличатся (43) в

раз.

Индекс
цен за несколько периодов


, (44)

где

– прирост цен за период 1, 2, … n
соответственно.

Причем
новый прирост цен рассчитывается по
отношению к предыдущему периоду, а не
по отношению к первому периоду.

Пример
59.

Последовательный прирост цен по месяцам
составил 2,5%, 2%, 1,5%. Тогда за 3 месяца цены
выросли (44) в

раз.

Индекс
цен (индекс инфляции) за несколько
периодов,

если темпы инфляции каждый период
одинаковые:


, (45)

отсюда
средний
темп инфляции за период


(46)

Пример
60.

Цены за год выросли на 20%, тогда средний
темп инфляции в месяц составляет (46):

или
1,53%.

Пример
61.

Постоянный темп инфляции составляет
1,3% в месяц. К концу года цены вырастут
(45) в

раза
или на 16,8%

В
этом примере ответ 1,312=15,6%
является не верным, так как база для
расчета темпа инфляции меняется каждый
период.

Учет
инфляции при расчете будущей стоимости.

Будущая
стоимость с учетом инфляции (реальная
стоимость)


, (47)

где
FV
– будущая стоимость, полученная после
начисления процентов
(номинальная стоимость
);

– индекс цен за период финансовой
операции.

Раскроем
формулу (47) для разных ставок подробнее
в таблице 4.

Пример
62.

Найти ставку, компенсирующую инфляцию,
если срок операции 3 года, ожидаемый
темп инфляции 12% в год. Проверить
накопленную сумму, если инвестировано
100 000 руб., банк предлагает ставку по
депозитам в размере 10% годовых: а) ставка
сложная; б) ставка простая.

Индекс
цен (индекс
инфляции)

(45):


.

Таблица
4

Наращение с
учетом инфляции

Простые
проценты

Сложные
проценты

Будущая
стоимость с учетом инфляции (реальная
стоимость)


(48)


(49)

Увеличение
стоимости капитала будет происходить,
только если коэффициент наращения
превышает индекс цен

Ставка
r’,
компенсирующая инфляцию
,
при использовании которой не происходит
реального уменьшения капитала, несмотря
на начисление процентов, выводится
из равенства коэффициента наращения
и индекса цен


(50)


(51)

Банковская
ставка r
называется
положительной,
если

,

наблюдается
реальный рост покупательной способности
капитала.

Банковская
ставка r
называется
отрицательной,
если

,

начисленные
проценты не компенсируют потери
покупательной способности капитала
в результате инфляции.

а)
Ставка простых процентов, компенсирующая
инфляцию (50):

или
13,5%.

Накопленная
сумма с учетом инфляции (реальная
стоимость) (48):

руб.

б)
Ставка сложных процентов, компенсирующая
инфляцию. Формула (51), при применении
среднего темпа инфляции для каждого
периода, преобразуется к следующему
виду:


.

Накопленная
сумма с учетом инфляции (реальная
стоимость) (49):

руб.

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

Учет
инфляции при расчете доходности
финансовой операции.

Наиболее
распространенным способом компенсации
возможных потерь является увеличение
ставки на величину инфляции.

Брутто-ставка
(номинальная доходность)

компенсирует инфляцию и оговоренные
по ставке r
проценты, т. е. представляет собой
ставку, скорректированную на инфляцию.
Покажем подробнее нахождение брутто-ставки
для разных ставок в таблице 5.

Таблица
5

Увеличение
ставки с учетом инфляции

Простые
проценты

Сложные
проценты

При
условии компенсации инфляции для
соответствующей ставки должно
выполняться равенство: доход по
брутто-ставке (номинальной) равен
доходу по оговоренной ставке с
корректировкой на инфляцию.


(52)


(53)

Выводим
брутто-ставку (номинальную доходность)

(54)


(55)

Реальную
доходность

операции r
по известной доходности операции
выводим из равенств (52) и (53)


(56)


(57)

Пример
63.
Для
данных примера 62 определить значение
брутто-ставки.

а)
Брутто-ставка (номинальная доходность)
при наращении по простой процентной
ставке (54):


.

Получается,
что при инвестировании под номинальные
простые проценты 27,55% годовых и инфляции
12% годовых реальный
рост покупательной способности денег
составит 10% годовых.

Проверим
сделанный вывод, инвестировав под 27,55%
(48):

руб.

Накопленная
сумма совпадает с наращением простых
процентов (пример 8).

б)
Брутто-ставка (номинальная доходность)
при наращении по сложной процентной
ставке (55):


.

Следовательно,
при инвестировании под номинальные
сложные проценты 23,202% годовых и инфляции
12% годовых реальный
рост покупательной способности денег
составит 10% годовых с капитализацией
дохода.

Проверим
сделанный вывод, инвестировав под
23,202% (49):

руб.

Накопленная
сумма совпадает с наращением сложных
процентов (пример 9).

Пример
64.

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

Индекс
цен (45):


.

Брутто-ставка
(номинальная доходность) при наращении
по сложной процентной ставке (55):


.

Следовательно,
только номинальные
сложные проценты 39,5% годовых при инфляции
2% в месяц обеспечат реальный
рост покупательной способности денег
10% годовых в течение 3 лет.

Сравнивая
примеры 63 и 64 можно сделать вывод, что
корректировка ставки на инфляцию имеет
смысл только при невысоких темпах
инфляции.

Пример
65.
Банковская
ставка по депозитам (номинальная
доходность) составляет 20% годовых. Темп
инфляции 12% годовых. Найти реальную
доходность операции сроком 2 года, если:
а) проценты простые; б) проценты сложные.

а)
По формуле (56) реальная доходность
операции равна:

или
5,8% годовых.

б)
По формуле (57) реальная доходность
операции равна:

или
7,14% годовых.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
Автор статьи

Елена Ивановна Ковалева

Эксперт по предмету «Экономика»

Задать вопрос автору статьи

Основные положения

Замечание 1

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

Так, рассмотрим основные этапы для расчета темпа инфляции:

  1. выбор периода исследования;
  2. сбор исходной информации;
  3. формирование, сводка и группировка данных;
  4. расчет темпов роста;
  5. оценивается уровень инфляции, изменения;
  6. формирование графического представления;
  7. анализ данных;
  8. формирование выводов.

Определение 1

Темп инфляции – это показатель, отражающий уровень инфляции, который говорит о том, как изменился (вырос или упал) уровень инфляции.

Так, если темпы инфляции оказываются выше, чем 10 % в год (или 0,8 % в месяц), то такая инфляция называется ползучей (или относительно нормальной). Если инфляция окажется, выше, чем 20 %, то инфляция называется галопирующей и является очень высокой (такие темпы роста наблюдались во многих странах Латинской Америки, Южной Азии в 80-х годах). Инфляция, темпы которой превышают 50 % в месяц и выше, называется гиперинфляцией. В такой ситуации стране грозит дефолт и крах финансовой системы.

Формула расчета

Рассмотрим формулу для исчисления.

Так, уровень или темп инфляции = ((инфляция в настоящем анализируемом периоде – инфляция в предыдущем анализируемом периоде)/ инфляция в предыдущем периоде)) $cdot$ 100, %

Также существует еще одна формула. Так уровень инфляции, рассчитанный по уровню статистики, может быть принят за индекс цен. Итак, формула приобретает следующий вид.

Темп инфляции = ((индекс настоящего периода – индекс предыдущего периода (или базового периода)) / индекс предыдущего периода (или базового периода) $cdot$ 100, %

«Расчет темпа инфляции» 👇

Замечание 2

Обратите внимание, что в случае с инфляцией темп роста рассчитывается как показатель темпа прироста, как наиболее информативный. Так результат расчета показывает на сколько процентов вырос или, наоборот, снизился уровень инфляции.

Пример расчета

Для расчета выбран период в пять лет с 2012 по 2016 годы, то есть 2012, 2013,2014, 2015, 2016 год. Также данные об уровне цен взять с официального сайта статистики по Российской Федерации.

Итак, исходные данные представлены следующими уровнями инфляции: 5,4 % – 2016 год, 12,90 % — 2015 год, 11,36 % — 2014 год, 6,45 % — 2013 год, 6,58 % — 2012 год, 6,10 % — 2011 год.

Рассчитаем темпы инфляции по годам:

  • 2012 год = 7,9 %
  • 2013 год = -1,9 %
  • 2014 год = 76,1 %
  • 2015 год = 13,5 %
  • 2016 год = — 58,3 %

Так, темп инфляции в 2016 году составило падение – 58,3 % от уровня 2015 года.
Темп инфляции в 2015 году составил рост 13,5 % от уровня 2014 года.

Особенно высокий рост наблюдался в 2014 году 76,1 %. Что было связано с кризисными явлениями в экономике Российской Федерации, усложнением внеэкономической и политической обстановки.

Представим темпы роста на графике на рисунке 1 ниже.

Темп инфляции. Автор24 — интернет-биржа студенческих работ

Так, видно на графике, что наивысший темп инфляции в Российской Федерации наблюдался в 2014 году, но потом темпы роста инфляции стали уменьшаться, что является в некотором смысле позитивным фактором. Так в 2016 году в среднем по инфляции наблюдалось снижение инфляции, то есть обратная инфляция. Однако, наиболее информативно расчет темпов инфляции проводить за период по месяца и по группам товаров.

Пример 1

Несмотря на позитивные изменения в уровне инфляции в России, уровень инфляции является достаточной высоким по сравнению с другими, развитыми странами. Для примера уровень инфляции в США наблюдается на уровне 2-2,5 %, в Германии на уровне 1,7-2 %.

Основными факторами, влияющими на уровень инфляции в перспективе, будут оставаться цены на нефть, внешнеэкономическая деятельность, внешнеполитическая обстановка, эффективность государственной политики в области денежно-кредитной, налоговой политики.

Находи статьи и создавай свой список литературы по ГОСТу

Поиск по теме

Неотъемлемым элементом рыночной системы является процесс изменения цен на товары и услуги – инфляционные колебания. Инфляция затрагивает всех участников рыночных отношений, именно поэтому важно своевременно анализировать и прогнозировать ее уровень и последствия.

Инфляция

Это изменение уровня цен на рыночные продукты в большую сторону на длительный период.

Причины инфляции:

  • чрезмерно большой выпуск денег в оборот;
  • повышение расходов на военные нужды;
  • монопольная зависимость;
  • неэффективность экономики;
  • рост цен на импортные или экспортные комплектующие;
  • валютные колебания.

Последствия инфляции

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

Отрицательные: потери в результате денежных накоплений, рост цен на все виды товаров, налоговые потери (налоги без учета инфляции), отсутствие ожидания роста цен.

Инфляция по степени интенсивности:

  • гиперинфляция – рост цен на 1000% каждый год, что отрицательно сказывается на стабильности валюты и внутриполитической обстановке;
  • галопирующая – прирост цен в 2-3 раза ежегодно, что прекращает инвестиционную активность внутри страны;
  • умеренная – невысокие темпы роста цен (до 10% в год), не оказывающие масштабного влияния на спрос и предложение.
Формула инфляции

И=1+ГТ,text{И} = 1 + text{ГТ},

где ГТtext{ГТ} – темп инфляции за год.

Темп инфляции

ГТ=Ц1−Ц0Ц0⋅100%,text{ГТ}=frac{text{Ц}_1-text{Ц}_0}{text{Ц}_0}cdot100%,

где Ц1,text{Ц}_1, Ц0text{Ц}_0 – цены на продукцию текущего и прошлого периодов.

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

ИИ=∏(1+ГТi)i−1,text{ИИ} = prod (1 + text{ГТ}_i)_i-1,

где ГТitext{ГТ}_i – уровень инфляции за определенное время: квартал, месяц, день.

Показатели, характеризующие уровень инфляции:

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

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

Формула Фишера

i=1+i1+h−1,i=frac{1+i}{1+h}-1,

где ii – ставка с учетом инфляции, номинальная,

hh – темп инфляции, годовой.

Пример 1

Определить годовой показатель инфляции за год, если в первом полугодии инфляция составила 8% ежемесячно, во втором 13%.

Решение

Годовая инфляция:

ИИ=∏(1+ГТi)i=(1+0,08)6⋅1+0,136−1=1,5869⋅2,08−1=2,30=230%text{ИИ} = prod(1 + text{ГТ}_i)_i=(1+0,08)6cdot1+0,136-1=1,5869cdot2,08-1=2,30=230%

Ответ: Годовой показатель инфляции 230%.230%.

Пример 2

Определить банковский процент по вкладам в результате влияния инфляции, если годовой темп инфляции 4,5%, номинальная ставка 11% годовых.

Решение

По формуле

i=1+i1+h−1=1+0,111+0,045−1=0,0622=6,22%i=frac{1+i}{1+h}-1=frac{1+0,11}{1+0,045}-1=0,0622=6,22%

Ответ: Банковский доход составит 6,22%6,22% в год.

Инфляция это важный фактор в жизни каждого человека. Мы неотъемлемые участники рынка, поэтому стабильность цен – ключевой фактор комфортного рыночного взаимодействия.

Тест по теме “Формула темпа инфляции”

Не можешь разобраться в этой теме?

Обратись за помощью к экспертам

Бесплатные доработки

Гарантированные бесплатные доработки

Быстрое выполнение

Быстрое выполнение от 2 часов

Проверка работы

Проверка работы на плагиат

Статистики заявляют, что инфляция в России в 2021 году составила 8,39%.

Но верится с трудом: например, капуста за год подорожала почти на 20%, а алкоголь всего на 2%. Мы разобрались, как рассчитывают инфляцию, что влияет на рост цен и можно ли верить Росстату.

Что такое инфляция

Когда денег у населения и на счетах компаний больше, чем товаров на прилавках и складах, начинает расти спрос и продавцы повышают цены. В результате деньги обесцениваются: на ту же сумму спустя некоторое время можно купить меньше товаров. Общий прирост цен — это и есть инфляция. В России этот показатель считает Росстат. На языке статистиков его называют индексом потребительских цен.

Фактически сейчас в стране существует два вида денег: наличные — купюры и монеты; а также безнал, который находится на счетах государства и банков. Все денежное обращение в России контролирует Центральный банк. Если там считают, что стране нужно больше денег, то Центробанк заказывает на Гознаке больше наличных и параллельно с этим снижает ключевую ставку — процент, под который государство кредитует коммерческие банки.

Бывает такое, что цены не растут, а падают. Этот процесс называется дефляцией. Но ничего хорошего в дефляции нет: производить товары становится невыгодно и экономика замедляется. Самый известный кризис, происходивший на фоне дефляции, — Великая депрессия в Америке тридцатых годов. Идеальная ситуация для экономического роста в стране — небольшая инфляция 1—2%.

Как Росстат считает инфляцию

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

Состав потребительской корзины статистики меняют ежегодно, изучая реальные расходы российских семей. В 2021 году 38,15% расходов россиян приходилось на продукты питания, 34,97% — на непродовольственные товары, 26,8% — на услуги. Внутри этих трех категорий распределяются траты на отдельные товары.

Например, по данным статистиков, 8,9% расходов приходится на мясо, 6,2% — на коммунальные услуги, 1,2% — на парикмахера. В состав корзины включены и крупные покупки: путешествия, стройматериалы, компьютеры.

Пересматривают состав корзины и ее структуру еще и потому, что на прилавках появляются новые товары, а на какие-то вещи россияне начинают тратить больше. Например, в 2006 году бензин занимал 2% в составе потребительской корзины, в 2018 — уже 4%, в 2021 — 4,5%. А цены на смартфоны 12 лет назад не учитывались вообще. Вот как поменялась потребительская корзина за три последних года:

Кроме этой большой потребительской корзины Росстат отдельно считает изменение базового индекса потребительских цен. Это набор из 83 товаров, цены на которые меньше всего зависят от внезапных изменений экономической ситуации или сезона: например, мясные продукты, хлебобулочные изделия, коммунальные услуги, проезд в общественном транспорте. Изменение стоимости такой базовой потребительской корзины статистики используют при расчете еженедельной инфляции.

Есть и третья потребительская корзина — с минимальным набором товаров, в которую входят 33 продукта питания. Изменение цен на минимальный набор используют при расчете прожиточного минимума.

Что влияет на инфляцию

На рост цен влияет целый комплекс факторов, в том числе ситуация на мировых рынках и внутренняя политика государства. Вот некоторые из причин инфляции.

Погода — в плохой год аграрии соберут маленький урожай, и, как следствие, стоимость продуктов вырастет.

Большие военные расходы — все деньги уходят военным заводам, а предприятия, которые выпускают гражданскую продукцию, вынуждены снижать объемы.

Развитие инфраструктуры — между двумя регионами построили дорогу, усилилась конкуренция, а предприниматели, подстраиваясь под новые условия, снижают цены.

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

Тарифы — в цене большинства товаров заложены расходы на транспортировку по железной дороге, платежи за тепло и электроэнергию. И железнодорожники, и энергетики обычно монополии. Как только они повышают тарифы, это сразу же сказывается на ценах на почти все товары.

Экономические прогнозы — в Центробанке даже используют специальный термин «инфляционные ожидания». И эти ожидания могут ускорять или замедлять инфляцию.

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

Государство регулирует инфляцию, ограничивая количество денег в экономике. Этим занимается Центробанк. Его главный инструмент — ключевая ставка. Если Центробанк снижает ключевую ставку, банки могут выдавать кредиты людям и предпринимателям под низкий процент, ведь им самим деньги обходятся дешево. Параллельно с этим ставки по вкладам падают — привлекать депозиты у граждан становится невыгодно, ведь проще занять у государства.

В итоге количество денег в экономике растет: все берут дешевые кредиты, активно тратят накопления, так как класть их на депозиты нет смысла. Спрос растет, а вслед за ним и цены. Инфляция повышается.

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

Почему кажется, что Росстат не прав

Среднестатистический потребитель, портрет которого рисует Росстат, собирая продуктовую корзину, — абстрактный персонаж. У каждой российской семьи своя уникальная корзина, которая не совпадает со статистической. Например, бедные люди большую часть доходов тратят на еду, в то время как продукты питания занимают всего 38,1% от официальной корзины.

Кроме того, показатель инфляции отличается в разных регионах. Например, в декабре 2021 года по данным Росстата, сахар в среднем по России подорожал на 2,1%, а в Астраханской области, наоборот, подешевел на 0,1%. Но общероссийскую инфляцию не считать нельзя: государству важно понимать, что происходит с экономикой в целом и получается ли регулировать цены в стране.

Опросы показывают, что россияне считают инфляцию в стране очень высокой. Например, в марте 2018 года, по данным Центробанка, большинство населения считало, что инфляция в России составляет 9,2%. По официальной информации, этот показатель составлял 2,35%. В Центробанке считают, что так происходит из-за того, что мы просто привыкли жить в стране с высокой инфляцией.

Кто еще считает инфляцию в России

Кроме Росстата изменение цен в отечественных магазинах считают еще несколько организаций.

X5 Retail Group совместно с Росстатом рассчитывает индекс «Пятерочки», основываясь на ценах на продукты в своей торговой сети. Компания отслеживает цены только на 33 товара, входящих в минимальный набор Росстата. Индекс «Пятерочки» практически совпадает с официальной инфляцией.

Соотношение индекса «Пятерочки» и данных Росстата. Источник: X5 Retail Group

Исследовательский холдинг «Ромир» ежемесячно публикует индекс-дефлятор. Социологи опрашивают около 40 тысяч человек в 220 городах России. В потребительскую корзину «Ромира» входит 156 товаров, а также услуги ЖКХ.

Чаще всего данные «Ромира» и Росстата расходятся: например, по расчетам «Ромира», инфляция за 2021 год составила 18%. Росстат же зафиксировал вдвое меньший рост цен — 8,9%.

Ученые Массачусетского технологического института и Гарвардского университета в 2008 году запустили проект «Миллиард цен». Исследователи ежедневно собирают цены на товары в интернет-магазинах 70 стран, в том числе и в России, чтобы отслеживать инфляцию.

До 2016 года индекс инфляции «Миллиарда цен» публиковался в открытом доступе и совпадал с данными Росстата. Сейчас авторы проекта предоставляют информацию только за деньги.

Верить ли официальным данным

В 2017 году Центр макроэкономических исследований Сбербанка выпустил доклад, посвященный методам, которые использует Росстат для расчета инфляции. Авторы признали, что в целом статистики придерживаются международных стандартов, но есть и недостатки.

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

Немного финансовой математики: расчёт инфляции и процентов

Время на прочтение
18 мин

Количество просмотров 9.6K

Недавно мне пришлось проверить расчёты, которые выполняют коммунальщики моего города. Возник спорный вопрос, разрешить который можно только лишь проведя корректные расчёты. Забегая вперёд, скажу, что коммунальщики считают неправильно. Поэтому здесь мы рассмотрим, как правильно начислять инфляционные затраты и 3% годовых на долг по обязательствам, согласно ГК Украины.

Первая часть описывает расчёт инфляционных затрат, это специфично для Украины.
Вторая (большая) часть будет посвящена вопросу расчёта 3% годовых. Она также применима и к РФ, РБ и РК, но в этих странах ставка не является фиксированной, а зависит от ставки рефинансирования ЦБ. Остальные страны не смотрел.

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

image alt

Сначала теория, в конце немного кода.

Всё это под катом.

Итак, мне в руки попал документ от коммунальщиков «Ведомость начисления инфляционных затрат и 3% годовых». Мной он был проверен, и я выяснил, что он рассчитан по неверному алгоритму и представляет интерес, поскольку он должен реализовывать требования статьи ГК Украины.

Что надо считать, написано в ГК Украины:

Статья 625 Гражданского кодекса Украины. «Ответственность за нарушение денежного обязательства»
2. Должник, который просрочил выполнение денежного обязательства, по требованию кредитора обязан оплатить сумму долга с учётом установленного индекса инфляции за всё время просрочки, а также 3% годовых от просроченной суммы…

На основании цифр долга коммунальщики рассчитали инфляционные затраты и 3% годовых.

Инфляционные затраты

Далее я буду говорить об алгоритме расчёта, а не о конкретных цифрах.

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

Индекс инфляции (ИИ), или Индекс потребительских цен (ИПЦ), Consumer Price Index (CPI) — один из видов индексов цен, созданный для измерения среднего уровня цен на товары и услуги (потребительской корзины) за определённый период в экономике.

ИИ — это показатель, характеризующий динамику общего уровня цен на товары и услуги, которые приобретает население для непроизводственного потребления. Это индекс прироста, который показывает, на сколько процентов в среднем выросли цены за рассматриваемый период.

В Украине ИИ и ИПЦ являются синонимами

Поскольку индекс цен — это цепной индекс, то для периодов, следующих друг за другом, он рассчитывается путём перемножения показателей, например, 101% * 102% = (1.01 * 1.02) * 100% = 103.02%.

ИИ исчисляется Госкомстатом Украины и публикуется в официальных периодических изданиях. Эти показатели могут использоваться для проведения перерасчета денежных сумм.
Как считают коммунальщики?

Часть документа расчётов коммунальщиков

Последняя дата расчёта — 7 декабря 2016 года.

Посмотрим, как коммунальщики получили коэффициенты инфляционных затрат?

Невооружённым взглядом видно, что в третьей (и пятой колонке) вместо целой части 1 должна быть целая часть 0. Как же они получили дробную часть?

Сентябрь 2016. Дробная часть 0.028. Срок оплаты за сентябрь — 20 октября 2016. Дробная часть соответствует индексу инфляции, опубликованному Госкомстатом, за октябрь 2016 — 102.8%

Август 2016. Дробная часть 0.0465. Срок оплаты за август — 20 сентября 2016. Дробная часть соответствует индексу инфляции за сентябрь умноженному на ИИ за октябрь: 101.8% * 102.8% = 104.65%, или в долях, 1.018 * 1.028 = 1,046504. Коммунальщики округляют до 1.0465 и печатают это число, хотя единицу надо бы отнять, поскольку в следующей колонке они печатают только сумму инфляционных затрат, а не наращенную сумму.

Июль 2016 и ранее. Я провёл эти расчёты и восстановил алгоритм. Коммунальщики перемножают индексы инфляции, начиная с месяца, следующего за месяцем предоставления услуг (месяц срока оплаты), и заканчивая октябрём 2016.

Точка начала верна лишь частично. Как я покажу дальше, в общем случае начинать расчёт нужно действительно с этого месяца, но в нашем конкретном случае первый месяц надо пропускать (приравнивать ИИ к 100%).

Точка окончания перемножения. Поскольку последний день расчёта в декабре, и заканчивать нужно декабрём, это в общем случае. Как я покажу дальше, в этом конкретном случае декабрь тоже нужно пропускать (тоже приравнивать ИИ к 100%). Да и на 7 декабря ИИ за декабрь ещё не успели опубликовать.

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

Теперь посмотрим, как надо считать индекс инфляции. Как надо — описано в Информационном письме Высшего хозяйственного суда Украины № 01-06/928/2012 от 17.07.2012 [6].

Я приведу часть абзаца:

Сумма долга, которая должна быть уплачена с 1 по 15 день месяца, индексируется с учётом этого месяца, а если сумма долга должна быть уплачена с 16 по 31 день месяца, расчёт начинается со следующего месяца.

Аналогично, если погашение задолженности произведено с 1 по 15 день месяца, инфляционные затраты рассчитываются без учёта этого месяца, а если с 16 по 31 день месяца, то инфляционные затраты рассчитываются с учётом этого месяца.

В нашем случае срок оплаты — 20 число месяца, следующего за месяцем предоставления услуг, т.е. для предоставления услуг в сентябре, дата начала расчётов — 21 октября 2016, а конечный срок — 7 декабря 2016 года.

Т.е. правильно считать так: за предоставление услуг в сентябре 2016 считать инфляцию за три месяца (пройти курсором или циклом), с октября по декабрь, но в первом и последнем месяце ИИ принять равным 1 (100%), и учесть только ноябрь.

За ноябрь 2016 ИИ составил 101.8%, т.е. коэффициент должен быть 0.0180, а не 0.0280. Про ведущую единицу я написал раньше.

3% годовых

Посмотрим, как коммунальщики получили коэффициенты и суммы начисления 3% годовых? Это пятая колонка в таблице на рисунке выше.

Как я писал раньше, ведущей единицы быть не должно, там должен быть 0. Смотрим на дробную часть, и замечаем, что она как-то подозрительно круглая — каждый предшествующий месяц больше текущего на 0.0025.

Путём нехитрых подсчётов можно определить, что коммунальщики, не мудрствуя лукаво, разделили 3% на 12 месяцев, получили 0.0025, или 0.25% в месяц, и начисляют этот процент за каждый полный и неполный месяц просрочки. Да, если смотреть на октябрь 2016, срок оплаты по которому наступил 21 ноября, а расчёты были сделаны 7 декабря, то и за неполный месяц они насчитали те-же 0.25%.

Подход восхищает брутальной прямолинейностью, но, как я покажу дальше, финансовая математика такого алгоритма не знает.

Законодательство Украины и финансовая математика не дают однозначного ответа на вопрос, как начислять 3% годовых? Мной было разыскано несколько книг по этому вопросу, но книги древние, начиная с 2002 года. Поэтому алгоритмы из книг будут дополнены тем что удалось нагуглить из более современных и западных статей. [1] была переиздана в 2007 году, и более свежих русскоязычных книг разыскать не удалось. Возможно потому, что финансовая математика, как наука, зародилась очень давно, задолго до появления компьютеров, такие понятия как «кредит» и «проценты по кредиту» зародились лет несколько сотен лет назад. И алгоритмы с 2002 года изменились несильно.

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

То, что написано далее, относится к конкретному случаю начисления 3% годовых на задолженность, но может быть обобщено и на расчёт процентов по иным кредитным отношениям, если проценты начисляются по схеме простых процентов, а не сложных.

Согласно ст. 625 ГК Украины начислять нужно 3% в год по схеме простых процентов. Для вычисления суммы процентов сумму задолженности (или тело кредита, в общем случае) нужно умножать на нормированную годовую процентную ставку 3% и умножать на долю года (длительность в годах), которую составила просрочка. Эта доля может быть и больше 1, если просрочка составила больше года.

Длительность просрочки выражается в днях. В более общем случае, и срок кредита может быть выражен в днях (ситуация, когда срок кредита выражен в месяцах и годах здесь не рассматривается). А годовая ставка 3% — это нормированная ставка простых процентов за год. Поэтому нужно уметь приводить длительность просрочки (кредита) в днях к длительности в годах. Это нетривиальная задача, поскольку продолжительность года зависит от его номера.

Продолжительность в днях — однозначно определённая мера длительности календарных промежутков, в отличие от продолжительности в годах. Определение последней требует уточнения в виде правила преобразования продолжительности в днях в продолжительность в годах. Ряд стандартных способов преобразования продолжительности в днях в продолжительность в годах основывается на делении количества дней на так называемый «годовой дивизор». Наиболее типичные значения годового дивизора — 360 и 365 дней. В простейших случаях дивизор является постоянным и не зависящим от промежутка числом. В качестве делимого (числитель дроби) всегда выступает число дней в периоде.
И нужно определиться с порядком исчисления сроков в днях. Рассмотрим два надуманных примера:

  1. Клиент получает краткосрочный кредит в банке с 06.12.2018 по 07.12.2018. Каков срок договора и за сколько дней надо начислять проценты? Очевидно — 1 день.
  2. Абонент заранее заказывает услугу у оператора связи, с периодом действия в будущем с 06.12.2018 по 07.12.2018. Каков строк предоставления услуги и за сколько дней надо брать абонентскую плату за услугу? Очевидно, 2 дня.

В чём же разница?

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

  • [06.12.2018 00.00.00, 07.12.2018 00.00.00) — здесь правая граница интервала не входит в интервал,
  • [06.12.2018 00.00.00, 06.12.2018 23.59.59] — здесь правая граница интервала входит в интервал.

В первом случае (1), когда временной интервал дается не явно, а в форме промежутка между датами, обычно вычисляют точное число дней, включая первый или последний день, но не оба. [4] говорит то же самое иными словами: «День выдачи ссуды и день погашения считаются за один день».

Такой способ определяет так называемое точное время. Его также можно легко определить, если обе даты относятся к одному и тому же году и имеется в наличии календарь, показывающий порядковый номер каждого дня года. Тогда достаточно из порядкового номера поздней даты вычесть порядковый номер ранней даты и результат даст продолжительность периода. В Oracle Database можно просто вычитать даты (тип DATE), усечённые до дня (с отброшенным временем), одну из другой, разность — целое число дней.

Во втором случае (2) речь идёт о сутках, поэтому считаем двое суток.

Далее я исхожу из того, что число дней было вами уже определено, например, в случае с коммунальщиками, когда срок оплаты наступает 20 сентября (т.е. это последний допустимый день оплаты), а оплачено было 21 сентября, т.е., очевидно, что просрочку надо принять равной 1 дню. В случае, если вы сталкиваетесь с указанием интервала не включая левую границу — просто подвиньте левую границу на один день вправо.

Как будем считать число дней и числитель дроби? Есть точный подсчёт и приблизительный подсчёт.

Точный подсчёт дней

Русскоязычная практика

Текст далее основан на [1].

Выбор в качестве делителя точного числа дней в периоде, а в качестве знаменателя — годового дивизора 360 или 365 дают два наиболее распространённых правила:

Правило (R1) ACT/365. Для этого правила продолжительность в днях делится на число 365. Замечу, что продолжительность високосного года будет равна 366/365= 1,00274, что больше единицы. Погрешность правила ACT/365 будет тем больше, чем больше високосных лет в периоде. Поэтому и величина 3% годовых, начисленных по этому правилу, будет больше 3%.

Правило (R2) ACT/360. Это так называемое, «Банковское правило», согласно которому, продолжительность в днях делится на 360. Это правило ещё в большей степени увеличивает годовую длину промежутков. Для невисокосного года его длина составит 365/360=1,01389, а для високосного 366/360=1,01667. Естественно, чем больше период, тем больше степень «удлинения» в годах. Это правило чаще всего используется в расчётах, касающихся денежного рынка, т.е. рынка краткосрочных долговых обязательств, таких, как депозиты в банках, векселя, коммерческие бумаги, депозитные сертификаты и пр. Величина 3% годовых за год составит ещё больше, чем при использовании предыдущего правила.

В случае, если годовой дивизор принят равным 360 дням, проценты, полученные с использованием такого дивизора называют обычными, или коммерческими. В случае, если дивизор принят равным 365 или, как я покажу далее, 366 дням, проценты называются точными.

Очевидно, что обычные проценты больше, чем точные.

Хотя первое правило является более точным, чем второе, оба они недостаточно точны.

Для устранения влияния високосных лет на результат, есть два другие правила.

Правило (R3) ACT/365, Япония. Расчёт выполняется так же, как и для правила ACT/365, но при подсчёте длительности интервала (числитель дроби) високосные даты исключаются. Годовой дивизор остаётся неизменным.

Согласно Вики:

Во многих европейских странах вплоть до XVIII века 29 февраля считалось как бы несуществующим днём, датой, не имеющей юридического статуса. Часто в этот день не заключались сделки, не производились выплаты, не давали в долг и т. п. — из-за того, что возникали сложности с формальной стороной вопроса и улаживанием дел в суде.

Другой способ связан с фактическим изменением дивизора.

Правило (R4) ACT/ACT основное. Разобьём искомый период на три части:

  • первая часть, от начальной даты до конца года, в котором находится начальная дата,
  • третья часть — от начала года, в котором находится конечная дата, до конечной даты,
  • вторая часть — 0 или несколько полных календарных лет между первой и третьей частями.

Длительности первой и третьей части получают путём деления количества дней на годовой дивизор 365 или 366, в зависимости от того, високосные ли это годы? Длительность второго периода состоит из целого числа полных календарных лет по определению, не зависимо от того, високосные они или нет. Длительность в годах всего периода получают суммированием длительностей трёх частей, представленных тремя числами, из которых второе — целое, а первое и третье — дробные.

Правило (R5) ACT/ACT «короткая» модификация, для периодов меньше года. В этом случае длительность в днях делится на годовой дивизор 365 или 366 в зависимости от того, есть ли дата 29 февраля в искомом периоде? Особенностью короткого правила ACT/ACT является то, что если промежуток не укладывается в календарный год (его концы принадлежат соседним годам), то применение основного и короткого правила приведёт к разным результатам.

Западная практика

В западной практике правила описаны по-иному. Зачастую тем-же русскоязычным правилам даны иные названия, и, причём, не по одному.

Информации далее основана на [2]. Это Вики, я проверил все источники и использовал другую нагугленную информацию: в правилах с точным числом дней — всё верно, но в правилах с приближённым числом дней есть и иные трактовки правил, причём зачастую они изменяются со временем, поэтому для применения на практике правил с приближённым числом дней этой статьи недостаточно.

Правило (W1) Actual/Actual ISDA. Это правило даёт такой-же результат, как и (R4) «ACT/ACT основное», но формулируется по-другому: интервал разбивается на високосные и невисокосные годы, независимо от того, полные они или неполные, далее, сумма дней, попадающая в високосные годы, делится на 365, а сумма дней в невисокосных годах делится на 366, два числа суммируются.

Иные названия правила в западной практике: Actual/Actual, Act/Act, Actual/365, Act/365. Да, последнее название такое-же, как и у правила (R1), хотя суть правила иная.

Правило (W2) Actual/365 Fixed. Это правило в точности повторяет правило (R1) ACT/365 — количество дней делится на 365.

Иные названия правила в западной практике: Act/365 Fixed, A/365 Fixed, A/365F, English.

Правило (W3) Actual/360. Это правило повторяет (R2) ACT/360 — точное количество дней делится на 360.

Правило (W4) Actual/364. Количество дней делится на 364. Аналога в русскоязычной практике не имеет.

Правило (W5) Actual/365L. Состоит из двух подправил:

  1. Для годовых выплат. Если дата 29 февраля внутри периода, то количество дней в периоде делится на годовой дивизор 366, если нет — на 365. В этом смысле, оно совпадает с правилом (R5) ACT/ACT «короткая модификация».
  2. Если периодичность выплат отличается от годовой. Если конечная дата находится в високосном году (и не обязательно равна 29 февраля), то годовой дивизор равен 366, иначе — 365. В русскоязычной практике аналога не имеет.

Иное название — ISMA-Year.

Правило (W6) Actual/Actual AFB. Состоит из двух подправил:

  1. Основное, для периодов меньше года: Если дата 29 февраля внутри периода, то количество дней в периоде делится на годовой дивизор 366, если нет — на 365. В этом смысле, оно также совпадает с правилом (R5) ACT/ACT «короткая модификация».
  2. Расширенное, для периодов больше года: отсчитывается целое число полных лет назад от конечной даты к начальной. Для остатка меньше года применяется основное подправило. Количество полных лет и доля года по основному подправилу суммируются.

Есть нюансы, связанные с отсчётом лет назад, если отсчёт вёлся от 28 февраля, и через целое количество полных лет назад год оказался високосным. В этом случае дату n лет назад следует принять 29 февраля. Добавлю, что вопрос вызывает также случай, если отсчёт вёлся с 29 февраля, и количество полных лет назад не кратно четырём, и соответственно предыдущий год оказался не високосный. Я не стал углубляться в детали здесь. Но вы можете обратиться к ссылкам с [2].

И «вишенка на торте», Правило (W7) 1/1. Количество дней делится на годовой дивизор 365.25. Используется для вычислений, связанных с инфляцией.

Приближённый подсчёт дней

Перечисленные выше правила базировались на точной продолжительности в днях календарных периодов. Однако, иногда встречаются схемы, основанные на так называемом упрощённом, или приближённом, подсчёте дней. Идея этих схем состоит в «выравнивании» продолжительности всех месяцев до 30 дней. Таким образом, год будет состоять из 12 месяцев по 30 дней, т.е. из 360 дней. Поэтому годовой дивизор (знаменатель дроби) для этих правил всегда будет равен 360, а числитель вычисляется специальным образом.

Поскольку точное число дней ссуды в большинстве случаев, но разумеется, не всегда, больше приближенного (в чем легко убедиться, определив среднее за год число дней в месяце, которое равно 30,44), то метод начисления процентов с точным числом дней ссуды обычно дает больший рост, чем с приближенным. [4]

Простейший вариант этого правила, так называемое Основное правило 30/360, описывается следующим образом (далее информация по книге [1] — русскоязычная практика):

Основное правило 30/360. Приближённое число дней между датами равно

360 * (y2 – y1) + 30 * (m2 – m1) + (d2 – d1),

где y, m, d — год, месяц и день во второй и первой датах.

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

Правило применяется с обязательным указанием модификации, которая указывает, как обрабатывать последние дни месяцев:

Русскоязычная практика

Приведено по [1].

Правило (R6) 30/360 ISDA. Если d1 = 31, то d1’ = 30, иначе d1’=d1. Если d2=31 и d1’=30, то d2’=30, иначе d2’=d2.

Правило (R7) 30E/360. Если d1 = 31, то d1’ = 30, иначе d1’=d1. Если d2=31, то d2’=30, иначе d2’=d2.

Это правило есть вариант правила 30/360 ISDA, используемое, в основном, в Европе, отсюда метка “E” в названии правила. Оно отличается от правила 30/360 ISDA лишь в том случае, когда вторая дата есть также 31 число. Европейский вариант всегда преобразует его в 30 число независимо от первой даты.

Правило (R8) 30/360 PSA. Если d1 = 31 или d1 — последний день февраля, то d1’ = 30, иначе d1’=d1. Если d2=31 и d1’=30, то d2’=30, иначе d2’=d2.

В описании правила 30/360 SIA в [1] скорее всего ошибка, поэтому здесь не привожу.

Западная практика

Дано по [2].

Правило (W8) 30/360 Bond Basis. То-же, что и (R6) 30/360 ISDA. Иное название: 30A/360.

Правило (W9) 30E/360. То-же что и (R7) 30E/360. Иные названия: 30/360 ICMA, 30S/360, Eurobond basis (ISDA 2006), Special German.

Правило (W10) 30E/360 ISDA. Если d1 — последний день месяца, то d1’=30. Если d2 — последний день НЕ февраля, то d2’=30.

Иные названия: 30E/360 ISDA, Eurobond basis (ISDA 2000), German.

Правило (W11) 30/360 SIA. Если d1 — последний день февраля и d2 — последний день февраля, тогда d2’=30. Если d1 = 31 или последний день февраля, тогда d1’ = 30, иначе d1’ = d1. Если d1’=30 и d2 = 31, то d2’ = 30, иначе d2’ = d1.

Правила (R4) ACT/ACT, (W1) Actual/Actual ISDA, (W2) Actual/365 Fixed называются также «Английской практикой».

Правила (R2) ACT/360 и (W3) Actual/360 называются также «Французской практикой».

Правило (R7) 30E/360, (W9) 30E/360 и (W10) 30E/360 ISDA называются также «Германской практикой» или «Немецкой практикой».

Итак, учитывая точные и обычные проценты, а также точное и приближённое число дней для начисления процентов, получим четыре метода вычисления простых процентов (названия правил указаны по русскоязычной практике):

  1. Обычные проценты с точным числом дней (ACT/360 — банковское правило),
  2. Точные проценты с точным числом дней (ACT/365, ACT/ACT),
  3. Обычные проценты с приближённым числом дней (30/360),
  4. Точные проценты с приближённым числом дней.

Наиболее часто применяется первый метод, называемый банковским правилом, реже — второй и третий, и почти никогда — четвертый [1]. А [4] говорит: «…вариант расчета с точными процентами и приближенным числом дней ссуды лишен смысла и не применяется.»

Приведённые выше вычисления приближённой продолжительности периодов в долях года показывают нетривиальность и многообразие применяемых правил. Их применение (а также происхождение) зависит от страны, валюты, типа финансового инструмента, профессиональной ассоциации, соглашений. [1]

ВЫВОД:

Как же считать 3% в моём случае с коммунальщиками в Украине?

Анализ судебной практики применения ст. 625 ГК Украины говорит, что обычно применяется метод (R1) ACT/365 [3], но сформулировано это не вполне чётко. Думаю, всё же надо применять (R4) ACT/ACT, и вот почему: если начислить 3% за полный високосный год по методу ACT/365, то сумма процентов будет равной 3,008219%, что при долге (или величине тела кредита) в 1 миллион денежных единиц даст превышение в 82,19 д.е. над 3%, которые предусматриваются годовой нормированной процентной ставкой по Закону. Это станет особенно важным при прогрессивном начислении процентов.

Буду признателен за комментарии, особенно от банковских работников.

Использованные источники

1) Бочаров, П. П., Касимов, Ю. Ф. Финансовая математика. Москва: Гардарики, 2002
2) Day count convention, en.wikipedia.org/wiki/Day_count_convention
3) Анализ практики применения ст. 625 Гражданского кодекса Украины в гражданском судопроизводстве, zib.com.ua/ua/74602-analiz_praktiki_zastosuvannya_st_625_civilnogo_kodeksu_ukrai.html
4) Четыркин Е.М. Финансовая математика. Москва: Дело, 2005
5) Day Count Conventions and Accrual Factors, docs.fincad.com/support/developerfunc/mathref/Daycount.htm
6) Информационное письмо Высшего хозяйственного суда Украины № 01-06/928/2012 от 17.07.2012, zakon.rada.gov.ua/laws/show/v_928600-12

А теперь немного кода на Oracle Database:

Вот пакет, который я сделал именно для моего конкретного случая — он рассчитывает инфляционные затраты и 3% годовых для Украины.

В Oracle Database нет агрегатной функции, которая бы перемножала значения инфляции. Поэтому я использую суммирование логарифмов.

Скрытый текст

CREATE OR REPLACE TYPE DEBT_OVERHEAD_T as object (ID number, DEBT_DATE date, OVERHEAD_AMOUNT number);
CREATE OR REPLACE TYPE DEBT_WITH_INF_AMOUNT_T as object (ID number, DEBT_DATE date, DEBT_AMOUNT number, PAYMENT_DATE date, INF_MONTH date, INF_RATE number, SKIP_INFLATION char (1), INF_RATE_ACCUMULATED number
                                            , INF_COEF_ACCUMULATED number, INF_AMOUNT_ACCUMULATED number, INF_AMOUNT_MONTH number);
CREATE OR REPLACE TYPE DEBT_WITH_INF_T as object (ID number, DEBT_DATE date, DEBT_AMOUNT number, PAYMENT_DATE date, INF_MONTH date, INF_RATE number, SKIP_INFLATION char (1));
CREATE OR REPLACE TYPE DEBT_WITH_PCT_AMOUNT_T as object (ID number, DEBT_DATE date, DEBT_AMOUNT number, PAYMENT_DATE date, PCT_YEAR number, PCT_YEAR_DAYS number, PCT_YEAR_PCT_PER_DAY number, PCT_YEAR_BEGIN_DATE date
                                            , PCT_YEAR_END_DATE date, PCT_YEAR_DAYS_CALC number, PCT_YEAR_PCT_PER_YEAR number, PCT_AMOUNT_PER_YEAR number);

CREATE OR REPLACE TYPE DEBT_OVERHEAD_LIST_T as table of DEBT_OVERHEAD_T;
CREATE OR REPLACE TYPE DEBT_WITH_INF_AMOUNT_LIST_T as table of DEBT_WITH_INF_AMOUNT_T;
CREATE OR REPLACE TYPE DEBT_WITH_INF_LIST_T as table of DEBT_WITH_INF_T;
CREATE OR REPLACE TYPE DEBT_WITH_PCT_AMOUNT_LIST_T as table of DEBT_WITH_PCT_AMOUNT_T;

CREATE OR REPLACE PACKAGE CALC_OVERHEADS_P is

function GET_DEBT_WITH_INF (p_debt_date_begin date, p_debt_date_end date, p_last_collection_date date) return DEBT_WITH_INF_LIST_T;
function GET_DEBT_WITH_INF_AMOUNT (p_debt_date_begin date, p_debt_date_end date, p_last_collection_date date) return DEBT_WITH_INF_AMOUNT_LIST_T;
function GET_DEBT_WITH_INF_AMOUNT_TOTAL (p_debt_date_begin date, p_debt_date_end date, p_last_collection_date date) return DEBT_OVERHEAD_LIST_T;
function GET_DEBT_WITH_PCT_AMOUNT (p_debt_date_begin date, p_debt_date_end date, p_last_collection_date date) return DEBT_WITH_PCT_AMOUNT_LIST_T; 
function GET_DEBT_WITH_PCT_AMOUNT_TOTAL (p_debt_date_begin date, p_debt_date_end date, p_last_collection_date date)  return DEBT_OVERHEAD_LIST_T;

end;
/

CREATE OR REPLACE PACKAGE BODY CALC_OVERHEADS_P is

function GET_DEBT_WITH_INF (p_debt_date_begin date, p_debt_date_end date, p_last_collection_date date) return DEBT_WITH_INF_LIST_T is
    ret_value DEBT_WITH_INF_LIST_T;
begin

    with
      T1 as (select a.ID, a.DEBT_DATE, a.DEBT_AMOUNT, a.PAYMENT_DATE, b.INF_MONTH, c.AVAL as INF_RATE
             from DEBTS a
             cross apply (select add_months (trunc (a.PAYMENT_DATE, 'month'), rownum - 1) as INF_MONTH from dual connect by level <= months_between (trunc (p_last_collection_date, 'month'), trunc (a.PAYMENT_DATE, 'month')) + 1) b
             left join INFLATION c on c.ADATE = b.INF_MONTH and c.TYP = 'M'
             where a.DEBT_DATE between p_debt_date_begin and p_debt_date_end
            )
    , T2 as (select ID, DEBT_DATE, DEBT_AMOUNT, PAYMENT_DATE, INF_MONTH, INF_RATE
                  , case when trunc (PAYMENT_DATE, 'month') = INF_MONTH and extract (day from PAYMENT_DATE) between 16 and 31 then 'Y'
                         when trunc (p_last_collection_date, 'month') = INF_MONTH and extract (day from p_last_collection_date) between 1 and 15 then 'Y'
                    end as SKIP_INFLATION
             from T1)
    select DEBT_WITH_INF_T (ID, DEBT_DATE, DEBT_AMOUNT, PAYMENT_DATE, INF_MONTH, INF_RATE, SKIP_INFLATION)
    bulk collect into ret_value
    from T2;

    return ret_value;

end;

function GET_DEBT_WITH_INF_AMOUNT (p_debt_date_begin date, p_debt_date_end date, p_last_collection_date date) return DEBT_WITH_INF_AMOUNT_LIST_T is
    ret_value DEBT_WITH_INF_AMOUNT_LIST_T;
begin

    with 
      T1 as (select ID, DEBT_DATE, DEBT_AMOUNT, PAYMENT_DATE, INF_MONTH, INF_RATE, SKIP_INFLATION
                  , exp (sum (ln (case when SKIP_INFLATION = 'Y' or INF_RATE is null then 1 else INF_RATE / 100 end)) over (partition by ID order by INF_MONTH rows between unbounded preceding and current row)) * 100 as INF_RATE_ACCUMULATED
             from table (CALC_OVERHEADS_P.GET_DEBT_WITH_INF (p_debt_date_begin, p_debt_date_end, p_last_collection_date)))
    , T2 as (select ID, DEBT_DATE, DEBT_AMOUNT, PAYMENT_DATE, INF_MONTH, INF_RATE, SKIP_INFLATION, INF_RATE_ACCUMULATED
                  , (INF_RATE_ACCUMULATED - 100) / 100 as INF_COEF_ACCUMULATED
                  , round (((INF_RATE_ACCUMULATED - 100) / 100) * DEBT_AMOUNT, 2) as INF_AMOUNT_ACCUMULATED 
             from T1)
    select DEBT_WITH_INF_AMOUNT_T (ID, DEBT_DATE, DEBT_AMOUNT, PAYMENT_DATE, INF_MONTH, INF_RATE, SKIP_INFLATION, INF_RATE_ACCUMULATED, INF_COEF_ACCUMULATED, INF_AMOUNT_ACCUMULATED
         , INF_AMOUNT_ACCUMULATED - lag (INF_AMOUNT_ACCUMULATED, 1, 0) over (partition by ID order by INF_MONTH))
    bulk collect into ret_value
    from T2;
    
    return ret_value;

end;

function GET_DEBT_WITH_INF_AMOUNT_TOTAL (p_debt_date_begin date, p_debt_date_end date, p_last_collection_date date) return DEBT_OVERHEAD_LIST_T is
    ret_value DEBT_OVERHEAD_LIST_T;
begin

    with
      T1 as (select ID
                  , DEBT_DATE
                  , round ((exp (sum (ln (case when SKIP_INFLATION = 'Y' then 1 else INF_RATE / 100 end))) - 1) * DEBT_AMOUNT, 2) 
                                  as INF_AMOUNT  
             from table (CALC_OVERHEADS_P.GET_DEBT_WITH_INF (p_debt_date_begin, p_debt_date_end, p_last_collection_date))
             group by ID, DEBT_DATE, DEBT_AMOUNT)
    select DEBT_OVERHEAD_T (ID, DEBT_DATE, INF_AMOUNT)
    bulk collect into ret_value
    from T1;
    
    return ret_value;
end;

function GET_DEBT_WITH_PCT_AMOUNT (p_debt_date_begin date, p_debt_date_end date, p_last_collection_date date) return DEBT_WITH_PCT_AMOUNT_LIST_T is 
    ret_value DEBT_WITH_PCT_AMOUNT_LIST_T;
begin
    with 
      T1 as (select *
             from DEBTS a
             cross apply (select extract (year from PAYMENT_DATE) + level - 1 as PCT_YEAR from dual connect by level <= extract (year from p_last_collection_date) - extract (year from PAYMENT_DATE) + 1)
             where DEBT_DATE between p_debt_date_begin and p_debt_date_end
             )
    , T2 as (select ID, DEBT_DATE, DEBT_AMOUNT, PAYMENT_DATE, PCT_YEAR, to_date ('31.12.'||PCT_YEAR, 'DD.MM.YYYY') - to_date ('01.01.'||PCT_YEAR, 'DD.MM.YYYY') + 1 as PCT_YEAR_DAYS from T1)
    , T3 as (select ID, DEBT_DATE, DEBT_AMOUNT, PAYMENT_DATE, PCT_YEAR, PCT_YEAR_DAYS
                          , 0.03 / PCT_YEAR_DAYS as PCT_YEAR_PCT_PER_DAY
             from T2)
    , T4 as (select ID, DEBT_DATE, DEBT_AMOUNT, PAYMENT_DATE, PCT_YEAR, PCT_YEAR_DAYS, PCT_YEAR_PCT_PER_DAY
                  , greatest (PAYMENT_DATE + 1, to_date ('01.01.'||PCT_YEAR, 'DD-MM-YYYY')) as PCT_YEAR_BEGIN_DATE
                  , least (to_date ('31.12.'||PCT_YEAR, 'DD-MM-YYYY'), p_last_collection_date)   as PCT_YEAR_END_DATE
             from T3)
    , T5 as (select ID, DEBT_DATE, DEBT_AMOUNT, PAYMENT_DATE, PCT_YEAR, PCT_YEAR_DAYS, PCT_YEAR_PCT_PER_DAY, PCT_YEAR_BEGIN_DATE, PCT_YEAR_END_DATE
                  , PCT_YEAR_END_DATE - PCT_YEAR_BEGIN_DATE + 1 as PCT_YEAR_DAYS_CALC
                  , (PCT_YEAR_END_DATE - PCT_YEAR_BEGIN_DATE + 1) * PCT_YEAR_PCT_PER_DAY as PCT_YEAR_PCT_PER_YEAR
                  , round ((PCT_YEAR_END_DATE - PCT_YEAR_BEGIN_DATE + 1) * PCT_YEAR_PCT_PER_DAY * DEBT_AMOUNT, 2) as PCT_AMOUNT_PER_YEAR
             from T4)
    select DEBT_WITH_PCT_AMOUNT_T (ID, DEBT_DATE, DEBT_AMOUNT, PAYMENT_DATE, PCT_YEAR, PCT_YEAR_DAYS, PCT_YEAR_PCT_PER_DAY, PCT_YEAR_BEGIN_DATE, PCT_YEAR_END_DATE, PCT_YEAR_DAYS_CALC, PCT_YEAR_PCT_PER_YEAR, PCT_AMOUNT_PER_YEAR)
    bulk collect into ret_value
    from T5;
    
    return ret_value;

end;

function GET_DEBT_WITH_PCT_AMOUNT_TOTAL (p_debt_date_begin date, p_debt_date_end date, p_last_collection_date date)  return DEBT_OVERHEAD_LIST_T is
    ret_value DEBT_OVERHEAD_LIST_T;
begin
    
    select DEBT_OVERHEAD_T (ID, DEBT_DATE, sum (PCT_AMOUNT_PER_YEAR))
    bulk collect into ret_value
    from table (CALC_OVERHEADS_P.GET_DEBT_WITH_PCT_AMOUNT (p_debt_date_begin, p_debt_date_end, p_last_collection_date))
    group by ID, DEBT_DATE; 

    return ret_value;

end;

end;

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как найти ключевые слова в текст описании
  • Как найти вспомогательные материалы
  • Как найти мою вики
  • Как найти приращение аргумента дельта х
  • Raft штурвал как найти

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии