I've been working on a game and I need to implement a feature, but I still haven't found a good formula for it. The problem is the following:
Each team has X points, and all teams are able to challenge each other. When a weak team (few points) is defeated by a stronger team (which has more points), he will not lose a large number of points because the opponent was stronger. However, if the weak team defeats the stronger team, he should receive a large number of points, while the stronger team should lose a larger number of points, because a weaker team defeated him.
A rule must be applied also when a draw occurs. When 2 teams tie, the weaker one must receive more points than the stronger one, while the stronger must lose points if the weak team has way less points than the stronger.
I'd maybe post this as a comment, but I don't have the necessary rep to do so. A simple formula you might use is as follows.
For a given match, let $X_L$ represent the score of the lower-ranked opponent (going in) and let $X_H$ represent the rank of the higher-ranked opponent. Let $\Delta=X_H-X_L$ represent the difference between opponents ranks. Primes are added to denote the new rank after updating following the match.
If the lower-rank wins: $X_L^\prime = X_L + a\Delta +b$ and $ X_H^\prime = X_H -a\Delta-b $
If the higher-rank wins: $X_H^\prime = X_H + \frac{X_H-\Delta}{X_H}b$ and $X_L^\prime = X_L - \frac{X_H-\Delta}{X_H}$
If the two people players have the same rank beforehand, then you can use either formula - the one who wins gets $b$ and the one loses loses $b$ either way.
Advantages of a system like this are as follows: