@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.
Files changed (195) hide show
  1. package/LICENSE +35 -35
  2. package/README.md +1 -1
  3. package/examples/EXAMPLES_REFERENCE.md +128 -128
  4. package/examples/calculation/DMNExamples/DMN Box Fun with typeDef result.json +53 -53
  5. package/examples/calculation/DMNExamples/DMN Context example.json +69 -69
  6. package/examples/calculation/DMNExamples/DMN DT with typeDef result.json +43 -43
  7. package/examples/calculation/DMNExamples/FEEL Date Time example.json +28 -28
  8. package/examples/calculation/DMNExamples/FEEL For iteration example.json +66 -66
  9. package/examples/calculation/DMNExamples/FEEL For with two indices.json +15 -15
  10. package/examples/calculation/DMNExamples/FEEL For with typeDef result.json +88 -88
  11. package/examples/calculation/DMNExamples/FEEL If Then Else example.json +25 -25
  12. package/examples/calculation/DMNExamples/FEEL List example.json +37 -37
  13. package/examples/calculation/DMNExamples/FEEL List operator.json +17 -17
  14. package/examples/calculation/DMNExamples/FEEL List with typeDef collection.json +36 -36
  15. package/examples/calculation/DMNExamples/FEEL Some or Every example.json +65 -65
  16. package/examples/calculation/DecisionTables/DT Datasource example.json +52 -52
  17. package/examples/calculation/DecisionTables/DT Date and Time examples.json +91 -91
  18. package/examples/calculation/DecisionTables/DT Expression example.json +32 -32
  19. package/examples/calculation/DecisionTables/DT Hit Policy examples.json +136 -136
  20. package/examples/calculation/DecisionTables/DT Loan Recommend model.json +81 -81
  21. package/examples/calculation/DecisionTables/DT Loan Strategy Model and Predictive CSV-XML.json +218 -218
  22. package/examples/calculation/DecisionTables/DT Loan Strategy model and Datasource.json +286 -286
  23. package/examples/calculation/DecisionTables/DT Loan Strategy model and Predictive.json +203 -203
  24. package/examples/calculation/DecisionTables/DT Loan Strategy model by scratch.json +214 -214
  25. package/examples/calculation/DecisionTables/DT Output Order example.json +39 -39
  26. package/examples/calculation/DecisionTables/DT Unique example.json +38 -38
  27. package/examples/calculation/TypeDefinitions/TypeDefCF.json +64 -64
  28. package/examples/calculation/TypeDefinitions/TypeDefDT.json +57 -57
  29. package/examples/datamining/AffinityAnalysis/AssociationRules.json +51 -51
  30. package/examples/datamining/Classification/DecisionTree.json +90 -90
  31. package/examples/datamining/Classification/DiscriminantAnalysis.json +81 -81
  32. package/examples/datamining/Classification/Ensembles/Bagging.json +66 -66
  33. package/examples/datamining/Classification/Ensembles/Boosting.json +67 -67
  34. package/examples/datamining/Classification/Ensembles/RandomTrees.json +91 -91
  35. package/examples/datamining/Classification/FindBestModel.json +86 -86
  36. package/examples/datamining/Classification/LogisticRegression.json +82 -82
  37. package/examples/datamining/Classification/NaiveBayes.json +78 -78
  38. package/examples/datamining/Classification/NearestNeighbors.json +84 -84
  39. package/examples/datamining/Classification/NeuralNetwork.json +92 -92
  40. package/examples/datamining/Clustering/Hierarchical.json +54 -54
  41. package/examples/datamining/Clustering/KMeans.json +71 -71
  42. package/examples/datamining/DataSources/DelimitedFile.json +49 -49
  43. package/examples/datamining/DataSources/JSONFile.json +49 -49
  44. package/examples/datamining/DataSources/MSAccessDatabase.json +49 -49
  45. package/examples/datamining/DataSources/MSExcelTable.json +50 -50
  46. package/examples/datamining/DataSources/MSSQLDatabase.json +49 -49
  47. package/examples/datamining/DataSources/ODATATable.json +49 -49
  48. package/examples/datamining/DataSources/ODBCDatabase.json +49 -49
  49. package/examples/datamining/FeatureSelection/LinearWrapping.json +53 -53
  50. package/examples/datamining/FeatureSelection/LogisticWrapping.json +56 -56
  51. package/examples/datamining/FeatureSelection/Univariate.json +78 -78
  52. package/examples/datamining/Regression/DecisionTree.json +82 -82
  53. package/examples/datamining/Regression/Ensembles/Bagging.json +62 -62
  54. package/examples/datamining/Regression/Ensembles/Boosting.json +62 -62
  55. package/examples/datamining/Regression/Ensembles/RandomTrees.json +78 -78
  56. package/examples/datamining/Regression/FindBestModel.json +86 -86
  57. package/examples/datamining/Regression/LinearRegression.json +124 -124
  58. package/examples/datamining/Regression/NearestNeighbors.json +77 -77
  59. package/examples/datamining/Regression/NeuralNetwork.json +82 -82
  60. package/examples/datamining/Scoring/JSONClassifier.json +62 -62
  61. package/examples/datamining/Scoring/JSONClassifierNN.json +62 -62
  62. package/examples/datamining/Scoring/JSONClusterizer.json +37 -37
  63. package/examples/datamining/Scoring/JSONForecaster.json +49 -49
  64. package/examples/datamining/Scoring/JSONLinearRegression.json +56 -56
  65. package/examples/datamining/Scoring/JSONPCA.json +41 -41
  66. package/examples/datamining/Scoring/JSONRegressor.json +56 -56
  67. package/examples/datamining/Scoring/JSONTransformer.json +38 -38
  68. package/examples/datamining/Scoring/PMMLClassifier.json +42 -42
  69. package/examples/datamining/Scoring/PMMLForecaster.json +43 -43
  70. package/examples/datamining/Scoring/PMMLRegressor.json +38 -38
  71. package/examples/datamining/Scoring/PMMLTransformer.json +38 -38
  72. package/examples/datamining/Simulation/LinearRegressionSimulation.json +117 -117
  73. package/examples/datamining/Simulation/SyntheticDataGeneration.json +108 -108
  74. package/examples/datamining/Simulation/pmml-risk-scoring.json +62 -62
  75. package/examples/datamining/Summarizer/Summarization.json +54 -54
  76. package/examples/datamining/TextMining/LatentSemanticAnalysis.json +51 -51
  77. package/examples/datamining/TextMining/TfIdf-FileData.json +65 -65
  78. package/examples/datamining/TextMining/TfIdf-InlineData.json +55 -55
  79. package/examples/datamining/TimeSeries/AddHoltWinters.json +79 -79
  80. package/examples/datamining/TimeSeries/Arima.json +74 -74
  81. package/examples/datamining/TimeSeries/DoubleExponential.json +65 -65
  82. package/examples/datamining/TimeSeries/Exponential.json +64 -64
  83. package/examples/datamining/TimeSeries/LagAnalysis.json +48 -48
  84. package/examples/datamining/TimeSeries/MovingAverage.json +65 -65
  85. package/examples/datamining/TimeSeries/MulHoltWinters.json +65 -65
  86. package/examples/datamining/TimeSeries/NoTrendHoltWinters.json +65 -65
  87. package/examples/datamining/Transformation/Binning.json +69 -69
  88. package/examples/datamining/Transformation/CanonicalVariateAnalysis.json +47 -47
  89. package/examples/datamining/Transformation/CategoryReduction.json +51 -51
  90. package/examples/datamining/Transformation/Factorization.json +50 -50
  91. package/examples/datamining/Transformation/MissingDataHandling.json +83 -83
  92. package/examples/datamining/Transformation/OneHotEncoding-DataInline.json +54 -54
  93. package/examples/datamining/Transformation/OneHotEncoding-DatainFile.json +48 -48
  94. package/examples/datamining/Transformation/PartitionTimeSeries.json +48 -48
  95. package/examples/datamining/Transformation/Partitioning-DF.json +72 -72
  96. package/examples/datamining/Transformation/Partitioning.json +46 -46
  97. package/examples/datamining/Transformation/PartitioningWithOversampling-DF.json +65 -65
  98. package/examples/datamining/Transformation/PartitioningWithOversampling.json +44 -44
  99. package/examples/datamining/Transformation/PrincipalComponentsAnalysis.json +52 -52
  100. package/examples/datamining/Transformation/Rescaling.json +67 -67
  101. package/examples/datamining/Transformation/Sampling.json +43 -43
  102. package/examples/datamining/Transformation/StratifiedSampling.json +46 -46
  103. package/examples/flow/SQLServerTransform.json +260 -260
  104. package/examples/flow/dm-calc-pipeline.json +277 -277
  105. package/examples/flow/dm-pipeline-simulation.json +113 -113
  106. package/examples/flow/opt-sim-pipeline.json +159 -159
  107. package/examples/flow/sim-dm-pipeline.json +106 -106
  108. package/examples/flow/sim-sim-pipeline.json +136 -136
  109. package/examples/index.json +4678 -4678
  110. package/examples/{Optimization → optimization}/Conic/AirlineHubConic.json +111 -111
  111. package/examples/{Optimization → optimization}/Conic/AirlineHubConic2.json +108 -108
  112. package/examples/{Optimization → optimization}/Conic/AirlineHubConic3.json +111 -111
  113. package/examples/{Optimization → optimization}/Conic/AirlineHubConic4.json +99 -99
  114. package/examples/{Optimization → optimization}/Conic/AirlineHubConic5.json +101 -101
  115. package/examples/{Optimization → optimization}/DataBinding/ProductMixCsv.json +81 -81
  116. package/examples/{Optimization → optimization}/DataBinding/ProductMixCsv4.json +96 -96
  117. package/examples/{Optimization → optimization}/DataBinding/ProductMixExcel.json +73 -73
  118. package/examples/{Optimization → optimization}/DataBinding/ProductMixExcel1.json +86 -86
  119. package/examples/{Optimization → optimization}/DataBinding/ProductMixExcel11.json +108 -108
  120. package/examples/{Optimization → optimization}/DataBinding/ProductMixExcel2.json +77 -77
  121. package/examples/{Optimization → optimization}/DataBinding/ProductMixTab.json +89 -89
  122. package/examples/{Optimization → optimization}/DataBinding/ProductMixTab1.json +73 -73
  123. package/examples/{Optimization → optimization}/DataBinding/ProductMixTab2.json +77 -77
  124. package/examples/{Optimization → optimization}/Linear/Inventory.json +199 -199
  125. package/examples/{Optimization → optimization}/Linear/Matop.json +119 -119
  126. package/examples/{Optimization → optimization}/Linear/ProductMix.json +97 -97
  127. package/examples/{Optimization → optimization}/Linear/ProductMix2.json +72 -72
  128. package/examples/{Optimization → optimization}/Linear/ProductMix3.json +49 -49
  129. package/examples/{Optimization → optimization}/Linear/ProductMix4.json +56 -56
  130. package/examples/{Optimization → optimization}/Linear/ProductMixCsv1.json +106 -106
  131. package/examples/{Optimization → optimization}/Linear/ProductMixCsv2.json +106 -106
  132. package/examples/{Optimization → optimization}/Linear/ProductMixSQL11.json +82 -82
  133. package/examples/{Optimization → optimization}/Linear/Rowop.json +126 -126
  134. package/examples/{Optimization → optimization}/NonLinear/AirlineHub.json +63 -63
  135. package/examples/{Optimization → optimization}/NonLinear/AirlineHub2.json +47 -47
  136. package/examples/{Optimization → optimization}/NonLinear/AirlineHub3.json +47 -47
  137. package/examples/{Optimization → optimization}/NonSmooth/Inventory2.json +159 -159
  138. package/examples/{Optimization → optimization}/Quadratic/PortfolioOpt.json +55 -55
  139. package/examples/{Optimization → optimization}/Quadratic/PortfolioOpt2.json +65 -65
  140. package/examples/{Optimization → optimization}/WithUncertainty/GasCompanyChance.json +78 -78
  141. package/examples/{Optimization → optimization}/WithUncertainty/GasCompanyRecourse.json +78 -78
  142. package/examples/{Optimization → optimization}/WithUncertainty/ProjectSelect.json +77 -77
  143. package/examples/{Optimization → optimization}/WithUncertainty/ProjectSelect2.json +81 -81
  144. package/examples/{Optimization → optimization}/WithUncertainty/ProjectSelect3.json +84 -84
  145. package/examples/{Optimization → optimization}/WithUncertainty/ProjectSelect4.json +74 -74
  146. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/DataFiltering/ListwithFilter.json +52 -52
  147. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/ProductMix5.json +57 -57
  148. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/compoundWhileStatement.json +35 -35
  149. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/ifThenElseStatement.json +33 -33
  150. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/nestedLoop.json +25 -25
  151. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/ParallelArray.json +47 -47
  152. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/indexedArray.json +69 -69
  153. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/nonParallelArray.json +49 -49
  154. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/sumAggregateExample.json +337 -337
  155. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/tsp.json +61 -61
  156. package/examples/rason-features/BoxIterators/Box_Fun_Loop_Iter_Sim_RASON.json +190 -190
  157. package/examples/rason-features/BoxIterators/Box_Fun_Loop_Sim_RASON.json +75 -75
  158. package/examples/rason-features/BoxIterators/Box_Fun_Sim_RASON.json +108 -108
  159. package/examples/rason-features/BoxIterators/Box_Iter_SIM_RASON.json +68 -68
  160. package/examples/rason-features/BoxIterators/Box_Iterator_Calc_Loop.json +183 -183
  161. package/examples/rason-features/BoxIterators/Box_Iterator_with_typeDef_partial.json +79 -79
  162. package/examples/rason-features/BoxLambdaExamples/BoxFunOptimize.json +154 -154
  163. package/examples/rason-features/BoxLambdaExamples/BoxFunSimulate.json +118 -118
  164. package/examples/rason-features/BoxLambdaExamples/LambdaFunOptimize.json +142 -142
  165. package/examples/rason-features/BoxLambdaExamples/LambdaFunSimulate.json +81 -81
  166. package/examples/rason-features/ReferenceGuide/RGFirehouseLocation.json +69 -69
  167. package/examples/rason-features/ReferenceGuide/RGFirehouseLocationConic.json +113 -113
  168. package/examples/rason-features/ReferenceGuide/RGProductMixCsv1.json +107 -107
  169. package/examples/rason-features/ReferenceGuide/RGProductMixExcel11.json +117 -117
  170. package/examples/rason-features/ReferenceGuide/RGProductMixSQL11.json +108 -108
  171. package/examples/rason-features/UserGuide/UGAirlineHubCSV.json +67 -67
  172. package/examples/rason-features/UserGuide/UGForecast.json +50 -50
  173. package/examples/rason-features/UserGuide/UGProductMix1.json +48 -48
  174. package/examples/rason-features/UserGuide/UGProductMix2.json +48 -48
  175. package/examples/rason-features/UserGuide/UGProductMixTab1.json +67 -67
  176. package/examples/rason-features/UserGuide/UGProductMixTab2.json +76 -76
  177. package/examples/rason-features/UserGuide/UGProductMixTab3.json +66 -66
  178. package/examples/rason-features/UserGuide/UGProductMixTab4.json +70 -70
  179. package/examples/rason-features/UserGuide/UGProductMixTab5.json +67 -67
  180. package/examples/rason-features/UserGuide/UGProjectSelect0.json +91 -91
  181. package/examples/rason-features/UserGuide/UGProjectSelect1.json +74 -74
  182. package/examples/rason-features/UserGuide/UGProjectSelect2.json +74 -74
  183. package/examples/rason-features/UserGuide/UGYieldManagement1.json +61 -61
  184. package/examples/rason-features/UserGuide/UGYieldManagement2.json +61 -61
  185. package/examples/rason-features/UserGuide/UGYieldManagement3.json +63 -63
  186. package/examples/{Simulation → simulation}/CandyStoreSalesUsingSIP.json +147 -147
  187. package/examples/{Simulation → simulation}/CollegeFundGrowth1.json +423 -423
  188. package/examples/{Simulation → simulation}/CollegeFundGrowth1SIPModel.json +27 -27
  189. package/examples/{Simulation → simulation}/CollegeFundGrowth2.json +415 -415
  190. package/examples/{Simulation → simulation}/CollegeFundGrowthSIP.json +401 -401
  191. package/examples/{Simulation → simulation}/GBMSimulationModel.json +236 -236
  192. package/examples/{Simulation → simulation}/YieldManagement(Sim).json +69 -69
  193. package/examples/{Simulation → simulation}/YieldManagement2(Sim).json +72 -72
  194. package/out/index.cjs +38 -38
  195. package/package.json +2 -2
