Calcular el Precio de un Bono Dado el Rendimiento en C

CBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderemos a calcular el precio de un bono dado su rendimiento en C. Empezaremos leyendo los parámetros clave del bono, incluyendo la tasa de cupón, el valor nominal, el rendimiento y la fecha de vencimiento. Luego, implementaremos el cálculo del valor actual para descontar todos los pagos futuros del bono a su valor actual, lo que nos dará el precio del bono. Finalmente, imprimiremos el precio del bono calculado.

El laboratorio cubre matemáticas financieras fundamentales y cálculos de interés utilizando programación en C, proporcionando un ejemplo práctico de valoración de bonos que puede aplicarse en diversas aplicaciones financieras.

Leer Cupón, Valor Nominal, Rendimiento y Vencimiento

En este paso, aprenderemos a leer e inicializar los parámetros clave necesarios para el cálculo del precio de un bono en C. Estos parámetros incluyen la tasa de cupón, el valor nominal, el rendimiento y la fecha de vencimiento.

Primero, creemos un nuevo archivo C para implementar nuestro cálculo del precio del bono:

cd ~/project
nano bond_price.c

Ahora, escribamos el código para declarar e inicializar los parámetros del bono:

#include <stdio.h>

int main() {
    // Parámetros del bono
    double coupon_rate = 0.05;   // Tasa de cupón anual del 5%
    double face_value = 1000.0;  // Valor nominal del bono
    double yield = 0.06;         // Rendimiento anual hasta el vencimiento
    int maturity = 5;            // Años hasta el vencimiento

    // Imprimir los parámetros del bono
    printf("Parámetros del Bono:\n");
    printf("Tasa de Cupón: %.2f%%\n", coupon_rate * 100);
    printf("Valor Nominal: $%.2f\n", face_value);
    printf("Rendimiento hasta el Vencimiento: %.2f%%\n", yield * 100);
    printf("Años hasta el Vencimiento: %d\n", maturity);

    return 0;
}

Compila y ejecuta el programa:

gcc bond_price.c -o bond_price
./bond_price

Salida de ejemplo:

Parámetros del Bono:
Tasa de Cupón: 5.00%
Valor Nominal: $1000.00
Rendimiento hasta el Vencimiento: 6.00%
Años hasta el Vencimiento: 5

Descontar Todos los Pagos al Presente

En este paso, implementaremos el cálculo del valor actual de los pagos del bono, que implica descontar los pagos de cupón y el valor nominal a su valor actual.

Actualiza el archivo bond_price.c para incluir el cálculo del valor actual:

cd ~/project
nano bond_price.c

Modifica el código para calcular el valor actual de los flujos de efectivo:

#include <stdio.h>
#include <math.h>

double calculate_bond_price(double coupon_rate, double face_value,
                             double yield, int maturity) {
    double bond_price = 0.0;

    // Calcular el pago de cupón
    double coupon_payment = coupon_rate * face_value;

    // Descontar los pagos de cupón
    for (int year = 1; year <= maturity; year++) {
        double present_value_coupon = coupon_payment / pow(1 + yield, year);
        bond_price += present_value_coupon;
    }

    // Descontar el valor nominal
    double present_value_face = face_value / pow(1 + yield, maturity);
    bond_price += present_value_face;

    return bond_price;
}

int main() {
    // Parámetros del bono
    double coupon_rate = 0.05;   // Tasa de cupón anual del 5%
    double face_value = 1000.0;  // Valor nominal del bono
    double yield = 0.06;         // Rendimiento anual hasta el vencimiento
    int maturity = 5;            // Años hasta el vencimiento

    // Calcular el precio del bono
    double bond_price = calculate_bond_price(coupon_rate, face_value, yield, maturity);

    // Imprimir resultados
    printf("Cálculo del Precio del Bono:\n");
    printf("Tasa de Cupón: %.2f%%\n", coupon_rate * 100);
    printf("Valor Nominal: $%.2f\n", face_value);
    printf("Rendimiento hasta el Vencimiento: %.2f%%\n", yield * 100);
    printf("Años hasta el Vencimiento: %d\n", maturity);
    printf("Precio del Bono: $%.2f\n", bond_price);

    return 0;
}

