"Average elo should be 1600 indeed since the amount of points gained is equal the number of points lost after every game."
An example to the opposite has been posted above tho, see the chess dot com statistics. The initial elo for every player over there is 1200, yet the average is around 1000.
Btw. the average elo here is roughly 1592.
Well then explain me the math behind it.
Two things can artificially lower your Elo average:
- Decay (as in Voobly, when one player loses points and noone wins them)
- Moderation intervention (one player might be reinitialized to X points for cheating or something)
Since you took the decayed accounts off from your dataset, point 2 explains why Voobly's average is not exactly 1600.
Otherwise, mathematically there are two additional things that could play:
- Some Elo system modify the "K" factor (K = maximum number of points you can get when beating over your level, 32 on Voobly, you get K/2 if you beat your exact level) when you reach high levels, so you could have one player losing more points than the other wins after a match if that happens
- Rounding errors (very unprofessional)
If none of this applies it shouldn't happen.