Session 5: Valuation of Fixed-Income Securities

Contents

Session 5: Valuation of Fixed-Income Securities#

🤖 AI Copilot Reminder: Throughout this session, you’ll be working alongside your AI copilot to understand bond valuation, analyze interest rate relationships, and prepare to teach others. Look for the 🤖 symbol for specific collaboration opportunities.

Section 1: The Investment Hook#

The Interest Rate Puzzle: When “Safe” Bonds Lose Money#

Sarah has successfully optimized her portfolio allocation in Session 4 and allocated 10% to bonds through BND (Total Bond Market ETF). She feels confident about this “safe” allocation until she checks her account after six months:

Sarah’s Bond Investment Reality Check:

  • Initial Investment: $1,000 in BND at $75.50 per share (13.25 shares)

  • Six Months Later: BND price = $72.80 per share

  • Current Value: $964.60 (loss of $35.40 or -3.54%)

  • Dividend Received: $8.50 (0.85% yield for 6 months)

  • Total Return: -2.69% in six months

Sarah’s Confusion: “I thought bonds were supposed to be safe! How can I lose money on government and high-grade corporate bonds? The news says interest rates went up 1%, but I don’t understand how that caused my ‘safe’ investment to lose money.”

The Specific Challenge: Sarah’s financial advisor shows her bond data that makes her more confused:

Bond Type

Coupon Rate

Current Yield

Price Change

Duration

2-Year Treasury

4.5%

4.8%

-1.9%

1.8 years

10-Year Treasury

4.2%

4.6%

-8.7%

8.2 years

30-Year Treasury

4.0%

4.4%

-15.2%

17.8 years

Sarah’s Question: “How do I understand what bonds are actually worth? Why do longer-term bonds lose more money when rates rise? How can I evaluate if a bond is a good investment?”

Timeline Visualization: The Bond Valuation Journey#

Present Value Analysis    Interest Rate Sensitivity    Portfolio Integration
(Cash Flow Valuation) → Duration & Convexity Analysis → Yield Curve Strategy
        ↓                        ↓                              ↓
   Calculate Fair Value    Measure Interest Rate Risk     Optimize Fixed Income
   Using Required Returns   Under Different Scenarios      Allocation Decisions

This session addresses the transition from understanding bonds as “safe” investments to scientifically valuing them based on cash flows, interest rate risk, and yield relationships.

Learning Connection#

Building on Session 4’s portfolio optimization framework, we now dive deep into the specific valuation of one major asset class. This provides the analytical foundation for making informed fixed-income allocation decisions and understanding how interest rate changes affect portfolio values.

Section 2: Foundational Investment Concepts & Models#

Bond Fundamentals - Complete Framework#

🤖 AI Copilot Activity: Before diving into bond mathematics, ask your AI copilot: “Help me understand the basic structure of bonds and why they’re considered debt investments. What are the key components that determine a bond’s value? How do bonds differ from stocks in terms of cash flows and investor rights?”

Bond Characteristics - Detailed Analysis#

Basic Bond Structure

Face Value (Par Value) represents the amount the bond issuer promises to repay at maturity, typically $1,000 for individual bonds and the basis for price quotations.

  • Definition: The principal amount that will be repaid when the bond matures

  • Standard Amount: $1,000 for most corporate and government bonds

  • Price Quotation: Bonds are quoted as percentage of par (e.g., 98.5 = $985 for $1,000 face value)

  • Importance: Determines the final cash flow received by the bondholder

Coupon Rate is the annual interest rate paid by the bond issuer, expressed as a percentage of the face value.

  • Definition: Fixed annual interest rate stated on the bond

  • Payment Frequency: Usually semi-annual (twice per year) in the United States

  • Calculation: Annual coupon payment = Face Value × Coupon Rate

  • Example: 5% coupon on $1,000 bond = $50 annually ($25 every six months)

  • Fixed Nature: Coupon rate never changes during the bond’s life

Maturity Date specifies when the issuer must repay the face value and make the final coupon payment.

  • Definition: The specific date when the bond expires and principal is repaid

  • Classifications:

    • Short-term: Less than 2 years

    • Intermediate-term: 2-10 years

    • Long-term: More than 10 years

  • Impact on Risk: Longer maturity generally means higher interest rate sensitivity

Credit Quality measures the issuer’s ability to make promised payments, rated by agencies like Moody’s, S&P, and Fitch.

  • Investment Grade: BBB-/Baa3 and above (lower default risk)

  • High Yield (Junk): Below BBB-/Baa3 (higher default risk, higher yields)

  • Government Bonds: Generally considered highest credit quality

  • Corporate Bonds: Credit quality varies by company financial strength

Bond Valuation Mathematics - Complete Framework#

🤖 AI Copilot Activity: Ask your AI copilot: “Walk me through the mathematical foundation of bond valuation. Why do we use present value calculations for bonds? How does the required rate of return relate to market interest rates and credit risk?”

Present Value Bond Valuation Model

Bonds are valued as the present value of all future cash flows (coupon payments plus principal repayment) discounted at the required rate of return.