Compila el programa con la biblioteca matemática:

gcc bond_price.c -o bond_price -lm
./bond_price

Salida de ejemplo:

Cálculo del Precio del Bono:
Tasa de Cupón: 5.00%
Valor Nominal: $1000.00
Rendimiento hasta el Vencimiento: 6.00%
Años hasta el Vencimiento: 5
Precio del Bono: $952.08

Imprimir el Precio del Bono

En este paso, mejoraremos nuestro programa de cálculo de precios de bonos para proporcionar una salida más detallada y formateada del cálculo del precio del bono.

Actualiza el archivo bond_price.c para mejorar el formato de la salida:

cd ~/project
nano bond_price.c

Modifica el código para agregar una presentación detallada del precio del bono:

#include <stdio.h>
#include <math.h>

double calculate_bond_price(double coupon_rate, double face_value,
                             double yield, int maturity) {
    double bond_price = 0.0;

    // Calcular el pago de cupón
    double coupon_payment = coupon_rate * face_value;

    // Descontar los pagos de cupón
    for (int year = 1; year <= maturity; year++) {
        double present_value_coupon = coupon_payment / pow(1 + yield, year);
        bond_price += present_value_coupon;
    }

    // Descontar el valor nominal
    double present_value_face = face_value / pow(1 + yield, maturity);
    bond_price += present_value_face;

    return bond_price;
}

void print_bond_details(double coupon_rate, double face_value,
                         double yield, int maturity, double bond_price) {
    printf("===== Análisis de Precios de Bonos =====\n");
    printf("Tasa de Cupón:          %.2f%%\n", coupon_rate * 100);
    printf("Valor Nominal:           $%.2f\n", face_value);
    printf("Rendimiento hasta el Vencimiento:    %.2f%%\n", yield * 100);
    printf("Años hasta el Vencimiento:    %d\n", maturity);
    printf("--------------------------------\n");
    printf("Precio del Bono Calculado: $%.2f\n", bond_price);
    printf("Descuento del Valor Nominal:     $%.2f (%.2f%%)\n",
           face_value - bond_price,
           ((face_value - bond_price) / face_value) * 100);
    printf("===============================\n");
}

int main() {
    // Parámetros del bono
    double coupon_rate = 0.05;   // Tasa de cupón anual del 5%
    double face_value = 1000.0;  // Valor nominal del bono
    double yield = 0.06;         // Rendimiento anual hasta el vencimiento
    int maturity = 5;            // Años hasta el vencimiento

    // Calcular el precio del bono
    double bond_price = calculate_bond_price(coupon_rate, face_value, yield, maturity);

    // Imprimir información detallada del precio del bono
    print_bond_details(coupon_rate, face_value, yield, maturity, bond_price);

    return 0;
}

Compila y ejecuta el programa:

gcc bond_price.c -o bond_price -lm
./bond_price

Salida de ejemplo:

===== Análisis de Precios de Bonos =====
Tasa de Cupón:          5.00%
Valor Nominal:           $1000.00
Rendimiento hasta el Vencimiento:    6.00%
Años hasta el Vencimiento:    5
--------------------------------
Precio del Bono Calculado: $952.08
Descuento del Valor Nominal:     $47.92 (4.79%)
===============================

Resumen

En este laboratorio, aprendimos a leer e inicializar los parámetros clave necesarios para el cálculo del precio de un bono en C, incluyendo la tasa de cupón, el valor nominal, el rendimiento y la madurez. Luego, implementamos el cálculo del valor actual de los pagos del bono, descontando los pagos de cupón y el valor nominal a su valor actual. Finalmente, imprimimos el precio del bono calculado.

El laboratorio proporcionó una guía paso a paso para calcular el precio de un bono dado el rendimiento en C, cubriendo los aspectos esenciales del proceso de valoración de bonos. Siguiendo las instrucciones proporcionadas, los desarrolladores pueden adquirir una sólida comprensión de los conceptos subyacentes y aplicarlos a escenarios de valoración de bonos del mundo real.