Loan Loss Provisioning (Template)

Loan Loss Provisioning (Template)

Target release

Epic

MIFOSX-1895 - Getting issue details... STATUS

Document status

DRAFT

Document owner

Nazeer Hussain Shaik

Designer

Nazeer Hussain Shaik

Developers

Nazeer Hussain Shaik

QA

Subramanayan

Overview

A Loan provisioning is an expense that is reserved for default/bad performing loans/credits. It is an amount set aside in the event of that loans defaults. or It is an expense set aside as an allowance for bad loans or credits. Loan loss provision is also known as the "Valuation Allowance" or "Valuation Reserve".  It is also known as "Allowance for Loan Loss"                              

Background and strategic fit

In any group of loans, banks (used to refer to all financial institutions) expect there can be some loans that do not perform as expected. These loans may be delinquent on their repayments or default the entire loan. This can create a loss to the bank on expected income. Therefore, banks can set aside a portion of the expected repayments from all loans in its portfolio to cover all or a portion of the loss. In the event of loss or in critical situations banks can use the amount set aside to cover the loss instead of taking a loss in its cash flow. This loan loss reserve acts as an internal insurance fund.

Let's assume organization ABC has made $ 100,000 of loans to different individuals and companies. Though ABC organization works very hard to ensure that it lends to only those people who can repay the total amount on time, naturally some may default, some may fall behind and for some ABC organization has to renegotiate.

Organization ABC estimates that 1% of loans amount that is $ 1000 will never comeback. So this $ 1000 is ABC organization's loan loss reserve and it records this amount as negative number on the asset portion of its balance sheet.  If and when organization ABC decides to write all or a portion of a loan off, it will remove the loan from its asset balance and also remove the amount of the write-off from the loan loss reserve.

Requirements/User Stories

#

Title

User Story

Importance

Notes

#

Title

User Story

Importance

Notes

1

Associate loan provisioning to a loan product

As a user I want to enable loan loss provision and should be able to add loan provision categories while creating a loan product

Must Have

 

2

Update provisioning categories for a existing loan product

As a user I should be able to update loan provision categories for a given loan product

Must Have

 

3

Manual provisioning trigger

As a user I should be able to generate provision data manually on a selected date

Must Have

 

4

Different reports for provisioning data

As a user I want to see the loan loss data by branch, provision categories wise for all loan products

Must Have

 

5

Batch job configuration

As a user I should be able to have loan loss provision generation for a given intervals

Must Have

 

6

Provision history

As a user I should be able to see the history of the provision data

Must Have

 

Business Rules

Any loan can be categorized into 4 types and the definition of these categories changes country to country. For example

  • Standard: Good financial condition. The debtor is paying the principal and interest punctually without any dues.

  • Sub-Standard: Some payments of principal and/or interest are overdue by 'x' amount of days or more.

  • Doubtful Loan: Some payments of principal and/or interest are overdue as follows

    • 'y' days or more in the case of a loan with an original term of  less than 1 year

    • 'z' days or more in the case of a loan with an original term of one year or more

  • Loss: Some payments of principal and/or interest are overdue as follows

    • 't1' days or more in the case of a loan with an original term of less than 1 year

    • 't2' days or more in the case of a loan with an original term of one year or more

Based on in which category the loan belongs to organization can reserve the amount based on his country regulations. For example

  • For the loans falls under Standard category no need to have any provision or management can take the decision to keep 5% of the loan amount aside

  • For the loans falls under Sub-Standard category, the management can decide to keep 20% of the loan amount aside

  • For the loans falls under Doubtful category, the management can decide to keep 50% of the loan amount aside

  • For the loans falls under Loss category, the management can decide to keep 100% of the loan amount aside

Attributes

Please refer API (s) section below

Attribute

Description

Notes

Attribute

Description

Notes

 

 

 

 

 

 

 

 

 

Security and Permissions

No new permissions need to be defined

Mifos Functionality Enhancements

We need to create a table to keep all loan provision categories.The table name is 'm_provision_category''. The table definition is defined below. The category names will vary based customer to customer.

Name

Datatype

Length

Remarks

Name

Datatype

Length

Remarks

id

BIGINT

20

Primary Key & Auto Increment

category_name

VARCHAR

100

Not Null

Description

VARCHAR

200

 

By default Mifos  system will create and insert the following categories into this table based on customer requirements. So the data will look like below.

id

category_name

Description

id

category_name

Description

1

STANDARD

Punctual Payment without any dues

2

SUB-STANDARD

Principal and/or Interest overdue by x days

3

DOUBTFUL

Principal and/or Interest overdue by y days with 1 year original term (or)

Principal and/or Interest overdue by z days with more than 1 year term

 