Basic Bond Valuation Formula: Bond Value = PV(Coupons) + PV(Principal)

Mathematical Expression:

P = Σ[C/(1+r)^t] + F/(1+r)^n

Where:
P = Bond Price
C = Coupon payment per period
r = Required rate of return per period
t = Time period
F = Face value
n = Number of periods to maturity

Detailed Example Calculation:

Bond Characteristics:
- Face Value: \$1,000
- Coupon Rate: 6% (annual)
- Maturity: 3 years
- Required Return: 7% (current market rate for similar bonds)
- Payment Frequency: Annual

Calculation:
Year 1 Coupon: \$60 / (1.07)^1 = \$56.07
Year 2 Coupon: \$60 / (1.07)^2 = \$52.41
Year 3 Coupon: \$60 / (1.07)^3 = \$48.98
Year 3 Principal: \$1,000 / (1.07)^3 = \$816.30

Bond Value = \$56.07 + \$52.41 + \$48.98 + \$816.30 = \$973.76

Semi-Annual Compounding (More Realistic) Most U.S. bonds pay interest semi-annually, requiring adjustment to the formula:

P = Σ[C/2/(1+r/2)^t] + F/(1+r/2)^2n

Where:
C/2 = Semi-annual coupon payment
r/2 = Semi-annual required return
2n = Total number of semi-annual periods

Yield Calculations - Comprehensive Analysis#

🤖 AI Copilot Activity: Ask your AI copilot: “Explain the different types of bond yields and why each is important for investment analysis. How do current yield, yield to maturity, and yield to call differ? Which yield measure is most useful for comparing bonds?”

Current Yield

  • Definition: Annual coupon payment divided by current market price

  • Formula: Current Yield = (Annual Coupon Payment / Current Price) × 100

  • Example: $50 coupon, $950 price → Current Yield = ($50 / $950) × 100 = 5.26%

  • Limitation: Ignores capital gains/losses from price changes

  • Use: Quick comparison tool, but incomplete measure

Yield to Maturity (YTM)

  • Definition: The total return if bond is held to maturity, considering both coupon income and capital gains/losses

  • Calculation: Internal rate of return that makes present value of cash flows equal to current price

  • Interpretation: The discount rate that equates bond price to present value of future cash flows

  • Industry Standard: Most important yield measure for bond analysis

  • Assumption: All coupon payments are reinvested at the YTM rate

YTM Calculation Process: Solve for ‘r’ in the bond valuation equation:

Current Price = Σ[Coupon/(1+r)^t] + Face Value/(1+r)^n

This requires iterative calculation or financial calculator/software.

Interest Rate Risk - Mathematical Framework#

🤖 AI Copilot Activity: Ask your AI copilot: “Help me understand why bond prices move inversely to interest rates and how to measure this sensitivity. What is duration and why is it crucial for bond portfolio management? How do investors use duration to manage interest rate risk?”

Price-Yield Relationship (Fundamental Bond Principle)

Bond prices and yields move in opposite directions due to the present value mathematics:

  • When interest rates rise: Required returns increase, present value of future cash flows decreases, bond prices fall

  • When interest rates fall: Required returns decrease, present value of future cash flows increases, bond prices rise

Duration - Primary Risk Measure

Modified Duration measures the percentage change in bond price for a 1% change in yield.

  • Formula: Modified Duration = Duration / (1 + YTM)

  • Interpretation: If modified duration = 7.2, a 1% increase in rates causes approximately 7.2% decrease in price

  • Use: Portfolio risk management and hedging decisions

Macaulay Duration measures the weighted average time to receive cash flows.

  • Formula: Duration = Σ[t × PV(Ct)] / Bond Price

  • Where: t = time period, PV(Ct) = present value of cash flow at time t

  • Interpretation: Average maturity of the bond’s cash flows

Duration Properties:

  1. Higher duration = greater interest rate sensitivity

  2. Longer maturity generally increases duration

  3. Lower coupon rates increase duration

  4. Higher yields decrease duration

Convexity - Advanced Risk Measure

  • Definition: Measures the curvature of the price-yield relationship

  • Importance: Duration assumes linear relationship, but actual relationship is curved

  • Application: Improves accuracy of price change estimates for large yield changes

  • Formula: Price Change ≈ -Duration × Yield Change + 0.5 × Convexity × (Yield Change)²

Credit Risk Analysis - Complete Framework#

Default Risk Assessment

  • Credit Ratings: Systematic evaluation of issuer’s ability to pay

  • Spread Analysis: Yield difference between corporate and government bonds

  • Credit Quality Migration: How ratings change over time

  • Recovery Rates: Expected percentage recovery if default occurs

Credit Spread Components:

  • Default Risk Premium: Compensation for possibility of default

  • Liquidity Premium: Extra yield for less liquid bonds

  • Tax Considerations: Municipal bonds often trade at lower yields due to tax advantages

Yield Curve Analysis - Advanced Framework#

Yield Curve Construction

  • Definition: Graph showing yields for bonds of different maturities but similar credit quality

  • Normal Curve: Upward sloping (longer maturities have higher yields)

  • Inverted Curve: Downward sloping (shorter maturities have higher yields)

  • Flat Curve: Similar yields across all maturities

