Recientemente, tuve que verificar los cálculos realizados por los servicios públicos de mi ciudad. Hubo un tema controvertido, que solo puede resolverse realizando cálculos correctos. Mirando hacia el futuro, diré que los servicios públicos piensan mal. Por lo tanto, aquí consideraremos cómo calcular correctamente los costos de inflación y el 3% anual sobre la deuda por obligaciones, de acuerdo con el Código Civil de Ucrania.
La primera parte describe el cálculo de los costos de inflación, esto es específico de Ucrania.
La segunda parte (más grande) se dedicará a la cuestión del cálculo del 3% anual. También es aplicable a la Federación de Rusia, Bielorrusia y Kazajstán, pero en estos países la tasa no es fija, sino que depende de la tasa de refinanciación del Banco Central. El resto del país no se veía.
La segunda parte está muy cerca de calcular el interés en las transacciones de crédito ordinarias (préstamos, préstamos, préstamos, etc.).
Primero una teoría, al final un poco de código.
Todo esto bajo el corte.
Entonces, llegué a manos de un documento de los servicios públicos "Declaración de acumulación de costos de inflación y 3% anual". Lo revisé y descubrí que se calculó utilizando el algoritmo incorrecto y es de interés, ya que debe implementar los requisitos del artículo del Código Civil de Ucrania.
Lo que debe considerarse está escrito en el Código Civil de Ucrania:
Artículo 625 del Código Civil de Ucrania. "Responsabilidad por violación de una obligación monetaria"
2. Un deudor que haya retrasado el cumplimiento de una obligación monetaria, a solicitud del acreedor, estará obligado a pagar el monto de la deuda teniendo en cuenta el índice de inflación establecido para todo el período de demora, así como el 3% anual del monto vencido ...
Sobre la base de las cifras de la deuda, los servicios públicos calcularon los costos de inflación y el 3% anual.
Costos de inflación
Además, hablaré sobre el algoritmo de cálculo, y no sobre números específicos.
La inflación es un proceso caracterizado por una depreciación de la moneda, es decir, una disminución de su poder adquisitivo y un aumento general de los precios. Excluyendo la inflación, los resultados finales de los cálculos de flujo de efectivo son muy arbitrarios.
Índice de inflación (II) o Índice de precios al consumidor (IPC), Índice de precios al consumidor (IPC): uno de los tipos de índices de precios creados para medir el nivel de precios promedio de bienes y servicios (canasta de consumo) durante un cierto período en la economía.
La IA es un indicador que caracteriza la dinámica del nivel general de precios de los bienes y servicios que la población adquiere para el consumo no productivo. Este es el índice de crecimiento, que muestra cuánto porcentaje aumenta el precio promedio para el período bajo revisión.
En Ucrania, AI y CPI son sinónimos
Dado que el índice de precios es un índice de cadena, para los períodos que siguen uno tras otro, se calcula multiplicando los indicadores, por ejemplo, 101% * 102% = (1.01 * 1.02) * 100% = 103.02%.
La IA es calculada por el Comité Estatal de Estadística de Ucrania y publicada en publicaciones oficiales. Estas cifras clave se pueden utilizar para volver a calcular los importes en efectivo.
¿Qué piensan los trabajadores comunales?
La última fecha de liquidación es el 7 de diciembre de 2016.
Veamos cómo los trabajadores comunales obtuvieron tasas de inflación de costos.
Se puede ver a simple vista que en la tercera (y quinta columna), en lugar de la parte entera 1, debería haber la parte entera 0. ¿Cómo obtuvieron la parte fraccionaria?
Septiembre de 2016. Parte fraccional 0.028. El plazo de pago para septiembre es el 20 de octubre de 2016. La parte fraccionaria corresponde al índice de inflación publicado por el Comité Estatal de Estadísticas, para octubre de 2016 - 102.8%
Agosto de 2016. Parte fraccional 0.0465. El plazo de pago para agosto es el 20 de septiembre de 2016. La parte fraccionaria corresponde al índice de inflación de septiembre multiplicado por II para octubre: 101.8% * 102.8% = 104.65%, o en acciones, 1.018 * 1.028 = 1.046504. Las utilidades se redondean a 1.0465 y se imprime este número, aunque la unidad se debe quitar, ya que en la siguiente columna solo se imprime el monto de los costos de inflación, y no el monto acumulado.
Julio de 2016 y anteriores. Realicé estos cálculos y restauré el algoritmo. Los servicios públicos multiplican los índices de inflación, comenzando desde el mes siguiente al mes de la prestación de servicios (mes de la fecha de vencimiento), y terminando en octubre de 2016.
El punto de inicio es solo parcialmente cierto. Como mostraré más adelante, en el caso general, el cálculo realmente necesita comenzar a partir de este mes, pero en nuestro caso particular, se debe omitir el primer mes (equiparar AI al 100%).
El punto final de la multiplicación. Dado que el último día de cálculo es en diciembre y necesita finalizar diciembre, este suele ser el caso. Como mostraré más adelante, en este caso particular, diciembre también debe omitirse (también equiparar AI al 100%). Y el 7 de diciembre, las IA de diciembre no tuvieron tiempo de publicar.
¿Por qué noviembre no se tiene en cuenta en ninguna parte? Creo que se olvidaron de ingresarlo en el sistema.
Ahora veamos cómo calcular el índice de inflación. Según
sea necesario , se describe en la Carta informativa del Tribunal Económico Supremo de Ucrania Nº 01-06 / 928/2012 de fecha 17.07.2012 [6].
Daré parte del párrafo:
El monto de la deuda que debe pagarse de 1 a 15 días del mes se indexa teniendo en cuenta este mes, y si el monto de la deuda debe pagarse de 16 a 31 días del mes, el cálculo comienza a partir del mes siguiente.
Del mismo modo, si una deuda se ha pagado de 1 a 15 días de un mes, los costos de inflación se calculan sin tener en cuenta este mes, y si de 16 a 31 días de un mes, los costos de inflación se calculan teniendo en cuenta este mes.
En nuestro caso, el plazo de pago es el día 20 del mes siguiente al mes de la prestación de servicios, es decir, Para la prestación de servicios en septiembre, la fecha de inicio de los acuerdos es el 21 de octubre de 2016 y la fecha límite es el 7 de diciembre de 2016.
Es decir es correcto decir esto: para la prestación de servicios en septiembre de 2016, considere la inflación durante tres meses (pase el cursor o el ciclo), de octubre a diciembre, pero en el primer y último mes, tome AI igual a 1 (100%), y tenga en cuenta solo noviembre.
En noviembre de 2016, la IA ascendió a 101.8%, es decir el coeficiente debe ser 0.0180, no 0.0280. Escribí sobre la unidad principal antes.
3% anual
Veamos cómo los servicios comunales recibieron coeficientes y cantidades acumuladas del 3% anual. Esta es la quinta columna en la tabla de arriba.
Como escribí anteriormente, no debería haber una unidad principal, debería haber 0. Observamos la parte fraccionaria y notamos que de alguna manera es sospechosamente redonda: cada mes anterior es 0.0025 más que el mes actual.
Mediante cálculos simples, se puede determinar que los servicios públicos, sin más preámbulos, dividieron el 3% en 12 meses, recibieron 0.0025, o 0.25% por mes, y acumularon este porcentaje por cada mes de retraso completo e incompleto. Sí, si nos fijamos en octubre de 2016, la fecha límite de pago para el 21 de noviembre y los cálculos se realizaron el 7 de diciembre, durante un mes incompleto contaron el mismo 0.25%.
El enfoque admira la franqueza brutal, pero, como mostraré más adelante, las matemáticas financieras no conocen tal algoritmo.
La legislación de Ucrania y las matemáticas financieras no dan una respuesta clara a la pregunta de cómo cobrar un 3% anual. He buscado varios libros sobre este tema, pero los libros son antiguos y datan de 2002. Por lo tanto, los algoritmos de los libros se complementarán con el hecho de que fue posible buscar en Google artículos más modernos y occidentales. [1] fue reimpreso en 2007, y no se pudieron encontrar libros más recientes en ruso. Quizás porque las matemáticas financieras, como ciencia, se originaron hace mucho tiempo, mucho antes del advenimiento de las computadoras, surgieron conceptos como "crédito" e "interés en crédito" hace varios cientos de años. Y los algoritmos no han cambiado mucho desde 2002.
Pero la visión occidental del problema es diferente de la descrita en los libros en ruso. Citaré información primero de libros en ruso, y luego de artículos occidentales, indicando dónde coinciden.
Lo que se escribe a continuación se relaciona con el caso específico de acumular un 3% anual sobre los atrasos, pero también puede generalizarse al cálculo de intereses sobre otras relaciones crediticias si los intereses se acumulan de acuerdo con el interés simple en lugar del esquema de interés compuesto.
De acuerdo con el art. 625 El Código Civil de Ucrania debe acumular un 3% por año de acuerdo con el esquema de interés simple. Para calcular el monto de interés, el monto de la deuda (o el cuerpo del préstamo, en el caso general) debe multiplicarse por la tasa de interés anual normalizada del 3% y multiplicarse por la fracción del año (duración en años) a la que ascendió el retraso. Este porcentaje puede ser superior a 1 si el retraso es superior a un año.
La duración del retraso se expresa en días. En un caso más general, el plazo del préstamo
puede expresarse en días (la situación en la que el plazo del préstamo se expresa en meses y años no se considera aquí). Y la tasa anual del 3% es la tasa normalizada de interés simple para el año.
Por lo tanto, debe poder reducir la duración del retraso (crédito) en días a la duración en años. Esta no es una tarea trivial, ya que la duración del año depende de su número.La duración en días es una medida definida de manera única de la duración de las brechas de calendario, en oposición a la duración en años. La definición de este último requiere una aclaración en forma de una regla para convertir la duración en días en duración en años. Una serie de métodos estándar para convertir la duración en días en duración en años se basa en dividir el número de días por el denominado
"divisor anual" . Los valores más típicos del divisor anual son 360 y 365 días. En los casos más simples, el divisor es un número constante e independiente del intervalo. El número de días en un período siempre actúa como un dividendo (numerador de una fracción).
Y debe decidir el procedimiento para calcular los términos en días. Consideremos dos ejemplos descabellados:
- El cliente recibe un préstamo a corto plazo del banco del 6 de diciembre de 2018 al 7 de diciembre de 2018. ¿Cuál es el plazo del contrato y cuántos días necesito para acumular intereses? Obviamente - 1 día.
- El suscriptor hace un pedido anticipado del servicio al operador de telecomunicaciones, con un período de validez en el futuro del 6 de diciembre de 2018 al 7 de diciembre de 2018. ¿Cuáles son las líneas de provisión de servicios y por cuántos días tengo que tomar una tarifa de suscripción para el servicio? Obviamente 2 días.
Cual es la diferencia
El hecho es que el día no es un punto en la línea de tiempo, sino un intervalo que se puede escribir de dos maneras (recuerde, el corchete en el borde del intervalo significa que el punto está en el intervalo, el paréntesis es el punto que no está en el intervalo):
- [06.12.2018 00.00.00, 12/07/2018 00.00.00) - aquí el borde derecho del intervalo no está incluido en el intervalo,
- [06/12/2018 00.00.00, 12/06/2018 23.59.59] - aquí se incluye el borde derecho del intervalo en el intervalo.
En el primer caso (1), cuando el intervalo de tiempo no se da explícitamente, sino en la forma de un intervalo entre fechas, generalmente se calcula el número exacto de días, incluido el primer o el último día, pero no ambos. [4] dice lo mismo en otras palabras: "El día en que se emite el préstamo y el día de reembolso se considera un día".
Este método determina el llamado tiempo exacto. También se puede determinar fácilmente si ambas fechas se refieren al mismo año y hay un calendario disponible que muestra el número de serie de cada día del año. Entonces es suficiente restar el número de serie de la fecha temprana del número de serie de la fecha tardía y el resultado dará la duración del período. En Oracle Database, simplemente puede restar fechas (tipo DATE) truncadas a un día (con el tiempo descartado), una de la otra, la diferencia es un número entero de días.
En el segundo caso (2) estamos hablando de días, entonces contamos dos días.
Además, procedo del hecho de que el número de días que ya se ha determinado, por ejemplo, en el caso de los servicios comunales, cuando la fecha límite de pago es el 20 de septiembre (es decir, este es el último día de pago aceptable), y se pagó el 21 de septiembre, es decir. Es obvio que la demora debe tomarse igual a 1 día. En caso de que se encuentre con una indicación del intervalo que no incluye el borde izquierdo, simplemente mueva el borde izquierdo un día a la derecha.
¿Cómo contamos el número de días y el numerador de una fracción? Hay un cálculo exacto y un cálculo aproximado.
Cuenta precisa de días
Práctica de habla rusa
El texto se basa además en [1].
La elección del número exacto de días en un período como divisor, y las dos reglas más comunes dan las reglas más comunes como denominador: un divisor anual de 360 o 365:
Regla (R1) ACT / 365. Para esta regla, la duración en días se divide por el número 365. Observo que la duración de un año bisiesto será 366/365 = 1.00274, que es más de uno. El error de la regla ACT / 365 será mayor, más años bisiestos en un período. Por lo tanto, el valor del 3% anual acumulado por esta regla será más del 3%.
Regla (R2) ACT / 360. Esta es la llamada "regla bancaria", según la cual, la duración en días se divide por 360. Esta regla aumenta aún más la duración anual de las brechas. Para un año no bisiesto, su duración será 365/360 = 1.01389, y para un año bisiesto 366/360 = 1.01667. Naturalmente, cuanto más largo es el período, mayor es el grado de "alargamiento" en años. Esta regla se usa con mayor frecuencia en los cálculos relacionados con el mercado monetario, es decir. deuda de corto plazo del mercado, como depósitos en bancos, letras, papeles comerciales, certificados de depósito, etc. El valor del 3% anual para el año será aún mayor que cuando se usa la regla anterior.
En el caso de que se acepte el divisor anual igual a 360 días, el interés ganado utilizando dicho divisor se llama
ordinario o
comercial . Si el divisor se toma igual a 365 o, como mostraré más tarde, 366 días, el interés se llama exacto.
Obviamente, los porcentajes ordinarios son más que exactos.
Aunque la primera regla es más precisa que la segunda, ambas no son lo suficientemente precisas.
Para eliminar el efecto de los años bisiestos en los resultados, hay otras dos reglas.
Regla (R3) ACT / 365, Japón. El cálculo se realiza de la misma manera que para la regla ACT / 365, pero al calcular la duración del intervalo (numerador de fracciones), se excluyen las fechas de salto. El divisor anual permanece sin cambios.
De acuerdo con Wiki:
En muchos países europeos, hasta el siglo XVIII, el 29 de febrero se consideraba un día inexistente, una fecha que no tiene un estatus legal. A menudo, las transacciones no se realizaron ese día, no se realizaron pagos, no se entregaron en deuda, etc., debido a las dificultades derivadas del aspecto formal de la cuestión y la solución de los casos en los tribunales.
Otra forma está relacionada con el cambio real del divisor.
Regla (R4) ACT / ACT básico. Dividimos el período deseado en tres partes:
- la primera parte, desde la fecha de inicio hasta el final del año en el que se encuentra la fecha de inicio,
- la tercera parte: desde el comienzo del año en el que se encuentra la fecha de finalización, hasta la fecha de finalización,
- la segunda parte: 0 o varios años calendario completos entre la primera y la tercera parte.
La duración de la primera y tercera parte se obtiene dividiendo el número de días por el divisor anual 365 o 366, dependiendo de si es un año bisiesto. La duración del segundo período consiste en un número entero de años calendario completos, por definición, independientemente de si son bisiestos o no. La duración en años de todo el período se obtiene sumando las duraciones de tres partes, representadas por tres números, de los cuales el segundo es un todo, y el primero y el tercero son fraccionarios.
Regla (R5) ACT / ACT modificación "corta", por períodos de menos de un año. En este caso, la duración en días se divide por el divisor anual 365 o 366, dependiendo de si hay una fecha el 29 de febrero en el período de búsqueda. La peculiaridad de la regla corta ACT / ACT es que si el intervalo no se ajusta al año calendario (sus extremos pertenecen a años vecinos), la aplicación de las reglas básicas y cortas dará resultados diferentes.
Práctica occidental
En la práctica occidental, las reglas se describen de manera diferente. A menudo, las mismas reglas en idioma ruso reciben nombres diferentes y, además, no uno a la vez.
La información se basa además en [2]. Este es Vicki, verifiqué todas las fuentes y utilicé otra información de Google: en las reglas con un número exacto de días, todo es correcto, pero en las reglas con un número aproximado de días hay otras interpretaciones de las reglas, y a menudo cambian con el tiempo, por lo tanto, para poner las reglas en práctica, El número aproximado de días que este artículo no es suficiente.
Regla (W1) ISDA real / real. Esta regla da el mismo resultado que (R4) "ACT / ACT main", pero está formulada de manera diferente: el intervalo se divide en años bisiestos y no bisiestos, independientemente de si están completos o incompletos, además, la suma de días cae en años bisiestos, dividido por 365, y la suma de días en años no bisiestos se divide por 366, se suman los dos números.
Otros nombres de la regla en la práctica occidental: Actual / Actual, Act / Act, Actual / 365, Act / 365. Sí, el apellido es el mismo que la regla (R1), aunque la esencia de la regla es diferente.
Regla (W2) Actual / 365 Fijo. Esta regla repite exactamente la regla (R1) ACT / 365: el número de días se divide por 365.
Otros nombres de la regla en la práctica occidental: Act / 365 Fixed, A / 365 Fixed, A / 365F, inglés.
Regla (W3) Actual / 360. Esta regla repite (R2) ACT / 360: el número exacto de días se divide por 360.
Regla (W4) Actual / 364. El número de días se divide por 364. No tiene análogo en la práctica de habla rusa.
Regla (W5) Actual / 365L. Consiste en dos ajustes:
- Para pagos anuales. Si la fecha es el 29 de febrero dentro del período, entonces el número de días en el período se divide por el divisor anual 366, si no, por 365. En este sentido, coincide con la regla (R5) ACT / ACT "modificación breve".
- Si la frecuencia de los pagos difiere de la anual. Si la fecha de finalización es un año bisiesto (y no es necesariamente igual al 29 de febrero), entonces el divisor anual es 366, de lo contrario, 365. En la práctica de habla rusa, no tiene análogo.
Otro nombre es ISMA-Year.
Regla (W6) AFB real / real. Consiste en dos ajustes:
- El principal para períodos de menos de un año: si la fecha es el 29 de febrero dentro del período, entonces el número de días en el período se divide por el divisor anual 366, si no, por 365. En este sentido, también coincide con la regla R / ACT ACT / ACT "modificación corta" .
- Extendido, por períodos de más de un año: un año entero entero se cuenta desde la fecha de finalización hasta la fecha de inicio. Para un saldo de menos de un año, se aplica la regla principal. Se resumen el número de años completos y la parte del año según la regla básica.
Hay matices asociados con la cuenta regresiva hace años, si la cuenta regresiva se realizó el 28 de febrero, y después de varios años completos, el año resultó ser bisiesto. En este caso, la fecha hace n años debería adoptarse el 29 de febrero. Agregaré que la pregunta también surge si la cuenta regresiva se realizó desde el 29 de febrero, y el número de años completos no es un múltiplo de cuatro, y en consecuencia el año anterior no fue bisiesto. No entré aquí en detalles. Pero puede consultar los enlaces de [2].Y "guinda del pastel", Regla (W7) 1/1. El número de días se divide por el divisor anual 365.25. Utilizado para cálculos relacionados con la inflación.Recuento de días estimados
Las reglas enumeradas anteriormente se basaron en la duración exacta en días de períodos calendario. Sin embargo, a veces hay esquemas basados en el llamado conteo de días simplificado o aproximado. La idea de estos esquemas es "igualar" la duración de todos los meses a 30 días. Por lo tanto, el año consistirá en 12 meses de 30 días, es decir, Fuera de 360 días. Por lo tanto, el divisor anual (denominador de la fracción) para estas reglas siempre será 360, y el numerador se calcula de manera especial.Dado que el número exacto de días de un préstamo en la mayoría de los casos, pero por supuesto, no siempre, es más que aproximado (como se puede ver fácilmente al determinar el número promedio de días en un mes por un año, que es 30.44), el método de cálculo de intereses con el número exacto de días de un préstamo generalmente proporciona mayor crecimiento que el aproximado. [4]La versión más simple de esta regla, la llamada regla básica 30/360 , se describe de la siguiente manera (en adelante, la información del libro [1] - Práctica en ruso):regla básica 30/360. El número aproximado de días entre fechas es 360 * (y2 - y1) + 30 * (m2 - m1) + (d2 - d1),
donde y, m, d - año, mes y día en la segunda y primera fecha.Esta regla apareció antes de la creación de los primeros dispositivos informáticos y ahorró significativamente el costo de las operaciones informáticas en la práctica financiera. Aunque ahora la necesidad de métodos simplificados ha desaparecido, sin embargo, habiendo ganado un punto de apoyo en la práctica, por tradición a veces se usan en la actualidad.La regla se aplica con una indicación obligatoria de una modificación que indica cómo manejar los últimos días de los meses:Práctica de habla rusa
A cargo de [1].Regla (R6) 30/360 ISDA. Si d1 = 31, entonces d1 '= 30, de lo contrario d1' = d1. Si d2 = 31 y d1 '= 30, entonces d2' = 30, de lo contrario d2 '= d2.Regla (R7) 30E / 360. Si d1 = 31, entonces d1 '= 30, de lo contrario d1' = d1. Si d2 = 31, entonces d2 '= 30, de lo contrario d2' = d2.Esta regla es una variante de la regla ISDA 30/360, utilizada principalmente en Europa, de ahí la etiqueta "E" en el nombre de la regla. Difiere de la norma ISDA 30/360 solo cuando la segunda fecha es también la 31. La versión europea siempre lo convierte en el número 30, independientemente de la primera fecha.Regla (R8) 30/360 PSA. Si d1 = 31 o d1 es el último día de febrero, entonces d1 '= 30, de lo contrario d1' = d1. Si d2 = 31 y d1 '= 30, entonces d2' = 30, de lo contrario d2 '= d2.La descripción de la regla 30/360 SIA en [1] es muy probable que sea un error, por lo que no la daré aquí.Práctica occidental
Dado de acuerdo con [2].Regla (W8) 30/360 Base de enlace. Igual que (R6) 30/360 ISDA. Otro nombre: 30A / 360.Regla (W9) 30E / 360. Igual que (R7) 30E / 360. Otros nombres: 30/360 ICMA, 30S / 360, base Eurobond (ISDA 2006), alemán especial.Regla (W10) 30E / 360 ISDA. Si d1 es el último día del mes, entonces d1 '= 30. Si d2 es el último día de NO febrero, entonces d2 '= 30.Otros nombres: 30E / 360 ISDA, base Eurobond (ISDA 2000), alemán.Regla (W11) 30/360 SIA. Si d1 es el último día de febrero y d2 es el último día de febrero, entonces d2 '= 30. Si d1 = 31 o el último día de febrero, entonces d1 '= 30, de lo contrario d1' = d1. Si d1 '= 30 y d2 = 31, entonces d2' = 30, de lo contrario d2 '= d1.Las reglas (R4) ACT / ACT, (W1) Actual / Actual ISDA, (W2) Actual / 365 Fixed también se llaman "práctica de inglés".
Las reglas (R2) ACT / 360 y (W3) Actual / 360 también se denominan "práctica francesa".
Las reglas (R7) 30E / 360, (W9) 30E / 360 y (W10) 30E / 360 ISDA también se denominan "práctica alemana" o "práctica alemana".Entonces, teniendo en cuenta el interés exacto y ordinario, así como el número exacto y aproximado de días para calcular el interés, obtenemos cuatro métodos para calcular el interés simple (los nombres de las reglas se indican en la práctica de habla rusa):- Interés normal con el número exacto de días (ACT / 360 - regla bancaria),
- Porcentajes exactos con el número exacto de días (ACT / 365, ACT / ACT),
- Interés normal con un número aproximado de días (30/360),
- Porcentajes exactos con un número aproximado de días.
El primer método más utilizado se llama regla bancaria, con menos frecuencia el segundo y el tercero, y casi nunca el cuarto [1]. Y [4] dice: "... una opción de cálculo con intereses exactos y un número aproximado de días de préstamo no tiene sentido y no se aplica".Los cálculos anteriores de la duración aproximada de los períodos en fracciones de un año muestran la no trivialidad y la variedad de las reglas aplicadas. Su aplicación (así como su origen) depende del país, moneda, tipo de instrumento financiero, asociación profesional, acuerdos. [1]CONCLUSIÓN:¿Cómo cuento el 3% en mi caso con los servicios públicos en Ucrania?Análisis de la práctica judicial de aplicación del art. 625 del Código Civil de Ucrania dice que el método (R1) ACT / 365 [3] se usa generalmente, pero esto no está claramente formulado. Creo que aún necesita aplicar ACT / ACT (R4), y he aquí por qué: si acumula un 3% por un año bisiesto completo utilizando el método ACT / 365, entonces el monto de interés será igual a 3.008219%, que es para la deuda (o el tamaño del cuerpo del préstamo) de 1 millón de unidades monetarias dará un exceso de 82.19 u.m. más del 3%, que están estipulados por la tasa de interés anual estandarizada bajo la Ley. Esto será especialmente importante con la acumulación progresiva de intereses.Agradecería comentarios, especialmente de los empleados del banco.Fuentes utilizadas1) Bocharov, P.P., Kasimov, Yu.F. Matemáticas financieras. Moscú: Gardariki, 20022) Convención de conteo de días,en.wikipedia.org/wiki/Day_count_convention3) Análisis de la aplicación del art. 625 del Código Civil de Ucrania en procedimientos civiles, zib.com.ua/ua/74602-analiz_praktiki_zastosuvannya_st_625_civilnogo_kodeksu_ukrai.html4) Chetyrkin E.M. Matemática financiera. Moscú: Caso, 20055) Convenciones de recuento de días y factores de acumulación , docs.fincad.com/support/developerfunc/mathref/Daycount.htm6) Carta informativa del Tribunal Económico Supremo de Ucrania No. 01-06 / 928/2012 de fecha 17.07.2012, zakon.rada.gov.ua/laws/show/v_928600-12Y ahora un pequeño código en la base de datos Oracle:Aquí hay un paquete que hice para mi caso particular: calcula los costos de inflación y el 3% anual para Ucrania.No hay una función agregada en Oracle Database que multiplique los valores de inflación. Por lo tanto, uso la suma de logaritmos.Texto ocultoCREATE 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;