Calculadora de duración efectiva
Un bono a 100 que subiría a 101,5 si los rendimientos bajaran 0,25 puntos y caería a 98,6 si subieran 0,25 tiene una duración efectiva de 5,8. Sirve también para bonos rescatables y titulizaciones hipotecarias. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Precio
- 100
- Precio a la baja
- 101,5
- Precio al alza
- 98,6
- Cambio del rendimiento
- 0,25
- Cambio del rendimiento (decimal)
- 0,0025
- Duración efectiva
- 5,8
La duración efectiva mide cuánto se espera que se mueva el precio de un bono cuando se desplazan los rendimientos de referencia, usando precios observados o de modelo en esos rendimientos desplazados y no un calendario de cupones en forma cerrada. Esa es la sensibilidad correcta para bonos rescatables, titulizaciones hipotecarias y cualquier instrumento cuyos flujos cambian al moverse los tipos. Esta calculadora de duración efectiva acepta el precio actual, el precio tras un choque de rendimiento a la baja, el precio tras un choque al alza y el tamaño de ese choque en porcentaje, y devuelve la duración con la fórmula estándar de diferencia central.
Qué mide la duración efectiva y cómo funciona la fórmula de diferencia central
La duración modificada y la duración de Macaulay suponen que cada cupón restante y el nominal reembolsado se conocen de antemano, de modo que un pequeño cambio de rendimiento solo vuelve a descontar la misma tira de flujos. La duración efectiva abandona esa hipótesis.
Pide a un modelo de valoración, o al mercado, tres precios: V0 en la curva de rendimientos actual, V− tras un choque paralelo a la baja de tamaño Δy, y V+ tras un choque al alza igual, y aplica la diferencia finita central: Deff igual a (V− menos V+) dividido por dos veces V0 veces el valor absoluto de Δy.
El resultado es el cambio porcentual aproximado de precio ante un movimiento de un punto porcentual en el rendimiento, con la convención de signo habitual de que una duración positiva significa que el precio cae cuando suben los rendimientos. Como los precios chocados ya incorporan lo que ocurra con el ejercicio de opciones, el prepago o el fondo de amortización, la métrica sigue definida para corporativos rescatables, passthrough hipotecarios y otras estructuras dependientes de la trayectoria donde la duración modificada sería el número equivocado.
El valor absoluto del choque de rendimiento va en el denominador, así que una entrada con signo de menos veinticinco puntos básicos y de más veinticinco puntos básicos produce la misma duración; solo un choque realmente nulo queda indefinido, porque entonces no hay intervalo sobre el que medir la pendiente.
Dónde una calculadora de duración efectiva aporta valor
Tesorerías y equipos de riesgo usan la duración efectiva para dimensionar coberturas sobre agencias rescatables y pools hipotecarios, donde la duración modificada de una tira de cupones estática exageraría cuánto puede subir el precio cuando los rendimientos caen a la zona de call o de prepago. Los sitios de contenido pueden contrastar la cifra 5.8 de un ejemplo sin opciones con una duración mucho menor de una trayectoria de call ajustada, para que el lector vea por qué las opciones implícitas acortan la duración efectiva.
Los integradores dejan el mismo contrato en flujos n8n, workers en el borde o plugins LMS de aula. La validación fallida no consume saldo.
Qué puede hacer con ella
Coberturas de bonos rescatables y con opción de venta
Convierta precios ajustados por opción tras un choque de rendimiento al alza y a la baja en duración efectiva, para que las coberturas reflejen el call o el put y no una tira de cupones estática.
Pools hipotecarios sensibles al prepago
Mida la sensibilidad a tipos a partir de precios de modelo que ya incorporan el prepago, en lugar de la duración de Macaulay sobre una senda de flujos programada.
Preguntas frecuentes
¿En qué se diferencia la duración efectiva de la duración modificada?
La duración modificada vuelve a descontar un calendario de cupones fijo. La duración efectiva usa precios que ya incluyen el ejercicio de opciones, el prepago u otros cambios de flujos cuando se mueven los rendimientos, así que es la sensibilidad de primer orden correcta para bonos con opciones implícitas.
¿Qué ocurre si el desplazamiento de rendimiento es cero?
Un choque nulo hace cero el denominador de la diferencia central, de modo que la duración efectiva queda indefinida y la petición no se factura.
¿Cómo se calcula la duración efectiva?
Se resta el precio tras la subida de rendimientos al precio tras la bajada y se divide entre dos veces el precio actual por el tamaño del desplazamiento en decimal. Esa diferencia central mide la pendiente del precio frente al rendimiento.
¿Cómo introduzco el desplazamiento de rendimiento?
En puntos porcentuales: 0,25 equivale a 25 puntos básicos y 1 a un punto completo. La calculadora usa el tamaño del desplazamiento, así que más o menos 0,25 dan la misma duración.
¿De dónde salen los precios tras el desplazamiento?
De un modelo de valoración o del mercado. Usted aporta los tres precios; la calculadora no recalcula el bono a partir de sus cupones, de modo que esos precios ya pueden recoger amortizaciones anticipadas, prepagos o fondos de amortización.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/fin/effective-duration \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"price":100,"price_down":101.5,"price_up":98.6,"yield_shift":0.25}'const res = await fetch("https://api.kit.forhosting.com/fin/effective-duration", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"price": 100,
"price_down": 101.5,
"price_up": 98.6,
"yield_shift": 0.25
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fin/effective-duration",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"price": 100,
"price_down": 101.5,
"price_up": 98.6,
"yield_shift": 0.25
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fin/effective-duration", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"price":100,"price_down":101.5,"price_up":98.6,"yield_shift":0.25}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"price":100,"price_down":101.5,"price_up":98.6,"yield_shift":0.25}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fin/effective-duration", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"price": 100,
"price_down": 101.5,
"price_up": 98.6,
"yield_shift": 0.25
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.effective_duration",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Un desplazamiento de rendimiento nulo se rechaza con invalid_input porque el denominador sería cero.
Qué mide la duración efectiva y cómo funciona la fórmula de diferencia central
Este endpoint no revalora el bono a partir de cupones: usted ya dispone de los tres precios, y la calculadora los convierte en la sensibilidad que mesas de renta fija, ítems CFA y widgets educativos llaman duración efectiva.
Contrato de entrada, forma de la respuesta y conducta ante errores
Un choque nulo es el error de contrato que este producto existe para cazar: no hay pendiente bien definida cuando los dos precios chocados se sientan sobre el mismo rendimiento. Envíe por POST un cuerpo JSON con cuatro números finitos obligatorios: price, el precio sucio o de modelo actual V0, que debe ser mayor que cero (alias current_price, v0 y p0); price_down, el precio tras un choque de rendimiento a la baja del mismo tamaño (alias price_minus, v_minus y p_down); price_up, el precio tras un choque al alza (alias price_plus, v_plus y p_up); y yield_shift, el choque paralelo en porcentaje, de modo que 0.25 significa veinticinco puntos básicos y 1 significa un punto porcentual entero (alias yield_shift_percent, delta_y, dy y yield_change). decimals es opcional, un entero de cero a doce (por defecto seis) que controla el redondeo half-up de yield_shift_decimal y effective_duration. Si acierta, el cuerpo ecoa los tres precios y el yield_shift enviado, añade yield_shift_decimal (el mismo choque como fracción decimal, conservando el signo de la entrada), effective_duration en años de sensibilidad a tipos, y una cadena formula que reescribe la identidad de diferencia central. Ejemplo trabajado: price 100, price_down 101.5, price_up 98.6, yield_shift 0.25 produce Δy de 0.0025 y duración efectiva de 5.8, porque 2.9 dividido por 0.5 es 5.8. Campos ausentes, valores no finitos, un price, price_down o price_up no positivo, o un yield_shift exactamente cero fallan con invalid_input nombrando el campo y no se facturan.
Dónde una calculadora de duración efectiva aporta valor
Los gestores que ya ejecutan un motor de diferencial ajustado por opción tienen V− y V+ en la malla; cablear esas tres marcas a un endpoint parse pequeño evita reimplementar la identidad en cada cuaderno y mantiene los goldens fijos cuando cambia la biblioteca de valoración. Como la implementación es parse de nivel A pura, cada llamada exitosa cuesta el precio base publicado $0.002 sin tokens de modelo ni red saliente. Mantenga los tres precios estrictamente positivos, no envíe nunca un yield_shift nulo, fije el effective_duration redondeado en las pruebas y obtendrá una cifra de sensibilidad a tipos reproducible sin montar su propia biblioteca de renta fija.
Casos de integración
Preparación CFA y comprobaciones de aula
Ofrezca a los alumnos un oráculo determinista de la identidad (V− − V+) / (2 V0 Δy), incluido un invalid_input sin factura cuando el choque de rendimiento es nulo.
Preguntas técnicas
¿Cómo se calcula la duración efectiva a partir de precios con rendimientos desplazados?
Envíe el precio actual V0, el precio tras un choque de rendimiento a la baja V−, el precio tras un choque al alza V+ y yield_shift en porcentaje. La API devuelve Deff = (V− − V+) / (2 × V0 × |Δy|), con Δy igual a yield_shift dividido por cien.
¿En qué unidad viene yield_shift?
En porcentaje. 0.25 significa un choque paralelo del 0.25 por ciento (25 puntos básicos); 1 significa un punto porcentual. La respuesta también ecoa yield_shift_decimal, el mismo choque como fracción decimal.
¿Cuánto cuesta la calculadora de duración efectiva?
La herramienta del navegador es gratuita. Las peticiones API usan saldo KIT prepago a $0.002 por llamada exitosa; la entrada inválida no se factura.