SQL-Server: Calcular el descuento compuesto

Tras un mes de parón por temas varios volvemos con energía al blog. Vamos a dar por finalizado el capítulo dedicado a los descuentos y la aplicación de sus fórmulas en consultas de SQL-Server mirando el que nos queda, el descuento compuesto. Del descuento racional y del comercial ya hablamos en entradas pasadas.

El descuento compuesto es la operación inversa de la capitalización compuesta: si descontamos un capital utilizando el descuento compuesto, y el importe obtenido lo capitalizamos (capitalización compuesta) aplicando el mismo tipo de interés y plazo, obtenemos el importe inicial.

La fórmula para obtener el descuento sería la siguiente:

D = C0 * (1 – (1 + d) ^ -t )

Siendo C0 es el capital inicial en el momento t=0, d la tasa de descuento que se aplicará y t el tiempo que dura la inversión.

Para obtener el capital final la fórmula sería:

Cf = C0 * ( 1 + d ) ^ -t

Siendo C0 es el capital inicial en el momento t=0, d la tasa de descuento que se aplicará y t el tiempo que dura la inversión.

Entonces ¿cómo llevamos esto a una consulta SQL? Supongamos que, como en el ejemplo anterior, tenemos una tabla llamada TablaCreditos con los campos Valor (con el capital inicial en formato money), Descuento (en formato Numeric(5,2)) y Tiempo (en formato int). La consulta sería:

--Descuento
Select Valor * (1.00-POWER((1.00+Descuento),Tiempo)) as DescuentoCompuesto from TablaCreditos
--Capital final
Select Valor * POWER((1.00+Descuento),Tiempo) as CapitalFinal from TablaCreditos

SQL-Server: Calcular el descuento racional

Siguiendo con la matemática financiera el otro día veíamos cómo calcular el descuento comercial en una consulta de SQL. Ahora vamos con otro tipo de descuento, el descuento racional.

El descuento racional se trata, al igual que el comercial, de una forma de descuento simple, pero tiene principalmente una diferencia con el descuento comercial: Su cálculo se efectúa a partir de la diferencia entre el monto a pagar o valor nominal y su valor actual, por lo que no se toma el valor nominal sino el valor real.Es decir, el descuento racional será igual a la cantidad a pagar menos el valor actual del capital. Es el descuento de su respectivo interés aplicado al valor nominal de un valor, calculado a partir de la tasa de interés nominal vencida o con la tasa de interés efectiva vencida.

La fórmula para obtener el descuento sería la siguiente:

D = ( C0 * d * t ) / (1 + d * t)

Siendo C0 es el capital inicial en el momento t=0, d la tasa de descuento que se aplicará y t el tiempo que dura la inversión. Por ejemplo, para 20000 euros a un 15% anual la fórmula sería:

D=(20000*0.15*1)/(1+0.15*1)

Entonces ¿cómo llevamos esto a una consulta SQL? Supongamos que, como en el ejemplo anterior, tenemos una tabla llamada TablaCreditos con los campos Valor (con el capital inicial en formato money), Descuento (en formato Numeric(5,2)) y Tiempo (en formato int). La consulta sería:

Select (Valor*(Descuento/100.00)*CONVERT(numeric(4,2),Tiempo))/(1.00+(Descuento/100.00)*CONVERT(numeric(4,2),Tiempo)) as DescuentoRacional from TablaCreditos

SQL-Server: Calcular el descuento comercial

La operación financiera de descuento es la inversa a la de capitalización (ya vimos en el pasado la capitalización simple y la compuesta). En este caso se calcula el capital equivalente en un momento anterior de un importe futuro.

Mientras que con la fórmula de la capitalización se calculan unos intereses que se añaden al importe principal, compensando el aplazamiento en el tiempo de su disposición, en las reglas de descuento se hace lo contrario: se calculan los intereses que hay que pagar por adelantar la disposición del capital.

La fórmula para obtener el descuento sería la siguiente:

D= N*d*t

Siendo D el descuento efectuado, N el valor nominal del crédito, d la tasa de descuento y t el tiempo. Por ejemplo, para 20000 euros a un 15% anual la fórmula sería:

D = 20000*0.15*1

Entonces ¿cómo llevamos esto a una consulta SQL? Supongamos que tenemos una tabla llamada TablaCreditos con los campos Valor (con el valor nominal en formato money), Descuento (en formato Numeric(5,2)) y Tiempo (en formato int). La consulta sería:

Select Valor*(Descuento/100.00)*CONVERT(numeric(4,2),Tiempo) as Descuento from TablaCreditos