Mortgage Calculator Shiny Application

  • Introduction
    • A user-friendly Shiny app for mortgage calculations.
    • Helps users understand long-term financial commitments.
    • Provides visual representation of loan amortization.
  • Features
    • Input fields for loan details.
    • Instant calculation of monthly payments.
    • Total interest paid over loan term.
    • Interactive amortization schedule plot.
    • Built-in documentation for ease of use.

How it works main code logic Slide

calculate_mortgage <- function(loan_amount, annual_rate, term_years) {
  monthly_rate <<- annual_rate / (12 * 100)
  num_payments <<- term_years * 12
  monthly_payment <<- (loan_amount * monthly_rate * (1 + monthly_rate)^num_payments) / 
                     ((1 + monthly_rate)^num_payments - 1)
  loan_amount <<- loan_amount
  total_paid <- monthly_payment * num_payments
  total_interest <- total_paid - loan_amount
  list(monthly_payment = monthly_payment, total_interest = total_interest)
}
result <- calculate_mortgage(200000, 3.5, 30)
balance <<- numeric(num_payments) 
interest <<- numeric(num_payments)
principal <<- numeric(num_payments)

cat("Monthly payment: $", round(result$monthly_payment, 2), "\n")
## Monthly payment: $ 898.09
cat("Total interest: $", round(result$total_interest, 2))
## Total interest: $ 123312.2

Visualization Slide

balance[1] <- loan_amount
for (i in 1:num_payments) {
  interest[i] <- balance[i] * monthly_rate
  principal[i] <- monthly_payment - interest[i]
  if (i < num_payments) balance[i+1] <- balance[i] - principal[i]
}
df <- data.frame(
  Month = 1:num_payments, Balance = balance, Interest = cumsum(interest),
  Principal = cumsum(principal)
)

Visualization Slide