@@ -1,82 +1,82 @@
1
- {
2
- "modelName": "DTLoanRecommendExample",
3
- "modelDescription": "RASON Decision Table Example: The decision table tblLoanTypes, returns a loan that meets the criteria passed in the loanTypes formula (within the formula section). A data table, bankRates, has been entered into the data section. This table lists various banks offering the types of loans listed in the rules section of the tblLoanTypes decision table. For example, AimLoan bank offers a conventional ARM 3/1 loan with a term of 360 months, APR of 3.103, requiring a 20% down payment. The loanTypes formula returns the loans meeting the criteria passed. The formula 'recom' (in the formula section), joins the results for 'loanTypes' with the data table, bankRates. The result for loanTypes is a table containing two loans an ARM 3/1 loan and a Fixed 40 loan. The PsiJoin function matches these two loans with the loans from the bankRates table to return several ARM 3/1 loans from various banks. (Since no bank offers the Fixed 40 loan, no results are returned for this loan.) For a complete walkthrough of this example, see the Decision Table chapter within Analytic Solver User Guide.",
4
- "modelType": "calculation",
5
- "decisionTables": {
6
- "comment": "This decision table accepts 4 input parameters: reqObj, reqType, conforming and reqDown. In return, the table returns 3 outputs: loanType, conftype and downPct. The property 'inputTypes' and 'outputTypes' properties specify the types for each input and output parameter. There is only 1 option for the first input, reqObj, 'payment'. If anything other than payment is entered for the first input parameter, an error will be returned. The 2nd input type, reqType, can be anything. The 3rd input type, conforming, must be either 0 or 1, a boolean value. The 4th input parameter reqDown, must be a number, but there are no limitations on the value. The 1st output value can be anything. The 2nd output value must be either 'conventional' or 'jumbo'. The 3rd output value must be a number but no limitation has been placed on the value. The rules section contains a list of loans available in the financial sector. The Hit Policy is Collect + which means that all results from all triggered rules will be returned.",
7
- "tblLoanTypes": {
8
- "inputs": [ "reqObj", "reqType", "conforming", "reqDown" ],
9
- "outputs": [ "loanType", "confType", "downPct" ],
10
- "inputTypes": [ "", "", "boolean", "number" ],
11
- "outputTypes": [ "", "", "number" ],
12
- "inputValues": [
13
- [ "payment", "", "", "" ]
14
- ],
15
- "outputValues": [
16
- [ "", "conventional", "" ],
17
- [ "", "jumbo", "" ]
18
- ],
19
- "rules": [
20
- [ "payment", "Fixed 30, Fixed 20", "-", "<20.0", "'ARM 3/1'", "conventional", 20 ],
21
- [ "payment", "Fixed 30, Fixed 20", false, ">=20", "'ARM 3/1'", "jumbo", "reqDown" ],
22
- [ "payment", "Fixed 30, Fixed 20", true, ">=20", "'ARM 3/1'", "conventional", "reqDown" ],
23
- [ "payment", "Fixed 15", "-", "<20", "Fixed 20", "conventional", 20 ],
24
- [ "payment", "Fixed 15", false, ">=20", "Fixed 20", "jumbo", "reqDown" ],
25
- [ "payment", "Fixed 15", true, ">=20", "Fixed 20", "conventional", "reqDown" ],
26
- [ "payment", "Fixed 20", "-", "<20", "Fixed 30", "conventional", 20 ],
27
- [ "payment", "Fixed 20", false, ">=20", "Fixed 30", "jumbo", "reqDown" ],
28
- [ "payment", "Fixed 20", true, ">=20", "Fixed 30", "conventional", "reqDown" ],
29
- [ "payment", "Fixed 30", "-", "<20", "Fixed 40", "conventional", 20 ],
30
- [ "payment", "Fixed 30", false, ">=20", "Fixed 40", "jumbo", "reqDown" ],
31
- [ "payment", "Fixed 30", true, ">=20", "Fixed 40", "conventional", "reqDown" ],
32
- [ "payment", "'ARM 7/1','ARM 3/1'", "-", "<20", "'ARM 3/1'", "conventional", 20 ],
33
- [ "payment", "'ARM 7/1','ARM 3/1'", false, ">=20", "'ARM 3/1'", "jumbo", "reqDown" ],
34
- [ "payment", "'ARM 7/1','ARM 3/1'", true, ">=20", "'ARM 3/1'", "conventional", "reqDown" ]
35
- ],
36
- "hitPolicy": "C"
37
- }
38
- },
39
- "data": {
40
- "comment": "The data section is used to organize all constant data params in the RASON model.",
41
- "reqObj": {
42
- "value": "payment",
43
- "comment": "reqobj"
44
- },
45
- "loanType": {
46
- "value": "fixed 30",
47
- "comment": "reqtype"
48
- },
49
- "conforming": {
50
- "value": true,
51
- "comment": "conforming"
52
- },
53
- "dwnPct": {
54
- "value": 30,
55
- "comment": "reqdown"
56
- },
57
- "bankRates": {
58
- "value": [
59
- [ "Lender", "loanType", "confType", "minDown%", "Term", "APR%", "Rate%", "Points", "feesAmt" ],
60
- [ "MDL", "'ARM 3/1'", "conventional", 20, 360, 3.002, 3, 0, 0 ],
61
- [ "AL", "'ARM 3/1'", "conventional", 20, 360, 3.103, 2.875, 0, 1995 ],
62
- [ "AO", "'ARM 3/1'", "conventional", 20, 360, 3.13, 2.875, 1, 899 ],
63
- [ "MDL", "Fixed 30", "conventional", 20, 360, 3.629, 3.625, 0, 0 ],
64
- [ "AL", "Fixed 30", "conventional", 20, 360, 3.682, 3.625, 0, 1068 ],
65
- [ "AO", "Fixed 30", "conventional", 20, 360, 3.79, 3.75, 0, 799 ]
66
- ]
67
- }
68
- },
69
- "formulas": {
70
- "comment": "Use the formulas section to calculate a decision table.",
71
- "loanTypes": {
72
- "comment": "This formula calls the tblLoanTypes decision table. The first argument [string ret_output] is an optional argument that, when passed, returns only the desired columns in the output. In this example, this argument is blank. The second argument [bool ret_header] is an optional argument that, when True, returns the column headings in the output. This is key since the PsiJoin function is used in the next formula. The PsiJoin function relies on the column headings in order to perform the combination of the two tables. The third and remaining arguments pass the input parameters to the decision table: reqObj, loanType, conforming and downPct.",
73
- "formula": "tblLoanTypes(, true, reqObj, loanType, conforming, dwnPct)",
74
- "finalValue": []
75
- },
76
- "recom": {
77
- "comment": "The formula uses the PsiJoin() function to join the loanTypes result with the bankRates array. This function takes three arguments, Table1, Table2 and Clause. The Table1 argument passes the first table, tblLoanTypes. The Table2 argument passes the second table or array, bankRates. The third argument, Clause, passes the conditions for joining the two. In this example, loanTypes (the decision table results) and the data table bankRates are joined via three columns: loanType, confType and downPct. The Clause argument must be surround by quotes. ",
78
- "formula": "PsiJoin(loanTypes, bankRates, 'loanType = loanType, confType = confType, downPct >= minDown%')",
79
- "finalValue": []
80
- }
81
- }
1
+ {
2
+ "modelName": "DTLoanRecommendExample",
3
+ "modelDescription": "RASON Decision Table Example: The decision table tblLoanTypes, returns a loan that meets the criteria passed in the loanTypes formula (within the formula section). A data table, bankRates, has been entered into the data section. This table lists various banks offering the types of loans listed in the rules section of the tblLoanTypes decision table. For example, AimLoan bank offers a conventional ARM 3/1 loan with a term of 360 months, APR of 3.103, requiring a 20% down payment. The loanTypes formula returns the loans meeting the criteria passed. The formula 'recom' (in the formula section), joins the results for 'loanTypes' with the data table, bankRates. The result for loanTypes is a table containing two loans an ARM 3/1 loan and a Fixed 40 loan. The PsiJoin function matches these two loans with the loans from the bankRates table to return several ARM 3/1 loans from various banks. (Since no bank offers the Fixed 40 loan, no results are returned for this loan.) For a complete walkthrough of this example, see the Decision Table chapter within Analytic Solver User Guide.",
4
+ "modelType": "calculation",
5
+ "decisionTables": {
6
+ "comment": "This decision table accepts 4 input parameters: reqObj, reqType, conforming and reqDown. In return, the table returns 3 outputs: loanType, conftype and downPct. The property 'inputTypes' and 'outputTypes' properties specify the types for each input and output parameter. There is only 1 option for the first input, reqObj, 'payment'. If anything other than payment is entered for the first input parameter, an error will be returned. The 2nd input type, reqType, can be anything. The 3rd input type, conforming, must be either 0 or 1, a boolean value. The 4th input parameter reqDown, must be a number, but there are no limitations on the value. The 1st output value can be anything. The 2nd output value must be either 'conventional' or 'jumbo'. The 3rd output value must be a number but no limitation has been placed on the value. The rules section contains a list of loans available in the financial sector. The Hit Policy is Collect + which means that all results from all triggered rules will be returned.",
7
+ "tblLoanTypes": {
8
+ "inputs": [ "reqObj", "reqType", "conforming", "reqDown" ],
9
+ "outputs": [ "loanType", "confType", "downPct" ],
10
+ "inputTypes": [ "", "", "boolean", "number" ],
11
+ "outputTypes": [ "", "", "number" ],
12
+ "inputValues": [
13
+ [ "payment", "", "", "" ]
14
+ ],
15
+ "outputValues": [
16
+ [ "", "conventional", "" ],
17
+ [ "", "jumbo", "" ]
18
+ ],
19
+ "rules": [
20
+ [ "payment", "Fixed 30, Fixed 20", "-", "<20.0", "'ARM 3/1'", "conventional", 20 ],
21
+ [ "payment", "Fixed 30, Fixed 20", false, ">=20", "'ARM 3/1'", "jumbo", "reqDown" ],
22
+ [ "payment", "Fixed 30, Fixed 20", true, ">=20", "'ARM 3/1'", "conventional", "reqDown" ],
23
+ [ "payment", "Fixed 15", "-", "<20", "Fixed 20", "conventional", 20 ],
24
+ [ "payment", "Fixed 15", false, ">=20", "Fixed 20", "jumbo", "reqDown" ],
25
+ [ "payment", "Fixed 15", true, ">=20", "Fixed 20", "conventional", "reqDown" ],
26
+ [ "payment", "Fixed 20", "-", "<20", "Fixed 30", "conventional", 20 ],
27
+ [ "payment", "Fixed 20", false, ">=20", "Fixed 30", "jumbo", "reqDown" ],
28
+ [ "payment", "Fixed 20", true, ">=20", "Fixed 30", "conventional", "reqDown" ],
29
+ [ "payment", "Fixed 30", "-", "<20", "Fixed 40", "conventional", 20 ],
30
+ [ "payment", "Fixed 30", false, ">=20", "Fixed 40", "jumbo", "reqDown" ],
31
+ [ "payment", "Fixed 30", true, ">=20", "Fixed 40", "conventional", "reqDown" ],
32
+ [ "payment", "'ARM 7/1','ARM 3/1'", "-", "<20", "'ARM 3/1'", "conventional", 20 ],
33
+ [ "payment", "'ARM 7/1','ARM 3/1'", false, ">=20", "'ARM 3/1'", "jumbo", "reqDown" ],
34
+ [ "payment", "'ARM 7/1','ARM 3/1'", true, ">=20", "'ARM 3/1'", "conventional", "reqDown" ]
35
+ ],
36
+ "hitPolicy": "C"
37
+ }
38
+ },
39
+ "data": {
40
+ "comment": "The data section is used to organize all constant data params in the RASON model.",
41
+ "reqObj": {
42
+ "value": "payment",
43
+ "comment": "reqobj"
44
+ },
45
+ "loanType": {
46
+ "value": "fixed 30",
47
+ "comment": "reqtype"
48
+ },
49
+ "conforming": {
50
+ "value": true,
51
+ "comment": "conforming"
52
+ },
53
+ "dwnPct": {
54
+ "value": 30,
55
+ "comment": "reqdown"
56
+ },
57
+ "bankRates": {
58
+ "value": [
59
+ [ "Lender", "loanType", "confType", "minDown%", "Term", "APR%", "Rate%", "Points", "feesAmt" ],
60
+ [ "MDL", "'ARM 3/1'", "conventional", 20, 360, 3.002, 3, 0, 0 ],
61
+ [ "AL", "'ARM 3/1'", "conventional", 20, 360, 3.103, 2.875, 0, 1995 ],
62
+ [ "AO", "'ARM 3/1'", "conventional", 20, 360, 3.13, 2.875, 1, 899 ],
63
+ [ "MDL", "Fixed 30", "conventional", 20, 360, 3.629, 3.625, 0, 0 ],
64
+ [ "AL", "Fixed 30", "conventional", 20, 360, 3.682, 3.625, 0, 1068 ],
65
+ [ "AO", "Fixed 30", "conventional", 20, 360, 3.79, 3.75, 0, 799 ]
66
+ ]
67
+ }
68
+ },
69
+ "formulas": {
70
+ "comment": "Use the formulas section to calculate a decision table.",
71
+ "loanTypes": {
72
+ "comment": "This formula calls the tblLoanTypes decision table. The first argument [string ret_output] is an optional argument that, when passed, returns only the desired columns in the output. In this example, this argument is blank. The second argument [bool ret_header] is an optional argument that, when True, returns the column headings in the output. This is key since the PsiJoin function is used in the next formula. The PsiJoin function relies on the column headings in order to perform the combination of the two tables. The third and remaining arguments pass the input parameters to the decision table: reqObj, loanType, conforming and downPct.",
73
+ "formula": "tblLoanTypes(, true, reqObj, loanType, conforming, dwnPct)",
74
+ "finalValue": []
75
+ },
76
+ "recom": {
77
+ "comment": "The formula uses the PsiJoin() function to join the loanTypes result with the bankRates array. This function takes three arguments, Table1, Table2 and Clause. The Table1 argument passes the first table, tblLoanTypes. The Table2 argument passes the second table or array, bankRates. The third argument, Clause, passes the conditions for joining the two. In this example, loanTypes (the decision table results) and the data table bankRates are joined via three columns: loanType, confType and downPct. The Clause argument must be surround by quotes. ",
78
+ "formula": "PsiJoin(loanTypes, bankRates, 'loanType = loanType, confType = confType, downPct >= minDown%')",
79
+ "finalValue": []
80
+ }
81
+ }
82
82
  }
@@ -1,219 +1,219 @@
1
- {
2
- "modelName": "DTLoanStrategyPredictiveCSVXML",
3
- "modelDescription": "RASON Decision Table Example: Loan Strategy Example importing data using CSV and XML files: The difference between this example and the DTLoanStrategyPredictive exammple is that this example imports the predictive model from within the datasources section. The predictive model is then used to score new data. The output from the scoring is used as an input to a decision table.",
4
- "modelType": "calculation",
5
- "datasources": {
6
- "comment": "Use this section to import data from an outside source.",
7
- "score_src": {
8
- "comment": "This data source contains the new data that will be scored by the predictive model. ",
9
- "type": "csv",
10
- "connection": "score_src.txt",
11
- "colIndex": "score_h",
12
- "direction": "import"
13
- },
14
- "pmml_src": {
15
- "comment": "This data source contains the predictive model that will be used to score the new data, imported above.",
16
- "type": "xml",
17
- "connection": "pmml_src.xml",
18
- "content": "pmml-model",
19
- "direction": "import"
20
- }
21
- },
22
- "decisionTables": {
23
- "comment": "There are 8 decision tables in the decisionTables section. Outputs from some tables will be used as inputs for other tables.",
24
- "tblAppRiskScore": {
25
- "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.",
26
- "inputs": [ "cust age", "marital status", "employment status" ],
27
- "outputs": [ "partial score" ],
28
- "refTypes": [ "", "", "", "" ],
29
- "inputValues": [
30
- [ "[18..120]", "s", "unemployed" ],
31
- [ "", "m", "employed" ],
32
- [ "", "", "selfemployed" ],
33
- [ "", "", "student" ]
34
- ],
35
- "rules": [
36
- [ "[18..21]", "-", "-", 32 ],
37
- [ "(21..25]", "-", "-", 35 ],
38
- [ "(25..35]", "-", "-", 40 ],
39
- [ "(35..49]", "-", "-", 43 ],
40
- [ ">49", "-", "-", 48 ],
41
- [ "-", "s", "-", 25 ],
42
- [ "-", "m", "-", 45 ],
43
- [ "-", "-", "unemployed", 15 ],
44
- [ "-", "-", "student", 18 ],
45
- [ "-", "-", "employed", 45 ],
46
- [ "-", "-", "selfemployed", 36 ]
47
- ],
48
- "hitPolicy": "C+"
49
- },
50
- "tblBureauRiskCat": {
51
- "comment": "This decision table accepts 2 inputs, cust Exist (true if customer already has at least 1 more loans) and app Risk Score (partial score from tblAppRiskScore). With a hit policy of 'unique', only 1 rule, with a unique result, may be returned. ",
52
- "inputs": [ "cust exist", "app risk score" ],
53
- "outputs": [ "bureau risk cat" ],
54
- "inputTypes": [ "", "" ],
55
- "outputTypes": [ "" ],
56
- "rules": [
57
- [ false, "<100", "high" ],
58
- [ false, "[100..120]", "medium" ],
59
- [ false, "[120..130]", "low" ],
60
- [ false, ">130", "veryLow" ],
61
- [ true, "<80", "decline" ],
62
- [ true, "[80..90]", "high" ],
63
- [ true, "[90..110]", "medium" ],
64
- [ true, ">110", "low" ]
65
- ],
66
- "hitPolicy": "U"
67
- },
68
- "tblBureauCallType": {
69
- "comment": "This decision table accepts 1 input, bureau Risk Cat, which is the output of the tblBureauRiskCat decision table.",
70
- "inputs": [ "bureau risk cat" ],
71
- "outputs": [ "bureau call type" ],
72
- "rules": [
73
- [ "high, medium", "full" ],
74
- [ "low", "mini" ],
75
- [ "veryLow, decline", "none" ]
76
- ],
77
- "hitPolicy": "U"
78
- },
79
- "tblEligibility": {
80
- "comment": "This decision table accepts 3 inputs, bureau Risk Cat (which is the output of the tblAppriskScore decision table), bureau afford (a statistic calculated in the formulas 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.",
81
- "inputs": [ "bureau risk cat", "bureau afford", "cust age" ],
82
- "outputs": [ "eligibility" ],
83
- "refTypes": [ "", "", "", "" ],
84
- "outputValues": [ "ineligible", "eligible" ],
85
- "rules": [
86
- [ "decline", "-", "-", "ineligible" ],
87
- [ "-", false, "-", "ineligible" ],
88
- [ "-", "-", "<18", "ineligible" ],
89
- [ "-", "-", "-", "eligible" ]
90
- ],
91
- "hitPolicy": "P"
92
- },
93
- "tblStrategy": {
94
- "comment": "This decision table accepts 2 inputs, eligibility and bureau Call Type. The strategy will be returned in the result.",
95
- "inputs": [ "eligibility", "bureau call type" ],
96
- "outputs": [ "strategy" ],
97
- "rules": [
98
- [ "ineligible", "-", "decline" ],
99
- [ "eligible", "full, mini", "bureau" ],
100
- [ "eligible", "none", "through" ]
101
- ],
102
- "hitPolicy": "U"
103
- },
104
- "tblCreditContFactor": {
105
- "comment": "This decision table accepts 1 input, bureau Risk Cat, and returns the credit Cont Factor.",
106
- "inputs": [ "bureau risk cat" ],
107
- "outputs": [ "credit cont factor" ],
108
- "rules": [
109
- [ "high, decline", 0.6 ],
110
- [ "medium", 0.7 ],
111
- [ "low, veryLow", 0.8 ]
112
- ],
113
- "hitPolicy": "U"
114
- }
115
- },
116
- "data": {
117
- "comment": "Use this section to organize all constant data parameters in the RASON model.",
118
- "scoreData": {
119
- "comment": "Binds the score_src dataSource (importing the new data) to this data parameter.",
120
- "binding": "score_src"
121
- },
122
- "pmodel": {
123
- "binding": "pmml_src",
124
- "comment": "Binds the pmml_src dataSource to pmodel data parameter."
125
- },
126
- "custAge": {
127
- "value": 40,
128
- "comment": "Applicant's age"
129
- },
130
- "maritalStatus": {
131
- "value": "s",
132
- "comment": "The marital statis of the applicant."
133
- },
134
- "employmentStatus": {
135
- "value": "selfemployed",
136
- "comment": "The employment status of the applicant."
137
- },
138
- "custExist": {
139
- "value": false,
140
- "comment": "true is the applicant is an existing customer, false otherwise."
141
- },
142
- "monthIncome": {
143
- "value": 2500,
144
- "comment": "applicant's monthly income"
145
- },
146
- "loanRate": {
147
- "value": 5,
148
- "comment": "loan's interest rate"
149
- },
150
- "loanTerm": {
151
- "value": 30,
152
- "comment": "term of the loan, in months"
153
- },
154
- "loanAmnt": {
155
- "value": 100000,
156
- "comment": "Amount of the loan, in US dollars"
157
- },
158
- "monthExpenses": {
159
- "value": 1000,
160
- "comment": "Applicant's monthly expenses"
161
- },
162
- "loanType": {
163
- "value": "standard",
164
- "comment": "The type of loan being applied for."
165
- }
166
- },
167
- "formulas": {
168
- "appRiskScore": {
169
- "formula": "MIN(PsiPredict(pmodel, scoreData),tblAppRiskScore(, , custAge, maritalStatus, employmentStatus))",
170
- "comment": "Calls the tblAppRiskScore decision table to compute the applicant's risk score.",
171
- "finalValue": []
172
- },
173
- "bureauRiskCat": {
174
- "formula": "tblBureauRiskCat(, , custExist, appRiskScore)",
175
- "comment": "Calls the tblBureauRiskCat decision table. Note that output from the tblAppRiskScore decision table, appRiskScore, is an input to this decision table.",
176
- "finalValue": []
177
- },
178
- "bureauCallType": {
179
- "formula": "tblBureauCallType(, , bureauRiskCat)",
180
- "comment": "Calls the tblBureauCallType decision table to compute the bureau's risk category.",
181
- "finalValue": []
182
- },
183
- "monthRepay": {
184
- "formula": "-PMT(loanRate%/12, loanTerm*12, loanAmnt)",
185
- "comment": "computes the portion of the monthly installment attributable to the loan."
186
- },
187
- "disposIncome": {
188
- "formula": "monthIncome - (monthRepay + monthExpenses)",
189
- "comment": "Computes the applicant's disposable income."
190
- },
191
- "monthFee": {
192
- "formula": "IF(loanType = 'standard', 20, IF(loanType = 'special', 25, 0))",
193
- "comment": "Computes the fee assoicated with the loan."
194
- },
195
- "monthInstall": {
196
- "formula": "monthRepay + monthFee",
197
- "comment": "Computes the total installment payment including loan replayment and fee portions."
198
- },
199
- "bureauAfford": {
200
- "formula": "IF(disposIncome * creditContFactor > monthInstall, TRUE, FALSE)",
201
- "comment": "Determines if the applicant will be able to afford the monthly installment payment."
202
- },
203
- "eligibility": {
204
- "formula": "tblEligibility(, , bureauRiskCat, bureauAfford, custAge)",
205
- "comment": "Determines if the applicant is eligibile to receive a loan from the institution.",
206
- "finalValue": []
207
- },
208
- "strategy": {
209
- "formula": "tblStrategy(, , eligibility, bureauCallType)",
210
- "comment": "Uses outputs from the tblEligibility and tblBureauCallType tables to determine the best strategy for the applicant.",
211
- "finalValue": []
212
- },
213
- "creditContFactor": {
214
- "formula": "tblCreditContFactor(, , bureauRiskCat)",
215
- "comment": "Calls the tblCreditContFactor table using the output from the tblBureauRiskCat decision table. ",
216
- "finalValue": []
217
- }
218
- }
1
+ {
2
+ "modelName": "DTLoanStrategyPredictiveCSVXML",
3
+ "modelDescription": "RASON Decision Table Example: Loan Strategy Example importing data using CSV and XML files: The difference between this example and the DTLoanStrategyPredictive exammple is that this example imports the predictive model from within the datasources section. The predictive model is then used to score new data. The output from the scoring is used as an input to a decision table.",
4
+ "modelType": "calculation",
5
+ "datasources": {
6
+ "comment": "Use this section to import data from an outside source.",
7
+ "score_src": {
8
+ "comment": "This data source contains the new data that will be scored by the predictive model. ",
9
+ "type": "csv",
10
+ "connection": "score_src.txt",
11
+ "colIndex": "score_h",
12
+ "direction": "import"
13
+ },
14
+ "pmml_src": {
15
+ "comment": "This data source contains the predictive model that will be used to score the new data, imported above.",
16
+ "type": "xml",
17
+ "connection": "pmml_src.xml",
18
+ "content": "pmml-model",
19
+ "direction": "import"
20
+ }
21
+ },
22
+ "decisionTables": {
23
+ "comment": "There are 8 decision tables in the decisionTables section. Outputs from some tables will be used as inputs for other tables.",
24
+ "tblAppRiskScore": {
25
+ "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.",
26
+ "inputs": [ "cust age", "marital status", "employment status" ],
27
+ "outputs": [ "partial score" ],
28
+ "refTypes": [ "", "", "", "" ],
29
+ "inputValues": [
30
+ [ "[18..120]", "s", "unemployed" ],
31
+ [ "", "m", "employed" ],
32
+ [ "", "", "selfemployed" ],
33
+ [ "", "", "student" ]
34
+ ],
35
+ "rules": [
36
+ [ "[18..21]", "-", "-", 32 ],
37
+ [ "(21..25]", "-", "-", 35 ],
38
+ [ "(25..35]", "-", "-", 40 ],
39
+ [ "(35..49]", "-", "-", 43 ],
40
+ [ ">49", "-", "-", 48 ],
41
+ [ "-", "s", "-", 25 ],
42
+ [ "-", "m", "-", 45 ],
43
+ [ "-", "-", "unemployed", 15 ],
44
+ [ "-", "-", "student", 18 ],
45
+ [ "-", "-", "employed", 45 ],
46
+ [ "-", "-", "selfemployed", 36 ]
47
+ ],
48
+ "hitPolicy": "C+"
49
+ },
50
+ "tblBureauRiskCat": {
51
+ "comment": "This decision table accepts 2 inputs, cust Exist (true if customer already has at least 1 more loans) and app Risk Score (partial score from tblAppRiskScore). With a hit policy of 'unique', only 1 rule, with a unique result, may be returned. ",
52
+ "inputs": [ "cust exist", "app risk score" ],
53
+ "outputs": [ "bureau risk cat" ],
54
+ "inputTypes": [ "", "" ],
55
+ "outputTypes": [ "" ],
56
+ "rules": [
57
+ [ false, "<100", "high" ],
58
+ [ false, "[100..120]", "medium" ],
59
+ [ false, "[120..130]", "low" ],
60
+ [ false, ">130", "veryLow" ],
61
+ [ true, "<80", "decline" ],
62
+ [ true, "[80..90]", "high" ],
63
+ [ true, "[90..110]", "medium" ],
64
+ [ true, ">110", "low" ]
65
+ ],
66
+ "hitPolicy": "U"
67
+ },
68
+ "tblBureauCallType": {
69
+ "comment": "This decision table accepts 1 input, bureau Risk Cat, which is the output of the tblBureauRiskCat decision table.",
70
+ "inputs": [ "bureau risk cat" ],
71
+ "outputs": [ "bureau call type" ],
72
+ "rules": [
73
+ [ "high, medium", "full" ],
74
+ [ "low", "mini" ],
75
+ [ "veryLow, decline", "none" ]
76
+ ],
77
+ "hitPolicy": "U"
78
+ },
79
+ "tblEligibility": {
80
+ "comment": "This decision table accepts 3 inputs, bureau Risk Cat (which is the output of the tblAppriskScore decision table), bureau afford (a statistic calculated in the formulas 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.",
81
+ "inputs": [ "bureau risk cat", "bureau afford", "cust age" ],
82
+ "outputs": [ "eligibility" ],
83
+ "refTypes": [ "", "", "", "" ],
84
+ "outputValues": [ "ineligible", "eligible" ],
85
+ "rules": [
86
+ [ "decline", "-", "-", "ineligible" ],
87
+ [ "-", false, "-", "ineligible" ],
88
+ [ "-", "-", "<18", "ineligible" ],
89
+ [ "-", "-", "-", "eligible" ]
90
+ ],
91
+ "hitPolicy": "P"
92
+ },
93
+ "tblStrategy": {
94
+ "comment": "This decision table accepts 2 inputs, eligibility and bureau Call Type. The strategy will be returned in the result.",
95
+ "inputs": [ "eligibility", "bureau call type" ],
96
+ "outputs": [ "strategy" ],
97
+ "rules": [
98
+ [ "ineligible", "-", "decline" ],
99
+ [ "eligible", "full, mini", "bureau" ],
100
+ [ "eligible", "none", "through" ]
101
+ ],
102
+ "hitPolicy": "U"
103
+ },
104
+ "tblCreditContFactor": {
105
+ "comment": "This decision table accepts 1 input, bureau Risk Cat, and returns the credit Cont Factor.",
106
+ "inputs": [ "bureau risk cat" ],
107
+ "outputs": [ "credit cont factor" ],
108
+ "rules": [
109
+ [ "high, decline", 0.6 ],
110
+ [ "medium", 0.7 ],
111
+ [ "low, veryLow", 0.8 ]
112
+ ],
113
+ "hitPolicy": "U"
114
+ }
115
+ },
116
+ "data": {
117
+ "comment": "Use this section to organize all constant data parameters in the RASON model.",
118
+ "scoreData": {
119
+ "comment": "Binds the score_src dataSource (importing the new data) to this data parameter.",
120
+ "binding": "score_src"
121
+ },
122
+ "pmodel": {
123
+ "binding": "pmml_src",
124
+ "comment": "Binds the pmml_src dataSource to pmodel data parameter."
125
+ },
126
+ "custAge": {
127
+ "value": 40,
128
+ "comment": "Applicant's age"
129
+ },
130
+ "maritalStatus": {
131
+ "value": "s",
132
+ "comment": "The marital statis of the applicant."
133
+ },
134
+ "employmentStatus": {
135
+ "value": "selfemployed",
136
+ "comment": "The employment status of the applicant."
137
+ },
138
+ "custExist": {
139
+ "value": false,
140
+ "comment": "true is the applicant is an existing customer, false otherwise."
141
+ },
142
+ "monthIncome": {
143
+ "value": 2500,
144
+ "comment": "applicant's monthly income"
145
+ },
146
+ "loanRate": {
147
+ "value": 5,
148
+ "comment": "loan's interest rate"
149
+ },
150
+ "loanTerm": {
151
+ "value": 30,
152
+ "comment": "term of the loan, in months"
153
+ },
154
+ "loanAmnt": {
155
+ "value": 100000,
156
+ "comment": "Amount of the loan, in US dollars"
157
+ },
158
+ "monthExpenses": {
159
+ "value": 1000,
160
+ "comment": "Applicant's monthly expenses"
161
+ },
162
+ "loanType": {
163
+ "value": "standard",
164
+ "comment": "The type of loan being applied for."
165
+ }
166
+ },
167
+ "formulas": {
168
+ "appRiskScore": {
169
+ "formula": "MIN(PsiPredict(pmodel, scoreData),tblAppRiskScore(, , custAge, maritalStatus, employmentStatus))",
170
+ "comment": "Calls the tblAppRiskScore decision table to compute the applicant's risk score.",
171
+ "finalValue": []
172
+ },
173
+ "bureauRiskCat": {
174
+ "formula": "tblBureauRiskCat(, , custExist, appRiskScore)",
175
+ "comment": "Calls the tblBureauRiskCat decision table. Note that output from the tblAppRiskScore decision table, appRiskScore, is an input to this decision table.",
176
+ "finalValue": []
177
+ },
178
+ "bureauCallType": {
179
+ "formula": "tblBureauCallType(, , bureauRiskCat)",
180
+ "comment": "Calls the tblBureauCallType decision table to compute the bureau's risk category.",
181
+ "finalValue": []
182
+ },
183
+ "monthRepay": {
184
+ "formula": "-PMT(loanRate%/12, loanTerm*12, loanAmnt)",
185
+ "comment": "computes the portion of the monthly installment attributable to the loan."
186
+ },
187
+ "disposIncome": {
188
+ "formula": "monthIncome - (monthRepay + monthExpenses)",
189
+ "comment": "Computes the applicant's disposable income."
190
+ },
191
+ "monthFee": {
192
+ "formula": "IF(loanType = 'standard', 20, IF(loanType = 'special', 25, 0))",
193
+ "comment": "Computes the fee assoicated with the loan."
194
+ },
195
+ "monthInstall": {
196
+ "formula": "monthRepay + monthFee",
197
+ "comment": "Computes the total installment payment including loan replayment and fee portions."
198
+ },
199
+ "bureauAfford": {
200
+ "formula": "IF(disposIncome * creditContFactor > monthInstall, TRUE, FALSE)",
201
+ "comment": "Determines if the applicant will be able to afford the monthly installment payment."
202
+ },
203
+ "eligibility": {
204
+ "formula": "tblEligibility(, , bureauRiskCat, bureauAfford, custAge)",
205
+ "comment": "Determines if the applicant is eligibile to receive a loan from the institution.",
206
+ "finalValue": []
207
+ },
208
+ "strategy": {
209
+ "formula": "tblStrategy(, , eligibility, bureauCallType)",
210
+ "comment": "Uses outputs from the tblEligibility and tblBureauCallType tables to determine the best strategy for the applicant.",
211
+ "finalValue": []
212
+ },
213
+ "creditContFactor": {
214
+ "formula": "tblCreditContFactor(, , bureauRiskCat)",
215
+ "comment": "Calls the tblCreditContFactor table using the output from the tblBureauRiskCat decision table. ",
216
+ "finalValue": []
217
+ }
218
+ }
219
219
  }