Theories of Yield Curve Shape:

  1. Expectations Theory: Curve shape reflects expected future interest rates

  2. Liquidity Preference: Investors demand premium for longer-term bonds

  3. Market Segmentation: Different investors prefer different maturity ranges

Section 3: The Investment Gym - Partner Practice & AI Copilot Learning#

Solo Practice Problems (10-15 minutes)#

Problem 1: Basic Bond Valuation Calculate the price of a bond with:

  • Face Value: $1,000

  • Coupon Rate: 5%

  • Maturity: 4 years

  • Required Return: 6%

  • Payment: Annual

Show all steps in your calculation.

Problem 2: Yield Calculations A $1,000 face value bond with 7% coupon rate currently trades at $1,050:

  1. Calculate the current yield

  2. If the bond matures in 5 years, estimate whether YTM is above or below the coupon rate

  3. Explain the relationship between price, coupon rate, and YTM

Problem 3: Duration and Interest Rate Sensitivity Two bonds have the following characteristics:

  • Bond A: 3-year maturity, 6% coupon, duration = 2.8

  • Bond B: 10-year maturity, 6% coupon, duration = 7.4

If interest rates increase by 1.5%, estimate the price change for each bond.

AI Copilot Learning Phase (10-15 minutes)#

🤖 AI Copilot Learning Prompt: “Act as a fixed-income portfolio manager and help me understand the practical application of bond valuation and interest rate risk management. I need to explore: 1) How do professional bond managers use duration and convexity to manage portfolio risk? 2) What factors beyond credit ratings affect bond pricing in real markets? 3) How should individual investors think about fixed-income allocation in different interest rate environments? Prepare me to explain these concepts clearly to a peer, focusing on both the mathematical foundations and practical portfolio management applications.”

Student Preparation Task: Work with AI to master these concepts, then prepare to teach:

  • The mathematical relationship between interest rates and bond prices

  • How to use duration to measure and manage interest rate risk

  • The process of evaluating bonds for portfolio inclusion

Reciprocal Teaching Component (15-20 minutes)#

Structured Roles:

  • Bond Analyst: Explain valuation mathematics and yield calculations

  • Risk Manager: Focus on duration, convexity, and interest rate sensitivity

  • Portfolio Manager: Address how bond analysis fits into overall portfolio construction

Teaching Requirements: Each student must explain:

  1. Mathematical Logic: Why do bond prices move inversely to interest rates?

  2. Valuation Process: How do you calculate the fair value of a bond using present value techniques?

  3. Risk Management: How does duration help investors manage interest rate risk?

Peer Teaching Scenario: “Your partner is Sarah trying to understand why her ‘safe’ bond investment lost money. Explain the relationship between interest rates and bond prices, how to calculate a bond’s sensitivity to rate changes, and what this means for portfolio management.”

Collaborative Challenge Problem (15-20 minutes)#

The Fixed-Income Allocation Challenge

Your team advises three clients who need to optimize their bond allocations:

Available Bond Options:

  • Short-Term Treasury: 2-year maturity, 4.5% yield, duration = 1.9

  • Intermediate Corporate: 7-year maturity, 5.2% yield, duration = 6.1, AA-rated

  • Long-Term Treasury: 20-year maturity, 4.8% yield, duration = 14.2

  • High-Yield Corporate: 5-year maturity, 7.8% yield, duration = 4.2, BB-rated

Interest Rate Environment:

  • Current 10-year Treasury: 4.6%

  • Federal Reserve expected to raise rates 0.75% over next 12 months

  • Economic uncertainty moderate but increasing

Client Profiles:

  • Conservative Retiree: Age 68, needs steady income, cannot afford principal losses

  • Moderate Investor: Age 45, balanced approach, can accept some volatility for higher returns

  • Defensive Investor: Age 35, primarily equity-focused but wants bond hedge against stock volatility

Challenge Questions:

  1. For each client, recommend optimal bond allocation considering duration risk

  2. Calculate expected price impact if interest rates rise 0.75% as projected

  3. Justify allocation decisions using duration, credit quality, and yield analysis

  4. Design rebalancing strategy for changing interest rate environment

Robinhood Integration (15 minutes)#

Platform Bond Analysis:

  1. Yield Curve Research: Examine current Treasury yield curve

  2. ETF Duration Analysis: Look up duration and yield data for major bond ETFs

  3. Credit Spread Investigation: Compare yields between Treasury and corporate bond ETFs

Debrief Discussion (10 minutes)#

Key Insights:

  • Bond valuation requires understanding present value mathematics and interest rate relationships

  • Duration provides essential tool for measuring and managing interest rate risk

  • Credit analysis adds second dimension to bond evaluation beyond interest rate sensitivity

  • Fixed-income strategy must consider both income generation and capital preservation goals

Section 4: The Investment Coaching - Your DRIVER Learning Guide#

Coaching Scenario: “Should Sarah Avoid Bonds After Learning About Interest Rate Risk?”#

