For this project, we wish to present and explore the data provided by Lending Club.
Here is the website: Lending Club
Lending Club (LC) is a peer to peer online lending platform. It is the world’s largest marketplace connecting borrowers and investors, where consumers and small business owners lower the cost of their credit and enjoy a better experience than traditional bank lending, and investors earn attractive risk-adjusted returns.
The entire process is online, using technology to lower the cost of credit and pass the savings back in the form of lower rates for borrowers and solid returns for investors.
Here is the link to more details about LC.
We will present and explore the data provided by LC at this address. This data was made available to us after the creation of an investor account.
The information available for each loan consists of all the details of the loans at the time of their issuance as well as more information relative to the latest status of loan such as how much principal has been paid so far, how much interest, if the loan was fully paid or defaulted, or if the borrower is late on payments etc.
Now that we have prepared the grounds for our analysis we need to clean up the data and add some fields that will prove useful for our analysis.
First, we will clean the data by removing some corrupted loans. Note that for every entry that we remove, we check the sum of the loan amounts to judge how much of the data we are removing. In the end we will remove around USD 9 mm worth of loan which corresponds to 0.1% of the total. This is perfectly acceptable.
We also create a subset of our modified data. This subset will corespond to all the loans that have or would have matured by the time of the report. The loans with 3 years of maturity may have been issued all the way to Jun-2012 as we recall that our current reports are as of Jun-2015. Similarly, the loans with 5 years of maturity will be selected only if they were issued before Jun-2010.
Looking at loan amounts types and loan amounts in each category
# Looking at loan amounts types and loan amounts in each category
# Smallest loan:
min(LC$loan_amnt)
## [1] 500
# Largest loan:
max(LC$loan_amnt)
## [1] 35000
# Total amount of loans in USD millon
round(sum(LC$loan_amnt/1e6), 1)
## [1] 9409.2
# Total amount of loans in USD millon using the original data:
round(sum(LC0$loan_amnt/1e6, na.rm = T),1)
## [1] 9418.4
Looking at the distribution of the loans relative to their latest status:
Looking at Lending Club’s issuances over the years:
.
.
.
Looking at Lending Club’s issuances over the United States:
Looking at different statistics and disributions of LC grades:
Looking at different statistics and disributions across the different FICO buckets:
FICO scores have been implemented to assess the credit worthiness of potential borrowers. A model that Lending Club could have used could have been to simply rely on the foundation of FICO’s scores. The majority of the mortgage indsutry relies on FICO scores to issue mortgages of 100s of thousands.
Hence our interest in looking into LC’s grade system and more specifically if they have an obvious linear relationship with FICO scores.
At first, it seems obvious that the LC grades and FICO scores are very correlated:
But this graph already seems to imply otherwise. Indeed 20 of the 35 possible LC sub grades have average FICO scores within 10pts:
Running the full distribution of FICO ratings per LC grade confirm our previous point. Grades E, F, G and arguably D and even C have very close distributions and medians:
Looking at the densities adds to our previous points too:
It is very interesting to see how these densities have evolved over the years. We can see how Lending Club’s earlier model used to rely on FICO score heavily and over the course of the years, LC refined there credit models using the data that they started accumulating. It is particularly obvious when looking at the grade A.
Its density changed from being condensed over a range FICO scores of 730 to 820 to a density that covers the entire FICO range with a mean that is lower than the minimum score they used to require to get an A rating:
In this section we will take each features given at the time of the origination of the debt and attempt to extract their relation to default rates. For this part of the analysis we will use the data set LCmatured that we recall contains only the loans that have matured or if defaulted, would have matured.
.
.
#### Home ownership: .
.
.
#### Purpose: Purpose: We want to see if there is any relations between LC Grades, FICO scores, Charge Off rates and purpose.
Home ownership: here is a pie chart of our different purposes categories:
.
.
.
#### Revolvoving balance and employement length: Revolving Balance, along with Employment length are actually the features with the least obvious link to default rates:
# Report showing some statistics for each category, here the revolving balance of the borrower.
sumPerSatus(LCmatured, revol_bal_bucket)
## Source: local data frame [10 x 5]
##
## revol_bal_bucket charged net_EL avg_fico avg_grade
## (fctr) (dbl) (dbl) (dbl) (chr)
## 1 0-1,333 12.93 8.19 734 B4
## 2 1,333-3,170.2 11.93 7.50 723 B4
## 3 3,170.2-5,080 12.59 7.66 717 B4
## 4 5,080-6,974.4 12.94 7.77 712 B5
## 5 6,974.4-9,100 13.62 7.93 711 B5
## 6 9,100-11,592.2 12.27 7.48 710 B5
## 7 11,592.2-14,693.2 13.04 7.59 710 B5
## 8 14,693.2-19,306 12.38 7.53 712 B5
## 9 19,306-28,052.4 12.06 7.25 712 C1
## 10 28,052.4-+inf 13.09 8.26 717 C1
# Report showing some statistics for each category, here the employement length of the borrower.
sumPerSatus(LCmatured, emp_length)[c(12,1,2,4,5,6,7,8,9,10,11,3),]
## Source: local data frame [12 x 5]
##
## emp_length charged net_EL avg_fico avg_grade
## (chr) (dbl) (dbl) (dbl) (chr)
## 1 n/a 19.11 11.86 723 B3
## 2 < 1 year 12.73 8.05 715 B5
## 3 1 year 12.50 7.84 713 B5
## 4 2 years 12.25 7.65 713 B5
## 5 3 years 12.14 7.27 714 B5
## 6 4 years 12.35 7.43 713 B5
## 7 5 years 11.91 7.03 716 B5
## 8 6 years 12.56 7.88 715 B5
## 9 7 years 13.54 8.20 714 B5
## 10 8 years 12.64 7.85 717 B5
## 11 9 years 11.68 6.86 718 B5
## 12 10+ years 12.74 7.49 719 B5
Number of delinquencies during the past 2 years: This feature is somewhat linked to charge off rates but a vast majority of the borrowers actually have 0 delinquencies, which is not helpful distinguishing between them.
# Report showing some statistics for each category, here the number of delinquencies of the borrower.
sumPerSatus(LCmatured, delinq_bucket)
## Source: local data frame [3 x 5]
##
## delinq_bucket charged net_EL avg_fico avg_grade
## (chr) (dbl) (dbl) (dbl) (chr)
## 1 0 12.45 7.56 718 B4
## 2 1 14.41 8.90 696 C3
## 3 2+ 15.85 9.64 686 C4
.
.
.
#### Number of opened and total number of accounts: Total number of accounts and Open accounts are not the most impactfull features.
Fully paying borrower tend to have slightly more accounts but too many accounts may be bad too. This is interesting because FICO considers that the more accounts. This is also confirmed in the numbers below.
# Report showing some statistics for each category, here the total number of accounts of the borrower.
sumPerSatus(LCmatured, total_acc_bucket)
## Source: local data frame [10 x 5]
##
## total_acc_bucket charged net_EL avg_fico avg_grade
## (fctr) (dbl) (dbl) (dbl) (chr)
## 1 0-9 15.85 9.99 710 C2
## 2 9-12 13.32 8.11 711 B5
## 3 12-15 13.50 8.17 713 B5
## 4 15-17 12.85 7.42 714 B5
## 5 17-20 11.55 6.89 715 B4
## 6 20-23 11.05 6.67 718 B4
## 7 23-26 11.92 7.32 718 B4
## 8 26-30 12.56 7.48 719 B4
## 9 30-37 11.12 6.75 720 B4
## 10 37-+inf 12.41 7.80 721 B5
# Report showing some statistics for each category, here the number of opened accounts of the borrower.
sumPerSatus(LCmatured, open_acc_bucket)
## Source: local data frame [10 x 5]
##
## open_acc_bucket charged net_EL avg_fico avg_grade
## (fctr) (dbl) (dbl) (dbl) (chr)
## 1 0-4 15.09 9.61 718 C2
## 2 4-6 12.10 7.43 718 B4
## 3 6-7 12.20 7.47 717 B4
## 4 7-8 12.91 7.71 716 B4
## 5 8-9 12.36 7.35 715 B4
## 6 9-10 12.78 7.67 715 B4
## 7 10-11 11.41 6.74 715 B5
## 8 11-13 12.52 7.63 714 B5
## 9 13-15 13.06 7.95 715 B5
## 10 15-+inf 12.53 7.54 713 C1
The DTI ratio: the lower the better, a DTI of 5 means your debts payment excluding mortgage, are only 5% of your gross income.
# Report showing some statistics for each category, here the DTI of the borrower.
sumPerSatus(LCmatured, dti_bucket)
## Source: local data frame [10 x 5]
##
## dti_bucket charged net_EL avg_fico avg_grade
## (fctr) (dbl) (dbl) (dbl) (chr)
## 1 0-4.32 11.07 6.90 736 B4
## 2 4.32-7.24 10.47 6.12 723 B4
## 3 7.24-9.56 11.52 6.83 720 B4
## 4 9.56-11.684 11.73 7.35 716 B5
## 5 11.684-13.69 12.52 7.79 714 B5
## 6 13.69-15.68 12.64 7.66 712 B5
## 7 15.68-17.8 13.72 8.27 710 B5
## 8 17.8-20.1 13.68 8.18 709 B5
## 9 20.1-22.67 14.70 8.94 707 C1
## 10 22.67-+inf 14.79 9.14 711 B5
Boxplot of the distribution the DTI for each grade:
Boxplot of the distribution the DTI for each FICO score bucket:
Public Records: This feature is definitely correlated to charged off rates, but its value is very low. It is zero in most cases. Basically if a borrower has 0 public records is a strong indicator that he has greater chances to pay off his debts and conversely, if the number of public records is greater than 0, the borrower has a substantially greater chance of default.
# Report showing some statistics for each category, here the number of public records of the borrower.
sumPerSatus(LCmatured, rec_bucket)
## Source: local data frame [2 x 5]
##
## rec_bucket charged net_EL avg_fico avg_grade
## (chr) (dbl) (dbl) (dbl) (chr)
## 1 0 12.34 7.52 717 B5
## 2 1+ 19.85 11.71 695 C3
The age of credit history has a significant impact on default rates: Fully paying borrowers tend to have slightly older credit history, which is to be expected. But the main take on Credit history is on borrower that have relatively short credit history: We can see that the bottom 10% have credit histories of less than 6 years and have a significantly higher default rates. One should also be careful when looking into the age of the credit history since it correlates with the age of the borrower and hence ith his income and other features. This will need to be investigated further later.
# Report showing some statistics for each category, here the age of the credit history of the borrower.
sumPerSatus(LCmatured, credit_ym_bucket)
## Source: local data frame [10 x 5]
##
## credit_ym_bucket charged net_EL avg_fico avg_grade
## (fctr) (dbl) (dbl) (dbl) (chr)
## 1 0-5.9 16.42 10.41 700 C3
## 2 5.9-7.8 12.39 7.71 707 B5
## 3 7.8-9.7 12.79 7.59 710 B5
## 4 9.7-11 13.11 8.15 713 B5
## 5 11-12.2 12.85 7.77 715 B5
## 6 12.2-13.8 12.57 7.59 717 B5
## 7 13.8-15.7 12.71 7.52 719 B5
## 8 15.7-18.2 11.54 6.75 723 B4
## 9 18.2-22.7 11.34 7.14 725 B4
## 10 22.7-+inf 10.99 6.46 730 B3
.
.
.
#### Revolving utilization: As expected, higher revolving utilization mean higher risk of default. The top 10% has default rates that are almost twice as low as the bottom 10%.
# Report showing some statistics for each category, here the revolving utilization of the borrower.
sumPerSatus(LCmatured, revol_bucket)
## Source: local data frame [10 x 5]
##
## revol_bucket charged net_EL avg_fico avg_grade
## (fctr) (dbl) (dbl) (dbl) (chr)
## 1 0-9.8 9.44 5.97 757 B2
## 2 9.8-22.3 8.32 5.07 743 B1
## 3 22.3-33.2 10.32 6.07 730 B3
## 4 33.2-43.2 11.42 6.70 719 B4
## 5 43.2-52.5 11.93 7.36 713 B5
## 6 52.5-61.3 13.80 8.46 708 B5
## 7 61.3-69.5 13.95 8.24 704 B5
## 8 69.5-78.4 13.75 8.30 697 C2
## 9 78.4-87.9 15.75 9.57 694 C2
## 10 87.9-+inf 18.22 11.45 693 C5
This is a very strong feature. People in the top 20% quantile have half as much charged off loans compared to the bottom 20%. It is worth noticing though, that even the top 20% still get a 9.5% chance off defaulting on their loan which is still very high. So annual income is not a silver bullet either.
# Report showing some statistics for each category, here the age of the annual income of the borrower.
sumPerSatus(LCmatured, annual_inc_bucket)
## Source: local data frame [10 x 5]
##
## annual_inc_bucket charged net_EL avg_fico avg_grade
## (fctr) (dbl) (dbl) (dbl) (chr)
## 1 0-28,995.6 17.40 11.14 712 B5
## 2 28,995.6-36,000 16.70 10.00 712 B5
## 3 36,000-43,000 14.31 8.68 713 B5
## 4 43,000-50,000 13.00 7.88 713 B5
## 5 50,000-57,000 12.47 7.42 714 B5
## 6 57,000-65,000 12.37 7.47 716 B5
## 7 65,000-75,000 11.32 6.88 717 B5
## 8 75,000-89,100 10.33 6.25 719 B5
## 9 89,100-114,000 8.95 5.47 720 B5
## 10 114,000-+inf 9.44 5.64 723 C1
This feature is supposed to represent how desperate the borrower is for credit. We can see that the correlation between this feature and charged off rates is very strong. This is the feature that has the highest impact on default rates. The EL of people with 0 inquieries is more than 4 times smaller than the EL of the 7+ bucket!
# Report showing some statistics for each category, here the age of the number of inquieries of the borrower.
sumPerSatus(LCmatured, inq_bucket)
## Source: local data frame [5 x 5]
##
## inq_bucket charged net_EL avg_fico avg_grade
## (chr) (dbl) (dbl) (dbl) (chr)
## 1 0 10.22 5.91 719 B4
## 2 1-2 13.29 8.17 714 C1
## 3 3-4 19.05 12.28 711 C1
## 4 5-6 26.57 18.13 710 C5
## 5 7+ 35.40 24.68 702 D5
.
.
#### Geography: Finally, here is a heat map of the USA. We see that Nevada is not doing so great…
. .
Lending Club’s data is a great source of information on presonal credit. Additionally this data set is bound to grow exponentially over the next years. We tried to build a report to both present Lending Club and build the foundations to more in depth analyses.