¿Cómo calcular la Tasa de Porcentaje Anual de un préstamo con pagos periódicos desiguales?

Digamos que tomamos prestado un préstamo de $1000. Le devolvemos al banco $100 por mes, pero por alguna estúpida razón, el último pago es menor y equivale a $50. Este es un caso común en mi país. Entonces, ¿cómo se debe calcular la TAE? Aquí está el plan de horarios:

ingrese la descripción de la imagen aquí

¿Puedo referirme a las siguientes preguntas y respuestas?

Cómo calcular la tasa de porcentaje anual

https://stackoverflow.com/questions/28050109/excel-vba-formula-for-apr/28084325#28084325

Quiero construir código VBA para calcularlo. Si el autor de la respuesta aceptada lo desea, puede ser incluido como coautor del código VBA.

Editar 23 de febrero de 2015
Respondí esta pregunta con un código VBA para la función definida por el usuario de Excel. Como el autor prometido de la respuesta aceptada es coautor del código. ¡Gracias!

¿Probó el código en la respuesta que mencionó en su pregunta?
He escrito ese código :-) Es para todos los pagos periódicos iguales. Ahora quiero hacer un nuevo código de opción con el último pago diferente.

Respuestas (4)

Como se establece en el enlace citado Cómo calcular la Tasa de Porcentaje Anual la sumatoria para un préstamo es

ingrese la descripción de la imagen aquí

donde s es el principal del préstamo, n es el número de períodos por año, t es el número de años, pp es el pago periódico y r es la TAE anual (como tasa efectiva anual ) .

Dividir el pago final y llamarlo fp se ve así

ingrese la descripción de la imagen aquí

que, por inducción , da la forma cerrada

ingrese la descripción de la imagen aquí

y, lo mismo, como texto copiable

s = (1 + r)^-t*(fp + (pp*((1 + r)^t - (1 + r)^(1/n)))/((1 + r)^(1/n) - 1))

Con

s = 1000.00
n = 12
t = 1
pp = 100
fp = 50

resolviendo para r se obtiene r = 0.314391una tasa efectiva de TAE del 31,44 %.

O bien, convertir a una tasa nominal dependiendo de la preferencia

((1 + r)^(1/n) - 1)*n = 0.276511por lo que 27,65 % TAE nominal capitalizable mensualmente.

Editar

Alternativamente, resolver para la tasa periódica, p, en lugar de r. la suma

ingrese la descripción de la imagen aquí

tiene la forma cerrada

s = ((1 + p)^(-n*t)*(fp*p + ((1 + p)^(n*t) - 1 - p)*pp))/p

Resolver para p tiene dos soluciones:p = -1.67608 or p = 0.0230426

A partir de la positiva p*12 = 27.65 %TAE nominal capitalizable mensualmente.

¿Qué es ky cuánto es? ¿Compuesto? 12?
Hola, Przemyslaw: k es la variable iteradora para la suma. (Consulte el índice de sumatoria ). No se usa en la fórmula de forma cerrada derivada.
Hola Chris, ¿tengo que establecer la capitalización aquí o la capitalización no tiene sentido para el cálculo de la APR en este caso?
La capitalización se incluye como antes. En el caso de pago igual, el formulario cerrado fue s = (pp - (1 + p)^(-n*t)*pp)/p, como se usa aquí: Cómo calcular la tasa de porcentaje anual . Para pagos desiguales, la forma cerrada es s = ((1 + p)^(-n*t)*(fp*p + ((1 + p)^(n*t) - 1 - p)*pp))/p.
(1) ¿Cuál es la diferencia entre la forma cerrada de la ecuación y la inversa? Probablemente forma abierta ? (2) ¿Tiene la fracción k/talguna interpretación no abstracta?
Hola Przemyslaw: la forma cerrada se deriva de la suma por inducción. Aquí hay un ejemplo: Inducción de forma cerrada de suma donde la suma s = Σ r^k for k = a to bse convierte en una fórmula de forma cerrada: s = (r^(1 + b) - r^a)/(r - 1). La sumatoria es el punto de partida porque es la expresión clara del cálculo, y la fórmula es el punto final porque es más fácil de usar en cálculos y soluciones.
Hay algo sospechoso con la primera forma cerrada. s = (1+r)^-t*(fp+(pp*( -(1+r)^((1/n) )+(1+r)^t))/(-1+(1+r)^(1/n))) lo marcado en negrita se convertirá en (-1,314391)^(1/12) lo cual es problemático:-)
Chris, pon los corchetes alrededor de las variables negativas como -t. Quiero estar seguro de ejecutar el cálculo de ^ * +en el orden correcto.
La fórmula con corchetes adicionales:s = ((1+r)^(-t))*(fp+(pp*(((1+r)^t)-((1+r)^(1/n))))/(((1+r)^(1/n))-1))
nlo que usted llama el número de períodos por año es en realidad el número de capitalización por año, ¿no es así?
¿Qué tal si tomamos un préstamo por 40 semanas, con capitalización semanal? Entonces tu n=52 , ¿a qué tequivale entonces?
tsería 40/52, una fracción de año.
Por cierto, la forma cerrada para la versión de pagos iguales en términos de r(APR efectivo) en lugar de p(tasa periódica) ess = (pp*((1+r)^(-t))*(((1+r)^t)-1))/(((1+r)^(1/n))-1)

Tiene dos opciones: use la función TIR de una hoja de cálculo para calcular el rendimiento. Hay muchos tutoriales para esto en Internet. Lo único que debe tener en cuenta es que debe ingresar una primera línea que muestre -1000, el flujo negativo hacia afuera.

