The official ranking for test teams in ICC is quite complicated http://en.wikipedia.org/wiki/ICC_Test_Championship#Test_championship_calculations
. It seems a bit confusing with all the arbitrary point calculations. (40 points, 90 points etc). And although it tries to give more points to a weaker team that beats a stronger team, the effect is not uniform. The scoring scheme can be made more elegant by a simple page rank kind of algorithm.
The idea is, if India beats Australia in a series 2-1, Indias score would be (score-of-australia)*2/3 and australias score would be (score-of-india)*1/3. At the end of a given time period, lets say india beat aus 2-0, SA 3-1 and lost to bangladesh 1-0. Indias score would be:
india-score = k(india-score + 2/2*aus_score + 3/4*sa_score +0*bangladesh_score)
similarly for bangladesh, bang-score = k(bang-score + 1*india-score + other series)
where k is a constant.
This leads to a linear set of equations which can be solved by using the eigen-value decomposition. Each eigen vector is a solution, which in this case becomes a possible team score. We can take the vector that corresponds to the maximum eigen value.
The data for all the test series played until now is available from cricinfo at http://stats.cricinfo.com/ci/content/records/335431.html.
I used a slightly modified version of the above scoring scheme, The score I used was (number of wins)/(total-matches + 1) . Just to score more for a comprehensive 3-0 win (3/(3+1) = 0.75) v/s a 1-0 win (0.5) The scores for the last 3 years, that is 2007 and beyond are
"South Africa" 0.46906326930865216
"Sri Lanka" 0.29340243047144315
"West Indies" 0.11112461214397185
"New Zealand" 0.05997455303303149
If scored this way, Australia still seem to have a higher ranking as compared to the ICC ranking where they are number currently number 5. I also tried plotting the scores for the last 130 years of test cricket. Here are the results.
As expected, India is rising now whereas Australia is falling, WI dominated a decade after 75. Surprising thing is England started both the world wars winning against Australia and immediately after the wars, Australia was on top.
Here is the clojure code for doing all this, jblas is needed for eigen decomposition and jfreechart for plotting.