Sarah now understands why her bond investment lost money when interest rates rose, but she’s questioning whether bonds belong in her portfolio at all. She needs to make informed decisions about fixed-income allocation in a rising rate environment.

Define & Discover#

🤖 DRIVER Stage 1: Structured Prompt Starters

Step 1 - Context Exploration Prompt: “Act as a fixed-income strategist and help me explore the context of bond investing in different interest rate environments. What are the key factors that make bond allocation complex for different types of investors? What has research shown about optimal fixed-income strategies across various market cycles and investor life stages?”

Step 2 - Problem Framing Prompt: “Help me frame Sarah’s specific bond allocation decision systematically: 1) What are the key trade-offs between interest rate risk and diversification benefits for a 22-year-old investor? 2) How should duration, credit quality, and yield considerations influence bond selection? 3) What criteria should guide the choice between individual bonds, bond funds, and bond ETFs? 4) How do current interest rate levels and Federal Reserve policy affect optimal bond strategy?”

Step 3 - Verification and Refinement Prompt: “Review my problem framing for Sarah’s fixed-income investment decisions. Is this framework comprehensive and practical for a young investor? What important bond analysis considerations might I be missing? How can I make this analysis more actionable for someone building their first bond allocation?”

Problem Framing:

  • Objective: Determine appropriate fixed-income allocation that balances diversification benefits with interest rate risk

  • Constraints: 22-year-old timeline, limited bond knowledge, current rising rate environment

  • Variables: Duration target, credit quality preferences, allocation percentage, implementation vehicle

  • Success Criteria: Portfolio diversification, income generation, manageable volatility, easy implementation

Represent#

🤖 DRIVER Stage 2: Structured Prompt Starters

Step 1 - Visualization Planning Prompt: “Help me create a logical visual structure for Sarah’s bond investment analysis. I need to map the decision flow from interest rate environment through duration analysis to specific bond selection. What would be the most effective way to visualize the relationship between yield, duration, credit quality, and portfolio role?”

Step 2 - Model Structure Prompt: “Help me design the logical framework for evaluating bonds within a portfolio context. What are the key steps in moving from macroeconomic interest rate analysis to specific bond selection? How should I structure the comparison between different bond types and implementation approaches?”

Step 3 - Logic Verification Prompt: “Review my logical structure for Sarah’s bond analysis. Does this framework capture the key considerations for fixed-income investing in a rising rate environment? What am I missing in terms of risk management, yield optimization, or practical implementation?”

Visual Mapping:

Bond Investment Decision Framework:

Interest Rate Environment Assessment
├── Rising Rates (favor shorter duration)
├── Stable Rates (moderate duration acceptable)
└── Falling Rates (longer duration beneficial)
    ↓
Portfolio Role Definition
├── Diversification (low correlation with stocks)
├── Income Generation (current yield focus)
└── Capital Preservation (high credit quality)
    ↓
Implementation Strategy
├── Individual Bonds (direct control)
├── Bond Funds (professional management)
└── Bond ETFs (liquidity and transparency)

Implement#

🤖 DRIVER Stage 3: Structured Prompt Starters

Step 1 - Implementation Planning Prompt: “Help me plan the implementation of Sarah’s bond analysis and valuation system. I need to create Python code that can value bonds, calculate duration and yield measures, and assess interest rate sensitivity. What object-oriented design would work best? What financial calculations need to be implemented with precision?”

Step 2 - Code Development Prompt: “Help me implement the bond valuation code step by step. Start with a class structure for managing bond characteristics and valuation, then add methods for yield calculations, duration analysis, and scenario testing. Make sure the code handles both individual bonds and portfolio-level analysis clearly.”

Step 3 - Code Review and Enhancement Prompt: “Review my bond valuation implementation code for both technical accuracy and practical usability. Are the financial calculations correct? How can I make the code more robust and educational? What additional features would make this tool more useful for fixed-income analysis?”

⚠️ CODE LEARNING NOTE: The following code is intentionally simplified for educational purposes and may contain incomplete logic or potential errors. Your job is to work with your AI copilot to:

  1. Understand each line of code and its financial purpose

  2. Verify the bond valuation and duration calculations against financial theory

  3. Identify any limitations or potential improvements

  4. Test the code with different bond characteristics and interest rate scenarios

  5. Enhance the code to handle edge cases and make it more comprehensive

Remember: Learning comes from analyzing and improving the code, not just copying it!

Python Code Example:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime, timedelta

