@frontlinesystems/rason-mcp-server 2026.5.0 → 2026.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +35 -35
- package/README.md +1 -1
- package/examples/EXAMPLES_REFERENCE.md +128 -128
- package/examples/calculation/DMNExamples/DMN Box Fun with typeDef result.json +53 -53
- package/examples/calculation/DMNExamples/DMN Context example.json +69 -69
- package/examples/calculation/DMNExamples/DMN DT with typeDef result.json +43 -43
- package/examples/calculation/DMNExamples/FEEL Date Time example.json +28 -28
- package/examples/calculation/DMNExamples/FEEL For iteration example.json +66 -66
- package/examples/calculation/DMNExamples/FEEL For with two indices.json +15 -15
- package/examples/calculation/DMNExamples/FEEL For with typeDef result.json +88 -88
- package/examples/calculation/DMNExamples/FEEL If Then Else example.json +25 -25
- package/examples/calculation/DMNExamples/FEEL List example.json +37 -37
- package/examples/calculation/DMNExamples/FEEL List operator.json +17 -17
- package/examples/calculation/DMNExamples/FEEL List with typeDef collection.json +36 -36
- package/examples/calculation/DMNExamples/FEEL Some or Every example.json +65 -65
- package/examples/calculation/DecisionTables/DT Datasource example.json +52 -52
- package/examples/calculation/DecisionTables/DT Date and Time examples.json +91 -91
- package/examples/calculation/DecisionTables/DT Expression example.json +32 -32
- package/examples/calculation/DecisionTables/DT Hit Policy examples.json +136 -136
- package/examples/calculation/DecisionTables/DT Loan Recommend model.json +81 -81
- package/examples/calculation/DecisionTables/DT Loan Strategy Model and Predictive CSV-XML.json +218 -218
- package/examples/calculation/DecisionTables/DT Loan Strategy model and Datasource.json +286 -286
- package/examples/calculation/DecisionTables/DT Loan Strategy model and Predictive.json +203 -203
- package/examples/calculation/DecisionTables/DT Loan Strategy model by scratch.json +214 -214
- package/examples/calculation/DecisionTables/DT Output Order example.json +39 -39
- package/examples/calculation/DecisionTables/DT Unique example.json +38 -38
- package/examples/calculation/TypeDefinitions/TypeDefCF.json +64 -64
- package/examples/calculation/TypeDefinitions/TypeDefDT.json +57 -57
- package/examples/datamining/AffinityAnalysis/AssociationRules.json +51 -51
- package/examples/datamining/Classification/DecisionTree.json +90 -90
- package/examples/datamining/Classification/DiscriminantAnalysis.json +81 -81
- package/examples/datamining/Classification/Ensembles/Bagging.json +66 -66
- package/examples/datamining/Classification/Ensembles/Boosting.json +67 -67
- package/examples/datamining/Classification/Ensembles/RandomTrees.json +91 -91
- package/examples/datamining/Classification/FindBestModel.json +86 -86
- package/examples/datamining/Classification/LogisticRegression.json +82 -82
- package/examples/datamining/Classification/NaiveBayes.json +78 -78
- package/examples/datamining/Classification/NearestNeighbors.json +84 -84
- package/examples/datamining/Classification/NeuralNetwork.json +92 -92
- package/examples/datamining/Clustering/Hierarchical.json +54 -54
- package/examples/datamining/Clustering/KMeans.json +71 -71
- package/examples/datamining/DataSources/DelimitedFile.json +49 -49
- package/examples/datamining/DataSources/JSONFile.json +49 -49
- package/examples/datamining/DataSources/MSAccessDatabase.json +49 -49
- package/examples/datamining/DataSources/MSExcelTable.json +50 -50
- package/examples/datamining/DataSources/MSSQLDatabase.json +49 -49
- package/examples/datamining/DataSources/ODATATable.json +49 -49
- package/examples/datamining/DataSources/ODBCDatabase.json +49 -49
- package/examples/datamining/FeatureSelection/LinearWrapping.json +53 -53
- package/examples/datamining/FeatureSelection/LogisticWrapping.json +56 -56
- package/examples/datamining/FeatureSelection/Univariate.json +78 -78
- package/examples/datamining/Regression/DecisionTree.json +82 -82
- package/examples/datamining/Regression/Ensembles/Bagging.json +62 -62
- package/examples/datamining/Regression/Ensembles/Boosting.json +62 -62
- package/examples/datamining/Regression/Ensembles/RandomTrees.json +78 -78
- package/examples/datamining/Regression/FindBestModel.json +86 -86
- package/examples/datamining/Regression/LinearRegression.json +124 -124
- package/examples/datamining/Regression/NearestNeighbors.json +77 -77
- package/examples/datamining/Regression/NeuralNetwork.json +82 -82
- package/examples/datamining/Scoring/JSONClassifier.json +62 -62
- package/examples/datamining/Scoring/JSONClassifierNN.json +62 -62
- package/examples/datamining/Scoring/JSONClusterizer.json +37 -37
- package/examples/datamining/Scoring/JSONForecaster.json +49 -49
- package/examples/datamining/Scoring/JSONLinearRegression.json +56 -56
- package/examples/datamining/Scoring/JSONPCA.json +41 -41
- package/examples/datamining/Scoring/JSONRegressor.json +56 -56
- package/examples/datamining/Scoring/JSONTransformer.json +38 -38
- package/examples/datamining/Scoring/PMMLClassifier.json +42 -42
- package/examples/datamining/Scoring/PMMLForecaster.json +43 -43
- package/examples/datamining/Scoring/PMMLRegressor.json +38 -38
- package/examples/datamining/Scoring/PMMLTransformer.json +38 -38
- package/examples/datamining/Simulation/LinearRegressionSimulation.json +117 -117
- package/examples/datamining/Simulation/SyntheticDataGeneration.json +108 -108
- package/examples/datamining/Simulation/pmml-risk-scoring.json +62 -62
- package/examples/datamining/Summarizer/Summarization.json +54 -54
- package/examples/datamining/TextMining/LatentSemanticAnalysis.json +51 -51
- package/examples/datamining/TextMining/TfIdf-FileData.json +65 -65
- package/examples/datamining/TextMining/TfIdf-InlineData.json +55 -55
- package/examples/datamining/TimeSeries/AddHoltWinters.json +79 -79
- package/examples/datamining/TimeSeries/Arima.json +74 -74
- package/examples/datamining/TimeSeries/DoubleExponential.json +65 -65
- package/examples/datamining/TimeSeries/Exponential.json +64 -64
- package/examples/datamining/TimeSeries/LagAnalysis.json +48 -48
- package/examples/datamining/TimeSeries/MovingAverage.json +65 -65
- package/examples/datamining/TimeSeries/MulHoltWinters.json +65 -65
- package/examples/datamining/TimeSeries/NoTrendHoltWinters.json +65 -65
- package/examples/datamining/Transformation/Binning.json +69 -69
- package/examples/datamining/Transformation/CanonicalVariateAnalysis.json +47 -47
- package/examples/datamining/Transformation/CategoryReduction.json +51 -51
- package/examples/datamining/Transformation/Factorization.json +50 -50
- package/examples/datamining/Transformation/MissingDataHandling.json +83 -83
- package/examples/datamining/Transformation/OneHotEncoding-DataInline.json +54 -54
- package/examples/datamining/Transformation/OneHotEncoding-DatainFile.json +48 -48
- package/examples/datamining/Transformation/PartitionTimeSeries.json +48 -48
- package/examples/datamining/Transformation/Partitioning-DF.json +72 -72
- package/examples/datamining/Transformation/Partitioning.json +46 -46
- package/examples/datamining/Transformation/PartitioningWithOversampling-DF.json +65 -65
- package/examples/datamining/Transformation/PartitioningWithOversampling.json +44 -44
- package/examples/datamining/Transformation/PrincipalComponentsAnalysis.json +52 -52
- package/examples/datamining/Transformation/Rescaling.json +67 -67
- package/examples/datamining/Transformation/Sampling.json +43 -43
- package/examples/datamining/Transformation/StratifiedSampling.json +46 -46
- package/examples/flow/SQLServerTransform.json +260 -260
- package/examples/flow/dm-calc-pipeline.json +277 -277
- package/examples/flow/dm-pipeline-simulation.json +113 -113
- package/examples/flow/opt-sim-pipeline.json +159 -159
- package/examples/flow/sim-dm-pipeline.json +106 -106
- package/examples/flow/sim-sim-pipeline.json +136 -136
- package/examples/index.json +4678 -4678
- package/examples/{Optimization → optimization}/Conic/AirlineHubConic.json +111 -111
- package/examples/{Optimization → optimization}/Conic/AirlineHubConic2.json +108 -108
- package/examples/{Optimization → optimization}/Conic/AirlineHubConic3.json +111 -111
- package/examples/{Optimization → optimization}/Conic/AirlineHubConic4.json +99 -99
- package/examples/{Optimization → optimization}/Conic/AirlineHubConic5.json +101 -101
- package/examples/{Optimization → optimization}/DataBinding/ProductMixCsv.json +81 -81
- package/examples/{Optimization → optimization}/DataBinding/ProductMixCsv4.json +96 -96
- package/examples/{Optimization → optimization}/DataBinding/ProductMixExcel.json +73 -73
- package/examples/{Optimization → optimization}/DataBinding/ProductMixExcel1.json +86 -86
- package/examples/{Optimization → optimization}/DataBinding/ProductMixExcel11.json +108 -108
- package/examples/{Optimization → optimization}/DataBinding/ProductMixExcel2.json +77 -77
- package/examples/{Optimization → optimization}/DataBinding/ProductMixTab.json +89 -89
- package/examples/{Optimization → optimization}/DataBinding/ProductMixTab1.json +73 -73
- package/examples/{Optimization → optimization}/DataBinding/ProductMixTab2.json +77 -77
- package/examples/{Optimization → optimization}/Linear/Inventory.json +199 -199
- package/examples/{Optimization → optimization}/Linear/Matop.json +119 -119
- package/examples/{Optimization → optimization}/Linear/ProductMix.json +97 -97
- package/examples/{Optimization → optimization}/Linear/ProductMix2.json +72 -72
- package/examples/{Optimization → optimization}/Linear/ProductMix3.json +49 -49
- package/examples/{Optimization → optimization}/Linear/ProductMix4.json +56 -56
- package/examples/{Optimization → optimization}/Linear/ProductMixCsv1.json +106 -106
- package/examples/{Optimization → optimization}/Linear/ProductMixCsv2.json +106 -106
- package/examples/{Optimization → optimization}/Linear/ProductMixSQL11.json +82 -82
- package/examples/{Optimization → optimization}/Linear/Rowop.json +126 -126
- package/examples/{Optimization → optimization}/NonLinear/AirlineHub.json +63 -63
- package/examples/{Optimization → optimization}/NonLinear/AirlineHub2.json +47 -47
- package/examples/{Optimization → optimization}/NonLinear/AirlineHub3.json +47 -47
- package/examples/{Optimization → optimization}/NonSmooth/Inventory2.json +159 -159
- package/examples/{Optimization → optimization}/Quadratic/PortfolioOpt.json +55 -55
- package/examples/{Optimization → optimization}/Quadratic/PortfolioOpt2.json +65 -65
- package/examples/{Optimization → optimization}/WithUncertainty/GasCompanyChance.json +78 -78
- package/examples/{Optimization → optimization}/WithUncertainty/GasCompanyRecourse.json +78 -78
- package/examples/{Optimization → optimization}/WithUncertainty/ProjectSelect.json +77 -77
- package/examples/{Optimization → optimization}/WithUncertainty/ProjectSelect2.json +81 -81
- package/examples/{Optimization → optimization}/WithUncertainty/ProjectSelect3.json +84 -84
- package/examples/{Optimization → optimization}/WithUncertainty/ProjectSelect4.json +74 -74
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/DataFiltering/ListwithFilter.json +52 -52
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/ProductMix5.json +57 -57
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/compoundWhileStatement.json +35 -35
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/ifThenElseStatement.json +33 -33
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/nestedLoop.json +25 -25
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/ParallelArray.json +47 -47
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/indexedArray.json +69 -69
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/nonParallelArray.json +49 -49
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/sumAggregateExample.json +337 -337
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/tsp.json +61 -61
- package/examples/rason-features/BoxIterators/Box_Fun_Loop_Iter_Sim_RASON.json +190 -190
- package/examples/rason-features/BoxIterators/Box_Fun_Loop_Sim_RASON.json +75 -75
- package/examples/rason-features/BoxIterators/Box_Fun_Sim_RASON.json +108 -108
- package/examples/rason-features/BoxIterators/Box_Iter_SIM_RASON.json +68 -68
- package/examples/rason-features/BoxIterators/Box_Iterator_Calc_Loop.json +183 -183
- package/examples/rason-features/BoxIterators/Box_Iterator_with_typeDef_partial.json +79 -79
- package/examples/rason-features/BoxLambdaExamples/BoxFunOptimize.json +154 -154
- package/examples/rason-features/BoxLambdaExamples/BoxFunSimulate.json +118 -118
- package/examples/rason-features/BoxLambdaExamples/LambdaFunOptimize.json +142 -142
- package/examples/rason-features/BoxLambdaExamples/LambdaFunSimulate.json +81 -81
- package/examples/rason-features/ReferenceGuide/RGFirehouseLocation.json +69 -69
- package/examples/rason-features/ReferenceGuide/RGFirehouseLocationConic.json +113 -113
- package/examples/rason-features/ReferenceGuide/RGProductMixCsv1.json +107 -107
- package/examples/rason-features/ReferenceGuide/RGProductMixExcel11.json +117 -117
- package/examples/rason-features/ReferenceGuide/RGProductMixSQL11.json +108 -108
- package/examples/rason-features/UserGuide/UGAirlineHubCSV.json +67 -67
- package/examples/rason-features/UserGuide/UGForecast.json +50 -50
- package/examples/rason-features/UserGuide/UGProductMix1.json +48 -48
- package/examples/rason-features/UserGuide/UGProductMix2.json +48 -48
- package/examples/rason-features/UserGuide/UGProductMixTab1.json +67 -67
- package/examples/rason-features/UserGuide/UGProductMixTab2.json +76 -76
- package/examples/rason-features/UserGuide/UGProductMixTab3.json +66 -66
- package/examples/rason-features/UserGuide/UGProductMixTab4.json +70 -70
- package/examples/rason-features/UserGuide/UGProductMixTab5.json +67 -67
- package/examples/rason-features/UserGuide/UGProjectSelect0.json +91 -91
- package/examples/rason-features/UserGuide/UGProjectSelect1.json +74 -74
- package/examples/rason-features/UserGuide/UGProjectSelect2.json +74 -74
- package/examples/rason-features/UserGuide/UGYieldManagement1.json +61 -61
- package/examples/rason-features/UserGuide/UGYieldManagement2.json +61 -61
- package/examples/rason-features/UserGuide/UGYieldManagement3.json +63 -63
- package/examples/{Simulation → simulation}/CandyStoreSalesUsingSIP.json +147 -147
- package/examples/{Simulation → simulation}/CollegeFundGrowth1.json +423 -423
- package/examples/{Simulation → simulation}/CollegeFundGrowth1SIPModel.json +27 -27
- package/examples/{Simulation → simulation}/CollegeFundGrowth2.json +415 -415
- package/examples/{Simulation → simulation}/CollegeFundGrowthSIP.json +401 -401
- package/examples/{Simulation → simulation}/GBMSimulationModel.json +236 -236
- package/examples/{Simulation → simulation}/YieldManagement(Sim).json +69 -69
- package/examples/{Simulation → simulation}/YieldManagement2(Sim).json +72 -72
- package/out/index.cjs +38 -38
- package/package.json +2 -2
|
@@ -1,286 +1,286 @@
|
|
|
1
|
-
{
|
|
2
|
-
"modelName": "DTLoanStrategyExamplewDatasource",
|
|
3
|
-
"modelDescription": "RASON Decision Table Example: Loan Strategy model with imported data sources: The difference between this example and the original DTLoanStrategyModel, is that this example imports the customer data and loan data from an outside data source, in this example two CVS files: customers.txt and loans.txt.",
|
|
4
|
-
"modelType": "calculation",
|
|
5
|
-
"datasources": {
|
|
6
|
-
"comment": "This section is used to import data from outside sources. To download these files, click Download RASON Example Data on the Editor tab ribbon. All data files related to all RASON examples will be downloaded. To solve this model, click Choose Files from the Properties pane on the right, browse to the location of the downloaded files and select customer.txt and loans.txt, then click Open. In the previous example, DTLoanStrategyModel, all data used in the model was simply passed as constants in the file. This example, however, demonstrates how to import this same data from an external data file using a parametric selection criteria. A Parametric Selection allows a single record to be selected from an external datasource file as an input. Parametric selection in data-sources is universal, it is critical to decision tables, which expect a single record for their inputs. All supported data types may be used with this feature.",
|
|
7
|
-
"cust_data": {
|
|
8
|
-
"comment": "The datasource, cust_data, binds to the customers.txt csv file. This file contains five input parameters, age, maritalStatus, employmentStatus, creditScore and bankrupt. Inside of the cust_data datasource, we see the connection argument passing the CSV file, 'connection': 'customers.txt' (screenshot above). The selection argument selects the 'CustID' column , from the customers.txt file, and replaces 'custID = ?' with 'custID = cuID'; the parameters argument binds 'cuID' to 'c1'. In addition, indexCols is set to 'cust ID' and valueCols are set to 'age', 'maritalStatus', 'employmentStatus', 'creditScore' and 'bankrupt'. This means that cust ID is the index column and 'age', 'maritalStatus', 'employmentStatus', 'creditScore' and 'bankrupt' are the value columns.",
|
|
9
|
-
"type": "csv",
|
|
10
|
-
"connection": "customers_dt.txt",
|
|
11
|
-
"selection": "custID = ?",
|
|
12
|
-
"parameters": {
|
|
13
|
-
"cuID": {
|
|
14
|
-
"binding": "get",
|
|
15
|
-
"value": "c1"
|
|
16
|
-
}
|
|
17
|
-
},
|
|
18
|
-
"indexCols": [ "custID" ],
|
|
19
|
-
"valueCols": [ "age", "maritalStatus", "employmentStatus", "creditScore", "bankrupt" ],
|
|
20
|
-
"direction": "import"
|
|
21
|
-
},
|
|
22
|
-
"loan_data": {
|
|
23
|
-
"comment": "Inside of the loan_data datasource, we see the connection argument passing the CSV file, connection: 'loans.txt' (screenshot above). The selection argument selects the 'loanID' column , from the loans.txt file, and replaces 'loanID = ?' with 'loanID = loID'; the parameters argument binds 'loID' to 'l1'. In addition, indexCols is set to 'loanID' and valueCols are set to 'type', 'rate' and 'term'. This means that loanID is the index column and 'type', 'rate' and 'term' are the value columns.",
|
|
24
|
-
"type": "csv",
|
|
25
|
-
"connection": "loans.txt",
|
|
26
|
-
"selection": "loanID = ?",
|
|
27
|
-
"parameters": {
|
|
28
|
-
"loID": {
|
|
29
|
-
"binding": "get",
|
|
30
|
-
"value": "l1"
|
|
31
|
-
}
|
|
32
|
-
},
|
|
33
|
-
"indexCols": [ "loanID" ],
|
|
34
|
-
"valueCols": [ "type", "rate", "term" ],
|
|
35
|
-
"direction": "import"
|
|
36
|
-
}
|
|
37
|
-
},
|
|
38
|
-
"data": {
|
|
39
|
-
"comment": "Use the data section to organize constant data parameters in the RASON model.",
|
|
40
|
-
"custExist": {
|
|
41
|
-
"comment": "True if the applicant is an existing customer; false if not.",
|
|
42
|
-
"value": false
|
|
43
|
-
},
|
|
44
|
-
"custAge": {
|
|
45
|
-
"comment": "Binds the age column from cust_data datasource to data parameter, custAge.",
|
|
46
|
-
"value": 40,
|
|
47
|
-
"binding": "cust_data",
|
|
48
|
-
"valueCol": "age"
|
|
49
|
-
},
|
|
50
|
-
"maritalStatus": {
|
|
51
|
-
"comment": "Binds the maritalStatus column from cust_data datasource to data parameter, maritalStatus.",
|
|
52
|
-
"value": "s",
|
|
53
|
-
"binding": "cust_data",
|
|
54
|
-
"valueCol": "maritalStatus"
|
|
55
|
-
},
|
|
56
|
-
"employmentStatus": {
|
|
57
|
-
"comment": "Binds the employmentStatus column from cust_data datasource to data parameter,employmentStatus ",
|
|
58
|
-
"value": "selfEmployed",
|
|
59
|
-
"binding": "cust_data",
|
|
60
|
-
"valueCol": "employmentStatus"
|
|
61
|
-
},
|
|
62
|
-
"creditScore": {
|
|
63
|
-
"comment": "Binds the creditScore column from cust_data datasource to data parameter, creditScore.",
|
|
64
|
-
"value": 610,
|
|
65
|
-
"binding": "cust_data",
|
|
66
|
-
"valueCol": "creditScore"
|
|
67
|
-
},
|
|
68
|
-
"bankrupt": {
|
|
69
|
-
"comment": "Binds the creditScore column from cust_data datasource to data parameter, creditScore.",
|
|
70
|
-
"value": false,
|
|
71
|
-
"binding": "cust_data",
|
|
72
|
-
"valueCol": "bankrupt"
|
|
73
|
-
},
|
|
74
|
-
"monthIncome": {
|
|
75
|
-
"comment": "Applicant's monthly income. Note the 'binding':'get' property. This property allows access to this parameter outside of the RASON model environment.",
|
|
76
|
-
"value": 2500,
|
|
77
|
-
"binding": "get"
|
|
78
|
-
},
|
|
79
|
-
"monthExpenses": {
|
|
80
|
-
"comment": "Applicant's monthly expenses. Note the 'binding':'get' property. This property allows access to this parameter outside of the RASON model environment.",
|
|
81
|
-
"value": 1000,
|
|
82
|
-
"binding": "get"
|
|
83
|
-
},
|
|
84
|
-
"loanType": {
|
|
85
|
-
"comment": "Binds the type column from loan_data datasource to data parameter, loanType.",
|
|
86
|
-
"value": "standard",
|
|
87
|
-
"binding": "loan_data",
|
|
88
|
-
"valueCol": "type"
|
|
89
|
-
},
|
|
90
|
-
"loanRate": {
|
|
91
|
-
"comment": "Binds the rate column from loan_data datasource to data parameter, loanRate.",
|
|
92
|
-
"value": 5.0,
|
|
93
|
-
"binding": "loan_data",
|
|
94
|
-
"valueCol": "rate"
|
|
95
|
-
},
|
|
96
|
-
"loanTerm": {
|
|
97
|
-
"comment": "Binds the term column from loan_data datasource to data parameter, loanTerm.",
|
|
98
|
-
"value": 30,
|
|
99
|
-
"binding": "loan_data",
|
|
100
|
-
"valueCol": "term"
|
|
101
|
-
},
|
|
102
|
-
"loanAmnt": {
|
|
103
|
-
"comment": "The prospective loan amount. Note the 'binding':'get' property. This property allows access to this parameter outside of the RASON model environment.",
|
|
104
|
-
"value": 100000.0,
|
|
105
|
-
"binding": "get"
|
|
106
|
-
}
|
|
107
|
-
},
|
|
108
|
-
"decisionTables": {
|
|
109
|
-
"comment": "There are 8 decision tables in the model.",
|
|
110
|
-
"tblAppRiskScore": {
|
|
111
|
-
"comment": "This decision table accepts 3 inputs, customer age, marital status and employment status, and returns a partial risk score. The collection of results will be added together to create the partial score. Note that the inputValues property limits the age to be 18 to 120, inclusive, the marital status to be s for single or m for married, the employment status as unemployed, employed, selfEmployed or student. A 40 yo single self employed person would be assigned a partialScore = 43 (rule 4) + 25 (rule 6) + 45 (rule 10) = 113.",
|
|
112
|
-
"inputs": [ "custAge", "maritalStatus", "employmentStatus" ],
|
|
113
|
-
"outputs": [ "partialScore" ],
|
|
114
|
-
"inputValues": [
|
|
115
|
-
[ "[18..120]", "s", "unemployed" ],
|
|
116
|
-
[ null, "m", "employed" ],
|
|
117
|
-
[ null, null, "selfEmployed" ],
|
|
118
|
-
[ null, null, "student" ]
|
|
119
|
-
],
|
|
120
|
-
"rules": [
|
|
121
|
-
[ "[18..21]", "-", "-", 32 ],
|
|
122
|
-
[ "(21..25]", "-", "-", 35 ],
|
|
123
|
-
[ "(25..35]", "-", "-", 40 ],
|
|
124
|
-
[ "(35..49]", "-", "-", 43 ],
|
|
125
|
-
[ ">49", "-", "-", 48 ],
|
|
126
|
-
[ "-", "s", "-", 25 ],
|
|
127
|
-
[ "-", "m", "-", 45 ],
|
|
128
|
-
[ "-", "-", "unemployed", 15 ],
|
|
129
|
-
[ "-", "-", "student", 18 ],
|
|
130
|
-
[ "-", "-", "employed", 45 ],
|
|
131
|
-
[ "-", "-", "selfEmployed", 36 ]
|
|
132
|
-
],
|
|
133
|
-
"hitPolicy": "collect+"
|
|
134
|
-
},
|
|
135
|
-
"tblBureauRiskCat": {
|
|
136
|
-
"comment": "This decision table accepts 2 inputs, custExist (true if customer already has at least 1 more loans) and appRiskScore (partial score from tblAppRiskScore). With a hit policy of 'unique', only 1 rule, with a unique result, may be returned. ",
|
|
137
|
-
"inputs": [ "custExist", "appRiskScore" ],
|
|
138
|
-
"outputs": [ "bureauRiskCat" ],
|
|
139
|
-
"rules": [
|
|
140
|
-
[ false, "<100", "high" ],
|
|
141
|
-
[ false, "[100..120)", "medium" ],
|
|
142
|
-
[ false, "[120..130]", "low" ],
|
|
143
|
-
[ false, ">130", "veryLow" ],
|
|
144
|
-
[ true, "<80", "decline" ],
|
|
145
|
-
[ true, "[80..90)", "high" ],
|
|
146
|
-
[ true, "[90..110]", "medium" ],
|
|
147
|
-
[ true, ">110", "low" ]
|
|
148
|
-
],
|
|
149
|
-
"hitPolicy": "unique"
|
|
150
|
-
},
|
|
151
|
-
"tblBureauCallType": {
|
|
152
|
-
"comment": "This decision table accepts 1 input, bureauRiskCat, which is the output of the tblBureauRiskCat decision table.",
|
|
153
|
-
"inputs": [ "bureauRiskCat" ],
|
|
154
|
-
"outputs": [ "bureauCallType" ],
|
|
155
|
-
"rules": [
|
|
156
|
-
[ "high,medium", "full" ],
|
|
157
|
-
[ "low", "mini" ],
|
|
158
|
-
[ "veryLow,decline", "none" ]
|
|
159
|
-
],
|
|
160
|
-
"hitPolicy": "unique"
|
|
161
|
-
},
|
|
162
|
-
"tblEligibility": {
|
|
163
|
-
"comment": "This decision table accepts 3 inputs, bureauRiskCat (which is the output of the tblAppriskScore decision table), bureauAfford (a statistic calculated in the formula's section) and the customer's age. The customer's eligibility will be returned in the result. Note that there are only two outputs: 'ineligible' or 'eligible' as given in the outputValues property.",
|
|
164
|
-
"inputs": [ "bureauRiskCat", "bureauAfford", "custAge" ],
|
|
165
|
-
"outputs": [ "eligibility" ],
|
|
166
|
-
"outputValues": [ "ineligible", "eligible" ],
|
|
167
|
-
"rules": [
|
|
168
|
-
[ "decline", "-", "-", "ineligible" ],
|
|
169
|
-
[ "-", false, "-", "ineligible" ],
|
|
170
|
-
[ "-", "-", "<18", "ineligible" ],
|
|
171
|
-
[ "-", "-", "-", "eligible" ]
|
|
172
|
-
],
|
|
173
|
-
"hitPolicy": "priority"
|
|
174
|
-
},
|
|
175
|
-
"tblCreditContFactor": {
|
|
176
|
-
"comment": "This decision table accepts 1 input, bureauRiskCat, and returns the creditContFactor.",
|
|
177
|
-
"inputs": [ "bureauRiskCat" ],
|
|
178
|
-
"outputs": [ "creditContFactor" ],
|
|
179
|
-
"rules": [
|
|
180
|
-
[ "high,decline", 0.6 ],
|
|
181
|
-
[ "medium", 0.7 ],
|
|
182
|
-
[ "low,veryLow", 0.8 ]
|
|
183
|
-
],
|
|
184
|
-
"hitPolicy": "unique"
|
|
185
|
-
},
|
|
186
|
-
"tblStrategy": {
|
|
187
|
-
"comment": "This decision table accepts 2 inputs, eligibility and bureauCallType. The strategy will be returned in the result.",
|
|
188
|
-
"inputs": [ "eligibility", "bureauCallType" ],
|
|
189
|
-
"outputs": [ "strategy" ],
|
|
190
|
-
"rules": [
|
|
191
|
-
[ "ineligible", "-", "decline" ],
|
|
192
|
-
[ "eligible", "full,mini", "bureau" ],
|
|
193
|
-
[ "eligible", "none", "through" ]
|
|
194
|
-
],
|
|
195
|
-
"hitPolicy": "unique"
|
|
196
|
-
},
|
|
197
|
-
"tblPostBureauRiskCat": {
|
|
198
|
-
"comment": "This decision table accepts 3 inputs, custExist, appRiskScore (which is the output of the tblBureauRiskCat decision table) and creditScore. The customer's credit factor will be returned in the result.",
|
|
199
|
-
"inputs": [ "custExist", "appRiskScore", "creditScore" ],
|
|
200
|
-
"outputs": [ "postBureauRiskCat" ],
|
|
201
|
-
"rules": [
|
|
202
|
-
[ false, "<120", "<590", "high" ],
|
|
203
|
-
[ false, "<120", "[590..610]", "medium" ],
|
|
204
|
-
[ false, "<120", ">610", "low" ],
|
|
205
|
-
[ false, "[120..130]", "<600", "high" ],
|
|
206
|
-
[ false, "[120..130]", "[600..625]", "medium" ],
|
|
207
|
-
[ false, "[120..130]", ">625", "low" ],
|
|
208
|
-
[ false, ">130", "-", "veryLow" ],
|
|
209
|
-
[ true, "<=100", "<580", "high" ],
|
|
210
|
-
[ true, "<=100", "[580..600]", "medium" ],
|
|
211
|
-
[ true, "<=100", ">600", "low" ],
|
|
212
|
-
[ true, ">100", "<590", "high" ],
|
|
213
|
-
[ true, ">100", "[590..615]", "medium" ],
|
|
214
|
-
[ true, ">100", ">615", "low" ]
|
|
215
|
-
],
|
|
216
|
-
"hitPolicy": "unique"
|
|
217
|
-
},
|
|
218
|
-
"tblRouting": {
|
|
219
|
-
"comment": "This decision table accepts 4 inputs: postBureauRiskCat, postBureauAfford, bankrupt and creditScore. The application routing number will be returned in the result.",
|
|
220
|
-
"inputs": [ "postBureauRiskCat", "postBureauAfford", "bankrupt", "creditScore" ],
|
|
221
|
-
"outputs": [ "routing" ],
|
|
222
|
-
"inputValues": [
|
|
223
|
-
[ null, null, true, "[0..999]" ],
|
|
224
|
-
[ null, null, false, null ]
|
|
225
|
-
],
|
|
226
|
-
"outputValues": [ "decline", "refer", "accept" ],
|
|
227
|
-
"rules": [
|
|
228
|
-
[ "-", false, "-", "-", "decline" ],
|
|
229
|
-
[ "-", "-", true, "-", "decline" ],
|
|
230
|
-
[ "high", "-", "-", "-", "refer" ],
|
|
231
|
-
[ "-", "-", "-", "<580", "refer" ],
|
|
232
|
-
[ "-", "-", "-", "-", "accept" ]
|
|
233
|
-
],
|
|
234
|
-
"hitPolicy": "priority"
|
|
235
|
-
}
|
|
236
|
-
},
|
|
237
|
-
"formulas": {
|
|
238
|
-
"comment": "Use the formulas section to calculate the decision tables.",
|
|
239
|
-
"monthFee": {
|
|
240
|
-
"comment": "Determines the monthly fees for each loanType, standard or special.",
|
|
241
|
-
"formula": "IF(loanType[1] = 'standard', 20, IF(loanType[1] = 'special', 25, 0))"
|
|
242
|
-
},
|
|
243
|
-
"monthRepay": {
|
|
244
|
-
"comment": "Determines the portion of the installment payment attributable to principal replayment.",
|
|
245
|
-
"formula": "-PMT(loanRate[1]%/12, loanTerm[1]*12, loanAmnt)"
|
|
246
|
-
},
|
|
247
|
-
"monthInstall": {
|
|
248
|
-
"comment": "Calculates the total installment payment.",
|
|
249
|
-
"formula": "monthRepay + monthFee"
|
|
250
|
-
},
|
|
251
|
-
"disposIncome": {
|
|
252
|
-
"comment": "Calculates the applicant's disposeable income.",
|
|
253
|
-
"formula": "monthIncome - (monthRepay + monthExpenses)"
|
|
254
|
-
},
|
|
255
|
-
"appRiskScore": {
|
|
256
|
-
"comment": "Calls the tblAppRiskScore decision table.",
|
|
257
|
-
"formula": "tblAppRiskScore(,, custAge[1], maritalStatus[1], employmentStatus[1])"
|
|
258
|
-
},
|
|
259
|
-
"bureauRiskCat": {
|
|
260
|
-
"comment": "Calls the tblBureauRiskCat decision table.",
|
|
261
|
-
"formula": "tblBureauRiskCat(,, custExist, appRiskScore)"
|
|
262
|
-
},
|
|
263
|
-
"bureauAfford": {
|
|
264
|
-
"comment": "Calculates if the applicant can afford the loan repayment by calling the tblCreditContFactor decision table.",
|
|
265
|
-
"formula": "IF(disposIncome * tblCreditContFactor(,, bureauRiskCat) > monthInstall, true, false)"
|
|
266
|
-
},
|
|
267
|
-
"strategy": {
|
|
268
|
-
"comment": "Calls the tblsStrategy decision table. Note that the final value for this formula will be included in the results due to the exitence of the finalValue property.",
|
|
269
|
-
"formula": "tblStrategy(,, tblEligibility(,, bureauRiskCat, bureauAfford, custAge[1]), tblBureauCallType(,, bureauRiskCat))",
|
|
270
|
-
"finalValue": []
|
|
271
|
-
},
|
|
272
|
-
"postBureauRiskCat": {
|
|
273
|
-
"comment": "Calls the tblPostBureauRiskCat decision table.",
|
|
274
|
-
"formula": "tblPostBureauRiskCat(,, custExist, appRiskScore, creditScore[1])"
|
|
275
|
-
},
|
|
276
|
-
"postBureauAfford": {
|
|
277
|
-
"comment": "Multiples disposable income by the outcome of a call to the tblCreditContFactor decision table.",
|
|
278
|
-
"formula": "IF(disposIncome * tblCreditContFactor(,, postBureauRiskCat) > monthInstall, true, false)"
|
|
279
|
-
},
|
|
280
|
-
"routing": {
|
|
281
|
-
"comment": "Calls the tblRouting decsion table to determine how the application should be accepted or not. Note that the final value for this formula will be included in the results due to the exitence of the finalValue property.",
|
|
282
|
-
"formula": "tblRouting(,, postBureauRiskCat, postBureauAfford, bankrupt[1], creditScore[1])",
|
|
283
|
-
"finalValue": []
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"modelName": "DTLoanStrategyExamplewDatasource",
|
|
3
|
+
"modelDescription": "RASON Decision Table Example: Loan Strategy model with imported data sources: The difference between this example and the original DTLoanStrategyModel, is that this example imports the customer data and loan data from an outside data source, in this example two CVS files: customers.txt and loans.txt.",
|
|
4
|
+
"modelType": "calculation",
|
|
5
|
+
"datasources": {
|
|
6
|
+
"comment": "This section is used to import data from outside sources. To download these files, click Download RASON Example Data on the Editor tab ribbon. All data files related to all RASON examples will be downloaded. To solve this model, click Choose Files from the Properties pane on the right, browse to the location of the downloaded files and select customer.txt and loans.txt, then click Open. In the previous example, DTLoanStrategyModel, all data used in the model was simply passed as constants in the file. This example, however, demonstrates how to import this same data from an external data file using a parametric selection criteria. A Parametric Selection allows a single record to be selected from an external datasource file as an input. Parametric selection in data-sources is universal, it is critical to decision tables, which expect a single record for their inputs. All supported data types may be used with this feature.",
|
|
7
|
+
"cust_data": {
|
|
8
|
+
"comment": "The datasource, cust_data, binds to the customers.txt csv file. This file contains five input parameters, age, maritalStatus, employmentStatus, creditScore and bankrupt. Inside of the cust_data datasource, we see the connection argument passing the CSV file, 'connection': 'customers.txt' (screenshot above). The selection argument selects the 'CustID' column , from the customers.txt file, and replaces 'custID = ?' with 'custID = cuID'; the parameters argument binds 'cuID' to 'c1'. In addition, indexCols is set to 'cust ID' and valueCols are set to 'age', 'maritalStatus', 'employmentStatus', 'creditScore' and 'bankrupt'. This means that cust ID is the index column and 'age', 'maritalStatus', 'employmentStatus', 'creditScore' and 'bankrupt' are the value columns.",
|
|
9
|
+
"type": "csv",
|
|
10
|
+
"connection": "customers_dt.txt",
|
|
11
|
+
"selection": "custID = ?",
|
|
12
|
+
"parameters": {
|
|
13
|
+
"cuID": {
|
|
14
|
+
"binding": "get",
|
|
15
|
+
"value": "c1"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"indexCols": [ "custID" ],
|
|
19
|
+
"valueCols": [ "age", "maritalStatus", "employmentStatus", "creditScore", "bankrupt" ],
|
|
20
|
+
"direction": "import"
|
|
21
|
+
},
|
|
22
|
+
"loan_data": {
|
|
23
|
+
"comment": "Inside of the loan_data datasource, we see the connection argument passing the CSV file, connection: 'loans.txt' (screenshot above). The selection argument selects the 'loanID' column , from the loans.txt file, and replaces 'loanID = ?' with 'loanID = loID'; the parameters argument binds 'loID' to 'l1'. In addition, indexCols is set to 'loanID' and valueCols are set to 'type', 'rate' and 'term'. This means that loanID is the index column and 'type', 'rate' and 'term' are the value columns.",
|
|
24
|
+
"type": "csv",
|
|
25
|
+
"connection": "loans.txt",
|
|
26
|
+
"selection": "loanID = ?",
|
|
27
|
+
"parameters": {
|
|
28
|
+
"loID": {
|
|
29
|
+
"binding": "get",
|
|
30
|
+
"value": "l1"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"indexCols": [ "loanID" ],
|
|
34
|
+
"valueCols": [ "type", "rate", "term" ],
|
|
35
|
+
"direction": "import"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"data": {
|
|
39
|
+
"comment": "Use the data section to organize constant data parameters in the RASON model.",
|
|
40
|
+
"custExist": {
|
|
41
|
+
"comment": "True if the applicant is an existing customer; false if not.",
|
|
42
|
+
"value": false
|
|
43
|
+
},
|
|
44
|
+
"custAge": {
|
|
45
|
+
"comment": "Binds the age column from cust_data datasource to data parameter, custAge.",
|
|
46
|
+
"value": 40,
|
|
47
|
+
"binding": "cust_data",
|
|
48
|
+
"valueCol": "age"
|
|
49
|
+
},
|
|
50
|
+
"maritalStatus": {
|
|
51
|
+
"comment": "Binds the maritalStatus column from cust_data datasource to data parameter, maritalStatus.",
|
|
52
|
+
"value": "s",
|
|
53
|
+
"binding": "cust_data",
|
|
54
|
+
"valueCol": "maritalStatus"
|
|
55
|
+
},
|
|
56
|
+
"employmentStatus": {
|
|
57
|
+
"comment": "Binds the employmentStatus column from cust_data datasource to data parameter,employmentStatus ",
|
|
58
|
+
"value": "selfEmployed",
|
|
59
|
+
"binding": "cust_data",
|
|
60
|
+
"valueCol": "employmentStatus"
|
|
61
|
+
},
|
|
62
|
+
"creditScore": {
|
|
63
|
+
"comment": "Binds the creditScore column from cust_data datasource to data parameter, creditScore.",
|
|
64
|
+
"value": 610,
|
|
65
|
+
"binding": "cust_data",
|
|
66
|
+
"valueCol": "creditScore"
|
|
67
|
+
},
|
|
68
|
+
"bankrupt": {
|
|
69
|
+
"comment": "Binds the creditScore column from cust_data datasource to data parameter, creditScore.",
|
|
70
|
+
"value": false,
|
|
71
|
+
"binding": "cust_data",
|
|
72
|
+
"valueCol": "bankrupt"
|
|
73
|
+
},
|
|
74
|
+
"monthIncome": {
|
|
75
|
+
"comment": "Applicant's monthly income. Note the 'binding':'get' property. This property allows access to this parameter outside of the RASON model environment.",
|
|
76
|
+
"value": 2500,
|
|
77
|
+
"binding": "get"
|
|
78
|
+
},
|
|
79
|
+
"monthExpenses": {
|
|
80
|
+
"comment": "Applicant's monthly expenses. Note the 'binding':'get' property. This property allows access to this parameter outside of the RASON model environment.",
|
|
81
|
+
"value": 1000,
|
|
82
|
+
"binding": "get"
|
|
83
|
+
},
|
|
84
|
+
"loanType": {
|
|
85
|
+
"comment": "Binds the type column from loan_data datasource to data parameter, loanType.",
|
|
86
|
+
"value": "standard",
|
|
87
|
+
"binding": "loan_data",
|
|
88
|
+
"valueCol": "type"
|
|
89
|
+
},
|
|
90
|
+
"loanRate": {
|
|
91
|
+
"comment": "Binds the rate column from loan_data datasource to data parameter, loanRate.",
|
|
92
|
+
"value": 5.0,
|
|
93
|
+
"binding": "loan_data",
|
|
94
|
+
"valueCol": "rate"
|
|
95
|
+
},
|
|
96
|
+
"loanTerm": {
|
|
97
|
+
"comment": "Binds the term column from loan_data datasource to data parameter, loanTerm.",
|
|
98
|
+
"value": 30,
|
|
99
|
+
"binding": "loan_data",
|
|
100
|
+
"valueCol": "term"
|
|
101
|
+
},
|
|
102
|
+
"loanAmnt": {
|
|
103
|
+
"comment": "The prospective loan amount. Note the 'binding':'get' property. This property allows access to this parameter outside of the RASON model environment.",
|
|
104
|
+
"value": 100000.0,
|
|
105
|
+
"binding": "get"
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
"decisionTables": {
|
|
109
|
+
"comment": "There are 8 decision tables in the model.",
|
|
110
|
+
"tblAppRiskScore": {
|
|
111
|
+
"comment": "This decision table accepts 3 inputs, customer age, marital status and employment status, and returns a partial risk score. The collection of results will be added together to create the partial score. Note that the inputValues property limits the age to be 18 to 120, inclusive, the marital status to be s for single or m for married, the employment status as unemployed, employed, selfEmployed or student. A 40 yo single self employed person would be assigned a partialScore = 43 (rule 4) + 25 (rule 6) + 45 (rule 10) = 113.",
|
|
112
|
+
"inputs": [ "custAge", "maritalStatus", "employmentStatus" ],
|
|
113
|
+
"outputs": [ "partialScore" ],
|
|
114
|
+
"inputValues": [
|
|
115
|
+
[ "[18..120]", "s", "unemployed" ],
|
|
116
|
+
[ null, "m", "employed" ],
|
|
117
|
+
[ null, null, "selfEmployed" ],
|
|
118
|
+
[ null, null, "student" ]
|
|
119
|
+
],
|
|
120
|
+
"rules": [
|
|
121
|
+
[ "[18..21]", "-", "-", 32 ],
|
|
122
|
+
[ "(21..25]", "-", "-", 35 ],
|
|
123
|
+
[ "(25..35]", "-", "-", 40 ],
|
|
124
|
+
[ "(35..49]", "-", "-", 43 ],
|
|
125
|
+
[ ">49", "-", "-", 48 ],
|
|
126
|
+
[ "-", "s", "-", 25 ],
|
|
127
|
+
[ "-", "m", "-", 45 ],
|
|
128
|
+
[ "-", "-", "unemployed", 15 ],
|
|
129
|
+
[ "-", "-", "student", 18 ],
|
|
130
|
+
[ "-", "-", "employed", 45 ],
|
|
131
|
+
[ "-", "-", "selfEmployed", 36 ]
|
|
132
|
+
],
|
|
133
|
+
"hitPolicy": "collect+"
|
|
134
|
+
},
|
|
135
|
+
"tblBureauRiskCat": {
|
|
136
|
+
"comment": "This decision table accepts 2 inputs, custExist (true if customer already has at least 1 more loans) and appRiskScore (partial score from tblAppRiskScore). With a hit policy of 'unique', only 1 rule, with a unique result, may be returned. ",
|
|
137
|
+
"inputs": [ "custExist", "appRiskScore" ],
|
|
138
|
+
"outputs": [ "bureauRiskCat" ],
|
|
139
|
+
"rules": [
|
|
140
|
+
[ false, "<100", "high" ],
|
|
141
|
+
[ false, "[100..120)", "medium" ],
|
|
142
|
+
[ false, "[120..130]", "low" ],
|
|
143
|
+
[ false, ">130", "veryLow" ],
|
|
144
|
+
[ true, "<80", "decline" ],
|
|
145
|
+
[ true, "[80..90)", "high" ],
|
|
146
|
+
[ true, "[90..110]", "medium" ],
|
|
147
|
+
[ true, ">110", "low" ]
|
|
148
|
+
],
|
|
149
|
+
"hitPolicy": "unique"
|
|
150
|
+
},
|
|
151
|
+
"tblBureauCallType": {
|
|
152
|
+
"comment": "This decision table accepts 1 input, bureauRiskCat, which is the output of the tblBureauRiskCat decision table.",
|
|
153
|
+
"inputs": [ "bureauRiskCat" ],
|
|
154
|
+
"outputs": [ "bureauCallType" ],
|
|
155
|
+
"rules": [
|
|
156
|
+
[ "high,medium", "full" ],
|
|
157
|
+
[ "low", "mini" ],
|
|
158
|
+
[ "veryLow,decline", "none" ]
|
|
159
|
+
],
|
|
160
|
+
"hitPolicy": "unique"
|
|
161
|
+
},
|
|
162
|
+
"tblEligibility": {
|
|
163
|
+
"comment": "This decision table accepts 3 inputs, bureauRiskCat (which is the output of the tblAppriskScore decision table), bureauAfford (a statistic calculated in the formula's section) and the customer's age. The customer's eligibility will be returned in the result. Note that there are only two outputs: 'ineligible' or 'eligible' as given in the outputValues property.",
|
|
164
|
+
"inputs": [ "bureauRiskCat", "bureauAfford", "custAge" ],
|
|
165
|
+
"outputs": [ "eligibility" ],
|
|
166
|
+
"outputValues": [ "ineligible", "eligible" ],
|
|
167
|
+
"rules": [
|
|
168
|
+
[ "decline", "-", "-", "ineligible" ],
|
|
169
|
+
[ "-", false, "-", "ineligible" ],
|
|
170
|
+
[ "-", "-", "<18", "ineligible" ],
|
|
171
|
+
[ "-", "-", "-", "eligible" ]
|
|
172
|
+
],
|
|
173
|
+
"hitPolicy": "priority"
|
|
174
|
+
},
|
|
175
|
+
"tblCreditContFactor": {
|
|
176
|
+
"comment": "This decision table accepts 1 input, bureauRiskCat, and returns the creditContFactor.",
|
|
177
|
+
"inputs": [ "bureauRiskCat" ],
|
|
178
|
+
"outputs": [ "creditContFactor" ],
|
|
179
|
+
"rules": [
|
|
180
|
+
[ "high,decline", 0.6 ],
|
|
181
|
+
[ "medium", 0.7 ],
|
|
182
|
+
[ "low,veryLow", 0.8 ]
|
|
183
|
+
],
|
|
184
|
+
"hitPolicy": "unique"
|
|
185
|
+
},
|
|
186
|
+
"tblStrategy": {
|
|
187
|
+
"comment": "This decision table accepts 2 inputs, eligibility and bureauCallType. The strategy will be returned in the result.",
|
|
188
|
+
"inputs": [ "eligibility", "bureauCallType" ],
|
|
189
|
+
"outputs": [ "strategy" ],
|
|
190
|
+
"rules": [
|
|
191
|
+
[ "ineligible", "-", "decline" ],
|
|
192
|
+
[ "eligible", "full,mini", "bureau" ],
|
|
193
|
+
[ "eligible", "none", "through" ]
|
|
194
|
+
],
|
|
195
|
+
"hitPolicy": "unique"
|
|
196
|
+
},
|
|
197
|
+
"tblPostBureauRiskCat": {
|
|
198
|
+
"comment": "This decision table accepts 3 inputs, custExist, appRiskScore (which is the output of the tblBureauRiskCat decision table) and creditScore. The customer's credit factor will be returned in the result.",
|
|
199
|
+
"inputs": [ "custExist", "appRiskScore", "creditScore" ],
|
|
200
|
+
"outputs": [ "postBureauRiskCat" ],
|
|
201
|
+
"rules": [
|
|
202
|
+
[ false, "<120", "<590", "high" ],
|
|
203
|
+
[ false, "<120", "[590..610]", "medium" ],
|
|
204
|
+
[ false, "<120", ">610", "low" ],
|
|
205
|
+
[ false, "[120..130]", "<600", "high" ],
|
|
206
|
+
[ false, "[120..130]", "[600..625]", "medium" ],
|
|
207
|
+
[ false, "[120..130]", ">625", "low" ],
|
|
208
|
+
[ false, ">130", "-", "veryLow" ],
|
|
209
|
+
[ true, "<=100", "<580", "high" ],
|
|
210
|
+
[ true, "<=100", "[580..600]", "medium" ],
|
|
211
|
+
[ true, "<=100", ">600", "low" ],
|
|
212
|
+
[ true, ">100", "<590", "high" ],
|
|
213
|
+
[ true, ">100", "[590..615]", "medium" ],
|
|
214
|
+
[ true, ">100", ">615", "low" ]
|
|
215
|
+
],
|
|
216
|
+
"hitPolicy": "unique"
|
|
217
|
+
},
|
|
218
|
+
"tblRouting": {
|
|
219
|
+
"comment": "This decision table accepts 4 inputs: postBureauRiskCat, postBureauAfford, bankrupt and creditScore. The application routing number will be returned in the result.",
|
|
220
|
+
"inputs": [ "postBureauRiskCat", "postBureauAfford", "bankrupt", "creditScore" ],
|
|
221
|
+
"outputs": [ "routing" ],
|
|
222
|
+
"inputValues": [
|
|
223
|
+
[ null, null, true, "[0..999]" ],
|
|
224
|
+
[ null, null, false, null ]
|
|
225
|
+
],
|
|
226
|
+
"outputValues": [ "decline", "refer", "accept" ],
|
|
227
|
+
"rules": [
|
|
228
|
+
[ "-", false, "-", "-", "decline" ],
|
|
229
|
+
[ "-", "-", true, "-", "decline" ],
|
|
230
|
+
[ "high", "-", "-", "-", "refer" ],
|
|
231
|
+
[ "-", "-", "-", "<580", "refer" ],
|
|
232
|
+
[ "-", "-", "-", "-", "accept" ]
|
|
233
|
+
],
|
|
234
|
+
"hitPolicy": "priority"
|
|
235
|
+
}
|
|
236
|
+
},
|
|
237
|
+
"formulas": {
|
|
238
|
+
"comment": "Use the formulas section to calculate the decision tables.",
|
|
239
|
+
"monthFee": {
|
|
240
|
+
"comment": "Determines the monthly fees for each loanType, standard or special.",
|
|
241
|
+
"formula": "IF(loanType[1] = 'standard', 20, IF(loanType[1] = 'special', 25, 0))"
|
|
242
|
+
},
|
|
243
|
+
"monthRepay": {
|
|
244
|
+
"comment": "Determines the portion of the installment payment attributable to principal replayment.",
|
|
245
|
+
"formula": "-PMT(loanRate[1]%/12, loanTerm[1]*12, loanAmnt)"
|
|
246
|
+
},
|
|
247
|
+
"monthInstall": {
|
|
248
|
+
"comment": "Calculates the total installment payment.",
|
|
249
|
+
"formula": "monthRepay + monthFee"
|
|
250
|
+
},
|
|
251
|
+
"disposIncome": {
|
|
252
|
+
"comment": "Calculates the applicant's disposeable income.",
|
|
253
|
+
"formula": "monthIncome - (monthRepay + monthExpenses)"
|
|
254
|
+
},
|
|
255
|
+
"appRiskScore": {
|
|
256
|
+
"comment": "Calls the tblAppRiskScore decision table.",
|
|
257
|
+
"formula": "tblAppRiskScore(,, custAge[1], maritalStatus[1], employmentStatus[1])"
|
|
258
|
+
},
|
|
259
|
+
"bureauRiskCat": {
|
|
260
|
+
"comment": "Calls the tblBureauRiskCat decision table.",
|
|
261
|
+
"formula": "tblBureauRiskCat(,, custExist, appRiskScore)"
|
|
262
|
+
},
|
|
263
|
+
"bureauAfford": {
|
|
264
|
+
"comment": "Calculates if the applicant can afford the loan repayment by calling the tblCreditContFactor decision table.",
|
|
265
|
+
"formula": "IF(disposIncome * tblCreditContFactor(,, bureauRiskCat) > monthInstall, true, false)"
|
|
266
|
+
},
|
|
267
|
+
"strategy": {
|
|
268
|
+
"comment": "Calls the tblsStrategy decision table. Note that the final value for this formula will be included in the results due to the exitence of the finalValue property.",
|
|
269
|
+
"formula": "tblStrategy(,, tblEligibility(,, bureauRiskCat, bureauAfford, custAge[1]), tblBureauCallType(,, bureauRiskCat))",
|
|
270
|
+
"finalValue": []
|
|
271
|
+
},
|
|
272
|
+
"postBureauRiskCat": {
|
|
273
|
+
"comment": "Calls the tblPostBureauRiskCat decision table.",
|
|
274
|
+
"formula": "tblPostBureauRiskCat(,, custExist, appRiskScore, creditScore[1])"
|
|
275
|
+
},
|
|
276
|
+
"postBureauAfford": {
|
|
277
|
+
"comment": "Multiples disposable income by the outcome of a call to the tblCreditContFactor decision table.",
|
|
278
|
+
"formula": "IF(disposIncome * tblCreditContFactor(,, postBureauRiskCat) > monthInstall, true, false)"
|
|
279
|
+
},
|
|
280
|
+
"routing": {
|
|
281
|
+
"comment": "Calls the tblRouting decsion table to determine how the application should be accepted or not. Note that the final value for this formula will be included in the results due to the exitence of the finalValue property.",
|
|
282
|
+
"formula": "tblRouting(,, postBureauRiskCat, postBureauAfford, bankrupt[1], creditScore[1])",
|
|
283
|
+
"finalValue": []
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}
|