4 votos

¿Cuál es la forma más eficiente de calcular la Tasa Interna de Retorno (TIR)?

He construido un programa que valora activos financieros y lo hace en parte calculando la TIR. El problema es que no se ejecuta tan rápidamente como me gustaría.

Actualmente utilizo el método de Newton-Raphson para calcular raíces de ecuaciones, pero luego cambio al método de Bisección de Intervalos después de un número determinado de intentos. Esto se debe a que existe la posibilidad de que el método de Newton-Raphson no pueda encontrar la TIR, por ejemplo, debido a asíntotas. Mi entendimiento es que el método de Newton-Raphson es más eficiente para los casos con los que realmente funciona, razón por la cual mi sistema está configurado de esta manera en la actualidad.

¿Existe una fórmula o algoritmo más eficiente que pueda utilizar para calcular la TIR de un activo financiero que los que estoy empleando actualmente? O, si no existe ninguno, ¿hay alguna forma en la que pueda cambiar mi orden actual de cálculos para hacerlo más eficiente?

Si necesitas que cualquiera de las fórmulas que utilizo sean escritas en esta pregunta, por favor házmelo saber. Gracias por tu tiempo.

Actualización

El software de valoración que he diseñado es una extensión de PHP escrita en lenguaje C. Esto se debe a que es un programa basado en la web. No puedo cambiar de lenguaje debido a cuestiones relacionadas con la empresa para la que trabajo, por lo tanto, a pesar de ser buenas sugerencias, no puedo utilizar PERL ni la función IRR de Excel. No mencioné los lenguajes antes ya que no creí que fueran demasiado importantes debido a que estoy buscando un aumento en la eficiencia matemática, no computacional.

2voto

Mihaela Puntos 168

Puedes intentar el método de Brent, funciona bien.

0 votos

He estado revisando esto y potencialmente podría ser la mejor solución. Creo que lo implementaré y luego haré algunas pruebas de velocidad, gracias.

1voto

barry Puntos 476

He estado trabajando en el cálculo de una TIR durante un par de semanas. He implementado 5 métodos diferentes y he llegado a la conclusión de que el Método de Halley es el más eficiente (en mi caso, utilizando Python) hasta ahora. ¡El método de Brent también funciona bastante bien!

Denotemos la función de Valor Presente Neto como $P(r)$. Sabemos que encontrar la TIR requiere encontrar $r_{*} \in \mathbb{R}$ tal que $P(r_{*}) = 0$.

Dado que $P(r)$ es un polinomio, podemos aprovecharnos del uso de la segunda derivada. Según Wikipedia, obtenemos convergencia cúbica en lugar de la convergencia cuadrática de Newton-Raphson (en general).

0voto

sackoverflow Puntos 33

Sin reputación para comentarios (lo siento). ¿Qué lenguaje de programación / bibliotecas estás usando?

Creo que la biblioteca de Excel solo hace 20 iteraciones.

Podría resultarte útil mirar el módulo de Perl Finance::Math::IRR Esa biblioteca en particular utiliza un método de la secante. Al parecer, Gnumeric gnumeric.org utiliza el de Newton.

Hay un artículo muy breve de Moten & Thron que ofrece una mejora al método de la secante que ellos afirman que es más eficiente.

0 votos

Lo siento, actualizaré mi pregunta para informarte qué tecnología estoy utilizando. Echaré un vistazo al método de la Secante, gracias por eso.

0 votos

También, ¿cuánto sabes sobre el método de la Secante? ¿Sabes qué tan eficiente es en comparación con el método de Newton-Raphson o el método de Bisección de Intervalos?

0 votos

La pregunta sobre el lenguaje/biblioteca no tenía la intención de sugerir cambiar nada. Incluso cuando tengas razones muy convincentes para escribir un procedimiento desde cero, es útil usar un modelo de referencia para verificar tus resultados y asegurarte de que tu rendimiento sea razonable.

0voto

Sela Yair Puntos 27

Al mezclar varios enfoques, llegué a un algoritmo que no necesita una suposición como entrada. Me centré en la precisión personalizada y la resiliencia. Echa un vistazo.

https://medium.com/@manchikanti/irr-internal-rate-of-return-calculator-15ec269bd8f5?source=friends_link&sk=21cc51cc485647cb73eb0a66c57522bd

https://chitbazaar.github.io/kautilya/

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X