What you are looking for is an unsupervised learning algorithm algorithm: i.e an algorithm that will by itself determine the 3 most rational groups from your dataset. This method will allow you to choose the boundaries of the groups based on the dataset you provide and not by choosing some given fixed values.
The algorithm I suggest you to use is the K-means algorithm. You provide it with the data, and the number $k$ of clusters (groups) that you want to have. The algorithm will then split the data into the $k$ groups you would like. Note that this algorithm can handle points with several features, whereas you will be using only one (volatiliy).
Here is an idea of how it works in Matlab:
test=[0 1 2 3 100 105 98 1000 1001 997]';
[idx,C] = kmeans(test,3);
The value returned for idx
is a vector where each point in test
is attributed a cluster number (representing its group):
idx =
2
2
2
2
3
3
3
1
1
1
You can then look at the variable C
which contains the mean of each cluster which could be undrestood as "the perfect point for each cluster"
c =
999.3333
1.5000
101.0000
So it found three groups in test
one around 999.33, one around 1.5, and one around 101.
That should do the trick.