commit 01523d97f1facfc5d7ab6fb9c7555f42b9bb3dc7 Author: - <-> Date: Thu Feb 8 21:14:16 2024 -0800 initial answer from chatgpt diff --git a/amort.py b/amort.py new file mode 100644 index 0000000..b0553ec --- /dev/null +++ b/amort.py @@ -0,0 +1,56 @@ +def generate_amortization_schedule(principal, interest_rate, loan_term, one_time_payment=None): + # Convert interest rate to decimal and calculate periodic interest rate + monthly_interest_rate = interest_rate / 12 / 100 + + # Calculate the number of monthly payments + num_payments = loan_term * 12 + + # Calculate the fixed monthly payment using the amortization formula + monthly_payment = (principal * monthly_interest_rate) / (1 - (1 + monthly_interest_rate) ** -num_payments) + + # Initialize variables + remaining_balance = principal + amortization_schedule = [] + + for payment_number in range(1, num_payments + 1): + # Calculate interest for the current period + interest_payment = remaining_balance * monthly_interest_rate + + # Calculate principal payment + principal_payment = monthly_payment - interest_payment + + # Apply one-time payment if provided + if one_time_payment and payment_number == one_time_payment['payment_number']: + principal_payment += one_time_payment['amount'] + remaining_balance -= one_time_payment['amount'] + + # Update remaining balance + remaining_balance -= principal_payment + + # Create a dictionary with payment details and add it to the amortization schedule + payment_details = { + 'Payment Number': payment_number, + 'Payment Amount': monthly_payment, + 'Interest Payment': interest_payment, + 'Principal Payment': principal_payment, + 'Remaining Balance': remaining_balance + } + amortization_schedule.append(payment_details) + + return amortization_schedule + +# Example usage +principal = 100000 +interest_rate = 5.0 +loan_term = 30 + +one_time_payment = { + 'payment_number': 13, + 'amount': 5000 +} + +schedule = generate_amortization_schedule(principal, interest_rate, loan_term, one_time_payment) + +# Display the amortization schedule +for payment in schedule: + print(payment)