Calculadora de duration efetiva
Um título a 100 que subiria para 101,5 se os yields caíssem 0,25 ponto e cairia para 98,6 se subissem 0,25 tem duration efetiva de 5,8. Serve também para títulos resgatáveis e securitizações imobiliárias. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Preço
- 100
- Preço em queda
- 101,5
- Preço em alta
- 98,6
- Variação do rendimento
- 0,25
- Variação do rendimento (decimal)
- 0,0025
- Duração efetiva
- 5,8
A duration efetiva mede quanto se espera que o preço de um título se mova quando os yields de referência se deslocam, usando preços observados ou de modelo nesses yields deslocados, e não um calendário de cupons em forma fechada. Essa é a sensibilidade correta para títulos resgatáveis, securitizações hipotecárias e qualquer instrumento cujos fluxos mudam quando as taxas se movem. Esta calculadora de duration efetiva aceita o preço atual, o preço após um choque de yield para baixo, o preço após um choque para cima e o tamanho desse choque em porcento, e devolve a duration pela fórmula padrão de diferença central.
O que a duration efetiva mede e como a fórmula de diferença central funciona
A duration modificada e a duration de Macaulay supõem que cada cupom restante e o valor de face resgatado já são conhecidos, de modo que uma pequena mudança de yield só redisconta a mesma faixa de fluxos. A duration efetiva abandona essa hipótese.
Pede a um modelo de precificação, ou ao mercado, três preços: V0 na curva de yields atual, V− após um choque paralelo para baixo de tamanho Δy, e V+ após um choque para cima igual, e aplica a diferença finita central: Deff igual a (V− menos V+) dividido por duas vezes V0 vezes o valor absoluto de Δy.
O resultado é a variação percentual aproximada de preço para um movimento de um ponto percentual no yield, com a convenção de sinal habitual de que duration positiva significa que o preço cai quando os yields sobem. Como os preços chocados já embutem o que acontece com exercício de opções, pré-pagamento ou fundo de amortização, a métrica continua definida para corporativos resgatáveis, pass-throughs hipotecários e outras estruturas dependentes da trajetória em que a duration modificada seria o número errado.
O valor absoluto do choque de yield fica no denominador, assim uma entrada com sinal de menos vinte e cinco pontos-base e de mais vinte e cinco pontos-base produz a mesma duration; só um choque verdadeiramente nulo fica indefinido, porque então não há intervalo sobre o qual medir a inclinação.
Onde uma calculadora de duration efetiva agrega valor
Tesourarias e equipes de risco usam a duration efetiva para dimensionar hedges em agências resgatáveis e pools hipotecários, onde a duration modificada de uma faixa de cupons estática superestimaria quanto o preço pode subir quando os yields caem na região de call ou de pré-pagamento. Sites de conteúdo podem contrastar a cifra 5.8 de um exemplo sem opções com uma duration bem menor de uma trajetória de call apertada, para o leitor ver por que opções embutidas encurtam a duration efetiva.
Integradores deixam o mesmo contrato em fluxos n8n, edge workers ou plugins LMS de sala. Validação que falha não consome saldo.
Casos de uso
Hedges de títulos resgatáveis e com put
Transforme preços ajustados por opção após um choque de yield para cima e para baixo em duration efetiva, para que os hedges reflitam o call ou o put, não uma faixa de cupons estática.
Pools hipotecários sensíveis a pré-pagamento
Meça a sensibilidade a taxas a partir de preços de modelo que já embutem o pré-pagamento, em vez da duration de Macaulay sobre uma trilha de fluxos programada.
Perguntas frequentes
Qual é a diferença entre duration efetiva e duration modificada?
A duration modificada redisconta um calendário de cupons fixo. A duration efetiva usa preços que já incluem exercício de opções, pré-pagamentos ou outras mudanças de fluxos quando os yields se movem, então é a sensibilidade de primeira ordem correta para títulos com opções embutidas.
O que acontece se o deslocamento de yield for zero?
Um choque nulo zera o denominador da diferença central, de modo que a duration efetiva fica indefinida e o pedido não é cobrado.
Como se calcula a duration efetiva?
Subtraia o preço após a alta de yields do preço após a queda e divida por duas vezes o preço atual vezes o tamanho do deslocamento em decimal. Essa diferença central mede a inclinação do preço em relação ao yield.
Como informo o deslocamento de yield?
Em pontos percentuais: 0,25 equivale a 25 pontos-base e 1 a um ponto inteiro. A calculadora usa o tamanho do deslocamento, então mais ou menos 0,25 dão a mesma duration.
De onde vêm os preços após o deslocamento?
De um modelo de precificação ou do mercado. Você informa os três preços; a calculadora não reprecifica o título a partir dos cupons, então esses preços já podem incluir resgates antecipados, pré-pagamentos ou fundos de amortização.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
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)Exemplo de requisição
{
"price": 100,
"price_down": 101.5,
"price_up": 98.6,
"yield_shift": 0.25
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.effective_duration",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Um deslocamento de yield nulo é rejeitado com invalid_input porque o denominador seria zero.
O que a duration efetiva mede e como a fórmula de diferença central funciona
Este endpoint não reprecia o título a partir de cupons: você já tem os três preços, e a calculadora os transforma na sensibilidade que mesas de renda fixa, itens CFA e widgets educativos chamam de duration efetiva.
Contrato de entrada, formato da resposta e comportamento de erro
Um choque nulo é o erro de contrato que este produto existe para caçar: não há inclinação bem definida quando os dois preços chocados se sentam sobre o mesmo yield. Envie por POST um corpo JSON com quatro números finitos obrigatórios: price, o preço sujo ou de modelo atual V0, que deve ser maior que zero (aliases current_price, v0 e p0); price_down, o preço após um choque de yield para baixo do mesmo tamanho (aliases price_minus, v_minus e p_down); price_up, o preço após um choque para cima (aliases price_plus, v_plus e p_up); e yield_shift, o choque paralelo em porcento, de modo que 0.25 significa vinte e cinco pontos-base e 1 significa um ponto percentual inteiro (aliases yield_shift_percent, delta_y, dy e yield_change). decimals é opcional, um inteiro de zero a doze (padrão seis) que controla o arredondamento half-up de yield_shift_decimal e effective_duration. Em caso de sucesso o corpo ecoa os três preços e o yield_shift enviado, acrescenta yield_shift_decimal (o mesmo choque como fração decimal, conservando o sinal da entrada), effective_duration em anos de sensibilidade a taxas, e uma string formula que reescreve a identidade de diferença central. Exemplo trabalhado: price 100, price_down 101.5, price_up 98.6, yield_shift 0.25 produz Δy de 0.0025 e duration efetiva de 5.8, porque 2.9 dividido por 0.5 é 5.8. Campos ausentes, valores não finitos, um price, price_down ou price_up não positivo, ou um yield_shift exatamente zero falham com invalid_input nomeando o campo e não são cobrados.
Onde uma calculadora de duration efetiva agrega valor
Gestores que já rodam um motor de spread ajustado por opção têm V− e V+ na grade; ligar essas três marcas a um endpoint parse pequeno evita reimplementar a identidade em cada caderno e mantém os goldens fixos quando a biblioteca de precificação muda. Mantenha os três preços estritamente positivos, nunca envie um yield_shift nulo, fixe o effective_duration arredondado nos testes e obtenha uma cifra de sensibilidade a taxas reproduzível sem montar sua própria biblioteca de renda fixa.
Casos de integração
Preparação CFA e checagens de sala
Dê aos alunos um oráculo determinístico da identidade (V− − V+) / (2 V0 Δy), inclusive um invalid_input sem cobrança quando o choque de yield é nulo.
Perguntas técnicas
Como se calcula a duration efetiva a partir de preços com yields deslocados?
Envie o preço atual V0, o preço após um choque de yield para baixo V−, o preço após um choque para cima V+ e yield_shift em porcento. A API devolve Deff = (V− − V+) / (2 × V0 × |Δy|), com Δy igual a yield_shift dividido por cem.
Em que unidade vem o yield_shift?
Em porcento. 0.25 significa um choque paralelo de 0.25 por cento (25 pontos-base); 1 significa um ponto percentual. A resposta também ecoa yield_shift_decimal, o mesmo choque como fração decimal.
Quanto custa a calculadora de duration efetiva?
A ferramenta do navegador é gratuita. Pedidos API usam saldo KIT pré-pago a US$ 0,002 por chamada bem-sucedida; entrada inválida não é cobrada.