Organization : Apache Software Foundation / Mifos
Project Name : Credit Scorecard for Loan Assessment
Student : Lalit Mohan Sanagavarapu
Mentors : Avik Ganguly, Nayan Ambali and Mark Reynolds
The project involves literature gathering on methods for credit scoring and early warning of Loans. Literature on Rule based, Statistical and machine learning approaches were reviewed. An exhaustive feature list (credit scoring) is prepared based on the available public datasets, literature and interaction with central and public sector banks. As part of the scope, the UI prototype and DB scripts are also prepared. Project Description :
Project Github Repo
UI Prototype -Characteristic Characteristic Criteria Mapping Configuration Scorecard
Project Implementationoverleaf and Google Drive.
An exhaustive feature (characteristic) list is prepared based on the available literature, interaction with central and public sector bankers, primary agricultural credit societies. The features/characteristics list are grouped/categorized into Individual/Organization, Loan History, Bank and Country specific. The exhaustive feature list is available on Feature list github.
Scorecard Category Table Names
Scorecard Characteritic Criteria
and other relational tables
Fineract does not have any method for credit scoring and early warning. We prepared UI mock-ups that can be used for adding new features, criteria and performing scorecard analysis. User Interface
This UI provides addition of new features/characteristics. The possible values for "Value Type" - Binary, Nominal, Interval and Ratio. The allowed "data types" are Numeric, Character and Date. Category is the broad grouping of Features/Characteristic. Status of these features can be active/inactive and there is no hard delete.
Characteristic Criteria Screen
This UI is used for obtaining "key" values for the characteristic/feature. Some of these features could be from DB schema (requiring SQL) and some could be from an API (XML or JSON). For the given API/SQL, the data retrieved based on "key" value is retrieved for performing scoring. As an example, "DOB" extracted from database is used for identifying "Age" of the customer. Administrator uses the screen for setting scores for various age groups.
This screen is used for mapping various loans products to characteristic/features for Green, Amber and Red color coding. This is primarily for preparing scorecard of a loan. "Green" indicates the loan can be given/is good. "Amber" indicates that the loan needs to be further reviewed and a "red" indicates that the loan needs to be rejected/potentiatlly bad.
The screen is used for profiling a Loan/Potential Loan based on rules (identified in the previous screens), statistical methods or machine learning methods.
Contributing towards improved Banking Technology and an opportunity to work with volunteers is a great inspiration. Though I was struggling with little documentation on the scope. Weekly checkins provided an understanding on the community bonding and the inspiration to explore more. I would like to thank Ed Cable and Avik Ganguly for their constant motivation and inputs. I learned quite a bit in this project
- importance of pattern recognition for smaller financial institutions
- collaboration across timezones while contributing for an open source initiative
- Architecture for faster development of screens
- Parsing dynamic API - JSONs
The model is proposed after reviewing existing approaches and their gaps. The model can be made available as a separate plugin for Fineract users so that rule based, statistical and ML based approaches can be used for scoring the loans. In ML, Neural Networks, Decision Tree and Bayesian models have been found to be most effective with 73+% accuracy for German credit datasets.
1)UI and DB layer needs to be finalized. The review of the approach would help in improving the usage of the model. Future Work
2)Application layer for parsing APIs need to be built
3)Statistical Models and ML integration needs to be done
I would like to continue to work on this beyond GSOC and play my role in contributing towards Apache Fineract.