De lo contrario, puedes hacerlo línea por línea. Debe utilizar el valor del dinero en el tiempo para obtener el valor actual de cada pago a una tasa determinada, por ejemplo, 6 %/año = 1,005 (1/2 % al mes). Luego eleva 1.005^(# meses) y divide ese 100 por este número. La suma de todos los flujos descontados será igual a 1000 cuando la tarifa elegida sea la correcta.

Para el segundo método, este es mi resultado:

ingrese la descripción de la imagen aquí

El código que usé para las celdas C es =B2/(C$1^A2)el que toma el pago, lo que sea que esté en la columna B, y lo descuenta por mi estimación de tasa elevada a la potencia A. Tenga en cuenta que la primera suposición fue del 2,5 %, ya que 1150/1000 = 1,15 (15 % en total), pero el pago promedio tiene solo 6 meses, así que lo dupliqué. Unos segundos de ajuste hacia arriba/abajo, y el resultado aparece con tantos dígitos como necesite.

No sé qué es VBA. Espero que esta explicación pueda ayudarte.

VBA es Microsoft Visual Basic
Esta hoja de cálculo de Excel se puede automatizar. Usando "Datos - Análisis What If - Goal Seek", le dice a Excel que ajuste la Celda de Tasa de Interés hasta que la Celda de Valor Actual sea igual al préstamo original...
¿Está seguro de que se debe descontar el primer pago periódico? ¿Estás seguro de que en A2 debería ser 1 en lugar de 0?
Si el pago uno es después de haber pasado un mes, sí a ambas preguntas. Así es para los préstamos que he visto, obtienes el dinero, pero el pago es 30 días después.
VBA es más exactamente 'Visual Basic para aplicaciones', también conocido como el lenguaje de programación de macros de Excel (y otras aplicaciones de Office).
Sería bastante tonto si obtuvieras un préstamo de $ 1000 y tuvieras que devolver $ 100 de inmediato, ¿no?

Una solución preparada para este tipo de problema (un último pago irregular) es una calculadora de hipotecas en línea que puede encontrar la tasa de interés y prevé la inclusión de un "pago global" positivo o negativo.

Un pago global en términos de hipoteca es un pago adicional realizado al final del pago de la hipoteca, además del último pago regular y al mismo tiempo.

Los pagos globales surgen por varias razones. Por ejemplo, una vez que usa la fórmula de anualidad para calcular el pago mensual exacto de una hipoteca en particular, redondea esta cantidad calculada hacia arriba o hacia abajo posiblemente medio centavo a una cantidad exacta de centavos, y paga esa cantidad durante la vigencia de la hipoteca. . Este pequeño e inevitable error se acumula, con intereses, y finalmente aparece como un último pago ligeramente diferente.

En el caso del OP, el calculador de hipotecas debe recibir una hipoteca de 12 meses de $1000 con doce pagos regulares de $100 y un pago global de -$50.

Voté a favor. La respuesta es inteligente, con respecto al pago global. Pero si algún pago además del final fuera diferente, tendríamos un problema.

Aquí está la función definida por el usuario de Excel VBA para calcular la Tasa de Porcentaje Anual (APR) basada en lo siguiente:
Principal del Préstamo - la cantidad que tomamos prestada del banco
pp - pago periódico (cuotas iguales)
fp - pago final (pago global)
c - Número de períodos de capitalización por año
k - Número de períodos para pagar el préstamo

Refiriéndose a la explicación de Chris Degnen t=k/c . Tenga en cuenta que APR en la función es una suposición inicial de APR. Es opcional, así que no tienes que preocuparte por eso.

Function APR_pp_fp(LoanPrincipal As Double, pp As Double, fp As Double, c As Integer, k As Integer, Optional APR As Double = 0.01, Optional step As Double = 0.000001) As Double
'Authors Przemyslaw Remin, Chris Degnen
'
'LoanPrincipal - the amount we borrow from bank
'pp - The amount of periodic payment
'fp - The amount of final payment (balloon) payment
'c - Number of compounding periods per year
'k - Number of periods to pay the loan
'APR - Starting Annual Percentage Rate starting from 1%, here it will be used as iterator to find correct Loan Principal
'step - how much we change APR, the smaller the step the more precision we get
'
Dim s1 As Double 'Calculated LoanPrincipal based on guessed APR
Dim s2 As Double 'Calculated LoanPrincipal based on guessed APR but slightly higher
Dim target1 As Double 'the squared difference between s1 and LoanPrincipal
Dim target2 As Double 'the squared difference between s2 and LoanPrincipal

Do Until target1 < target2 'we do the loop until the target falls
    s1 = ((1 + APR) ^ (-(k / c))) * (fp + (pp * (((1 + APR) ^ (k / c)) - ((1 + APR) ^ (1 / c)))) / (((1 + APR) ^ (1 / c)) - 1))
    target1 = (LoanPrincipal - s1) ^ 2
    APR = APR + step
    s2 = ((1 + APR) ^ (-(k / c))) * (fp + (pp * (((1 + APR) ^ (k / c)) - ((1 + APR) ^ (1 / c)))) / (((1 + APR) ^ (1 / c)) - 1))
    target2 = (LoanPrincipal - s2) ^ 2
Loop

APR_pp_fp = APR
End Function

Para la pregunta hecha tienes que escribir:

=APR_pp_fp(1000,100,50,12,12)

y debería devolver 0.314392.

¡Muchas gracias a Chris Degnen!