ChatGPT as a Surveillance Analyst: Deeper Down the Rabbit Hole, Continuing to Explore AMCAR 2020-3
Leveraging AI for Advanced Analysis: Exploring Prepayments in the Subprime Auto Market
In our previous article, Navigating Subprime Auto Deals: A Deep Dive into AmeriCredit 2020-3, we introduced you to the world of subprime auto loan securitizations and began exploring the details of the AMCAR 2020-3 deal with ChatGPT on our side. In this follow-up post, we'll delve deeper into the complexities of the subprime auto market, with a special focus on analyzing recovery rates, loss severity, prepayments, and monitoring credit enhancement levels. ChatGPT will assist us in uncovering valuable insights as we venture further down the rabbit hole. So, buckle up and join us on this exciting exploration!
So where do we go next? Let’s ask our Auto Loan Expert!
For this AMCAR 2020-3 deal, let's talk about evaluating other aspects of the DBRS Morningstar surveillance process, such as calculating recovery rates, loss severity, and prepayments, as well as monitoring credit enhancement levels. How could we approach evaluating the performance of those characteristics?
When evaluating the performance of AMCAR 2020-3 with respect to recovery rates, loss severity, prepayments, and credit enhancement levels, we can follow the steps below:
Recovery Rates: Examine the historical recovery rates for the collateral in the deal. Recovery rates are the percentage of the outstanding loan balance recovered after a default. Compare these rates with the initial assumptions made in the rating report. Also, consider factors such as vehicle type, depreciation, and changes in used car values that could influence recovery rates.
Loss Severity: Loss severity is the percentage of loss that the investors incur when a borrower defaults on a loan. It is calculated as (1 - Recovery Rate). Analyze the historical loss severity data for the underlying loans, and compare them to the initial assumptions. Consider factors such as loan-to-value (LTV) ratios, credit scores, and vehicle types, as they can influence loss severity.
Prepayments: Monitor the prepayment speeds in the collateral pool. Prepayment speeds measure how quickly borrowers are repaying their loans before the scheduled maturity date. Compare the actual prepayment speeds with the initial assumptions in the rating report. Factors such as interest rates, economic conditions, and borrower behavior can affect prepayment speeds.
Credit Enhancement Levels: Monitor the credit enhancement levels throughout the life of the transaction. Credit enhancement is a structural feature that provides additional protection to investors against losses. It can be in the form of overcollateralization, subordination, excess spread, or reserve accounts. Compare the current credit enhancement levels with the initial assumptions and analyze how they have evolved over time. Assess if these levels are sufficient to protect the senior tranches from losses under various stress scenarios.
Performance Metrics: Keep track of key performance metrics such as delinquency rates, default rates, and cumulative net losses. Compare these metrics to the initial assumptions in the rating report to assess the overall performance of the deal.
Periodic Surveillance Reports: Review periodic surveillance reports provided by the rating agency (in this case, DBRS Morningstar). These reports typically contain updated performance metrics, including delinquency rates, cumulative net losses, and credit enhancement levels. They can also provide insights into the rating agency's view of the transaction's performance and any potential rating changes.
By monitoring these aspects and comparing them to the initial assumptions in the rating report, you can effectively evaluate the performance of the AMCAR 2020-3 deal and assess its credit risk over time.
As a reminder, while I have experience in this space, I am not an analyst! In a way, this post not only aims to explore whether we can teach ChatGPT to be a surveillance analyst but also serves as an opportunity for me to learn alongside the AI. To me, Prepayments seems like an excellent starting point. The necessary underlying data should be accessible in the raw loan level auto data we previously examined; we'll just need to perform some calculations on it. Let's discover what ChatGPT knows about that:
How can we calculate prepayment rates using the raw loan level data I showed you in the past?
To calculate prepayment rates using the raw loan level data, you will need to track the loans' scheduled and actual principal repayments. Here's how to do it:
Prepare the data: Make sure you have the following information for each loan: a. Loan ID or a unique identifier b. Principal balance at the beginning of the period c. Scheduled principal repayment for the period d. Actual principal repayment for the period
Calculate the prepayments for each loan: Prepayment = Actual principal repayment - Scheduled principal repayment
Note: If the prepayment is negative or zero, set it to zero, as it indicates that the loan is not prepaid.
Sum the prepayments across all loans: Total prepayments = Sum of all prepayments for each loan
Sum the beginning principal balances across all loans: Total beginning principal balance = Sum of all beginning principal balances for each loan
Calculate the prepayment rate: Prepayment rate = (Total prepayments / Total beginning principal balance) * 100
The result will give you the prepayment rate as a percentage for the given period. You can calculate the prepayment rate for each period (e.g., monthly, quarterly) using the loan level data, and then analyze the trends in prepayment rates over time. This will help you understand the prepayment behavior of the underlying loans in the auto loan ABS and evaluate their impact on the deal's cash flows and return profiles.
Awesome, so, now let’s remind it about the loan level file I showed it in the past. This ultimately can be grabbed from Edgar, however, dealcharts.org has a version of this that is easier to digest.
As a reminder, this is the header of the loan level data from Edgar: CIK,COMPANY_NAME,FILING_ID,FILING_DATE,CREATED_AT,FORM_SUBMISSION_ID,ASSETTYPENUMBER,ASSETNUMBER,REPORTINGPERIODBEGINNINGDATE,REPORTINGPERIODENDINGDATE…[remaining columns omitted]
Given the header of the loan level data, you can calculate the prepayment rates as follows:
Identify the relevant columns for the calculation: a. Loan ID: ASSETNUMBER b. Principal balance at the beginning of the period: REPORTINGPERIODBEGINNINGLOANBALANCEAMOUNT c. Scheduled principal repayment for the period: SCHEDULEDPRINCIPALAMOUNT d. Actual principal repayment for the period: ACTUALPRINCIPALCOLLECTEDAMOUNT
Calculate the prepayments for each loan: Prepayment = ACTUALPRINCIPALCOLLECTEDAMOUNT - SCHEDULEDPRINCIPALAMOUNT
Note: If the prepayment is negative or zero, set it to zero, as it indicates that the loan is not prepaid.
Sum the prepayments across all loans: Total prepayments = Sum of all prepayments for each loan
Sum the beginning principal balances across all loans: Total beginning principal balance = Sum of all REPORTINGPERIODBEGINNINGLOANBALANCEAMOUNT for each loan
Calculate the prepayment rate: Prepayment rate = (Total prepayments / Total beginning principal balance) * 100
By following these steps, you can calculate the prepayment rate using the loan level data for the given period. You can repeat this process for each period (e.g., monthly, quarterly) to analyze the trends in prepayment rates over time and evaluate their impact on the deal's cash flows and return profiles.
Great! Although the data I have only includes the origination period and the current reporting period, we can work with that for now. If you have access to all the data over time, it would be fascinating to follow ChatGPT's suggestion and examine trends in prepayment rates. For now, let's see if we can get ChatGPT to write some code for us, as the file I have is over 40MB. As a side note, if you'd like to explore the data yourself, you can find it in this count.co dashboard, thanks to DealCharts.
Now, let's ask ChatGPT to write some code for us!
Assuming this information was stored in a file called "AMCAR-2020-3.csv", could you write me some python code that would:
- Read in the csv file
- Find the most recent reporting date in the file
- Calculate the Prepayment Rate for each loan based on the approach you described above
- Report an Average Prepayment Rate for the deal
Here is ChatGPT’s first attempt:
import pandas as pd
# Read in the csv file
file_path = 'AMCAR-2020-3.csv'
data = pd.read_csv(file_path, low_memory=False)
# Convert 'REPORTINGPERIODENDINGDATE' to datetime
data['REPORTINGPERIODENDINGDATE'] = pd.to_datetime(data['REPORTINGPERIODENDINGDATE'])
# Find the most recent reporting date in the file
most_recent_date = data['REPORTINGPERIODENDINGDATE'].max()
# Filter data to keep only records from the most recent reporting date
recent_data = data[data['REPORTINGPERIODENDINGDATE'] == most_recent_date].copy()
# Calculate the prepayment for each loan
recent_data['Prepayment'] = recent_data['ACTUALPRINCIPALCOLLECTEDAMOUNT'] - recent_data['SCHEDULEDPRINCIPALAMOUNT']
recent_data['Prepayment'] = recent_data['Prepayment'].apply(lambda x: max(x, 0))
# Calculate the prepayment rate for each loan
recent_data['PrepaymentRate'] = recent_data['Prepayment'] / recent_data['REPORTINGPERIODBEGINNINGLOANBALANCEAMOUNT']
# Exclude loans with a beginning balance of 0 to avoid division by zero
filtered_data = recent_data[recent_data['REPORTINGPERIODBEGINNINGLOANBALANCEAMOUNT'] != 0]
# Report the average prepayment rate for the deal
average_prepayment_rate = filtered_data['PrepaymentRate'].mean()
print(f'Average Prepayment Rate for the deal: {average_prepayment_rate * 100:.2f}%')
Alright, first things first - if you're not a programmer, don't be intimidated. You might be wondering, "I don't know how to run this code on a Mac; can you show me?" Ask ChatGPT that exact question and it can provide you with detailed steps on setting up an environment, installing Python, using pip to install pandas, and more. It's not as scary as it might seem!
Now, back to the code: at first glance, it looks decent. I've noticed that the initial versions often have some bugs, but you can always copy and paste the stack trace (the error message displayed in the console) back into ChatGPT, and it's usually quite adept at fixing the issue. Admittedly, I could be more diligent about asking ChatGPT to test for errors in the code, but for our example here, the code doesn't have to be perfect.
Based on how ChatGPT explained the prepayment calculation and after doing a quick check of the data myself, 2.1% seems reasonably accurate for a deal this young. But instead of just guessing, let's see what ChatGPT thinks (again, the question arises: am I teaching it, or is it teaching me?).
How does this compare to the prepayment rates of a typical subprime auto loan deal?
The prepayment rates can vary significantly across subprime auto loan deals due to differences in the underlying collateral, loan terms, and borrower characteristics. However, generally speaking, subprime auto loan deals tend to have lower prepayment rates compared to prime auto loan deals. This is because subprime borrowers usually have lower credit scores and may face financial constraints that limit their ability to pay off their loans ahead of schedule.
Typical prepayment rates for subprime auto loan deals can range from 5% to 20%, but this is a rough estimate and may not accurately reflect specific deals or market conditions.
To determine how the calculated prepayment rate for AMCAR 2020-3 compares to other subprime auto loan deals, it would be helpful to examine prepayment rates for similar deals in the market, ideally with comparable collateral characteristics, loan terms, and credit quality. Additionally, it's essential to consider the market environment and economic factors that may impact prepayment rates, as these factors can change over time.
This seems like a great place to wrap up this post and save the broader Subprime Auto market analysis for our next article!
Thank you for joining me today as we took another peek into analyzing data from a subprime auto deal. We explored prepayment rates, learned how to calculate them, and even had ChatGPT write some code for us!
As always, stay curious and keep exploring with ChatGPT by your side, Happy Prompting!