I am working to create a Risk score on data where I have variables - Invested_amount, Profit Amount, Age of Account in days, Total Trading Transactions, Profit per Transaction & Investment per transaction. Basically, I want to derive a method to calculate the Risk score, where a person's profit is more (most of the time he is winning). Here the score should be higher so that I can classify them as High Risk (Mostly wins and create a big profit), medium Risk, and Low-Risk customers (Always makes Loss).

Basically, my problem is to assign a Risk score to each customer, the higher the score more the customer is Risky. Once this score is derived then using this score we will segment the customers into three classes.

Below are the variables currently I am using…

|Variable|               Definition|
|username|               UserId to identify the records|
|Total_Freq_transaction| Total Number of trades done|
|Total_Freq_win|         Total number of trade won|
|Account_age_days|       Account activated date - Last trade date |
|Invest_Amount|          Total Amount invested in trade|
|total_profit|           Profit made on trade (pay out amount - Investment Amount)|
|Trade_per_day|          Total Number of trades done / Account age|
|Win_prob%|              Wining probability from total number of trades|

Any help would be greatly appreciated.


3 Answers 3


There are traditional ways of creating a risk scorecard using linear regression techniques. It's a whole topic in itself. A good book for beginners to read in-depth about it would be this.

For sure, you can also tackle it as three-class classification problem if you have labelled data for that. Or consider it as binary classification problem and create three buckets out of class probability output by the classifier.

  • $\begingroup$ Thanks for the suggestion. Basically my idea is to first create a Riskscore and then segment using those scores. The high the risk score the more risky the customer. $\endgroup$ May 2, 2018 at 8:18
  • $\begingroup$ Do you have labels? If yes, treat it as a classification problem as suggested. $\endgroup$
    – Santoshi M
    May 3, 2018 at 14:06
  • $\begingroup$ No , we do not have labels $\endgroup$ May 4, 2018 at 14:35

Since your winning_probability (Win_prob%) is a continuous numeric outcome variable, it is a supervised learning regression problem. For this there are many methods, both linear and non-linear (especially see scikit-learn: http://scikit-learn.org/stable/supervised_learning.html ). Which of these algorithm is best for you depends on your data. It is likely that you need to try multiple algorithms and see which one gives best results. Cross-validation ( http://scikit-learn.org/stable/modules/cross_validation.html ) is likely to be best way to determine this.

You may also try neural networks using other libraries, e.g. https://www.tensorflow.org/tutorials/keras/basic_regression or https://www.kaggle.com/xgdbigdata/keras-regression-tutorial# .

Once you have predicted winning_probability, it can be segmented into low, medium and high risk using any chosen criteria.

Hope this helps.


Since your winning probability is not the final deciding factor in whether a user is high or low risk because they could have a very high win probability but low profits. Which would actually make them a medium to low risk user. And you don't have any labelled class data or any final risk metric, this could be formulated as an unsupervised learning problem.

Simply cluster the user's into three groups and analyze the output to see if it is intuitively correct. Clean it up a bit, label it and use that to build future supervised learning classification models.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.