class BondAnalyzer:
    def __init__(self, face_value=1000, coupon_rate=0.05, years_to_maturity=5, 
                 payments_per_year=2, current_yield_environment=0.06):
        """
        Initialize bond analyzer with bond characteristics
        
        Parameters:
        face_value: Bond face value (default \$1000)
        coupon_rate: Annual coupon rate (decimal)
        years_to_maturity: Years until bond matures
        payments_per_year: Coupon payment frequency (1=annual, 2=semi-annual)
        current_yield_environment: Current market yield for similar bonds
        """
        self.face_value = face_value
        self.coupon_rate = coupon_rate
        self.years_to_maturity = years_to_maturity
        self.payments_per_year = payments_per_year
        self.market_yield = current_yield_environment
        
        # Calculate derived properties
        self.total_periods = years_to_maturity * payments_per_year
        self.coupon_payment = (face_value * coupon_rate) / payments_per_year
        self.period_yield = current_yield_environment / payments_per_year
        
    def calculate_bond_price(self, market_yield=None):
        """
        Calculate bond price using present value of cash flows
        """
        if market_yield is None:
            market_yield = self.market_yield
            
        period_yield = market_yield / self.payments_per_year
        
        # Present value of coupon payments (annuity)
        if period_yield == 0:
            pv_coupons = self.coupon_payment * self.total_periods
        else:
            pv_coupons = self.coupon_payment * (
                (1 - (1 + period_yield) ** (-self.total_periods)) / period_yield
            )
        
        # Present value of face value (lump sum)
        pv_face_value = self.face_value / ((1 + period_yield) ** self.total_periods)
        
        bond_price = pv_coupons + pv_face_value
        return bond_price
    
    def calculate_current_yield(self, market_price=None):
        """
        Calculate current yield (annual coupon / current price)
        """
        if market_price is None:
            market_price = self.calculate_bond_price()
            
        annual_coupon = self.face_value * self.coupon_rate
        current_yield = annual_coupon / market_price
        return current_yield
    
    def calculate_yield_to_maturity(self, market_price=None, precision=0.0001):
        """
        Calculate YTM using iterative approximation (Newton-Raphson method)
        """
        if market_price is None:
            market_price = self.calculate_bond_price()
        
        # Initial guess
        ytm_guess = self.coupon_rate
        
        for iteration in range(100):  # Maximum iterations
            price_at_guess = self.calculate_bond_price(ytm_guess)
            price_diff = price_at_guess - market_price
            
            if abs(price_diff) < precision:
                return ytm_guess
            
            # Calculate derivative (price sensitivity to yield change)
            ytm_up = ytm_guess + 0.0001
            price_up = self.calculate_bond_price(ytm_up)
            derivative = (price_up - price_at_guess) / 0.0001
            
            # Newton-Raphson update
            if derivative != 0:
                ytm_guess = ytm_guess - (price_diff / derivative)
            else:
                break
                
        return ytm_guess
    
    def calculate_macaulay_duration(self, market_yield=None):
        """
        Calculate Macaulay duration (weighted average time to cash flows)
        """
        if market_yield is None:
            market_yield = self.market_yield
            
        period_yield = market_yield / self.payments_per_year
        bond_price = self.calculate_bond_price(market_yield)
        
        weighted_time = 0
        
        # Calculate weighted present value of each coupon payment
        for period in range(1, self.total_periods + 1):
            time_in_years = period / self.payments_per_year
            cash_flow = self.coupon_payment
            
            # Add face value to final payment
            if period == self.total_periods:
                cash_flow += self.face_value
                
            present_value = cash_flow / ((1 + period_yield) ** period)
            weighted_time += (time_in_years * present_value)
            
        macaulay_duration = weighted_time / bond_price
        return macaulay_duration
    
    def calculate_modified_duration(self, market_yield=None):
        """
        Calculate modified duration (price sensitivity to yield changes)
        """
        if market_yield is None:
            market_yield = self.market_yield
            
        macaulay_duration = self.calculate_macaulay_duration(market_yield)
        modified_duration = macaulay_duration / (1 + market_yield / self.payments_per_year)
        return modified_duration
    
    def estimate_price_change(self, yield_change, market_yield=None):
        """
        Estimate price change for given yield change using duration
        """
        modified_duration = self.calculate_modified_duration(market_yield)
        estimated_price_change_percent = -modified_duration * yield_change
        
        current_price = self.calculate_bond_price(market_yield)
        estimated_new_price = current_price * (1 + estimated_price_change_percent)
        
        return {
            'estimated_price_change_percent': estimated_price_change_percent,
            'estimated_new_price': estimated_new_price,
            'current_price': current_price
        }
    
    def scenario_analysis(self, yield_scenarios):
        """
        Analyze bond performance under different yield scenarios
        """
        results = []
        
        for scenario_name, new_yield in yield_scenarios.items():
            new_price = self.calculate_bond_price(new_yield)
            current_price = self.calculate_bond_price()
            price_change = (new_price - current_price) / current_price
            
            # Duration-based estimate
            duration_estimate = self.estimate_price_change(new_yield - self.market_yield)
            
            results.append({
                'scenario': scenario_name,
                'new_yield': new_yield,
                'new_price': new_price,
                'price_change_percent': price_change,
                'duration_estimate_percent': duration_estimate['estimated_price_change_percent'],
                'estimation_error': abs(price_change - duration_estimate['estimated_price_change_percent'])
            })
            
        return pd.DataFrame(results)
    
    def generate_bond_report(self):
        """
        Generate comprehensive bond analysis report
        """
        current_price = self.calculate_bond_price()
        current_yield = self.calculate_current_yield(current_price)
        ytm = self.calculate_yield_to_maturity(current_price)
        mac_duration = self.calculate_macaulay_duration()
        mod_duration = self.calculate_modified_duration()
        
        print("\n" + "="*50)
        print("BOND ANALYSIS REPORT")
        print("="*50)
        
        print(f"\nBOND CHARACTERISTICS:")
        print(f"Face Value: ${self.face_value:,.2f}")
        print(f"Coupon Rate: {self.coupon_rate:.2%}")
        print(f"Years to Maturity: {self.years_to_maturity}")
        print(f"Payment Frequency: {self.payments_per_year}x per year")
        print(f"Annual Coupon Payment: ${self.face_value * self.coupon_rate:,.2f}")
        
        print(f"\nVALUATION METRICS:")
        print(f"Current Market Yield: {self.market_yield:.2%}")
        print(f"Calculated Bond Price: ${current_price:,.2f}")
        print(f"Price as % of Par: {current_price/self.face_value:.1%}")
        
        print(f"\nYIELD ANALYSIS:")
        print(f"Current Yield: {current_yield:.2%}")
        print(f"Yield to Maturity: {ytm:.2%}")
        print(f"Yield vs. Coupon: {'Premium' if ytm < self.coupon_rate else 'Discount' if ytm > self.coupon_rate else 'Par'}")
        
        print(f"\nRISK METRICS:")
        print(f"Macaulay Duration: {mac_duration:.2f} years")
        print(f"Modified Duration: {mod_duration:.2f}")
        print(f"Price Sensitivity: {mod_duration:.1f}% per 1% yield change")
        
        # Scenario analysis
        scenarios = {
            'Rates Rise 1%': self.market_yield + 0.01,
            'Rates Rise 2%': self.market_yield + 0.02,
            'Rates Fall 1%': self.market_yield - 0.01,
            'Rates Fall 2%': self.market_yield - 0.02
        }
        
        scenario_df = self.scenario_analysis(scenarios)
        print(f"\nSCENARIO ANALYSIS:")
        for _, row in scenario_df.iterrows():
            print(f"{row['scenario']:>15}: {row['price_change_percent']:>6.1%} price change")
            
        return {
            'bond_price': current_price,
            'current_yield': current_yield,
            'ytm': ytm,
            'macaulay_duration': mac_duration,
            'modified_duration': mod_duration,
            'scenarios': scenario_df
        }

