Risk Mitigation Solution
project
Overview
To mitigate risks, it is important to have the ability to calculate and manage them. This enables you to proactively identify potential problem areas and take appropriate measures.
The Risks project within the platform is designed to mitigate the risks associated with loan issuance and enhance your organization's stability.
Problem solving
The Risks project can help solve a number of key problems:
Clarification of parameters: allows you to determine the optimal parameters and variables that should be taken into account when calculating loans. This includes factors such as credit history, income, among others.
Clarifying decision criteria: helps clarify the criteria by which lending decisions are made, which can improve the efficiency and accuracy of the process.
Reduces credit losses: can be used to determine optimal loan amounts and terms, which helps reduce credit losses.
Optimizing loan products: by analyzing results, loan products can be improved to make them more attractive to borrowers and safer for lenders.
Data validation: data quality can be analyzed to ensure that it is sufficient and accurate to adequately calculate loans. This is important to avoid distortions and unreliable results.
Regulatory compliance: helps ensure compliance with regulatory standards and requirements when issuing loans.
Project functionality
The Risks project functionality consists of pre-designed and configured flows. This range of project flows will help you streamline tasks.
Using these flows, you can perform the following operations:
Calculations and сomputations.
1.1 Calculation of the possible credit card limit. 1.2 Calculation of the maximum loan payment. 1.3 Calculation of refinanced loan amounts. 1.4 Calculation of refinanced credit card amounts. 1.5 Calculation of the maximum loan term for the applicant.
Conditions and agreements.
2.1 Selection of conditions with maximum and/or minimum terms. 2.2 Selection of Product Condition based on term and product conditions. 2.3 Combining conditions. 2.4 Selection of conditions that meet specific criteria.
Managing debts and obligations.
3.1 Retrieval of loan balance values. 3.2 Checking whether a loan is pledged. 3.3 Checking eligibility of current obligations for refinancing. 3.4 Checking whether a loan is specially secured. 3.5 Calculation of bank refinancing. 3.6 Calculation of reference debt. 3.7 Calculation of referral payments only. 3.8 Retrieval of debt amounts suitable for refinancing.
Evaluation and rating.
4.1 Determining categories based on score values. 4.2 Determining categories based on applicants' scores. 4.3 Selection of the highest category. 4.4 Determining the required income to process lending.
Currency and conversion operations.
5.1 Retrieval of balance values with currency conversion. 5.2 Conversion of debt amounts from other currencies. 5.3 Retrieval of internal loan amounts with currency conversion.
Generation and analysis.
6.1 Generation of product condition structures. 6.2 Generation of combinations based on input parameters. 6.3 Analysis of data from the credit bureau and creation of refinancing matrices.
Employment and customer management.
7.1 Determining customer segmentation based on customer data. 7.2 Calculation of current employment tenure. 7.3 Checking for the presence of a credit history. 7.4 Selection of the maximum employment item by monthly salary. 7.5 Selection of suitable employment reference items based on specific conditions.
Verification and checks.
8.1 Checking for "bad" customer credit history. 8.2 Checking for delinquency of more than 30 days. 8.3 Verification of category matching a specific set of categories. 8.4 Checking for loans with specific dates.
Detailed information about the Risk project flows can be found HERE.
Additionally, we can highlight individual Decision rules flows, a set of risk rules you can configure according to your internal policies. You can use these rules when analyzing a loan application or other financial transactions..
A set of rules for making a decision on an application: refuse, send the application to the “gray zone”, approve. To work with rules, you use a special reference book in the system, where you can specify the rule code, its name, the sign of the rule’s activity, the rule type, and the alias for calling the strategy where the rule is used.
Basic types of rules: DECLINE — refusal, REFER — a sign of a “gray zone”, WARNING — a negative warning without influencing the decision on the application.
Each rule is checked in the process if the attribute isActive = true.
The check is configured according to the following rules:
001 - Invalid identity card — this rule is triggered if, at the time of calling the strategy, the identity document of the transaction participant has expired;
002 - Applicant’s employer is on the blacklist — this rule is triggered if the applicant’s employer is on the blacklist;
003 - Applicant doesn't comply with minimum age requirements — this rule is triggered if, at the time of calling the strategy, the applicant has not reached the minimum age for receiving a loan established by the bank;
004 - Applicant doesn't comply with maximum age requirements — this rule is triggered if the applicant's current age does not allow them to be offered any product, because at the end of the loan, they will be older than the maximum established age;
005 - Applicant doesn't comply with citizenship requirements — this rule is triggered if the client's citizenship does not coincide with the citizenship requirements for receiving a loan;
006 - Applicant doesn't comply with total seniority requirements — this rule is triggered if the client's total confirmed seniority is less than the minimum established requirements;
007 - Applicant doesn't comply with current seniority requirements — this rule is triggered if the applicant's length of service at the current place of work is less than the minimum established requirements;
008 - Absence of offer to the applicant — this rule is triggered if the client’s solvency does not allow them to be offered any lending product;
009 - Bad credit history — this rule is triggered if the applicant’s credit history has at least one case when:
There was an overdue debt of more than 90 days or
There was an overdue debt of more than 30 days in the last 12 months or
There was an overdue debt of 30 to 90 days over the last 12-24 months.
010 - Current overdue — this rule is triggered if there is an outstanding overdue debt on the principal or interest;
011 - Applicant is on blacklist — this rule is triggered if the applicant is on the blacklist;
012 - Overdue loan at the bank — this rule is triggered if the internal credit history has an outstanding overdue debt of more than 30 days;
013 - Previous declines due to bad credit history — this rule is triggered if the applicant was previously rejected due to a bad credit history (the list of rule codes is configured separately), and the validity period of this refusal has not yet expired;
014 - Previous declines from risk manager — this rule is triggered if the applicant was previously rejected manually by the risk manager, and the validity period of this refusal has not yet expired;
015 - Cut off — this rule is triggered if the scored score is less than the minimum requirements;
016 - Number of overdue — this rule is triggered if the applicant had at least one loan overdue for up to 30 days for 3 months in a row;
017 - Late loan repayment — this rule is triggered if, over the last 5 years the applicant has at least one loan that was fully repaid with a delay of more than 30 days;
018 - Gap between declared and confirmed income — this rule is triggered if the specified income, according to the applicant, exceeds the confirmed income from the state employment service by more than 10%;
019 - Applicant's contract is about to expire — this rule is triggered if, according to the state employment service, the applicant's current contract expires in the next 30 days;
020 - Limit of the number of credit history requests has been exceeded — this rule is triggered if, within a specified number of days, the applicant’s credit report has been requested more than the maximum specified number of times.
Detailed information about the decision rules flows used in the project can be found HERE.
In the project, you can also use specially designed Features. You will find the key features:
Additional offer calculation
This feature allows for the calculatation of the possible limits of an additional credit card limit matrix for an applicant after the main product has been selected. Parameters that affect the amount of the proposal (incoming loan load, applicant’s grade, net income, etc.) are not re-calculated; calculations made at the stage of selecting the main product are used.
The additional offer matrix consists of products with a credit card attribute. At the same time, the matrix may contain refinancing products.
The process of calculating the additional limit consists of the following steps:
Selection of the necessary parameters calculated earlier: net income, incoming credit load, client risk grade, sign of presence/absence of a positive credit history, maximum possible loan period for each product;
The availability of a product offer (credit card) for the applicant is checked based on the risk grade and sales channel for the application. Additionally, the possibility and availability of a special offer for the applicant is checked: an offer for salary card holders or bank employees;
For each row of the matrix, the maximum possible payment for the additional product maxLoanPayment is calculated, taking into account the selected main product.
When calculating the product offer for refinancing, the following formula for calculating maxLoanPayment is used:
When calculating the product offer without refinancing, the following maxLoanPayment calculation formula is used:
dtiRef — maximum credit load parameter for refinancing products depending on the client’s risk grade
income — net income
monthlyPayment — monthly payment for the main product
expenses — incoming loan load and other expenses of the applicant
livingWage — the minimum living wage set by the government
dti — maximum credit load parameter for products without refinancing depending on the client’s risk grade
sum_bank_ref — the amount of payments on refinanced loans at the Bank in the matrix row
sum_ref — the amount of payments on refinanced loans in the matrix row
For each product of the matrix, the maximum possible supply amount is calculated — the minimum value of the following calculated parameters:
based on solvency — s_prod is calculated according to the formula:
a_max — maximum possible payment for the product
rate — product rate for the client, taking into account the risk grade and applied discounts
term — the maximum possible loan term for the product
possible unsecured lending amount as the difference between the unsecured lending limit and the amount of current unsecured debt from the client to the bank;
possible loan amount within the product as the difference between the maximum possible loan amount for the product taking into account the presence/absence of a positive credit history and the amount of the client’s current debt for the product in the bank.
The following Flows are used in the feature:
Main flow: matrixCalculationBrms6
Auxiliary flows:
closestCondition
conditionByPeriod
creditBalance
getDebtRefinBrms6
getDebtRefinBrms6Limit
getGradeByScore
getMaxLoanPayment
isCreditPledged
mergeConditions
roundFloat
Analysis of favorable credit history
This feature analyzes data from the Credit Bureau's response and returns an indication (true/false) of whether the applicant's credit history should be recognized as positive.
A credit history is considered positive if the response from the Credit Bureau includes at least one loan that meets at least one set of the following criteria:
An existing loan, issued at least a specified number of months ago, the repayment of which is carried out without any overdue payments of more than 30 days;
A closed loan, the last payment on which was no more than 24 months ago. At least a specified number of months have passed from the moment the loan was issued to the last payment. The loan was repaid without any overdue payments exceeding 30 days.
The following Flows are used in the feature:
Main flow: isCreditHistoryNotExist
Auxiliary flows:
areThereOverduesMoreThan30D
Calculation of incoming credit payload
The feature calculates the applicant's current credit load based on the Internal Credit History data and the Credit Bureau's response.
Current loans, issued no more than 15 days ago, are selected from the Internal Credit History. A check is made to see if there is information about this loan in the Credit Bureau's response. In the absence of information, the annuity payment for such a loan is calculated for the loan term. The settlement rate is a configurable parameter.
Based on records from the Credit Bureau's response, existing loans directly to the applicant, as well as existing loans for which the applicant acts as a guarantor, are selected. An annuity payment is calculated for each such loan. The rate for calculation is a customizable parameter and depends on the type of loan (card/non-card). The resulting calculated value is compared with the data from the Credit Bureau response. Depending on the difference between the values, either the calculated value or the value from the Credit Bureau’s response is used to calculate the credit load.
Additionally, an alternative level of incoming credit load is calculated: payments on loans issued under guarantees of government bodies are subtracted from the resulting total amount of the loan.
The following Flows are used in the feature:
Main flow: incomingCreditPayload
Auxiliary flows:
calculateCreditPayment
calculateInternalCreditPayment
getCreditAmount
getCreditPayment
getInternalCreditAmount
isAnyCurrentLiabilityHasOverdue
isLiabilityAvailableForRef
isSpecialPledge
isThereCreditWithSpecificDate
setLiabilityPaymentAndRef
Calculation of the maximum possible loan term
For each product, the feature calculates the number of months for which a loan can be issued to the applicant.
The applicant's age in months is calculated.
For each product, the maximum possible loan term is determined as the difference between the established maximum age depending on the applicant’s gender *12 and the applicant’s age in months.
The maximum possible loan term for each product is determined as the minimum value of two values: the maximum possible loan term for the product according to the Product Catalog; the calculated maximum possible loan term for the product for the applicant.
The following Flows are used in this feature:
Main flow: productMaxTerms
Auxiliary flows:
closestCondition
conditionByPeriod
filterConditions
maxTerm
maxTermObj
mergeConditions
Calculation of the offer matrix
This feature allows for the calculation of a matrix of offers for the applicant: the maximum possible amount for the maximum allowed period for each product available to the applicant.
The process of calculating the offer matrix consists of the following steps:
Сalculation of the necessary parameters: net income, incoming credit load, client risk grade, sign of presence/absence of a positive credit history, maximum possible loan period for each product; drawing up a matrix for loan refinancing;
The availability of a product offer for the applicant is checked based on the risk grade and sales channel for the application. Additionally, the possibility and availability of a special offer for the applicant is checked: an offer for salary card holders or bank employees;
For each row of the matrix, the maximum possible payment for the product maxPayment is calculated.
When calculating the product offer for refinancing, the following formula for calculating maxPayment is used:
When calculating the product offer without refinancing, the following maxPayment calculation formula is used:
dtiRef — maximum credit load parameter for refinancing products depending on the client’s risk grade
totalIncome — net income
alternativeMonthlyPayment — incoming credit payload excluding loans issued under guarantees of government bodies
addExpenses — other expenses of the applicant
livingWage — the minimum living wage set by the government
dti — maximum credit load parameter for products without refinancing depending on the client’s risk grade
bankRefPayment — the amount of payments on refinanced loans at the Bank in the matrix row
creditPayment — the amount of payments on refinanced loans in the matrix row
For each product of the matrix, the maximum possible supply amount is calculated — the minimum value of the following calculated parameters:
based on solvency — s_prod according to the formula:
a_max — maximum possible payment for the product maxPayment
rate — product rate for the client, taking into account the risk grade and applied discounts
term — the maximum possible loan term for the product
possible unsecured lending amount as the difference between the unsecured lending limit and the amount of current unsecured debt from the client to the bank;
possible loan amount within the product as the difference between the maximum possible loan amount for the product taking into account the presence/absence of a positive credit history and the amount of the client’s current debt for the product in the bank.
Two matrices of offers are compiled: one (APPROVE) contains offers in the amount of a loan that does not require collateral, the second (POSSIBLE) contains offers that can be provided to the applicant when providing a guarantor.
The following Flows are used in the feature:
Main flow: matrixCalculation
Auxiliary flows:
calculateBankRefPayment
calculateRefDebt
calculateRefPaymentOnly
closestCondition
conditionByPeriod
creditBalance
getDebtRefin
getDebtRefinLimit
getGradeByScore
getOutstandingDebt
isCreditPledged
mergeConditions
possibleCombinations
setMatrixLiabilities
Drawing up a matrix of loans for refinancing
This feature analyzes the loans from the Credit Bureau response and compiles a refinancing matrix from all possible refinancing combinations (for example, 101, 111, 001, ...).
A loan is considered available for refinancing if it meets all the following conditions:
There is no current overdue loan debt;
There were no overdue debts exceeding 30 days for a given number of months;
The type of loan collateral meets the requirements or is empty;
The term of the loan meets the specified requirements.
The following Flows are used in the feature:
Main flow: setMatrixLiabilities
Auxiliary flow:
isLiabilityAvailableForRef
Net income calculation
This feature determines the amount of income that must be used as the applicant's income to determine the possibility of lending:
If there is an amount of income specified by the underwriter, the income from the underwriter is used.
If there is no income from the underwriter, the availability of income information from the countrywide payroll data service is checked. If there is no information about active employers, the income indicated by the applicant is accepted as income.
If only one active employer is listed in the response from the countrywide wage data service, the applicant is checked to see if the applicant has additional income. If such a sign is indicated, and the income indicated by the applicant exceeds the income from the service by 10 percent or more, the income indicated by the applicant is accepted as income, otherwise, income from the response of the country-wide salary data service.
If more than one active employer is listed in the response from a countrywide payroll data service, each employer is reviewed to ensure that the applicant's employment history with that employer is met. The calculation includes those incomes that meet the length of service requirements. If no years of service qualify, income from the highest earning employer is included in the calculation. Next, a check is performed to establish whether the applicant has an additional income indicator. If such a sign is indicated, and the income indicated by the applicant exceeds the income from the service by 10 percent or more, the income indicated by the applicant is accepted as income, otherwise, income from the response of the country-wide salary data service.
The following Flows are used in the feature:
Main flow: incomeNet
Auxiliary flow:
closestCondition
conditionByPeriod
getGradeByScore
maxEmptItemBySalary
mergeConditions
suitableEmployments
Segmentation
This function returns a customer segment based on customer data in the following parameters:
A positive credit history;
Availability of employment data from the national system;
Length of experience at current place of work;
Net income;
Age;
Score.
The list of segments and parameter requirements for each segment are configured separately. The client's segment is checked in order of segment priority, where 1 is the highest priority.
The following Flows are used in the feature:
Main flow: segmentation
Auxiliary flow:
areThereOverduesMoreThan30D
calculateCurrentWorkingTerm
isCreditHistoryNotExist
maxEmptItemBySalary
Flows
Main flows for key features
name: matrixCalculationBrms6
Description: The flow allows to calculate the possible limit of an additional credit card limit matrix for an applicant after the main product has been selected. Parameters that affect the amount of the proposal (incoming loan load, applicant’s grade, net income, etc.) are not re-calculated; calculations made at the stage of selecting the main product are used.
The flow performs a sequential call to the auxiliary flow to calculate the parameters and output the formation of the basic structure of the parameters.
Parameters:
Input | Output |
ParametersBasic ApplicationAdditionalDto Float,Float,Float,Float,Float | ParametersBasic |
name: isCreditHistoryNotExist
Description: Description: Checking for no credit history. Iterate through creditReport.liabilities, check for Overdue30DPlus, check for CreditStatus and LastPayDateNotZero and compare by date.
Parameters:
Input | Output |
CreditReportDto | Boolean |
name: incomingCreditPayload
Description: The flow calculates the applicant's current credit load based on the Internal Credit History data and the Credit Bureau's response.
Iteration based on internal credit history data and the response from the Credit Bureau and checking against a number of parameters.
Parameters:
Input | Output |
ParametersBasic ApplicationAdditionalDto Float,Float,Float,Float,Float | ParametersBasic |
name: productMaxTerms
Description: Сalculates the number of months for which a loan can be issued to the applicant. Sequential calling of an auxiliary flow to calculate parameters and output the formation of the ParametersPrimary structure.
Parameters:
Input | Output |
ParametersPrimary ApplicationPrimaryDto | ParametersPrimary |
name: matrixCalculation
Description: Сalculates the number of months for which a loan can be issued to the applicant.
Iterate through products, call a number of auxiliary flows and generate a response in the form of a ParametersBasic structure.
Parameters:
Input | Output |
Array<String> Array<MatrixBasic> ProductCondition MatrixBasic Array<MatrixBasic> Array<MatrixBasic> Integer,Integer,Integer,Integer, String, Boolean,Boolean,Boolean, Float,Float,Float,Float,Float,Float,Float,Float,Float,Float,Float,Float,Float,Float,Float,Float,Float,Float,Float,Float | ParametersBasic |
name: setMatrixLiabilities
Description: Analyzes the loans from the Credit Bureau response and compiles a refinancing matrix from all possible refinancing combinations (for example, 101, 111, 001, ...). Filtering liabilities by the condition isLiabilityAvailableForRef and matching each refCreditLocal.id and liabilityХ.
Parameters:
Input | Output |
ParametersBasic String | MatrixBasic |
name: incomeNet
Description: Determines the amount of income that must be used as the applicant's income to determine the possibility of lending. Sequential calling of an auxiliary flow to calculate parameters and output the formation of the ParametersBasic structure.
Parameters:
Input | Output |
ApplicationBasicDto EmploymentReferenceDto ParametersBasic | ParametersBasic |
name: segmentation
Description:
Returns a customer segment based on customer data in the following parameters: a positive credit history, the availability of employment data from the national system, engagement of experience at the current place of work, net income, age, score.
Sequential checking for each of the segmentation parameters and generation of the output ParametersBasic structure.
Parameters:
Input | Output |
AbsReportBasicDto ApplicationBasicDto CreditReportDto EmploymentReferenceDto ParametersBasic | ParametersBasic |
Main flows for Decision rules
name: rule_001_invalid_identity_card
Description:
Check invalid identity cards.
Comparing identityCardExpDate with currentDate.
Parameters:
Input | Output |
Array<ReasonItem> Array<String> ApplicationPrimaryDto | Array<ReasonItem> |
name: rule_002_applicants_employer_is_in_black_list
Description:
Checking the client's employer to see if he is on the blacklist.
Checking the client's employer stopListCompany and grayZoneCompany.
Parameters:
Input | Output |
EmploymentReferenceDto Array<String> Array<ReasonItem> | Array<ReasonItem> |
name: rule_003_applicant_doesnt_comply_with_minimum_age_requirements
Description:
Minimum age check.
Check for Number of years from date of birth to current date <minimum age.
Parameters:
Input | Output |
DataForBRMS1 ApplicationPrimaryDto Array<String> Array<ReasonItem> | Array<ReasonItem> |
name: rule_004_applicant_doesnt_comply_with_maximum_age_requirements
Description:
Maximum age check.
Check for All values Tmax<Min.term, months.
Parameters:
Input | Output |
Array<ReasonItem> Array<String> ParametersPrimary Array<ProductTypeDto> ApplicationPrimaryDto | Array<ReasonItem> |
name: rule_005_applicant_doesnt_comply_with_citizenship_requirements
Description:
Citizenship check.
Citizenship according to the application form ≠ Citizenship according to the directory of product types0.
Parameters:
Input | Output |
Array<ReasonItem> Array<String> ApplicationPrimaryDto DataForBRMS1 | Array<ReasonItem> |
name: rule_006_applicant_doesnt_comply_with_total_seniority_requirements
Description:
Check for general work experience.
Check for the borrower's total length of service (months) <Minimum total work experience, months.
Parameters:
Input | Output |
Array<ReasonItem> Array<String> ApplicationPrimaryDto DataForBRMS2 EmploymentReferenceDto | Array<ReasonItem> |
name: rule_007_applicant_doesnt_comply_with_current_seniority_requirements
Description:
Check for length of service at the current place of work.
Check for the borrower's length of service in this company (months) <Minimum work experience at the current place, months.
Parameters:
Input | Output |
Array<ReasonItem> Array<String> ApplicationPrimaryDto DataForBRMS2 EmploymentReferenceDto | Array<ReasonItem> |
name: rule_008_absense_of_offer_to_applicant
Description:
Checking the minimum loan amount.
Check for Smax=0 for all lending combinations (=no APPROVE matrix) or Incomenet < аpp_retail.custom_setting.Min_oplata_truda.
Parameters:
Input | Output |
Array<ReasonItem> Array<String> ApplicationBasicDto ParametersBasic | Array<ReasonItem> |
name: rule_009_bad_credit_history
Description:
Checking for bad credit history.
Check for each of the obligations indicated in the credit report, calculating the number of times the delinquency was more than 30 days (historyItem; overdueDays>30)(b) for each of the obligations indicated in the credit report, the number of times the delinquency was more than 30 days over the last 12 months is calculated (historyItem; overdueDays>30 and reportingPeriod ≥ current month (date) - 12 months)(c) for each of the obligations indicated in the credit report, the number of times the delinquency was more than 30 days but less than 90 days in the last 12-24 months is calculated (historyItem; overdueDays>30 and overdueDays ≤90 and reportingPeriod ≤ current month ( date) – 12 months)(d) for each of the obligations indicated in the credit report, the number of times the delinquency was more than 90 days over the last 12-24 months is calculated (historyItem; overdueDays>90 and reportingPeriod ≤ current month (date) - 12 months
Parameters:
Input | Output |
Array<ReasonItem> Array<String> ApplicationBasicDto ParametersBasic CreditReportDto DataForBRMS2 | Array<ReasonItem> |
name: rule_010_current_overdue
Description:
Checking for current overdue debt.
Check on (creditStatus = 004, 006, 007, 008, 009, 011 and daysMainSumOverdue > DAYS_MAIN_SUM_OVERDUE) or (creditStatus = 004, 006, 007, 008, 009, 011 and daysInterestOverdue > DAYS_INTEREST_OVERDUE).
Parameters:
Input | Output |
Array<ReasonItem> Array<String> CreditReportDto DataForBRMS2 | Array<ReasonItem> |
name: rule_011_applicant_is_in_black_list
Description:
Checking whether a client is on the stop list.
Checking for FIN code=FIN code of the client from the stop list (app_retail.identity_card.fin_code = integration.
Parameters:
Input | Output |
Array<ReasonItem> Array<String> ApplicationPrimaryDto | Array<ReasonItem> |
name: rule_012_overdue_loan_at_the_bank
Description:
Checking for debt on a bank loan.
Checking previous applications for refusals from the risk manager or credit history.
Parameters:
Input | Output |
Array<ReasonItem> Array<String> ApplicationPrimaryDto DataForBRMS1 AbsReportPrimaryDto | Array<ReasonItem> |
name: rule_013_previous_declines_due_to_bad_credit_history
Description:
Check for D020 previous refusals due to credit history.
Checking for FIN code = FIN code of the application with the status “Refusal” and refusal code = D011, D012, D016 and the current date is the date of the decision < Srok_otkaz_cred.
Parameters:
Input | Output |
Array<ReasonItem> Array<String> ApplicationPrimaryDto DataForBRMS1 | Array<ReasonItem> |
name: rule_014_previous_declines_from_risk_manager
Description:
Checking for previous failures of the risk manager.
Check for (FIN code = FIN code of the application with the status “Refusal” (status_id = DECLINE_UNDER) and verification_checklist contains at least one record with result = TRUE and current date – date of decision < declinePeriodRM) or (FIN code = FIN code of an application with the status “Refusal” (status_id = DECLINE_UNDER) and current date – date of decision < Srok_otkaz_RM).
Parameters:
Input | Output |
Array<ReasonItem> Array<String> ApplicationPrimaryDto DataForBRMS1 | Array<ReasonItem> |
name: rule_015_cut_off
Description:
Cut-off check.
Check score < app_retail.custom_setting.CUT_OFF_SCORE.
Parameters:
Input | Output |
Array<ReasonItem> Array<String> ApplicationBasicDto | Array<ReasonItem> |
name: rule_016_number_of_overdue
Description:
Checking the number of exits overdue.
For each loan, the indicator R = number of facts is calculated when the attribute “Overdue up to 30 days” (historyItem, 0<overdueDays<30) was present at least 3 times in a row.
Parameters:
Input | Output |
Array<ReasonItem> Array<String> CreditReportDto | Array<ReasonItem> |
name: rule_017_late_loan_repayment
Description:
Checking for late loan repayment.
Checking for lastPaymentDate > contractDueOn +30 days and lastPaymentDate>Current date – 5 years.
Parameters:
Input | Output |
Array<ReasonItem> Array<String> CreditReportDto | Array<ReasonItem> |
name: rule_018_gap_between_declared_and_confirmed_income
Description:
Checking for the difference between declared and confirmed income.
Parameters:
Input | Output |
Array<ReasonItem> Array<String> ApplicationBasicDto DataForBRMS2 EmploymentReferenceDto | Array<ReasonItem> |
name: rule_019_applicants_contract_is_about_to_expire
Description:
Verification if the employment contract ends in the next 30 days.
Check for NextEndDate < Current date + 30 days.
Parameters:
Input | Output |
Array<ReasonItem> Array<String> EmploymentReferenceItem | Array<ReasonItem> |
name: rule_020_limit_of_number_of_credit_history_requests_has_been_exceeded
Description:
Checking if the limit on the number of credit history requests has been exceeded.
Checking for count > numberAcbRequest.
Parameters:
Input | Output |
Array<ReasonItem> Array<String> CreditReportDto DataForBRMS2 | Array<ReasonItem> |
name: mainRulesFlow
Description:
Calling all the decisionRules and getting the result for each of them.
Sequentially calling all decisionRules and forming the output structure Array.
Parameters:
Input | Output |
ApplicationPrimaryDto ApplicationBasicDto EmploymentReferenceDto EmploymentReferenceItem Array ParametersPrimary ParametersBasic DataForBRMS1 DataForBRMS2 CreditReportDto AbsReportPrimaryDto | Array<ReasonItem> |
name: decisionRulesMaker
Description:
Making a decision based on the results of checking all decisionRules.
Iteration through all ReasonItems and checking for the type of the triggered rule, according to which a response is generated based on the results of checking all decisionRules.
Parameters:
Input | Output |
Array<ReasonItem> | String |
Auxiliary flows
name: closestCondition
Description:
Selecting a condition with maxPeriod or minPeriod which is greater or less than the passed term.
Iterate through conditions and select a condition with maxPeriod and minPeriod which are greater or less than the passed term.
Parameters:
Input | Output |
ProductTypeDto Integer Array<ProductCondition> | ProductCondition |
name: conditionByPeriod
Description:
Selecting ProductCondition based on term and product conditions.
Iteration through conditions, selecting conditions with minPeriod and maxPeriod, filtering conditions by conditions and calling the ClosestCondition flow.
Parameters:
Input | Output |
ProductTypeDto Integer Array<ProductCondition> | ProductCondition |
name: creditBalance
Description:
Obtaining the loan balance value, taking into account the conversion of other currencies.
Determining the loan type, calculating the balance, calculating the balance taking into account currency conversion
Parameters:
Input | Output |
Credit Boolean Boolean Float, Float, Float | Float |
name: getDebtRefinBrms6
Description:
Calculation of the amount of refinanced loans.
Iteration on external bank loans, obtaining the amount of internal loans and calculating these amounts.
Parameters:
Input | Output |
ParametersBasiс Float, Float, Float | Float |
name: getDebtRefinBrms6Limit
Description:
Calculating the amount of refinanced credit card loans.
Iterate through external bank loans, obtain the amount of internal credit card loans and calculate these amounts.
Parameters:
Input | Output |
ParametersBasiс Float, Float, Float | Float |
name: getGradeByScore
Description:
Determining grade by score value.
Iterate through Array<Product Condition> and compare each element (boundary values) of Array<Product Condition> with the Score value.
Parameters:
Input | Output |
ProductTypeDto Integer | String |
name: getMaxLoanPayment
Description:
Calculation of the maximum loan payment.
Determining the loan category (refinanced/non-refinanced) and calculating the maximum loan installment amount.
Parameters:
Input | Output |
ApplicationAdditionalDto ProductTypeDto ProductCondition Float, Float | Float |
name: isCreditPledged
Description:
Checking whether the loan is pledged.
Iterate through pawn and compare guaranteeKind with a number of keywords.
Parameters:
Input | Output |
Credit | Boolean |
name: mergeConditions
Description:
Merge сonditions.
Convert Map<Array<ProductCondition>> to Array<ProductCondition>.
Parameters:
Input | Output |
Map<Array<ProductCondition>> | Array<ProductCondition> |
name: roundFloat
Description:
Rounding a number to a specified precision.
Parameters:
Input | Output |
Float Integer | Float |
name: isInSegmentBrms
Description:
Сhecking whether a grade matches a certain set of grades.
Iteration through products, obtaining a grade for each product and checking whether this grade is included in the list of suitable grades.
Parameters:
Input | Output |
Array<ProductTypeDto> Array<String> Integer | Boolean |
name: calculateCreditPayment
Description:
Calculate loan payment.
Determining the type of loan, calculating the loan payment and generating a response in the form of a map.
Parameters:
Input | Output |
Date Guarantee Liability Float, Float, Float, Float, Float | Map<String> |
name: calculateInternalCreditPayment
Description:
Calculate payment on an internal loan.
Checking the opening and closing dates, calculating the loan amount and calculating the loan payment.
Parameters:
Input | Output |
Credit Float, Float, Float, Float, Float | Map<String> |
name: getCreditAmount
Description:
Receive loan amount.
Determining the type of loan and calculating its amount, taking into account the conversion of values from other currencies.
Parameters:
Input | Output |
Guarantee Liability Float, Float, Float | Float |
name: getCreditPayment
Description:
Get the monthly loan payment amount.
Determining the loan type and calculating the monthly payment amount, taking into account the conversion of values from other currencies.
Parameters:
Input | Output |
Guarantee Liability Float, Float, Float | Float
|
name: getInternalCreditAmount
Description:
Receive internal loan amount.
Determining the type of internal loan and calculating its amount, taking into account the conversion of values from other currencies.
Parameters:
Input | Output |
Credit Float, Float, Float | Float |
name: isAnyCurrentLiabilityHasOverdue
Description:
Checking whether any current obligation is overdue.
Iterate through liabilities and check creditStatus.
Parameters:
Input | Output |
CreditReportDto Integer, Integer | Boolean |
name: isLiabilityAvailableForRef
Description:
Checking whether any current liability is eligible for refinancing.
Iterate through history, check for overdue Days > 30, check using collateral Code.
Parameters:
Input | Output |
String Liability Integer, Integer | Boolean |
name: isSpecialPledge
Description:
Checking whether the loan is a special collateral.
Checking creditPurpose for a match with a specific code.
Parameters:
Input | Output |
Liability | Boolean |
name: isThereCreditWithSpecificDate
Description:
Checks if there is a loan with a specific date.
Iteration through guarantee and liabilities and checking for matching conditions by date.
Parameters:
Input | Output |
CreditReportDto Date Boolean | Boolean |
name: setLiabilityPaymentAndRef
Description:
Set liability payment and the possibility of refinancing.
Checking for overdue payments, calling the isLiabilityAvailableForRef flow and setting the results to the Liability structure.
Parameters:
Input | Output |
ApplicationBasicDto Liability Boolean Float | Liability |
name: filterConditions
Description:
Generating the output Map<ProductCondition> structure with minPeriod and maxPeriod.
Iteration by conditions, comparison by maxPeriod and minPeriod, formation of the output structure Map<ProductCondition>.
Parameters:
Input | Output |
Array<ProductCondition> | Map<ProductCondition> |
name: maxTerm
Description:
Calculation of the maximum possible loan term for the applicant, taking into account the gender and age of the applicant and the conditions of the product.
Selection of the maximum loan term depending on gender in accordance with the terms and conditions of the loan product.
Parameters:
Input | Output |
Array<ProductCondition> ProductTypeDto String Integer | Integer |
name: maxTermObj
Description:
Calculation of the maximum possible loan term for the applicant, taking into account the gender and age of the applicant and the conditions of the product.
Determine the gender of the applicant, call the ConditionByPeriod flow, select the maximum period from maxTerm and maxTermByCondition. Response flow of the presented ProductMaxTerm structure.
Parameters:
Input | Output |
Array<ProductCondition> ProductTypeDto String Integer | ProductMaxTerm |
name: calculateBankRefPayment
Description:
Calculate bank refinancing payment.
Checking the loan for the possibility of refinancing and bank affiliation and summing up all suitable brmsMonthlyPayment.
Parameters:
Input | Output |
ParametersBasic String | Float |
name: calculateRefDebt
Description:
Сalculate reference debt.
Call flow getOutstandingDebt and sum creditDebt OutstandDebt.
Parameters:
Input | Output |
ParametersBasic String Float, Float, Float | Float |
name: calculateRefPaymentOnly
Description:
Calculate only referral payment.
Summation of brmsMonthlyPayment overall refCredits.
Parameters:
Input | Output |
String ParametersBasic | Float |
name: getDebtRefin
Description:
Get the amount of debt that is suitable for refinancing.
Preparing a list of liabilities that meet the conditions, iterating through internalCredits within each liability, summing the balance for each qualifying liability.
Parameters:
Input | Output |
ParametersBasic String Float, Float, Float | Float |
name: getDebtRefinLimit
Description:
Get the amount of debt that is suitable for refinancing.
Preparing a list of liabilities that meet the conditions, iterating through internalCredits within each liability, summing the balance for each qualifying liability.
Parameters:
Input | Output |
ParametersBasic Boolean Float String Float, Float | Float
|
name: getOutstandingDebt
Description:
Converting a debt amount from another currency.
Selecting the desired currency and converting according to the exchange rate.
Parameters:
Input | Output |
Liability Float, Float, Float | Float |
name: possibleCombinations
Description:
Generates a set of combinations according to an input parameter.
Generates a set of combinations according to the input parameter and forms the output structure Array<String>.
Parameters:
Input | Output |
Integer | Array<String> |
name: setMatrixLiabilities
Description:
Analyzes the loans from the Credit Bureau response and compiles a refinancing matrix from all possible refinancing combinations (for example, 101, 111, 001, ...).
Matching each refCreditLocal.id and liabilityX.
Parameters:
Input | Output |
ParametersBasic String | MatrixBasic |
name: maxEmptItemBySalary
Description:
Selecting the maximum EmptItem by salary.
Iterate through empItems and select empItem with maximum monthly Salary.
Parameters:
Input | Output |
Array<EmploymentReferenceItem> | EmploymentReferenceItem |
name: suitableEmployments
Description:
Selecting suitable EmploymentReferenceItem based on certain conditions.
Iterate through the conditions inside emp.active and check for a series of conditions, the appropriate element is added to the output Array<EmploymentReferenceItem> structure.
Parameters:
Input | Output |
EmploymentReferenceDto ParametersBasic ProductTypeDto Array<ProductCondition> | Array<EmploymentReferenceItem> |
name: areThereOverduesMoreThan30D
Description:
Checking for delinquency of more than 30 days.
Iterate through liability.history and check each for overdueDays > 30.
Parameters:
Input | Output |
Liability | Boolean |
name: calculateCurrentWorkingTerm
Description:
Calculates the current working period.
Calling the maxEmptItemBySalary flow and checking its result for null.
Parameters:
Input | Output |
EmploymentReferenceDto | Integer |
name: maxEmptItemBySalary
Description:
Selecting the maximum empItem by monthly Salary.
Iterate through all empItems and select the empItem with maximum monthly Salary.
Parameters:
Input | Output |
Array<EmploymentReferenceItem> | EmploymentReferenceItem |
name: calculateWorkingTerms
Description:
Finding the date of the earliest active contract and the earliest contract in general.
iterate through active and inactive contracts and select the most previous one in each category.
Parameters:
Input | Output |
EmploymentReferenceDto | CalcWorkTermResult |
name: checkAnyCreditPaidOffLate
Description:
Searching for a loan with an overdue payment date.
Iterate through all Liabilities and find one that meets the late payment conditions.
Parameters:
Input | Output |
CreditReportDto | String |
name: checkCountInquiryHistory
Description:
Сhecking the number of requests in history.
Iteration through inquiryHistory and counting elements that fit the condition.
Parameters:
Input | Output |
CreditReportDto | Boolean |
name: checkCurrentOverdueThirtyDays
Description:
Сhecking the current thirty days overdue.
Iteration through all liabilities and checking for conditions.
Parameters:
Input | Output |
CreditReportDto Integer, Integer Boolean | String |
name: checkEmployerUnreliable
Description:
Еmployer reliability check.
Iterate all empItems and check employers on stopListCompany and grayZoneCompany.
Parameters:
Input | Output |
EmploymentReferenceDto Boolean, Boolean | String |
name: checkOverdueNumberNotGood
Description:
Check the number of overdue under certain conditions.
Iterate through the entire history inside each liability element. checking for 3 more debts over 30 days.
Parameters:
Input | Output |
CreditReportDto | String |
name: isCreditHistoryBad
Description: Сhecking the client's "bad" credit history.
Iterate through each history element of each liability and test history against a number of conditions. If "true" is obtained for any of the conditions, then, taking into account the grade, the client's history will be defined as “bad”.
Parameters:
Input | Output |
CreditReportDto ParametersBasic Integer, Integer | Boolean |
name: isInSegmentBrms
Description:
Сhecking whether a grade matches a certain set of grades.
Iteration through products, obtaining a grade for each product and checking whether this grade is included in the list of suitable grades.
Parameters:
Input | Output |
Array<ProductTypeDto> Array<String> Integer | Boolean |
name: isThereOverdue30plus
Description:
Checking if a payment is overdue for more than 30 days.
Iterate through debtI and debtP and check for overdue more than 30 days.
Parameters:
Input | Output |
Credit | Boolean |
name: loansOverview
Description:
Сonversion in the form of presentation of information about loans.
Iterate over an Array<Credit> and provide the information as a Map<String> after a series of intermediate operations.
Parameters:
Input | Output |
Array<Credit> Array<Credit> | Map<String> |
name: previousDeclines
Description:
Checking previous applications for refusals.
Iterate through PreviousApplication and check for failures.
Parameters:
Input | Output |
Array<PreviousApplication> Integer, Integer, Integer | Map<String> |
Last updated