Risk Scoring
The Risk Scoring API computes an overall risk score and risk sub-scores with up to 10 nested levels for risk capacity, financial health, risk tolerance, and any other risk scoring criteria you’d consider.
The API can handle any number of risk buckets (max. 100).
How are scores computed?
- Typically a score is the weighted average of underlying sub-scores.
- A score can be computed by this API based on individual questions' numeric answers or based directly on individual responses’ scores or a mix of both.
- The API can linearise numeric answers into scores that fit in the risk buckets range.
- The API can deal with capping and flooring of scores by specific sub-scores.
- The API offers the flexibility to choose between rounding up, down or to the nearest integer when computing a score at any level.
- The score can also be unrounded and range between 1 and the number of risk buckets.
Let’s say you want to score risk into 5 buckets, from 1 (low risk) to 5 (high risk). Here is how you might define each bucket:
- risk score 1: low risk
- They don’t want to experience volatility in their portfolio.
- They don’t expect the value of their portfolio to go down at any point in time.
- They should also understand that expected returns are very low.
- risk score 2: medium-low risk
- They are OK with a bit of volatility in their portfolio.
- They expect the value of your portfolio to go down but just for a short period of time before it bounces back.
- They also understand that expected returns are low.
- risk score 3: medium risk
- They are OK with some volatility in their portfolio.
- They expect the value of your portfolio to go down but just for a moderate period of time before it bounces back.
- They also understand that expected returns are average.
- risk score 4: medium-high risk
- They are OK with volatility in their portfolio.
- They expect the value of their portfolio to go down but just for a significant period of time but it should bounce back.
- They expect good returns in the mid to long term.
- risk score 5: high risk
- They are OK with high volatility in their portfolio.
- They expect the value of your portfolio to go down sharply at one point in time but they know that they will reap huge benefits if you are patient enough.
- They expect high returns in the long term.
The Risk Scoring API enables you to craft a set of nested questions that will classify a set of answers into a risk bucket. What’s important is that the scoring rules from the set of questions and the answers given by the end users are sent as one payload to the API.
Let’s continue with the example. Let’s say for classifying a user into one of the above risk buckets, you want to have 5 questions. 3 questions for category “Risk Capacity” and 2 questions for category “Risk Tolerance”. Here’s an example of how you formulate the questions into a user journey.
In the screenshot above, the user already has answers to all the questions. There will also be parameters that we will pull from the database and that will be used in the scoring: investor’s age and the goal year. Now we have everything we need to call the risk scoring API using the combination of the questions and answers.
Here’s the risk scoring API
POST /api/riskProfiling/v2/calcRiskScore
Here’s how the questions and answers are combined to make the input payload
{
"nbRiskBuckets": "5",
"roundFlag": true,
"questionnaire": [
{
"questionId": "1",
"questionCategoryName": "Risk Capacity",
"questionCapFlag": true,
"questionWeight": "0.5",
"questionRoundFlag": true,
"questionDetails": [
{
"questionId": "1.1",
"questionCategoryName": "Financial Health",
"questionWeight": "0.4",
"questionRoundFlag": true,
"questionDetails": [
{
"questionId": "1.1.1",
"questionCategoryName": "Income",
"questionFloorFlag": true,
"questionScore": "5",
"questionWeight": "0.5"
},
{
"questionId": "1.1.2",
"questionCategoryName": "Balance Sheet",
"questionFloorFlag": true,
"questionAnswer": "4",
"questionWeight": "0.5",
"questionNormalisationFactor1": "4",
"questionNormalisationFactor2": "1",
"questionRoundUpFlag": true
}
]
},
{
"questionId": "1.2",
"questionCategoryName": "Age",
"questionAnswer": "49",
"questionNormalisationFactor1": "70",
"questionNormalisationFactor2": "18",
"questionWeight": "0.2",
"questionRoundUpFlag": true
},
{
"questionId": "1.3",
"questionCategoryName": "Goal Year",
"questionAnswer": "11",
"questionCapFlag": true,
"questionNormalisationFactor1": "1",
"questionNormalisationFactor2": "12",
"questionWeight": "0.2",
"questionRoundDownFlag": true
},
{
"questionId": "1.4",
"questionCategoryName": "Product Knowledge & Experience",
"questionWeight": "0.2",
"questionAnswer": "3",
"questionNormalisationFactor1": "1",
"questionNormalisationFactor2": "4"
}
]
},
{
"questionId": "2",
"questionCategoryName": "Risk Tolerance",
"questionCapFlag": true,
"questionWeight": "0.5",
"questionRoundFlag": true,
"questionDetails": [
{
"questionId": "2.1",
"questionCategoryName": "Risk Tolerance Question 1",
"questionWeight": "0.5",
"questionAnswer": "4",
"questionNormalisationFactor1": "1",
"questionNormalisationFactor2": "4"
},
{
"questionId": "2.2",
"questionCategoryName": "Risk Tolerance Question 2",
"questionWeight": "0.5",
"questionAnswer": "4",
"questionNormalisationFactor1": "1",
"questionNormalisationFactor2": "4"
}
]
}
]
}
Here’s the response
{
"overallScoreDetails": [
{
"questionCategoryName": "Risk Capacity",
"questionId": "1",
"questionScoreDetails": [
{
"questionCategoryName": "Financial Health",
"questionId": "1.1",
"questionScoreDetails": [
{
"questionCategoryName": "Income",
"questionId": "1.1.1",
"questionScore": "5",
"questionWeight": "0.5"
},
{
"questionCategoryName": "Balance Sheet",
"questionId": "1.1.2",
"questionScore": "2",
"questionWeight": "0.5"
}
],
"questionScore": "5",
"questionWeight": "0.4"
},
{
"questionCategoryName": "Age",
"questionId": "1.2",
"questionScore": "3",
"questionWeight": "0.2"
},
{
"questionCategoryName": "Goal Year",
"questionId": "1.3",
"questionScore": "4",
"questionWeight": "0.2"
},
{
"questionCategoryName": "Product Knowledge & Experience",
"questionId": "1.4",
"questionScore": "3.66666667",
"questionWeight": "0.2"
}
],
"questionScore": "4",
"questionWeight": "0.5"
},
{
"questionCategoryName": "Risk Tolerance",
"questionId": "2",
"questionScoreDetails": [
{
"questionCategoryName": "Risk Tolerance Question 1",
"questionId": "2.1",
"questionScore": "5",
"questionWeight": "0.5"
},
{
"questionCategoryName": "Risk Tolerance Question 2",
"questionId": "2.2",
"questionScore": "5",
"questionWeight": "0.5"
}
],
"questionScore": "5",
"questionWeight": "0.5"
}
],
"overallScore": "4"
}
In this scenario, we get an overall score of 4 out of 5, which means they are classified into the second highest risk bucket.
API Details
You can check the risk scoring API details page to see the complete description of all the input parameters and response payload.
Updated almost 2 years ago