# Example Usage: Sarah's Bond Analysis
def analyze_sarahs_bond_options():
    """Analyze different bond options for Sarah's portfolio"""
    
    print("Analyzing Bond Options for Sarah's Portfolio")
    print("Current Interest Rate Environment: Rising rates expected")
    
    # Define bond options
    bond_options = {
        'Short-Term Treasury': BondAnalyzer(1000, 0.045, 2, 2, 0.048),
        'Intermediate Corporate': BondAnalyzer(1000, 0.052, 7, 2, 0.055),
        'Long-Term Treasury': BondAnalyzer(1000, 0.042, 20, 2, 0.046)
    }
    
    # Analyze each option
    analysis_results = {}
    for bond_name, bond_analyzer in bond_options.items():
        print(f"\n{'='*20} {bond_name} {'='*20}")
        results = bond_analyzer.generate_bond_report()
        analysis_results[bond_name] = results
    
    return analysis_results

# AI Collaboration for Enhancement
print("Bond Analysis Complete!")
print("Work with your AI copilot to enhance this analysis:")
print("1. Add credit risk analysis and rating considerations")
print("2. Include tax implications for different bond types")
print("3. Build yield curve analysis and positioning strategies")
print("4. Implement portfolio-level duration and risk management")

Validate#

🤖 DRIVER Stage 4: Structured Prompt Starters

Step 1 - Validation Planning Prompt: “Act as a fixed-income risk manager and help me design comprehensive validation tests for this bond valuation model. What benchmarks should I compare against? What are the most important edge cases to test? How do professional bond managers validate their valuation models?”

Step 2 - Testing Strategy Prompt: “Help me create specific validation tests for Sarah’s bond analysis. I need to test: 1) Accuracy of bond pricing calculations against market data, 2) Duration estimates vs. actual price sensitivity, 3) Yield calculations vs. financial data providers, 4) Scenario analysis reliability under different interest rate environments. What specific metrics should I track?”

Step 3 - Results Interpretation Prompt: “Help me interpret the validation results for my bond valuation model. What do the test outcomes tell me about when to trust vs. question my calculations? What limitations should I acknowledge? How should this analysis influence practical bond investment decisions?”

Evolve#

🤖 DRIVER Stage 5: Structured Prompt Starters

Step 1 - Pattern Recognition Prompt: “Help me identify the core analytical patterns from this bond valuation that apply to other fixed-income contexts. What is the fundamental present value framework we used? How does this discounted cash flow approach extend to other types of fixed-income analysis?”

Step 2 - Application Extension Prompt: “Now that I understand this bond valuation framework, help me identify other contexts where this same analytical approach applies. Consider preferred stocks, REITs, dividend-paying stocks, and mortgage-backed securities. What are the similarities and differences in cash flow analysis?”

