EDIT: I've since revised my proposal and made a new post with it on a much later page of this thread. Link to that post: https://mwomercs.com...ost__p__6338091
The WinScore / LossScore Ratio
Why?
I designed this model for the purpose of combining the good parts of Jay Z's proposal with the good parts of Nightbird's proposal. Jay Z's model gives players the feedback they want by taking into account Match Score, but is mathematically divergent. Nightbird's model is good for matchmaking purposes, but does not take your match score into account so it will not give players the feedback they want to see.
Why ratio?
Straight sums for PSR from wins and losses are inherently mathematically unstable. The current PSR has an upwards bias, which leads to the ''XP Bar'' phenomenon that we are all familiar with. Jay Z's model and other Zero Sum proposals alleviate this by making the upward motion of above average performers and downward motion of below average performers dependent on each other. A Zero Sum system is still divergent with all below average performers ''Grinding XP'' towards negative infinity and all above average performers ''Grinding XP'' towards positive infinity.
Using a ratio of your winning performances and losing performances prevents the PSR from exploding away from the mean and instead stabilizes over time towards a number that properly describes your performance regardless of if you have played a thousand matches or a million matches.
How?
WinScore = (your_score - lowest_score) / (highest_score - lowest_score)
LossScore = 1 - (your_score - lowest_score) / (highest_score - lowest_score)
PSR = sum(WinScore) / sum(LossScore)
with scores for PSR summed over either all matches or preferably the last N (where N is some large integer) matches and seeded with some initial WinScore and LossScore, such as 10, for each sum.
Examples
If you have the lowest score in a match, your result would be either
WinScore = (your_score - your_score) / (highest_score - your_score) = 0
or
LossScore = 1 - 0 = 1
If you have the highest score in a match, your result would be either
WinScore = (your_score - lowest_score) / (your_score - lowest_score) = 1
or
LossScore = 1 - 1 = 0
From these examples you should be able to see how the system does not punish you too hard when you lose despite playing well and rewards those who are being carried by their team less than it rewards those doing the carrying.
Ok but...
If we want to, we could even add a small factor F to the score calculations so that someone with an abysmally low score could win with a negative WinScore which would have the same effect on their PSR as a minor loss and someone with an absurdly high score could end up with a negative LossScore which would have the same effect on their PSR as a minor win.
With such a factor, the equations for the scores would be
WinScore = (your_score - lowest_score - F) / (highest_score - lowest_score)
LossScore = 1 - (your_score - lowest_score + F) / (highest_score - lowest_score)
A win with a Match Score of 0 would give you
WinScore = (0 - 0 - F) / (highest_score - 0) = -F / highest_score
for a ''negative win'', or similarly a loss with the highest match score would give
LossScore = 1 - (your_score - lowest_score + F) / (your_score - lowest_score)
~ 1 - (your_score + F) / your_score < 0
for a ''negative loss''. However, this could lead to some really weird results if F ends up being larger than highest score in a match for example, so I am not too happy about it.
F = highest_score / 10
or something along those lines might work.
Technical note
If lowest_score and highest_score are equal, which can happen if both teams disconnect at start due to server failure and no one scores any points, we would be dividing by zero. Such matches, as well as ties, should simply be discarded. I suppose all matches where the scores would involve division by zero are almost certain to be ties in the first place.
This may be outside the scope of what PGI is willing to implement, in which case Jay Z's proposal is probably the best we could get.
Edited by Gagis, 12 June 2020 - 05:08 PM.