4

LOSS

Principal and/or Interest overdue by t1 days with 1 year original term (or)
Principal and/or Interest overdue by t2 days with more than 1 year term

 

Now how to associate loan provision to  a product? In create loan product screen, we have the option to enable loan loss provision as shown in mock up screen below

Organization can choose each category one by one and can add it to the loan product. Organization can choose minimum and maximum over dues in days and can provide provision percentage differently for each loan product. Both Liability & Expense combos will have all GL accounts. So organization can choose liability & expense accounts against each provision category differently,

Once the new loan product form is submitted, product loan provision details will be stored in 'm_loanproduct_provision_details'. The table definition is defined below.

NAME

Datatype

Length

Remarks

NAME

Datatype

Length

Remarks

id

BIGINT

20

PRIMARY KEY & AUTO INCREMENT

loanproduct_id

BIGINT

20

FOREIGN KEY

category_id

BIGINT

20

FOREIGN KEY

min_age

BIGINT

20

NOT NULL

max_age

BIGINT

20

NOT NULL

provision_percentage

INT

4

DEFAULT 0

liability_account

BIGINT

20

FOREIGN KEY acc_gl_account.id

expense_account

BIGINT

20

FOREIGN KEY acc_gl_account.id

created_by

BIGINT

20

FOREIGN KEY m_appuser.id

created_on

DATE

 

 

modified_by

VARCHAR

100

FOREIGN KEY m_appuser.id

modified_on

DATE

 

 

For any given tenant, the provision details for a particular loan product will look like below.

id

loanproduct_id

category_id

min_age

max_age

provision_percentage

liability_account

expense_account

created_by

created_on

modified_by

modified_by

id

loanproduct_id

category_id

min_age

max_age

provision_percentage

liability_account

expense_account

created_by

created_on

modified_by

modified_by

1

10345

1

0

0

5

abcd account

dcba account

100

31-Dec-2014

200

10-Jan-2015

2

10345

2

30

60

20

abcd account

dcba account

200

31-Dec-2014

400

10-Jan-2015

3

10345

3

60

180

50

abcd account

dcba account

400

31-Dec-2014

500

10-Jan-2015

4

10345

4

180

360

90

abcd account

dcba account

300

31-Dec-2014

600

10-Jan-2015

 

While editing the loan product, persisted provision details will be restored in the edit loan product screen

Provision Calculation For Loan:

By using the following query we can get all active loan ids along with product id, overdue in days, outstanding loan balance, provision category id, provision percentage, due date

 

SELECT loan.id as loanid, loan.product_id as productid, GREATEST(datediff(CURDATE(),sch.duedate),0) as numberofdaysoverdue, loan.total_outstanding_derived as outstandingbalance, lpc.category_id, lpc.provision_percentage, sch.duedate FROM m_loan_repayment_schedule as sch LEFT JOIN m_loan as loan ON sch.loan_id = loan.id LEFT JOIN m_loanproduct_provision_category lpc ON loan.product_id=lpc.product_id and lpc.min_age <= GREATEST(datediff(CURDATE(),sch.duedate),0) and GREATEST(datediff(CURDATE(),sch.duedate),0) < lpc.max_age WHERE loan.loan_status_id=300 and sch.principal_amount > 0 and sch.completed_derived=false and lpc.category_id > 0 and lpc.provision_percentage > 0 GROUP BY sch.loan_id HAVING sch.duedate=min(sch.duedate)

 

 

The result of the above query will look like below (mock data).

loanid

productid

numberofdaysoverdue

outstandingbalance

category_id

provision_percentage

duedate

loanid

productid

numberofdaysoverdue

outstandingbalance

category_id

provision_percentage

duedate

4

4

0

11150.000000

1

5

2015-10-28

5

5

0

11310.000000

1

9

2015-10-28

13

11

692

16300.000000

4

100

2013-10-15

The charge calculation for above data is shown below.

loanid

productid

numberofdaysoverdue

outstandingbalance

category_id

provision_percentage

duedate

Amount to be reserved

loanid

productid

numberofdaysoverdue

outstandingbalance

category_id

provision_percentage

duedate

Amount to be reserved

4

4

0

11150.000000

1

5

2015-10-28

557.500000

5

5

0

11310.000000

1

9

2015-10-28

1017.900000

13

11

692

16300.000000

4

100

2013-10-15

13040.000000

As current journal entry is not sufficient for provision reports, we need to introduce a new table in the database. The table name is 'm_loan_provision_entry' and the table definition is shown below.

Name

Datatype

Length

Remarks

Name

Datatype

Length

Remarks

id

BIGINT

20

PRIMARY KEY and AUTOINCREMENT