Step 3 - Integration and Advancement Prompt: “Help me connect this bond valuation framework to more advanced fixed-income concepts. How does this foundation prepare me for yield curve strategies, credit analysis, and institutional bond portfolio management? What should I learn next to build on this analytical foundation?”

Reflect#

🤖 DRIVER Stage 6: Structured Prompt Starters

Step 1 - Learning Synthesis Prompt: “Act as a fixed-income mentor and help me consolidate the key lessons from this bond valuation analysis. What fundamental principles about present value and interest rate risk did we demonstrate? What was most important about the systematic approach we used? How did this analysis change my understanding of ‘safe’ investments?”

Step 2 - Application Planning Prompt: “Help me identify how I can apply this bond analysis framework to real-world investment decisions and future learning. What specific next steps should I take to implement these concepts? What other DRIVER applications would strengthen my fixed-income analysis skills? How does this foundation prepare me for advanced investment strategies?”

Step 3 - Meta-Learning Reflection Prompt: “Help me reflect on my learning process during this bond valuation analysis. What aspects of the mathematical framework were most challenging? Which concepts connected most clearly to previous sessions? How can I improve my quantitative analysis and AI collaboration for future investment problems?”

Section 5: The Investment Game - Financial Detective Work#

Part A: Recognition Scenarios (15 minutes)#

Bond Analysis Recognition: Identify the appropriate bond concept being applied in each scenario:

  1. Scenario: Portfolio manager reduces average portfolio duration from 7 years to 4 years Question: What market condition likely drove this decision? Options: Rising rates expected, Credit concerns, Liquidity needs, Tax optimization

  2. Scenario: Investor chooses AA-rated corporate bonds yielding 5.2% over Treasury bonds yielding 4.6% Question: What analysis framework justifies this 60 basis point spread? Options: Duration matching, Credit risk premium, Liquidity preference, Tax considerations

  3. Scenario: Pension fund ladders bond maturities across 10 years rather than concentrating in 5-year bonds Question: What risk management principle does this strategy address? Options: Interest rate risk, Credit risk, Liquidity risk, Reinvestment risk

Part B: Full DRIVER Application (30 minutes)#

Case Study: The Rising Rate Challenge

Michael, 45, has $150,000 in bond investments and is concerned about rising interest rates. His current allocation:

Current Bond Holdings:

  • Long-Term Treasury ETF (TLT): $60,000, duration ≈ 17 years, current yield 4.4%

  • Corporate Bond Fund: $50,000, duration ≈ 6 years, current yield 5.1%

  • High-Yield Bond ETF: $40,000, duration ≈ 4 years, current yield 7.8%

Market Environment:

  • Federal Reserve projecting 1.5% rate increases over next 18 months

  • Economic uncertainty moderate, credit spreads stable

  • Inflation expectations rising from 2.5% to 3.2%

Michael’s Situation:

  • Investment Goal: Preserve capital while generating income

  • Risk Tolerance: Moderate (can accept 5-8% portfolio volatility)

  • Time Horizon: 20 years to retirement

  • Income Needs: Wants $6,000 annual income from bond portfolio

Your Challenge: Apply the complete DRIVER framework to redesign Michael’s bond allocation.

🤖 Assignment Reminder: Work closely with your AI copilot throughout this analysis, using the structured prompts provided for each DRIVER stage.

Primary Deliverable: YouTube Video Presentation (8-12 minutes)

Your main assignment is a YouTube video presentation that demonstrates mastery of both bond valuation theory and practical portfolio management.

Required Video Components:

  1. Financial Analysis Section (4-6 minutes):

    • Clear explanation of how you analyzed Michael’s duration risk using bond valuation principles

    • Demonstration of yield and duration calculations for current holdings

    • Recommended optimal allocation with justification based on interest rate sensitivity analysis

    • Discussion of how rising rate environment affects bond selection strategy

  2. Technical Implementation Section (4-6 minutes):

    • Step-by-step walkthrough of your bond valuation and portfolio analysis code

    • Explanation of duration calculations and scenario testing methodology

    • Demonstration of code execution with Michael’s specific holdings and constraints

    • Sensitivity analysis showing impact of different interest rate scenarios

  3. Integration & Conclusion (1-2 minutes):

    • How the quantitative bond analysis results inform your allocation recommendations

    • Trade-offs between income generation and interest rate risk management

    • Connection to broader portfolio construction principles from previous sessions

Written Supplement: AI Collaboration Reflection (200 words) Along with your video, submit a brief written reflection addressing:

  1. Most Valuable Prompt: Which specific AI prompt from this session was most helpful for your learning?

  2. Prompt Improvement: How would you modify or improve that prompt for future use?

  3. Learning Process: How did working with your AI copilot change your understanding of bond valuation compared to working alone?

Section 6: Reflect & Connect - Fixed-Income Investment Insights Discussion#

Individual Reflection (5 minutes)#

Reflection Prompts:

  1. How did learning bond valuation mathematics change your understanding of “safe” investments?

  2. What surprised you most about the relationship between interest rates and bond prices?

  3. Which aspect of duration analysis was most challenging to explain to others?

Pair Discussion (10 minutes)#

Discussion Questions:

  • Compare your bond analysis results - what factors drove different duration recommendations?

  • Discuss: “When do bonds provide diversification benefits vs. when do they add unwanted risk?”

  • Share insights: What made the present value calculations most meaningful for investment decisions?

Class Synthesis (10 minutes)#

Key Insights:

  • Bond valuation requires systematic mathematical analysis, not just yield comparison

  • Duration provides essential quantitative tool for managing interest rate risk

  • Present value framework reveals why bond prices fluctuate and enables informed decisions

  • Fixed-income strategy must balance income generation with capital preservation goals

Section 7: Looking Ahead - From Fixed-Income to Equity Valuation#

Skills Developed Today#

  • Applied present value mathematics to bond valuation and portfolio decisions

  • Analyzed duration and interest rate sensitivity for risk management

  • Implemented comprehensive bond analysis using Python and financial modeling

  • Evaluated fixed-income strategies in different interest rate environments

Bridge to Session 6#

Now that we understand HOW to value fixed-income securities using discounted cash flows, Session 6 addresses equity valuation using similar but more complex analytical frameworks.

The Next Challenge: “I can value bonds because they have predictable cash flows, but how do I value stocks where dividends and earnings are uncertain and potentially growing? How do I determine if a stock is overvalued or undervalued?”

Pattern Evolution Preview#

The present value framework from today becomes the foundation for equity valuation in Session 6. We’ll modify our cash flow analysis to handle uncertain and growing payments, moving from bond mathematics to stock valuation models.

Preparation for Next Session#

  • Review dividend discount model concepts

  • Think about this question: “How would you value a stock that pays growing dividends vs. one that pays no dividends?”

Section 8: Appendix - Fixed-Income Solutions & Implementation Guide#

Solutions to Practice Problems#

Basic Bond Valuation:

  • Bond Price = PV(coupons) + PV(principal)

  • Annual coupons: $50 for 4 years

  • PV = $50/1.06 + $50/1.06² + $50/1.06³ + $1,050/1.06⁴ = $965.35

  • Bond trades at discount (below par) because market yield > coupon rate

Yield Calculations:

  • Current Yield = $70/$1,050 = 6.67%

  • YTM < 7% coupon rate (bond trading at premium)

  • When price > par, YTM < coupon rate

Duration and Price Sensitivity:

  • Bond A: 1.5% rate increase × 2.8 duration = -4.2% price change

  • Bond B: 1.5% rate increase × 7.4 duration = -11.1% price change

  • Longer duration bonds show greater interest rate sensitivity

Video Presentation Rubric for Session 5#

Financial Explanation (40%)

  • Excellent: Clear explanation of bond valuation principles, duration analysis, interest rate risk with supporting quantitative evidence

  • Good: Solid understanding of fixed-income concepts with minor gaps in explanation

  • Needs Work: Basic understanding but unclear explanations or missing key valuation foundations

  • Inadequate: Fundamental misunderstanding of bond mathematics or valuation principles

Technical Implementation (40%)

  • Excellent: Working bond valuation code, clear cash flow analysis, appropriate use of duration calculations

  • Good: Mostly functional implementation with minor issues, clear technical approach

  • Needs Work: Partially working code, unclear valuation methodology

  • Inadequate: Non-functional code or major technical errors in bond analysis

Integration & Communication (20%)

  • Excellent: Seamless connection between bond theory and practical portfolio allocation decisions

  • Good: Clear connections made between valuation results and investment recommendations

  • Needs Work: Some integration but gaps in connecting theory to practice

  • Inadequate: No clear integration between mathematical analysis and practical implementation

Implementation Guide#

Fixed-Income Teaching Points:

  • Emphasize that bond math reveals true investment characteristics

  • Show practical application of duration for portfolio risk management

  • Connect present value concepts to real-world interest rate changes

  • Demonstrate yield calculations using actual market data

Common Student Errors:

  • Confusing current yield with yield to maturity

  • Misunderstanding inverse relationship between rates and prices

  • Overcomplicating duration calculations

  • Ignoring credit risk when focusing on interest rate risk

AI Collaboration Best Practices:

  • Require students to validate bond calculations against financial theory

  • Encourage exploration of different interest rate scenarios

  • Document assumptions underlying valuation models

  • Test sensitivity to key inputs (yields, credit quality, maturity)

Extension Activities#

Advanced Analysis:

  • Callable bond valuation with embedded options

  • Municipal bond tax-equivalent yield analysis

  • International bond analysis with currency risk

  • Mortgage-backed securities and prepayment risk

Real-World Applications:

  • Analyze Fed policy impact on different duration sectors

  • Compare bond mutual funds vs. ETFs vs. individual bonds

  • Investigate corporate credit analysis and rating changes

  • Explore inflation-protected securities (TIPS) valuation

Preparation for Session 6:

  • Review basic equity valuation concepts (P/E ratios, dividend yields)

  • Download historical stock price and dividend data for major companies

  • Explore financial statement fundamentals (income, balance sheet, cash flow)

  • Research dividend growth rates for blue-chip dividend-paying stocks